index.js 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276
  1. var j = Object.defineProperty;
  2. var N = (e, t, r) => t in e ? j(e, t, { enumerable: !0, configurable: !0, writable: !0, value: r }) : e[t] = r;
  3. var l = (e, t, r) => N(e, typeof t != "symbol" ? t + "" : t, r);
  4. import { Inject as y, ILocalStorageService as $, Disposable as Y, UserManagerService as X, RxDisposable as K, Injector as G, Plugin as V, merge as w, UniverInstanceType as U, IConfigService as H } from "@univerjs/core";
  5. import { Layer as z, IRenderManagerService as B } from "@univerjs/engine-render";
  6. import { Subject as T } from "rxjs";
  7. const h = "UNIVER_WATERMARK_STORAGE_KEY", F = 10, ue = ["image/png", "image/jpeg", "image/jpg", "image/bmp"], q = {
  8. content: "",
  9. fontSize: 16,
  10. color: "rgb(0,0,0)",
  11. bold: !1,
  12. italic: !1,
  13. direction: "ltr",
  14. x: 60,
  15. y: 36,
  16. repeat: !0,
  17. spacingX: 200,
  18. spacingY: 100,
  19. rotate: 0,
  20. opacity: 0.15
  21. }, J = {
  22. url: "",
  23. width: 100,
  24. height: 100,
  25. maintainAspectRatio: !0,
  26. originRatio: 1,
  27. x: 60,
  28. y: 36,
  29. repeat: !0,
  30. spacingX: 200,
  31. spacingY: 100,
  32. rotate: 0,
  33. opacity: 0.15
  34. }, Q = {
  35. name: !0,
  36. email: !1,
  37. phone: !1,
  38. uid: !1,
  39. fontSize: 16,
  40. color: "rgb(0,0,0)",
  41. bold: !1,
  42. italic: !1,
  43. direction: "ltr",
  44. x: 60,
  45. y: 60,
  46. repeat: !0,
  47. spacingX: 200,
  48. spacingY: 100,
  49. rotate: -30,
  50. opacity: 0.15
  51. };
  52. var f = /* @__PURE__ */ ((e) => (e.UserInfo = "userInfo", e.Text = "text", e.Image = "image", e))(f || {});
  53. const O = "watermark.config", D = {};
  54. var Z = Object.defineProperty, x = Object.getOwnPropertyDescriptor, ee = (e, t, r, i) => {
  55. for (var a = i > 1 ? void 0 : i ? x(t, r) : t, n = e.length - 1, s; n >= 0; n--)
  56. (s = e[n]) && (a = (i ? s(t, r, a) : s(a)) || a);
  57. return i && a && Z(t, r, a), a;
  58. }, te = (e, t) => (r, i) => t(r, i, e);
  59. let R = class extends Y {
  60. constructor(t) {
  61. super();
  62. l(this, "_updateConfig$", new T());
  63. l(this, "updateConfig$", this._updateConfig$.asObservable());
  64. l(this, "_refresh$", new T());
  65. l(this, "refresh$", this._refresh$.asObservable());
  66. this._localStorageService = t;
  67. }
  68. async getWatermarkConfig() {
  69. return await this._localStorageService.getItem(h);
  70. }
  71. updateWatermarkConfig(t) {
  72. this._localStorageService.setItem(h, t), this._updateConfig$.next(t);
  73. }
  74. deleteWatermarkConfig() {
  75. this._localStorageService.removeItem(h), this._updateConfig$.next(null);
  76. }
  77. refresh() {
  78. this._refresh$.next(Math.random());
  79. }
  80. dispose() {
  81. this._refresh$.complete(), this._updateConfig$.complete();
  82. }
  83. };
  84. R = ee([
  85. te(0, y($))
  86. ], R);
  87. function re(e, t, r, i) {
  88. const a = t.type, n = t.config;
  89. a === f.UserInfo && n.userInfo ? ae(e, n.userInfo, i) : a === f.Image && n.image ? ne(e, n.image, r) : a === f.Text && n.text && ie(e, n.text);
  90. }
  91. function ae(e, t, r) {
  92. const { x: i, y: a, repeat: n, spacingX: s, spacingY: S, rotate: v, opacity: p, name: m, fontSize: I, color: C, bold: W, italic: u, direction: o } = t;
  93. if (!r)
  94. return;
  95. let c = "";
  96. if (m && (c += `${r.name} `), !c)
  97. return;
  98. e.save(), e.globalAlpha = p, e.direction = o;
  99. let d = "";
  100. if (u && (d += "italic "), W && (d += "bold "), d += `${I}px Arial`, e.font = d, e.fillStyle = C, n) {
  101. const g = e.canvas.width, _ = e.canvas.height;
  102. for (let b = a; b < _; b += I + S)
  103. for (let P = i; P < g; P += e.measureText(c).width + s)
  104. e.save(), e.translate(P, b), e.rotate(Math.PI / 180 * v), e.fillText(c, 0, 0), e.restore();
  105. } else
  106. e.save(), e.translate(i, a), e.rotate(Math.PI / 180 * v), e.fillText(c, 0, 0), e.restore();
  107. e.restore();
  108. }
  109. function ie(e, t) {
  110. const { x: r, y: i, repeat: a, spacingX: n, spacingY: s, rotate: S, opacity: v, content: p, fontSize: m, color: I, bold: C, italic: W, direction: u } = t;
  111. e.save(), e.globalAlpha = v, e.direction = u;
  112. let o = "";
  113. if (W && (o += "italic "), C && (o += "bold "), o += `${m}px Arial`, e.font = o, e.fillStyle = I, p)
  114. if (a) {
  115. const c = e.canvas.width, d = e.canvas.height;
  116. for (let g = i; g < d; g += m + s)
  117. for (let _ = r; _ < c; _ += e.measureText(p).width + n)
  118. e.save(), e.translate(_, g), e.rotate(Math.PI / 180 * S), e.fillText(p, 0, 0), e.restore();
  119. } else
  120. e.save(), e.translate(r, i), e.rotate(Math.PI / 180 * S), e.fillText(p, 0, 0), e.restore();
  121. e.restore();
  122. }
  123. function ne(e, t, r) {
  124. const { x: i, y: a, repeat: n, spacingX: s, spacingY: S, rotate: v, opacity: p, width: m, height: I, maintainAspectRatio: C, originRatio: W } = t;
  125. if (!(r != null && r.complete))
  126. return;
  127. e.save(), e.globalAlpha = p;
  128. const u = m, o = C ? m / W : I;
  129. if (n) {
  130. const c = e.canvas.width, d = e.canvas.height;
  131. for (let g = a; g < d; g += o + S)
  132. for (let _ = i; _ < c; _ += u + s)
  133. e.save(), e.translate(_, g), e.rotate(Math.PI / 180 * v), e.drawImage(r, 0, 0, u, o), e.restore();
  134. } else
  135. e.save(), e.translate(i, a), e.rotate(Math.PI / 180 * v), e.drawImage(r, 0, 0, u, o), e.restore();
  136. e.restore();
  137. }
  138. class se extends z {
  139. constructor() {
  140. super(...arguments);
  141. l(this, "_config");
  142. l(this, "_image");
  143. l(this, "_user");
  144. }
  145. render(r, i = !1) {
  146. var n;
  147. super.render(r, i);
  148. const a = r || ((n = this.scene.getEngine()) == null ? void 0 : n.getCanvas().getContext());
  149. return a && a.getId() && this._renderWatermark(a), this;
  150. }
  151. updateConfig(r, i) {
  152. var a;
  153. this._config = r, ((a = this._config) == null ? void 0 : a.type) === f.Image && this._config.config.image && (this._image = new Image(), this._image.src = this._config.config.image.url), i && (this._user = i);
  154. }
  155. _renderWatermark(r) {
  156. this._config && re(r, this._config, this._image, this._user);
  157. }
  158. }
  159. var oe = Object.defineProperty, le = Object.getOwnPropertyDescriptor, fe = (e, t, r, i) => {
  160. for (var a = i > 1 ? void 0 : i ? le(t, r) : t, n = e.length - 1, s; n >= 0; n--)
  161. (s = e[n]) && (a = (i ? s(t, r, a) : s(a)) || a);
  162. return i && a && oe(t, r, a), a;
  163. }, M = (e, t) => (r, i) => t(r, i, e);
  164. let k = class extends K {
  165. constructor(t, r, i, a) {
  166. super();
  167. l(this, "_watermarkLayer");
  168. this._context = t, this._watermarkService = r, this._localStorageService = i, this._userManagerService = a, this._watermarkLayer = new se(t.scene, [], F), this._initAddRender(), this._initWatermarkUpdate(), this._initWatermarkConfig();
  169. }
  170. _initAddRender() {
  171. const { scene: t } = this._context;
  172. t.addLayer(this._watermarkLayer);
  173. }
  174. async _initWatermarkConfig() {
  175. var r;
  176. const t = await this._localStorageService.getItem(h);
  177. t && (this._watermarkService.updateWatermarkConfig(t), (r = this._context.mainComponent) == null || r.makeDirty());
  178. }
  179. _initWatermarkUpdate() {
  180. this.disposeWithMe(
  181. this._watermarkService.updateConfig$.subscribe((t) => {
  182. var r, i;
  183. if (!t) {
  184. this._watermarkLayer.updateConfig(), (r = this._context.mainComponent) == null || r.makeDirty();
  185. return;
  186. }
  187. t.type === f.UserInfo ? this._watermarkLayer.updateConfig(t, this._userManagerService.getCurrentUser()) : this._watermarkLayer.updateConfig(t), (i = this._context.mainComponent) == null || i.makeDirty();
  188. })
  189. );
  190. }
  191. };
  192. k = fe([
  193. M(1, y(R)),
  194. M(2, y($)),
  195. M(3, y(X))
  196. ], k);
  197. var ce = Object.defineProperty, ge = Object.getOwnPropertyDescriptor, _e = (e, t, r, i) => {
  198. for (var a = i > 1 ? void 0 : i ? ge(t, r) : t, n = e.length - 1, s; n >= 0; n--)
  199. (s = e[n]) && (a = (i ? s(t, r, a) : s(a)) || a);
  200. return i && a && ce(t, r, a), a;
  201. }, A = (e, t) => (r, i) => t(r, i, e);
  202. const he = "UNIVER_WATERMARK_PLUGIN";
  203. var E;
  204. let L = (E = class extends V {
  205. constructor(e = D, t, r, i, a) {
  206. super(), this._config = e, this._injector = t, this._configService = r, this._renderManagerSrv = i, this._localStorageService = a;
  207. const { ...n } = w(
  208. {},
  209. D,
  210. this._config
  211. );
  212. this._configService.setConfig(O, n), this._initWatermarkStorage(), this._initDependencies();
  213. }
  214. async _initWatermarkStorage() {
  215. const e = this._configService.getConfig(O);
  216. if (!e)
  217. return;
  218. const { userWatermarkSettings: t, textWatermarkSettings: r, imageWatermarkSettings: i } = e;
  219. if (t)
  220. this._localStorageService.setItem(h, {
  221. type: f.UserInfo,
  222. config: {
  223. userInfo: w({}, Q, t)
  224. }
  225. });
  226. else if (r)
  227. this._localStorageService.setItem(h, {
  228. type: f.Text,
  229. config: {
  230. text: w({}, q, r)
  231. }
  232. });
  233. else if (i)
  234. this._localStorageService.setItem(h, {
  235. type: f.Image,
  236. config: {
  237. image: w({}, J, i)
  238. }
  239. });
  240. else {
  241. const a = await this._localStorageService.getItem(h);
  242. (a == null ? void 0 : a.type) === f.UserInfo && this._localStorageService.removeItem(h);
  243. }
  244. }
  245. _initDependencies() {
  246. [[R]].forEach((e) => {
  247. this._injector.add(e);
  248. });
  249. }
  250. onRendered() {
  251. this._injector.get(R), this._initRenderDependencies();
  252. }
  253. _initRenderDependencies() {
  254. [
  255. [k]
  256. ].forEach((e) => {
  257. this._renderManagerSrv.registerRenderModule(U.UNIVER_SHEET, e), this._renderManagerSrv.registerRenderModule(U.UNIVER_DOC, e);
  258. });
  259. }
  260. }, l(E, "pluginName", he), E);
  261. L = _e([
  262. A(1, y(G)),
  263. A(2, H),
  264. A(3, B),
  265. A(4, y($))
  266. ], L);
  267. export {
  268. f as IWatermarkTypeEnum,
  269. h as UNIVER_WATERMARK_STORAGE_KEY,
  270. L as UniverWatermarkPlugin,
  271. ue as WATERMARK_IMAGE_ALLOW_IMAGE_LIST,
  272. J as WatermarkImageBaseConfig,
  273. R as WatermarkService,
  274. q as WatermarkTextBaseConfig,
  275. Q as WatermarkUserInfoBaseConfig
  276. };