@file-viewer/vue3 2.2.6 → 2.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/fit.js +498 -1
- package/dist/components/image.js +174 -1
- package/dist/components/messages.js +1430 -1
- package/dist/components/print-mask.js +213 -1
- package/dist/components/printMask.js +66 -1
- package/dist/index.mjs +5728 -1
- package/package.json +2 -2
|
@@ -1 +1,213 @@
|
|
|
1
|
-
(function(p,q){const aq=f,v=p();while(!![]){try{const w=-parseInt(aq(0x1b5))/0x1+-parseInt(aq(0x1bb))/0x2*(parseInt(aq(0x1a0))/0x3)+-parseInt(aq(0x1d3))/0x4*(-parseInt(aq(0x1cd))/0x5)+parseInt(aq(0x1b3))/0x6+-parseInt(aq(0x1cf))/0x7*(parseInt(aq(0x1b8))/0x8)+-parseInt(aq(0x1a4))/0x9*(-parseInt(aq(0x1ac))/0xa)+-parseInt(aq(0x199))/0xb;if(w===q)break;else v['push'](v['shift']());}catch(x){v['push'](v['shift']());}}}(b,0x7de24));function f(a,c){a=a-0x190;const d=b();let e=d[a];return e;}import{a as g,i as h,t as j}from'./messages.js';function b(){const aQ=['3863092FOFDiR','map','FileReader','style','max','is-active','fv-print-mask-designer-style','bottom','filter','button','750607SBvmpS','result','head','relative','releasePointerCapture','querySelector','textContent','748785XpAKFd','addEventListener','clientY','fv-print-mask-block-remove','4455NPAOIq','some','element','aria-label','pageIndex','closest','toolbar.printMaskConfirm','ownerDocument','17570JucsyS','width','img','previousPosition','pointerId','left','opacity','443112cIKbmi','right','638053kqLsud','rotate','stopPropagation','206040qkhVzT','min','canvas','2MjioNT','type','position','pointerup','data-viewer-print-stamp-input','remove','getComputedStyle','length','start','height','click','forEach','transform','toolbar.printMaskHint','toolbar.printMaskClear','from','setAttribute','mode','5ZuHgpe','className','119KfYRQF','getBoundingClientRect','call','abs'];b=function(){return aQ;};return b();}import{a as k,o as m}from'./printMask.js';var a='\x0a.fv-print-mask-layer{position:absolute;inset:0;z-index:2147483000;pointer-events:none;}\x0a.fv-print-mask-canvas{position:absolute;inset:0;z-index:2147483000;pointer-events:none;cursor:default;}\x0a.fv-print-mask-canvas.is-armed{pointer-events:auto;cursor:crosshair;touch-action:none;}\x0a.fv-print-mask-block{position:absolute;background:#000;box-sizing:border-box;pointer-events:auto;}\x0a.fv-print-mask-block-remove{position:absolute;right:-8px;top:-8px;width:18px;height:18px;border:0;border-radius:999px;background:#111;color:#fff;font:700\x2012px/18px\x20system-ui,sans-serif;cursor:pointer;padding:0;}\x0a.fv-print-stamp{position:absolute;box-sizing:border-box;border:1px\x20dashed\x20rgba(22,119,76,.7);border-radius:4px;pointer-events:auto;touch-action:none;cursor:move;transform-origin:center\x20center;}\x0a.fv-print-stamp\x20img{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none;user-select:none;}\x0a.fv-print-stamp-resize{position:absolute;right:-7px;bottom:-7px;width:15px;height:15px;border:2px\x20solid\x20#fff;border-radius:4px;background:#16774c;box-shadow:0\x201px\x205px\x20rgba(15,23,42,.22);cursor:nwse-resize;touch-action:none;}\x0a.fv-print-stamp-input{display:none!important;}\x0a.fv-print-mask-toolbar{position:absolute;left:50%;bottom:16px;transform:translateX(-50%);z-index:2147483001;display:inline-flex;align-items:center;gap:6px;padding:6px\x208px;border:1px\x20solid\x20rgba(20,35,53,.12);border-radius:999px;background:rgba(255,255,255,.94);box-shadow:0\x2012px\x2028px\x20rgba(15,23,42,.16);pointer-events:auto;max-width:calc(100%\x20-\x2024px);flex-wrap:wrap;justify-content:center;}\x0a.fv-print-mask-toolbar\x20span{font:600\x2012px/1.2\x20system-ui,sans-serif;color:#40546a;white-space:nowrap;}\x0a.fv-print-mask-toolbar\x20button{min-width:42px;height:30px;padding:0\x2010px;border:0;border-radius:999px;background:transparent;color:#40546a;font:800\x2012px/1\x20system-ui,sans-serif;cursor:pointer;}\x0a.fv-print-mask-toolbar\x20button:hover,.fv-print-mask-toolbar\x20button.is-active{background:rgba(33,163,102,.1);color:#16774c;}\x0a.fv-print-mask-toolbar\x20button.primary{background:#16774c;color:#fff;}\x0a.fv-print-mask-toolbar\x20button.primary:hover{background:#0f5f3c;}\x0a',o=p=>{const ar=f;let q=p[ar(0x1ab)],v=p['getRootNode'](),w=v===q?q[ar(0x19b)]:v;if(w[ar(0x19e)]('#fv-print-mask-designer-style'))return;let x=q['createElement']('style');x['id']=ar(0x195),x['textContent']=a,w['appendChild'](x);},s=(p,q,v,w)=>{if(!v['width']||!v['height'])return null;let x=Math['min'](p['x'],q['x']),y=Math['min'](p['y'],q['y']),z=Math['abs'](q['x']-p['x']),A=Math['abs'](q['y']-p['y']);return z<0x8||A<0x8?null:k({'left':x/v['width']*0x64,'top':y/v['height']*0x64,'width':z/v['width']*0x64,'height':A/v['height']*0x64,'pageIndex':w});},c=(p,q)=>{const as=f;let v=p['getBoundingClientRect']();return Math[as(0x193)](0x0,Math[as(0x1b9)](v[as(0x1b4)],q['right'])-Math['max'](v[as(0x1b1)],q['left']))*Math['max'](0x0,Math['min'](v['bottom'],q[as(0x196)])-Math['max'](v['top'],q['top']));},l=0xa*0x400*0x400,u=(p,q)=>new Promise((v,w)=>{const at=f;if(!/^image\/(?:png|jpe?g|webp|gif|svg\+xml)$/i['test'](p['type'])||p['size']>l){w(Error('Unsupported\x20print\x20stamp\x20image'));return;}let x=new((q==null?void 0x0:q[(at(0x191))])||globalThis['FileReader'])();x[at(0x1a1)]('load',()=>{const au=at;if(typeof x[au(0x19a)]=='string'&&x['result']['startsWith']('data:image/')){v(x[au(0x19a)]);return;}w(Error('Invalid\x20print\x20stamp\x20image'));}),x['addEventListener']('error',()=>w(x['error']||Error('Failed\x20to\x20read\x20print\x20stamp\x20image'))),x['readAsDataURL'](p);}),d=q=>{const av=f;let w=q['root'],x=w['ownerDocument'],z=j(q['i18n']),A=q['color']||'#000000',B=[...q['initialRegions']||[]]['map'](I=>k(I))[av(0x197)](I=>!!I),C=[...q['initialStamps']||[]]['map'](I=>m(I))['filter'](I=>!!I),D=Array[av(0x1ca)](new Set(q['pages']||[]))[av(0x197)](I=>I===w||w['contains'](I)),E=D['length']>0x0,F=E?D:[w];o(w);let G=I=>{const aw=av;var J,K,L;let M=I[aw(0x192)]['position'];return(((L=(K=(J=x['defaultView'])==null?void 0x0:J[aw(0x1c1)])==null?void 0x0:K['call'](J,I))==null?void 0x0:L['position'])||M||'static')==='static'&&(I['style']['position']=aw(0x19c)),M;},H=G(w);return new Promise(J=>{const ax=av;let K=!0x1,Q=null,R=x['createElement']('div');R['className']='fv-print-mask-layer',R['setAttribute']('data-viewer-print-mask-designer','true');let U=(ac,ad)=>{let ae=G(ac),af=x['createElement']('div');return af['className']='fv-print-mask-canvas',ac['appendChild'](af),{'element':ac,'pageIndex':ad,'canvas':af,'previousPosition':ae};},V=F[ax(0x190)]((ac,ad)=>U(ac,E?ad:void 0x0)),W=E&&!V['some'](ac=>ac[ax(0x1a6)]===w)&&(B[ax(0x1a5)](ac=>ac['pageIndex']===void 0x0)||C['some'](ac=>ac['pageIndex']===void 0x0))?U(w):null,X=W?[...V,W]:V,Y=x['createElement']('div');Y['className']='fv-print-mask-toolbar',Y['setAttribute']('role','toolbar'),Y['setAttribute'](ax(0x1a7),z('toolbar.printMaskTitle'));let Z=x['createElement']('span');Z['textContent']=z(ax(0x1c8));let a0=x['createElement']('button');a0['type']=ax(0x198),a0['textContent']=z('toolbar.printMaskAdd');let a1=x['createElement']('input');a1['type']='file',a1['accept']='image/png,image/jpeg,image/webp,image/gif,image/svg+xml',a1['className']='fv-print-stamp-input',a1['setAttribute'](ax(0x1bf),'true');let a2=x['createElement']('button');a2['type']=ax(0x198),a2[ax(0x19f)]=z('toolbar.printStampUpload');let a3=x['createElement'](ax(0x198));a3['type']=ax(0x198),a3['textContent']=z('toolbar.printMaskClear');let a4=x['createElement']('button');a4['type']='button',a4['textContent']=z('toolbar.printMaskCancel');let a5=x['createElement']('button');a5[ax(0x1bc)]='button',a5['className']='primary',a5[ax(0x19f)]=z(ax(0x1aa)),Y['append'](Z,a0,a2,a3,a4,a5),R['append'](a1,Y),w['appendChild'](R);let a6=()=>{const ay=ax;V[ay(0x1c6)](ac=>ac['canvas']['classList']['remove']('is-armed')),a0['classList']['remove'](ay(0x194));},a7=ac=>{const aA=ax;K||(K=!0x0,R['remove'](),X['forEach'](ad=>{const az=f;ad[az(0x1ba)][az(0x1c0)](),ad['previousPosition']?ad['element']['style']['position']=ad[az(0x1af)]:ad['element']['style']['removeProperty'](az(0x1bd));}),H?w['style']['position']=H:w['style']['removeProperty'](aA(0x1bd)),J(ac));},a8=ac=>ac['pageIndex']===void 0x0?W||V[0x0]:V['find'](ad=>ad[ax(0x1a8)]===ac['pageIndex'])||null,a9=()=>{const aB=ax;X[aB(0x1c6)](ac=>ac['canvas']['replaceChildren']()),B[aB(0x1c6)]((ac,ad)=>{const aC=aB;let ae=a8(ac);if(!ae)return;let af=x['createElement']('div');af['className']='fv-print-mask-block',af['style']['left']=ac['left']+'%',af['style']['top']=ac['top']+'%',af[aC(0x192)]['width']=ac['width']+'%',af['style']['height']=ac['height']+'%',af['style']['background']=A;let ag=x['createElement']('button');ag['type']='button',ag['className']=aC(0x1a3),ag['title']=z(aC(0x1c9)),ag['setAttribute'](aC(0x1a7),z(aC(0x1c9))),ag[aC(0x19f)]='−',ag['addEventListener']('click',ah=>{ah['preventDefault'](),ah['stopPropagation'](),B['splice'](ad,0x1),a9();}),af['appendChild'](ag),ae['canvas']['appendChild'](af);}),C['forEach']((ac,ad)=>{const aE=aB;let ae=a8(ac);if(!ae)return;let af=x['createElement']('div');af['className']='fv-print-stamp',af['setAttribute']('data-viewer-print-stamp',String(ad));let ag=()=>{const aD=f;var am,an;af['style'][aD(0x1b1)]=ac[aD(0x1b1)]+'%',af[aD(0x192)]['top']=ac['top']+'%',af['style']['width']=ac[aD(0x1ad)]+'%',af[aD(0x192)][aD(0x1c4)]=ac['height']+'%',af['style']['opacity']=String((am=ac[aD(0x1b2)])==null?0x1:am),af['style'][aD(0x1c7)]='rotate('+((an=ac[aD(0x1b6)])==null?0x0:an)+'deg)';};ag();let ah=x['createElement'](aE(0x1ae));ah['src']=ac['src'],ah['alt']=ac['alt']||'',ah['draggable']=!0x1;let ai=x['createElement']('button');ai['type']=aE(0x198),ai['className']=aE(0x1a3),ai['title']=z('toolbar.printStampRemove'),ai['setAttribute']('aria-label',z('toolbar.printStampRemove')),ai['textContent']='−',ai['addEventListener']('pointerdown',am=>am[aE(0x1b7)]()),ai['addEventListener']('click',am=>{am['preventDefault'](),am['stopPropagation'](),C['splice'](ad,0x1),a9();});let aj=x['createElement']('span');aj['className']='fv-print-stamp-resize',aj['setAttribute']('role','button'),aj[aE(0x1cb)]('aria-label',z('toolbar.printStampResize')),aj['title']=z('toolbar.printStampResize');let ak=null;af['addEventListener']('pointerdown',am=>{const aF=aE;var an;am['button']!==0x0||am['target'][aF(0x1a9)](aF(0x198))||(am['preventDefault'](),am['stopPropagation'](),ak={'pointerId':am['pointerId'],'mode':am['target']===aj?'resize':'move','startX':am['clientX'],'startY':am[aF(0x1a2)],'left':ac['left'],'top':ac['top'],'width':ac['width'],'height':ac['height']},(an=af['setPointerCapture'])==null||an[aF(0x1d1)](af,am['pointerId']));}),af['addEventListener']('pointermove',am=>{const aG=aE;if(!ak||ak[aG(0x1b0)]!==am['pointerId'])return;am['preventDefault']();let an=ae['canvas'][aG(0x1d0)]();if(!an['width']||!an['height'])return;let ao=(am['clientX']-ak['startX'])/an['width']*0x64,ap=(am['clientY']-ak['startY'])/an['height']*0x64;ak[aG(0x1cc)]==='move'?(ac[aG(0x1b1)]=Math['max'](0x0,Math[aG(0x1b9)](0x64-ac['width'],ak[aG(0x1b1)]+ao)),ac['top']=Math[aG(0x193)](0x0,Math['min'](0x64-ac['height'],ak['top']+ap))):(ac['width']=Math['max'](0x4,Math['min'](0x64-ac['left'],ak[aG(0x1ad)]+ao)),ac['height']=Math['max'](0x4,Math['min'](0x64-ac['top'],ak['height']+ap))),ag();});let al=am=>{const aH=aE;var an;if(!(!ak||ak[aH(0x1b0)]!==am['pointerId'])){try{(an=af[aH(0x19d)])==null||an[aH(0x1d1)](af,ak['pointerId']);}catch(ao){}ak=null;}};af[aE(0x1a1)](aE(0x1be),al),af['addEventListener']('pointercancel',al),af['append'](ah,ai,aj),ae['canvas']['appendChild'](af);});},aa=(ac,ad)=>{const aI=ax;let ae=ad[aI(0x1d0)]();return{'x':Math[aI(0x193)](0x0,Math['min'](ae['width'],ac['clientX']-ae['left'])),'y':Math[aI(0x193)](0x0,Math['min'](ae['height'],ac[aI(0x1a2)]-ae['top']))};};V['forEach'](ac=>{const aJ=ax;ac[aJ(0x1ba)]['addEventListener']('pointerdown',ad=>{const aK=aJ;if(ad['button']!==0x0||!ac['canvas']['classList']['contains']('is-armed'))return;ad['preventDefault']();let ae=aa(ad,ac['canvas']),af=x['createElement']('div');af[aK(0x1ce)]='fv-print-mask-block',af['style']['background']=A,af['style']['opacity']='0.72',ac['canvas']['appendChild'](af),Q={'surface':ac,'start':ae,'preview':af,'pointerId':ad['pointerId']},ac[aK(0x1ba)]['setPointerCapture'](ad[aK(0x1b0)]);}),ac['canvas'][aJ(0x1a1)]('pointermove',ad=>{const aL=aJ;if(!Q||Q['surface']!==ac)return;let ae=aa(ad,ac['canvas']),af=Math['min'](Q['start']['x'],ae['x']),ag=Math['min'](Q['start']['y'],ae['y']);Q['preview']['style']['left']=af+'px',Q['preview']['style']['top']=ag+'px',Q['preview']['style'][aL(0x1ad)]=Math['abs'](ae['x']-Q['start']['x'])+'px',Q['preview']['style'][aL(0x1c4)]=Math[aL(0x1d2)](ae['y']-Q['start']['y'])+'px';}),ac['canvas']['addEventListener']('pointerup',ad=>{const aM=aJ;if(!Q||Q['surface']!==ac)return;let ae=aa(ad,ac['canvas']),af=s(Q[aM(0x1c3)],ae,ac['canvas']['getBoundingClientRect'](),ac['pageIndex']);Q['preview']['remove']();try{ac['canvas']['releasePointerCapture'](Q[aM(0x1b0)]);}catch(ag){}Q=null,a6(),af&&B['push'](af),a9();}),ac[aJ(0x1ba)]['addEventListener']('pointercancel',()=>{!Q||Q['surface']!==ac||(Q['preview']['remove'](),Q=null,a6(),a9());});});let ab=()=>{var ac;let ad=w['getBoundingClientRect']();return((ac=V['map'](ae=>({'surface':ae,'area':c(ae['element'],ad)}))['sort']((ae,af)=>af['area']-ae['area'])[0x0])==null?void 0x0:ac['surface'])||V[0x0];};a0['addEventListener']('click',()=>{const aN=ax;a6();let ac=ab();ac==null||ac[aN(0x1ba)]['classList']['add']('is-armed'),a0['classList']['toggle']('is-active',!!ac);}),a2[ax(0x1a1)]('click',()=>{a6(),a1['click']();}),a1['addEventListener']('change',h(function*(){const aO=ax;var ac;let ad=(ac=a1['files'])==null?void 0x0:ac[0x0];if(a1['value']='',ad)try{let ae=yield u(ad,x['defaultView']),af=ab();if(!af)return;let ag=m({'src':ae,'alt':ad['name'],'left':0x26,'top':0x26,'width':0x18,'height':0x12,'pageIndex':af[aO(0x1a8)]});ag&&(C['push'](ag),a9());}catch(ah){}})),a3['addEventListener']('click',()=>{B['splice'](0x0,B['length']),C['splice'](0x0,C['length']),a6(),a9();}),a4['addEventListener']('click',()=>a7(null)),a5['addEventListener'](ax(0x1c5),()=>{const aP=ax;if(!B['length']&&!C[aP(0x1c2)]){a7(null);return;}a7({'mask':g(g(g({},B['length']?{'regions':B['map'](ac=>g({},ac))}:{}),C[aP(0x1c2)]?{'stamps':C['map'](ac=>g({},ac))}:{}),{},{'color':A})});}),a9();});};export{d as openFileViewerPrintMaskDesigner};
|
|
1
|
+
import { a as e, i as t, t as n } from "./messages.js";
|
|
2
|
+
import { a as r, o as i } from "./printMask.js";
|
|
3
|
+
//#region ../../core/dist/features/printMaskDesigner.js
|
|
4
|
+
var a = "\n.fv-print-mask-layer{position:absolute;inset:0;z-index:2147483000;pointer-events:none;}\n.fv-print-mask-canvas{position:absolute;inset:0;z-index:2147483000;pointer-events:none;cursor:default;}\n.fv-print-mask-canvas.is-armed{pointer-events:auto;cursor:crosshair;touch-action:none;}\n.fv-print-mask-block{position:absolute;background:#000;box-sizing:border-box;pointer-events:auto;}\n.fv-print-mask-block-remove{position:absolute;right:-8px;top:-8px;width:18px;height:18px;border:0;border-radius:999px;background:#111;color:#fff;font:700 12px/18px system-ui,sans-serif;cursor:pointer;padding:0;}\n.fv-print-stamp{position:absolute;box-sizing:border-box;border:1px dashed rgba(22,119,76,.7);border-radius:4px;pointer-events:auto;touch-action:none;cursor:move;transform-origin:center center;}\n.fv-print-stamp img{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none;user-select:none;}\n.fv-print-stamp-resize{position:absolute;right:-7px;bottom:-7px;width:15px;height:15px;border:2px solid #fff;border-radius:4px;background:#16774c;box-shadow:0 1px 5px rgba(15,23,42,.22);cursor:nwse-resize;touch-action:none;}\n.fv-print-stamp-input{display:none!important;}\n.fv-print-mask-toolbar{position:absolute;left:50%;bottom:16px;transform:translateX(-50%);z-index:2147483001;display:inline-flex;align-items:center;gap:6px;padding:6px 8px;border:1px solid rgba(20,35,53,.12);border-radius:999px;background:rgba(255,255,255,.94);box-shadow:0 12px 28px rgba(15,23,42,.16);pointer-events:auto;max-width:calc(100% - 24px);flex-wrap:wrap;justify-content:center;}\n.fv-print-mask-toolbar span{font:600 12px/1.2 system-ui,sans-serif;color:#40546a;white-space:nowrap;}\n.fv-print-mask-toolbar button{min-width:42px;height:30px;padding:0 10px;border:0;border-radius:999px;background:transparent;color:#40546a;font:800 12px/1 system-ui,sans-serif;cursor:pointer;}\n.fv-print-mask-toolbar button:hover,.fv-print-mask-toolbar button.is-active{background:rgba(33,163,102,.1);color:#16774c;}\n.fv-print-mask-toolbar button.primary{background:#16774c;color:#fff;}\n.fv-print-mask-toolbar button.primary:hover{background:#0f5f3c;}\n", o = (e) => {
|
|
5
|
+
let t = e.ownerDocument, n = e.getRootNode(), r = n === t ? t.head : n;
|
|
6
|
+
if (r.querySelector("#fv-print-mask-designer-style")) return;
|
|
7
|
+
let i = t.createElement("style");
|
|
8
|
+
i.id = "fv-print-mask-designer-style", i.textContent = a, r.appendChild(i);
|
|
9
|
+
}, s = (e, t, n, i) => {
|
|
10
|
+
if (!n.width || !n.height) return null;
|
|
11
|
+
let a = Math.min(e.x, t.x), o = Math.min(e.y, t.y), s = Math.abs(t.x - e.x), c = Math.abs(t.y - e.y);
|
|
12
|
+
return s < 8 || c < 8 ? null : r({
|
|
13
|
+
left: a / n.width * 100,
|
|
14
|
+
top: o / n.height * 100,
|
|
15
|
+
width: s / n.width * 100,
|
|
16
|
+
height: c / n.height * 100,
|
|
17
|
+
pageIndex: i
|
|
18
|
+
});
|
|
19
|
+
}, c = (e, t) => {
|
|
20
|
+
let n = e.getBoundingClientRect();
|
|
21
|
+
return Math.max(0, Math.min(n.right, t.right) - Math.max(n.left, t.left)) * Math.max(0, Math.min(n.bottom, t.bottom) - Math.max(n.top, t.top));
|
|
22
|
+
}, l = 10 * 1024 * 1024, u = (e, t) => new Promise((n, r) => {
|
|
23
|
+
if (!/^image\/(?:png|jpe?g|webp|gif|svg\+xml)$/i.test(e.type) || e.size > l) {
|
|
24
|
+
r(/* @__PURE__ */ Error("Unsupported print stamp image"));
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
let i = new ((t == null ? void 0 : t.FileReader) || globalThis.FileReader)();
|
|
28
|
+
i.addEventListener("load", () => {
|
|
29
|
+
if (typeof i.result == "string" && i.result.startsWith("data:image/")) {
|
|
30
|
+
n(i.result);
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
r(/* @__PURE__ */ Error("Invalid print stamp image"));
|
|
34
|
+
}), i.addEventListener("error", () => r(i.error || /* @__PURE__ */ Error("Failed to read print stamp image"))), i.readAsDataURL(e);
|
|
35
|
+
}), d = (a) => {
|
|
36
|
+
let l = a.root, d = l.ownerDocument, f = n(a.i18n), p = a.color || "#000000", m = [...a.initialRegions || []].map((e) => r(e)).filter((e) => !!e), h = [...a.initialStamps || []].map((e) => i(e)).filter((e) => !!e), g = Array.from(new Set(a.pages || [])).filter((e) => e === l || l.contains(e)), _ = g.length > 0, v = _ ? g : [l];
|
|
37
|
+
o(l);
|
|
38
|
+
let y = (e) => {
|
|
39
|
+
var t, n, r;
|
|
40
|
+
let i = e.style.position;
|
|
41
|
+
return (((r = (n = (t = d.defaultView) == null ? void 0 : t.getComputedStyle) == null ? void 0 : n.call(t, e)) == null ? void 0 : r.position) || i || "static") === "static" && (e.style.position = "relative"), i;
|
|
42
|
+
}, b = y(l);
|
|
43
|
+
return new Promise((n) => {
|
|
44
|
+
let r = !1, a = null, o = d.createElement("div");
|
|
45
|
+
o.className = "fv-print-mask-layer", o.setAttribute("data-viewer-print-mask-designer", "true");
|
|
46
|
+
let g = (e, t) => {
|
|
47
|
+
let n = y(e), r = d.createElement("div");
|
|
48
|
+
return r.className = "fv-print-mask-canvas", e.appendChild(r), {
|
|
49
|
+
element: e,
|
|
50
|
+
pageIndex: t,
|
|
51
|
+
canvas: r,
|
|
52
|
+
previousPosition: n
|
|
53
|
+
};
|
|
54
|
+
}, x = v.map((e, t) => g(e, _ ? t : void 0)), S = _ && !x.some((e) => e.element === l) && (m.some((e) => e.pageIndex === void 0) || h.some((e) => e.pageIndex === void 0)) ? g(l) : null, C = S ? [...x, S] : x, w = d.createElement("div");
|
|
55
|
+
w.className = "fv-print-mask-toolbar", w.setAttribute("role", "toolbar"), w.setAttribute("aria-label", f("toolbar.printMaskTitle"));
|
|
56
|
+
let T = d.createElement("span");
|
|
57
|
+
T.textContent = f("toolbar.printMaskHint");
|
|
58
|
+
let E = d.createElement("button");
|
|
59
|
+
E.type = "button", E.textContent = f("toolbar.printMaskAdd");
|
|
60
|
+
let D = d.createElement("input");
|
|
61
|
+
D.type = "file", D.accept = "image/png,image/jpeg,image/webp,image/gif,image/svg+xml", D.className = "fv-print-stamp-input", D.setAttribute("data-viewer-print-stamp-input", "true");
|
|
62
|
+
let O = d.createElement("button");
|
|
63
|
+
O.type = "button", O.textContent = f("toolbar.printStampUpload");
|
|
64
|
+
let k = d.createElement("button");
|
|
65
|
+
k.type = "button", k.textContent = f("toolbar.printMaskClear");
|
|
66
|
+
let A = d.createElement("button");
|
|
67
|
+
A.type = "button", A.textContent = f("toolbar.printMaskCancel");
|
|
68
|
+
let j = d.createElement("button");
|
|
69
|
+
j.type = "button", j.className = "primary", j.textContent = f("toolbar.printMaskConfirm"), w.append(T, E, O, k, A, j), o.append(D, w), l.appendChild(o);
|
|
70
|
+
let M = () => {
|
|
71
|
+
x.forEach((e) => e.canvas.classList.remove("is-armed")), E.classList.remove("is-active");
|
|
72
|
+
}, N = (e) => {
|
|
73
|
+
r || (r = !0, o.remove(), C.forEach((e) => {
|
|
74
|
+
e.canvas.remove(), e.previousPosition ? e.element.style.position = e.previousPosition : e.element.style.removeProperty("position");
|
|
75
|
+
}), b ? l.style.position = b : l.style.removeProperty("position"), n(e));
|
|
76
|
+
}, P = (e) => e.pageIndex === void 0 ? S || x[0] : x.find((t) => t.pageIndex === e.pageIndex) || null, F = () => {
|
|
77
|
+
C.forEach((e) => e.canvas.replaceChildren()), m.forEach((e, t) => {
|
|
78
|
+
let n = P(e);
|
|
79
|
+
if (!n) return;
|
|
80
|
+
let r = d.createElement("div");
|
|
81
|
+
r.className = "fv-print-mask-block", r.style.left = `${e.left}%`, r.style.top = `${e.top}%`, r.style.width = `${e.width}%`, r.style.height = `${e.height}%`, r.style.background = p;
|
|
82
|
+
let i = d.createElement("button");
|
|
83
|
+
i.type = "button", i.className = "fv-print-mask-block-remove", i.title = f("toolbar.printMaskClear"), i.setAttribute("aria-label", f("toolbar.printMaskClear")), i.textContent = "−", i.addEventListener("click", (e) => {
|
|
84
|
+
e.preventDefault(), e.stopPropagation(), m.splice(t, 1), F();
|
|
85
|
+
}), r.appendChild(i), n.canvas.appendChild(r);
|
|
86
|
+
}), h.forEach((e, t) => {
|
|
87
|
+
let n = P(e);
|
|
88
|
+
if (!n) return;
|
|
89
|
+
let r = d.createElement("div");
|
|
90
|
+
r.className = "fv-print-stamp", r.setAttribute("data-viewer-print-stamp", String(t));
|
|
91
|
+
let i = () => {
|
|
92
|
+
var t, n;
|
|
93
|
+
r.style.left = `${e.left}%`, r.style.top = `${e.top}%`, r.style.width = `${e.width}%`, r.style.height = `${e.height}%`, r.style.opacity = String((t = e.opacity) == null ? 1 : t), r.style.transform = `rotate(${(n = e.rotate) == null ? 0 : n}deg)`;
|
|
94
|
+
};
|
|
95
|
+
i();
|
|
96
|
+
let a = d.createElement("img");
|
|
97
|
+
a.src = e.src, a.alt = e.alt || "", a.draggable = !1;
|
|
98
|
+
let o = d.createElement("button");
|
|
99
|
+
o.type = "button", o.className = "fv-print-mask-block-remove", o.title = f("toolbar.printStampRemove"), o.setAttribute("aria-label", f("toolbar.printStampRemove")), o.textContent = "−", o.addEventListener("pointerdown", (e) => e.stopPropagation()), o.addEventListener("click", (e) => {
|
|
100
|
+
e.preventDefault(), e.stopPropagation(), h.splice(t, 1), F();
|
|
101
|
+
});
|
|
102
|
+
let s = d.createElement("span");
|
|
103
|
+
s.className = "fv-print-stamp-resize", s.setAttribute("role", "button"), s.setAttribute("aria-label", f("toolbar.printStampResize")), s.title = f("toolbar.printStampResize");
|
|
104
|
+
let c = null;
|
|
105
|
+
r.addEventListener("pointerdown", (t) => {
|
|
106
|
+
var n;
|
|
107
|
+
t.button !== 0 || t.target.closest("button") || (t.preventDefault(), t.stopPropagation(), c = {
|
|
108
|
+
pointerId: t.pointerId,
|
|
109
|
+
mode: t.target === s ? "resize" : "move",
|
|
110
|
+
startX: t.clientX,
|
|
111
|
+
startY: t.clientY,
|
|
112
|
+
left: e.left,
|
|
113
|
+
top: e.top,
|
|
114
|
+
width: e.width,
|
|
115
|
+
height: e.height
|
|
116
|
+
}, (n = r.setPointerCapture) == null || n.call(r, t.pointerId));
|
|
117
|
+
}), r.addEventListener("pointermove", (t) => {
|
|
118
|
+
if (!c || c.pointerId !== t.pointerId) return;
|
|
119
|
+
t.preventDefault();
|
|
120
|
+
let r = n.canvas.getBoundingClientRect();
|
|
121
|
+
if (!r.width || !r.height) return;
|
|
122
|
+
let a = (t.clientX - c.startX) / r.width * 100, o = (t.clientY - c.startY) / r.height * 100;
|
|
123
|
+
c.mode === "move" ? (e.left = Math.max(0, Math.min(100 - e.width, c.left + a)), e.top = Math.max(0, Math.min(100 - e.height, c.top + o))) : (e.width = Math.max(4, Math.min(100 - e.left, c.width + a)), e.height = Math.max(4, Math.min(100 - e.top, c.height + o))), i();
|
|
124
|
+
});
|
|
125
|
+
let l = (e) => {
|
|
126
|
+
var t;
|
|
127
|
+
if (!(!c || c.pointerId !== e.pointerId)) {
|
|
128
|
+
try {
|
|
129
|
+
(t = r.releasePointerCapture) == null || t.call(r, c.pointerId);
|
|
130
|
+
} catch (e) {}
|
|
131
|
+
c = null;
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
r.addEventListener("pointerup", l), r.addEventListener("pointercancel", l), r.append(a, o, s), n.canvas.appendChild(r);
|
|
135
|
+
});
|
|
136
|
+
}, I = (e, t) => {
|
|
137
|
+
let n = t.getBoundingClientRect();
|
|
138
|
+
return {
|
|
139
|
+
x: Math.max(0, Math.min(n.width, e.clientX - n.left)),
|
|
140
|
+
y: Math.max(0, Math.min(n.height, e.clientY - n.top))
|
|
141
|
+
};
|
|
142
|
+
};
|
|
143
|
+
x.forEach((e) => {
|
|
144
|
+
e.canvas.addEventListener("pointerdown", (t) => {
|
|
145
|
+
if (t.button !== 0 || !e.canvas.classList.contains("is-armed")) return;
|
|
146
|
+
t.preventDefault();
|
|
147
|
+
let n = I(t, e.canvas), r = d.createElement("div");
|
|
148
|
+
r.className = "fv-print-mask-block", r.style.background = p, r.style.opacity = "0.72", e.canvas.appendChild(r), a = {
|
|
149
|
+
surface: e,
|
|
150
|
+
start: n,
|
|
151
|
+
preview: r,
|
|
152
|
+
pointerId: t.pointerId
|
|
153
|
+
}, e.canvas.setPointerCapture(t.pointerId);
|
|
154
|
+
}), e.canvas.addEventListener("pointermove", (t) => {
|
|
155
|
+
if (!a || a.surface !== e) return;
|
|
156
|
+
let n = I(t, e.canvas), r = Math.min(a.start.x, n.x), i = Math.min(a.start.y, n.y);
|
|
157
|
+
a.preview.style.left = `${r}px`, a.preview.style.top = `${i}px`, a.preview.style.width = `${Math.abs(n.x - a.start.x)}px`, a.preview.style.height = `${Math.abs(n.y - a.start.y)}px`;
|
|
158
|
+
}), e.canvas.addEventListener("pointerup", (t) => {
|
|
159
|
+
if (!a || a.surface !== e) return;
|
|
160
|
+
let n = I(t, e.canvas), r = s(a.start, n, e.canvas.getBoundingClientRect(), e.pageIndex);
|
|
161
|
+
a.preview.remove();
|
|
162
|
+
try {
|
|
163
|
+
e.canvas.releasePointerCapture(a.pointerId);
|
|
164
|
+
} catch (e) {}
|
|
165
|
+
a = null, M(), r && m.push(r), F();
|
|
166
|
+
}), e.canvas.addEventListener("pointercancel", () => {
|
|
167
|
+
!a || a.surface !== e || (a.preview.remove(), a = null, M(), F());
|
|
168
|
+
});
|
|
169
|
+
});
|
|
170
|
+
let L = () => {
|
|
171
|
+
var e;
|
|
172
|
+
let t = l.getBoundingClientRect();
|
|
173
|
+
return ((e = x.map((e) => ({
|
|
174
|
+
surface: e,
|
|
175
|
+
area: c(e.element, t)
|
|
176
|
+
})).sort((e, t) => t.area - e.area)[0]) == null ? void 0 : e.surface) || x[0];
|
|
177
|
+
};
|
|
178
|
+
E.addEventListener("click", () => {
|
|
179
|
+
M();
|
|
180
|
+
let e = L();
|
|
181
|
+
e == null || e.canvas.classList.add("is-armed"), E.classList.toggle("is-active", !!e);
|
|
182
|
+
}), O.addEventListener("click", () => {
|
|
183
|
+
M(), D.click();
|
|
184
|
+
}), D.addEventListener("change", t(function* () {
|
|
185
|
+
var e;
|
|
186
|
+
let t = (e = D.files) == null ? void 0 : e[0];
|
|
187
|
+
if (D.value = "", t) try {
|
|
188
|
+
let e = yield u(t, d.defaultView), n = L();
|
|
189
|
+
if (!n) return;
|
|
190
|
+
let r = i({
|
|
191
|
+
src: e,
|
|
192
|
+
alt: t.name,
|
|
193
|
+
left: 38,
|
|
194
|
+
top: 38,
|
|
195
|
+
width: 24,
|
|
196
|
+
height: 18,
|
|
197
|
+
pageIndex: n.pageIndex
|
|
198
|
+
});
|
|
199
|
+
r && (h.push(r), F());
|
|
200
|
+
} catch (e) {}
|
|
201
|
+
})), k.addEventListener("click", () => {
|
|
202
|
+
m.splice(0, m.length), h.splice(0, h.length), M(), F();
|
|
203
|
+
}), A.addEventListener("click", () => N(null)), j.addEventListener("click", () => {
|
|
204
|
+
if (!m.length && !h.length) {
|
|
205
|
+
N(null);
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
N({ mask: e(e(e({}, m.length ? { regions: m.map((t) => e({}, t)) } : {}), h.length ? { stamps: h.map((t) => e({}, t)) } : {}), {}, { color: p }) });
|
|
209
|
+
}), F();
|
|
210
|
+
});
|
|
211
|
+
};
|
|
212
|
+
//#endregion
|
|
213
|
+
export { d as openFileViewerPrintMaskDesigner };
|
|
@@ -1 +1,66 @@
|
|
|
1
|
-
|
|
1
|
+
import { a as e } from "./messages.js";
|
|
2
|
+
//#region ../../core/dist/features/printMask.js
|
|
3
|
+
var t = (e) => Math.max(0, Math.min(100, e)), n = (n) => {
|
|
4
|
+
if (!n) return null;
|
|
5
|
+
let r = n.pageIndex;
|
|
6
|
+
if (r !== void 0 && (!Number.isInteger(r) || r < 0)) return null;
|
|
7
|
+
let i = t(Number(n.left) || 0), a = t(Number(n.top) || 0), o = t(Number(n.width) || 0), s = t(Number(n.height) || 0);
|
|
8
|
+
return o <= 0 || s <= 0 ? null : e({
|
|
9
|
+
left: i,
|
|
10
|
+
top: a,
|
|
11
|
+
width: Math.min(o, 100 - i),
|
|
12
|
+
height: Math.min(s, 100 - a)
|
|
13
|
+
}, r === void 0 ? {} : { pageIndex: r });
|
|
14
|
+
}, r = (e) => {
|
|
15
|
+
if (typeof e != "string") return "";
|
|
16
|
+
let t = e.trim();
|
|
17
|
+
return /^data:image\/(?:png|jpe?g|webp|gif|svg\+xml);/i.test(t) || /^(?:blob:|https?:\/\/|\/|\.\.?\/)/i.test(t) ? t : "";
|
|
18
|
+
}, i = (e) => {
|
|
19
|
+
let t = Number(e);
|
|
20
|
+
return Number.isFinite(t) ? Math.max(0, Math.min(1, t)) : 1;
|
|
21
|
+
}, a = (e) => {
|
|
22
|
+
let t = Number(e);
|
|
23
|
+
return Number.isFinite(t) ? (t % 360 + 360) % 360 : 0;
|
|
24
|
+
}, o = (t) => {
|
|
25
|
+
let o = n(t), s = r(t == null ? void 0 : t.src);
|
|
26
|
+
return !o || !s ? null : e(e({}, o), {}, {
|
|
27
|
+
src: s,
|
|
28
|
+
opacity: i(t == null ? void 0 : t.opacity),
|
|
29
|
+
rotate: a(t == null ? void 0 : t.rotate)
|
|
30
|
+
}, typeof (t == null ? void 0 : t.alt) == "string" && t.alt.trim() ? { alt: t.alt.trim() } : {});
|
|
31
|
+
}, s = (t) => {
|
|
32
|
+
if (!t) return null;
|
|
33
|
+
let r = (t.regions || []).map((e) => n(e)).filter((e) => !!e), i = (t.stamps || []).map((e) => o(e)).filter((e) => !!e);
|
|
34
|
+
return !r.length && !i.length ? null : e(e(e({}, r.length ? { regions: r } : {}), i.length ? { stamps: i } : {}), {}, { color: t.color || "#000000" });
|
|
35
|
+
}, c = (e) => e.replace(/&/g, "&").replace(/"/g, """).replace(/</g, "<").replace(/>/g, ">"), l = (e, t = !1) => {
|
|
36
|
+
let n = s(e);
|
|
37
|
+
if (!n) return "";
|
|
38
|
+
let r = n.color || "#000000", i = (n.regions || []).map((e) => `<div class="viewer-export-print-mask-block" style="left:${e.left}%;top:${e.top}%;width:${e.width}%;height:${e.height}%;background:${r};"></div>`).join(""), a = (n.stamps || []).map((e) => {
|
|
39
|
+
var t, n;
|
|
40
|
+
return `<img class="viewer-export-print-stamp" src="${c(e.src)}" alt="${c(e.alt || "")}" draggable="false" style="left:${e.left}%;top:${e.top}%;width:${e.width}%;height:${e.height}%;opacity:${(t = e.opacity) == null ? 1 : t};transform:rotate(${(n = e.rotate) == null ? 0 : n}deg);" />`;
|
|
41
|
+
}).join("");
|
|
42
|
+
return `<div class="${t ? "viewer-export-print-mask viewer-export-print-mask--page" : "viewer-export-print-mask"}" aria-hidden="true">${i}${a}</div>`;
|
|
43
|
+
}, u = "\n .viewer-export-print-mask{position:absolute;inset:0;z-index:15;pointer-events:none;print-color-adjust:exact;-webkit-print-color-adjust:exact;}\n .viewer-export-print-mask--page{z-index:2147483647;}\n .viewer-export-print-mask-block{position:absolute;box-sizing:border-box;print-color-adjust:exact;-webkit-print-color-adjust:exact;}\n .viewer-export-print-stamp{position:absolute;display:block;object-fit:contain;transform-origin:center center;print-color-adjust:exact;-webkit-print-color-adjust:exact;}\n [data-viewer-print-page-index]{position:relative!important;isolation:isolate;}\n", d = (e, t) => {
|
|
44
|
+
var n, r;
|
|
45
|
+
let i = s(t);
|
|
46
|
+
if (!i) return e;
|
|
47
|
+
let a = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map();
|
|
48
|
+
return (n = i.regions) == null || n.forEach((e) => {
|
|
49
|
+
if (e.pageIndex === void 0) return;
|
|
50
|
+
let t = a.get(e.pageIndex) || [];
|
|
51
|
+
t.push(e), a.set(e.pageIndex, t);
|
|
52
|
+
}), (r = i.stamps) == null || r.forEach((e) => {
|
|
53
|
+
if (e.pageIndex === void 0) return;
|
|
54
|
+
let t = o.get(e.pageIndex) || [];
|
|
55
|
+
t.push(e), o.set(e.pageIndex, t);
|
|
56
|
+
}), !a.size && !o.size ? e : e.replace(/(<[A-Za-z][^>]*\sdata-viewer-print-page-index=(['"])(\d+)\2[^>]*>)/g, (e, t, n, r) => {
|
|
57
|
+
let s = a.get(Number(r)), c = o.get(Number(r));
|
|
58
|
+
return !(s != null && s.length) && !(c != null && c.length) ? e : `${t}${l({
|
|
59
|
+
regions: s || [],
|
|
60
|
+
stamps: c || [],
|
|
61
|
+
color: i.color
|
|
62
|
+
}, !0)}`;
|
|
63
|
+
});
|
|
64
|
+
};
|
|
65
|
+
//#endregion
|
|
66
|
+
export { n as a, s as i, d as n, o, l as r, u as t };
|