var j = Object.defineProperty; var N = (e, t, r) => t in e ? j(e, t, { enumerable: !0, configurable: !0, writable: !0, value: r }) : e[t] = r; var l = (e, t, r) => N(e, typeof t != "symbol" ? t + "" : t, r); 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"; import { Layer as z, IRenderManagerService as B } from "@univerjs/engine-render"; import { Subject as T } from "rxjs"; const h = "UNIVER_WATERMARK_STORAGE_KEY", F = 10, ue = ["image/png", "image/jpeg", "image/jpg", "image/bmp"], q = { content: "", fontSize: 16, color: "rgb(0,0,0)", bold: !1, italic: !1, direction: "ltr", x: 60, y: 36, repeat: !0, spacingX: 200, spacingY: 100, rotate: 0, opacity: 0.15 }, J = { url: "", width: 100, height: 100, maintainAspectRatio: !0, originRatio: 1, x: 60, y: 36, repeat: !0, spacingX: 200, spacingY: 100, rotate: 0, opacity: 0.15 }, Q = { name: !0, email: !1, phone: !1, uid: !1, fontSize: 16, color: "rgb(0,0,0)", bold: !1, italic: !1, direction: "ltr", x: 60, y: 60, repeat: !0, spacingX: 200, spacingY: 100, rotate: -30, opacity: 0.15 }; var f = /* @__PURE__ */ ((e) => (e.UserInfo = "userInfo", e.Text = "text", e.Image = "image", e))(f || {}); const O = "watermark.config", D = {}; var Z = Object.defineProperty, x = Object.getOwnPropertyDescriptor, ee = (e, t, r, i) => { for (var a = i > 1 ? void 0 : i ? x(t, r) : t, n = e.length - 1, s; n >= 0; n--) (s = e[n]) && (a = (i ? s(t, r, a) : s(a)) || a); return i && a && Z(t, r, a), a; }, te = (e, t) => (r, i) => t(r, i, e); let R = class extends Y { constructor(t) { super(); l(this, "_updateConfig$", new T()); l(this, "updateConfig$", this._updateConfig$.asObservable()); l(this, "_refresh$", new T()); l(this, "refresh$", this._refresh$.asObservable()); this._localStorageService = t; } async getWatermarkConfig() { return await this._localStorageService.getItem(h); } updateWatermarkConfig(t) { this._localStorageService.setItem(h, t), this._updateConfig$.next(t); } deleteWatermarkConfig() { this._localStorageService.removeItem(h), this._updateConfig$.next(null); } refresh() { this._refresh$.next(Math.random()); } dispose() { this._refresh$.complete(), this._updateConfig$.complete(); } }; R = ee([ te(0, y($)) ], R); function re(e, t, r, i) { const a = t.type, n = t.config; 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); } function ae(e, t, r) { 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; if (!r) return; let c = ""; if (m && (c += `${r.name} `), !c) return; e.save(), e.globalAlpha = p, e.direction = o; let d = ""; if (u && (d += "italic "), W && (d += "bold "), d += `${I}px Arial`, e.font = d, e.fillStyle = C, n) { const g = e.canvas.width, _ = e.canvas.height; for (let b = a; b < _; b += I + S) for (let P = i; P < g; P += e.measureText(c).width + s) e.save(), e.translate(P, b), e.rotate(Math.PI / 180 * v), e.fillText(c, 0, 0), e.restore(); } else e.save(), e.translate(i, a), e.rotate(Math.PI / 180 * v), e.fillText(c, 0, 0), e.restore(); e.restore(); } function ie(e, t) { 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; e.save(), e.globalAlpha = v, e.direction = u; let o = ""; if (W && (o += "italic "), C && (o += "bold "), o += `${m}px Arial`, e.font = o, e.fillStyle = I, p) if (a) { const c = e.canvas.width, d = e.canvas.height; for (let g = i; g < d; g += m + s) for (let _ = r; _ < c; _ += e.measureText(p).width + n) e.save(), e.translate(_, g), e.rotate(Math.PI / 180 * S), e.fillText(p, 0, 0), e.restore(); } else e.save(), e.translate(r, i), e.rotate(Math.PI / 180 * S), e.fillText(p, 0, 0), e.restore(); e.restore(); } function ne(e, t, r) { const { x: i, y: a, repeat: n, spacingX: s, spacingY: S, rotate: v, opacity: p, width: m, height: I, maintainAspectRatio: C, originRatio: W } = t; if (!(r != null && r.complete)) return; e.save(), e.globalAlpha = p; const u = m, o = C ? m / W : I; if (n) { const c = e.canvas.width, d = e.canvas.height; for (let g = a; g < d; g += o + S) for (let _ = i; _ < c; _ += u + s) e.save(), e.translate(_, g), e.rotate(Math.PI / 180 * v), e.drawImage(r, 0, 0, u, o), e.restore(); } else e.save(), e.translate(i, a), e.rotate(Math.PI / 180 * v), e.drawImage(r, 0, 0, u, o), e.restore(); e.restore(); } class se extends z { constructor() { super(...arguments); l(this, "_config"); l(this, "_image"); l(this, "_user"); } render(r, i = !1) { var n; super.render(r, i); const a = r || ((n = this.scene.getEngine()) == null ? void 0 : n.getCanvas().getContext()); return a && a.getId() && this._renderWatermark(a), this; } updateConfig(r, i) { var a; 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); } _renderWatermark(r) { this._config && re(r, this._config, this._image, this._user); } } var oe = Object.defineProperty, le = Object.getOwnPropertyDescriptor, fe = (e, t, r, i) => { for (var a = i > 1 ? void 0 : i ? le(t, r) : t, n = e.length - 1, s; n >= 0; n--) (s = e[n]) && (a = (i ? s(t, r, a) : s(a)) || a); return i && a && oe(t, r, a), a; }, M = (e, t) => (r, i) => t(r, i, e); let k = class extends K { constructor(t, r, i, a) { super(); l(this, "_watermarkLayer"); 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(); } _initAddRender() { const { scene: t } = this._context; t.addLayer(this._watermarkLayer); } async _initWatermarkConfig() { var r; const t = await this._localStorageService.getItem(h); t && (this._watermarkService.updateWatermarkConfig(t), (r = this._context.mainComponent) == null || r.makeDirty()); } _initWatermarkUpdate() { this.disposeWithMe( this._watermarkService.updateConfig$.subscribe((t) => { var r, i; if (!t) { this._watermarkLayer.updateConfig(), (r = this._context.mainComponent) == null || r.makeDirty(); return; } t.type === f.UserInfo ? this._watermarkLayer.updateConfig(t, this._userManagerService.getCurrentUser()) : this._watermarkLayer.updateConfig(t), (i = this._context.mainComponent) == null || i.makeDirty(); }) ); } }; k = fe([ M(1, y(R)), M(2, y($)), M(3, y(X)) ], k); var ce = Object.defineProperty, ge = Object.getOwnPropertyDescriptor, _e = (e, t, r, i) => { for (var a = i > 1 ? void 0 : i ? ge(t, r) : t, n = e.length - 1, s; n >= 0; n--) (s = e[n]) && (a = (i ? s(t, r, a) : s(a)) || a); return i && a && ce(t, r, a), a; }, A = (e, t) => (r, i) => t(r, i, e); const he = "UNIVER_WATERMARK_PLUGIN"; var E; let L = (E = class extends V { constructor(e = D, t, r, i, a) { super(), this._config = e, this._injector = t, this._configService = r, this._renderManagerSrv = i, this._localStorageService = a; const { ...n } = w( {}, D, this._config ); this._configService.setConfig(O, n), this._initWatermarkStorage(), this._initDependencies(); } async _initWatermarkStorage() { const e = this._configService.getConfig(O); if (!e) return; const { userWatermarkSettings: t, textWatermarkSettings: r, imageWatermarkSettings: i } = e; if (t) this._localStorageService.setItem(h, { type: f.UserInfo, config: { userInfo: w({}, Q, t) } }); else if (r) this._localStorageService.setItem(h, { type: f.Text, config: { text: w({}, q, r) } }); else if (i) this._localStorageService.setItem(h, { type: f.Image, config: { image: w({}, J, i) } }); else { const a = await this._localStorageService.getItem(h); (a == null ? void 0 : a.type) === f.UserInfo && this._localStorageService.removeItem(h); } } _initDependencies() { [[R]].forEach((e) => { this._injector.add(e); }); } onRendered() { this._injector.get(R), this._initRenderDependencies(); } _initRenderDependencies() { [ [k] ].forEach((e) => { this._renderManagerSrv.registerRenderModule(U.UNIVER_SHEET, e), this._renderManagerSrv.registerRenderModule(U.UNIVER_DOC, e); }); } }, l(E, "pluginName", he), E); L = _e([ A(1, y(G)), A(2, H), A(3, B), A(4, y($)) ], L); export { f as IWatermarkTypeEnum, h as UNIVER_WATERMARK_STORAGE_KEY, L as UniverWatermarkPlugin, ue as WATERMARK_IMAGE_ALLOW_IMAGE_LIST, J as WatermarkImageBaseConfig, R as WatermarkService, q as WatermarkTextBaseConfig, Q as WatermarkUserInfoBaseConfig };