@augmentd-labs/canvas-web 2.15.4 → 2.15.8

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.
@@ -0,0 +1 @@
1
+ import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{wt as t}from"./react-DQazvoR7.js";import{_ as n,u as r}from"./alert-dialog-CI8w9egc.js";import{Dt as i,Nt as a,at as o,mt as s}from"./workspace-DtHtsT4U.js";var c=e(t(),1);function l(e){return!/[\\\0]/.test(e)&&e.split(`/`).every(e=>e!==`.`&&e!==`..`)}function u(e,t){if(!l(e))throw Error(`Invalid backend folder path`);let n=`/`+e.split(`/`).filter(Boolean).join(`/`),r=[...t].filter(e=>e.treePath&&(n===e.treePath||n.startsWith(e.treePath+`/`))).sort((e,t)=>t.treePath.length-e.treePath.length)[0];if(!r)throw Error(`Choose a writable storage backend folder`);if(!r.enabled||r.config?.readOnly===!0||!r.capabilities.upload)throw Error(`This backend does not support file uploads or is read-only`);return{driver:r.driver,address:r.address,key:n.slice(r.treePath.length).replace(/^\//,``)}}function d(e,t){if(!t||t.includes(`/`)||!l(t)||!l(e))throw Error(`Invalid upload filename or folder`);return[e.replace(/^\/+|\/+$/g,``),t].filter(Boolean).join(`/`)}var f=(0,c.createContext)(null);function p(){let e=(0,c.useContext)(f);if(!e)throw Error(`useToolbox must be used within a ToolboxProvider`);return e}function m(){return(0,c.useContext)(f)}var h=`contexts:deleted`;function g(e,t){return e.id===t.id?t.ownerId===void 0?e.isShared!==!0&&e.type!==`shared`:e.userId===t.ownerId:!1}async function _(){try{let e=await r.get(n.contexts);return Array.isArray(e)?e:(console.warn(`listContexts: response.payload is not an array:`,e),[])}catch(e){throw console.error(`Failed to list contexts:`,e),e}}function v(e,t){return t?`${e}${e.includes(`?`)?`&`:`?`}ownerId=${encodeURIComponent(t)}`:e}async function y(e,t){try{let i=v(`${n.contexts}/${e}`,t),a=await r.get(i);if(a&&a)return a;throw Error(`Context data not found in API response`)}catch(t){throw console.error(`Failed to get context ${e}:`,t),t}}async function b(e){try{let t=await r.post(n.contexts,e);if(t&&t&&t.context)return t.context;throw Error(`Created context data not found in API response`)}catch(e){throw console.error(`Failed to create context:`,e),e}}async function x(e,t,i){try{let a=v(`${n.contexts}/${e}`,i),o=await r.put(a,t);if(o?.context)return o.context;throw Error(`Updated context data not found in API response`)}catch(t){throw console.error(`Failed to patch context ${e}:`,t),t}}async function ee(e,t,i){try{let a=v(`${n.contexts}/${e}`,i),o=await r.put(a,t);if(o?.context)return o.context;throw Error(`Updated context data not found in API response`)}catch(t){throw console.error(`Failed to update context ${e}:`,t),t}}async function S(e,t,i,a){try{let o=v(`${n.contexts}/${e}/url`,i),s=await r.post(o,{url:t,...a?{treeName:a}:{}});if(s&&s&&s.url)return{url:s.url,treeId:s.treeId};throw Error(`Updated context data not found in API response`)}catch(t){throw console.error(`Failed to update context URL for ${e}:`,t),t}}async function C(e,t){try{let i=v(`${n.contexts}/${e}`,t);await r.delete(i),window.dispatchEvent(new CustomEvent(h,{detail:{id:e,ownerId:t}}))}catch(t){throw console.error(`Failed to delete context ${e}:`,t),t}}async function w(e,t=[],i=[],a={},o){try{if(a.ids?.length===0)return Object.assign([],{count:0,totalCount:0});let s=new URLSearchParams;a.geoSelection&&(s.set(`geoSelection`,JSON.stringify(a.geoSelection)),s.set(`includeUnlocated`,String(a.includeUnlocated===!0))),a.ids?.forEach(e=>s.append(`ids`,String(e))),t.forEach(e=>s.append(`allOf`,e)),i.forEach(e=>s.append(`filters`,e)),(a.anyOf||[]).filter(Boolean).forEach(e=>s.append(`anyOf`,e)),(a.noneOf||[]).filter(Boolean).forEach(e=>s.append(`noneOf`,e)),a.sortBy&&s.append(`sortBy`,a.sortBy),a.order&&s.append(`order`,a.order),a.applyContextSpec===!1&&s.append(`applyContextSpec`,`false`),o&&s.append(`ownerId`,o),a.includeServerContext!==void 0&&s.append(`includeServerContext`,a.includeServerContext.toString()),a.includeClientContext!==void 0&&s.append(`includeClientContext`,a.includeClientContext.toString()),a.limit!==void 0&&s.append(`limit`,a.limit.toString()),a.offset!==void 0&&s.append(`offset`,a.offset.toString()),a.page!==void 0&&s.append(`page`,a.page.toString()),(a.queries&&a.queries.length?a.queries:a.q?[a.q]:[]).map(e=>e.trim()).filter(Boolean).forEach(e=>s.append(`q`,e));let c=`${n.contexts}/${e}/documents${s.toString()?`?`+s.toString():``}`,l=await r.getEnvelope(c,{signal:a.signal}),u=l.payload;if(Array.isArray(u)){let e=u;return e.count=l.count??void 0,e.totalCount=l.totalCount??void 0,e}return console.warn(`getContextDocuments: payload is not an array:`,u),[]}catch(t){throw console.error(`Failed to get context documents for ${e}:`,t),t}}async function T(e){let t=await r.get(`${n.contexts}/${e}/shares`);return Array.isArray(t)?t:[]}async function E(e,t,i){try{return{message:(await r.post(`${n.contexts}/${e}/shares`,{userEmail:t,accessLevel:i})).message||`Context access granted`}}catch(e){throw console.error(`Failed to grant context access:`,e),e}}async function D(e,t){try{return{message:(await r.delete(`${n.contexts}/${e}/shares/${encodeURIComponent(t)}`)).message||`Context access revoked`}}catch(e){throw console.error(`Failed to revoke context access:`,e),e}}async function O(e,t){try{let i=v(`${n.contexts}/${e}/tree`,t),a=await r.get(i);if(a)return a;throw Error(`Context tree data not found in API response`)}catch(t){throw console.error(`Failed to get context tree for ${e}:`,t),t}}async function k(e,t,i,a){try{let a=Array.isArray(t)?t:[t],o=new URLSearchParams,s=`${n.contexts}/${e}/documents/remove${o.toString()?`?${o.toString()}`:``}`;return{message:await r.delete(v(s,i),{body:JSON.stringify(a),headers:{"Content-Type":`application/json`}})||`Documents removed from context`}}catch(t){throw console.error(`Failed to remove documents from context ${e}:`,t),t}}async function A(e,t,i,a){try{let a=Array.isArray(t)?t:[t],o=new URLSearchParams,s=`${n.contexts}/${e}/documents${o.toString()?`?${o.toString()}`:``}`;return await r.delete(v(s,i),{body:JSON.stringify(a),headers:{"Content-Type":`application/json`}})}catch(t){throw console.error(`Failed to delete documents from context ${e}:`,t),t}}async function j(e,t,i,a){try{let o=Array.isArray(i)?i:[i];return await r.post(v(`${n.contexts}/${e}/documents`,a),{documentIds:o,context:t}),!0}catch(e){throw console.error(`Failed to paste documents to context path ${t}:`,e),e}}async function M(e,t,i=!0){return await r.post(`${n.contexts}/${e}/tree/paths`,{path:t,autoCreateLayers:i})??!0}async function N(e,t,i=!1){let a=new URLSearchParams({path:t,recursive:i.toString()});return await r.delete(`${n.contexts}/${e}/tree/paths?${a}`)??!0}async function P(e,t,i){return await r.patch(`${n.contexts}/${e}/tree/paths`,{path:t,...i})??!0}async function F(e,t,i,a=!1,o={}){return await r.post(`${n.contexts}/${e}/tree/paths/move`,{from:t,to:i,recursive:a,...o.mergeDown?{mergeDown:!0}:{}})??!0}async function I(e,t){return await r.post(`${n.contexts}/${e}/tree/paths/merge-down`,{path:t})}async function L(e,t){return await r.post(`${n.contexts}/${e}/tree/paths/subtract-down`,{path:t})}async function te(e,t,i,a=!1){return await r.post(`${n.contexts}/${e}/tree/paths/copy`,{from:t,to:i,recursive:a})??!0}async function R(e,t,i){return await r.post(`${n.contexts}/${e}/tree/layers/merge`,{layerId:t,targetLayers:i})}async function z(e,t,i){return await r.post(`${n.contexts}/${e}/tree/layers/subtract`,{layerId:t,targetLayers:i})}async function B(e,t,i){try{let a=Array.isArray(i)?i:[i];return await r.post(`${n.workspaces}/${e}/documents`,{documents:a,treeType:`context`,context:t}),!0}catch(e){throw console.error(`Failed to import documents to context path ${t}:`,e),e}}async function V(e,t,i=[]){try{let a=Array.isArray(t)?t:[t],o=await r.post(`${n.contexts}/${e}/documents`,{documents:a,features:i});return Array.isArray(o)?o:[]}catch(t){throw console.error(`Failed to insert documents into context ${e}:`,t),t}}function H(){let{state:e}=p(),{activeContextType:t,activeContextId:n,activeWorkspaceName:r,activeTreeName:i,activeContextPath:a}=e;return(0,c.useMemo)(()=>t===`context`&&n?{mode:`context`,contextId:n}:r&&a?{mode:`workspace`,workspaceName:r,path:a,treeName:i||`context`,treeType:i===`directory`||i===`backends`?`directory`:`context`}:null,[t,n,r,i,a])}var U=new Map,W=15e3;function G(e){let t=U.get(e);if(t&&Date.now()-t.at<W)return t.promise;let n=i(e);return n.catch(()=>U.delete(e)),U.set(e,{at:Date.now(),promise:n}),n}function K(e){e?.mode===`workspace`&&window.dispatchEvent(new CustomEvent(`workspace:documents:refresh`,{detail:{workspaceName:e.workspaceName,treeName:e.treeName,path:e.path}}))}async function q(e,t,n={}){if(!e)throw Error(`No active workspace or context to add to`);if(e.mode===`workspace`){if(e.treeName===`backends`)throw Error(`Backend folders accept files, not database-only documents`);let r=e.treeType;try{let t=(await G(e.workspaceName)).find(t=>t?.name===e.treeName||t?.id===e.treeName);(t?.type===`directory`||t?.type===`context`)&&(r=t.type)}catch{}let i=await o(e.workspaceName,e.path,t,e.treeName,r);return i.length&&n.refresh!==!1&&K(e),i}return V(e.contextId,t)}async function J(e){if(!e)throw Error(`No active workspace or context to add to`);if(e.mode===`workspace`)return{workspaceName:e.workspaceName,path:e.path,treeName:e.treeName,treeType:e.treeType};let t=await y(e.contextId),n=t.workspaceName||t.workspaceId;if(!n)throw Error(`Context has no bound workspace`);return{workspaceName:n,path:t.path||`/`,treeName:t.treeId||`context`,treeType:`context`}}async function Y(e,t){if(!e)throw Error(`No active workspace or context to add to`);if(e.mode===`workspace`){let n=await a(e.workspaceName,e.path,t,e.treeName,e.treeType);return n&&window.dispatchEvent(new CustomEvent(`workspace:documents:refresh`,{detail:{workspaceName:e.workspaceName,treeName:e.treeName,path:e.path}})),n}let n=await y(e.contextId);return j(e.contextId,n.path||`/`,t)}function X(e){return e?e.mode===`context`?`Adds to the current context`:`Adds to ${e.path===`/`?`/`:e.path}`:`No destination. Open a workspace path or a context first`}async function Z(e,t){return u(t,await s(e))}function Q(e){let t=e?.mode===`workspace`&&e.treeName===`backends`,n=t?e.workspaceName:``,r=t?e.path:``,i=`${n}\0${r}`,[a,o]=(0,c.useState)(null);return(0,c.useEffect)(()=>{if(!t)return;let e=!1;return Z(n,r).then(t=>{e||o({key:i,destination:t})}).catch(t=>{e||o({key:i,error:t instanceof Error?t.message:`Unable to load backend`})}),()=>{e=!0}},[t,n,r,i]),{isBackend:t,loading:t&&a?.key!==i,destination:a?.key===i?a.destination:void 0,error:a?.key===i?a.error:void 0}}var ne=33554432,$=8388608,re=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),ie=class{h=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]);block=new Uint8Array(64);blockLen=0;bytesTotal=0;w=new Uint32Array(64);update(e){this.bytesTotal+=e.length;let t=0;if(this.blockLen>0){let n=64-this.blockLen,r=Math.min(n,e.length);this.block.set(e.subarray(0,r),this.blockLen),this.blockLen+=r,t=r,this.blockLen===64&&(this.compress(this.block,0),this.blockLen=0)}for(;t+64<=e.length;)this.compress(e,t),t+=64;t<e.length&&(this.block.set(e.subarray(t),0),this.blockLen=e.length-t)}digestHex(){let e=this.bytesTotal*8,t=new Uint8Array((this.blockLen<56?64:128)-this.blockLen);t[0]=128;let n=new DataView(t.buffer);n.setUint32(t.length-8,Math.floor(e/4294967296),!1),n.setUint32(t.length-4,e>>>0,!1),this.update(t);let r=``;for(let e=0;e<8;e++)r+=this.h[e].toString(16).padStart(8,`0`);return r}compress(e,t){let n=this.w;for(let r=0;r<16;r++){let i=t+r*4;n[r]=e[i]<<24|e[i+1]<<16|e[i+2]<<8|e[i+3]}for(let e=16;e<64;e++){let t=n[e-15],r=n[e-2],i=(t>>>7|t<<25)^(t>>>18|t<<14)^t>>>3,a=(r>>>17|r<<15)^(r>>>19|r<<13)^r>>>10;n[e]=n[e-16]+i+n[e-7]+a>>>0}let r=this.h,i=r[0],a=r[1],o=r[2],s=r[3],c=r[4],l=r[5],u=r[6],d=r[7];for(let e=0;e<64;e++){let t=(c>>>6|c<<26)^(c>>>11|c<<21)^(c>>>25|c<<7),r=c&l^~c&u,f=d+t+r+re[e]+n[e]>>>0,p=((i>>>2|i<<30)^(i>>>13|i<<19)^(i>>>22|i<<10))+(i&a^i&o^a&o)>>>0;d=u,u=l,l=c,c=s+f>>>0,s=o,o=a,a=i,i=f+p>>>0}r[0]=r[0]+i>>>0,r[1]=r[1]+a>>>0,r[2]=r[2]+o>>>0,r[3]=r[3]+s>>>0,r[4]=r[4]+c>>>0,r[5]=r[5]+l>>>0,r[6]=r[6]+u>>>0,r[7]=r[7]+d>>>0}};function ae(e){return Array.from(new Uint8Array(e),e=>e.toString(16).padStart(2,`0`)).join(``)}async function oe(e,t){if(e.size<=ne&&crypto?.subtle){let n=await crypto.subtle.digest(`SHA-256`,await e.arrayBuffer());return t?.(1),ae(n)}let n=new ie;for(let r=0;r<e.size;r+=$){let i=await e.slice(r,r+$).arrayBuffer();n.update(new Uint8Array(i)),t?.(Math.min(1,(r+i.byteLength)/e.size))}return n.digestHex()}async function se(e){let t=new TextEncoder().encode(e),n=await crypto.subtle.digest(`SHA-256`,t);return[...new Uint8Array(n)].map(e=>e.toString(16).padStart(2,`0`)).join(``)}export{D as A,m as B,R as C,x as D,j as E,S as F,u as H,h as I,g as L,L as M,ee as N,N as O,P,f as R,_ as S,F as T,d as V,O as _,K as a,M as b,q as c,te as d,b as f,w as g,y as h,Y as i,z as j,k,H as l,A as m,se as n,Z as o,C as p,X as r,J as s,oe as t,Q as u,E as v,I as w,T as x,B as y,p as z};
@@ -0,0 +1 @@
1
+ import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{St as t,wt as n,xt as r}from"./react-DQazvoR7.js";import{Ot as i}from"./ui-BX_B5WCf.js";import{_ as a,a as o,b as s,c,i as l,s as u,t as d,u as f,x as p}from"./alert-dialog-CI8w9egc.js";var m=e(n(),1),h=t(),g=(e,t)=>`${a.workspaces}/${encodeURIComponent(e)}/trees/${encodeURIComponent(t)}/subtree`;function _(e,t,n,r){return f.post(`${g(e,t)}/export`,{path:n,dependencies:r})}function v(e,t,n,r,i){return f.post(`${g(e,t)}/import`,{parentPath:n,name:r,archive:i})}async function y(e,t,n,r){for(;;){let i=await f.get(`${g(e,t)}/jobs/${encodeURIComponent(n)}`,{cache:`no-store`});if(r(i),i.status===`failed`)throw Error(i.error?.message||`Subtree transfer failed`);if(i.status===`done`)return i;await new Promise(e=>setTimeout(e,750))}}var b=r();function x(e){let t=document.createElement(`div`);document.body.appendChild(t);let n=(0,h.createRoot)(t),r=()=>{n.unmount(),t.remove()};n.render((0,b.jsx)(S,{...e,onClose:r}))}function S({mode:e,workspaceId:t,treeName:n,path:r,onImported:a,onClose:f}){let[h,g]=(0,m.useState)(`related`),[x,S]=(0,m.useState)(null),[C,w]=(0,m.useState)(``),[T,E]=(0,m.useState)(!1),[D,O]=(0,m.useState)(``),[k,A]=(0,m.useState)(null),j=k?.status===`done`&&e===`import`?k.result:null,M=async e=>{if(e){E(!0),O(``),S(null),A(null);try{if(e.size>125829120)throw Error(`This export exceeds the 120 MB upload limit.`);let t=JSON.parse(await e.text());if(t.format!==`canvas-subtree`||t.version!==1||!Array.isArray(t.nodes)||!t.nodes[0]||!Array.isArray(t.documents))throw Error(`Choose a Canvas subtree export file.`);S(t),w(t.nodes[0].name===`/`?t.source.tree.name:t.nodes[0].name)}catch(e){O(e instanceof Error?e.message:`Could not read export`)}finally{E(!1)}}},N=async()=>{E(!0),O(``);try{let i=k?.status===`running`?k:e===`export`?await _(t,n,r,h):await v(t,n,r,C,x);A(i);let o=await y(t,n,i.id,A);e===`export`?S(o.result):a()}catch(t){O(t instanceof Error?t.message:`Subtree transfer failed`),e===`import`&&a()}finally{E(!1)}},P=()=>{if(!x)return;let e=URL.createObjectURL(new Blob([JSON.stringify(x)],{type:`application/json`})),t=document.createElement(`a`);t.href=e,t.download=`${(x.nodes[0].name===`/`?x.source.tree.name:x.nodes[0].name).replace(/[^\p{L}\p{N}._-]/gu,`_`)}.canvas-subtree.json`,t.click(),setTimeout(()=>URL.revokeObjectURL(e),1e3)},F=(0,m.useMemo)(()=>x?new Set(x.nodes.flatMap(e=>e.documentIds)).size:0,[x]);return(0,b.jsx)(d,{open:!0,onOpenChange:e=>{!e&&!T&&f()},children:(0,b.jsxs)(l,{children:[(0,b.jsxs)(u,{children:[(0,b.jsx)(c,{children:e===`export`?`Export subtree`:`Import subtree`}),(0,b.jsxs)(o,{children:[e===`export`?`${n}:${r}`:`Destination: ${n}:${r}`,`. Includes document records, folder structure, and relationships. Physical files are copied separately.`]})]}),e===`export`&&!x&&(0,b.jsxs)(`label`,{className:`grid gap-2 text-sm`,children:[`Include`,(0,b.jsxs)(`select`,{disabled:T||k?.status===`running`,value:h,onChange:e=>g(e.target.value),className:`rounded-md border bg-background p-2`,children:[(0,b.jsx)(`option`,{value:`related`,children:`Subtree + attachments and contacts`}),(0,b.jsx)(`option`,{value:`none`,children:`Subtree only`})]}),(0,b.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Supporting records keep their relationships. Their other folders, unrelated messages, and reply chains are excluded.`})]}),e===`import`&&!j&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(s,{type:`file`,accept:`.json,application/json`,disabled:T||k?.status===`running`,"aria-label":`Subtree export file`,onChange:e=>void M(e.target.files?.[0])}),x&&(0,b.jsxs)(`label`,{className:`grid gap-2 text-sm`,children:[`Folder name`,(0,b.jsx)(s,{value:C,disabled:T||k?.status===`running`,onChange:e=>w(e.target.value)})]})]}),x&&(0,b.jsxs)(`p`,{className:`text-sm`,children:[x.nodes.length,` folders, `,F,` subtree documents, and `,x.documents.length-F,` supporting records.`,x.summary?.externalRelations>0&&` ${x.summary.externalRelations} references point outside this export.`]}),T&&(0,b.jsxs)(`div`,{role:`status`,className:`flex items-center gap-2 text-sm`,children:[(0,b.jsx)(i,{className:`h-4 w-4 animate-spin`}),(0,b.jsx)(`span`,{children:k?`${k.phase.charAt(0).toUpperCase()}${k.phase.slice(1)}${k.total?`: ${k.received} / ${k.total}`:`…`}`:`Starting…`})]}),j&&(0,b.jsxs)(`div`,{role:`status`,className:`space-y-2 text-sm`,children:[(0,b.jsxs)(`p`,{children:[`Imported `,j.documents,` documents into `,j.path,`. Reused `,j.reused,` matching records.`]}),(0,b.jsx)(`p`,{children:`Copy the files into the destination backend and run its sync. Matching checksums reconnect the imported file records.`}),j.unresolvedRelations>0&&(0,b.jsxs)(`p`,{children:[j.unresolvedRelations,` external references were kept as migration metadata because their target records are not present.`]})]}),D&&(0,b.jsx)(`p`,{role:`alert`,className:`text-sm text-destructive`,children:D}),(0,b.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,b.jsx)(p,{variant:`outline`,disabled:T,onClick:f,children:`Close`}),e===`export`&&x?(0,b.jsx)(p,{onClick:P,children:`Download export`}):!j&&(0,b.jsx)(p,{disabled:T||e===`import`&&(!x||!C.trim()||C.includes(`/`)),onClick:()=>void N(),children:D?`Retry`:e===`export`?`Create export`:`Import subtree`})]})]})})}export{x as showSubtreeTransfer};
@@ -0,0 +1,3 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/MarkdownEditor-Dr8VNJNY.js","assets/rolldown-runtime-C0FnF6B9.js","assets/react-DQazvoR7.js","assets/ui-BX_B5WCf.js","assets/utils-2pl1SbIp.js","assets/utils-BxVxyehK.js","assets/punycode.es6-ZbLrB_Dn.js","assets/use-theme-pnVLU4Kg.js","assets/MarkdownEditor-ByK7DHQ0.css"])))=>i.map(i=>d[i]);
2
+ import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{wt as t,xt as n}from"./react-DQazvoR7.js";import{t as r}from"./preload-helper-Czpn1I53.js";import{t as i}from"./utils-2pl1SbIp.js";import{v as a}from"./alert-dialog-CI8w9egc.js";import{a as o,g as s,h as c,r as l,u}from"./blobs-DS4_Kfmr.js";import{Kt as d,L as f,M as p,R as m,j as h,pn as g}from"./workspace-DtHtsT4U.js";var _=e(t(),1),v=n(),y=`data/schema/message/email`,b=`data/schema/tab`,x=`data/schema/task`;function S(e,t){let n=String(e||``).replace(/\s+/g,` `).trim();return n?n.length>t?`${n.slice(0,t)}...`:n:``}function C(e){return String(e||``).replace(/```[\s\S]*?```/g,` `).replace(/`([^`]*)`/g,`$1`).replace(/!\[([^\]]*)\]\([^)]*\)/g,`$1`).replace(/\[([^\]]*)\]\([^)]*\)/g,`$1`).replace(/^#{1,6}\s+/gm,``).replace(/^\s*>\s?/gm,``).replace(/^\s*[-*+]\s+/gm,``).replace(/(\*\*|__|\*|_|~~)/g,``)}function w(e){if(!e)return``;if(typeof e==`string`)return e;if(Array.isArray(e))return e.map(w).filter(Boolean).join(`, `);if(typeof e==`object`){let t=e,n=String(t.address||``).trim(),r=String(t.name||``).trim();return r&&n&&r!==n?`${r} <${n}>`:r||n}return``}function T(e){let t=Array.isArray(e?.channels)?e.channels.length:0,n=Array.isArray(e?.identifiers)?e.identifiers.length:0,r=Array.isArray(e?.organizations)?e.organizations.length:0;return[t?`${t} channel${t===1?``:`s`}`:``,n?`${n} identifier${n===1?``:`s`}`:``,r?`${r} organization${r===1?``:`s`}`:``].filter(Boolean).join(` · `)}function E(e){let t=String(e?.displayName||``).trim();if(t)return t;let n=e?.name;if(!n||typeof n!=`object`)return String(n||``).trim();let r=n;return[r.prefix,r.given,r.middle,r.family,r.suffix].map(e=>String(e||``).trim()).filter(Boolean).join(` `)}function D(e){let t=String(e?.primaryEmail||``).trim();if(t)return t;let n=Array.isArray(e?.channels)?e.channels:[],r=n.find(e=>e?.kind===`email`&&e?.primary)||n.find(e=>e?.kind===`email`);return String(r?.value||``).trim()}function O(e){try{let t=new URL(e);return`${t.hostname}${t.pathname}`}catch{return e}}function k(e){return e.schema===`data/schema/file`&&String(e.metadata?.contentType||``).startsWith(`image/`)}var A=/^(imaps?|pop3s?|mailto|graph|ews|news|nntp):/i;function j(e){if(!e||A.test(e))return``;let t=e.replace(/^[a-z][a-z0-9+.-]*:\/\//i,``),n=t.indexOf(`/`),r=(n>=0?t.slice(n+1):t).split(`/`).filter(Boolean).pop();if(!r)return``;let i;try{i=decodeURIComponent(r)}catch{i=r}return/^stored:\/\//i.test(e)&&!M(i)?``:i}function M(e){return e.length>0&&!/^[a-f0-9]{12,}$/i.test(e)&&!/^[a-f0-9]{16,}\.[A-Za-z0-9]{1,12}$/i.test(e)}function N(e){return typeof e.comment==`string`?e.comment.trim():``}function P(e){let t=String(e.metadata?.filename||``).trim();if(t)return t;let n=String(e.data?.filename||``).trim();if(n)return n;let r=(e.locations||[]).filter(Boolean),i=r.find(e=>/^stored:\/\/workspace:/i.test(e.url||``)),a=String(i?.metadata?.filename||``).trim();if(a)return a;let o=[...r].sort((e,t)=>String(e.url||``).localeCompare(String(t.url||``))),s=o.find(e=>String(e.metadata?.filename||``).trim());if(s)return String(s.metadata?.filename||``).trim();for(let e of o){let t=j(e.url);if(t)return t}return``}function F(e){let t=e.data;for(let e of[t.url,t.htmlUrl,t.htmlLink])if(typeof e==`string`&&/^https?:\/\//i.test(e))return e;for(let t of e.locations||[])if(typeof t?.url==`string`&&/^https?:\/\//i.test(t.url))return t.url;return null}function I(e){let t=e.schema===y,n=e.schema===b,r=e.schema.split(`/`).pop()||e.schema;if(t)return{title:S(e.data.title||e.data.name||e.data.subject,160)||`Email ${e.id}`,preview:S(e.data.bodyPreview||e.data.body||``,140),subtitle:S(w(e.data.from),120),icon:`mail`,isExternal:!1,schemaLabel:r};if(e.schema===`data/schema/message`){let t=e.data.sender,n=e.data.channel;return{title:S(e.data.text,160)||`Message`,preview:S(e.data.text,400),subtitle:[t?.name||t?.displayName||t?.username||t?.id,n?.name||n?.id].filter(Boolean).join(` · `),icon:`mail`,isExternal:!1,schemaLabel:r}}if(n){let t=String(e.data.title||e.data.name||``).trim(),n=String(e.data.url||``).trim();return{title:t||O(n)||`Document ${e.id}`,preview:S(e.data.description||e.data.summary||n,140),subtitle:n,icon:`globe`,isExternal:!!n,schemaLabel:r}}if(e.schema===x||e.schema.startsWith(`${x}/`)){let t=String(e.data.status||(e.data.completed?`completed`:`pending`)).trim(),n=e.data.dueDate?new Date(String(e.data.dueDate)):null,i=n&&!Number.isNaN(n.getTime())?n.toLocaleDateString(void 0,{month:`short`,day:`numeric`}):``;return{title:S(e.data.title||e.data.name,160)||`Task ${e.id}`,preview:S(C(e.data.description||e.data.summary),400),subtitle:[t,i?`due ${i}`:``].filter(Boolean).join(` · `),icon:`file`,isExternal:!1,schemaLabel:r}}if(e.schema===`data/schema/identity`||e.schema.startsWith(`data/schema/identity/`)){let t=D(e.data),n=s(e.schema,u);return{title:S(E(e.data),160)||`Identity ${e.id}`,preview:S(T(e.data),140),subtitle:[t,n].filter(Boolean).join(` · `),icon:t?`mail`:`file`,isExternal:!1,schemaLabel:r}}if(e.schema===`data/schema/file`){let t=P(e),n=String(e.metadata?.contentType||``).trim(),i=e.metadata?.size,a=[n,Number.isFinite(i)?`${i} bytes`:``].filter(Boolean);return{title:S(t,160)||`File ${e.id}`,preview:a.join(` · `),subtitle:t,icon:`file`,isExternal:!1,schemaLabel:r}}return{title:S(e.data.title||e.data.name||e.data.subject||P(e),160)||`Document ${e.id}`,preview:S(C(e.data.content||e.data.description||e.data.summary||e.data.bodyPreview||e.data.body),400),subtitle:``,icon:`file`,isExternal:!1,schemaLabel:r}}var L=(0,_.createContext)(null);function R(){return(0,_.useContext)(L)}function z(e,t,n={}){let r=new URLSearchParams;n.download&&r.set(`download`,`1`),n.url&&r.set(`url`,n.url);let i=r.toString();return`${a}/pub/c/${encodeURIComponent(e)}/documents/${t}/content${i?`?${i}`:``}`}async function B(e,t,n=256){let r=await fetch(`${a}/pub/c/${encodeURIComponent(e)}/documents/${t}/thumbnail?size=${n}`);if(!r.ok)throw Error(`HTTP ${r.status}`);let i=r.headers.get(`content-type`)||`image/webp`;return{blob:await r.blob(),mime:i}}async function V(e,t,n={}){let r=await fetch(z(e,t,n));if(!r.ok)throw Error(`HTTP ${r.status}`);let i=r.headers.get(`content-type`)||`application/octet-stream`;return{blob:await r.blob(),mime:i}}async function H(e,t,n,r={}){let{blob:i}=await V(e,t,{...r}),a=URL.createObjectURL(i),o=document.createElement(`a`);o.href=a,o.download=n,document.body.appendChild(o),o.click(),o.remove(),setTimeout(()=>URL.revokeObjectURL(a),3e4)}function U(e){let t=R();return{isPublic:t!=null,fetchBlob:(n,r={})=>t?V(t,n,r):f(e,n,r),fetchThumbnail:(n,r=256,i)=>t?B(t,n,r):m(e,n,r,i),download:(n,r,i={})=>t?H(t,n,r,i):p(e,n,r,i),streamUrl:(n,r={})=>t?z(t,n,r):h(e,n,r),mintTicket:n=>t?Promise.resolve(!0):d(e,n)}}var W=e=>({blobUrl:null,blob:null,text:null,mime:null,error:null,loading:e});function G(e,t,{url:n,mode:r=`blob`,enabled:i=!0,maxTextLength:a=2e5,typeHint:o,version:s=null}={}){let{isPublic:c,fetchBlob:l}=U(e),u=`${c?`pub`:`ws`}:${e}:${t}:${n??``}:${r}:${i}:${o??``}:${s??``}`,[d,f]=(0,_.useState)(W(i)),[p,m]=(0,_.useState)(u);return u!==p&&(m(u),f(W(i))),(0,_.useEffect)(()=>{if(!i)return;let e=!1,c=null;return l(t,{...n?{url:n}:{},...s?{version:s}:{}}).then(async({blob:t,mime:n})=>{if(!e){if(r===`text`){let r=await t.text();e||f({blobUrl:null,blob:null,text:r.slice(0,a),mime:n,error:null,loading:!1})}else{let r=o&&(!t.type||t.type===`application/octet-stream`),i=r?t.slice(0,t.size,o):t;if(c=URL.createObjectURL(i),e){URL.revokeObjectURL(c),c=null;return}f({blobUrl:c,blob:i,text:null,mime:r?o:n,error:null,loading:!1})}}}).catch(t=>{e||f({blobUrl:null,blob:null,text:null,mime:null,error:String(t instanceof Error?t.message:t),loading:!1})}),()=>{e=!0,c&&URL.revokeObjectURL(c)}},[u]),d}function K(e,t,{url:n,enabled:r=!0}={}){let{isPublic:i,streamUrl:a,mintTicket:o}=U(e),s=`${i?`pub`:`ws`}:${e}:${t}:${n||``}:${r}`,[c,l]=(0,_.useState)({src:null,error:null,loading:!0}),[u,d]=(0,_.useState)(s);return s!==u&&(d(s),l({src:null,error:null,loading:!0})),(0,_.useEffect)(()=>{if(!r)return;let e=!1;return o(t).then(r=>{e||l(r?{src:a(t,{url:n}),error:null,loading:!1}:{src:null,error:`Could not authorize stream`,loading:!1})}).catch(t=>{e||l({src:null,error:t instanceof Error?t.message:String(t),loading:!1})}),()=>{e=!0}},[s]),c}var q=(0,_.lazy)(()=>r(()=>import(`./MarkdownEditor-Dr8VNJNY.js`).then(e=>({default:e.MarkdownEditor})),__vite__mapDeps([0,1,2,3,4,5,6,7,8]))),J=(0,v.jsx)(`div`,{className:`rounded-md border border-input p-3 text-sm text-muted-foreground`,children:`Loading editor…`});function Y(e){return(0,v.jsx)(_.Suspense,{fallback:J,children:(0,v.jsx)(q,{...e})})}function X({kind:e,value:t,onChange:n,placeholder:r,rows:a=16,fill:o=!1}){return e===`markdown`?(0,v.jsx)(Y,{value:t,onChange:n,placeholder:r,fill:o}):(0,v.jsx)(`textarea`,{value:t,onChange:e=>n(e.target.value),rows:o?void 0:a,placeholder:r,spellCheck:!1,className:i(`flex w-full rounded-md border border-input bg-transparent px-3 py-2 font-mono text-xs leading-relaxed shadow-elevation-1 transition-colors placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring`,o&&`h-full min-h-0 resize-none`)})}var Z=1e6;function Q(e){if(e.schema===`data/schema/note`)return`markdown`;if(e.schema!==`data/schema/file`)return null;let t=c(String(e.metadata?.contentType??``),P(e));return t===`markdown`?`markdown`:t===`text`?`text`:null}function $(e){return e.schema===`data/schema/file`&&Q(e)!=null}function ee(e){let t=Number(e.metadata?.size??0);return Number.isFinite(t)&&t>1e6}var te=`workspace:data`;function ne(e){for(let t of e.locations||[]){let e=/^stored:\/\/([^/]+)\/(.+)$/.exec(String(t?.url||``));if(!(!e||e[1]===te))return{backend:e[1],key:e[2]}}return null}async function re(e,t,n,r={}){let i=P(t)||`document-${t.id}.txt`,a=String(t.metadata?.contentType??``)||(Q(t)===`markdown`?`text/markdown`:`text/plain`),s=n.endsWith(`
3
+ `)?n:`${n}\n`,c=new Blob([s],{type:a}),u=ne(t);if(u){let n=String(t.checksumArray?.[0]??``).replace(/^sha256\//,``),i=await o(e,{driver:`file`,address:u.backend,key:u.key},c,{ifMatch:n||void 0,contentType:a});(r.comment!==void 0||r.metadata!==void 0)&&await g(e,{id:i.docId??t.id,schema:t.schema,schemaVersion:t.schemaVersion,...r.comment===void 0?{}:{comment:r.comment},...r.metadata===void 0?{}:{metadata:r.metadata}});return}let d=await l(e,c);await g(e,{id:t.id,schema:t.schema,schemaVersion:t.schemaVersion,...r.comment===void 0?{}:{comment:r.comment},checksumArray:[`sha256/${d.checksum}`],locations:[{url:d.url,metadata:{filename:i}}],metadata:{contentType:a,size:d.size,...r.metadata??{}}})}export{P as _,ee as a,G as c,z as d,U as f,F as g,I as h,$ as i,K as l,N as m,Z as n,X as o,R as p,Q as r,Y as s,re as t,L as u,k as v};
@@ -0,0 +1 @@
1
+ import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{St as t,wt as n,xt as r}from"./react-DQazvoR7.js";import{_ as i,a,b as o,c as s,i as c,s as l,t as ee,u,v as d,x as f}from"./alert-dialog-CI8w9egc.js";var p=e(n(),1),m=t(),h=r();function te(e){return new Promise((t,n)=>{let r=document.createElement(`div`);document.body.appendChild(r);let i=(0,m.createRoot)(r),u=e=>{i.unmount(),r.remove(),e?t(e):n(Error(`Workspace start cancelled`))};function d(){let[t,n]=(0,p.useState)(``);return(0,h.jsx)(ee,{open:!0,onOpenChange:e=>{e||u()},children:(0,h.jsxs)(c,{children:[(0,h.jsxs)(l,{children:[(0,h.jsx)(s,{children:`Start protected workspace`}),(0,h.jsx)(a,{children:e===`workspace`?`Enter the workspace PIN/password or recovery key to start.`:`Unlock integrations, or start with authenticated integrations unavailable.`})]}),(0,h.jsxs)(`form`,{className:`space-y-4`,onSubmit:e=>{e.preventDefault(),u({passphrase:t})},children:[(0,h.jsxs)(`label`,{className:`space-y-2 block text-sm`,children:[`PIN/password or recovery key`,(0,h.jsx)(o,{autoFocus:!0,type:`password`,autoComplete:`current-password`,value:t,onChange:e=>n(e.target.value)})]}),(0,h.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,h.jsx)(f,{type:`submit`,disabled:!t,children:`Unlock and start`}),e===`secrets`&&(0,h.jsx)(f,{type:`button`,variant:`outline`,onClick:()=>u({withoutSecrets:!0}),children:`Start without integrations`}),(0,h.jsx)(f,{type:`button`,variant:`ghost`,onClick:()=>u(),children:`Cancel`})]})]})]})})}i.render((0,h.jsx)(d,{}))})}var ne={gh:`GitHub`,slack:`Slack`,gcal:`Google Calendar`,caldav:`CalDAV`,msteams:`Microsoft Teams`};function re(e){for(let t of e.locations||[]){let e=t?.url;if(typeof e!=`string`)continue;let n=e.indexOf(`://`);if(n<=0)continue;let r=e.slice(0,n),i=ne[r];if(i)return{scheme:r,label:i,url:e}}return null}var g=new Map,_=new Set;function v(){for(let e of _)e()}function ie(e){g.set(e,(g.get(e)||0)+1),v()}function ae(e){let t=(g.get(e)||0)-1;t>0?g.set(e,t):g.delete(e),v()}function oe(e){return _.add(e),()=>{_.delete(e)}}function se(e){let t=(0,p.useCallback)(()=>e!=null&&g.has(e),[e]);return(0,p.useSyncExternalStore)(oe,t,()=>!1)}function ce(e){let t=se(e.id),n=re(e),r=t&&n!=null;return{mirror:n,replicating:r,label:r?`Replicating to ${n.label}…`:``}}var y=`context`,b=`data/schema/identity`,le=e=>e===`directory`||e===`backends`?`directory`:`context`;function ue(e,t){if(!e||t===`/`)return null;let n=t.split(`/`).filter(Boolean),r=e;for(let e of n)if(r=r?.children?.find(t=>t.name===e),!r)return null;return r??null}var x=new Map,S=new Map;function C(e,t=`/`,n=y,r=`context`){e.append(`treeNameOrTreeId`,n),e.append(`treeType`,r),t&&e.append(`context`,t)}var w=[`includes`,`references`,`derived-from`,`mentions`,`replies-to`,`depicts`,`authored-by`,`member-of`];function T(e,t=[]){t.filter(Boolean).forEach(t=>e.append(`allOf`,t))}function E(e,t=[]){t.filter(Boolean).forEach(t=>e.append(`anyOf`,t))}function D(e,t=[]){t.filter(Boolean).forEach(t=>e.append(`noneOf`,t))}function O(e,t=[]){t.filter(Boolean).forEach(t=>e.append(`filters`,t))}function k(e,t){for(let n of t??[])e.append(`ids`,String(n))}function de(e,t){for(let n of t??[]){let t=n.op===`allOf`?`+`:n.op===`noneOf`?`!`:``;e.append(`rel`,`${t}${n.p}:${n.of}:${n.dir??`out`}`)}}function A(e,t,n){let r=(t&&t.length?t:n?[n]:[]).map(e=>e.trim()).filter(Boolean);for(let t of r)e.append(`q`,t)}function fe(e,t=y){return`${i.workspaces}/${e}/trees/${encodeURIComponent(t)}`}function j(e,t=y){return`${e}\0${t}`}function pe(e){return String(e||`/`).split(`/`).filter(Boolean).map(encodeURIComponent).join(`/`)}function M(e,t,n){let r=pe(n);return`${fe(e,t)}/path/${r}`}async function me(e){let t=await u.get(`${i.workspaces}/${e}`);return t&&`workspace`in t?t.workspace:t}async function N(){try{let e=await u.get(i.workspaces);return Array.isArray(e)?e:(console.warn(`listWorkspaces: response.payload is not an array:`,e),[])}catch(e){throw console.error(`Failed to list workspaces:`,e),e}}async function P(){return u.post(`${i.workspaces}/scan`)}async function F(e){try{return await u.post(i.workspaces,e)}catch(e){throw console.error(`Failed to create workspace:`,e),e}}var I={resolving:`Resolving token on the remote server…`,exporting:`Remote server is packing the workspace…`,downloading:`Downloading archive…`,extracting:`Extracting…`,loading:`Validating and loading…`,done:`Done`};async function L(e){return u.get(`${i.workspaces}/import/jobs/${encodeURIComponent(e)}`)}async function R(e,t,{intervalMs:n=1500,signal:r}={}){for(;;){if(r?.aborted)throw Error(`Import tracking cancelled`);let i=await L(e);if(t?.(i),i.status===`done`){if(!i.result)throw Error(`Import finished without returning a workspace`);return i.result}if(i.status===`failed`)throw Error(i.error?.message||`Import failed`);await new Promise(e=>setTimeout(e,n))}}async function z(e,t,n,r={}){return R((await u.post(`${i.workspaces}/import`,{url:e,token:t,...r})).id,n)}async function he(){return u.get(`${i.workspaces}/remotes`)}async function ge(e,t,n){return u.post(`${i.workspaces}/remotes`,{url:e,token:t,...n?{label:n}:{}})}async function _e(e){await u.delete(`${i.workspaces}/remotes/${encodeURIComponent(e)}`)}async function ve(e,t={}){return u.post(`${i.workspaces}/${e}/export`,{stop:t.stop===!0})}async function ye(e){return u.get(`${i.workspaces}/${e}/exports`)}async function be(e){await u.delete(`${i.workspaces}/exports/${encodeURIComponent(e)}`)}async function xe(e){await u.post(`${i.workspaces}/exports/ticket`);let t=`${i.workspaces}/exports/${encodeURIComponent(e)}`,n=document.createElement(`a`);n.href=t,n.download=e,document.body.appendChild(n),n.click(),n.remove()}async function Se(e,t,n,r={}){return R((await Ce(e,t,r)).id,n)}function Ce(e,t,n={}){let r=localStorage.getItem(`authToken`),a=new URLSearchParams({filename:e.name,...n}),o=`${i.workspaces}/import/upload?${a}`;return new Promise((n,i)=>{let a=new XMLHttpRequest;a.open(`POST`,o,!0),a.withCredentials=!0,r&&a.setRequestHeader(`Authorization`,`Bearer ${r}`),a.setRequestHeader(`Content-Type`,`application/octet-stream`),a.upload.onprogress=e=>{e.lengthComputable&&t&&t(e.loaded/e.total)},a.onload=()=>{let e=null;try{e=JSON.parse(a.responseText)}catch{}let t=e?.payload?.job;a.status>=200&&a.status<300&&t?n(t):i(Error(e?.message||`Import failed (HTTP ${a.status})`))},a.onerror=()=>i(Error(`Upload failed — the connection dropped`)),a.onabort=()=>i(Error(`Upload cancelled`)),a.send(e)})}async function we(e,t,n){let r=await u.post(`${i.workspaces}/import`,{path:e,...t});return`phase`in r?R(r.id,n):r}async function Te(e,t){try{if(!t){let n=await u.get(`${i.workspaces}/${e}/status`),r=n.protection?.mode||`none`;t=n.status!==`active`&&r!==`none`?await te(r):{}}let n=await u.post(`${i.workspaces}/${e}/start`,t);return window.dispatchEvent(new CustomEvent(`workspaces:refresh`)),n}catch(e){throw console.error(`Failed to start workspace:`,e),e}}async function Ee(e){try{let t=await u.post(`${i.workspaces}/${e}/stop`);return V(e),window.dispatchEvent(new CustomEvent(`workspace:stopped`,{detail:{refs:[e]}})),window.dispatchEvent(new CustomEvent(`workspaces:refresh`)),t}catch(e){throw console.error(`Failed to stop workspace:`,e),e}}async function De(e){try{return await u.delete(`${i.workspaces}/${e}`)}catch(e){throw console.error(`Failed to remove workspace:`,e),e}}async function Oe(e){try{return await u.get(`${i.workspaces}/${e}/trees`)||[]}catch(t){throw console.error(`Failed to list workspace trees ${e}:`,t),t}}async function B(e,t){try{return await u.get(`${i.workspaces}/${e}/trees/${encodeURIComponent(t)}`)}catch(n){throw console.error(`Failed to get workspace tree ${e}/${t}:`,n),n}}function V(e,t){if(!e){x.clear(),S.clear();return}if(!t){let t=`${e}\0`;for(let e of x.keys())e.startsWith(t)&&x.delete(e);for(let e of S.keys())e.startsWith(t)&&S.delete(e);return}let n=j(e,t);x.delete(n),S.delete(n)}var ke=`.trash`;function Ae(e){return e?Array.isArray(e.children)?{...e,children:e.children.filter(e=>e?.name!==ke)}:e:null}async function je(e,t,n={}){let r=j(e,t);if(!n.force&&x.has(r))return x.get(r);if(!n.force&&S.has(r))return S.get(r);let i=B(e,t).then(e=>{let t=Ae(e);return S.get(r)===i&&x.set(r,t),t}).finally(()=>{S.get(r)===i&&S.delete(r)});return S.set(r,i),i}async function H(e,t=`/`,n=[],r={}){try{let a=new URLSearchParams,o=r.scope===`workspace`;o&&a.append(`scope`,`workspace`),r.applyCanvasSpec===!1&&a.append(`applyCanvasSpec`,`false`),a.append(`treeNameOrTreeId`,r.treeName||`context`),r.treeType&&a.append(`treeType`,r.treeType),t&&!o&&a.append(`context`,t),T(a,n),E(a,r.anyOf),D(a,r.noneOf),O(a,r.filters),de(a,r.rel),k(a,r.ids),r.limit!==void 0&&a.append(`limit`,r.limit.toString()),r.offset!==void 0&&a.append(`offset`,r.offset.toString()),r.page!==void 0&&a.append(`page`,r.page.toString()),r.debug&&a.append(`debug`,`true`),r.debug&&r.debugLimit&&a.append(`debugLimit`,String(r.debugLimit)),r.sortBy&&a.append(`sortBy`,r.sortBy),r.order&&a.append(`order`,r.order),A(a,r.queries,r.q);let s=a.toString(),c=`${i.workspaces}/${e}/documents${s?`?`+s:``}`;return await u.getEnvelope(c)}catch(t){throw console.error(`Failed to get workspace documents ${e}:`,t),t}}async function Me(e,t,n=y,r={}){let i=n===`directory`?`directory`:`context`;return H(e,t,r.allOf||[],{treeName:n,treeType:i,limit:r.limit,page:r.page,offset:r.offset,q:r.q,queries:r.queries,anyOf:r.anyOf,noneOf:r.noneOf,filters:r.filters,ids:r.ids,sortBy:r.sortBy,order:r.order,applyCanvasSpec:r.applyCanvasSpec})}async function Ne(e,t,n,r={}){try{let a=new URLSearchParams;r.limit!==void 0&&a.append(`limit`,r.limit.toString()),r.offset!==void 0&&a.append(`offset`,r.offset.toString()),r.page!==void 0&&a.append(`page`,r.page.toString()),A(a,r.queries,r.q),T(a,r.allOf),E(a,r.anyOf),D(a,r.noneOf),O(a,r.filters),k(a,r.ids),r.sortBy&&a.append(`sortBy`,r.sortBy),r.order&&a.append(`order`,r.order);let o=a.toString(),s=`${i.workspaces}/${e}/trees/${encodeURIComponent(t)}/layers/${encodeURIComponent(n)}/documents${o?`?`+o:``}`;return await u.getEnvelope(s)}catch(r){throw console.error(`Failed to get workspace layer documents ${e}/${t}/${n}:`,r),r}}async function Pe(e,t){try{return await u.patch(`${i.workspaces}/${e}`,t)}catch(e){throw console.error(`Failed to update workspace:`,e),e}}async function Fe(e,t,n=!0,r=y,i=`context`){try{return await u.put(M(e,r,t),{type:i,autoCreateLayers:n}),!0}catch(e){throw console.error(`Failed to insert workspace path ${t}:`,e),e}}async function Ie(e,t,n=y,r={}){try{return await u.put(M(e,n,t),{type:`canvas`,...r}),!0}catch(e){throw console.error(`Failed to create workspace canvas ${t}:`,e),e}}async function Le(e,t,n,r,i){let a={metadata:r};return i&&(a.querySpec=i),await u.patch(M(e,n,t),a),!0}async function Re(e,t,n=y){return await u.post(`${d}/pub/c`,{workspaceId:e,path:t,treeName:n})}async function ze(e,t,n=y){let r=new URLSearchParams({workspaceId:e,path:t,treeName:n});return await u.get(`${d}/pub/c?${r.toString()}`)}async function Be(e){return await u.delete(`${d}/pub/c/${encodeURIComponent(e)}`),!0}async function Ve(e){let t=await u.get(`${i.workspaces}/${e}/shares`);return{publicCanvasShares:t?.publicCanvasShares||[],emailShares:t?.emailShares||[]}}async function He(e,t){return await u.delete(`${i.workspaces}/${e}/shares/public-canvas/${encodeURIComponent(t)}`),!0}async function Ue(e,t,n,r=y){try{return await u.patch(M(e,r,t),n),!0}catch(e){throw console.error(`Failed to update workspace path ${t}:`,e),e}}async function We(e,t,n=!1,r=y,i=!1,a=!1){try{let o=new URLSearchParams({recursive:n.toString()});return i&&o.set(`purge`,`true`),a&&o.set(`destroy`,`true`),await u.delete(`${M(e,r,t)}?${o.toString()}`),!0}catch(e){throw console.error(`Failed to remove workspace path ${t}:`,e),e}}async function Ge(e,t,n,r=!1,i=y,a,o={}){try{return await u.patch(M(e,i,t),{to:n,recursive:r,...o.mergeDown?{mergeDown:!0}:{},...a&&a!==i?{targetTreeNameOrTreeId:a}:{}}),!0}catch(e){throw console.error(`Failed to move workspace path from ${t} to ${n}:`,e),e}}async function Ke(e,t,n,r=!1,i=y,a){try{return await u.post(M(e,i,t),{to:n,recursive:r,...a&&a!==i?{targetTreeNameOrTreeId:a}:{}}),!0}catch(e){throw console.error(`Failed to copy workspace path from ${t} to ${n}:`,e),e}}async function qe(e,t,n,r=y,a=`context`){try{let o=W(Array.isArray(n)?n:[n]),s=performance.now();return await u.post(`${i.workspaces}/${e}/documents`,{documentIds:o,treeNameOrTreeId:r,treeType:a,context:t}),console.info(`[paste] linked ${o.length} document(s) → ${r}:${t} in ${Math.round(performance.now()-s)} ms`),!0}catch(e){throw console.error(`Failed to paste documents to workspace path ${t}:`,e),e}}async function Je(e,t,n,r=y,a=`context`){try{let o=Array.isArray(n)?n:[n],s=await u.post(`${i.workspaces}/${e}/documents`,{documents:o,treeNameOrTreeId:r,treeType:a,context:t});return Array.isArray(s)?s:[]}catch(e){throw console.error(`Failed to import documents to workspace path ${t}:`,e),e}}var U=e=>`${i.workspaces}/${e}/pins`,Ye=(e,t)=>`${e}\0${t}`;async function Xe(e){let t=await u.get(U(e));return Array.isArray(t)?t:[]}async function Ze(e,t,n=y){return u.post(U(e),{path:t,tree:n})}async function Qe(e,t){await u.delete(`${U(e)}/${encodeURIComponent(t)}`)}async function $e(e,t){let n=await u.patch(`${U(e)}/order`,{order:t});return Array.isArray(n)?n:[]}async function et(e,t=y){return await u.get(`${i.workspaces}/${e}/trees/${encodeURIComponent(t)}/layers`)||[]}async function tt(e,t,n,r=y){return await u.patch(`${i.workspaces}/${e}/trees/${encodeURIComponent(r)}/layers/${t}`,{name:n})}async function nt(e,t,n,r=y){return await u.post(`${i.workspaces}/${e}/trees/${encodeURIComponent(r)}/layers/${t}/lock`,{lockBy:n}),!0}async function rt(e,t,n,r=y){return await u.post(`${i.workspaces}/${e}/trees/${encodeURIComponent(r)}/layers/${t}/unlock`,{lockBy:n}),!0}async function it(e,t,n=y){return await u.delete(`${i.workspaces}/${e}/trees/${encodeURIComponent(n)}/layers/${t}`),!0}async function at(e,t,n,r=y){return await u.post(`${i.workspaces}/${e}/trees/${encodeURIComponent(r)}/layers/merge`,{layerId:t,targetLayers:n})}async function ot(e,t,n=y){return(await u.post(`${i.workspaces}/${e}/trees/${encodeURIComponent(n)}/paths/merge-down`,{path:t}))?.data??null}async function st(e,t,n=y){return(await u.post(`${i.workspaces}/${e}/trees/${encodeURIComponent(n)}/paths/subtract-down`,{path:t}))?.data??null}async function ct(e,t,n,r=y){return await u.post(`${i.workspaces}/${e}/trees/${encodeURIComponent(r)}/layers/subtract`,{layerId:t,targetLayers:n})}function W(e){let t=e.map(e=>typeof e==`number`?e:Number(e));if(t.some(e=>!Number.isFinite(e)))throw Error(`Invalid document ID(s): expected numbers (or numeric strings), got ${JSON.stringify(e)}`);return t}async function lt(e,t,n=`/`,r=[],a=y,o=`context`,s={}){let c=new URLSearchParams;C(c,n,a,o),T(c,r),s.trashIfOrphaned&&c.append(`trashIfOrphaned`,`true`);let l=W(t);return await u.delete(`${i.workspaces}/${e}/documents/remove?${c.toString()}`,{headers:{"Content-Type":`application/json`},body:JSON.stringify(l)}),!0}async function ut(e,t,n=`/`,r=[],a=y,o=`context`){let s=new URLSearchParams;C(s,n,a,o),T(s,r);let c=W(t);return await u.delete(`${i.workspaces}/${e}/documents?${s.toString()}`,{headers:{"Content-Type":`application/json`},body:JSON.stringify(c)}),!0}async function dt(e,t){ie(t.id);try{await u.put(`${i.workspaces}/${e}/documents`,{documents:[t]})}finally{ae(t.id)}return!0}async function ft(e,t,n={}){let r={documentIds:W(t)};return n.urls&&(r.urls=n.urls),n.keepDocument&&(r.keepDocument=!0),await u.delete(`${i.workspaces}/${e}/documents/destroy`,{headers:{"Content-Type":`application/json`},body:JSON.stringify(r)})}async function pt(e,t,n){let r=n.folder?.trim().replace(/^\/+|\/+$/g,``),a=n.filename?.trim();return await u.post(`${i.workspaces}/${e}/documents/transfer`,{documentIds:W(t),to:n.to,mode:n.mode??`copy`,...n.keepDocument?{keepDocument:!0}:{},...r?{folder:r}:{},...a?{filename:a}:{},...n.onConflict?{onConflict:n.onConflict}:{}})}function mt(e){return typeof e.capabilities?.paths==`boolean`?e.capabilities.paths:e.kind===`storage`&&e.driver!==`cacache`}async function ht(e,t){return await u.get(`${i.workspaces}/${e}/documents/${t}`)}async function gt(e,t){return await u.get(`${i.workspaces}/${e}/documents/${t}/locations`)||[]}async function _t(e,t,n){let r=n?`?tree=${encodeURIComponent(n)}`:``;return(await u.get(`${i.workspaces}/${e}/documents/${t}/memberships${r}`))?.memberships||[]}async function vt(e,t,n=500){return(await H(e,`/`,[t?`${b}/${t}`:b],{scope:`workspace`,limit:n})).payload||[]}async function yt(e){try{let t=await u.get(`${i.workspaces}/${e}/documents/relations/predicates`);return t?.predicates?.length?t.predicates:[...w]}catch{return[...w]}}async function bt(e,t,n={}){let r=new URLSearchParams;n.resolve===!1&&r.set(`resolve`,`false`),n.offset!==void 0&&r.set(`offset`,String(n.offset)),n.limit!==void 0&&r.set(`limit`,String(n.limit)),n.summary&&r.set(`summary`,`true`);let a=r.size?`?${r}`:``;return await u.get(`${i.workspaces}/${e}/documents/${t}/relations${a}`)??{documentId:Number(t),predicates:[...w],outgoing:[],incoming:[]}}async function xt(e,t,n,r,a=`out`){return await u.post(`${i.workspaces}/${e}/documents/${t}/relations`,{p:n,to:Array.isArray(r)?W(r):r,dir:a}),!0}async function St(e,t,n,r,a=`out`){return await u.delete(`${i.workspaces}/${e}/documents/${t}/relations`,{headers:{"Content-Type":`application/json`},body:JSON.stringify({p:n,to:r,dir:a})}),!0}function G(e,t,n={}){let r=new URLSearchParams;n.version&&r.set(`v`,n.version),n.download&&r.set(`download`,`1`),n.url&&r.set(`url`,n.url);let a=r.toString();return`${i.workspaces}/${e}/documents/${t}/content${a?`?${a}`:``}`}async function Ct(e,t,n=256,r){let a=localStorage.getItem(`authToken`),o=r?`&v=${encodeURIComponent(r)}`:``,s=await fetch(`${i.workspaces}/${e}/documents/${t}/thumbnail?size=${n}${o}`,{headers:a?{Authorization:`Bearer ${a}`}:{}});if(!s.ok)throw Error(`HTTP ${s.status}`);let c=s.headers.get(`content-type`)||`image/webp`;return{blob:await s.blob(),mime:c}}async function wt(e,t,n={}){let r=localStorage.getItem(`authToken`),i=await fetch(G(e,t,n),{headers:r?{Authorization:`Bearer ${r}`}:{}});if(!i.ok)throw Error(`HTTP ${i.status}`);let a=i.headers.get(`content-type`)||`application/octet-stream`;return{blob:await i.blob(),mime:a}}function Tt(e,t,n={}){return G(e,t,n)}async function Et(e,t){let n=localStorage.getItem(`authToken`);return(await fetch(`${i.workspaces}/${e}/documents/${t}/content-ticket`,{method:`POST`,headers:n?{Authorization:`Bearer ${n}`}:{},credentials:`include`})).ok}async function Dt(e,t,n,r={}){let i=localStorage.getItem(`authToken`),a=await fetch(G(e,t,{download:!0,url:r.url}),{headers:i?{Authorization:`Bearer ${i}`}:{}});if(!a.ok)throw Error(`HTTP ${a.status}`);let o=await a.blob(),s=URL.createObjectURL(o),c=document.createElement(`a`);c.href=s,c.download=n,document.body.appendChild(c),c.click(),c.remove(),setTimeout(()=>URL.revokeObjectURL(s),3e4)}async function Ot(e,t=`/`,n=[],r=[],a={},o=y){let s=new URLSearchParams;return s.append(`treeNameOrTreeId`,o),t&&s.append(`context`,t),T(s,n),O(s,r),await u.delete(`${i.workspaces}/${e}/documents/purge?${s.toString()}`)}async function kt(e){try{return await u.get(`${i.workspaces}/${e}/services`)}catch(e){throw console.error(`Failed to get workspace services status:`,e),e}}async function At(e,t){try{return await u.post(`${i.workspaces}/${e}/services/${t}/enable`)}catch(e){throw console.error(`Failed to enable ${t} service:`,e),e}}async function jt(e,t){try{return await u.post(`${i.workspaces}/${e}/services/${t}/disable`)}catch(e){throw console.error(`Failed to disable ${t} service:`,e),e}}var K=e=>`${i.workspaces}/${e}/backends`,q=(e,t,n)=>`${K(e)}/${encodeURIComponent(t)}/${encodeURIComponent(n)}`;async function Mt(e,t){let n=t?`${K(e)}/${encodeURIComponent(t)}`:K(e);return await u.get(n)||[]}async function Nt(e,t,n){return await u.get(`${q(e,t,n)}/usage`)}async function Pt(e){return await u.delete(`${i.workspaces}/${e}/thumbnails`)}async function Ft(e){return await u.get(`${i.workspaces}/${e}/usage`)}function It(e){if(e==null||!Number.isFinite(e))return`—`;if(e<1024)return`${e} B`;let t=[`KB`,`MB`,`GB`,`TB`],n=e,r=`B`;for(let e of t){if(n<1024)break;n/=1024,r=e}return`${n.toFixed(n>=100?0:1)} ${r}`}async function Lt(e,t,n){return await u.post(`${K(e)}/${encodeURIComponent(t)}`,n)}async function Rt(e,t,n,r){return await u.patch(q(e,t,n),r)}async function zt(e,t,n){return await u.delete(q(e,t,n))}async function Bt(e,t,n){return await u.post(`${q(e,t,n)}/sync`)}async function Vt(e,t,n){return await u.post(`${q(e,t,n)}/sync/cancel`)}async function Ht(e,t,n){return await u.post(`${q(e,t,n)}/test`)}async function Ut(e,t,n){return await u.get(`${q(e,t,n)}/containers`)||[]}async function Wt(e,t,n,r,i){return await u.post(`${q(e,t,n)}/containers/${encodeURIComponent(r)}/documents`,i)}async function Gt(e,t,n,r){return await u.post(`${q(e,t,n)}/containers/${encodeURIComponent(r)}/sync`)}async function Kt(e,t,n){return await u.get(`${q(e,t,n)}/containers?available=1`)||[]}async function qt(e,t,n,r){return await u.post(`${q(e,t,n)}/containers`,{folders:r})}async function Jt(e,t,n,r){return await u.delete(`${q(e,t,n)}/containers/${encodeURIComponent(r)}`)}async function Yt(e,t,n,r,i){return await u.patch(`${q(e,t,n)}/containers/${encodeURIComponent(r)}`,{name:i})}function J(e,t){if(!t?.length)return null;let n=`/`+String(e||``).split(`/`).filter(Boolean).join(`/`);for(let e of t)if(e.treePath){if(n===e.treePath)return{backend:e,key:``};if(n.startsWith(e.treePath+`/`))return{backend:e,key:n.slice(e.treePath.length+1)}}return null}function Xt(e,t){let n=J(e,t);if(n)return{driver:n.backend.driver,address:n.backend.address,key:n.key};let r=Y(e);return r?{...r,driver:t?.find(e=>e.address===r.address)?.driver||r.driver}:null}function Y(e,t){let n=J(e,t);if(n)return n.backend.driver===`file`?{driver:`file`,address:n.backend.address,key:n.key}:null;let r=String(e||``).split(`/`).filter(Boolean);return r[0]===`workspace`&&r.length>=2?{driver:`file`,address:`workspace:${r[1]}`,key:r.slice(2).join(`/`)}:r[0]===`device`&&r.length>=3?{driver:`file`,address:r[2],key:r.slice(3).join(`/`)}:r[0]===`file`&&r.length>=2?{driver:`file`,address:r[1],key:r.slice(2).join(`/`)}:null}async function Zt(e,t,n,r={}){let i=new URLSearchParams;r.linked!==void 0&&i.append(`linked`,String(r.linked)),r.limit!==void 0&&i.append(`limit`,String(r.limit)),r.offset!==void 0&&i.append(`offset`,String(r.offset));let a=i.toString();return await u.getEnvelope(`${q(e,t,n)}/documents${a?`?${a}`:``}`)}async function Qt(e,t,n){return await u.post(`${K(e)}/${encodeURIComponent(t)}/discover`,n)||[]}function $t(e,t){let n=J(e,t);if(n)return{driver:n.backend.driver,address:n.backend.address};let r=String(e||``).split(`/`).filter(Boolean);return r.length<2?null:r[0]===`workspace`?{driver:`file`,address:`workspace:${r[1]}`}:r[0]===`device`?r.length>=3?{driver:`file`,address:r[2]}:null:{driver:r[0],address:r[1]}}var en=[`internal/`,`context/`,`vfs/`];async function X(e){try{return(await u.get(`${i.workspaces}/${encodeURIComponent(e)}/bitmaps`)||[]).map(e=>typeof e==`string`?e:e.key??String(e)).filter(e=>e&&!en.some(t=>e.startsWith(t)))}catch{return[]}}async function tn(e){return(await X(e)).filter(e=>e.startsWith(`tag/`)).map(e=>e.slice(4)).filter(Boolean).sort()}async function nn(e,t){let n=t.replace(/^\/+|\/+$/g,``);if(!n)throw Error(`Bitmap key is required`);if(n.startsWith(`data/`)||n===`data`)throw Error(`data/* bitmaps are protected and cannot be deleted manually`);return await u.delete(`${i.workspaces}/${encodeURIComponent(e)}/bitmaps/${n.split(`/`).map(encodeURIComponent).join(`/`)}`),!0}async function rn(e,t,n=!0){let r=t.replace(/^data\/dataset\//,``).replace(/^\/+|\/+$/g,``);if(!r)throw Error(`Dataset name is required`);if(r==="default")throw Error(`The "default" dataset is virtual and cannot be deleted`);return await u.delete(`${i.workspaces}/${encodeURIComponent(e)}/datasets/${r.split(`/`).map(encodeURIComponent).join(`/`)}?dropDocuments=${n}`)}function Z(e){return`${i.workspaces}/${encodeURIComponent(e)}/timelines`}async function an(e){try{return await u.get(Z(e))||[]}catch{return[]}}async function on(e){try{return await u.get(`${Z(e)}?verbose=true`)||[]}catch{return[]}}async function sn(e,t){return await u.post(Z(e),{name:t})}async function cn(e,t){return await u.delete(`${Z(e)}/${encodeURIComponent(t)}`),!0}async function Q(e,t){return(await u.post(`${Z(e)}/histogram`,t))?.buckets??[]}async function ln(e,t){let n=t?`?workspaceId=${encodeURIComponent(t)}`:``;return await u.post(`${i.admin.inferd}/${e?`pause`:`resume`}${n}`)}async function un(e){return await u.get(`${i.workspaces}/${e}/db/stats`)}async function dn(e,t){return await u.put(`${i.workspaces}/${e}/db/tuning`,t)}async function fn(e){let t=await u.get(`${i.workspaces}/${e}/trash`);return Array.isArray(t)?t:[]}async function pn(e,t){return await u.post(`${i.workspaces}/${e}/trash/restore`,{documentIds:W(t)})}async function mn(e,t){return await u.delete(`${i.workspaces}/${e}/trash`,t?.length?{headers:{"Content-Type":`application/json`},body:JSON.stringify({documentIds:W(t)})}:{})}var $=(e,t,n)=>`${i.workspaces}/${e}/members/${encodeURIComponent(`${t}:${n}`)}`;async function hn(e){return u.get(`${i.workspaces}/${e}/members`)}async function gn(e,t,n,r){return u.post(`${i.workspaces}/${e}/members`,{...t,permissions:n,...r?{description:r}:{}})}async function _n(e,t,n,r){return u.put($(e,t,n),{permissions:r})}async function vn(e,t,n){await u.delete($(e,t,n))}async function yn(e,t,n){return u.post(`${i.workspaces}/${encodeURIComponent(e)}/documents/copy-to-workspace`,{documentId:t,...n})}export{ht as $,dn as $t,Qt as A,ot as At,ue as B,De as Bt,rn as C,Ve as Ct,ft as D,Oe as Dt,cn as E,on as Et,At as F,Ot as Ft,gt as G,$e as Gt,Nt as H,We as Ht,ve as I,zt as It,ze as J,vn as Jt,_t as K,Et as Kt,wt as L,Jt as Lt,Dt as M,Ge as Mt,xe as N,qe as Nt,it as O,N as Ot,mn as P,Ze as Pt,Ft as Q,ln as Qt,Ct as R,St as Rt,nn as S,Xe as St,be as T,an as Tt,je as U,Yt as Ut,It as V,lt as Vt,Me as W,tt as Wt,me as X,Le as Xt,yt as Y,He as Yt,un as Z,P as Zt,Re as _,ce as _n,X as _t,qt as a,Gt as an,Je as at,sn as b,et as bt,Y as c,le as cn,z as ct,Vt as d,Rt as dn,Ut as dt,Te as en,H as et,Pt as f,Pe as fn,Zt as ft,xt as g,Ye as gn,fn as gt,Wt as h,Ue as hn,he as ht,Lt as i,Bt as in,gn as it,Tt as j,at as jt,jt as k,nt as kt,mt as l,rt as ln,Fe as lt,Ke as m,_n as mn,Mt as mt,I as n,st as nn,kt as nt,ge as o,Ht as on,Se as ot,yn as p,dt as pn,Kt as pt,bt as q,pn as qt,w as r,ct as rn,B as rt,$t as s,pt as sn,we as st,y as t,Ee as tn,Ne as tt,Xt as u,Qe as un,V as ut,F as v,ye as vt,ut as w,tn as wt,Be as x,hn as xt,Ie as y,vt as yt,Q as z,_e as zt};
package/dist/index.html CHANGED
@@ -46,20 +46,21 @@
46
46
  }
47
47
  })()
48
48
  </script>
49
- <script type="module" crossorigin src="/assets/index-BbziGH6q.js"></script>
49
+ <script type="module" crossorigin src="/assets/index-DNs4Dy_y.js"></script>
50
50
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-C0FnF6B9.js">
51
51
  <link rel="modulepreload" crossorigin href="/assets/react-DQazvoR7.js">
52
52
  <link rel="modulepreload" crossorigin href="/assets/preload-helper-Czpn1I53.js">
53
53
  <link rel="modulepreload" crossorigin href="/assets/ui-BX_B5WCf.js">
54
54
  <link rel="modulepreload" crossorigin href="/assets/utils-BxVxyehK.js">
55
55
  <link rel="modulepreload" crossorigin href="/assets/utils-2pl1SbIp.js">
56
- <link rel="modulepreload" crossorigin href="/assets/workspace-BnBIVxoH.js">
56
+ <link rel="modulepreload" crossorigin href="/assets/alert-dialog-CI8w9egc.js">
57
57
  <link rel="modulepreload" crossorigin href="/assets/socket-hM4c-ZSl.js">
58
- <link rel="modulepreload" crossorigin href="/assets/blobs-bUMClq1N.js">
59
- <link rel="modulepreload" crossorigin href="/assets/text-documents-seImmPVm.js">
58
+ <link rel="modulepreload" crossorigin href="/assets/blobs-DS4_Kfmr.js">
59
+ <link rel="modulepreload" crossorigin href="/assets/workspace-DtHtsT4U.js">
60
+ <link rel="modulepreload" crossorigin href="/assets/text-documents-CXCOKgVf.js">
60
61
  <link rel="modulepreload" crossorigin href="/assets/map-BxCwdK0d.js">
61
62
  <link rel="modulepreload" crossorigin href="/assets/search-COMZIxA7.js">
62
- <link rel="modulepreload" crossorigin href="/assets/sha256-CshnEcuy.js">
63
+ <link rel="modulepreload" crossorigin href="/assets/sha256-CWEv0HLW.js">
63
64
  <link rel="modulepreload" crossorigin href="/assets/sanitize-DrVcFY1Q.js">
64
65
  <link rel="modulepreload" crossorigin href="/assets/punycode.es6-ZbLrB_Dn.js">
65
66
  <link rel="modulepreload" crossorigin href="/assets/markdown-it-DRESbtwK.js">
package/dist/sw.js CHANGED
@@ -1 +1 @@
1
- var e=`share-target-inbox`;async function t(e,t,n){let r=`/share-target-inbox/${t}`,i=[],a=async e=>{await Promise.all(i.map(e=>n.delete(e))),await n.put(`${r}/meta`,new Response(JSON.stringify({status:`error`,error:e,stashedAt:Date.now()})))};try{if(Number(e.headers.get(`content-length`))>105906176){await e.body?.cancel().catch(()=>{}),await a(`too-large`);return}let t=await e.formData(),o=t.getAll(`files`).filter(e=>e instanceof File);if(o.some(e=>e.size===0)){await a(`empty-file`);return}if(o.reduce((e,t)=>e+t.size,0)>104857600){await a(`too-large`);return}let s=e=>{let n=t.get(e);return typeof n==`string`?n:``},c=s(`title`),l=s(`text`),u=s(`url`);if(!o.length&&![c,l,u].some(e=>e.trim())){await a(`empty-share`);return}for(let[e,t]of o.entries()){let a=`${r}/file-${e}`;await n.put(a,new Response(t,{headers:{"Content-Type":t.type||`application/octet-stream`}})),i.push(a)}await n.put(`${r}/meta`,new Response(JSON.stringify({status:`ready`,title:c,text:l,url:u,fileNames:o.map(e=>e.name),stashedAt:Date.now()})))}catch{await a(`stash-failed`)}}try{self[`workbox:core:7.4.0`]&&_()}catch{}var n=(e,...t)=>{let n=e;return t.length>0&&(n+=` :: ${JSON.stringify(t)}`),n},r=class extends Error{constructor(e,t){let r=n(e,t);super(r),this.name=e,this.details=t}},i={googleAnalytics:`googleAnalytics`,precache:`precache-v2`,prefix:`workbox`,runtime:`runtime`,suffix:typeof registration<`u`?registration.scope:``},a=e=>[i.prefix,e,i.suffix].filter(e=>e&&e.length>0).join(`-`),o=e=>{for(let t of Object.keys(i))e(t)},s={updateDetails:e=>{o(t=>{typeof e[t]==`string`&&(i[t]=e[t])})},getGoogleAnalyticsName:e=>e||a(i.googleAnalytics),getPrecacheName:e=>e||a(i.precache),getPrefix:()=>i.prefix,getRuntimeName:e=>e||a(i.runtime),getSuffix:()=>i.suffix};function c(e,t){let n=t();return e.waitUntil(n),n}try{self[`workbox:precaching:7.4.0`]&&_()}catch{}var l=`__WB_REVISION__`;function u(e){if(!e)throw new r(`add-to-cache-list-unexpected-type`,{entry:e});if(typeof e==`string`){let t=new URL(e,location.href);return{cacheKey:t.href,url:t.href}}let{revision:t,url:n}=e;if(!n)throw new r(`add-to-cache-list-unexpected-type`,{entry:e});if(!t){let e=new URL(n,location.href);return{cacheKey:e.href,url:e.href}}let i=new URL(n,location.href),a=new URL(n,location.href);return i.searchParams.set(l,t),{cacheKey:i.href,url:a.href}}var ee=class{constructor(){this.updatedURLs=[],this.notUpdatedURLs=[],this.handlerWillStart=async({request:e,state:t})=>{t&&(t.originalRequest=e)},this.cachedResponseWillBeUsed=async({event:e,state:t,cachedResponse:n})=>{if(e.type===`install`&&t&&t.originalRequest&&t.originalRequest instanceof Request){let e=t.originalRequest.url;n?this.notUpdatedURLs.push(e):this.updatedURLs.push(e)}return n}}},te=class{constructor({precacheController:e}){this.cacheKeyWillBeUsed=async({request:e,params:t})=>{let n=t?.cacheKey||this._precacheController.getCacheKeyForURL(e.url);return n?new Request(n,{headers:e.headers}):e},this._precacheController=e}},d;function ne(){if(d===void 0){let e=new Response(``);if(`body`in e)try{new Response(e.body),d=!0}catch{d=!1}d=!1}return d}async function re(e,t){let n=null;if(e.url&&(n=new URL(e.url).origin),n!==self.location.origin)throw new r(`cross-origin-copy-response`,{origin:n});let i=e.clone(),a={headers:new Headers(i.headers),status:i.status,statusText:i.statusText},o=t?t(a):a,s=ne()?i.body:await i.blob();return new Response(s,o)}var ie=e=>new URL(String(e),location.href).href.replace(RegExp(`^${location.origin}`),``);function f(e,t){let n=new URL(e);for(let e of t)n.searchParams.delete(e);return n.href}async function ae(e,t,n,r){let i=f(t.url,n);if(t.url===i)return e.match(t,r);let a=Object.assign(Object.assign({},r),{ignoreSearch:!0}),o=await e.keys(t,a);for(let t of o)if(i===f(t.url,n))return e.match(t,r)}var oe=class{constructor(){this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}},p=new Set;async function m(){for(let e of p)await e()}function h(e){return new Promise(t=>setTimeout(t,e))}try{self[`workbox:strategies:7.4.0`]&&_()}catch{}function g(e){return typeof e==`string`?new Request(e):e}var se=class{constructor(e,t){this._cacheKeys={},Object.assign(this,t),this.event=t.event,this._strategy=e,this._handlerDeferred=new oe,this._extendLifetimePromises=[],this._plugins=[...e.plugins],this._pluginStateMap=new Map;for(let e of this._plugins)this._pluginStateMap.set(e,{});this.event.waitUntil(this._handlerDeferred.promise)}async fetch(e){let{event:t}=this,n=g(e);if(n.mode===`navigate`&&t instanceof FetchEvent&&t.preloadResponse){let e=await t.preloadResponse;if(e)return e}let i=this.hasCallback(`fetchDidFail`)?n.clone():null;try{for(let e of this.iterateCallbacks(`requestWillFetch`))n=await e({request:n.clone(),event:t})}catch(e){if(e instanceof Error)throw new r(`plugin-error-request-will-fetch`,{thrownErrorMessage:e.message})}let a=n.clone();try{let e;e=await fetch(n,n.mode===`navigate`?void 0:this._strategy.fetchOptions);for(let n of this.iterateCallbacks(`fetchDidSucceed`))e=await n({event:t,request:a,response:e});return e}catch(e){throw i&&await this.runCallbacks(`fetchDidFail`,{error:e,event:t,originalRequest:i.clone(),request:a.clone()}),e}}async fetchAndCachePut(e){let t=await this.fetch(e),n=t.clone();return this.waitUntil(this.cachePut(e,n)),t}async cacheMatch(e){let t=g(e),n,{cacheName:r,matchOptions:i}=this._strategy,a=await this.getCacheKey(t,`read`),o=Object.assign(Object.assign({},i),{cacheName:r});n=await caches.match(a,o);for(let e of this.iterateCallbacks(`cachedResponseWillBeUsed`))n=await e({cacheName:r,matchOptions:i,cachedResponse:n,request:a,event:this.event})||void 0;return n}async cachePut(e,t){let n=g(e);await h(0);let i=await this.getCacheKey(n,`write`);if(!t)throw new r(`cache-put-with-no-response`,{url:ie(i.url)});let a=await this._ensureResponseSafeToCache(t);if(!a)return!1;let{cacheName:o,matchOptions:s}=this._strategy,c=await self.caches.open(o),l=this.hasCallback(`cacheDidUpdate`),u=l?await ae(c,i.clone(),[`__WB_REVISION__`],s):null;try{await c.put(i,l?a.clone():a)}catch(e){if(e instanceof Error)throw e.name===`QuotaExceededError`&&await m(),e}for(let e of this.iterateCallbacks(`cacheDidUpdate`))await e({cacheName:o,oldResponse:u,newResponse:a.clone(),request:i,event:this.event});return!0}async getCacheKey(e,t){let n=`${e.url} | ${t}`;if(!this._cacheKeys[n]){let r=e;for(let e of this.iterateCallbacks(`cacheKeyWillBeUsed`))r=g(await e({mode:t,request:r,event:this.event,params:this.params}));this._cacheKeys[n]=r}return this._cacheKeys[n]}hasCallback(e){for(let t of this._strategy.plugins)if(e in t)return!0;return!1}async runCallbacks(e,t){for(let n of this.iterateCallbacks(e))await n(t)}*iterateCallbacks(e){for(let t of this._strategy.plugins)if(typeof t[e]==`function`){let n=this._pluginStateMap.get(t);yield r=>{let i=Object.assign(Object.assign({},r),{state:n});return t[e](i)}}}waitUntil(e){return this._extendLifetimePromises.push(e),e}async doneWaiting(){for(;this._extendLifetimePromises.length;){let e=this._extendLifetimePromises.splice(0),t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason}}destroy(){this._handlerDeferred.resolve(null)}async _ensureResponseSafeToCache(e){let t=e,n=!1;for(let e of this.iterateCallbacks(`cacheWillUpdate`))if(t=await e({request:this.request,response:t,event:this.event})||void 0,n=!0,!t)break;return n||t&&t.status!==200&&(t=void 0),t}},ce=class{constructor(e={}){this.cacheName=s.getRuntimeName(e.cacheName),this.plugins=e.plugins||[],this.fetchOptions=e.fetchOptions,this.matchOptions=e.matchOptions}handle(e){let[t]=this.handleAll(e);return t}handleAll(e){e instanceof FetchEvent&&(e={event:e,request:e.request});let t=e.event,n=typeof e.request==`string`?new Request(e.request):e.request,r=`params`in e?e.params:void 0,i=new se(this,{event:t,request:n,params:r}),a=this._getResponse(i,n,t);return[a,this._awaitComplete(a,i,n,t)]}async _getResponse(e,t,n){await e.runCallbacks(`handlerWillStart`,{event:n,request:t});let i;try{if(i=await this._handle(t,e),!i||i.type===`error`)throw new r(`no-response`,{url:t.url})}catch(r){if(r instanceof Error){for(let a of e.iterateCallbacks(`handlerDidError`))if(i=await a({error:r,event:n,request:t}),i)break}if(!i)throw r}for(let r of e.iterateCallbacks(`handlerWillRespond`))i=await r({event:n,request:t,response:i});return i}async _awaitComplete(e,t,n,r){let i,a;try{i=await e}catch{}try{await t.runCallbacks(`handlerDidRespond`,{event:r,request:n,response:i}),await t.doneWaiting()}catch(e){e instanceof Error&&(a=e)}if(await t.runCallbacks(`handlerDidComplete`,{event:r,request:n,response:i,error:a}),t.destroy(),a)throw a}},v=class e extends ce{constructor(t={}){t.cacheName=s.getPrecacheName(t.cacheName),super(t),this._fallbackToNetwork=t.fallbackToNetwork!==!1,this.plugins.push(e.copyRedirectedCacheableResponsesPlugin)}async _handle(e,t){return await t.cacheMatch(e)||(t.event&&t.event.type===`install`?await this._handleInstall(e,t):await this._handleFetch(e,t))}async _handleFetch(e,t){let n,i=t.params||{};if(this._fallbackToNetwork){let r=i.integrity,a=e.integrity,o=!a||a===r;n=await t.fetch(new Request(e,{integrity:e.mode===`no-cors`?void 0:a||r})),r&&o&&e.mode!==`no-cors`&&(this._useDefaultCacheabilityPluginIfNeeded(),await t.cachePut(e,n.clone()))}else throw new r(`missing-precache-entry`,{cacheName:this.cacheName,url:e.url});return n}async _handleInstall(e,t){this._useDefaultCacheabilityPluginIfNeeded();let n=await t.fetch(e);if(!await t.cachePut(e,n.clone()))throw new r(`bad-precaching-response`,{url:e.url,status:n.status});return n}_useDefaultCacheabilityPluginIfNeeded(){let t=null,n=0;for(let[r,i]of this.plugins.entries())i!==e.copyRedirectedCacheableResponsesPlugin&&(i===e.defaultPrecacheCacheabilityPlugin&&(t=r),i.cacheWillUpdate&&n++);n===0?this.plugins.push(e.defaultPrecacheCacheabilityPlugin):n>1&&t!==null&&this.plugins.splice(t,1)}};v.defaultPrecacheCacheabilityPlugin={async cacheWillUpdate({response:e}){return!e||e.status>=400?null:e}},v.copyRedirectedCacheableResponsesPlugin={async cacheWillUpdate({response:e}){return e.redirected?await re(e):e}};var le=class{constructor({cacheName:e,plugins:t=[],fallbackToNetwork:n=!0}={}){this._urlsToCacheKeys=new Map,this._urlsToCacheModes=new Map,this._cacheKeysToIntegrities=new Map,this._strategy=new v({cacheName:s.getPrecacheName(e),plugins:[...t,new te({precacheController:this})],fallbackToNetwork:n}),this.install=this.install.bind(this),this.activate=this.activate.bind(this)}get strategy(){return this._strategy}precache(e){this.addToCacheList(e),this._installAndActiveListenersAdded||=(self.addEventListener(`install`,this.install),self.addEventListener(`activate`,this.activate),!0)}addToCacheList(e){let t=[];for(let n of e){typeof n==`string`?t.push(n):n&&n.revision===void 0&&t.push(n.url);let{cacheKey:e,url:i}=u(n),a=typeof n!=`string`&&n.revision?`reload`:`default`;if(this._urlsToCacheKeys.has(i)&&this._urlsToCacheKeys.get(i)!==e)throw new r(`add-to-cache-list-conflicting-entries`,{firstEntry:this._urlsToCacheKeys.get(i),secondEntry:e});if(typeof n!=`string`&&n.integrity){if(this._cacheKeysToIntegrities.has(e)&&this._cacheKeysToIntegrities.get(e)!==n.integrity)throw new r(`add-to-cache-list-conflicting-integrities`,{url:i});this._cacheKeysToIntegrities.set(e,n.integrity)}if(this._urlsToCacheKeys.set(i,e),this._urlsToCacheModes.set(i,a),t.length>0){let e=`Workbox is precaching URLs without revision info: ${t.join(`, `)}\nThis is generally NOT safe. Learn more at https://bit.ly/wb-precache`;console.warn(e)}}}install(e){return c(e,async()=>{let t=new ee;this.strategy.plugins.push(t);for(let[t,n]of this._urlsToCacheKeys){let r=this._cacheKeysToIntegrities.get(n),i=this._urlsToCacheModes.get(t),a=new Request(t,{integrity:r,cache:i,credentials:`same-origin`});await Promise.all(this.strategy.handleAll({params:{cacheKey:n},request:a,event:e}))}let{updatedURLs:n,notUpdatedURLs:r}=t;return{updatedURLs:n,notUpdatedURLs:r}})}activate(e){return c(e,async()=>{let e=await self.caches.open(this.strategy.cacheName),t=await e.keys(),n=new Set(this._urlsToCacheKeys.values()),r=[];for(let i of t)n.has(i.url)||(await e.delete(i),r.push(i.url));return{deletedURLs:r}})}getURLsToCacheKeys(){return this._urlsToCacheKeys}getCachedURLs(){return[...this._urlsToCacheKeys.keys()]}getCacheKeyForURL(e){let t=new URL(e,location.href);return this._urlsToCacheKeys.get(t.href)}getIntegrityForCacheKey(e){return this._cacheKeysToIntegrities.get(e)}async matchPrecache(e){let t=e instanceof Request?e.url:e,n=this.getCacheKeyForURL(t);if(n)return(await self.caches.open(this.strategy.cacheName)).match(n)}createHandlerBoundToURL(e){let t=this.getCacheKeyForURL(e);if(!t)throw new r(`non-precached-url`,{url:e});return n=>(n.request=new Request(e),n.params=Object.assign({cacheKey:t},n.params),this.strategy.handle(n))}},y,b=()=>(y||=new le,y);try{self[`workbox:routing:7.4.0`]&&_()}catch{}var x=e=>e&&typeof e==`object`?e:{handle:e},S=class{constructor(e,t,n=`GET`){this.handler=x(t),this.match=e,this.method=n}setCatchHandler(e){this.catchHandler=x(e)}},ue=class extends S{constructor(e,t,n){super(({url:t})=>{let n=e.exec(t.href);if(n&&(t.origin===location.origin||n.index===0))return n.slice(1)},t,n)}},de=class{constructor(){this._routes=new Map,this._defaultHandlerMap=new Map}get routes(){return this._routes}addFetchListener(){self.addEventListener(`fetch`,(e=>{let{request:t}=e,n=this.handleRequest({request:t,event:e});n&&e.respondWith(n)}))}addCacheListener(){self.addEventListener(`message`,(e=>{if(e.data&&e.data.type===`CACHE_URLS`){let{payload:t}=e.data,n=Promise.all(t.urlsToCache.map(t=>{typeof t==`string`&&(t=[t]);let n=new Request(...t);return this.handleRequest({request:n,event:e})}));e.waitUntil(n),e.ports&&e.ports[0]&&n.then(()=>e.ports[0].postMessage(!0))}}))}handleRequest({request:e,event:t}){let n=new URL(e.url,location.href);if(!n.protocol.startsWith(`http`))return;let r=n.origin===location.origin,{params:i,route:a}=this.findMatchingRoute({event:t,request:e,sameOrigin:r,url:n}),o=a&&a.handler,s=e.method;if(!o&&this._defaultHandlerMap.has(s)&&(o=this._defaultHandlerMap.get(s)),!o)return;let c;try{c=o.handle({url:n,request:e,event:t,params:i})}catch(e){c=Promise.reject(e)}let l=a&&a.catchHandler;return c instanceof Promise&&(this._catchHandler||l)&&(c=c.catch(async r=>{if(l)try{return await l.handle({url:n,request:e,event:t,params:i})}catch(e){e instanceof Error&&(r=e)}if(this._catchHandler)return this._catchHandler.handle({url:n,request:e,event:t});throw r})),c}findMatchingRoute({url:e,sameOrigin:t,request:n,event:r}){let i=this._routes.get(n.method)||[];for(let a of i){let i,o=a.match({url:e,sameOrigin:t,request:n,event:r});if(o)return i=o,(Array.isArray(i)&&i.length===0||o.constructor===Object&&Object.keys(o).length===0||typeof o==`boolean`)&&(i=void 0),{route:a,params:i}}return{}}setDefaultHandler(e,t=`GET`){this._defaultHandlerMap.set(t,x(e))}setCatchHandler(e){this._catchHandler=x(e)}registerRoute(e){this._routes.has(e.method)||this._routes.set(e.method,[]),this._routes.get(e.method).push(e)}unregisterRoute(e){if(!this._routes.has(e.method))throw new r(`unregister-route-but-not-found-with-method`,{method:e.method});let t=this._routes.get(e.method).indexOf(e);if(t>-1)this._routes.get(e.method).splice(t,1);else throw new r(`unregister-route-route-not-registered`)}},C,fe=()=>(C||(C=new de,C.addFetchListener(),C.addCacheListener()),C);function pe(e,t,n){let i;if(typeof e==`string`){let r=new URL(e,location.href);i=new S(({url:e})=>e.href===r.href,t,n)}else if(e instanceof RegExp)i=new ue(e,t,n);else if(typeof e==`function`)i=new S(e,t,n);else if(e instanceof S)i=e;else throw new r(`unsupported-route-type`,{moduleName:`workbox-routing`,funcName:`registerRoute`,paramName:`capture`});return fe().registerRoute(i),i}function me(e,t=[]){for(let n of[...e.searchParams.keys()])t.some(e=>e.test(n))&&e.searchParams.delete(n);return e}function*he(e,{ignoreURLParametersMatching:t=[/^utm_/,/^fbclid$/],directoryIndex:n=`index.html`,cleanURLs:r=!0,urlManipulation:i}={}){let a=new URL(e,location.href);a.hash=``,yield a.href;let o=me(a,t);if(yield o.href,n&&o.pathname.endsWith(`/`)){let e=new URL(o.href);e.pathname+=n,yield e.href}if(r){let e=new URL(o.href);e.pathname+=`.html`,yield e.href}if(i){let e=i({url:a});for(let t of e)yield t.href}}var w=class extends S{constructor(e,t){super(({request:n})=>{let r=e.getURLsToCacheKeys();for(let i of he(n.url,t)){let t=r.get(i);if(t)return{cacheKey:t,integrity:e.getIntegrityForCacheKey(t)}}},e.strategy)}};function T(e){pe(new w(b(),e))}var E=`-precache-`,D=async(e,t=E)=>{let n=(await self.caches.keys()).filter(n=>n.includes(t)&&n.includes(self.registration.scope)&&n!==e);return await Promise.all(n.map(e=>self.caches.delete(e))),n};function O(){self.addEventListener(`activate`,(e=>{let t=s.getPrecacheName();e.waitUntil(D(t).then(e=>{}))}))}function k(e){return b().matchPrecache(e)}function A(e){b().precache(e)}function j(e,t){A(e),T(t)}var M=`offline-content-v1`,N=`offline-api-v1`,P={enabled:!1,budgetBytes:4294967296,excludedWorkspaces:[]};function F(e){let t=e.match(/^\/rest\/v2\/workspaces\/([^/?#]+)/);return t?decodeURIComponent(t[1]):null}var I=1e3,L=`canvas-offline`,R=2,z=null;function B(){return z||(z=new Promise((e,t)=>{let n=indexedDB.open(L,R);n.onupgradeneeded=e=>{let t=n.result;if(t.objectStoreNames.contains(`config`)||t.createObjectStore(`config`),t.objectStoreNames.contains(`entries`)||t.createObjectStore(`entries`,{keyPath:`url`}),e.oldVersion>=1&&t.objectStoreNames.contains(`pins`)){t.deleteObjectStore(`pins`);let e=n.transaction.objectStore(`entries`).openCursor();e.onsuccess=()=>{let t=e.result;if(!t)return;let n=t.value;n.pinned&&t.update({...n,pinned:!1}),t.continue()}}t.objectStoreNames.contains(`scopes`)||t.createObjectStore(`scopes`,{keyPath:`id`})},n.onsuccess=()=>{n.result.onversionchange=()=>{n.result.close(),z=null},e(n.result)},n.onerror=()=>{z=null,t(n.error)}}),z)}function V(e){return new Promise((t,n)=>{e.oncomplete=()=>t(),e.onerror=()=>n(e.error),e.onabort=()=>n(e.error)})}function H(e){return new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error)})}async function U(e,t){return H((await B()).transaction(e).objectStore(e).get(t))}async function ge(e){return H((await B()).transaction(e).objectStore(e).getAll())}async function W(e,t,n){let r=(await B()).transaction(e,`readwrite`);return r.objectStore(e).put(t,n),V(r)}async function G(e,t){let n=(await B()).transaction(e,`readwrite`);return n.objectStore(e).delete(t),V(n)}async function _e(){try{let e=await U(`config`,`settings`);return e?{...P,...e}:P}catch{return P}}async function K(e,t,n){let r=await U(`entries`,e);await W(`entries`,{url:e,kind:t,size:n,lastAccess:Date.now(),pinned:r?.pinned??!1})}var ve=6e4,q=new Map;async function J(e){let t=q.get(e),n=Date.now();if(t&&n-t<ve)return;q.set(e,n),q.size>4096&&q.clear();let r=await U(`entries`,e);r&&await W(`entries`,{...r,lastAccess:n})}async function ye(e){let t=await ge(`entries`),n=t.filter(e=>e.kind===`api`).sort((e,t)=>e.lastAccess-t.lastAccess),r=n.slice(0,Math.max(0,n.length-I)),i=t.filter(e=>e.kind===`content`),a=i.reduce((e,t)=>e+t.size,0),o=i.filter(e=>!e.pinned).sort((e,t)=>e.lastAccess-t.lastAccess),s=[];for(let t of o){if(a<=e)break;s.push(t),a-=t.size}if(!r.length&&!s.length)return;let[c,l]=await Promise.all([caches.open(N),caches.open(M)]);await Promise.all([...r.map(async e=>{await c.delete(e.url),await G(`entries`,e.url)}),...s.map(async e=>{await l.delete(e.url),await G(`entries`,e.url)})])}O(),j([{"revision":"ba3bd76c1e6e8970c5e76e54d30b31c3","url":"index.html"},{"revision":"d0c188df2432c882c53e561e64cd29a2","url":"favicon_wl.png"},{"revision":"243f17f04cf5eb5b298d9701dbd3b4b9","url":"favicon.png"},{"revision":"339e5b64fa2c186631343b5399fe3898","url":"wallpapers/files/canvas_3.svg"},{"revision":"b164dca13ae630411fdc766586da3f61","url":"wallpapers/files/canvas_1.svg"},{"revision":"6ffe60f1b1d220a5b59ef1fe376122f6","url":"screenshots/s3.png"},{"revision":"be57d83f15923b5351a2a7cde1f35bf8","url":"screenshots/s2.png"},{"revision":"c3af5f4e79b0e4b5794d10e1ed3be39a","url":"screenshots/s1.png"},{"revision":"265dfc3ecb9788a5ae8974ec254ac651","url":"js/particles.min.js"},{"revision":"443e87a6d23acf7c849051ffd38106db","url":"images/logo_orig.png"},{"revision":"d0c188df2432c882c53e561e64cd29a2","url":"images/logo_64x64.png"},{"revision":"1c314d3790ee0733defb3e75079ba8d9","url":"images/logo_512x512.png"},{"revision":"d6363d0e5249f161c4b7d78045a210e5","url":"images/logo_256x256.png"},{"revision":"6f763ad15fbd8e2e93893c0d98a9905d","url":"images/logo_128x128.png"},{"revision":"bc4e038a89ae062004dd9ff297bba3f5","url":"images/logo_1024x1024.png"},{"revision":"1c1dcdd3b47bee973de6f323b504dda5","url":"images/logo-wr_orig.png"},{"revision":"34a0677b471ec1dcf5f25eeac90539e2","url":"images/logo-wr_64x64.png"},{"revision":"de6735f441492f065a0da94eacb982de","url":"images/logo-wr_512x512.png"},{"revision":"3018eca652753d237061b855645f93c9","url":"images/logo-wr_256x256.png"},{"revision":"509310a186188c5b0751569a536ee83a","url":"images/logo-wr_128x128.png"},{"revision":"c23aea3f0209c8f5817796449af52472","url":"images/logo-wr_1024x1024.png"},{"revision":"8119caf9106c961943456e5113c26cfc","url":"images/logo-br_orig.png"},{"revision":"ed7721ca00c7df91460006ae11340980","url":"images/logo-br_64x64.png"},{"revision":"657409bce8f4fe2efaa08f441d91cb26","url":"images/logo-br_512x512.png"},{"revision":"1d1659355d80946eedf1063501b091b8","url":"images/logo-br_256x256.png"},{"revision":"733bf2efe01b5cb056534806772aabd2","url":"images/logo-br_128x128.png"},{"revision":"e7561ccec1eefad2a36e697ddbebcd78","url":"images/logo-br_1024x1024.png"},{"revision":"05d9d6e8842b65d5a6b7f9b83eb6e786","url":"images/logo-bl_orig.png"},{"revision":"243f17f04cf5eb5b298d9701dbd3b4b9","url":"images/logo-bl_64x64.png"},{"revision":"a34687e37e32da4d4c127831c6f9779c","url":"images/logo-bl_512x512.png"},{"revision":"0260dd99a07186b7fc3d101023068658","url":"images/logo-bl_256x256.png"},{"revision":"ddb2b89e0437a22554694e1f0a2b894b","url":"images/logo-bl_128x128.png"},{"revision":"1ca5897439475c3b2acab290959559b9","url":"images/logo-bl_1024x1024.png"},{"revision":"d0c188df2432c882c53e561e64cd29a2","url":"images/favicon.png"},{"revision":"d6363d0e5249f161c4b7d78045a210e5","url":"images/apple-touch-icon.png"},{"revision":"1c314d3790ee0733defb3e75079ba8d9","url":"images/android-chrome-512x512.png"},{"revision":"452c6675af891c549b493895764c855d","url":"images/avatars/default.png"},{"revision":null,"url":"assets/zh-TW-RAJ6MFWO-BTknr43S.js"},{"revision":null,"url":"assets/zh-HK-E62DVLB3-dcRoFFJT.js"},{"revision":null,"url":"assets/zh-CN-LNUGB5OW-N0-P-YPg.js"},{"revision":null,"url":"assets/xychartDiagram-S5SC5T6Z-Cg27DCiq.js"},{"revision":null,"url":"assets/workspace-BnBIVxoH.js"},{"revision":null,"url":"assets/workbox-window.prod.es5-Bd17z0YL.js"},{"revision":null,"url":"assets/wardleyDiagram-VM6X3IG4-XOnMkSi-.js"},{"revision":null,"url":"assets/wardley-WFR3VGLG-C6N1rULY.js"},{"revision":null,"url":"assets/vi-VN-M7AON7JQ-BFEVKFOA.js"},{"revision":null,"url":"assets/vennDiagram-4TSXK5OY-P6FI4YvP.js"},{"revision":null,"url":"assets/utils-BxVxyehK.js"},{"revision":null,"url":"assets/utils-2pl1SbIp.js"},{"revision":null,"url":"assets/use-theme-pnVLU4Kg.js"},{"revision":null,"url":"assets/uk-UA-QMV73CPH-BfWne7LV.js"},{"revision":null,"url":"assets/ui-BX_B5WCf.js"},{"revision":null,"url":"assets/treemap-WGGIJYW6-Cg7tyfH8.js"},{"revision":null,"url":"assets/treeView-Q6P3EWNA-BTTYcvrF.js"},{"revision":null,"url":"assets/tr-TR-DEFEU3FU-Q633YFo2.js"},{"revision":null,"url":"assets/timeline-definition-24CTP7MA-HQ5YMAQc.js"},{"revision":null,"url":"assets/th-TH-HPSO5L25-swaKUA2N.js"},{"revision":null,"url":"assets/text-documents-seImmPVm.js"},{"revision":null,"url":"assets/ta-IN-2NMHFXQM-D1gPGRIR.js"},{"revision":null,"url":"assets/swimlanesDiagram-VR7AAH4N-DACbRCkF.js"},{"revision":null,"url":"assets/swimlanes-42K2YHIH-f0gJOzIY.js"},{"revision":null,"url":"assets/sv-SE-XGPEYMSR-CWEjOHYD.js"},{"revision":null,"url":"assets/subset-worker.chunk-D4w07nYk.js"},{"revision":null,"url":"assets/subset-shared.chunk-CzQ5JF2O.js"},{"revision":null,"url":"assets/stateDiagram-v2-MP3YSRHH-UMuzQhZ7.js"},{"revision":null,"url":"assets/stateDiagram-D77RDMKH-Dsv4fQ8Y.js"},{"revision":null,"url":"assets/src-CllyRBe0.js"},{"revision":null,"url":"assets/socket-hM4c-ZSl.js"},{"revision":null,"url":"assets/sl-SI-NN7IZMDC-DFJxhRNE.js"},{"revision":null,"url":"assets/sk-SK-C5VTKIMK-NlHjiedH.js"},{"revision":null,"url":"assets/sizeCapture-INFHLROL-B0uUizjq.js"},{"revision":null,"url":"assets/si-LK-N5RQ5JYF-ROLYABqx.js"},{"revision":null,"url":"assets/sha256-CshnEcuy.js"},{"revision":null,"url":"assets/sequenceDiagram-WJ2MYXX4-Dyn971wT.js"},{"revision":null,"url":"assets/search-COMZIxA7.js"},{"revision":null,"url":"assets/sankeyDiagram-P5KCCOFB-CBdZpflq.js"},{"revision":null,"url":"assets/sanitize-DrVcFY1Q.js"},{"revision":null,"url":"assets/ru-RU-B4JR7IUQ-n637KE87.js"},{"revision":null,"url":"assets/roundRect-D01gJrlt.js"},{"revision":null,"url":"assets/rough.esm-Dy-Kn_BL.js"},{"revision":null,"url":"assets/rolldown-runtime-C0FnF6B9.js"},{"revision":null,"url":"assets/ro-RO-JPDTUUEW-BqxNXAVP.js"},{"revision":null,"url":"assets/requirementDiagram-BXWQKSXE-S99ev3k7.js"},{"revision":null,"url":"assets/react-DQazvoR7.js"},{"revision":null,"url":"assets/railroadDiagram-O6MQD6OU-Cjw_zMBC.js"},{"revision":null,"url":"assets/railroad-peg-WCYAUIDC-BQiIsX_p.js"},{"revision":null,"url":"assets/railroad-ebnf-LZEXJU2U-V0aQVv9m.js"},{"revision":null,"url":"assets/railroad-abnf-HS5TGJTU-Cq7y22IA.js"},{"revision":null,"url":"assets/railroad-74A4TZTK-CGtTWdGc.js"},{"revision":null,"url":"assets/radar-RG4KPBEZ-B6h6pWOs.js"},{"revision":null,"url":"assets/quadrantDiagram-AXDQQJYC-CAXFELe7.js"},{"revision":null,"url":"assets/punycode.es6-ZbLrB_Dn.js"},{"revision":null,"url":"assets/pt-PT-UZXXM6DQ-DXzHR8rJ.js"},{"revision":null,"url":"assets/pt-BR-5N22H2LF-CeODeunU.js"},{"revision":null,"url":"assets/preload-helper-Czpn1I53.js"},{"revision":null,"url":"assets/pl-PL-T2D74RX3-DgfcfsGT.js"},{"revision":null,"url":"assets/pieDiagram-E7YTZNPT-Cs2lygkh.js"},{"revision":null,"url":"assets/pie-WAS4IAKB-qxv01Y8W.js"},{"revision":null,"url":"assets/pica-XznpCgP2.js"},{"revision":null,"url":"assets/percentages-BXMCSKIN-BPGA3zHb.js"},{"revision":null,"url":"assets/pegDiagram-XKGWAZYB-DqjEkpXQ.js"},{"revision":null,"url":"assets/pdf.worker.min-C8Ts8bNu.js"},{"revision":null,"url":"assets/pdf-Ciz5_WNq.js"},{"revision":null,"url":"assets/path-fybaL0A-.js"},{"revision":null,"url":"assets/packet-AYTQ26CC-BSJEH9Lb.js"},{"revision":null,"url":"assets/pa-IN-N4M65BXN-wsiZwueU.js"},{"revision":null,"url":"assets/ordinal-BDEzSJ7C.js"},{"revision":null,"url":"assets/oc-FR-POXYY2M6-Cn1eE_Zu.js"},{"revision":null,"url":"assets/nn-NO-6E72VCQL-Dfy734xI.js"},{"revision":null,"url":"assets/nl-NL-IS3SIHDZ-C4-Hez0V.js"},{"revision":null,"url":"assets/nb-NO-T6EIAALU-BQeWbEx1.js"},{"revision":null,"url":"assets/my-MM-5M5IBNSE-BXTnMvRC.js"},{"revision":null,"url":"assets/mr-IN-CRQNXWMA-9iKXC6Ya.js"},{"revision":null,"url":"assets/mindmap-definition-YA3MSWOX-aAz9cEjj.js"},{"revision":null,"url":"assets/mermaid-parser.core-CN1hT9Tn.js"},{"revision":null,"url":"assets/markdown-it-DRESbtwK.js"},{"revision":null,"url":"assets/markdown-html-d5fDtPv3.js"},{"revision":null,"url":"assets/markdown-html-T86c6cqD.css"},{"revision":null,"url":"assets/map-BxCwdK0d.js"},{"revision":null,"url":"assets/map-BcsP_QXj.css"},{"revision":null,"url":"assets/lv-LV-5QDEKY6T-BTnV-PCT.js"},{"revision":null,"url":"assets/lt-LT-XHIRWOB4-B6H0gZ-C.js"},{"revision":null,"url":"assets/linear-aVQWq3ZZ.js"},{"revision":null,"url":"assets/line-DXCbHsGS.js"},{"revision":null,"url":"assets/ku-TR-6OUDTVRD-Ky7FAdew.js"},{"revision":null,"url":"assets/ko-KR-MTYHY66A-BdMJRRpv.js"},{"revision":null,"url":"assets/km-KH-HSX4SM5Z-CaYVKl3D.js"},{"revision":null,"url":"assets/kk-KZ-P5N5QNE5-D52-yIxL.js"},{"revision":null,"url":"assets/katex-CXMH3UgJ.js"},{"revision":null,"url":"assets/kanban-definition-UXKFOSKX-BqkLgv78.js"},{"revision":null,"url":"assets/kab-KAB-ZGHBKWFO-BXYUMKRc.js"},{"revision":null,"url":"assets/kaa-6HZHGXH3-0hNa4m6s.js"},{"revision":null,"url":"assets/journeyDiagram-3NMN7TZE-CL9Lqe59.js"},{"revision":null,"url":"assets/ja-JP-DBVTYXUO-DSHejo8t.js"},{"revision":null,"url":"assets/it-IT-JPQ66NNP-D6FUHYuZ.js"},{"revision":null,"url":"assets/ishikawaDiagram-5VMMS53U-Hs60L6ow.js"},{"revision":null,"url":"assets/init-C-OQMol4.js"},{"revision":null,"url":"assets/infoDiagram-27XIBGKW-BuJx_j6a.js"},{"revision":null,"url":"assets/info-A6RAGUB7-BlU-8_xu.js"},{"revision":null,"url":"assets/index-Drf8030-.css"},{"revision":null,"url":"assets/index-BbziGH6q.js"},{"revision":null,"url":"assets/image-blob-reduce.esm-Dj7YBvMv.js"},{"revision":null,"url":"assets/image-GAAHSSAO-CLJY35GR.js"},{"revision":null,"url":"assets/id-ID-SAP4L64H-ZZuXM5fX.js"},{"revision":null,"url":"assets/icons-DTuc_pxj.js"},{"revision":null,"url":"assets/hu-HU-A5ZG7DT2-BBrlHtCw.js"},{"revision":null,"url":"assets/hi-IN-IWLTKZ5I-Dzr4DvnL.js"},{"revision":null,"url":"assets/he-IL-6SHJWFNN-9Ylp6ncb.js"},{"revision":null,"url":"assets/graphlib-DS17s2tU.js"},{"revision":null,"url":"assets/gl-ES-HMX3MZ6V-4bQs8jWL.js"},{"revision":null,"url":"assets/gitGraphDiagram-WWUBYQGX-D6Gfp0nt.js"},{"revision":null,"url":"assets/gitGraph-4MIJSDKK-DYlXv_yJ.js"},{"revision":null,"url":"assets/ganttDiagram-EL5Y4UJY-BKBiwfwb.js"},{"revision":null,"url":"assets/fr-FR-RHASNOE6-BH99frB1.js"},{"revision":null,"url":"assets/flowDiagram-HODETNUW-BrKzgeF8.js"},{"revision":null,"url":"assets/file-save-745eba88-Bwdfz6OZ.js"},{"revision":null,"url":"assets/file-save-3189631c-CO9S4HFW.js"},{"revision":null,"url":"assets/file-open-7c801643-DZtJT5zp.js"},{"revision":null,"url":"assets/file-open-002ab408-BHUWm0Sh.js"},{"revision":null,"url":"assets/fi-FI-Z5N7JZ37-DC3Y34Y8.js"},{"revision":null,"url":"assets/fa-IR-HGAKTJCU-ddIdgP13.js"},{"revision":null,"url":"assets/eventmodeling-NTZA5JFV-BR2FzK4R.js"},{"revision":null,"url":"assets/eu-ES-A7QVB2H4-CAoFumRj.js"},{"revision":null,"url":"assets/es-ES-U4NZUMDT-D_KzWrdW.js"},{"revision":null,"url":"assets/erDiagram-RLTQ6QDP-CL7FBspC.js"},{"revision":null,"url":"assets/en-B4ZKOASM-BClIFgbE.js"},{"revision":null,"url":"assets/el-GR-BZB4AONW-Chellj6d.js"},{"revision":null,"url":"assets/ebnfDiagram-PWID7BFC-B9wGidHs.js"},{"revision":null,"url":"assets/dist-zgyESmtJ.js"},{"revision":null,"url":"assets/dist-Cz2MTljl.js"},{"revision":null,"url":"assets/directory-open-4ed118d0-1i309Asm.js"},{"revision":null,"url":"assets/directory-open-01563666-D4xXyWb_.js"},{"revision":null,"url":"assets/diagram-Z3DM3KII-aAOMR4aJ.js"},{"revision":null,"url":"assets/diagram-VX7I27RA-D-UFFc5T.js"},{"revision":null,"url":"assets/diagram-VSXAHHWV-BR6t4bem.js"},{"revision":null,"url":"assets/diagram-UQ7AKVKN-CC4synlk.js"},{"revision":null,"url":"assets/diagram-S7CK7UJ4-BCYFjoge.js"},{"revision":null,"url":"assets/defaultLocale-BFoDCU3G.js"},{"revision":null,"url":"assets/de-DE-XR44H4JA-DNaOwkE9.js"},{"revision":null,"url":"assets/dagre-PrKaheQc.js"},{"revision":null,"url":"assets/dagre-GXQ25YYZ-DAaeOVEp.js"},{"revision":null,"url":"assets/da-DK-5WZEPLOC-D55fbhpB.js"},{"revision":null,"url":"assets/cytoscape.esm-CGd-uY3x.js"},{"revision":null,"url":"assets/cynefinDiagram-5FMLGOSQ-Bwsug0X5.js"},{"revision":null,"url":"assets/cynefin-OW5HDTMX-7tP7QfM3.js"},{"revision":null,"url":"assets/cs-CZ-2BRQDIVT-Bz62EbC5.js"},{"revision":null,"url":"assets/cose-bilkent-JH36ORCC-DIeJt_L_.js"},{"revision":null,"url":"assets/classDiagram-v2-VYDZK3BY-DLpT76o5.js"},{"revision":null,"url":"assets/classDiagram-ZZMXUADV-DLpT76o5.js"},{"revision":null,"url":"assets/chunk-Z3N5DIM6-D9TMVU7m.js"},{"revision":null,"url":"assets/chunk-Y2CYZVJY-DsF7k-Jl.js"},{"revision":null,"url":"assets/chunk-XXDRQBXY-CazVBYiP.js"},{"revision":null,"url":"assets/chunk-XHIXRSVI-BFQ6B8BE.js"},{"revision":null,"url":"assets/chunk-UY3FDG6J-CnmaAkG5.js"},{"revision":null,"url":"assets/chunk-TLUHSLCS-C47Epi2D.js"},{"revision":null,"url":"assets/chunk-TICWLB2K-jXepk-qW.js"},{"revision":null,"url":"assets/chunk-SVP7TREG-CoPu3EjZ.js"},{"revision":null,"url":"assets/chunk-SRAX5OIU-Dhm3gOdh.js"},{"revision":null,"url":"assets/chunk-SHT3W25Y-75CQ5pWa.js"},{"revision":null,"url":"assets/chunk-PWAF6VOD-DPI_wv9p.js"},{"revision":null,"url":"assets/chunk-POPQ4Y6H-B7yAy58S.js"},{"revision":null,"url":"assets/chunk-P2QGCYS3-DsGP3wH9.js"},{"revision":null,"url":"assets/chunk-OUJLGHUK-D0j2JRSg.js"},{"revision":null,"url":"assets/chunk-OSK3NFVY-fNjfug78.js"},{"revision":null,"url":"assets/chunk-LNGE3PJU-DWpGwHrW.js"},{"revision":null,"url":"assets/chunk-L3NEJ4N5-Cl0-d4Gu.js"},{"revision":null,"url":"assets/chunk-KI3K4JFJ-Rma-0k_M.js"},{"revision":null,"url":"assets/chunk-K2UTITRG-D0fgw4vC.js"},{"revision":null,"url":"assets/chunk-JWPE2WC7-DVXcaiue.js"},{"revision":null,"url":"assets/chunk-IMKFNOWR-BuKGugNz.js"},{"revision":null,"url":"assets/chunk-IH6LHLGP-CC6I9F3i.js"},{"revision":null,"url":"assets/chunk-ICYGCRZG-749o-pGJ.js"},{"revision":null,"url":"assets/chunk-I5DQTOEV-Hm2LfiYI.js"},{"revision":null,"url":"assets/chunk-GVQU2GXP-BMi2Lqv6.js"},{"revision":null,"url":"assets/chunk-GMAD6QVW-tEmtNh72.js"},{"revision":null,"url":"assets/chunk-FOHPRMQF-DHwB1DNv.js"},{"revision":null,"url":"assets/chunk-F27PBJKO-B8_NVNfE.js"},{"revision":null,"url":"assets/chunk-EIO257PC-CAhBf1ig.js"},{"revision":null,"url":"assets/chunk-DU6HZSFF-BlZbyIL6.js"},{"revision":null,"url":"assets/chunk-CLGD4ZFX-BzBIdJij.js"},{"revision":null,"url":"assets/chunk-75Z2AOVW-CzSd0Veu.js"},{"revision":null,"url":"assets/chunk-747NJXEK-BFkZPlab.js"},{"revision":null,"url":"assets/chunk-6U3AYISY-C6-Mtja1.js"},{"revision":null,"url":"assets/chunk-6TQVIW2G-DKlLbNIP.js"},{"revision":null,"url":"assets/chunk-6K3QC6MW-CqVsVn-y.js"},{"revision":null,"url":"assets/chunk-6EIED4P4-DdUJkP0f.js"},{"revision":null,"url":"assets/chunk-6AZGARVD-BB6FqMl-.js"},{"revision":null,"url":"assets/chunk-5VM5RSS4-ZNzvKenW.js"},{"revision":null,"url":"assets/chunk-5V3GS4D5-i-ZDOEnP.js"},{"revision":null,"url":"assets/chunk-4HAMMTFA-DwG4o-7o.js"},{"revision":null,"url":"assets/chunk-3Z5EZCMW-DMniOlPd.js"},{"revision":null,"url":"assets/chunk-2ZTRR5NV-C2qZJila.js"},{"revision":null,"url":"assets/chunk-2Q5K7J3B-C1jixKkw.js"},{"revision":null,"url":"assets/chunk-2E4U76K2-BX8JWCIb.js"},{"revision":null,"url":"assets/channel-DbE-WRyM.js"},{"revision":null,"url":"assets/ca-ES-6MX7JW3Y-QAg3jm2p.js"},{"revision":null,"url":"assets/c4Diagram-7LVT6UL2-aDTW23RC.js"},{"revision":null,"url":"assets/bn-BD-2XOGV67Q-KCzfC93t.js"},{"revision":null,"url":"assets/blockDiagram-I7D4REHJ-DJlTH4XU.js"},{"revision":null,"url":"assets/blobs-bUMClq1N.js"},{"revision":null,"url":"assets/bg-BG-XCXSNQG7-DFFjBv03.js"},{"revision":null,"url":"assets/az-AZ-76LH7QW2-8v0TczD5.js"},{"revision":null,"url":"assets/array-BifhSqXX.js"},{"revision":null,"url":"assets/architectureDiagram-5GKGNRK7-2gVOlDi3.js"},{"revision":null,"url":"assets/architecture-7GRP2DOG-BMOPAkUC.js"},{"revision":null,"url":"assets/arc-SXJSVd7o.js"},{"revision":null,"url":"assets/ar-SA-G6X2FPQ2-BJ7kJfgn.js"},{"revision":null,"url":"assets/abnfDiagram-VCTEODGH-Cy_5vShZ.js"},{"revision":null,"url":"assets/TextDocumentEditor-DY5_c0Gi.js"},{"revision":null,"url":"assets/SketchEditor-is1gZR43.js"},{"revision":null,"url":"assets/SketchEditor-DtRVLazd.css"},{"revision":null,"url":"assets/NextShell-DtAkokWD.js"},{"revision":null,"url":"assets/NextShell-B4NeoNB5.css"},{"revision":null,"url":"assets/MarkdownEditor-Dr8VNJNY.js"},{"revision":null,"url":"assets/MarkdownEditor-ByK7DHQ0.css"},{"revision":null,"url":"assets/LocationTab-ARqmeXmv.js"},{"revision":null,"url":"assets/EditorOverlay-B3kjuXI-.js"},{"revision":"1c314d3790ee0733defb3e75079ba8d9","url":"images/android-chrome-512x512.png"},{"revision":"bc4e038a89ae062004dd9ff297bba3f5","url":"images/logo_1024x1024.png"},{"revision":"6f763ad15fbd8e2e93893c0d98a9905d","url":"images/logo_128x128.png"},{"revision":"d6363d0e5249f161c4b7d78045a210e5","url":"images/logo_256x256.png"},{"revision":"1c314d3790ee0733defb3e75079ba8d9","url":"images/logo_512x512.png"},{"revision":"d0c188df2432c882c53e561e64cd29a2","url":"images/logo_64x64.png"},{"revision":"caa9715e027d2757550109f1f9653d7c","url":"manifest.webmanifest"}]),self.addEventListener(`message`,e=>{e.data&&e.data.type===`SKIP_WAITING`&&self.skipWaiting()}),self.addEventListener(`activate`,e=>{e.waitUntil(Promise.all([self.clients.claim(),Ee()]))});var be=864e5,Y=/^\/rest\/v2\/workspaces\/[^/]+\/documents\/[^/]+\/(content|thumbnail)$/,xe=/^\/rest\/v2\/(auth|admin|ping|events)\b/,X=null;async function Z(){if(X&&Date.now()-X.at<1e4)return X.value;let e=await _e().catch(()=>({enabled:!1,budgetBytes:0,excludedWorkspaces:[]}));return X={at:Date.now(),value:e},e}function Q(e,t){let n=F(t);return n!==null&&e.excludedWorkspaces.includes(n)}self.addEventListener(`message`,e=>{e.data&&e.data.type===`OFFLINE_SETTINGS_CHANGED`&&(X=null)}),self.addEventListener(`fetch`,e=>{let{request:t}=e,n=new URL(t.url);if(t.method===`POST`&&n.pathname===`/share-target`){e.respondWith(Te(e));return}if(t.method===`GET`&&n.origin===self.location.origin&&n.pathname.startsWith(`/rest/v2/`)){if(Y.test(n.pathname)&&!n.searchParams.has(`download`)&&!t.headers.has(`range`)){e.respondWith(Se(e,t));return}if(!xe.test(n.pathname)&&!Y.test(n.pathname)){e.respondWith(Ce(e,t));return}}t.mode===`navigate`&&!$(n.pathname)&&e.respondWith(we(t))});function $(e){return e.startsWith(`/rest/`)||e.startsWith(`/dav/`)||e.startsWith(`/.well-known/`)}async function Se(e,t){let n=await Z();if(!n.enabled||Q(n,new URL(t.url).pathname))return fetch(t);let r=await caches.open(M),i=await r.match(t.url,{ignoreVary:!0});if(i)return e.waitUntil(J(t.url).catch(()=>{})),i;let a=await fetch(t);if(a.ok&&a.status===200){let i=a.clone();e.waitUntil((async()=>{try{await r.put(t.url,i);let e=Number(a.headers.get(`content-length`))||(await(await r.match(t.url))?.blob())?.size||0;await K(t.url,`content`,e),await ye(n.budgetBytes)}catch(e){console.warn(`[sw] offline content cache put failed`,e)}})())}return a}async function Ce(e,t){let n=await Z();if(!n.enabled||Q(n,new URL(t.url).pathname))return fetch(t);try{let n=await fetch(t);if(n.ok&&n.status===200){let r=n.clone();e.waitUntil((async()=>{try{await(await caches.open(N)).put(t.url,r),await K(t.url,`api`,Number(n.headers.get(`content-length`))||0)}catch(e){console.warn(`[sw] offline api cache put failed`,e)}})())}return n}catch(n){let r=await(await caches.open(N)).match(t.url,{ignoreVary:!0});if(r){e.waitUntil(J(t.url).catch(()=>{}));let n=new Headers(r.headers);return n.set(`X-Canvas-Offline`,`fallback`),new Response(r.body,{status:r.status,statusText:r.statusText,headers:n})}throw n}}async function we(e){try{return await fetch(e)}catch{let e=await k(`/index.html`);if(e)return e;throw Error(`offline and index.html is not precached`)}}function Te(n){let r=crypto.randomUUID();return caches.open(e).then(async e=>(await e.put(`/share-target-inbox/${r}/meta`,new Response(JSON.stringify({status:`receiving`,stashedAt:Date.now()}))),e)).then(e=>t(n.request,r,e)).then(()=>Response.redirect(new URL(`/share-target?token=${r}`,self.location.origin).href,303),()=>Response.redirect(new URL(`/share-target?error=stash-failed`,self.location.origin).href,303))}async function Ee(){try{if(!await caches.has(`share-target-inbox`))return;let t=await caches.open(e),n=await t.keys(),r=new Set;for(let e of n){let{pathname:n}=new URL(e.url);if(!n.endsWith(`/meta`))continue;let i=n.split(`/`)[2];if(!i)continue;let a=0;try{let n=await t.match(e);a=n?Number((await n.json()).stashedAt??0):0}catch{}(!a||Date.now()-a>be)&&r.add(i)}await Promise.all(n.filter(e=>r.has(new URL(e.url).pathname.split(`/`)[2])).map(e=>t.delete(e)))}catch(e){console.error(`[sw] share inbox prune failed`,e)}}
1
+ var e=`share-target-inbox`;async function t(e,t,n){let r=`/share-target-inbox/${t}`,i=[],a=async e=>{await Promise.all(i.map(e=>n.delete(e))),await n.put(`${r}/meta`,new Response(JSON.stringify({status:`error`,error:e,stashedAt:Date.now()})))};try{if(Number(e.headers.get(`content-length`))>105906176){await e.body?.cancel().catch(()=>{}),await a(`too-large`);return}let t=await e.formData(),o=t.getAll(`files`).filter(e=>e instanceof File);if(o.some(e=>e.size===0)){await a(`empty-file`);return}if(o.reduce((e,t)=>e+t.size,0)>104857600){await a(`too-large`);return}let s=e=>{let n=t.get(e);return typeof n==`string`?n:``},c=s(`title`),l=s(`text`),u=s(`url`);if(!o.length&&![c,l,u].some(e=>e.trim())){await a(`empty-share`);return}for(let[e,t]of o.entries()){let a=`${r}/file-${e}`;await n.put(a,new Response(t,{headers:{"Content-Type":t.type||`application/octet-stream`}})),i.push(a)}await n.put(`${r}/meta`,new Response(JSON.stringify({status:`ready`,title:c,text:l,url:u,fileNames:o.map(e=>e.name),stashedAt:Date.now()})))}catch{await a(`stash-failed`)}}try{self[`workbox:core:7.4.0`]&&_()}catch{}var n=(e,...t)=>{let n=e;return t.length>0&&(n+=` :: ${JSON.stringify(t)}`),n},r=class extends Error{constructor(e,t){let r=n(e,t);super(r),this.name=e,this.details=t}},i={googleAnalytics:`googleAnalytics`,precache:`precache-v2`,prefix:`workbox`,runtime:`runtime`,suffix:typeof registration<`u`?registration.scope:``},a=e=>[i.prefix,e,i.suffix].filter(e=>e&&e.length>0).join(`-`),o=e=>{for(let t of Object.keys(i))e(t)},s={updateDetails:e=>{o(t=>{typeof e[t]==`string`&&(i[t]=e[t])})},getGoogleAnalyticsName:e=>e||a(i.googleAnalytics),getPrecacheName:e=>e||a(i.precache),getPrefix:()=>i.prefix,getRuntimeName:e=>e||a(i.runtime),getSuffix:()=>i.suffix};function c(e,t){let n=t();return e.waitUntil(n),n}try{self[`workbox:precaching:7.4.0`]&&_()}catch{}var l=`__WB_REVISION__`;function u(e){if(!e)throw new r(`add-to-cache-list-unexpected-type`,{entry:e});if(typeof e==`string`){let t=new URL(e,location.href);return{cacheKey:t.href,url:t.href}}let{revision:t,url:n}=e;if(!n)throw new r(`add-to-cache-list-unexpected-type`,{entry:e});if(!t){let e=new URL(n,location.href);return{cacheKey:e.href,url:e.href}}let i=new URL(n,location.href),a=new URL(n,location.href);return i.searchParams.set(l,t),{cacheKey:i.href,url:a.href}}var ee=class{constructor(){this.updatedURLs=[],this.notUpdatedURLs=[],this.handlerWillStart=async({request:e,state:t})=>{t&&(t.originalRequest=e)},this.cachedResponseWillBeUsed=async({event:e,state:t,cachedResponse:n})=>{if(e.type===`install`&&t&&t.originalRequest&&t.originalRequest instanceof Request){let e=t.originalRequest.url;n?this.notUpdatedURLs.push(e):this.updatedURLs.push(e)}return n}}},te=class{constructor({precacheController:e}){this.cacheKeyWillBeUsed=async({request:e,params:t})=>{let n=t?.cacheKey||this._precacheController.getCacheKeyForURL(e.url);return n?new Request(n,{headers:e.headers}):e},this._precacheController=e}},d;function ne(){if(d===void 0){let e=new Response(``);if(`body`in e)try{new Response(e.body),d=!0}catch{d=!1}d=!1}return d}async function re(e,t){let n=null;if(e.url&&(n=new URL(e.url).origin),n!==self.location.origin)throw new r(`cross-origin-copy-response`,{origin:n});let i=e.clone(),a={headers:new Headers(i.headers),status:i.status,statusText:i.statusText},o=t?t(a):a,s=ne()?i.body:await i.blob();return new Response(s,o)}var ie=e=>new URL(String(e),location.href).href.replace(RegExp(`^${location.origin}`),``);function f(e,t){let n=new URL(e);for(let e of t)n.searchParams.delete(e);return n.href}async function ae(e,t,n,r){let i=f(t.url,n);if(t.url===i)return e.match(t,r);let a=Object.assign(Object.assign({},r),{ignoreSearch:!0}),o=await e.keys(t,a);for(let t of o)if(i===f(t.url,n))return e.match(t,r)}var oe=class{constructor(){this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}},p=new Set;async function m(){for(let e of p)await e()}function h(e){return new Promise(t=>setTimeout(t,e))}try{self[`workbox:strategies:7.4.0`]&&_()}catch{}function g(e){return typeof e==`string`?new Request(e):e}var se=class{constructor(e,t){this._cacheKeys={},Object.assign(this,t),this.event=t.event,this._strategy=e,this._handlerDeferred=new oe,this._extendLifetimePromises=[],this._plugins=[...e.plugins],this._pluginStateMap=new Map;for(let e of this._plugins)this._pluginStateMap.set(e,{});this.event.waitUntil(this._handlerDeferred.promise)}async fetch(e){let{event:t}=this,n=g(e);if(n.mode===`navigate`&&t instanceof FetchEvent&&t.preloadResponse){let e=await t.preloadResponse;if(e)return e}let i=this.hasCallback(`fetchDidFail`)?n.clone():null;try{for(let e of this.iterateCallbacks(`requestWillFetch`))n=await e({request:n.clone(),event:t})}catch(e){if(e instanceof Error)throw new r(`plugin-error-request-will-fetch`,{thrownErrorMessage:e.message})}let a=n.clone();try{let e;e=await fetch(n,n.mode===`navigate`?void 0:this._strategy.fetchOptions);for(let n of this.iterateCallbacks(`fetchDidSucceed`))e=await n({event:t,request:a,response:e});return e}catch(e){throw i&&await this.runCallbacks(`fetchDidFail`,{error:e,event:t,originalRequest:i.clone(),request:a.clone()}),e}}async fetchAndCachePut(e){let t=await this.fetch(e),n=t.clone();return this.waitUntil(this.cachePut(e,n)),t}async cacheMatch(e){let t=g(e),n,{cacheName:r,matchOptions:i}=this._strategy,a=await this.getCacheKey(t,`read`),o=Object.assign(Object.assign({},i),{cacheName:r});n=await caches.match(a,o);for(let e of this.iterateCallbacks(`cachedResponseWillBeUsed`))n=await e({cacheName:r,matchOptions:i,cachedResponse:n,request:a,event:this.event})||void 0;return n}async cachePut(e,t){let n=g(e);await h(0);let i=await this.getCacheKey(n,`write`);if(!t)throw new r(`cache-put-with-no-response`,{url:ie(i.url)});let a=await this._ensureResponseSafeToCache(t);if(!a)return!1;let{cacheName:o,matchOptions:s}=this._strategy,c=await self.caches.open(o),l=this.hasCallback(`cacheDidUpdate`),u=l?await ae(c,i.clone(),[`__WB_REVISION__`],s):null;try{await c.put(i,l?a.clone():a)}catch(e){if(e instanceof Error)throw e.name===`QuotaExceededError`&&await m(),e}for(let e of this.iterateCallbacks(`cacheDidUpdate`))await e({cacheName:o,oldResponse:u,newResponse:a.clone(),request:i,event:this.event});return!0}async getCacheKey(e,t){let n=`${e.url} | ${t}`;if(!this._cacheKeys[n]){let r=e;for(let e of this.iterateCallbacks(`cacheKeyWillBeUsed`))r=g(await e({mode:t,request:r,event:this.event,params:this.params}));this._cacheKeys[n]=r}return this._cacheKeys[n]}hasCallback(e){for(let t of this._strategy.plugins)if(e in t)return!0;return!1}async runCallbacks(e,t){for(let n of this.iterateCallbacks(e))await n(t)}*iterateCallbacks(e){for(let t of this._strategy.plugins)if(typeof t[e]==`function`){let n=this._pluginStateMap.get(t);yield r=>{let i=Object.assign(Object.assign({},r),{state:n});return t[e](i)}}}waitUntil(e){return this._extendLifetimePromises.push(e),e}async doneWaiting(){for(;this._extendLifetimePromises.length;){let e=this._extendLifetimePromises.splice(0),t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason}}destroy(){this._handlerDeferred.resolve(null)}async _ensureResponseSafeToCache(e){let t=e,n=!1;for(let e of this.iterateCallbacks(`cacheWillUpdate`))if(t=await e({request:this.request,response:t,event:this.event})||void 0,n=!0,!t)break;return n||t&&t.status!==200&&(t=void 0),t}},ce=class{constructor(e={}){this.cacheName=s.getRuntimeName(e.cacheName),this.plugins=e.plugins||[],this.fetchOptions=e.fetchOptions,this.matchOptions=e.matchOptions}handle(e){let[t]=this.handleAll(e);return t}handleAll(e){e instanceof FetchEvent&&(e={event:e,request:e.request});let t=e.event,n=typeof e.request==`string`?new Request(e.request):e.request,r=`params`in e?e.params:void 0,i=new se(this,{event:t,request:n,params:r}),a=this._getResponse(i,n,t);return[a,this._awaitComplete(a,i,n,t)]}async _getResponse(e,t,n){await e.runCallbacks(`handlerWillStart`,{event:n,request:t});let i;try{if(i=await this._handle(t,e),!i||i.type===`error`)throw new r(`no-response`,{url:t.url})}catch(r){if(r instanceof Error){for(let a of e.iterateCallbacks(`handlerDidError`))if(i=await a({error:r,event:n,request:t}),i)break}if(!i)throw r}for(let r of e.iterateCallbacks(`handlerWillRespond`))i=await r({event:n,request:t,response:i});return i}async _awaitComplete(e,t,n,r){let i,a;try{i=await e}catch{}try{await t.runCallbacks(`handlerDidRespond`,{event:r,request:n,response:i}),await t.doneWaiting()}catch(e){e instanceof Error&&(a=e)}if(await t.runCallbacks(`handlerDidComplete`,{event:r,request:n,response:i,error:a}),t.destroy(),a)throw a}},v=class e extends ce{constructor(t={}){t.cacheName=s.getPrecacheName(t.cacheName),super(t),this._fallbackToNetwork=t.fallbackToNetwork!==!1,this.plugins.push(e.copyRedirectedCacheableResponsesPlugin)}async _handle(e,t){return await t.cacheMatch(e)||(t.event&&t.event.type===`install`?await this._handleInstall(e,t):await this._handleFetch(e,t))}async _handleFetch(e,t){let n,i=t.params||{};if(this._fallbackToNetwork){let r=i.integrity,a=e.integrity,o=!a||a===r;n=await t.fetch(new Request(e,{integrity:e.mode===`no-cors`?void 0:a||r})),r&&o&&e.mode!==`no-cors`&&(this._useDefaultCacheabilityPluginIfNeeded(),await t.cachePut(e,n.clone()))}else throw new r(`missing-precache-entry`,{cacheName:this.cacheName,url:e.url});return n}async _handleInstall(e,t){this._useDefaultCacheabilityPluginIfNeeded();let n=await t.fetch(e);if(!await t.cachePut(e,n.clone()))throw new r(`bad-precaching-response`,{url:e.url,status:n.status});return n}_useDefaultCacheabilityPluginIfNeeded(){let t=null,n=0;for(let[r,i]of this.plugins.entries())i!==e.copyRedirectedCacheableResponsesPlugin&&(i===e.defaultPrecacheCacheabilityPlugin&&(t=r),i.cacheWillUpdate&&n++);n===0?this.plugins.push(e.defaultPrecacheCacheabilityPlugin):n>1&&t!==null&&this.plugins.splice(t,1)}};v.defaultPrecacheCacheabilityPlugin={async cacheWillUpdate({response:e}){return!e||e.status>=400?null:e}},v.copyRedirectedCacheableResponsesPlugin={async cacheWillUpdate({response:e}){return e.redirected?await re(e):e}};var le=class{constructor({cacheName:e,plugins:t=[],fallbackToNetwork:n=!0}={}){this._urlsToCacheKeys=new Map,this._urlsToCacheModes=new Map,this._cacheKeysToIntegrities=new Map,this._strategy=new v({cacheName:s.getPrecacheName(e),plugins:[...t,new te({precacheController:this})],fallbackToNetwork:n}),this.install=this.install.bind(this),this.activate=this.activate.bind(this)}get strategy(){return this._strategy}precache(e){this.addToCacheList(e),this._installAndActiveListenersAdded||=(self.addEventListener(`install`,this.install),self.addEventListener(`activate`,this.activate),!0)}addToCacheList(e){let t=[];for(let n of e){typeof n==`string`?t.push(n):n&&n.revision===void 0&&t.push(n.url);let{cacheKey:e,url:i}=u(n),a=typeof n!=`string`&&n.revision?`reload`:`default`;if(this._urlsToCacheKeys.has(i)&&this._urlsToCacheKeys.get(i)!==e)throw new r(`add-to-cache-list-conflicting-entries`,{firstEntry:this._urlsToCacheKeys.get(i),secondEntry:e});if(typeof n!=`string`&&n.integrity){if(this._cacheKeysToIntegrities.has(e)&&this._cacheKeysToIntegrities.get(e)!==n.integrity)throw new r(`add-to-cache-list-conflicting-integrities`,{url:i});this._cacheKeysToIntegrities.set(e,n.integrity)}if(this._urlsToCacheKeys.set(i,e),this._urlsToCacheModes.set(i,a),t.length>0){let e=`Workbox is precaching URLs without revision info: ${t.join(`, `)}\nThis is generally NOT safe. Learn more at https://bit.ly/wb-precache`;console.warn(e)}}}install(e){return c(e,async()=>{let t=new ee;this.strategy.plugins.push(t);for(let[t,n]of this._urlsToCacheKeys){let r=this._cacheKeysToIntegrities.get(n),i=this._urlsToCacheModes.get(t),a=new Request(t,{integrity:r,cache:i,credentials:`same-origin`});await Promise.all(this.strategy.handleAll({params:{cacheKey:n},request:a,event:e}))}let{updatedURLs:n,notUpdatedURLs:r}=t;return{updatedURLs:n,notUpdatedURLs:r}})}activate(e){return c(e,async()=>{let e=await self.caches.open(this.strategy.cacheName),t=await e.keys(),n=new Set(this._urlsToCacheKeys.values()),r=[];for(let i of t)n.has(i.url)||(await e.delete(i),r.push(i.url));return{deletedURLs:r}})}getURLsToCacheKeys(){return this._urlsToCacheKeys}getCachedURLs(){return[...this._urlsToCacheKeys.keys()]}getCacheKeyForURL(e){let t=new URL(e,location.href);return this._urlsToCacheKeys.get(t.href)}getIntegrityForCacheKey(e){return this._cacheKeysToIntegrities.get(e)}async matchPrecache(e){let t=e instanceof Request?e.url:e,n=this.getCacheKeyForURL(t);if(n)return(await self.caches.open(this.strategy.cacheName)).match(n)}createHandlerBoundToURL(e){let t=this.getCacheKeyForURL(e);if(!t)throw new r(`non-precached-url`,{url:e});return n=>(n.request=new Request(e),n.params=Object.assign({cacheKey:t},n.params),this.strategy.handle(n))}},y,b=()=>(y||=new le,y);try{self[`workbox:routing:7.4.0`]&&_()}catch{}var x=e=>e&&typeof e==`object`?e:{handle:e},S=class{constructor(e,t,n=`GET`){this.handler=x(t),this.match=e,this.method=n}setCatchHandler(e){this.catchHandler=x(e)}},ue=class extends S{constructor(e,t,n){super(({url:t})=>{let n=e.exec(t.href);if(n&&(t.origin===location.origin||n.index===0))return n.slice(1)},t,n)}},de=class{constructor(){this._routes=new Map,this._defaultHandlerMap=new Map}get routes(){return this._routes}addFetchListener(){self.addEventListener(`fetch`,(e=>{let{request:t}=e,n=this.handleRequest({request:t,event:e});n&&e.respondWith(n)}))}addCacheListener(){self.addEventListener(`message`,(e=>{if(e.data&&e.data.type===`CACHE_URLS`){let{payload:t}=e.data,n=Promise.all(t.urlsToCache.map(t=>{typeof t==`string`&&(t=[t]);let n=new Request(...t);return this.handleRequest({request:n,event:e})}));e.waitUntil(n),e.ports&&e.ports[0]&&n.then(()=>e.ports[0].postMessage(!0))}}))}handleRequest({request:e,event:t}){let n=new URL(e.url,location.href);if(!n.protocol.startsWith(`http`))return;let r=n.origin===location.origin,{params:i,route:a}=this.findMatchingRoute({event:t,request:e,sameOrigin:r,url:n}),o=a&&a.handler,s=e.method;if(!o&&this._defaultHandlerMap.has(s)&&(o=this._defaultHandlerMap.get(s)),!o)return;let c;try{c=o.handle({url:n,request:e,event:t,params:i})}catch(e){c=Promise.reject(e)}let l=a&&a.catchHandler;return c instanceof Promise&&(this._catchHandler||l)&&(c=c.catch(async r=>{if(l)try{return await l.handle({url:n,request:e,event:t,params:i})}catch(e){e instanceof Error&&(r=e)}if(this._catchHandler)return this._catchHandler.handle({url:n,request:e,event:t});throw r})),c}findMatchingRoute({url:e,sameOrigin:t,request:n,event:r}){let i=this._routes.get(n.method)||[];for(let a of i){let i,o=a.match({url:e,sameOrigin:t,request:n,event:r});if(o)return i=o,(Array.isArray(i)&&i.length===0||o.constructor===Object&&Object.keys(o).length===0||typeof o==`boolean`)&&(i=void 0),{route:a,params:i}}return{}}setDefaultHandler(e,t=`GET`){this._defaultHandlerMap.set(t,x(e))}setCatchHandler(e){this._catchHandler=x(e)}registerRoute(e){this._routes.has(e.method)||this._routes.set(e.method,[]),this._routes.get(e.method).push(e)}unregisterRoute(e){if(!this._routes.has(e.method))throw new r(`unregister-route-but-not-found-with-method`,{method:e.method});let t=this._routes.get(e.method).indexOf(e);if(t>-1)this._routes.get(e.method).splice(t,1);else throw new r(`unregister-route-route-not-registered`)}},C,fe=()=>(C||(C=new de,C.addFetchListener(),C.addCacheListener()),C);function pe(e,t,n){let i;if(typeof e==`string`){let r=new URL(e,location.href);i=new S(({url:e})=>e.href===r.href,t,n)}else if(e instanceof RegExp)i=new ue(e,t,n);else if(typeof e==`function`)i=new S(e,t,n);else if(e instanceof S)i=e;else throw new r(`unsupported-route-type`,{moduleName:`workbox-routing`,funcName:`registerRoute`,paramName:`capture`});return fe().registerRoute(i),i}function me(e,t=[]){for(let n of[...e.searchParams.keys()])t.some(e=>e.test(n))&&e.searchParams.delete(n);return e}function*he(e,{ignoreURLParametersMatching:t=[/^utm_/,/^fbclid$/],directoryIndex:n=`index.html`,cleanURLs:r=!0,urlManipulation:i}={}){let a=new URL(e,location.href);a.hash=``,yield a.href;let o=me(a,t);if(yield o.href,n&&o.pathname.endsWith(`/`)){let e=new URL(o.href);e.pathname+=n,yield e.href}if(r){let e=new URL(o.href);e.pathname+=`.html`,yield e.href}if(i){let e=i({url:a});for(let t of e)yield t.href}}var w=class extends S{constructor(e,t){super(({request:n})=>{let r=e.getURLsToCacheKeys();for(let i of he(n.url,t)){let t=r.get(i);if(t)return{cacheKey:t,integrity:e.getIntegrityForCacheKey(t)}}},e.strategy)}};function T(e){pe(new w(b(),e))}var E=`-precache-`,D=async(e,t=E)=>{let n=(await self.caches.keys()).filter(n=>n.includes(t)&&n.includes(self.registration.scope)&&n!==e);return await Promise.all(n.map(e=>self.caches.delete(e))),n};function O(){self.addEventListener(`activate`,(e=>{let t=s.getPrecacheName();e.waitUntil(D(t).then(e=>{}))}))}function k(e){return b().matchPrecache(e)}function A(e){b().precache(e)}function j(e,t){A(e),T(t)}var M=`offline-content-v1`,N=`offline-api-v1`,P={enabled:!1,budgetBytes:4294967296,excludedWorkspaces:[]};function F(e){let t=e.match(/^\/rest\/v2\/workspaces\/([^/?#]+)/);return t?decodeURIComponent(t[1]):null}var I=1e3,L=`canvas-offline`,R=2,z=null;function B(){return z||(z=new Promise((e,t)=>{let n=indexedDB.open(L,R);n.onupgradeneeded=e=>{let t=n.result;if(t.objectStoreNames.contains(`config`)||t.createObjectStore(`config`),t.objectStoreNames.contains(`entries`)||t.createObjectStore(`entries`,{keyPath:`url`}),e.oldVersion>=1&&t.objectStoreNames.contains(`pins`)){t.deleteObjectStore(`pins`);let e=n.transaction.objectStore(`entries`).openCursor();e.onsuccess=()=>{let t=e.result;if(!t)return;let n=t.value;n.pinned&&t.update({...n,pinned:!1}),t.continue()}}t.objectStoreNames.contains(`scopes`)||t.createObjectStore(`scopes`,{keyPath:`id`})},n.onsuccess=()=>{n.result.onversionchange=()=>{n.result.close(),z=null},e(n.result)},n.onerror=()=>{z=null,t(n.error)}}),z)}function V(e){return new Promise((t,n)=>{e.oncomplete=()=>t(),e.onerror=()=>n(e.error),e.onabort=()=>n(e.error)})}function H(e){return new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error)})}async function U(e,t){return H((await B()).transaction(e).objectStore(e).get(t))}async function ge(e){return H((await B()).transaction(e).objectStore(e).getAll())}async function W(e,t,n){let r=(await B()).transaction(e,`readwrite`);return r.objectStore(e).put(t,n),V(r)}async function G(e,t){let n=(await B()).transaction(e,`readwrite`);return n.objectStore(e).delete(t),V(n)}async function _e(){try{let e=await U(`config`,`settings`);return e?{...P,...e}:P}catch{return P}}async function K(e,t,n){let r=await U(`entries`,e);await W(`entries`,{url:e,kind:t,size:n,lastAccess:Date.now(),pinned:r?.pinned??!1})}var ve=6e4,q=new Map;async function J(e){let t=q.get(e),n=Date.now();if(t&&n-t<ve)return;q.set(e,n),q.size>4096&&q.clear();let r=await U(`entries`,e);r&&await W(`entries`,{...r,lastAccess:n})}async function ye(e){let t=await ge(`entries`),n=t.filter(e=>e.kind===`api`).sort((e,t)=>e.lastAccess-t.lastAccess),r=n.slice(0,Math.max(0,n.length-I)),i=t.filter(e=>e.kind===`content`),a=i.reduce((e,t)=>e+t.size,0),o=i.filter(e=>!e.pinned).sort((e,t)=>e.lastAccess-t.lastAccess),s=[];for(let t of o){if(a<=e)break;s.push(t),a-=t.size}if(!r.length&&!s.length)return;let[c,l]=await Promise.all([caches.open(N),caches.open(M)]);await Promise.all([...r.map(async e=>{await c.delete(e.url),await G(`entries`,e.url)}),...s.map(async e=>{await l.delete(e.url),await G(`entries`,e.url)})])}O(),j([{"revision":"89517fab2aeaa6f8963d5415c1f90773","url":"index.html"},{"revision":"d0c188df2432c882c53e561e64cd29a2","url":"favicon_wl.png"},{"revision":"243f17f04cf5eb5b298d9701dbd3b4b9","url":"favicon.png"},{"revision":"339e5b64fa2c186631343b5399fe3898","url":"wallpapers/files/canvas_3.svg"},{"revision":"b164dca13ae630411fdc766586da3f61","url":"wallpapers/files/canvas_1.svg"},{"revision":"6ffe60f1b1d220a5b59ef1fe376122f6","url":"screenshots/s3.png"},{"revision":"be57d83f15923b5351a2a7cde1f35bf8","url":"screenshots/s2.png"},{"revision":"c3af5f4e79b0e4b5794d10e1ed3be39a","url":"screenshots/s1.png"},{"revision":"265dfc3ecb9788a5ae8974ec254ac651","url":"js/particles.min.js"},{"revision":"443e87a6d23acf7c849051ffd38106db","url":"images/logo_orig.png"},{"revision":"d0c188df2432c882c53e561e64cd29a2","url":"images/logo_64x64.png"},{"revision":"1c314d3790ee0733defb3e75079ba8d9","url":"images/logo_512x512.png"},{"revision":"d6363d0e5249f161c4b7d78045a210e5","url":"images/logo_256x256.png"},{"revision":"6f763ad15fbd8e2e93893c0d98a9905d","url":"images/logo_128x128.png"},{"revision":"bc4e038a89ae062004dd9ff297bba3f5","url":"images/logo_1024x1024.png"},{"revision":"1c1dcdd3b47bee973de6f323b504dda5","url":"images/logo-wr_orig.png"},{"revision":"34a0677b471ec1dcf5f25eeac90539e2","url":"images/logo-wr_64x64.png"},{"revision":"de6735f441492f065a0da94eacb982de","url":"images/logo-wr_512x512.png"},{"revision":"3018eca652753d237061b855645f93c9","url":"images/logo-wr_256x256.png"},{"revision":"509310a186188c5b0751569a536ee83a","url":"images/logo-wr_128x128.png"},{"revision":"c23aea3f0209c8f5817796449af52472","url":"images/logo-wr_1024x1024.png"},{"revision":"8119caf9106c961943456e5113c26cfc","url":"images/logo-br_orig.png"},{"revision":"ed7721ca00c7df91460006ae11340980","url":"images/logo-br_64x64.png"},{"revision":"657409bce8f4fe2efaa08f441d91cb26","url":"images/logo-br_512x512.png"},{"revision":"1d1659355d80946eedf1063501b091b8","url":"images/logo-br_256x256.png"},{"revision":"733bf2efe01b5cb056534806772aabd2","url":"images/logo-br_128x128.png"},{"revision":"e7561ccec1eefad2a36e697ddbebcd78","url":"images/logo-br_1024x1024.png"},{"revision":"05d9d6e8842b65d5a6b7f9b83eb6e786","url":"images/logo-bl_orig.png"},{"revision":"243f17f04cf5eb5b298d9701dbd3b4b9","url":"images/logo-bl_64x64.png"},{"revision":"a34687e37e32da4d4c127831c6f9779c","url":"images/logo-bl_512x512.png"},{"revision":"0260dd99a07186b7fc3d101023068658","url":"images/logo-bl_256x256.png"},{"revision":"ddb2b89e0437a22554694e1f0a2b894b","url":"images/logo-bl_128x128.png"},{"revision":"1ca5897439475c3b2acab290959559b9","url":"images/logo-bl_1024x1024.png"},{"revision":"d0c188df2432c882c53e561e64cd29a2","url":"images/favicon.png"},{"revision":"d6363d0e5249f161c4b7d78045a210e5","url":"images/apple-touch-icon.png"},{"revision":"1c314d3790ee0733defb3e75079ba8d9","url":"images/android-chrome-512x512.png"},{"revision":"452c6675af891c549b493895764c855d","url":"images/avatars/default.png"},{"revision":null,"url":"assets/zh-TW-RAJ6MFWO-BTknr43S.js"},{"revision":null,"url":"assets/zh-HK-E62DVLB3-dcRoFFJT.js"},{"revision":null,"url":"assets/zh-CN-LNUGB5OW-N0-P-YPg.js"},{"revision":null,"url":"assets/xychartDiagram-S5SC5T6Z-Cg27DCiq.js"},{"revision":null,"url":"assets/workspace-DtHtsT4U.js"},{"revision":null,"url":"assets/workbox-window.prod.es5-Bd17z0YL.js"},{"revision":null,"url":"assets/wardleyDiagram-VM6X3IG4-XOnMkSi-.js"},{"revision":null,"url":"assets/wardley-WFR3VGLG-C6N1rULY.js"},{"revision":null,"url":"assets/vi-VN-M7AON7JQ-BFEVKFOA.js"},{"revision":null,"url":"assets/vennDiagram-4TSXK5OY-P6FI4YvP.js"},{"revision":null,"url":"assets/utils-BxVxyehK.js"},{"revision":null,"url":"assets/utils-2pl1SbIp.js"},{"revision":null,"url":"assets/use-theme-pnVLU4Kg.js"},{"revision":null,"url":"assets/uk-UA-QMV73CPH-BfWne7LV.js"},{"revision":null,"url":"assets/ui-BX_B5WCf.js"},{"revision":null,"url":"assets/treemap-WGGIJYW6-Cg7tyfH8.js"},{"revision":null,"url":"assets/treeView-Q6P3EWNA-BTTYcvrF.js"},{"revision":null,"url":"assets/tr-TR-DEFEU3FU-Q633YFo2.js"},{"revision":null,"url":"assets/timeline-definition-24CTP7MA-HQ5YMAQc.js"},{"revision":null,"url":"assets/th-TH-HPSO5L25-swaKUA2N.js"},{"revision":null,"url":"assets/text-documents-CXCOKgVf.js"},{"revision":null,"url":"assets/ta-IN-2NMHFXQM-D1gPGRIR.js"},{"revision":null,"url":"assets/swimlanesDiagram-VR7AAH4N-DACbRCkF.js"},{"revision":null,"url":"assets/swimlanes-42K2YHIH-f0gJOzIY.js"},{"revision":null,"url":"assets/sv-SE-XGPEYMSR-CWEjOHYD.js"},{"revision":null,"url":"assets/subtree-transfer-dialog-BcYIA9rf.js"},{"revision":null,"url":"assets/subset-worker.chunk-D4w07nYk.js"},{"revision":null,"url":"assets/subset-shared.chunk-CzQ5JF2O.js"},{"revision":null,"url":"assets/stateDiagram-v2-MP3YSRHH-UMuzQhZ7.js"},{"revision":null,"url":"assets/stateDiagram-D77RDMKH-Dsv4fQ8Y.js"},{"revision":null,"url":"assets/src-CllyRBe0.js"},{"revision":null,"url":"assets/socket-hM4c-ZSl.js"},{"revision":null,"url":"assets/sl-SI-NN7IZMDC-DFJxhRNE.js"},{"revision":null,"url":"assets/sk-SK-C5VTKIMK-NlHjiedH.js"},{"revision":null,"url":"assets/sizeCapture-INFHLROL-B0uUizjq.js"},{"revision":null,"url":"assets/si-LK-N5RQ5JYF-ROLYABqx.js"},{"revision":null,"url":"assets/sha256-CWEv0HLW.js"},{"revision":null,"url":"assets/sequenceDiagram-WJ2MYXX4-Dyn971wT.js"},{"revision":null,"url":"assets/search-COMZIxA7.js"},{"revision":null,"url":"assets/sankeyDiagram-P5KCCOFB-CBdZpflq.js"},{"revision":null,"url":"assets/sanitize-DrVcFY1Q.js"},{"revision":null,"url":"assets/ru-RU-B4JR7IUQ-n637KE87.js"},{"revision":null,"url":"assets/roundRect-D01gJrlt.js"},{"revision":null,"url":"assets/rough.esm-Dy-Kn_BL.js"},{"revision":null,"url":"assets/rolldown-runtime-C0FnF6B9.js"},{"revision":null,"url":"assets/ro-RO-JPDTUUEW-BqxNXAVP.js"},{"revision":null,"url":"assets/requirementDiagram-BXWQKSXE-S99ev3k7.js"},{"revision":null,"url":"assets/react-DQazvoR7.js"},{"revision":null,"url":"assets/railroadDiagram-O6MQD6OU-Cjw_zMBC.js"},{"revision":null,"url":"assets/railroad-peg-WCYAUIDC-BQiIsX_p.js"},{"revision":null,"url":"assets/railroad-ebnf-LZEXJU2U-V0aQVv9m.js"},{"revision":null,"url":"assets/railroad-abnf-HS5TGJTU-Cq7y22IA.js"},{"revision":null,"url":"assets/railroad-74A4TZTK-CGtTWdGc.js"},{"revision":null,"url":"assets/radar-RG4KPBEZ-B6h6pWOs.js"},{"revision":null,"url":"assets/quadrantDiagram-AXDQQJYC-CAXFELe7.js"},{"revision":null,"url":"assets/punycode.es6-ZbLrB_Dn.js"},{"revision":null,"url":"assets/pt-PT-UZXXM6DQ-DXzHR8rJ.js"},{"revision":null,"url":"assets/pt-BR-5N22H2LF-CeODeunU.js"},{"revision":null,"url":"assets/preload-helper-Czpn1I53.js"},{"revision":null,"url":"assets/pl-PL-T2D74RX3-DgfcfsGT.js"},{"revision":null,"url":"assets/pieDiagram-E7YTZNPT-Cs2lygkh.js"},{"revision":null,"url":"assets/pie-WAS4IAKB-qxv01Y8W.js"},{"revision":null,"url":"assets/pica-XznpCgP2.js"},{"revision":null,"url":"assets/percentages-BXMCSKIN-BPGA3zHb.js"},{"revision":null,"url":"assets/pegDiagram-XKGWAZYB-DqjEkpXQ.js"},{"revision":null,"url":"assets/pdf.worker.min-C8Ts8bNu.js"},{"revision":null,"url":"assets/pdf-Ciz5_WNq.js"},{"revision":null,"url":"assets/path-fybaL0A-.js"},{"revision":null,"url":"assets/packet-AYTQ26CC-BSJEH9Lb.js"},{"revision":null,"url":"assets/pa-IN-N4M65BXN-wsiZwueU.js"},{"revision":null,"url":"assets/ordinal-BDEzSJ7C.js"},{"revision":null,"url":"assets/oc-FR-POXYY2M6-Cn1eE_Zu.js"},{"revision":null,"url":"assets/nn-NO-6E72VCQL-Dfy734xI.js"},{"revision":null,"url":"assets/nl-NL-IS3SIHDZ-C4-Hez0V.js"},{"revision":null,"url":"assets/nb-NO-T6EIAALU-BQeWbEx1.js"},{"revision":null,"url":"assets/my-MM-5M5IBNSE-BXTnMvRC.js"},{"revision":null,"url":"assets/mr-IN-CRQNXWMA-9iKXC6Ya.js"},{"revision":null,"url":"assets/mindmap-definition-YA3MSWOX-aAz9cEjj.js"},{"revision":null,"url":"assets/mermaid-parser.core-CN1hT9Tn.js"},{"revision":null,"url":"assets/markdown-it-DRESbtwK.js"},{"revision":null,"url":"assets/markdown-html-d5fDtPv3.js"},{"revision":null,"url":"assets/markdown-html-T86c6cqD.css"},{"revision":null,"url":"assets/map-BxCwdK0d.js"},{"revision":null,"url":"assets/map-BcsP_QXj.css"},{"revision":null,"url":"assets/lv-LV-5QDEKY6T-BTnV-PCT.js"},{"revision":null,"url":"assets/lt-LT-XHIRWOB4-B6H0gZ-C.js"},{"revision":null,"url":"assets/linear-aVQWq3ZZ.js"},{"revision":null,"url":"assets/line-DXCbHsGS.js"},{"revision":null,"url":"assets/ku-TR-6OUDTVRD-Ky7FAdew.js"},{"revision":null,"url":"assets/ko-KR-MTYHY66A-BdMJRRpv.js"},{"revision":null,"url":"assets/km-KH-HSX4SM5Z-CaYVKl3D.js"},{"revision":null,"url":"assets/kk-KZ-P5N5QNE5-D52-yIxL.js"},{"revision":null,"url":"assets/katex-CXMH3UgJ.js"},{"revision":null,"url":"assets/kanban-definition-UXKFOSKX-BqkLgv78.js"},{"revision":null,"url":"assets/kab-KAB-ZGHBKWFO-BXYUMKRc.js"},{"revision":null,"url":"assets/kaa-6HZHGXH3-0hNa4m6s.js"},{"revision":null,"url":"assets/journeyDiagram-3NMN7TZE-CL9Lqe59.js"},{"revision":null,"url":"assets/ja-JP-DBVTYXUO-DSHejo8t.js"},{"revision":null,"url":"assets/it-IT-JPQ66NNP-D6FUHYuZ.js"},{"revision":null,"url":"assets/ishikawaDiagram-5VMMS53U-Hs60L6ow.js"},{"revision":null,"url":"assets/init-C-OQMol4.js"},{"revision":null,"url":"assets/infoDiagram-27XIBGKW-BuJx_j6a.js"},{"revision":null,"url":"assets/info-A6RAGUB7-BlU-8_xu.js"},{"revision":null,"url":"assets/index-Drf8030-.css"},{"revision":null,"url":"assets/index-DNs4Dy_y.js"},{"revision":null,"url":"assets/image-blob-reduce.esm-Dj7YBvMv.js"},{"revision":null,"url":"assets/image-GAAHSSAO-CLJY35GR.js"},{"revision":null,"url":"assets/id-ID-SAP4L64H-ZZuXM5fX.js"},{"revision":null,"url":"assets/icons-DTuc_pxj.js"},{"revision":null,"url":"assets/hu-HU-A5ZG7DT2-BBrlHtCw.js"},{"revision":null,"url":"assets/hi-IN-IWLTKZ5I-Dzr4DvnL.js"},{"revision":null,"url":"assets/he-IL-6SHJWFNN-9Ylp6ncb.js"},{"revision":null,"url":"assets/graphlib-DS17s2tU.js"},{"revision":null,"url":"assets/gl-ES-HMX3MZ6V-4bQs8jWL.js"},{"revision":null,"url":"assets/gitGraphDiagram-WWUBYQGX-D6Gfp0nt.js"},{"revision":null,"url":"assets/gitGraph-4MIJSDKK-DYlXv_yJ.js"},{"revision":null,"url":"assets/ganttDiagram-EL5Y4UJY-BKBiwfwb.js"},{"revision":null,"url":"assets/fr-FR-RHASNOE6-BH99frB1.js"},{"revision":null,"url":"assets/flowDiagram-HODETNUW-BrKzgeF8.js"},{"revision":null,"url":"assets/file-save-745eba88-Bwdfz6OZ.js"},{"revision":null,"url":"assets/file-save-3189631c-CO9S4HFW.js"},{"revision":null,"url":"assets/file-open-7c801643-DZtJT5zp.js"},{"revision":null,"url":"assets/file-open-002ab408-BHUWm0Sh.js"},{"revision":null,"url":"assets/fi-FI-Z5N7JZ37-DC3Y34Y8.js"},{"revision":null,"url":"assets/fa-IR-HGAKTJCU-ddIdgP13.js"},{"revision":null,"url":"assets/eventmodeling-NTZA5JFV-BR2FzK4R.js"},{"revision":null,"url":"assets/eu-ES-A7QVB2H4-CAoFumRj.js"},{"revision":null,"url":"assets/es-ES-U4NZUMDT-D_KzWrdW.js"},{"revision":null,"url":"assets/erDiagram-RLTQ6QDP-CL7FBspC.js"},{"revision":null,"url":"assets/en-B4ZKOASM-BClIFgbE.js"},{"revision":null,"url":"assets/el-GR-BZB4AONW-Chellj6d.js"},{"revision":null,"url":"assets/ebnfDiagram-PWID7BFC-B9wGidHs.js"},{"revision":null,"url":"assets/dist-zgyESmtJ.js"},{"revision":null,"url":"assets/dist-Cz2MTljl.js"},{"revision":null,"url":"assets/directory-open-4ed118d0-1i309Asm.js"},{"revision":null,"url":"assets/directory-open-01563666-D4xXyWb_.js"},{"revision":null,"url":"assets/diagram-Z3DM3KII-aAOMR4aJ.js"},{"revision":null,"url":"assets/diagram-VX7I27RA-D-UFFc5T.js"},{"revision":null,"url":"assets/diagram-VSXAHHWV-BR6t4bem.js"},{"revision":null,"url":"assets/diagram-UQ7AKVKN-CC4synlk.js"},{"revision":null,"url":"assets/diagram-S7CK7UJ4-BCYFjoge.js"},{"revision":null,"url":"assets/defaultLocale-BFoDCU3G.js"},{"revision":null,"url":"assets/de-DE-XR44H4JA-DNaOwkE9.js"},{"revision":null,"url":"assets/dagre-PrKaheQc.js"},{"revision":null,"url":"assets/dagre-GXQ25YYZ-DAaeOVEp.js"},{"revision":null,"url":"assets/da-DK-5WZEPLOC-D55fbhpB.js"},{"revision":null,"url":"assets/cytoscape.esm-CGd-uY3x.js"},{"revision":null,"url":"assets/cynefinDiagram-5FMLGOSQ-Bwsug0X5.js"},{"revision":null,"url":"assets/cynefin-OW5HDTMX-7tP7QfM3.js"},{"revision":null,"url":"assets/cs-CZ-2BRQDIVT-Bz62EbC5.js"},{"revision":null,"url":"assets/cose-bilkent-JH36ORCC-DIeJt_L_.js"},{"revision":null,"url":"assets/classDiagram-v2-VYDZK3BY-DLpT76o5.js"},{"revision":null,"url":"assets/classDiagram-ZZMXUADV-DLpT76o5.js"},{"revision":null,"url":"assets/chunk-Z3N5DIM6-D9TMVU7m.js"},{"revision":null,"url":"assets/chunk-Y2CYZVJY-DsF7k-Jl.js"},{"revision":null,"url":"assets/chunk-XXDRQBXY-CazVBYiP.js"},{"revision":null,"url":"assets/chunk-XHIXRSVI-BFQ6B8BE.js"},{"revision":null,"url":"assets/chunk-UY3FDG6J-CnmaAkG5.js"},{"revision":null,"url":"assets/chunk-TLUHSLCS-C47Epi2D.js"},{"revision":null,"url":"assets/chunk-TICWLB2K-jXepk-qW.js"},{"revision":null,"url":"assets/chunk-SVP7TREG-CoPu3EjZ.js"},{"revision":null,"url":"assets/chunk-SRAX5OIU-Dhm3gOdh.js"},{"revision":null,"url":"assets/chunk-SHT3W25Y-75CQ5pWa.js"},{"revision":null,"url":"assets/chunk-PWAF6VOD-DPI_wv9p.js"},{"revision":null,"url":"assets/chunk-POPQ4Y6H-B7yAy58S.js"},{"revision":null,"url":"assets/chunk-P2QGCYS3-DsGP3wH9.js"},{"revision":null,"url":"assets/chunk-OUJLGHUK-D0j2JRSg.js"},{"revision":null,"url":"assets/chunk-OSK3NFVY-fNjfug78.js"},{"revision":null,"url":"assets/chunk-LNGE3PJU-DWpGwHrW.js"},{"revision":null,"url":"assets/chunk-L3NEJ4N5-Cl0-d4Gu.js"},{"revision":null,"url":"assets/chunk-KI3K4JFJ-Rma-0k_M.js"},{"revision":null,"url":"assets/chunk-K2UTITRG-D0fgw4vC.js"},{"revision":null,"url":"assets/chunk-JWPE2WC7-DVXcaiue.js"},{"revision":null,"url":"assets/chunk-IMKFNOWR-BuKGugNz.js"},{"revision":null,"url":"assets/chunk-IH6LHLGP-CC6I9F3i.js"},{"revision":null,"url":"assets/chunk-ICYGCRZG-749o-pGJ.js"},{"revision":null,"url":"assets/chunk-I5DQTOEV-Hm2LfiYI.js"},{"revision":null,"url":"assets/chunk-GVQU2GXP-BMi2Lqv6.js"},{"revision":null,"url":"assets/chunk-GMAD6QVW-tEmtNh72.js"},{"revision":null,"url":"assets/chunk-FOHPRMQF-DHwB1DNv.js"},{"revision":null,"url":"assets/chunk-F27PBJKO-B8_NVNfE.js"},{"revision":null,"url":"assets/chunk-EIO257PC-CAhBf1ig.js"},{"revision":null,"url":"assets/chunk-DU6HZSFF-BlZbyIL6.js"},{"revision":null,"url":"assets/chunk-CLGD4ZFX-BzBIdJij.js"},{"revision":null,"url":"assets/chunk-75Z2AOVW-CzSd0Veu.js"},{"revision":null,"url":"assets/chunk-747NJXEK-BFkZPlab.js"},{"revision":null,"url":"assets/chunk-6U3AYISY-C6-Mtja1.js"},{"revision":null,"url":"assets/chunk-6TQVIW2G-DKlLbNIP.js"},{"revision":null,"url":"assets/chunk-6K3QC6MW-CqVsVn-y.js"},{"revision":null,"url":"assets/chunk-6EIED4P4-DdUJkP0f.js"},{"revision":null,"url":"assets/chunk-6AZGARVD-BB6FqMl-.js"},{"revision":null,"url":"assets/chunk-5VM5RSS4-ZNzvKenW.js"},{"revision":null,"url":"assets/chunk-5V3GS4D5-i-ZDOEnP.js"},{"revision":null,"url":"assets/chunk-4HAMMTFA-DwG4o-7o.js"},{"revision":null,"url":"assets/chunk-3Z5EZCMW-DMniOlPd.js"},{"revision":null,"url":"assets/chunk-2ZTRR5NV-C2qZJila.js"},{"revision":null,"url":"assets/chunk-2Q5K7J3B-C1jixKkw.js"},{"revision":null,"url":"assets/chunk-2E4U76K2-BX8JWCIb.js"},{"revision":null,"url":"assets/channel-DbE-WRyM.js"},{"revision":null,"url":"assets/ca-ES-6MX7JW3Y-QAg3jm2p.js"},{"revision":null,"url":"assets/c4Diagram-7LVT6UL2-aDTW23RC.js"},{"revision":null,"url":"assets/bn-BD-2XOGV67Q-KCzfC93t.js"},{"revision":null,"url":"assets/blockDiagram-I7D4REHJ-DJlTH4XU.js"},{"revision":null,"url":"assets/blobs-DS4_Kfmr.js"},{"revision":null,"url":"assets/bg-BG-XCXSNQG7-DFFjBv03.js"},{"revision":null,"url":"assets/az-AZ-76LH7QW2-8v0TczD5.js"},{"revision":null,"url":"assets/array-BifhSqXX.js"},{"revision":null,"url":"assets/architectureDiagram-5GKGNRK7-2gVOlDi3.js"},{"revision":null,"url":"assets/architecture-7GRP2DOG-BMOPAkUC.js"},{"revision":null,"url":"assets/arc-SXJSVd7o.js"},{"revision":null,"url":"assets/ar-SA-G6X2FPQ2-BJ7kJfgn.js"},{"revision":null,"url":"assets/alert-dialog-CI8w9egc.js"},{"revision":null,"url":"assets/abnfDiagram-VCTEODGH-Cy_5vShZ.js"},{"revision":null,"url":"assets/TextDocumentEditor-mxm7vP2r.js"},{"revision":null,"url":"assets/SketchEditor-DtRVLazd.css"},{"revision":null,"url":"assets/SketchEditor-CmtlXL5R.js"},{"revision":null,"url":"assets/NextShell-GAavwiyx.js"},{"revision":null,"url":"assets/NextShell-B4NeoNB5.css"},{"revision":null,"url":"assets/MarkdownEditor-Dr8VNJNY.js"},{"revision":null,"url":"assets/MarkdownEditor-ByK7DHQ0.css"},{"revision":null,"url":"assets/LocationTab-ARqmeXmv.js"},{"revision":null,"url":"assets/EditorOverlay-Dqn7acGf.js"},{"revision":"1c314d3790ee0733defb3e75079ba8d9","url":"images/android-chrome-512x512.png"},{"revision":"bc4e038a89ae062004dd9ff297bba3f5","url":"images/logo_1024x1024.png"},{"revision":"6f763ad15fbd8e2e93893c0d98a9905d","url":"images/logo_128x128.png"},{"revision":"d6363d0e5249f161c4b7d78045a210e5","url":"images/logo_256x256.png"},{"revision":"1c314d3790ee0733defb3e75079ba8d9","url":"images/logo_512x512.png"},{"revision":"d0c188df2432c882c53e561e64cd29a2","url":"images/logo_64x64.png"},{"revision":"caa9715e027d2757550109f1f9653d7c","url":"manifest.webmanifest"}]),self.addEventListener(`message`,e=>{e.data&&e.data.type===`SKIP_WAITING`&&self.skipWaiting()}),self.addEventListener(`activate`,e=>{e.waitUntil(Promise.all([self.clients.claim(),Ee()]))});var be=864e5,Y=/^\/rest\/v2\/workspaces\/[^/]+\/documents\/[^/]+\/(content|thumbnail)$/,xe=/^\/rest\/v2\/(auth|admin|ping|events)\b/,X=null;async function Z(){if(X&&Date.now()-X.at<1e4)return X.value;let e=await _e().catch(()=>({enabled:!1,budgetBytes:0,excludedWorkspaces:[]}));return X={at:Date.now(),value:e},e}function Q(e,t){let n=F(t);return n!==null&&e.excludedWorkspaces.includes(n)}self.addEventListener(`message`,e=>{e.data&&e.data.type===`OFFLINE_SETTINGS_CHANGED`&&(X=null)}),self.addEventListener(`fetch`,e=>{let{request:t}=e,n=new URL(t.url);if(t.method===`POST`&&n.pathname===`/share-target`){e.respondWith(Te(e));return}if(t.method===`GET`&&n.origin===self.location.origin&&n.pathname.startsWith(`/rest/v2/`)){if(Y.test(n.pathname)&&!n.searchParams.has(`download`)&&!t.headers.has(`range`)){e.respondWith(Se(e,t));return}if(!xe.test(n.pathname)&&!Y.test(n.pathname)){e.respondWith(Ce(e,t));return}}t.mode===`navigate`&&!$(n.pathname)&&e.respondWith(we(t))});function $(e){return e.startsWith(`/rest/`)||e.startsWith(`/dav/`)||e.startsWith(`/.well-known/`)}async function Se(e,t){let n=await Z();if(!n.enabled||Q(n,new URL(t.url).pathname))return fetch(t);let r=await caches.open(M),i=await r.match(t.url,{ignoreVary:!0});if(i)return e.waitUntil(J(t.url).catch(()=>{})),i;let a=await fetch(t);if(a.ok&&a.status===200){let i=a.clone();e.waitUntil((async()=>{try{await r.put(t.url,i);let e=Number(a.headers.get(`content-length`))||(await(await r.match(t.url))?.blob())?.size||0;await K(t.url,`content`,e),await ye(n.budgetBytes)}catch(e){console.warn(`[sw] offline content cache put failed`,e)}})())}return a}async function Ce(e,t){let n=await Z();if(!n.enabled||Q(n,new URL(t.url).pathname))return fetch(t);try{let n=await fetch(t);if(n.ok&&n.status===200){let r=n.clone();e.waitUntil((async()=>{try{await(await caches.open(N)).put(t.url,r),await K(t.url,`api`,Number(n.headers.get(`content-length`))||0)}catch(e){console.warn(`[sw] offline api cache put failed`,e)}})())}return n}catch(n){let r=await(await caches.open(N)).match(t.url,{ignoreVary:!0});if(r){e.waitUntil(J(t.url).catch(()=>{}));let n=new Headers(r.headers);return n.set(`X-Canvas-Offline`,`fallback`),new Response(r.body,{status:r.status,statusText:r.statusText,headers:n})}throw n}}async function we(e){try{return await fetch(e)}catch{let e=await k(`/index.html`);if(e)return e;throw Error(`offline and index.html is not precached`)}}function Te(n){let r=crypto.randomUUID();return caches.open(e).then(async e=>(await e.put(`/share-target-inbox/${r}/meta`,new Response(JSON.stringify({status:`receiving`,stashedAt:Date.now()}))),e)).then(e=>t(n.request,r,e)).then(()=>Response.redirect(new URL(`/share-target?token=${r}`,self.location.origin).href,303),()=>Response.redirect(new URL(`/share-target?error=stash-failed`,self.location.origin).href,303))}async function Ee(){try{if(!await caches.has(`share-target-inbox`))return;let t=await caches.open(e),n=await t.keys(),r=new Set;for(let e of n){let{pathname:n}=new URL(e.url);if(!n.endsWith(`/meta`))continue;let i=n.split(`/`)[2];if(!i)continue;let a=0;try{let n=await t.match(e);a=n?Number((await n.json()).stashedAt??0):0}catch{}(!a||Date.now()-a>be)&&r.add(i)}await Promise.all(n.filter(e=>r.has(new URL(e.url).pathname.split(`/`)[2])).map(e=>t.delete(e)))}catch(e){console.error(`[sw] share inbox prune failed`,e)}}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@augmentd-labs/canvas-web",
3
- "version": "2.15.4",
3
+ "version": "2.15.8",
4
4
  "description": "Canvas web UI (prebuilt dist)",
5
5
  "license": "AGPL-3.0-or-later",
6
6
  "author": "Jozef Melich <me@idnc.sk>",
@@ -12,5 +12,5 @@
12
12
  "dist",
13
13
  "NOTICE"
14
14
  ],
15
- "canvasRev": "d569de7"
15
+ "canvasRev": "c2aaa68"
16
16
  }
@@ -1 +0,0 @@
1
- import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{Ct as t,wt as n,xt as r}from"./react-DQazvoR7.js";import{Dn as i,Xt as a,fi as o,rn as s}from"./ui-BX_B5WCf.js";import{t as c}from"./utils-2pl1SbIp.js";import{In as l}from"./workspace-BnBIVxoH.js";var u=e(n(),1),d=e(t(),1),f=r();function p({title:e,onClose:t,onDetails:n,actions:r,children:p}){let[m,h]=(0,u.useState)(!0);return(0,d.createPortal)((0,f.jsx)(`div`,{className:c(`fixed inset-0 z-fullscreen flex bg-scrim`,m?`p-0`:`p-4 md:p-10`),children:(0,f.jsxs)(`div`,{className:c(`flex min-h-0 w-full flex-col overflow-hidden bg-background surface-glass`,m?``:`rounded-lg border shadow-elevation-4`),children:[(0,f.jsxs)(`div`,{className:`flex h-12 shrink-0 items-center gap-2 border-b px-3`,children:[(0,f.jsx)(l,{variant:`ghost`,size:`sm`,onClick:t,"aria-label":`Back`,title:`Back`,children:(0,f.jsx)(o,{className:`h-4 w-4`})}),e,(0,f.jsx)(`div`,{className:`flex-1`}),n&&(0,f.jsxs)(l,{variant:`ghost`,size:`sm`,onClick:n,title:`Edit details (title, tags, comment)`,children:[(0,f.jsx)(i,{className:`mr-1.5 h-4 w-4`}),` Details`]}),(0,f.jsx)(l,{variant:`ghost`,size:`sm`,onClick:()=>h(e=>!e),title:m?`Restore`:`Maximize`,"aria-label":m?`Restore`:`Maximize`,children:m?(0,f.jsx)(a,{className:`h-4 w-4`}):(0,f.jsx)(s,{className:`h-4 w-4`})}),r]}),(0,f.jsx)(`div`,{className:`min-h-0 flex-1`,children:p})]})}),window.document.body)}export{p as t};
@@ -1 +0,0 @@
1
- import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{wt as t,xt as n}from"./react-DQazvoR7.js";import{Ct as r}from"./ui-BX_B5WCf.js";import{In as i,dn as a}from"./workspace-BnBIVxoH.js";import{f as o,o as s}from"./blobs-bUMClq1N.js";import{_ as c,a as l,c as u,i as d,n as f,o as p,r as m,t as h}from"./text-documents-seImmPVm.js";import{t as g}from"./EditorOverlay-B3kjuXI-.js";var _=e(t(),1),v=n();function y({doc:e,workspaceName:t,onSaved:n,onClose:y,onDetails:b}){let{showSuccessToast:x,showErrorToast:S}=s(),C=e.schema===o,w=d(e),T=w&&l(e),E=m(e)??`markdown`,D=u(t,e.id,{mode:`text`,enabled:w&&!T,maxTextLength:f,version:e.checksumArray?.[0]??null}),[O,k]=(0,_.useState)(C?String(e.data?.content??``):``),[A,j]=(0,_.useState)(null),M=`${e.id}:${e.checksumArray?.[0]??``}`;w&&D.text!=null&&A!==M&&(j(M),k(D.text));let[N,P]=(0,_.useState)(!1),F=C||D.text!=null&&!D.loading,I=async()=>{P(!0);try{C?await a(t,{id:e.id,schema:e.schema,schemaVersion:e.schemaVersion,data:{...e.data,content:O}}):await h(t,e,O),x(`Document saved`),window.dispatchEvent(new CustomEvent(`workspace:documents:refresh`)),n()}catch(e){S(e instanceof Error?e.message:`Failed to save document`)}finally{P(!1)}},L=C?String(e.data?.title??`Note`):c(e)||`document-${e.id}`;return(0,v.jsx)(g,{onClose:y,onDetails:b,title:(0,v.jsx)(`span`,{className:`truncate text-sm font-medium`,children:L}),actions:(0,v.jsxs)(i,{size:`sm`,onClick:I,disabled:N||!F||T,children:[(0,v.jsx)(r,{className:`mr-1.5 h-4 w-4`}),N?`Saving…`:`Save`]}),children:(0,v.jsx)(`div`,{className:`flex h-full min-h-0 flex-col px-4 py-4 md:px-8`,children:(0,v.jsx)(`div`,{className:`mx-auto flex min-h-0 w-full max-w-3xl flex-1 flex-col`,children:T?(0,v.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`This file is too large to edit here (`,`>`,Math.round(f/1e3),` kB) — download it instead.`]}):D.error?(0,v.jsx)(`p`,{className:`text-sm text-destructive`,children:D.error}):F?(0,v.jsx)(p,{kind:C?`markdown`:E,value:O,onChange:k,placeholder:C?`Write your note…`:void 0,fill:!0}):(0,v.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Loading content…`})})})})}export{y as default};
@@ -1 +0,0 @@
1
- import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{wt as t}from"./react-DQazvoR7.js";import{Mn as n,Tn as r}from"./workspace-BnBIVxoH.js";var i=e(t(),1),a=(0,i.createContext)(void 0);function o(){let e=(0,i.useContext)(a);if(e===void 0)throw Error(`useToast must be used within a ToastContainer`);return e}var s=`data/schema/note`,c=`data/schema/link`,l=`data/schema/tab`,u=`data/schema/file`,d=`data/schema/drawing`,f=`data/schema/message/email`,p=`data/schema/task`,m=`data/schema/identity`;function h(e,t){return e.startsWith(`${t}/`)?e.slice(t.length+1):``}var g={png:`image/png`,jpg:`image/jpeg`,jpeg:`image/jpeg`,gif:`image/gif`,webp:`image/webp`,bmp:`image/bmp`,svg:`image/svg+xml`,avif:`image/avif`,heic:`image/heic`,heif:`image/heif`,mp3:`audio/mpeg`,wav:`audio/wav`,ogg:`audio/ogg`,oga:`audio/ogg`,m4a:`audio/mp4`,flac:`audio/flac`,aac:`audio/aac`,mp4:`video/mp4`,m4v:`video/mp4`,webm:`video/webm`,mov:`video/quicktime`,mkv:`video/x-matroska`,avi:`video/x-msvideo`,ogv:`video/ogg`,pdf:`application/pdf`,md:`text/markdown`,markdown:`text/markdown`,txt:`text/plain`,json:`application/json`,xml:`application/xml`,csv:`text/csv`,log:`text/plain`,yml:`text/yaml`,yaml:`text/yaml`};function _(e){let t=/\.([a-z0-9]+)$/i.exec(e||``);return t?t[1].toLowerCase():``}function v(e){return g[_(e)]}function y(e){return e.startsWith(`image/`)?`image`:e.startsWith(`audio/`)?`audio`:e.startsWith(`video/`)?`video`:e===`application/pdf`?`pdf`:e.startsWith(`text/`)||e.endsWith(`+json`)||e===`application/json`||e===`application/xml`?`text`:null}function b(e,t){if(e===`text/markdown`||/\.(md|markdown)$/i.test(t||``))return`markdown`;if(e&&e!==`application/octet-stream`){let t=y(e);if(t)return t}let n=v(t);if(n){let e=y(n);if(e)return e}return`binary`}function x(e){if(!e)return null;try{let t=new URL(e),n=t.hostname.replace(/^www\.|^m\./,``);if(n===`youtu.be`)return t.pathname.slice(1).split(`/`)[0]||null;if(n===`youtube.com`||n===`youtube-nocookie.com`){if(t.pathname===`/watch`)return t.searchParams.get(`v`);let e=t.pathname.match(/^\/(shorts|embed|live)\/([^/]+)/);if(e)return e[2]}return null}catch{return null}}function S(){let{showToast:e}=o();return{showErrorToast:(t,n=`Error`)=>e({title:n,description:t,variant:`destructive`}),showSuccessToast:(t,n=`Success`)=>e({title:n,description:t})}}async function C(e,t){return r.post(`${n.workspaces}/${e}/blobs`,t,{headers:{"Content-Type":`application/octet-stream`}})}async function w(e,t){return r.post(`${n.workspaces}/${e}/blobs/exists`,{checksums:t})}async function T(e,t,i,{ifMatch:a,contentType:o}={}){let s=t.key.split(`/`).map(encodeURIComponent).join(`/`),c=`${n.workspaces}/${encodeURIComponent(e)}/backends/${encodeURIComponent(t.driver)}/${encodeURIComponent(t.address)}/objects/${s}`;return r.put(c,i,{headers:{"Content-Type":o||`application/octet-stream`,"X-Canvas-Mtime":String(Date.now()),...a?{"If-Match":`"${a}"`}:{"If-None-Match":`*`}}})}function E(e,t,{onProgress:r,signal:i}={}){return O(`${n.workspaces}/${e}/blobs`,`POST`,t,{onProgress:r,signal:i})}function D(e,t,r,i={}){let a=t.key.split(`/`).map(encodeURIComponent).join(`/`);return O(`${n.workspaces}/${encodeURIComponent(e)}/backends/${encodeURIComponent(t.driver)}/${encodeURIComponent(t.address)}/objects/${a}`,`PUT`,r,i,{"If-None-Match":`*`,"X-Canvas-Mtime":String(r.lastModified)})}function O(e,t,n,{onProgress:r,signal:i},a={}){return new Promise((o,s)=>{if(i?.aborted){s(new DOMException(`Upload aborted`,`AbortError`));return}let c=new XMLHttpRequest;c.open(t,e),c.withCredentials=!0,c.responseType=`json`,c.setRequestHeader(`Content-Type`,`application/octet-stream`);for(let[e,t]of Object.entries(a))c.setRequestHeader(e,t);let l=localStorage.getItem(`authToken`);l&&c.setRequestHeader(`Authorization`,`Bearer ${l}`),r&&c.upload.addEventListener(`progress`,e=>{e.lengthComputable&&r(e.loaded,e.total)});let u=()=>c.abort();i?.addEventListener(`abort`,u,{once:!0}),c.addEventListener(`load`,()=>{i?.removeEventListener(`abort`,u);let e=c.response;c.status>=200&&c.status<300&&e?.payload?o(e.payload):s(Error(c.status===412?`A file with this name already exists. Rename the file before uploading; nothing was overwritten.`:e?.message||`Upload failed (HTTP ${c.status})`))}),c.addEventListener(`error`,()=>{i?.removeEventListener(`abort`,u),s(Error(`Network error during upload`))}),c.addEventListener(`abort`,()=>{i?.removeEventListener(`abort`,u),s(new DOMException(`Upload aborted`,`AbortError`))}),c.send(n)})}export{x as _,T as a,f as c,c as d,s as f,h as g,b as h,E as i,u as l,p as m,D as n,S as o,l as p,C as r,d as s,w as t,m as u,a as v,o as y};