@nuniapp/widget 0.1.7 → 0.1.9
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/dom-BWcT-q7S.js +255 -0
- package/dist/index.d.ts +94 -8
- package/dist/index.js +791 -162
- package/dist/nuni-screenshot.global.js +41 -7
- package/dist/nuni.global.js +116 -12
- package/dist/{screenshot-DcJ_SzKF.js → tools-gIAPu66h.js} +225 -14
- package/package.json +1 -1
- package/dist/mark-B8wojiFu.js +0 -90
|
@@ -1,14 +1,48 @@
|
|
|
1
|
-
(function(){let e={bodyMaxLength:2e3,nameMaxLength:50,unclaimedCommentCap:500,maxOriginsPerProject:20,sessionTtlMs:2592e6,cliSessionTtlMs:7776e6,transferTtlMs:6048e5,bulkMax:100,cliLoginTtlMs:6e5,anchorTextMaxLength:120,quoteMaxLength:500,quoteContextLength:32,pageOpenLimit:1e3,pageResolvedLimit:200,contextEntryMax:20,contextMessageMaxLength:500,domSnippetMaxLength:4e3,screenshotMaxBytes:6e5,repliesPerComment:200,reactionsPerComment:2e3,screenshotUploadWindowMs:3e5},t=`data-nuni-mask
|
|
1
|
+
(function(){let e={bodyMaxLength:2e3,nameMaxLength:50,unclaimedCommentCap:500,maxOriginsPerProject:20,sessionTtlMs:2592e6,cliSessionTtlMs:7776e6,transferTtlMs:6048e5,bulkMax:100,pinReportMax:200,lostCountMax:99,cliLoginTtlMs:6e5,anchorTextMaxLength:120,quoteMaxLength:500,quoteContextLength:32,pageOpenLimit:1e3,pageResolvedLimit:200,yoursLimit:100,contextEntryMax:20,contextMessageMaxLength:500,domSnippetMaxLength:4e3,screenshotMaxBytes:6e5,imagesPerComment:3,imageMaxBytes:6e5,imageMaxSide:1600,repliesPerComment:200,reactionsPerComment:2e3,screenshotUploadWindowMs:3e5},t=`data-nuni-mask`;function n(e,t={},...n){let r=document.createElement(e);for(let[e,n]of Object.entries(t))n!=null&&n!==!1&&(e.startsWith(`on`)&&typeof n==`function`?r.addEventListener(e.slice(2).toLowerCase(),n):e===`class`?r.className=String(n):n===!0?r.setAttribute(e,``):r.setAttribute(e,String(n)));for(let e of n.flat())e!=null&&e!==!1&&r.append(typeof e==`string`?document.createTextNode(e):e);return r}function r(e,t,n){return new Promise(r=>e.toBlob(r,t,n))}async function i(e,t){for(let[n,i]of[[`image/webp`,.82],[`image/jpeg`,.8],[`image/jpeg`,.55]]){let a=await r(e,n,i);if(a&&a.type===n&&a.size<=t)return a}return null}function a(e){return Math.max(3,Math.round(Math.max(e.width,e.height)/250))}function o(e,t,n){let[r,i]=t.points;if(r){if(e.beginPath(),t.tool===`pen`){e.moveTo(r.x,r.y);for(let n of t.points.slice(1))e.lineTo(n.x,n.y)}else if(i&&t.tool===`box`)e.rect(r.x,r.y,i.x-r.x,i.y-r.y);else if(i){let t=Math.atan2(i.y-r.y,i.x-r.x),a=n*4;e.moveTo(r.x,r.y),e.lineTo(i.x,i.y);for(let n of[-1,1])e.moveTo(i.x,i.y),e.lineTo(i.x-a*Math.cos(t+n*Math.PI/7),i.y-a*Math.sin(t+n*Math.PI/7))}e.stroke()}}function s(e){let[t,n]=e.points;return!t||!n?!1:e.tool===`pen`?e.points.length>2:Math.hypot(n.x-t.x,n.y-t.y)>6}let c=async(t,{container:r,labels:c,color:l})=>{let u;try{u=await createImageBitmap(t)}catch{return null}let d=r.getRootNode();if(!d.querySelector(`style[data-nuni-markup]`)){let e=n(`style`,{"data-nuni-markup":``},`
|
|
2
|
+
.mk {
|
|
3
|
+
position: fixed;
|
|
4
|
+
inset: 0;
|
|
5
|
+
display: grid;
|
|
6
|
+
place-items: center;
|
|
7
|
+
padding: 16px;
|
|
8
|
+
background: rgb(0 0 0 / 0.55);
|
|
9
|
+
pointer-events: auto;
|
|
10
|
+
z-index: 10;
|
|
11
|
+
}
|
|
12
|
+
.mk-box {
|
|
13
|
+
display: grid;
|
|
14
|
+
gap: 10px;
|
|
15
|
+
max-width: 100%;
|
|
16
|
+
padding: 10px;
|
|
17
|
+
border-radius: 14px;
|
|
18
|
+
background: var(--n-bg);
|
|
19
|
+
color: var(--n-fg);
|
|
20
|
+
box-shadow: var(--n-shadow);
|
|
21
|
+
}
|
|
22
|
+
.mk-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
|
|
23
|
+
.mk-bar .spacer { flex: 1; }
|
|
24
|
+
.mk-error { margin: 0; color: var(--n-danger); font-size: 13px; }
|
|
25
|
+
.mk-error:empty { display: none; }
|
|
26
|
+
.mk-bar [aria-pressed="true"] { background: var(--n-accent-soft); border-color: var(--n-accent); }
|
|
27
|
+
.mk-canvas {
|
|
28
|
+
display: block;
|
|
29
|
+
max-width: min(960px, calc(100vw - 52px));
|
|
30
|
+
max-height: calc(100vh - 120px);
|
|
31
|
+
border-radius: 8px;
|
|
32
|
+
cursor: crosshair;
|
|
33
|
+
touch-action: none;
|
|
34
|
+
}
|
|
35
|
+
`);(d instanceof Document?d.head:d).append(e)}let f=n(`canvas`,{class:`mk-canvas`,width:u.width,height:u.height,role:`img`,"aria-label":c.title}),p=f.getContext(`2d`);if(!p)return u.close(),null;let m=a(f),h=[],g=null,_=`box`,v=()=>{p.drawImage(u,0,0),p.strokeStyle=l,p.lineWidth=m,p.lineCap=`round`,p.lineJoin=`round`;for(let e of g?[...h,g]:h)o(p,e,m);S.disabled=h.length===0},y=e=>{let t=f.getBoundingClientRect();return{x:(e.clientX-t.left)/t.width*f.width,y:(e.clientY-t.top)/t.height*f.height}};f.addEventListener(`pointerdown`,e=>{if(!e.isPrimary)return;e.preventDefault(),f.setPointerCapture(e.pointerId);let t=y(e);g={tool:_,points:_===`pen`?[t]:[t,t]},v()}),f.addEventListener(`pointermove`,e=>{if(!g)return;let t=y(e);g.tool===`pen`?g.points.push(t):g.points[1]=t,v()});let b=()=>{g&&s(g)&&h.push(g),g=null,v()};f.addEventListener(`pointerup`,b),f.addEventListener(`pointercancel`,b);let x=[`box`,`arrow`,`pen`].map(e=>n(`button`,{class:`btn`,type:`button`,"aria-pressed":String(e===_),onclick:()=>{_=e;for(let e of x)e.setAttribute(`aria-pressed`,String(e.dataset.tool===_))},"data-tool":e},c[e])),S=n(`button`,{class:`btn btn-ghost`,type:`button`,onclick:()=>{h.pop(),v()}},c.undo),C=d.activeElement;return new Promise(t=>{let a=!1,o=async n=>{if(a)return;a=!0;let r=n?await i(f,e.imageMaxBytes):null;if(n&&!r){a=!1,s.textContent=c.failed;return}d.remove(),u.close(),C?.focus(),t(r)},s=n(`p`,{class:`mk-error`,role:`alert`}),l=n(`button`,{class:`btn btn-primary`,type:`button`,onclick:()=>void o(!0)},c.done),d=n(`div`,{class:`mk`,role:`dialog`,"aria-modal":`true`,"aria-label":c.title,onkeydown:e=>{let t=e;if(t.key===`Escape`)o(!1);else if(t.key===`z`&&(t.metaKey||t.ctrlKey))h.pop(),v();else return;t.preventDefault()}},n(`div`,{class:`mk-box`},n(`div`,{class:`mk-bar`,role:`toolbar`,"aria-label":c.title},...x,S,n(`span`,{class:`spacer`}),n(`button`,{class:`btn btn-ghost`,type:`button`,onclick:()=>void o(!1)},c.cancel),l),s,f));r.append(d),v(),l.focus()})},l=`[modern-screenshot]`,u=typeof window<`u`,d=u&&`Worker`in window;u&&`atob`in window,u&&`btoa`in window;let f=u?window.navigator?.userAgent:``,p=f.includes(`Chrome`),m=f.includes(`AppleWebKit`)&&!p,h=f.includes(`Firefox`),g=e=>e&&`__CONTEXT__`in e,_=e=>e.constructor.name===`CSSFontFaceRule`,v=e=>e.constructor.name===`CSSImportRule`,y=e=>e.constructor.name===`CSSLayerBlockRule`,b=e=>e.nodeType===1,x=e=>typeof e.className==`object`,S=e=>e.tagName===`image`,C=e=>e.tagName===`use`,w=e=>b(e)&&e.style!==void 0&&!x(e),ee=e=>e.nodeType===8,te=e=>e.nodeType===3,T=e=>e.tagName===`IMG`,E=e=>e.tagName===`VIDEO`,ne=e=>e.tagName===`CANVAS`,re=e=>e.tagName===`TEXTAREA`,ie=e=>e.tagName===`INPUT`,ae=e=>e.tagName===`STYLE`,oe=e=>e.tagName===`SCRIPT`,se=e=>e.tagName===`SELECT`,ce=e=>e.tagName===`SLOT`,le=e=>e.tagName===`IFRAME`,ue=(...e)=>console.warn(l,...e);function de(e){let t=e?.createElement?.(`canvas`);return t&&(t.height=t.width=1),!!t&&`toDataURL`in t&&!!t.toDataURL(`image/webp`).includes(`image/webp`)}let D=e=>e.startsWith(`data:`);function O(e,t){if(e.match(/^[a-z]+:\/\//i))return e;if(u&&e.match(/^\/\//))return window.location.protocol+e;if(e.match(/^[a-z]+:/i)||!u)return e;let n=k().implementation.createHTMLDocument(),r=n.createElement(`base`),i=n.createElement(`a`);return n.head.appendChild(r),n.body.appendChild(i),t&&(r.href=t),i.href=e,i.href}function k(e){return(e&&b(e)?e?.ownerDocument:e)??window.document}let A=`http://www.w3.org/2000/svg`;function fe(e,t,n){let r=k(n).createElementNS(A,`svg`);return r.setAttributeNS(null,`width`,e.toString()),r.setAttributeNS(null,`height`,t.toString()),r.setAttributeNS(null,`viewBox`,`0 0 ${e} ${t}`),r}function pe(e,t){let n=new XMLSerializer().serializeToString(e);return t&&(n=n.replace(/[\u0000-\u0008\v\f\u000E-\u001F\uD800-\uDFFF\uFFFE\uFFFF]/gu,``)),`data:image/svg+xml;charset=utf-8,${encodeURIComponent(n)}`}function me(e,t){return new Promise((n,r)=>{let i=new FileReader;i.onload=()=>n(i.result),i.onerror=()=>r(i.error),i.onabort=()=>r(/* @__PURE__ */ Error(`Failed read blob to ${t}`)),t===`dataUrl`?i.readAsDataURL(e):t===`arrayBuffer`&&i.readAsArrayBuffer(e)})}let he=e=>me(e,`dataUrl`);function j(e,t){let n=k(t).createElement(`img`);return n.decoding=`sync`,n.loading=`eager`,n.src=e,n}function M(e,t){return new Promise(n=>{let{timeout:r,ownerDocument:i,onError:a,onWarn:o}=t??{},s=typeof e==`string`?j(e,k(i)):e,c=null,l=null;function u(){n(s),c&&clearTimeout(c),l?.()}if(r&&(c=setTimeout(u,r)),E(s)){let e=s.currentSrc||s.src;if(!e)return s.poster?M(s.poster,t).then(n):u();if(s.readyState>=2)return u();let r=u,i=t=>{o?.(`Failed video load`,e,t),a?.(t),u()};l=()=>{s.removeEventListener(`loadeddata`,r),s.removeEventListener(`error`,i)},s.addEventListener(`loadeddata`,r,{once:!0}),s.addEventListener(`error`,i,{once:!0})}else{let e=S(s)?s.href.baseVal:s.currentSrc||s.src;if(!e)return u();let t=async()=>{if(T(s)&&`decode`in s)try{await s.decode()}catch(t){o?.(`Failed to decode image, trying to render anyway`,s.dataset.originalSrc||e,t)}u()},n=t=>{o?.(`Failed image load`,s.dataset.originalSrc||e,t),u()};if(T(s)&&s.complete)return t();l=()=>{s.removeEventListener(`load`,t),s.removeEventListener(`error`,n)},s.addEventListener(`load`,t,{once:!0}),s.addEventListener(`error`,n,{once:!0})}})}async function ge(e,t){w(e)&&(T(e)||E(e)?await M(e,t):await Promise.all([`img`,`video`].flatMap(n=>Array.from(e.querySelectorAll(n)).map(e=>M(e,t)))))}let N=/* @__PURE__ */ function(){let e=0,t=()=>`0000${(Math.random()*36**4<<0).toString(36)}`.slice(-4);return()=>(e+=1,`u${t()}${e}`)}();function P(e){return e?.split(`,`).map(e=>e.trim().replace(/"|'/g,``).toLowerCase()).filter(Boolean)}let F=0;function _e(e){let t=`${l}[#${F}]`;return F++,{time:n=>e&&console.time(`${t} ${n}`),timeEnd:n=>e&&console.timeEnd(`${t} ${n}`),warn:(...t)=>e&&ue(...t)}}function ve(e){return{cache:e?`no-cache`:`force-cache`}}async function I(e,t){return g(e)?e:ye(e,{...t,autoDestruct:!0})}async function ye(e,t){let{scale:n=1,workerUrl:r,workerNumber:i=1}=t||{},a=!!t?.debug,o=t?.features??!0,s=e.ownerDocument??(u?window.document:void 0),c=e.ownerDocument?.defaultView??(u?window:void 0),l=/* @__PURE__ */ new Map,f={width:0,height:0,quality:1,type:`image/png`,scale:n,backgroundColor:null,style:null,filter:null,maximumCanvasSize:0,timeout:3e4,progress:null,debug:a,fetch:{requestInit:ve(t?.fetch?.bypassingCache),placeholderImage:`data:image/png;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7`,bypassingCache:!1,...t?.fetch},fetchFn:null,font:{},drawImageInterval:100,workerUrl:null,workerNumber:i,onCloneEachNode:null,onCloneNode:null,onEmbedNode:null,onCreateForeignObjectSvg:null,includeStyleProperties:null,autoDestruct:!1,...t,__CONTEXT__:!0,log:_e(a),node:e,ownerDocument:s,ownerWindow:c,dpi:n===1?null:96*n,svgStyleElement:L(s),svgDefsElement:s?.createElementNS(A,`defs`),svgStyles:/* @__PURE__ */ new Map,defaultComputedStyles:/* @__PURE__ */ new Map,workers:[...Array.from({length:d&&r&&i?i:0})].map(()=>{try{let e=new Worker(r);return e.onmessage=async e=>{let{url:t,result:n}=e.data;n?l.get(t)?.resolve?.(n):l.get(t)?.reject?.(/* @__PURE__ */ Error(`Error receiving message from worker: ${t}`))},e.onmessageerror=e=>{let{url:t}=e.data;l.get(t)?.reject?.(/* @__PURE__ */ Error(`Error receiving message from worker: ${t}`))},e}catch(e){return f.log.warn(`Failed to new Worker`,e),null}}).filter(Boolean),fontFamilies:/* @__PURE__ */ new Map,fontCssTexts:/* @__PURE__ */ new Map,acceptOfImage:`${[de(s)&&`image/webp`,`image/svg+xml`,`image/*`,`*/*`].filter(Boolean).join(`,`)};q=0.8`,requests:l,drawImageCount:0,tasks:[],features:o,isEnable:e=>e===`restoreScrollPosition`?typeof o==`boolean`?!1:o[e]??!1:typeof o==`boolean`?o:o[e]??!0,shadowRoots:[]};f.log.time(`wait until load`),await ge(e,{timeout:f.timeout,onWarn:f.log.warn}),f.log.timeEnd(`wait until load`);let{width:p,height:m}=be(e,f);return f.width=p,f.height=m,f}function L(e){if(!e)return;let t=e.createElement(`style`),n=t.ownerDocument.createTextNode(`
|
|
2
36
|
.______background-clip--text {
|
|
3
37
|
background-clip: text;
|
|
4
38
|
-webkit-background-clip: text;
|
|
5
39
|
}
|
|
6
|
-
`);return t.appendChild(n),t}function
|
|
7
|
-
`),h=s.get(m);h||(h=[],s.set(m,h)),h.push(`.${u[0]}${n}`)}
|
|
8
|
-
`))}else{let e=Array.from(n.styleSheets).filter(e=>{try{return`cssRules`in e&&!!e.cssRules.length}catch(n){return t.log.warn(`Error while reading CSS rules from ${e.href}`,n),!1}}),s=n.implementation.createHTMLDocument(``),c=s.createElement(`style`);s.head.appendChild(c);let l=c.sheet;await Promise.all(e.flatMap(e=>Array.from(e.cssRules).map(async e=>{if(
|
|
9
|
-
`)):o.push(
|
|
10
|
-
`))}))})}}}let
|
|
40
|
+
`);return t.appendChild(n),t}function be(e,t){let{width:n,height:r}=t;if(b(e)&&(!n||!r)){let t=e.getBoundingClientRect();n=n||t.width||Number(e.getAttribute(`width`))||0,r=r||t.height||Number(e.getAttribute(`height`))||0}return{width:n,height:r}}async function xe(e,t){let{log:n,timeout:r,drawImageCount:i,drawImageInterval:a}=t;n.time(`image to canvas`);let o=await M(e,{timeout:r,onWarn:t.log.warn}),{canvas:s,context2d:c}=Se(e.ownerDocument,t),l=()=>{try{c?.drawImage(o,0,0,s.width,s.height)}catch(e){t.log.warn(`Failed to drawImage`,e)}};if(l(),t.isEnable(`fixSvgXmlDecode`))for(let e=0;e<i;e++)await new Promise(t=>{setTimeout(()=>{c?.clearRect(0,0,s.width,s.height),l(),t()},e+a)});return t.drawImageCount=0,n.timeEnd(`image to canvas`),s}function Se(e,t){let{width:n,height:r,scale:i,backgroundColor:a,maximumCanvasSize:o}=t,s=e.createElement(`canvas`);s.width=Math.floor(n*i),s.height=Math.floor(r*i),s.style.width=`${n}px`,s.style.height=`${r}px`,o&&(s.width>o||s.height>o)&&(s.width>o&&s.height>o?s.width>s.height?(s.height*=o/s.width,s.width=o):(s.width*=o/s.height,s.height=o):s.width>o?(s.height*=o/s.width,s.width=o):(s.width*=o/s.height,s.height=o));let c=s.getContext(`2d`);return c&&a&&(c.fillStyle=a,c.fillRect(0,0,s.width,s.height)),{canvas:s,context2d:c}}function R(e,t){if(e.ownerDocument)try{let t=e.toDataURL();if(t!==`data:,`)return j(t,e.ownerDocument)}catch(e){t.log.warn(`Failed to clone canvas`,e)}let n=e.cloneNode(!1),r=e.getContext(`2d`),i=n.getContext(`2d`);try{return r&&i&&i.putImageData(r.getImageData(0,0,e.width,e.height),0,0),n}catch(e){t.log.warn(`Failed to clone canvas`,e)}return n}function Ce(e,t){try{if(e?.contentDocument?.documentElement)return W(e.contentDocument.documentElement,t)}catch(e){t.log.warn(`Failed to clone iframe`,e)}return e.cloneNode(!1)}function we(e){let t=e.cloneNode(!1);return e.currentSrc&&e.currentSrc!==e.src&&(t.src=e.currentSrc,t.srcset=``),t.loading===`lazy`&&(t.loading=`eager`),t}async function Te(e,t){if(e.ownerDocument&&!e.currentSrc&&e.poster)return j(e.poster,e.ownerDocument);let n=e.cloneNode(!1);n.crossOrigin=`anonymous`,e.currentSrc&&e.currentSrc!==e.src&&(n.src=e.currentSrc);let r=n.ownerDocument;if(r){let i=!0;if(await M(n,{onError:()=>i=!1,onWarn:t.log.warn}),!i)return e.poster?j(e.poster,e.ownerDocument):n;n.currentTime=e.currentTime,await new Promise(e=>{n.addEventListener(`seeked`,e,{once:!0})});let a=r.createElement(`canvas`);a.width=e.offsetWidth,a.height=e.offsetHeight;try{let e=a.getContext(`2d`);e&&e.drawImage(n,0,0,a.width,a.height)}catch(r){return t.log.warn(`Failed to clone video`,r),e.poster?j(e.poster,e.ownerDocument):n}return R(a,t)}return n}function Ee(e,t){return ne(e)?R(e,t):le(e)?Ce(e,t):T(e)?we(e):E(e)?Te(e,t):e.cloneNode(!1)}function De(e){let t=e.sandbox;if(!t){let{ownerDocument:n}=e;try{n&&(t=n.createElement(`iframe`),t.id=`__SANDBOX__${N()}`,t.width=`0`,t.height=`0`,t.style.visibility=`hidden`,t.style.position=`fixed`,n.body.appendChild(t),t.srcdoc=`<!DOCTYPE html><meta charset="UTF-8"><title></title><body>`,e.sandbox=t)}catch(t){e.log.warn(`Failed to getSandBox`,t)}}return t}let Oe=[`width`,`height`,`-webkit-text-fill-color`],ke=[`stroke`,`fill`];function z(e,t,n){let{defaultComputedStyles:r}=n,i=e.nodeName.toLowerCase(),a=x(e)&&i!==`svg`,o=a?ke.map(t=>[t,e.getAttribute(t)]).filter(([,e])=>e!==null):[],s=[a&&`svg`,i,o.map((e,t)=>`${e}=${t}`).join(`,`),t].filter(Boolean).join(`:`);if(r.has(s))return r.get(s);let c=De(n)?.contentWindow;if(!c)return/* @__PURE__ */ new Map;let l=c?.document,u,d;a?(u=l.createElementNS(A,`svg`),d=u.ownerDocument.createElementNS(u.namespaceURI,i),o.forEach(([e,t])=>{d.setAttributeNS(null,e,t)}),u.appendChild(d)):u=d=l.createElement(i),d.textContent=` `,l.body.appendChild(u);let f=c.getComputedStyle(d,t),p=/* @__PURE__ */ new Map;for(let e=f.length,t=0;t<e;t++){let e=f.item(t);Oe.includes(e)||p.set(e,f.getPropertyValue(e))}return l.body.removeChild(u),r.set(s,p),p}function B(e,t,n){let r=/* @__PURE__ */ new Map,i=[],a=/* @__PURE__ */ new Map;if(n)for(let e of n)o(e);else for(let t=e.length,n=0;n<t;n++)o(e.item(n));for(let e=i.length,t=0;t<e;t++)a.get(i[t])?.forEach((e,t)=>r.set(t,e));function o(n){let o=e.getPropertyValue(n),s=e.getPropertyPriority(n),c=n.lastIndexOf(`-`),l=c>-1?n.substring(0,c):void 0;if(l){let e=a.get(l);e||(e=/* @__PURE__ */ new Map,a.set(l,e)),e.set(n,[o,s])}(t.get(n)!==o||s)&&(l?i.push(l):r.set(n,[o,s]))}return r}function Ae(e,t,n,r){let{ownerWindow:i,includeStyleProperties:a,currentParentNodeStyle:o}=r,s=t.style,c=i.getComputedStyle(e),l=z(e,null,r);o?.forEach((e,t)=>{l.delete(t)});let u=B(c,l,a);u.delete(`transition-property`),u.delete(`all`),u.delete(`d`),u.delete(`content`),n&&(u.delete(`position`),u.delete(`margin-top`),u.delete(`margin-right`),u.delete(`margin-bottom`),u.delete(`margin-left`),u.delete(`margin-block-start`),u.delete(`margin-block-end`),u.delete(`margin-inline-start`),u.delete(`margin-inline-end`),u.set(`box-sizing`,[`border-box`,``])),u.get(`background-clip`)?.[0]===`text`&&t.classList.add(`______background-clip--text`),p&&(u.has(`font-kerning`)||u.set(`font-kerning`,[`normal`,``]),(u.get(`overflow-x`)?.[0]===`hidden`||u.get(`overflow-y`)?.[0]===`hidden`)&&u.get(`text-overflow`)?.[0]===`ellipsis`&&e.scrollWidth===e.clientWidth&&u.set(`text-overflow`,[`clip`,``]));for(let e=s.length,t=0;t<e;t++)s.removeProperty(s.item(t));return u.forEach(([e,t],n)=>{s.setProperty(n,e,t)}),u}function je(e,t){(re(e)||ie(e)||se(e))&&t.setAttribute(`value`,e.value)}let Me=[`::before`,`::after`],Ne=[`::-webkit-scrollbar`,`::-webkit-scrollbar-button`,`::-webkit-scrollbar-thumb`,`::-webkit-scrollbar-track`,`::-webkit-scrollbar-track-piece`,`::-webkit-scrollbar-corner`,`::-webkit-resizer`];function Pe(e,t,n,r,i){let{ownerWindow:a,svgStyleElement:o,svgStyles:s,currentNodeStyle:c}=r;if(!o||!a)return;function l(n){let o=a.getComputedStyle(e,n),l=o.getPropertyValue(`content`);if(!l||l===`none`)return;i?.(l),l=l.replace(/(')|(")|(counter\(.+\))/g,``);let u=[N()],d=z(e,n,r);c?.forEach((e,t)=>{d.delete(t)});let f=B(o,d,r.includeStyleProperties);f.delete(`content`),f.delete(`-webkit-locale`),f.get(`background-clip`)?.[0]===`text`&&t.classList.add(`______background-clip--text`);let p=[`content: '${l}';`];if(f.forEach(([e,t],n)=>{p.push(`${n}: ${e}${t?` !important`:``};`)}),p.length===1)return;try{t.className=[t.className,...u].join(` `)}catch(e){r.log.warn(`Failed to copyPseudoClass`,e);return}let m=p.join(`
|
|
41
|
+
`),h=s.get(m);h||(h=[],s.set(m,h)),h.push(`.${u[0]}${n}`)}Me.forEach(l),n&&Ne.forEach(l)}let V=/* @__PURE__ */ new Set([`symbol`]);async function H(e,t,n,r,i){if(b(n)&&(ae(n)||oe(n))||r.filter&&!r.filter(n))return;r.currentParentNodeStyle=V.has(t.nodeName)||V.has(n.nodeName)?void 0:r.currentNodeStyle;let a=await W(n,r,!1,i);r.isEnable(`restoreScrollPosition`)&&Fe(e,a),t.appendChild(a)}async function U(e,t,n,r){let i=e.firstChild;b(e)&&e.shadowRoot&&(i=e.shadowRoot?.firstChild,n.shadowRoots.push(e.shadowRoot));for(let a=i;a;a=a.nextSibling)if(!ee(a)){if(b(a)&&ce(a)&&typeof a.assignedNodes==`function`){let i=a.assignedNodes();for(let a=0;a<i.length;a++)await H(e,t,i[a],n,r)}else await H(e,t,a,n,r)}}function Fe(e,t){if(!w(e)||!w(t))return;let{scrollTop:n,scrollLeft:r}=e;if(!n&&!r)return;let{transform:i}=t.style,a=new DOMMatrix(i),{a:o,b:s,c,d:l}=a;a.a=1,a.b=0,a.c=0,a.d=1,a.translateSelf(-r,-n),a.a=o,a.b=s,a.c=c,a.d=l,t.style.transform=a.toString()}function Ie(e,t){let{backgroundColor:n,width:r,height:i,style:a}=t,o=e.style;if(n&&o.setProperty(`background-color`,n,`important`),r&&o.setProperty(`width`,`${r}px`,`important`),i&&o.setProperty(`height`,`${i}px`,`important`),a)for(let e in a)o[e]=a[e]}let Le=/^[\w-:]+$/;async function W(e,t,n=!1,r){let{ownerDocument:i,ownerWindow:a,fontFamilies:o,onCloneEachNode:s}=t;if(i&&te(e))return r&&/\S/.test(e.data)&&r(e.data),i.createTextNode(e.data);if(i&&a&&b(e)&&(w(e)||x(e))){let r=await Ee(e,t);if(t.isEnable(`removeAbnormalAttributes`)){let e=r.getAttributeNames();for(let t=e.length,n=0;n<t;n++){let t=e[n];Le.test(t)||r.removeAttribute(t)}}let i=t.currentNodeStyle=Ae(e,r,n,t);n&&Ie(r,t);let a=!1;if(t.isEnable(`copyScrollbar`)){let t=[i.get(`overflow-x`)?.[0],i.get(`overflow-y`)?.[0]];a=t.includes(`scroll`)||(t.includes(`auto`)||t.includes(`overlay`))&&(e.scrollHeight>e.clientHeight||e.scrollWidth>e.clientWidth)}let c=i.get(`text-transform`)?.[0],l=P(i.get(`font-family`)?.[0]),u=l?e=>{c===`uppercase`?e=e.toUpperCase():c===`lowercase`?e=e.toLowerCase():c===`capitalize`&&(e=e[0].toUpperCase()+e.substring(1)),l.forEach(t=>{let n=o.get(t);n||o.set(t,n=/* @__PURE__ */ new Set),e.split(``).forEach(e=>n.add(e))})}:void 0;return Pe(e,r,a,t,u),je(e,r),E(e)||await U(e,r,t,u),await s?.(r),r}let c=e.cloneNode(!1);return await U(e,c,t),await s?.(c),c}function Re(e){if(e.ownerDocument=void 0,e.ownerWindow=void 0,e.svgStyleElement=void 0,e.svgDefsElement=void 0,e.svgStyles.clear(),e.defaultComputedStyles.clear(),e.sandbox){try{e.sandbox.remove()}catch(t){e.log.warn(`Failed to destroyContext`,t)}e.sandbox=void 0}e.workers=[],e.fontFamilies.clear(),e.fontCssTexts.clear(),e.requests.clear(),e.tasks=[],e.shadowRoots=[]}function ze(e){let{url:t,timeout:n,responseType:r,...i}=e,a=new AbortController,o=n?setTimeout(()=>a.abort(),n):void 0;return fetch(t,{signal:a.signal,...i}).then(e=>{if(!e.ok)throw Error(`Failed fetch, not 2xx response`,{cause:e});switch(r){case`arrayBuffer`:return e.arrayBuffer();case`dataUrl`:return e.blob().then(he);default:return e.text()}}).finally(()=>clearTimeout(o))}function G(e,t){let{url:n,requestType:r=`text`,responseType:i=`text`,imageDom:a}=t,o=n,{timeout:s,acceptOfImage:c,requests:l,fetchFn:u,fetch:{requestInit:d,bypassingCache:f,placeholderImage:p},font:g,workers:_,fontFamilies:v}=e;r===`image`&&(m||h)&&e.drawImageCount++;let y=l.get(n);if(!y){f&&f instanceof RegExp&&f.test(o)&&(o+=(/\?/.test(o)?`&`:`?`)+(/* @__PURE__ */ new Date()).getTime());let t=r.startsWith(`font`)&&g&&g.minify,h=/* @__PURE__ */ new Set;t&&r.split(`;`)[1].split(`,`).forEach(e=>{v.has(e)&&v.get(e).forEach(e=>h.add(e))});let b=t&&h.size,x={url:o,timeout:s,responseType:b?`arrayBuffer`:i,headers:r===`image`?{accept:c}:void 0,...d};y={type:r,resolve:void 0,reject:void 0,response:null},y.response=(async()=>{if(u&&r===`image`){let e=await u(n);if(e)return e}return!m&&n.startsWith(`http`)&&_.length?new Promise((e,t)=>{_[l.size&_.length-1].postMessage({rawUrl:n,...x}),y.resolve=e,y.reject=t}):ze(x)})().catch(t=>{if(l.delete(n),r===`image`&&p)return e.log.warn(`Failed to fetch image base64, trying to use placeholder image`,o),typeof p==`string`?p:p(a);throw t}),l.set(n,y)}return y.response}async function K(e,t,n,r){if(!q(e))return e;for(let[i,a]of Be(e,t))try{let t=await G(n,{url:a,requestType:r?`image`:`text`,responseType:`dataUrl`});e=e.replace(Ve(i),`$1${t}$3`)}catch(e){n.log.warn(`Failed to fetch css data url`,i,e)}return e}function q(e){return/url\((['"]?)([^'"]+?)\1\)/.test(e)}let J=/url\((['"]?)([^'"]+?)\1\)/g;function Be(e,t){let n=[];return e.replace(J,(e,r,i)=>(n.push([i,O(i,t)]),e)),n.filter(([e])=>!D(e))}function Ve(e){let t=e.replace(/([.*+?^${}()|\[\]\/\\])/g,`\\$1`);return RegExp(`(url\\(['"]?)(${t})(['"]?\\))`,`g`)}let He=[`background-image`,`border-image-source`,`-webkit-border-image`,`-webkit-mask-image`,`list-style-image`];function Ue(e,t){return He.map(n=>{let r=e.getPropertyValue(n);return!r||r===`none`?null:((m||h)&&t.drawImageCount++,K(r,null,t,!0).then(t=>{t&&r!==t&&e.setProperty(n,t,e.getPropertyPriority(n))}))}).filter(Boolean)}function We(e,t){if(T(e)){let n=e.currentSrc||e.src;if(!D(n))return[G(t,{url:n,imageDom:e,requestType:`image`,responseType:`dataUrl`}).then(t=>{t&&(e.srcset=``,e.dataset.originalSrc=n,e.src=t||``)})];(m||h)&&t.drawImageCount++}else if(x(e)&&!D(e.href.baseVal)){let n=e.href.baseVal;return[G(t,{url:n,imageDom:e,requestType:`image`,responseType:`dataUrl`}).then(t=>{t&&(e.dataset.originalSrc=n,e.href.baseVal=t||``)})]}return[]}function Ge(e,t){let{ownerDocument:n,svgDefsElement:r}=t,i=e.getAttribute(`href`)??e.getAttribute(`xlink:href`);if(!i)return[];let[a,o]=i.split(`#`);if(o){let i=`#${o}`,s=t.shadowRoots.reduce((e,t)=>e??t.querySelector(`svg ${i}`),n?.querySelector(`svg ${i}`));if(a&&e.setAttribute(`href`,i),r?.querySelector(i))return[];if(s)return r?.appendChild(s.cloneNode(!0)),[];if(a)return[G(t,{url:a,responseType:`text`}).then(e=>{r?.insertAdjacentHTML(`beforeend`,e)})]}return[]}function Y(e,t){let{tasks:n}=t;b(e)&&((T(e)||S(e))&&n.push(...We(e,t)),C(e)&&n.push(...Ge(e,t))),w(e)&&n.push(...Ue(e.style,t)),e.childNodes.forEach(e=>{Y(e,t)})}async function Ke(e,t){let{ownerDocument:n,svgStyleElement:r,fontFamilies:i,fontCssTexts:a,tasks:o,font:s}=t;if(n&&r&&i.size){if(s&&s.cssText){let e=Z(s.cssText,t);r.appendChild(n.createTextNode(`${e}
|
|
42
|
+
`))}else{let e=Array.from(n.styleSheets).filter(e=>{try{return`cssRules`in e&&!!e.cssRules.length}catch(n){return t.log.warn(`Error while reading CSS rules from ${e.href}`,n),!1}}),s=n.implementation.createHTMLDocument(``),c=s.createElement(`style`);s.head.appendChild(c);let l=c.sheet;await Promise.all(e.flatMap(e=>Array.from(e.cssRules).map(async e=>{if(v(e)){let n=e.href,r=``;try{r=await G(t,{url:n,requestType:`text`,responseType:`text`})}catch(e){t.log.warn(`Error fetch remote css import from ${n}`,e)}let i=r.replace(J,(e,t,r)=>e.replace(r,O(r,n)));for(let e of Je(i))try{l.insertRule(e,l.cssRules.length)}catch(n){t.log.warn(`Error inserting rule from remote css import`,{rule:e,error:n})}}}))),l.cssRules.length&&e.push(l);let u=[];e.forEach(e=>{Q(e.cssRules,u)}),u.filter(e=>_(e)&&q(e.style.getPropertyValue(`src`))&&P(e.style.getPropertyValue(`font-family`))?.some(e=>i.has(e))).forEach(e=>{let i=e,s=a.get(i.cssText);s?r.appendChild(n.createTextNode(`${s}
|
|
43
|
+
`)):o.push(K(i.cssText,i.parentStyleSheet?i.parentStyleSheet.href:null,t).then(e=>{e=Z(e,t),a.set(i.cssText,e),r.appendChild(n.createTextNode(`${e}
|
|
44
|
+
`))}))})}}}let qe=/(\/\*[\s\S]*?\*\/)/g,X=/((@.*?keyframes [\s\S]*?){([\s\S]*?}\s*?)})/gi;function Je(e){if(e==null)return[];let t=[],n=e.replace(qe,``);for(;;){let e=X.exec(n);if(!e)break;t.push(e[0])}n=n.replace(X,``);let r=/@import[\s\S]*?url\([^)]*\)[\s\S]*?;/gi,i=/* @__PURE__ */ RegExp(`((\\s*?(?:\\/\\*[\\s\\S]*?\\*\\/)?\\s*?@media[\\s\\S]*?){([\\s\\S]*?)}\\s*?})|(([\\s\\S]*?){([\\s\\S]*?)})`,`gi`);for(;;){let e=r.exec(n);if(e)i.lastIndex=r.lastIndex;else if(e=i.exec(n),e)r.lastIndex=i.lastIndex;else break;t.push(e[0])}return t}let Ye=/url\([^)]+\)\s*format\((["']?)([^"']+)\1\)/g,Xe=/src:\s*(?:url\([^)]+\)\s*format\([^)]+\)[,;]\s*)+/g;function Z(e,t){let{font:n}=t,r=n?n?.preferredFormat:void 0;return r?e.replace(Xe,e=>{for(;;){let[t,,n]=Ye.exec(e)||[];if(!n)return``;if(n===r)return`src: ${t};`}}):e}function Q(e,t=[]){for(let n of Array.from(e))y(n)?t.push(...Q(n.cssRules)):`cssRules`in n?Q(n.cssRules,t):t.push(n);return t}let Ze=/\bx?link:?href\s*=\s*["'](?!data:)[^"']+["']/i;function Qe(e){return Ze.test(e.innerHTML)}async function $e(e,t){let n=await I(e,t);if(b(n.node)&&x(n.node)&&!Qe(n.node))return n.node;let{ownerDocument:r,log:i,tasks:a,svgStyleElement:o,svgDefsElement:s,svgStyles:c,font:l,progress:u,autoDestruct:d,onCloneNode:f,onEmbedNode:p,onCreateForeignObjectSvg:m}=n;i.time(`clone node`);let h=await W(n.node,n,!0);if(o&&r){let e=``;c.forEach((t,n)=>{e+=`${t.join(`,
|
|
11
45
|
`)} {
|
|
12
46
|
${n}
|
|
13
47
|
}
|
|
14
|
-
`}),o.appendChild(r.createTextNode(e))}i.timeEnd(`clone node`),await f?.(
|
|
48
|
+
`}),o.appendChild(r.createTextNode(e))}i.timeEnd(`clone node`),await f?.(h),l!==!1&&b(h)&&(i.time(`embed web font`),await Ke(h,n),i.timeEnd(`embed web font`)),i.time(`embed node`),Y(h,n);let g=a.length,_=0,v=async()=>{for(;;){let e=a.pop();if(!e)break;try{await e}catch(e){n.log.warn(`Failed to run task`,e)}u?.(++_,g)}};u?.(_,g),await Promise.all([...Array.from({length:4})].map(v)),i.timeEnd(`embed node`),await p?.(h);let y=et(h,n);return s&&y.insertBefore(s,y.children[0]),o&&y.insertBefore(o,y.children[0]),d&&Re(n),await m?.(y),y}function et(e,t){let{width:n,height:r}=t,i=fe(n,r,e.ownerDocument),a=i.ownerDocument.createElementNS(i.namespaceURI,`foreignObject`);return a.setAttributeNS(null,`x`,`0%`),a.setAttributeNS(null,`y`,`0%`),a.setAttributeNS(null,`width`,`100%`),a.setAttributeNS(null,`height`,`100%`),a.append(e),i.appendChild(a),i}async function tt(e,t){let n=await I(e,t),r=await $e(n),i=pe(r,n.isEnable(`removeControlCharacter`));return n.autoDestruct||(n.svgStyleElement=L(n.ownerDocument),n.svgDefsElement=n.ownerDocument?.createElementNS(A,`defs`),n.svgStyles.clear()),await xe(j(i,r.ownerDocument),n)}let nt=Symbol.for(`nuni.capture`),rt=4096,it=/* @__PURE__ */ new Set([`text`,`file`,`email`,`tel`,`url`,`search`,`password`,`number`,`date`,`datetime-local`,`month`,`week`,`time`]),$=e=>({left:e.left-48,top:e.top-48,right:e.right+48,bottom:e.bottom+48});function at(e){let t=e.ownerDocument,n=$(e.getBoundingClientRect()),r=e;for(;r.parentElement&&r.parentElement!==t.body;){let e=r.getBoundingClientRect();if(e.left<=n.left&&e.top<=n.top&&e.right>=n.right&&e.bottom>=n.bottom)break;r=r.parentElement}return r}function ot(e,t,n){let{display:r}=getComputedStyle(e),i=r===`block`||r===`list-item`,a=e.getAttribute(`style`);i&&e.setAttribute(`style`,`${a?`${a};`:``}display: flow-root !important`);try{let r=e.getBoundingClientRect(),i=n?.()??t.getBoundingClientRect(),a=$(i);return{box:r,target:i,masks:ct(e),crop:{left:Math.max(r.left,a.left),top:Math.max(r.top,a.top),right:Math.min(r.right,a.right),bottom:Math.min(r.bottom,a.bottom)}}}finally{i&&(a===null?e.removeAttribute(`style`):e.setAttribute(`style`,a))}}function st(e){let t=e.getBoundingClientRect(),n=getComputedStyle(e),r=e=>parseFloat(e)||0;return{left:t.left+r(n.borderLeftWidth)+r(n.paddingLeft),top:t.top+r(n.borderTopWidth)+r(n.paddingTop),right:t.right-r(n.borderRightWidth)-r(n.paddingRight),bottom:t.bottom-r(n.borderBottomWidth)-r(n.paddingBottom)}}function ct(e){let n=[],r=e.querySelectorAll(`input, textarea, select, [${t}]`),i=e.closest(`[${t}]`);if(i)return[i.getBoundingClientRect()];for(let t of[e,...Array.from(r)]){if(t.hasAttribute(`data-nuni-mask`)){n.push(t.getBoundingClientRect());continue}let e=t.tagName;(t instanceof HTMLInputElement&&it.has(t.type)||e===`TEXTAREA`||e===`SELECT`)&&n.push(st(t))}return n}window.__nuniScreenshot={capture:async(t,n)=>{let r=at(t),{box:a,target:o,masks:s,crop:c}=ot(r,t,n.focus),l=c.right-c.left,u=c.bottom-c.top;if(l<1||u<1)return null;let d=Math.min(window.devicePixelRatio||1,1280/l,1600/u,rt/a.width,rt/a.height),f=getComputedStyle(t.ownerDocument.body).backgroundColor||`rgb(255, 255, 255)`,p=await tt(r,{width:a.width,height:a.height,scale:d,backgroundColor:f===`rgba(0, 0, 0, 0)`?`rgb(255, 255, 255)`:f,filter:e=>e!==n.exclude,timeout:8e3,fetch:{requestInit:{cache:`force-cache`,[nt]:!0}}}),m=t.ownerDocument.createElement(`canvas`);m.width=Math.max(1,Math.round(l*d)),m.height=Math.max(1,Math.round(u*d));let h=m.getContext(`2d`);if(!h)return null;h.drawImage(p,(c.left-a.left)*d,(c.top-a.top)*d,m.width,m.height,0,0,m.width,m.height);let g=e=>({x:(e.left-c.left)*d,y:(e.top-c.top)*d,w:(e.right-e.left)*d,h:(e.bottom-e.top)*d});h.fillStyle=`#a1a1aa`;for(let e of s){let{x:t,y:n,w:r,h:i}=g(e);r>0&&i>0&&h.fillRect(t,n,r,i)}let _=Math.max(2,3*d),v=_/2,y=4*d,b=g(o),x=Math.max(v,b.x-y),S=Math.max(v,b.y-y),C=Math.min(m.width-v,b.x+b.w+y),w=Math.min(m.height-v,b.y+b.h+y);return h.strokeStyle=n.accent,h.lineWidth=_,C>x&&w>S&&h.strokeRect(x,S,C-x,w-S),i(m,e.screenshotMaxBytes)},markUp:c}})();
|