@augmentd-labs/canvas-web 2.26.37 → 2.26.39

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.
Files changed (75) hide show
  1. package/dist/assets/{CalendarApplet-BmrEfNPa.js → CalendarApplet-DVUCGIPB.js} +1 -1
  2. package/dist/assets/{FileForm-C35drQ_R.js → FileForm-CMuWZbUX.js} +1 -1
  3. package/dist/assets/{FiltersApplet-BuOfikkU.js → FiltersApplet-CvdFlyn1.js} +1 -1
  4. package/dist/assets/{HomeFab-DtUgQqjj.js → HomeFab-DRmbW2Uu.js} +1 -1
  5. package/dist/assets/{IdentityFields-DZRqtnIG.js → IdentityFields-C7sv9pMk.js} +1 -1
  6. package/dist/assets/{LensApplet-DWoA0AeK.js → LensApplet-gIiGSdLb.js} +1 -1
  7. package/dist/assets/{LinkToCard-BQ1yoFDr.js → LinkToCard-DGpvNE_V.js} +1 -1
  8. package/dist/assets/{NextShell-BfQHKEKO.js → NextShell-DiyMsTp5.js} +1 -1
  9. package/dist/assets/{NotesApplet-BnHiH-Vm.js → NotesApplet-BUXkez68.js} +1 -1
  10. package/dist/assets/ObjectPropertiesCard-pE3IL82x.js +8 -0
  11. package/dist/assets/{PathPickerField-B4yFUjgD.js → PathPickerField-D7SubxSh.js} +1 -1
  12. package/dist/assets/{PickDocumentsCard-CFDQL70e.js → PickDocumentsCard-BhJbPlxk.js} +1 -1
  13. package/dist/assets/{SketchApplet-14xrogy3.js → SketchApplet-CQexRECa.js} +1 -1
  14. package/dist/assets/{SketchEditor-B2LYe_MO.js → SketchEditor-DxIN-6wI.js} +1 -1
  15. package/dist/assets/{TerminalApplet-BNeLmNFF.js → TerminalApplet-D-F4-4Zt.js} +1 -1
  16. package/dist/assets/{TextDocumentEditor-CU5ersd_.js → TextDocumentEditor-YAeo69K7.js} +1 -1
  17. package/dist/assets/{TodosApplet-ASG9wXjL.js → TodosApplet-OBi0XUdm.js} +1 -1
  18. package/dist/assets/{TodosWidget-CYK5RbYD.js → TodosWidget-B_R-vHxf.js} +1 -1
  19. package/dist/assets/{UploadProgressList-Ci1akl_D.js → UploadProgressList-C9teR7r-.js} +1 -1
  20. package/dist/assets/{_agentId_-Cm8yJTqD.js → _agentId_-CYfkXrJk.js} +0 -0
  21. package/dist/assets/_contextId_-CkahAS5d.js +1 -0
  22. package/dist/assets/_workspaceName_--lNvJpY1.js +1 -0
  23. package/dist/assets/{about-aJJuQSFB.js → about-CCShKl-5.js} +1 -1
  24. package/dist/assets/{add-Ruml_x6t.js → add-G2dEzOng.js} +1 -1
  25. package/dist/assets/{agents-BWYACYNH.js → agents-vx49b2X5.js} +1 -1
  26. package/dist/assets/{appearance-CSvWylrJ.js → appearance-Dmzr0s9n.js} +1 -1
  27. package/dist/assets/{applet-target-I8w6EPj0.js → applet-target-DYrCD8BZ.js} +1 -1
  28. package/dist/assets/{apps-CdUhD9HG.js → apps-B6DG6ZpO.js} +1 -1
  29. package/dist/assets/{backend-sync-progress-tUU2XWtW.js → backend-sync-progress-m7wUKTJn.js} +1 -1
  30. package/dist/assets/{context-DZ1Hn7tt.js → context-1vR30CeC.js} +1 -1
  31. package/dist/assets/{contexts-Df-cWUlj2.js → contexts-DFYjIhsj2.js} +1 -1
  32. package/dist/assets/{date-time-picker-txVhlNO0.js → date-time-picker-C40sYmga.js} +1 -1
  33. package/dist/assets/{document-CTvT2Qa5.js → document-BiNwuf1n.js} +1 -1
  34. package/dist/assets/document-list-ASCemk7T.js +2 -0
  35. package/dist/assets/{home-DwSabq_0.js → home-B1ilyR89.js} +1 -1
  36. package/dist/assets/index-Bi5-zGgp.css +2 -0
  37. package/dist/assets/{index-AELn_vht.js → index-CXPA9Fj8.js} +6 -6
  38. package/dist/assets/{key-bindings-Cv7mVdte.js → key-bindings-DXepopri.js} +1 -1
  39. package/dist/assets/{offline-sNCjxnp-.js → offline-DonGsRsw.js} +1 -1
  40. package/dist/assets/{public-share-D5yz-Pmo.js → public-share-DLXh7Ie6.js} +1 -1
  41. package/dist/assets/{query-debug-CQ0I3cXX.js → query-debug-DhboV3qX.js} +1 -1
  42. package/dist/assets/{registry-D1CIT_aZ.js → registry-eFbDXN9w.js} +2 -2
  43. package/dist/assets/{roles-DoR2drD1.js → roles-DDiKiRii.js} +1 -1
  44. package/dist/assets/{settings-DaYH1KUc.js → settings-CcdxMKot.js} +1 -1
  45. package/dist/assets/{settings-MRGmsYtV.js → settings-CgjGE01m.js} +1 -1
  46. package/dist/assets/{settings-D8jDlO3y.js → settings-CwyGwKFU.js} +1 -1
  47. package/dist/assets/{settings-DnXGDMuM.js → settings-D-yPOLZk.js} +1 -1
  48. package/dist/assets/{share-target-vNEvk9Rt.js → share-target-BhGDitlj.js} +1 -1
  49. package/dist/assets/{shared-C0dVLLZX.js → shared-DimeKqW8.js} +1 -1
  50. package/dist/assets/{shared-BnpwVpxG.js → shared-XYVtCrC8.js} +1 -1
  51. package/dist/assets/{sketch-lazy-BbNgGbR3.js → sketch-lazy-6eEi8GIA.js} +2 -2
  52. package/dist/assets/{text-documents-BaXhu3ra.js → text-documents-DxVsu9zG.js} +1 -1
  53. package/dist/assets/{content-app-view-AUB8kjjJ.js → tree-folders-whK_PK4c.js} +1 -1
  54. package/dist/assets/{use-applet-docs-B2dk__vk.js → use-applet-docs-FqhvvOWx.js} +1 -1
  55. package/dist/assets/{use-applet-target-ffIGaAqT.js → use-applet-target-1DU4mgJH.js} +1 -1
  56. package/dist/assets/{use-canvas-pins-DkWN9oEd.js → use-canvas-pins-DqkSe_aU.js} +1 -1
  57. package/dist/assets/{use-workspace-identity-B8gOMGj4.js → use-workspace-identity-KEG0VpcX.js} +1 -1
  58. package/dist/assets/{useAddTarget-B3b6TyZr.js → useAddTarget-BEgKjqGj.js} +1 -1
  59. package/dist/assets/{useAgentModels-Dw4f4pZz.js → useAgentModels-CI7iZlUR.js} +1 -1
  60. package/dist/assets/{useDocumentThumbnail-wW0lSOEy.js → useDocumentThumbnail-DutrNFK3.js} +1 -1
  61. package/dist/assets/{useEditNoteFields-DXLTFEqL.js → useEditNoteFields-HAsbBak7.js} +1 -1
  62. package/dist/assets/{workspace-area-menu-BFw2yUHk.js → workspace-area-menu-CUqTxXmz.js} +1 -1
  63. package/dist/assets/{workspace-content-gate-NLuRPvbm.js → workspace-content-gate-B6T3nLfW.js} +1 -1
  64. package/dist/assets/workspace-cv6Hrfhh.js +1 -0
  65. package/dist/assets/{workspace-import-form-Bb6z42nw.js → workspace-import-form-D5qPcNFq.js} +1 -1
  66. package/dist/assets/{workspaces-Ban7--8l.js → workspaces-yHyufXqs.js} +1 -1
  67. package/dist/index.html +26 -26
  68. package/dist/sw.js +1 -1
  69. package/package.json +2 -2
  70. package/dist/assets/ObjectPropertiesCard-BTTwYnN9.js +0 -8
  71. package/dist/assets/_contextId_-LRp2S1tj.js +0 -1
  72. package/dist/assets/_workspaceName_-BC1W0_NU.js +0 -1
  73. package/dist/assets/document-list-CQ1_7Sja.js +0 -2
  74. package/dist/assets/index-BAeuh9Mu.css +0 -2
  75. package/dist/assets/workspace-BJELPCNs.js +0 -1
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":"94f800c72bd04d6faf8be3529f52384d","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/workspaces-CqHYstZv.js"},{"revision":null,"url":"assets/workspaces-Ban7--8l.js"},{"revision":null,"url":"assets/workspace-import-form-Bb6z42nw.js"},{"revision":null,"url":"assets/workspace-content-gate-NLuRPvbm.js"},{"revision":null,"url":"assets/workspace-area-menu-BFw2yUHk.js"},{"revision":null,"url":"assets/workspace-access-C9nZlBBZ.js"},{"revision":null,"url":"assets/workspace-BydSRtST.js"},{"revision":null,"url":"assets/workspace-BJELPCNs.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/users-DuVk-TEd.js"},{"revision":null,"url":"assets/useToastHelpers-CRrpIIdY.js"},{"revision":null,"url":"assets/useSocketSubscription-ifW-vnlb.js"},{"revision":null,"url":"assets/useEscapeClose-DR_xKT_k.js"},{"revision":null,"url":"assets/useEditNoteFields-DXLTFEqL.js"},{"revision":null,"url":"assets/useDocumentThumbnail-wW0lSOEy.js"},{"revision":null,"url":"assets/useAgentModels-Dw4f4pZz.js"},{"revision":null,"url":"assets/useAddTarget-B3b6TyZr.js"},{"revision":null,"url":"assets/use-workspace-identity-B8gOMGj4.js"},{"revision":null,"url":"assets/use-toolbox-Ck_cLGgf.js"},{"revision":null,"url":"assets/use-toast-BlLDqSUO.js"},{"revision":null,"url":"assets/use-theme-DaxpiICf.js"},{"revision":null,"url":"assets/use-sortable-data-BBKmqs79.js"},{"revision":null,"url":"assets/use-settings-back-DGmLAD63.js"},{"revision":null,"url":"assets/use-mobile-Db-vWu9Y.js"},{"revision":null,"url":"assets/use-menu-DIP1zh7I.js"},{"revision":null,"url":"assets/use-document-modal-PG8bQyIB.js"},{"revision":null,"url":"assets/use-create-panel-DhSNIGtr.js"},{"revision":null,"url":"assets/use-canvas-pins-DkWN9oEd.js"},{"revision":null,"url":"assets/use-canvas-pins-C57Vbkrq.css"},{"revision":null,"url":"assets/use-applet-target-ffIGaAqT.js"},{"revision":null,"url":"assets/use-applet-docs-B2dk__vk.js"},{"revision":null,"url":"assets/url-params-n7kU_WZ-.js"},{"revision":null,"url":"assets/uk-UA-QMV73CPH-BfWne7LV.js"},{"revision":null,"url":"assets/ui-CDoK3F3U.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-BaXhu3ra.js"},{"revision":null,"url":"assets/tags-YamdPoBK.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-DQM5zfx2.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/socket-CtH3EU9m.js"},{"revision":null,"url":"assets/sl-SI-NN7IZMDC-DFJxhRNE.js"},{"revision":null,"url":"assets/sketch-lazy-BbNgGbR3.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/shared-C0dVLLZX.js"},{"revision":null,"url":"assets/shared-BnpwVpxG.js"},{"revision":null,"url":"assets/share-target-vNEvk9Rt.js"},{"revision":null,"url":"assets/sha256-65KIjGvZ.js"},{"revision":null,"url":"assets/settings-MRGmsYtV.js"},{"revision":null,"url":"assets/settings-DnXGDMuM.js"},{"revision":null,"url":"assets/settings-DaYH1KUc.js"},{"revision":null,"url":"assets/settings-D8jDlO3y.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/roles-p2cRajz-.js"},{"revision":null,"url":"assets/roles-DoR2drD1.js"},{"revision":null,"url":"assets/role-C5I0Plgn.js"},{"revision":null,"url":"assets/ro-RO-JPDTUUEW-BqxNXAVP.js"},{"revision":null,"url":"assets/requirementDiagram-BXWQKSXE-S99ev3k7.js"},{"revision":null,"url":"assets/remotes-RPGcw6fH.js"},{"revision":null,"url":"assets/relation-events-CKio19hE.js"},{"revision":null,"url":"assets/registry-D1CIT_aZ.js"},{"revision":null,"url":"assets/react-BHzhHVTZ.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/query-debug-CQ0I3cXX.js"},{"revision":null,"url":"assets/quadrantDiagram-AXDQQJYC-CAXFELe7.js"},{"revision":null,"url":"assets/punycode.es6-ZbLrB_Dn.js"},{"revision":null,"url":"assets/public-share-D5yz-Pmo.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/page-header-DrDt1sQ2.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/offline-sNCjxnp-.js"},{"revision":null,"url":"assets/oc-FR-POXYY2M6-Cn1eE_Zu.js"},{"revision":null,"url":"assets/note-save-status-DPz4VzL6.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-view-BBBZtNSR.js"},{"revision":null,"url":"assets/markdown-it-DRESbtwK.js"},{"revision":null,"url":"assets/markdown-html-DtQ7-esK.css"},{"revision":null,"url":"assets/markdown-html-CZMGihx6.js"},{"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/logs-DjG8_wJ2.js"},{"revision":null,"url":"assets/linear-aVQWq3ZZ.js"},{"revision":null,"url":"assets/line-DXCbHsGS.js"},{"revision":null,"url":"assets/lazy-editor-BUFAkTGl.js"},{"revision":null,"url":"assets/layer-style-Byl5LNFR.js"},{"revision":null,"url":"assets/last-path-BbXWC3b3.js"},{"revision":null,"url":"assets/label-BSTdjCWU.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/key-bindings-Cv7mVdte.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/input-BOtCd4HP.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/inferd-config-editor-B8x_XPOt.js"},{"revision":null,"url":"assets/index-BAeuh9Mu.css"},{"revision":null,"url":"assets/index-AELn_vht.js"},{"revision":null,"url":"assets/image-blob-reduce.esm-Dj7YBvMv.js"},{"revision":null,"url":"assets/image-GAAHSSAO-CI-0hUck.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/home-DwSabq_0.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/geo-CZfs0E-x.js"},{"revision":null,"url":"assets/ganttDiagram-EL5Y4UJY-BKBiwfwb.js"},{"revision":null,"url":"assets/fr-FR-RHASNOE6-BH99frB1.js"},{"revision":null,"url":"assets/form-panel-3p-ncEVK.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/embedding-D-I_ygUZ.js"},{"revision":null,"url":"assets/embedding-BvXcVfij.js"},{"revision":null,"url":"assets/el-GR-BZB4AONW-Chellj6d.js"},{"revision":null,"url":"assets/ebnfDiagram-PWID7BFC-B9wGidHs.js"},{"revision":null,"url":"assets/document-open-mode-DoImW-xs.js"},{"revision":null,"url":"assets/document-list-DAYdk5vh.css"},{"revision":null,"url":"assets/document-list-CQ1_7Sja.js"},{"revision":null,"url":"assets/document-CTvT2Qa5.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/devices-CAa1bRxk.js"},{"revision":null,"url":"assets/devices-BwU9M8-W.js"},{"revision":null,"url":"assets/desk-dI_FvLsK.js"},{"revision":null,"url":"assets/defaultLocale-BFoDCU3G.js"},{"revision":null,"url":"assets/de-DE-XR44H4JA-DNaOwkE9.js"},{"revision":null,"url":"assets/date-time-picker-txVhlNO0.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/contexts-Df-cWUlj2.js"},{"revision":null,"url":"assets/contexts-DDJagU4j.js"},{"revision":null,"url":"assets/context-DZ1Hn7tt.js"},{"revision":null,"url":"assets/content-app-view-AUB8kjjJ.js"},{"revision":null,"url":"assets/color-DFEH4BfK.js"},{"revision":null,"url":"assets/code-editor-BOIngd5F.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-BvHe9UPk.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-62JRHF6Z-vspAGgtK.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/button-SeUZ_Pvi.js"},{"revision":null,"url":"assets/bn-BD-2XOGV67Q-KCzfC93t.js"},{"revision":null,"url":"assets/blockDiagram-I7D4REHJ-DJlTH4XU.js"},{"revision":null,"url":"assets/blobs-WiXP9QRi.js"},{"revision":null,"url":"assets/bg-BG-XCXSNQG7-DFFjBv03.js"},{"revision":null,"url":"assets/backend-sync-progress-tUU2XWtW.js"},{"revision":null,"url":"assets/backend-sync-progress-DU-e9TWi.css"},{"revision":null,"url":"assets/az-AZ-76LH7QW2-8v0TczD5.js"},{"revision":null,"url":"assets/auth-PqttD05H.js"},{"revision":null,"url":"assets/auth-Bx9fAZmz.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/apps-CdUhD9HG.js"},{"revision":null,"url":"assets/applet-target-I8w6EPj0.js"},{"revision":null,"url":"assets/appearance-CSvWylrJ.js"},{"revision":null,"url":"assets/api-tokens-drrVuCYc.js"},{"revision":null,"url":"assets/api-CA6WiiYM.js"},{"revision":null,"url":"assets/alert-dialog-CFeuDt0T.js"},{"revision":null,"url":"assets/agents-DxqAi3vk.js"},{"revision":null,"url":"assets/agents-BWYACYNH.js"},{"revision":null,"url":"assets/admin-Bhg9QBHL.js"},{"revision":null,"url":"assets/add-Ruml_x6t.js"},{"revision":null,"url":"assets/about-aJJuQSFB.js"},{"revision":null,"url":"assets/abnfDiagram-VCTEODGH-Cy_5vShZ.js"},{"revision":null,"url":"assets/_workspaceName_-BC1W0_NU.js"},{"revision":null,"url":"assets/_contextId_-LRp2S1tj.js"},{"revision":null,"url":"assets/_agentId_-Cm8yJTqD.js"},{"revision":null,"url":"assets/UploadProgressList-Ci1akl_D.js"},{"revision":null,"url":"assets/TodosWidget-CYK5RbYD.js"},{"revision":null,"url":"assets/TodosApplet-ASG9wXjL.js"},{"revision":null,"url":"assets/TextDocumentEditor-CU5ersd_.js"},{"revision":null,"url":"assets/TerminalApplet-BrP-ENHg.css"},{"revision":null,"url":"assets/TerminalApplet-BNeLmNFF.js"},{"revision":null,"url":"assets/SketchEditor-DtRVLazd.css"},{"revision":null,"url":"assets/SketchEditor-B2LYe_MO.js"},{"revision":null,"url":"assets/SketchApplet-14xrogy3.js"},{"revision":null,"url":"assets/PickDocumentsCard-CFDQL70e.js"},{"revision":null,"url":"assets/PathPickerField-B4yFUjgD.js"},{"revision":null,"url":"assets/ObjectPropertiesCard-Docu7O5V.css"},{"revision":null,"url":"assets/ObjectPropertiesCard-BTTwYnN9.js"},{"revision":null,"url":"assets/NotesApplet-BnHiH-Vm.js"},{"revision":null,"url":"assets/NextShell-BfQHKEKO.js"},{"revision":null,"url":"assets/NextShell-BT6-_CFY.css"},{"revision":null,"url":"assets/MessageComposerDialog-CdPp-3GR.js"},{"revision":null,"url":"assets/MarkdownEditor-DbpRWbO6.js"},{"revision":null,"url":"assets/MarkdownEditor-DWa37grk.css"},{"revision":null,"url":"assets/LocationTab-DAtqAQ3l.js"},{"revision":null,"url":"assets/LinkToSidePanel-eCy3nW4R.js"},{"revision":null,"url":"assets/LinkToCard-BQ1yoFDr.js"},{"revision":null,"url":"assets/LensApplet-DWoA0AeK.js"},{"revision":null,"url":"assets/IdentityFields-DZRqtnIG.js"},{"revision":null,"url":"assets/HomeFab-DtUgQqjj.js"},{"revision":null,"url":"assets/FiltersApplet-BuOfikkU.js"},{"revision":null,"url":"assets/FileForm-C35drQ_R.js"},{"revision":null,"url":"assets/EditorOverlay-D5t3xg4w.js"},{"revision":null,"url":"assets/DocumentIcon-9i1uCMQa.js"},{"revision":null,"url":"assets/DocumentBodyEditor-CVO5KPCs.js"},{"revision":null,"url":"assets/CalendarApplet-BmrEfNPa.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":"81b9a2cceb3a4bf4c4e90d7a74e5befe","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/workspaces-yHyufXqs.js"},{"revision":null,"url":"assets/workspaces-CqHYstZv.js"},{"revision":null,"url":"assets/workspace-import-form-D5qPcNFq.js"},{"revision":null,"url":"assets/workspace-cv6Hrfhh.js"},{"revision":null,"url":"assets/workspace-content-gate-B6T3nLfW.js"},{"revision":null,"url":"assets/workspace-area-menu-CUqTxXmz.js"},{"revision":null,"url":"assets/workspace-access-C9nZlBBZ.js"},{"revision":null,"url":"assets/workspace-BydSRtST.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/users-DuVk-TEd.js"},{"revision":null,"url":"assets/useToastHelpers-CRrpIIdY.js"},{"revision":null,"url":"assets/useSocketSubscription-ifW-vnlb.js"},{"revision":null,"url":"assets/useEscapeClose-DR_xKT_k.js"},{"revision":null,"url":"assets/useEditNoteFields-HAsbBak7.js"},{"revision":null,"url":"assets/useDocumentThumbnail-DutrNFK3.js"},{"revision":null,"url":"assets/useAgentModels-CI7iZlUR.js"},{"revision":null,"url":"assets/useAddTarget-BEgKjqGj.js"},{"revision":null,"url":"assets/use-workspace-identity-KEG0VpcX.js"},{"revision":null,"url":"assets/use-toolbox-Ck_cLGgf.js"},{"revision":null,"url":"assets/use-toast-BlLDqSUO.js"},{"revision":null,"url":"assets/use-theme-DaxpiICf.js"},{"revision":null,"url":"assets/use-sortable-data-BBKmqs79.js"},{"revision":null,"url":"assets/use-settings-back-DGmLAD63.js"},{"revision":null,"url":"assets/use-mobile-Db-vWu9Y.js"},{"revision":null,"url":"assets/use-menu-DIP1zh7I.js"},{"revision":null,"url":"assets/use-document-modal-PG8bQyIB.js"},{"revision":null,"url":"assets/use-create-panel-DhSNIGtr.js"},{"revision":null,"url":"assets/use-canvas-pins-DqkSe_aU.js"},{"revision":null,"url":"assets/use-canvas-pins-C57Vbkrq.css"},{"revision":null,"url":"assets/use-applet-target-1DU4mgJH.js"},{"revision":null,"url":"assets/use-applet-docs-FqhvvOWx.js"},{"revision":null,"url":"assets/url-params-n7kU_WZ-.js"},{"revision":null,"url":"assets/uk-UA-QMV73CPH-BfWne7LV.js"},{"revision":null,"url":"assets/ui-CDoK3F3U.js"},{"revision":null,"url":"assets/treemap-WGGIJYW6-Cg7tyfH8.js"},{"revision":null,"url":"assets/treeView-Q6P3EWNA-BTTYcvrF.js"},{"revision":null,"url":"assets/tree-folders-whK_PK4c.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-DxVsu9zG.js"},{"revision":null,"url":"assets/tags-YamdPoBK.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-DQM5zfx2.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/socket-CtH3EU9m.js"},{"revision":null,"url":"assets/sl-SI-NN7IZMDC-DFJxhRNE.js"},{"revision":null,"url":"assets/sketch-lazy-6eEi8GIA.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/shared-XYVtCrC8.js"},{"revision":null,"url":"assets/shared-DimeKqW8.js"},{"revision":null,"url":"assets/share-target-BhGDitlj.js"},{"revision":null,"url":"assets/sha256-65KIjGvZ.js"},{"revision":null,"url":"assets/settings-D-yPOLZk.js"},{"revision":null,"url":"assets/settings-CwyGwKFU.js"},{"revision":null,"url":"assets/settings-CgjGE01m.js"},{"revision":null,"url":"assets/settings-CcdxMKot.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/roles-p2cRajz-.js"},{"revision":null,"url":"assets/roles-DDiKiRii.js"},{"revision":null,"url":"assets/role-C5I0Plgn.js"},{"revision":null,"url":"assets/ro-RO-JPDTUUEW-BqxNXAVP.js"},{"revision":null,"url":"assets/requirementDiagram-BXWQKSXE-S99ev3k7.js"},{"revision":null,"url":"assets/remotes-RPGcw6fH.js"},{"revision":null,"url":"assets/relation-events-CKio19hE.js"},{"revision":null,"url":"assets/registry-eFbDXN9w.js"},{"revision":null,"url":"assets/react-BHzhHVTZ.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/query-debug-DhboV3qX.js"},{"revision":null,"url":"assets/quadrantDiagram-AXDQQJYC-CAXFELe7.js"},{"revision":null,"url":"assets/punycode.es6-ZbLrB_Dn.js"},{"revision":null,"url":"assets/public-share-DLXh7Ie6.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/page-header-DrDt1sQ2.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/offline-DonGsRsw.js"},{"revision":null,"url":"assets/oc-FR-POXYY2M6-Cn1eE_Zu.js"},{"revision":null,"url":"assets/note-save-status-DPz4VzL6.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-view-BBBZtNSR.js"},{"revision":null,"url":"assets/markdown-it-DRESbtwK.js"},{"revision":null,"url":"assets/markdown-html-DtQ7-esK.css"},{"revision":null,"url":"assets/markdown-html-CZMGihx6.js"},{"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/logs-DjG8_wJ2.js"},{"revision":null,"url":"assets/linear-aVQWq3ZZ.js"},{"revision":null,"url":"assets/line-DXCbHsGS.js"},{"revision":null,"url":"assets/lazy-editor-BUFAkTGl.js"},{"revision":null,"url":"assets/layer-style-Byl5LNFR.js"},{"revision":null,"url":"assets/last-path-BbXWC3b3.js"},{"revision":null,"url":"assets/label-BSTdjCWU.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/key-bindings-DXepopri.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/input-BOtCd4HP.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/inferd-config-editor-B8x_XPOt.js"},{"revision":null,"url":"assets/index-CXPA9Fj8.js"},{"revision":null,"url":"assets/index-Bi5-zGgp.css"},{"revision":null,"url":"assets/image-blob-reduce.esm-Dj7YBvMv.js"},{"revision":null,"url":"assets/image-GAAHSSAO-CI-0hUck.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/home-B1ilyR89.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/geo-CZfs0E-x.js"},{"revision":null,"url":"assets/ganttDiagram-EL5Y4UJY-BKBiwfwb.js"},{"revision":null,"url":"assets/fr-FR-RHASNOE6-BH99frB1.js"},{"revision":null,"url":"assets/form-panel-3p-ncEVK.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/embedding-D-I_ygUZ.js"},{"revision":null,"url":"assets/embedding-BvXcVfij.js"},{"revision":null,"url":"assets/el-GR-BZB4AONW-Chellj6d.js"},{"revision":null,"url":"assets/ebnfDiagram-PWID7BFC-B9wGidHs.js"},{"revision":null,"url":"assets/document-open-mode-DoImW-xs.js"},{"revision":null,"url":"assets/document-list-DAYdk5vh.css"},{"revision":null,"url":"assets/document-list-ASCemk7T.js"},{"revision":null,"url":"assets/document-BiNwuf1n.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/devices-CAa1bRxk.js"},{"revision":null,"url":"assets/devices-BwU9M8-W.js"},{"revision":null,"url":"assets/desk-dI_FvLsK.js"},{"revision":null,"url":"assets/defaultLocale-BFoDCU3G.js"},{"revision":null,"url":"assets/de-DE-XR44H4JA-DNaOwkE9.js"},{"revision":null,"url":"assets/date-time-picker-C40sYmga.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/contexts-DFYjIhsj2.js"},{"revision":null,"url":"assets/contexts-DDJagU4j.js"},{"revision":null,"url":"assets/context-1vR30CeC.js"},{"revision":null,"url":"assets/color-DFEH4BfK.js"},{"revision":null,"url":"assets/code-editor-BOIngd5F.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-BvHe9UPk.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-62JRHF6Z-vspAGgtK.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/button-SeUZ_Pvi.js"},{"revision":null,"url":"assets/bn-BD-2XOGV67Q-KCzfC93t.js"},{"revision":null,"url":"assets/blockDiagram-I7D4REHJ-DJlTH4XU.js"},{"revision":null,"url":"assets/blobs-WiXP9QRi.js"},{"revision":null,"url":"assets/bg-BG-XCXSNQG7-DFFjBv03.js"},{"revision":null,"url":"assets/backend-sync-progress-m7wUKTJn.js"},{"revision":null,"url":"assets/backend-sync-progress-DU-e9TWi.css"},{"revision":null,"url":"assets/az-AZ-76LH7QW2-8v0TczD5.js"},{"revision":null,"url":"assets/auth-PqttD05H.js"},{"revision":null,"url":"assets/auth-Bx9fAZmz.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/apps-B6DG6ZpO.js"},{"revision":null,"url":"assets/applet-target-DYrCD8BZ.js"},{"revision":null,"url":"assets/appearance-Dmzr0s9n.js"},{"revision":null,"url":"assets/api-tokens-drrVuCYc.js"},{"revision":null,"url":"assets/api-CA6WiiYM.js"},{"revision":null,"url":"assets/alert-dialog-CFeuDt0T.js"},{"revision":null,"url":"assets/agents-vx49b2X5.js"},{"revision":null,"url":"assets/agents-DxqAi3vk.js"},{"revision":null,"url":"assets/admin-Bhg9QBHL.js"},{"revision":null,"url":"assets/add-G2dEzOng.js"},{"revision":null,"url":"assets/about-CCShKl-5.js"},{"revision":null,"url":"assets/abnfDiagram-VCTEODGH-Cy_5vShZ.js"},{"revision":null,"url":"assets/_workspaceName_--lNvJpY1.js"},{"revision":null,"url":"assets/_contextId_-CkahAS5d.js"},{"revision":null,"url":"assets/_agentId_-CYfkXrJk.js"},{"revision":null,"url":"assets/UploadProgressList-C9teR7r-.js"},{"revision":null,"url":"assets/TodosWidget-B_R-vHxf.js"},{"revision":null,"url":"assets/TodosApplet-OBi0XUdm.js"},{"revision":null,"url":"assets/TextDocumentEditor-YAeo69K7.js"},{"revision":null,"url":"assets/TerminalApplet-D-F4-4Zt.js"},{"revision":null,"url":"assets/TerminalApplet-BrP-ENHg.css"},{"revision":null,"url":"assets/SketchEditor-DxIN-6wI.js"},{"revision":null,"url":"assets/SketchEditor-DtRVLazd.css"},{"revision":null,"url":"assets/SketchApplet-CQexRECa.js"},{"revision":null,"url":"assets/PickDocumentsCard-BhJbPlxk.js"},{"revision":null,"url":"assets/PathPickerField-D7SubxSh.js"},{"revision":null,"url":"assets/ObjectPropertiesCard-pE3IL82x.js"},{"revision":null,"url":"assets/ObjectPropertiesCard-Docu7O5V.css"},{"revision":null,"url":"assets/NotesApplet-BUXkez68.js"},{"revision":null,"url":"assets/NextShell-DiyMsTp5.js"},{"revision":null,"url":"assets/NextShell-BT6-_CFY.css"},{"revision":null,"url":"assets/MessageComposerDialog-CdPp-3GR.js"},{"revision":null,"url":"assets/MarkdownEditor-DbpRWbO6.js"},{"revision":null,"url":"assets/MarkdownEditor-DWa37grk.css"},{"revision":null,"url":"assets/LocationTab-DAtqAQ3l.js"},{"revision":null,"url":"assets/LinkToSidePanel-eCy3nW4R.js"},{"revision":null,"url":"assets/LinkToCard-DGpvNE_V.js"},{"revision":null,"url":"assets/LensApplet-gIiGSdLb.js"},{"revision":null,"url":"assets/IdentityFields-C7sv9pMk.js"},{"revision":null,"url":"assets/HomeFab-DRmbW2Uu.js"},{"revision":null,"url":"assets/FiltersApplet-CvdFlyn1.js"},{"revision":null,"url":"assets/FileForm-CMuWZbUX.js"},{"revision":null,"url":"assets/EditorOverlay-D5t3xg4w.js"},{"revision":null,"url":"assets/DocumentIcon-9i1uCMQa.js"},{"revision":null,"url":"assets/DocumentBodyEditor-CVO5KPCs.js"},{"revision":null,"url":"assets/CalendarApplet-DVUCGIPB.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.26.37",
3
+ "version": "2.26.39",
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": "c2a204e"
15
+ "canvasRev": "e3311d7"
16
16
  }
@@ -1,8 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/pdf-Ciz5_WNq.js","assets/preload-helper-Czpn1I53.js","assets/TextDocumentEditor-CU5ersd_.js","assets/rolldown-runtime-C0FnF6B9.js","assets/code-editor-BOIngd5F.js","assets/ui-CDoK3F3U.js","assets/react-BHzhHVTZ.js","assets/button-SeUZ_Pvi.js","assets/utils-BxVxyehK.js","assets/utils-2pl1SbIp.js","assets/workspace-BJELPCNs.js","assets/input-BOtCd4HP.js","assets/api-CA6WiiYM.js","assets/alert-dialog-CFeuDt0T.js","assets/text-documents-BaXhu3ra.js","assets/public-share-D5yz-Pmo.js","assets/blobs-WiXP9QRi.js","assets/useToastHelpers-CRrpIIdY.js","assets/use-toast-BlLDqSUO.js","assets/note-save-status-DPz4VzL6.js","assets/useEditNoteFields-DXLTFEqL.js","assets/tags-YamdPoBK.js","assets/DocumentBodyEditor-CVO5KPCs.js","assets/lazy-editor-BUFAkTGl.js","assets/EditorOverlay-D5t3xg4w.js","assets/LocationTab-DAtqAQ3l.js","assets/map-BxCwdK0d.js","assets/map-BcsP_QXj.css"])))=>i.map(i=>d[i]);
2
- import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{l as t,u as n}from"./code-editor-BOIngd5F.js";import{_t as r,yt as i}from"./react-BHzhHVTZ.js";import{t as a}from"./preload-helper-Czpn1I53.js";import{$r as o,Bn as s,Bt as c,Dr as l,Dt as u,Et as d,Gn as f,Ht as p,J as m,L as h,Lt as g,Mn as _,Or as v,Pn as y,Pt as b,Tr as x,Un as S,Wr as C,X as w,Xr as T,Yr as E,Zr as D,_n as O,br as k,cn as A,ct as j,di as M,en as N,fr as P,jt as F,kn as ee,lr as I,mr as L,mt as te,nr as ne,nt as R,on as z,or as B,pi as V,pn as H,qn as re,rr as ie,sn as ae,vr as U,yt as W,zt as oe}from"./ui-CDoK3F3U.js";import{t as G}from"./utils-2pl1SbIp.js";import{t as K}from"./button-SeUZ_Pvi.js";import{t as se}from"./input-BOtCd4HP.js";import{t as q}from"./label-BSTdjCWU.js";import{l as J}from"./api-CA6WiiYM.js";import{_ as ce,g as le,o as ue,t as de}from"./LinkToCard-BQ1yoFDr.js";import{An as fe,Bn as pe,D as me,Gn as he,Hn as ge,J as _e,M as ve,Mn as Y,N as ye,Pn as be,Rn as xe,Un as Se,Wn as Ce,Wt as we,Y as Te,g as Ee,kt as De,l as Oe,o as ke,pn as Ae,q as je,r as Me,s as Ne,tt as Pe,vn as Fe,wn as Ie,yt as Le}from"./workspace-BJELPCNs.js";import{r as Re,t as ze}from"./use-mobile-Db-vWu9Y.js";import{a as Be,c as Ve,i as He,n as Ue,o as We,r as Ge,s as Ke,t as qe}from"./IdentityFields-DZRqtnIG.js";import{i as Je,r as Ye}from"./public-share-D5yz-Pmo.js";import{a as Xe,i as Ze,n as Qe,o as $e,r as et,s as tt,t as nt}from"./text-documents-BaXhu3ra.js";import{t as rt}from"./useDocumentThumbnail-wW0lSOEy.js";import{t as it}from"./markdown-view-BBBZtNSR.js";import{n as at,t as ot}from"./tags-YamdPoBK.js";import{n as st,t as ct}from"./relation-events-CKio19hE.js";import{a as lt,c as ut,i as dt,o as ft}from"./date-time-picker-txVhlNO0.js";import{t as pt}from"./sanitize-DrVcFY1Q.js";import{t as mt}from"./useEscapeClose-DR_xKT_k.js";import{t as X}from"./useToastHelpers-CRrpIIdY.js";import"./layer-style-Byl5LNFR.js";import{t as ht}from"./DocumentIcon-9i1uCMQa.js";import{r as gt,s as _t,t as vt}from"./MessageComposerDialog-CdPp-3GR.js";import{n as yt}from"./LinkToSidePanel-eCy3nW4R.js";import{t as bt}from"./note-save-status-DPz4VzL6.js";import{t as xt}from"./useEditNoteFields-DXLTFEqL.js";import{t as St}from"./DocumentBodyEditor-CVO5KPCs.js";import{n as Ct}from"./use-document-modal-PG8bQyIB.js";import{t as wt}from"./sketch-lazy-BbNgGbR3.js";import{r as Tt}from"./geo-CZfs0E-x.js";var Z=e(n(),1);function Et(e,t){let n=/(^|\s)(!?)@([a-z-]*)$/i.exec(e);if(!n)return null;let r=n[3].toLowerCase();return{before:e.slice(0,n.index)+n[1]+n[2],predicates:t.filter(e=>e.startsWith(r))}}var Q=t();function Dt({workspaceId:e,inputRef:t,onChange:n}){let[r,i]=(0,Z.useState)(``),[a,o]=(0,Z.useState)(!1),[s,c]=(0,Z.useState)(0),l=le(e),u=Et(r,l.predicates),d=!!e&&a&&u!==null,f=u?.predicates??[],p=(0,Z.useId)(),m=Math.min(s,Math.max(0,f.length-1));(0,Z.useEffect)(()=>{d&&document.getElementById(`${p}-${m}`)?.scrollIntoView({block:`nearest`})},[p,m,d,f.length]);let h=e=>{let r=t.current;if(!r||!u)return;let a=`${u.before}@${e}: `;r.value=a,n?.(a),i(a),o(!1),r.focus()};return(0,Z.useEffect)(()=>{let e=t.current;if(!e)return;let n=()=>{i(e.value),c(0),o(!0)},r=()=>o(!1),a=e=>{!d||e.isComposing||(e.key===`Escape`?(e.preventDefault(),e.stopPropagation(),o(!1)):f.length&&[`ArrowDown`,`ArrowUp`,`Enter`,`Tab`].includes(e.key)&&(e.preventDefault(),e.stopPropagation(),e.key===`ArrowDown`?c((m+1)%f.length):e.key===`ArrowUp`?c((m+f.length-1)%f.length):h(f[m])))};return e.addEventListener(`input`,n),e.addEventListener(`focus`,n),e.addEventListener(`blur`,r),e.addEventListener(`keydown`,a),e.setAttribute(`role`,`combobox`),e.setAttribute(`aria-autocomplete`,`list`),e.setAttribute(`aria-expanded`,String(d)),d?e.setAttribute(`aria-controls`,p):e.removeAttribute(`aria-controls`),d&&f.length?e.setAttribute(`aria-activedescendant`,`${p}-${m}`):e.removeAttribute(`aria-activedescendant`),()=>{e.removeEventListener(`input`,n),e.removeEventListener(`focus`,n),e.removeEventListener(`blur`,r),e.removeEventListener(`keydown`,a);for(let t of[`role`,`aria-autocomplete`,`aria-expanded`,`aria-controls`,`aria-activedescendant`])e.removeAttribute(t)}}),d?(0,Q.jsxs)(`div`,{className:`absolute left-0 right-0 top-full z-50 mt-1 max-h-64 overflow-y-auto rounded-md border bg-popover p-1 text-popover-foreground shadow-lg`,children:[(0,Q.jsx)(`div`,{id:p,role:`listbox`,"aria-label":`Relation predicates`,children:f.map((e,t)=>(0,Q.jsxs)(`button`,{id:`${p}-${t}`,type:`button`,role:`option`,"aria-selected":t===m,className:`block w-full rounded px-3 py-2 text-left text-sm font-mono ${t===m?`bg-accent text-accent-foreground`:`hover:bg-accent`}`,onMouseDown:e=>e.preventDefault(),onClick:()=>h(e),children:[`@`,e,`:`]},e))}),!f.length&&(0,Q.jsx)(`p`,{role:`status`,className:`px-3 py-2 text-sm text-muted-foreground`,children:l.loading?`Loading relations…`:l.error?`Unable to load relation predicates.`:`No matching predicates.`})]}):null}var Ot=1,kt=8,At=320,jt=28,Mt=2.5,Nt={scale:1,x:0,y:0};function Pt({src:e,alt:t,className:n=``,onZoomChange:r}){let i=(0,Z.useRef)(null),a=(0,Z.useRef)(null),[o,s]=(0,Z.useState)(Nt),c=(0,Z.useRef)(new Map),l=(0,Z.useRef)(null),u=(0,Z.useRef)(null),d=(0,Z.useRef)(!1),f=(0,Z.useRef)(null),[p,m]=(0,Z.useState)(!1),[h,g]=(0,Z.useState)(e);h!==e&&(g(e),s(Nt)),(0,Z.useEffect)(()=>{r?.(o.scale>1.001)},[o.scale,r]);let _=(0,Z.useCallback)(e=>{let t=i.current,n=a.current;if(!t||!n)return e;let r=Math.min(kt,Math.max(Ot,e.scale)),o=Math.max(0,(n.offsetWidth*r-t.clientWidth)/2),s=Math.max(0,(n.offsetHeight*r-t.clientHeight)/2);return{scale:r,x:Math.min(o,Math.max(-o,e.x)),y:Math.min(s,Math.max(-s,e.y))}},[]),v=(0,Z.useCallback)((e,t,n)=>{let r=i.current;if(!r)return;let a=r.getBoundingClientRect(),o=t-a.left-a.width/2,c=n-a.top-a.height/2;s(t=>{let n=e/t.scale;return _({scale:e,x:o-(o-t.x)*n,y:c-(c-t.y)*n})})},[_]),y=(0,Z.useCallback)(()=>{let e=i.current,t=a.current;if(!e||!t||!t.offsetWidth||!t.offsetHeight)return Mt;let n=Math.max(e.clientWidth/t.offsetWidth,e.clientHeight/t.offsetHeight),r=Math.max(t.naturalWidth/t.offsetWidth,t.naturalHeight/t.offsetHeight)||kt;return Math.min(kt,Math.max(Mt,Math.min(Math.max(n,Mt),r)))},[]),b=(0,Z.useCallback)((e,t)=>{o.scale>1.001?s(Nt):v(y(),e,t)},[o.scale,v,y]),x=e=>{if(c.current.set(e.pointerId,{x:e.clientX,y:e.clientY}),d.current=!1,c.current.size===2){let[e,t]=[...c.current.values()];l.current={dist:Math.hypot(e.x-t.x,e.y-t.y),scale:o.scale,cx:(e.x+t.x)/2,cy:(e.y+t.y)/2}}e.currentTarget.setPointerCapture(e.pointerId)},S=e=>{let t=c.current.get(e.pointerId);if(!t)return;if(c.current.set(e.pointerId,{x:e.clientX,y:e.clientY}),c.current.size>=2&&l.current){let[e,t]=[...c.current.values()],n=Math.hypot(e.x-t.x,e.y-t.y);l.current.dist>0&&(d.current=!0,m(!0),v(l.current.scale*(n/l.current.dist),l.current.cx,l.current.cy));return}if(o.scale<=1.001)return;let n=e.clientX-t.x,r=e.clientY-t.y;(Math.abs(n)>1||Math.abs(r)>1)&&(d.current=!0,m(!0)),s(e=>_({...e,x:e.x+n,y:e.y+r}))},C=e=>{if(c.current.delete(e.pointerId),c.current.size<2&&(l.current=null),c.current.size===0&&m(!1),d.current){u.current=null;return}let t=e.timeStamp,n=u.current;if(n&&t-n.t<At&&Math.hypot(e.clientX-n.x,e.clientY-n.y)<jt){u.current=null,f.current=t,b(e.clientX,e.clientY);return}u.current={t,x:e.clientX,y:e.clientY}},w=e=>{e.preventDefault();let t=o.scale*(e.deltaY<0?1.15:1/1.15);t<=Ot?s(Nt):v(Math.min(kt,t),e.clientX,e.clientY)},T=o.scale>1.001;return(0,Q.jsx)(`div`,{ref:i,className:`relative flex h-full w-full items-center justify-center overflow-hidden`,style:{touchAction:`none`,cursor:T?`grab`:`zoom-in`},onPointerDown:x,onPointerMove:S,onPointerUp:C,onPointerCancel:e=>{c.current.delete(e.pointerId),l.current=null,u.current=null,d.current=!0,c.current.size===0&&m(!1)},onWheel:w,onDoubleClick:e=>{e.preventDefault(),e.stopPropagation(),!(f.current!==null&&e.timeStamp-f.current<At)&&b(e.clientX,e.clientY)},children:(0,Q.jsx)(`img`,{ref:a,src:e,alt:t,draggable:!1,className:n,style:{transform:`translate3d(${o.x}px, ${o.y}px, 0) scale(${o.scale})`,transformOrigin:`center center`,transition:p?`none`:`transform var(--duration-normal) ease-out`,willChange:`transform`}})})}function Ft(){return!/android|iphone|ipad|mobile/i.test(navigator.userAgent)&&navigator.pdfViewerEnabled!==!1}var It=40,Lt=1600;function Rt({blob:e,filename:t}){let n=(0,Z.useRef)(null),[r,i]=(0,Z.useState)({error:null,pages:0,truncated:!1});return(0,Z.useEffect)(()=>{let r=n.current;if(!r)return;let o=!1,s=null;return(async()=>{let n=await a(()=>import(`./pdf-Ciz5_WNq.js`),__vite__mapDeps([0,1])),c=(await a(async()=>{let{default:e}=await import(`./pdf.worker.min-C8Ts8bNu.js`);return{default:e}},[])).default;n.GlobalWorkerOptions.workerSrc=c;let l=await e.arrayBuffer();if(o)return;let u=n.getDocument({data:l});s=()=>{u.destroy()};let d=await u.promise;if(o)return;let f=Math.min(d.numPages,It),p=r.clientWidth||600,m=window.devicePixelRatio||1;for(let e=1;e<=f;e++){if(o)return;let n=await d.getPage(e),a=n.getViewport({scale:1}),s=Math.min(p*m,Lt*m)/a.width,c=n.getViewport({scale:s}),l=document.createElement(`canvas`);if(l.width=c.width,l.height=c.height,l.style.width=`100%`,l.style.height=`auto`,l.className=`rounded border bg-white`,l.setAttribute(`aria-label`,`${t}, page ${e}`),await n.render({canvas:l,viewport:c}).promise,n.cleanup(),o)return;r.appendChild(l),i({error:null,pages:e,truncated:d.numPages>It})}})().catch(e=>{o||i(t=>({...t,error:e instanceof Error?e.message:String(e)}))}),()=>{o=!0,s?.(),r.replaceChildren()}},[e,t]),(0,Q.jsxs)(`div`,{className:`space-y-2`,children:[r.error&&(0,Q.jsxs)(`p`,{className:`text-sm text-destructive`,children:[`Could not render PDF: `,r.error]}),!r.error&&r.pages===0&&(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Rendering PDF…`}),(0,Q.jsx)(`div`,{ref:n,className:`space-y-2`}),r.truncated&&(0,Q.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Showing the first `,It,` pages. Download the file for the full document.`]})]})}function zt({blob:e,blobUrl:t,filename:n,className:r=``}){let i=(0,Z.useMemo)(()=>e&&e.type!==`application/pdf`?URL.createObjectURL(e.slice(0,e.size,`application/pdf`)):null,[e]);return(0,Z.useEffect)(()=>()=>{i&&URL.revokeObjectURL(i)},[i]),Ft()||!e?(0,Q.jsx)(`div`,{className:`min-h-[300px] ${r}`,children:(0,Q.jsx)(`iframe`,{src:i??t,className:`h-full min-h-[300px] w-full rounded border`,title:n})}):(0,Q.jsx)(`div`,{className:`max-h-viewport-pane overflow-y-auto ${r}`,children:(0,Q.jsx)(Rt,{blob:e,filename:n})})}function Bt({workspaceId:e,document:t}){let{download:n}=Ye(e),[r,i]=(0,Z.useState)(!1),a=Y(t)||`document-${t.id}`;return(0,Q.jsxs)(`button`,{type:`button`,onClick:async()=>{i(!0);try{await n(t.id,a)}finally{i(!1)}},disabled:r,className:`inline-flex items-center gap-1.5 rounded-md border px-2.5 py-1 text-xs text-muted-foreground transition-colors hover:bg-accent hover:text-foreground disabled:opacity-50`,children:[(0,Q.jsx)(U,{className:`h-3.5 w-3.5`}),r?`Preparing…`:`Download`]})}var Vt=1600;function Ht({error:e,loading:t,children:n}){return e?(0,Q.jsx)(`p`,{className:`text-sm text-destructive`,children:e}):t?(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Loading preview...`}):(0,Q.jsx)(Q.Fragment,{children:n})}function Ut({workspaceId:e,document:t,className:n=``}){let r=(0,Z.useContext)(Ve),i=ze(),a=Re(`(pointer: coarse)`),{blobUrl:o,error:s,loading:c}=rt(e,t.id,Vt,{version:t.checksumArray?.[0]??null}),{fetchBlob:l}=Ye(e),u=Y(t)||`document-${t.id}`,[d,f]=(0,Z.useState)(!1);return(0,Q.jsx)(Ht,{error:s,loading:c,children:o&&(0,Q.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col gap-2 ${n}`,children:[i||a?(0,Q.jsx)(`div`,{className:`min-h-0 flex-1`,children:(0,Q.jsx)(Pt,{src:o,alt:u,className:`max-h-full max-w-full object-contain`})}):(0,Q.jsx)(`img`,{src:o,alt:u,draggable:!1,onDoubleClick:r?e=>{e.preventDefault(),e.stopPropagation(),r()}:void 0,title:r?`Double-click to maximize or restore`:void 0,className:`min-h-0 w-full flex-1 object-contain ${r?`cursor-zoom-in`:``}`}),(0,Q.jsxs)(`button`,{type:`button`,onClick:async()=>{f(!0);try{let{blob:e}=await l(t.id),n=URL.createObjectURL(e),r=window.document.createElement(`a`);r.href=n,r.download=u,window.document.body.appendChild(r),r.click(),r.remove(),setTimeout(()=>URL.revokeObjectURL(n),3e4)}finally{f(!1)}},disabled:d,className:`inline-flex shrink-0 self-start items-center gap-1.5 rounded-md border px-2.5 py-1 text-xs text-muted-foreground transition-colors hover:bg-accent hover:text-foreground disabled:opacity-50`,children:[(0,Q.jsx)(U,{className:`h-3.5 w-3.5`}),d?`Preparing…`:`Download original`]})]})})}function Wt({workspaceId:e,document:t,className:n=``}){let{src:r,error:i,loading:a}=tt(e,t.id);return(0,Q.jsx)(Ht,{error:i,loading:a,children:r&&(0,Q.jsxs)(`div`,{className:`space-y-2 ${n}`,children:[(0,Q.jsx)(`audio`,{src:r,controls:!0,preload:`metadata`,className:`w-full`}),(0,Q.jsx)(Bt,{workspaceId:e,document:t})]})})}function Gt({workspaceId:e,document:t,className:n=``}){let{src:r,error:i,loading:a}=tt(e,t.id),[o,s]=(0,Z.useState)(!1);return(0,Q.jsx)(Ht,{error:i,loading:a,children:r&&(0,Q.jsxs)(`div`,{className:`space-y-2 ${n}`,children:[(0,Q.jsx)(`video`,{src:r,controls:!0,playsInline:!0,preload:`metadata`,onError:()=>s(!0),className:`max-h-viewport-pane w-full rounded border`}),o&&(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`This video can’t be played inline in your browser. Download it to view.`}),(0,Q.jsx)(Bt,{workspaceId:e,document:t})]})})}function Kt({workspaceId:e,document:t,className:n=``}){let{blobUrl:r,blob:i,error:a,loading:o}=$e(e,t.id,{typeHint:`application/pdf`}),s=Y(t)||`document-${t.id}`;return(0,Q.jsx)(Ht,{error:a,loading:o,children:r&&(0,Q.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col gap-2 ${n}`,children:[(0,Q.jsx)(zt,{blob:i,blobUrl:r,filename:s,className:`min-h-0 flex-1`}),(0,Q.jsx)(`div`,{children:(0,Q.jsx)(Bt,{workspaceId:e,document:t})})]})})}function qt({workspaceId:e,document:t,className:n=``}){let{text:r,error:i,loading:a}=$e(e,t.id,{mode:`text`,version:t.checksumArray?.[0]});return i?(0,Q.jsx)(`p`,{className:`text-sm text-destructive`,children:i}):a||r==null?(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Loading...`}):(0,Q.jsx)(`pre`,{className:`bg-muted p-3 rounded text-xs overflow-auto max-h-viewport-pane whitespace-pre-wrap ${n}`,children:r})}function Jt({workspaceId:e,document:t,className:n=``}){let r=t.schema===pe,{text:i,error:a,loading:o}=$e(e,t.id,{mode:`text`,enabled:!r,version:t.checksumArray?.[0]});return r?(0,Q.jsxs)(`div`,{className:`markdown-note space-y-3 ${n}`,children:[t.data?.title?(0,Q.jsx)(`h3`,{className:`text-lg font-semibold`,children:String(t.data.title)}):null,(0,Q.jsx)(`div`,{className:`markdown-document-frame rounded-md border border-input bg-transparent`,children:(0,Q.jsx)(it,{content:String(t.data?.content??``),className:`markdown-doc px-4 py-3`})})]}):a?(0,Q.jsx)(`p`,{className:`text-sm text-destructive`,children:a}):o||i==null?(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Loading...`}):(0,Q.jsx)(`div`,{className:`markdown-document-frame rounded-md border border-input bg-transparent overflow-auto max-h-viewport-pane ${n}`,children:(0,Q.jsx)(it,{content:i,className:`markdown-doc px-4 py-3`})})}function Yt({document:e,className:t=``}){let n=String(e.data?.url??e.data?.uri??``),r=he(n);return r?(0,Q.jsx)(`div`,{className:`aspect-video w-full ${t}`,children:(0,Q.jsx)(`iframe`,{src:`https://www.youtube-nocookie.com/embed/${encodeURIComponent(r)}`,title:String(e.data?.title??e.data?.label??`YouTube video`),className:`h-full w-full rounded border`,allow:`accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture`,allowFullScreen:!0})}):null}function Xt({document:e,className:t=``}){let n=String(e.data?.url??e.data?.uri??``),[r,i]=(0,Z.useState)({blobUrl:null,blob:null,failed:!1,loading:!0}),[a,o]=(0,Z.useState)(n);n!==a&&(o(n),i({blobUrl:null,blob:null,failed:!1,loading:!0})),(0,Z.useEffect)(()=>{let e=!1,t=null,r=async e=>{if(!e.ok)throw Error(`HTTP ${e.status}`);let t=await e.blob();return new Blob([t],{type:`application/pdf`})},a=()=>{let e=localStorage.getItem(`authToken`);return fetch(`${J}/proxy/pdf?url=${encodeURIComponent(n)}`,{headers:e?{Authorization:`Bearer ${e}`}:{}})};return fetch(n).then(r).catch(()=>a().then(r)).then(n=>{e||(t=URL.createObjectURL(n),i({blobUrl:t,blob:n,failed:!1,loading:!1}))}).catch(()=>{e||i({blobUrl:null,blob:null,failed:!0,loading:!1})}),()=>{e=!0,t&&URL.revokeObjectURL(t)}},[n]);let{blobUrl:s,blob:c,failed:l,loading:u}=r,d=(()=>{try{let e=decodeURIComponent(new URL(n).pathname.split(`/`).filter(Boolean).pop()??``)||`document`;return/\.pdf$/i.test(e)?e:`${e}.pdf`}catch{return`document.pdf`}})();return(0,Q.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col gap-2 ${t}`,children:[(0,Q.jsxs)(`div`,{className:`flex shrink-0 flex-wrap items-center gap-3`,children:[(0,Q.jsxs)(`a`,{href:n,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1 text-xs text-primary hover:underline`,children:[(0,Q.jsx)(L,{className:`h-3 w-3`}),` `,n]}),c&&(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>{if(!c)return;let e=URL.createObjectURL(c),t=window.document.createElement(`a`);t.href=e,t.download=d,window.document.body.appendChild(t),t.click(),t.remove(),setTimeout(()=>URL.revokeObjectURL(e),3e4)},className:`inline-flex items-center gap-1.5 rounded-md border px-2.5 py-1 text-xs text-muted-foreground transition-colors hover:bg-accent hover:text-foreground`,children:[(0,Q.jsx)(U,{className:`h-3.5 w-3.5`}),` Download`]})]}),u&&(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Loading PDF…`}),l&&(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Inline preview unavailable (direct fetch and server proxy both failed). Use the link above.`}),s&&(0,Q.jsx)(zt,{blob:c,blobUrl:s,filename:d,className:`min-h-[300px] flex-1`})]})}function Zt(e){if(!e)return!1;try{let t=new URL(e);return!!(/\.pdf$/i.test(t.pathname)||t.hostname.endsWith(`arxiv.org`)&&t.pathname.startsWith(`/pdf/`))}catch{return!1}}function Qt(e){try{return new URL(e).hostname.replace(/^www\./,``)}catch{return e}}function $t({document:e,className:t=``}){let n=e.data||{},r=String(n.url??n.uri??``),i=String(n.title??n.label??``)||Qt(r),a=typeof n.favIconUrl==`string`?n.favIconUrl:``,o=n.pinned===!0,s=typeof n.timestamp==`string`?n.timestamp:null,[c,l]=(0,Z.useState)(!1);return(0,Q.jsxs)(`div`,{className:`space-y-3 ${t}`,children:[(0,Q.jsxs)(`a`,{href:r,target:`_blank`,rel:`noopener noreferrer`,className:`group flex items-start gap-3 rounded-lg border bg-card p-3 transition-colors hover:bg-accent/40`,children:[(0,Q.jsx)(`div`,{className:`mt-0.5 flex h-9 w-9 shrink-0 items-center justify-center overflow-hidden rounded bg-muted`,children:a&&!c?(0,Q.jsx)(`img`,{src:a,alt:``,className:`h-5 w-5`,onError:()=>l(!0)}):(0,Q.jsx)(S,{className:`h-4 w-4 text-muted-foreground`})}),(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,Q.jsx)(`span`,{className:`truncate font-medium leading-tight`,children:i}),o&&(0,Q.jsx)(g,{className:`h-3 w-3 shrink-0 fill-warning text-warning`})]}),(0,Q.jsx)(`div`,{className:`mt-0.5 truncate text-xs text-muted-foreground`,children:Qt(r)}),(0,Q.jsx)(`div`,{className:`mt-1 truncate font-mono text-[11px] text-muted-foreground/70`,children:r})]}),(0,Q.jsx)(L,{className:`mt-1 h-4 w-4 shrink-0 text-muted-foreground reveal-on-hover`})]}),s&&(0,Q.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Saved `,new Date(s).toLocaleString()]})]})}function en(e){return e.data||{}}var tn={pending:`bg-muted text-muted-foreground`,"in-progress":`bg-info/15 text-info dark:text-info`,completed:`bg-success/15 text-success dark:text-success`,cancelled:`bg-muted text-muted-foreground line-through`};function nn(e){if(!e.dueDate||e.status===`completed`||e.status===`cancelled`)return!1;let t=new Date(e.dueDate).getTime();return Number.isFinite(t)&&t<Date.now()}function rn(e){if(!e)return``;let t=new Date(e);return Number.isNaN(t.getTime())?``:t.toLocaleString(void 0,{month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`})}async function an(e,t,n){let r=n===`completed`,i={...t.data||{},status:n,completed:r};r?i.completedAt=new Date().toISOString():delete i.completedAt,await Fe(e,{id:t.id,schema:t.schema,schemaVersion:t.schemaVersion,data:i}),window.dispatchEvent(new CustomEvent(`workspace:documents:refresh`))}function on({document:e,workspaceId:t,className:n=``}){let r=en(e),i=Je()!=null,[a,o]=(0,Z.useState)(!1),{replicating:s,label:c}=Ie(e),l=r.status===`completed`,u=r.status??`pending`,d=nn(r);return(0,Q.jsx)(`div`,{className:`space-y-3 ${n}`,children:(0,Q.jsxs)(`div`,{className:`relative flex items-start gap-3 rounded-lg border bg-card p-3 transition-opacity ${s?`opacity-60`:``}`,children:[(0,Q.jsx)(`button`,{type:`button`,onClick:async()=>{if(!(i||a)){o(!0);try{await an(t,e,l?`pending`:`completed`)}catch{}finally{o(!1)}}},disabled:i||a||s,"aria-pressed":l,title:l?`Mark not done`:`Mark done`,className:`mt-0.5 flex h-5 w-5 shrink-0 items-center justify-center rounded border transition-colors ${l?`border-success bg-success text-success-foreground`:`border-input hover:border-success`} ${i?`cursor-default opacity-70`:``}`,children:a?(0,Q.jsx)(H,{className:`h-3 w-3 animate-spin`}):l&&(0,Q.jsx)(C,{className:`h-3.5 w-3.5`})}),(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Q.jsx)(`div`,{className:`font-medium leading-tight ${l?`text-muted-foreground line-through`:``}`,children:r.title||`Todo ${e.id}`}),(0,Q.jsxs)(`div`,{className:`mt-1.5 flex flex-wrap items-center gap-2 text-xs`,children:[(0,Q.jsx)(`span`,{className:`rounded-full px-2 py-0.5 ${tn[u]}`,children:dt[u]}),r.dueDate&&(0,Q.jsxs)(`span`,{className:`inline-flex items-center gap-1 ${d?`font-medium text-destructive`:`text-muted-foreground`}`,children:[(0,Q.jsx)(E,{className:`h-3 w-3`}),rn(r.dueDate),d?` · overdue`:``]}),typeof r.priority==`number`&&(0,Q.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-muted-foreground`,children:[(0,Q.jsx)(ne,{className:`h-3 w-3`}),`P`,r.priority]})]}),r.description&&(0,Q.jsx)(it,{content:String(r.description),className:`mt-2 text-sm text-muted-foreground`}),s&&(0,Q.jsxs)(`div`,{className:`mt-2 inline-flex items-center gap-1.5 text-xs text-muted-foreground`,role:`status`,children:[(0,Q.jsx)(H,{className:`h-3 w-3 animate-spin`}),c]})]})]})})}function sn(e,t){let{fetchBlob:n}=Ye(e),r=Je(),i=t.checksumArray?.[0]||t.updatedAt||``,a=JSON.stringify([e,r,t.id,i]),o=typeof t.data?.body==`string`?t.data.body:null,s=typeof t.data?.bodyHtml==`string`?t.data.bodyHtml:null,c=o!==null||s!==null,[l,u]=(0,Z.useState)(null);return(0,Z.useEffect)(()=>{if(c)return;let e=new AbortController;return n(t.id,{format:`email`,version:i,signal:e.signal}).then(async({blob:t})=>{let n=JSON.parse(await t.text());if(typeof n.body!=`string`||n.bodyHtml!=null&&typeof n.bodyHtml!=`string`)throw Error(`Invalid email content response`);e.signal.aborted||u({key:a,body:n.body,bodyHtml:n.bodyHtml||null,error:null})}).catch(t=>{e.signal.aborted||u({key:a,body:``,bodyHtml:null,error:t instanceof Error?t.message:String(t)})}),()=>e.abort()},[a,c,n,t.id,i]),c?{body:o||``,bodyHtml:s,loading:!1,error:null}:l?.key===a?{...l,loading:!1}:{body:``,bodyHtml:null,loading:!0,error:null}}function cn(e){return e?typeof e==`string`?e:e.name&&e.address?`${e.name} <${e.address}>`:e.address||e.name||``:``}function $(e){return e?(Array.isArray(e)?e:[e]).map(e=>cn(e)).filter(Boolean).join(`, `):``}function ln(e){if(!Number.isFinite(e))return``;let t=Number(e);return t<1024?`${t} B`:t<1048576?`${(t/1024).toFixed(1)} KB`:`${(t/1024/1024).toFixed(1)} MB`}function un(e,t,n){let r=0;pt.addHook(`afterSanitizeAttributes`,e=>{if(e.tagName===`IMG`){let i=e.getAttribute(`src`)||``,a=i.toLowerCase();if(a.startsWith(`cid:`)){let n=i.slice(4).replace(/^<|>$/g,``),r=t.get(n)||t.get(`<${n}>`);r?e.setAttribute(`src`,r):e.removeAttribute(`src`)}else(a.startsWith(`http:`)||a.startsWith(`https:`)||a.startsWith(`//`))&&(r++,n?e.setAttribute(`src`,i.replace(/^http:/i,`https:`).replace(/^\/\//,`https://`)):e.removeAttribute(`src`))}e.tagName===`A`&&(e.setAttribute(`target`,`_blank`),e.setAttribute(`rel`,`noopener noreferrer`))});try{let t=pt.sanitize(e,{FORBID_TAGS:[`script`,`iframe`,`object`,`embed`,`form`,`base`,`link`,`meta`],FORBID_ATTR:[`srcset`]}),i=`<!doctype html><html><head>
3
- <meta charset="utf-8">
4
- <meta name="viewport" content="width=device-width,initial-scale=1">
5
- <meta http-equiv="Content-Security-Policy" content="${`default-src 'none'; img-src data:${n?` https:`:``}; style-src 'unsafe-inline'`}">
6
- <style>html{overflow:auto}body{margin:12px;font:14px/1.5 system-ui,sans-serif;color:#1a1a1a;background:#fff}@media(max-width:480px){body{margin:8px}}</style>
7
- </head><body>${t}</body></html>`;return{url:URL.createObjectURL(new Blob([i],{type:`text/html;charset=utf-8`})),remoteCount:r}}finally{pt.removeHook(`afterSanitizeAttributes`)}}function dn(e){return new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(String(r.result)),r.onerror=()=>n(r.error),r.readAsDataURL(e)})}function fn(e){return(0,Q.jsx)(pn,{...e},`${e.workspaceId}:${e.document.id}`)}function pn({workspaceId:e,document:t,className:n=``}){let{fetchBlob:r,download:i}=Ye(e),a=t.data||{},o=Array.isArray(a.attachments)?a.attachments:[],{body:s,bodyHtml:c,loading:u,error:d}=sn(e,t),[f,p]=(0,Z.useState)(null),[m,h]=(0,Z.useState)(!1),[g,v]=(0,Z.useState)(!1),[b,x]=(0,Z.useState)(0),[S,C]=(0,Z.useState)(null);(0,Z.useEffect)(()=>{if(!c||m)return;let e=!1,n=[],i=o.filter(e=>e.contentId&&e.url);return Promise.all(i.slice(0,20).map(async e=>{try{let{blob:n}=await r(t.id,{url:e.url}),i=await dn(n);return[String(e.contentId).replace(/^<|>$/g,``),i]}catch{return null}})).then(t=>{if(e)return;let r=new Map(t.filter(Boolean)),{url:i,remoteCount:a}=un(c,r,g);n.push(i),p(i),x(a)}).catch(t=>{e||C(String(t instanceof Error?t.message:t))}),()=>{e=!0,n.forEach(e=>URL.revokeObjectURL(e)),p(null)}},[e,t.id,c,m,g]);let w=typeof a.date==`string`?new Date(a.date).toLocaleString():null,T=o.filter(e=>!e.isInline||!e.contentId),E=async e=>{if(e.url)try{await i(t.id,e.filename||`attachment`,{url:e.url})}catch(e){C(e instanceof Error?e.message:String(e))}};return(0,Q.jsxs)(`div`,{className:`flex h-full min-h-0 min-w-0 flex-col gap-3 ${n}`,children:[(0,Q.jsx)(`div`,{className:`shrink-0 rounded-md border bg-muted/30 p-2 text-sm sm:p-3`,children:(0,Q.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-2 sm:gap-3`,children:[(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1 basis-64 space-y-1`,children:[(0,Q.jsx)(`div`,{className:`truncate text-base font-semibold`,children:String(a.subject??`(no subject)`)}),(0,Q.jsxs)(`details`,{className:`sm:hidden`,children:[(0,Q.jsxs)(`summary`,{className:`cursor-pointer text-xs`,children:[(0,Q.jsx)(`span`,{className:`inline-block max-w-[85%] truncate align-bottom`,children:typeof a.from==`object`&&a.from?a.from.name||a.from.address:String(a.from||`Unknown sender`)}),(0,Q.jsx)(`span`,{className:`ml-2 text-muted-foreground`,children:`Details`})]}),(0,Q.jsxs)(`div`,{className:`mt-2 space-y-1 break-words text-xs`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`span`,{className:`text-muted-foreground`,children:`From:`}),` `,cn(a.from)]}),$(a.to)&&(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`span`,{className:`text-muted-foreground`,children:`To:`}),` `,$(a.to)]}),$(a.cc)&&(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`span`,{className:`text-muted-foreground`,children:`Cc:`}),` `,$(a.cc)]}),w&&(0,Q.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:w})]})]}),(0,Q.jsxs)(`div`,{className:`hidden space-y-1 break-words sm:block`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`span`,{className:`text-muted-foreground`,children:`From:`}),` `,cn(a.from)]}),$(a.to)&&(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`span`,{className:`text-muted-foreground`,children:`To:`}),` `,$(a.to)]}),$(a.cc)&&(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`span`,{className:`text-muted-foreground`,children:`Cc:`}),` `,$(a.cc)]}),w&&(0,Q.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:w})]})]}),c&&(0,Q.jsxs)(`div`,{className:`flex max-w-full flex-wrap gap-2`,children:[(0,Q.jsxs)(K,{size:`sm`,variant:`outline`,onClick:()=>h(!m),children:[m?(0,Q.jsx)(l,{className:`mr-1.5 h-3.5 w-3.5`}):(0,Q.jsx)(B,{className:`mr-1.5 h-3.5 w-3.5`}),m?`HTML`:`Plain text`]}),!m&&b>0&&(0,Q.jsxs)(K,{size:`sm`,variant:g?`secondary`:`outline`,onClick:()=>v(!g),title:`Remote images can reveal your IP/read status to the sender`,children:[g?(0,Q.jsx)(y,{className:`mr-1.5 h-3.5 w-3.5`}):(0,Q.jsx)(_,{className:`mr-1.5 h-3.5 w-3.5`}),g?`Hide remote images`:`Show remote images (${b})`]})]})]})}),(S||d)&&(0,Q.jsx)(`p`,{className:`text-sm text-destructive`,children:S||d}),u?(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Loading message…`}):d?(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:String(a.bodyPreview||`Message content could not be loaded.`)}):!m&&c?f?(0,Q.jsx)(`iframe`,{src:f,sandbox:``,title:String(a.subject??`email`),className:`min-h-[12rem] w-full flex-1 rounded border bg-white`}):(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Rendering...`}):(0,Q.jsx)(`pre`,{className:`min-h-[12rem] flex-1 overflow-auto whitespace-pre-wrap rounded bg-muted p-3 text-sm`,children:s||`(empty body)`}),T.length>0&&(0,Q.jsxs)(`div`,{className:`shrink-0 space-y-1`,children:[(0,Q.jsxs)(`div`,{className:`text-xs font-medium text-muted-foreground`,children:[`Attachments (`,T.length,`)`]}),T.map((e,t)=>(0,Q.jsxs)(`div`,{className:`flex items-center justify-between gap-2 rounded border px-2 py-1.5 text-sm`,children:[(0,Q.jsxs)(`span`,{className:`inline-flex min-w-0 items-center gap-2`,children:[(0,Q.jsx)(B,{className:`h-4 w-4 shrink-0 text-muted-foreground`}),(0,Q.jsx)(`span`,{className:`truncate`,children:e.filename||`attachment`}),(0,Q.jsx)(`span`,{className:`shrink-0 text-xs text-muted-foreground`,children:ln(e.size)})]}),e.url&&(0,Q.jsxs)(`button`,{onClick:()=>E(e),className:`inline-flex shrink-0 items-center gap-1 text-xs text-primary hover:underline`,children:[(0,Q.jsx)(U,{className:`h-3 w-3`}),` Download`]})]},e.url||t))]})]})}function mn({attachment:e,workspaceId:t,document:n}){let{download:r}=Ye(t),i=e.mimeType||e.contentType||``,a=e.name||e.filename||`Attachment`,o=i.startsWith(`audio/`)||i.startsWith(`video/`),{blobUrl:s,error:c,loading:l}=$e(t,n.id,{url:e.url,typeHint:i,enabled:!o&&!!e.url}),{src:u,error:d,loading:f}=tt(t,n.id,{url:e.url,enabled:o&&!!e.url}),[p,m]=(0,Z.useState)(!1),[h,g]=(0,Z.useState)(``),_=o?d:c;return(0,Q.jsxs)(`div`,{className:`space-y-2 rounded border p-2`,children:[_&&(0,Q.jsx)(`p`,{className:`text-xs text-destructive`,children:_}),(o?f:l)&&(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Loading attachment…`}),!o&&s&&i.startsWith(`image/`)&&(0,Q.jsx)(`img`,{src:s,alt:a,className:`max-h-96 max-w-full rounded object-contain`}),o&&u&&(i.startsWith(`video/`)?(0,Q.jsx)(`video`,{controls:!0,playsInline:!0,preload:`metadata`,src:u,onError:()=>m(!0),className:`max-h-96 w-full rounded`},u):(0,Q.jsx)(`audio`,{controls:!0,preload:`metadata`,src:u,onError:()=>m(!0),className:`w-full`},u)),p&&(0,Q.jsx)(`p`,{role:`alert`,className:`text-xs text-destructive`,children:`This media could not be played in your browser. Download it to play in another app.`}),h&&(0,Q.jsx)(`p`,{role:`alert`,className:`text-xs text-destructive`,children:h}),e.url&&(0,Q.jsxs)(`button`,{className:`text-sm text-primary underline`,onClick:()=>{r(n.id,a,{url:e.url}).catch(()=>g(`Attachment could not be downloaded.`))},children:[`Download `,a]})]})}function hn(e){let t=e.document.data,n=t.sender,r=t.channel,i=Array.isArray(t.attachments)?t.attachments:[],a=t.timestamp?new Date(String(t.timestamp)):null;return(0,Q.jsxs)(`article`,{className:`space-y-4 p-3 ${e.className||``}`,children:[(0,Q.jsxs)(`header`,{className:`space-y-1 border-b pb-3`,children:[(0,Q.jsx)(`p`,{className:`font-medium`,children:n?.name||n?.displayName||n?.username||n?.id||`Unknown sender`}),(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:[r?.name||r?.id,String(t.platform||``),a&&!Number.isNaN(a.getTime())?a.toLocaleString():``].filter(Boolean).join(` · `)})]}),(0,Q.jsx)(`p`,{className:`whitespace-pre-wrap break-words text-sm`,children:String(t.text||`(No text)`)}),!!t.mediaError&&(0,Q.jsx)(`p`,{className:`text-xs text-destructive`,children:String(t.mediaError)}),i.map((t,n)=>(0,Q.jsx)(mn,{...e,attachment:t},t.url||n))]})}var gn={email:A,phone:oe,sms:N,chat:N,slack:N,matrix:N,web:S,url:S},_n={person:`Person`,organization:`Organization`,service:`Service`,bot:`Bot`},vn=e=>Array.isArray(e)?e:[];function yn(e,t){return t?e===`email`?`mailto:${t}`:e===`phone`||e===`sms`?`tel:${t.replace(/[^\d+]/g,``)}`:/^https?:\/\//i.test(t)?t:null:null}function bn({title:e,count:t,children:n}){return t===0?null:(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`p`,{className:`text-xs font-medium text-muted-foreground`,children:e}),(0,Q.jsx)(`div`,{className:`space-y-1`,children:n})]})}function xn({icon:e,primary:t,children:n,title:r}){return(0,Q.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2 rounded-md border bg-card px-2.5 py-1.5 text-sm`,title:r,children:[(0,Q.jsx)(e,{className:`h-3.5 w-3.5 shrink-0 text-muted-foreground`}),(0,Q.jsx)(`div`,{className:`min-w-0 flex-1 truncate`,children:n}),t&&(0,Q.jsx)(R,{className:`h-3 w-3 shrink-0 fill-current text-data-5`,"aria-label":`Primary`})]})}function Sn({document:e,className:t}){let n=e.data??{},r=vn(n.identifiers),i=vn(n.channels),a=vn(n.organizations),o=vn(n.links),s=vn(n.tags),c=String(n.displayName||``).trim(),l=Ce(e.schema,xe),u=String(n.primaryEmail||``).trim(),d=n.name&&typeof n.name==`object`?n.name:{},f=[d.prefix,d.given,d.middle,d.family,d.suffix].map(e=>String(e||``).trim()).filter(Boolean).join(` `),p=i.some(e=>e.kind===`email`&&e.value===u);return(0,Q.jsxs)(`div`,{className:G(`space-y-4`,t),children:[(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`h2`,{className:`text-lg font-semibold`,children:c||`Identity ${e.id}`}),(0,Q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 text-xs text-muted-foreground`,children:[l&&(0,Q.jsx)(`span`,{className:`rounded-full bg-muted px-2 py-0.5`,children:_n[l]||l}),f&&f!==c&&(0,Q.jsx)(`span`,{children:f}),String(n.timezone||``)&&(0,Q.jsx)(`span`,{children:String(n.timezone)}),String(n.locale||``)&&(0,Q.jsx)(`span`,{children:String(n.locale)})]})]}),u&&!p&&(0,Q.jsx)(bn,{title:`Primary email`,count:1,children:(0,Q.jsx)(xn,{icon:A,primary:!0,children:(0,Q.jsx)(`a`,{href:`mailto:${u}`,className:`hover:underline`,children:u})})}),(0,Q.jsx)(bn,{title:`Channels`,count:i.length,children:i.map((e,t)=>{let n=String(e.kind||``).toLowerCase(),r=String(e.value||``),i=yn(n,r),a=gn[n]||N;return(0,Q.jsxs)(xn,{icon:a,primary:e.primary,title:e.platform||n,children:[i?(0,Q.jsx)(`a`,{href:i,className:`hover:underline`,target:i.startsWith(`http`)?`_blank`:void 0,rel:`noopener noreferrer`,children:r}):r,e.label&&(0,Q.jsx)(`span`,{className:`ml-2 text-xs text-muted-foreground`,children:e.label})]},`${n}:${r}:${t}`)})}),(0,Q.jsx)(bn,{title:`Identifiers`,count:r.length,children:r.map((e,t)=>(0,Q.jsxs)(xn,{icon:ie,primary:e.primary,children:[(0,Q.jsx)(`span`,{className:`font-mono text-xs`,children:e.identifier}),(0,Q.jsx)(`span`,{className:`ml-2 text-xs text-muted-foreground`,children:[e.type,e.provider].filter(Boolean).join(` · `)})]},`${e.type}:${e.identifier}:${t}`))}),(0,Q.jsx)(bn,{title:`Organizations`,count:a.length,children:a.map((e,t)=>(0,Q.jsxs)(xn,{icon:T,children:[e.name,e.role&&(0,Q.jsx)(`span`,{className:`ml-2 text-xs text-muted-foreground`,children:e.role})]},`${e.name}:${t}`))}),(0,Q.jsx)(bn,{title:`Links`,count:o.length,children:o.map((e,t)=>(0,Q.jsxs)(xn,{icon:O,children:[(0,Q.jsx)(`span`,{className:`font-mono text-xs`,children:e.target}),e.type&&(0,Q.jsx)(`span`,{className:`ml-2 text-xs text-muted-foreground`,children:e.type})]},`${e.type}:${e.target}:${t}`))}),s.length>0&&(0,Q.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:s.map(e=>(0,Q.jsx)(`span`,{className:`rounded-full bg-muted px-2 py-0.5 text-xs text-muted-foreground`,children:e},e))})]})}function Cn({document:e}){let t=String(e.metadata?.contentType||`application/octet-stream`);return(0,Q.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`No inline preview available for `,(0,Q.jsx)(`span`,{className:`font-mono`,children:t}),`. Use Download.`]})}function wn(e){let t=e.schema;if(t===`data/schema/note`)return Jt;if(t===`data/schema/drawing`)return Ut;if(t===`data/schema/task`)return on;if(t===`data/schema/message/email`)return fn;if(t===`data/schema/message`)return hn;if(t===`data/schema/identity`||t.startsWith(`data/schema/identity/`))return Sn;if(t===`data/schema/tab`||t===`data/schema/link`){let t=String(e.data?.url??e.data?.uri??``);return he(t)?Yt:Zt(t)?Xt:$t}if(t!==`data/schema/file`)return null;let n=String(e.metadata?.contentType||``);switch(Se(n,Y(e))){case`image`:return Ut;case`audio`:return Wt;case`video`:return Gt;case`pdf`:return Kt;case`markdown`:return Jt;case`text`:return qt;default:return Cn}}function Tn({onSearch:e,onDraftChange:t,inputRef:n,workspaceId:r,label:i=`Search documents`,clearOnSubmit:a=!0,showSubmitButton:o=!0}){let s=(0,Z.useRef)(null),c=n??s;return(0,Q.jsxs)(`form`,{className:`canvas-search-input`,role:`search`,onSubmit:n=>{n.preventDefault();let r=n.currentTarget.elements.namedItem(`query`),i=r.value.trim();i&&(e(i),a&&(r.value=``,t?.(``)))},children:[(0,Q.jsx)(`input`,{ref:c,name:`query`,type:`search`,"aria-label":i,placeholder:i,autoComplete:`off`,enterKeyHint:`search`,onChange:e=>t?.(e.target.value),onKeyDown:e=>{e.key===`Enter`&&e.nativeEvent.isComposing&&e.preventDefault()}}),o&&(0,Q.jsx)(`button`,{type:`submit`,className:`canvas-nav-button`,"aria-label":`Run search`,title:`Run search`,children:(0,Q.jsx)(W,{size:17})}),r&&(0,Q.jsx)(Dt,{workspaceId:r,inputRef:c,onChange:t})]})}function En({queries:e,onRemoveQuery:t,scope:n=`path`,onScopeChange:r}){return(0,Q.jsxs)(`div`,{className:`canvas-search-options`,children:[r&&(0,Q.jsxs)(`div`,{className:`canvas-search-scopes`,"aria-label":`Search scope`,children:[(0,Q.jsx)(`span`,{children:`Search in`}),(0,Q.jsx)(`button`,{type:`button`,"aria-pressed":n===`path`,onClick:()=>r(`path`),children:`This path`}),(0,Q.jsx)(`button`,{type:`button`,"aria-pressed":n===`workspace`,onClick:()=>r(`workspace`),children:`Workspace`})]}),e.length>0&&(0,Q.jsxs)(`div`,{className:`canvas-search-queries`,"aria-label":`Active searches`,children:[e.map((e,n)=>{let r=/"[^"]+/.test(e);return(0,Q.jsxs)(`span`,{className:r?`canvas-search-query canvas-search-query-exact`:`canvas-search-query`,children:[r?(0,Q.jsx)(F,{size:12,"aria-hidden":`true`}):(0,Q.jsx)(W,{size:12,"aria-hidden":`true`}),(0,Q.jsx)(`span`,{title:r?`${e} (exact phrase)`:e,children:e}),t&&(0,Q.jsx)(`button`,{type:`button`,onClick:()=>t(n),"aria-label":`Remove search: ${e}`,children:(0,Q.jsx)(h,{size:14})})]},`${e}-${n}`)}),t&&e.length>1&&(0,Q.jsx)(`button`,{type:`button`,onClick:()=>t(-1),className:`canvas-search-clear`,children:`Clear all`})]})]})}function Dn({children:e,accentColor:t}){return(0,Q.jsxs)(`div`,{className:`canvas-navigation-tabs`,children:[(0,Q.jsx)(`span`,{"aria-hidden":`true`,className:`canvas-tab-divider`,style:t?{backgroundColor:t}:void 0}),e]})}function On({workspace:e,workspaceIcon:t,tree:n,path:i,document:a,section:o,onBack:s,onBrowseWorkspaces:c,onBrowseTree:l,onNavigatePath:u,onDocument:d,onSection:f,onFilter:p,filtersActive:m,filtersOpen:g,onAdd:_,search:v,onDraftChange:y,tabs:x,accentColor:S,actions:C}){let w=ze(),[T,E]=(0,Z.useState)(!1),[D,O]=(0,Z.useState)(!1),k=(0,Z.useRef)(null),A=(0,Z.useRef)(null),M=(0,Z.useRef)(null),N=(0,Z.useRef)(!1),P=JSON.stringify([e,n,i,a]),[F,ee]=(0,Z.useState)(P);F!==P&&(ee(P),E(!1)),(0,Z.useEffect)(()=>{T?A.current?.focus():(k.current&&(k.current.scrollLeft=k.current.scrollWidth,O(k.current.scrollLeft>1)),N.current&&=(M.current?.focus(),!1))},[T,P,o]);let I=()=>{N.current=!0,E(!1),y?.(``)},L=w&&!!l,te=T?I:L?l:s??l,ne=T?`Back to address`:L?`Back to tree`:`Back to previous view`,R=ue(i,e).slice(1),z=(e,t,n,r,i=!1)=>n?(0,Q.jsx)(`button`,{type:`button`,className:t,onClick:n,title:r,"aria-current":i?`location`:void 0,children:e}):(0,Q.jsx)(`span`,{className:`canvas-address-label ${t}`,title:r,"aria-current":i?`location`:void 0,children:e});return(0,Q.jsxs)(`header`,{className:`canvas-navigation${x?` has-tabs`:``}`,style:S?{borderTopColor:S}:void 0,children:[x&&(0,Q.jsx)(Dn,{accentColor:S,children:x}),(0,Q.jsxs)(`div`,{className:`canvas-address-row`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`canvas-nav-button`,"aria-label":ne,title:ne,disabled:!T&&!s&&!l,onClick:te,children:L&&!T?(0,Q.jsx)(re,{size:19}):(0,Q.jsx)(V,{size:19})}),(0,Q.jsxs)(`div`,{className:`canvas-address-field`,onDoubleClick:e=>{v&&!e.target.closest(`button`)&&E(!0)},onKeyDown:e=>{e.key===`Escape`&&T&&(e.preventDefault(),e.stopPropagation(),I())},children:[T&&v?(0,Q.jsx)(Tn,{inputRef:A,workspaceId:v.localOnly?void 0:v.workspaceId,onSearch:v.onSearch,onDraftChange:y,clearOnSubmit:!v.localOnly,showSubmitButton:!1,label:v.queries.length?`Refine search…`:`Search documents…`}):(0,Q.jsx)(Q.Fragment,{children:(0,Q.jsxs)(`div`,{ref:k,className:`canvas-address-crumbs${D?` is-scrolled`:``}`,onScroll:e=>O(e.currentTarget.scrollLeft>1),role:`navigation`,"aria-label":`Canvas address`,tabIndex:0,onKeyDown:e=>{e.key===`Enter`&&e.target===e.currentTarget&&v&&E(!0)},children:[z((0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(r,{icon:t||`ph:stack-fill`,className:`h-4 w-4 shrink-0`,"aria-hidden":`true`}),(0,Q.jsx)(`span`,{className:`truncate`,children:e})]}),`canvas-address-workspace`,c,`Browse workspaces`),n&&z(`[${n}]`,`canvas-address-tree`,l,`Browse tree: ${n}`),z(`:/`,`canvas-address-root`,u?()=>u(`/`):void 0,`Go to tree root`),R.map((e,t)=>(0,Q.jsxs)(`span`,{className:`canvas-address-segment`,children:[t>0&&(0,Q.jsx)(`span`,{"aria-hidden":`true`,children:`/`}),z(e.label,``,u?()=>u(e.path):void 0,e.path,!a&&t===R.length-1)]},e.path)),a&&(0,Q.jsxs)(`span`,{className:`canvas-address-segment`,children:[(0,Q.jsx)(`span`,{"aria-hidden":`true`,children:R.length?`/`:``}),z(a,``,d,a)]}),o&&z(`#${o}`,`canvas-address-section`,f,o,!0)]})}),v&&(0,Q.jsxs)(`button`,{ref:M,type:`button`,className:`canvas-nav-button canvas-address-search`,onClick:()=>{T?A.current?.form?.requestSubmit():E(!0)},"aria-label":T?`Run search`:`Search this canvas`,"aria-expanded":T,title:T?`Run search`:`Search this canvas`,children:[(0,Q.jsx)(W,{size:17}),v.queries.length>0&&(0,Q.jsx)(`span`,{className:`canvas-nav-dot`})]})]}),p&&(0,Q.jsxs)(`button`,{type:`button`,className:`canvas-nav-button canvas-filter-button`,onClick:p,"aria-label":m?`Filters active`:`Filters`,"aria-expanded":!!g,"data-active":!!m,title:m?`Filters active`:`Filters`,children:[(0,Q.jsx)(j,{size:19}),m&&(0,Q.jsx)(`span`,{className:`canvas-nav-dot`})]}),_&&(0,Q.jsx)(`button`,{type:`button`,className:`canvas-nav-button canvas-add-button`,onClick:_,"aria-label":`Add here`,title:`Add here`,children:(0,Q.jsx)(b,{size:21})}),C]}),T&&v&&(0,Q.jsxs)(`div`,{className:`canvas-search-dropdown`,children:[(0,Q.jsxs)(`div`,{className:`canvas-search-heading`,children:[(0,Q.jsx)(`span`,{children:v.localOnly?`Filter documents on this page`:y?`Type to filter this page · Enter to search all results`:`Search text or an exact ID, e.g. @id:123`}),(0,Q.jsx)(`button`,{type:`button`,className:`canvas-nav-button`,onClick:I,"aria-label":`Close search`,children:(0,Q.jsx)(h,{size:16})})]}),(0,Q.jsx)(En,{...v})]}),!T&&v&&v.queries.length>0&&(0,Q.jsx)(`div`,{className:`px-3 pb-2`,children:(0,Q.jsx)(En,{queries:v.queries,onRemoveQuery:v.onRemoveQuery})})]})}function kn({workspaceId:e,document:t,className:n}){let r=wn(t);return r?(0,Q.jsx)(r,{workspaceId:e,document:t,className:n}):(0,Q.jsx)(`pre`,{className:`overflow-auto p-2 text-xs`,children:JSON.stringify(t.data,null,2)})}function An({workspaceId:e,documentId:t}){let[n,r]=(0,Z.useState)(null),[i,a]=(0,Z.useState)(``),[o,s]=(0,Z.useState)({}),[c,l]=(0,Z.useState)(null),u=(0,Z.useCallback)(async()=>{try{let n=await gt(e,t);r(n),a(``)}catch(e){a(e instanceof Error?e.message:`Could not load thread`)}},[e,t]);return(0,Z.useEffect)(()=>{let n=!0;gt(e,t).then(e=>{n&&(r(e),a(``))}).catch(e=>{n&&a(e instanceof Error?e.message:`Could not load thread`)});let i=()=>{u()};return window.addEventListener(`workspace:documents:refresh`,i),window.addEventListener(ct,i),()=>{n=!1,window.removeEventListener(`workspace:documents:refresh`,i),window.removeEventListener(ct,i)}},[e,t,u]),i?(0,Q.jsxs)(`div`,{className:`p-3`,children:[(0,Q.jsx)(`p`,{role:`alert`,className:`text-sm text-destructive`,children:i}),(0,Q.jsx)(K,{variant:`outline`,size:`sm`,onClick:()=>void u(),children:`Retry`})]}):!n||n.documentId!==t?(0,Q.jsx)(`p`,{className:`p-3 text-sm text-muted-foreground`,children:`Loading thread…`}):(0,Q.jsxs)(`section`,{"aria-label":`Message thread`,className:`space-y-3 p-2`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,Q.jsxs)(`h3`,{className:`text-sm font-medium`,children:[`Thread · `,n.documents.length,` message`,n.documents.length===1?``:`s`]}),(0,Q.jsx)(K,{size:`sm`,variant:`outline`,onClick:()=>void u(),children:`Refresh`})]}),n.documents.length===1&&(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`No linked replies have been indexed. Other messages in this conversation are separate from this reply thread.`}),n.truncated&&(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Showing up to 200 linked messages.`}),n.documents.map(r=>{let i=fe(r),a=r.schema===`data/schema/message/email`,c=a||[`slack`,`whatsapp`].includes(String(r.data.platform)),u=r.data.timestamp||r.data.date,d=u?new Date(String(u)):null,f=(n.parents[r.id]||[]).flatMap(e=>{let t=n.documents.find(t=>Number(t.id)===e);return t?[fe(t).title]:[]}),p=o[Number(r.id)]??Number(r.id)===t;return(0,Q.jsxs)(`details`,{open:p,onToggle:e=>{let t=e.currentTarget.open;s(e=>e[Number(r.id)]===t?e:{...e,[Number(r.id)]:t})},className:`rounded-lg border bg-card`,children:[(0,Q.jsxs)(`summary`,{className:`cursor-pointer space-y-1 p-3 text-sm`,children:[(0,Q.jsx)(`span`,{className:`font-medium`,children:i.title}),(0,Q.jsxs)(`span`,{className:`block text-xs text-muted-foreground`,children:[i.subtitle,d&&!Number.isNaN(d.getTime())?` · ${d.toLocaleString()}`:``]}),f.length>0&&(0,Q.jsxs)(`span`,{className:`block text-xs text-muted-foreground`,children:[`Reply to `,f.join(`, `)]})]}),p&&c&&(0,Q.jsx)(`div`,{className:`flex flex-wrap gap-2 px-3 pb-2`,children:(a?[`reply`,`replyAll`,`forward`]:[`reply`]).map(e=>(0,Q.jsx)(K,{variant:`outline`,size:`sm`,onClick:()=>l({document:r,mode:e}),children:e===`replyAll`?`Reply all`:e===`forward`?`Forward`:`Reply`},e))}),p&&(0,Q.jsx)(kn,{workspaceId:e,document:r})]},r.id)}),c&&(0,Q.jsx)(vt,{workspaceId:e,replyToDocumentId:Number(c.document.id),mode:c.mode,originalSubject:typeof c.document.data.subject==`string`?c.document.data.subject:void 0,onClose:()=>l(null)},`${c.document.id}:${c.mode}`)]})}function jn(e,t){return e.slice(0,3).map(e=>{let n=t.get(e.id),r=e.reason===`not-found`?`Source missing from the storage index. Resync the source backend and retry.`:e.reason===`not found`?`Document no longer exists in this workspace. Refresh the list and select it again.`:e.reason;return`${n?`${n} (ID ${e.id})`:`Document ${e.id}`}: ${r}`}).join(`
8
- `)+(e.length>3?`\n…and ${e.length-3} more failed file${e.length===4?``:`s`}.`:``)}var Mn=e(i(),1),Nn=[{mode:`copy`,label:`Copy to`,icon:(0,Q.jsx)(x,{className:`h-3.5 w-3.5`})},{mode:`move`,label:`Move to`,icon:(0,Q.jsx)(M,{className:`h-3.5 w-3.5`})},{mode:`delete`,label:`Delete from`,icon:(0,Q.jsx)(w,{className:`h-3.5 w-3.5`})}],Pn=[{value:`rename`,label:`Rename mine (file-1.ext)`},{value:`overwrite`,label:`Overwrite the existing file`},{value:`error`,label:`Skip the document`}],Fn=`h-9 w-full rounded-md border bg-background px-2 text-xs outline-none focus:ring-2 focus:ring-ring disabled:opacity-50`;function In(e){return e.driver===`cacache`?k:e.config?.remote===!0?v:s}function Ln({workspaceId:e,documentCount:t,initialMode:n=`copy`,defaultFilename:r=``,onConfirm:i,onClose:a,saving:o=!1,sizeClassName:c,deleteFrom:l,progress:u,stopping:d=!1,onStop:f}){let{showErrorToast:p}=X(),[g,_]=(0,Z.useState)(!1);mt(a,!o&&!g);let[v,y]=(0,Z.useState)(n),[b,S]=(0,Z.useState)(null),[C,T]=(0,Z.useState)(null),[E,D]=(0,Z.useState)(()=>new Set(n===`delete`&&l?[l.backend]:[])),[O,k]=(0,Z.useState)(!1),[A,j]=(0,Z.useState)(``),[N,P]=(0,Z.useState)(r),[F,ee]=(0,Z.useState)(`rename`);(0,Z.useEffect)(()=>{let t=!1;return Le(e).then(e=>{if(t)return;S(e.filter(e=>e.kind===`storage`));let n=new Set(e.filter(e=>e.kind===`storage`&&e.enabled!==!1&&e.config?.readOnly!==!0&&e.config?.supported!==!1).map(e=>e.address));D(e=>new Set([...e].filter(e=>n.has(e))))}).catch(e=>{t||T(e instanceof Error?e.message:String(e))}),()=>{t=!0}},[e]);let I=v===`move`,L=e=>e.enabled===!1?`disabled`:e.config?.readOnly===!0?`read-only`:e.config?.supported===!1?`unsupported`:null,te=(0,Z.useMemo)(()=>(b||[]).filter(e=>!L(e)).map(e=>e.address),[b,v]),ne=e=>{y(e),D(t=>{let n=(b||[]).filter(e=>e.enabled!==!1&&e.config?.readOnly!==!0&&e.config?.supported!==!1).map(e=>e.address),r=[...t].filter(e=>n.includes(e));return new Set(e===`move`?r.slice(0,1):r)})},R=e=>{D(t=>{if(I)return t.has(e)?new Set:new Set([e]);let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},z=(0,Z.useMemo)(()=>(b||[]).filter(e=>E.has(e.address)&&Ne(e)),[b,E]),B=v!==`delete`&&z.length>0,V=e=>{let t=ke(e,b||[]),n=t&&b?.find(e=>e.address===t.address);return!!n&&!L(n)&&v!==`delete`&&!o},H=async(t,n)=>{let r=ke(t,b||[]);if(!r||!V(t))throw Error(`Choose a writable file backend folder`);await Me(e,r.driver,r.address,[[r.key,n].filter(Boolean).join(`/`)])},ie=e=>{_(!1);let t=Oe(e[0]||``,b||[]),n=t?(b||[]).find(e=>e.address===t.address):null;if(!t||!n){p(`Pick a folder inside a storage backend`);return}if(L(n)){p(`${n.address} is ${L(n)}`);return}if(!Ne(n)){p(`${n.address} does not keep folders — objects are stored by content`);return}j(t.key),D(e=>I?new Set([t.address]):new Set([...e,t.address]))},ae=async()=>{E.size===0||o||await i([...E],v,{keepDocument:O,folder:B?A.trim():``,filename:B&&t===1?N.trim():``,onConflict:F})},U=t,W=U===1?``:`s`,oe=v===`delete`?`Delete ${U} document${W} from…`:`${v===`move`?`Move`:`Copy`} ${U} document${W} to…`,q=v===`delete`?`Delete from`:v===`move`?`Move to`:`Copy to`,J=E.size===0?q.split(` `)[0]:`${q} ${E.size} backend${E.size===1?``:`s`}`;return(0,Q.jsxs)(`div`,{className:G(`flex flex-col overflow-hidden rounded-(--panel-radius) border bg-card shadow-elevation-4`,c||`max-h-viewport-card w-[min(420px,90vw)] max-md:h-full max-md:w-full max-md:shadow-elevation-5`),children:[(0,Q.jsxs)(`div`,{className:`flex h-12 shrink-0 items-center justify-between border-b px-4`,children:[(0,Q.jsxs)(`span`,{className:`flex items-center gap-2 text-sm font-medium`,children:[(0,Q.jsx)(s,{className:`h-4 w-4`}),oe]}),(0,Q.jsx)(`button`,{type:`button`,onClick:a,disabled:o,className:`text-muted-foreground transition-colors hover:text-foreground disabled:opacity-40`,"aria-label":`Close`,children:(0,Q.jsx)(h,{className:`h-4 w-4`})})]}),(0,Q.jsx)(`div`,{className:`flex shrink-0 items-center gap-1 border-b px-2 pt-2`,children:Nn.map(({mode:e,label:t,icon:n})=>(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>ne(e),disabled:o,className:G(`flex items-center gap-1.5 rounded-t-md border-b-2 px-3 py-2 text-xs font-medium transition-colors disabled:opacity-50`,v===e?e===`delete`?`border-destructive text-destructive`:`border-primary text-foreground`:`border-transparent text-muted-foreground hover:text-foreground`),children:[n,t]},e))}),(0,Q.jsxs)(`div`,{className:`min-h-0 flex-1 space-y-1.5 overflow-y-auto p-3`,children:[C&&(0,Q.jsx)(`p`,{className:`px-2 py-1.5 text-xs text-destructive`,children:C}),!b&&!C&&(0,Q.jsx)(`div`,{className:`px-2 py-3 text-xs text-muted-foreground`,children:`Loading backends…`}),b?.length===0&&(0,Q.jsx)(`p`,{className:`px-2 py-1.5 text-xs text-muted-foreground`,children:`No storage backends configured.`}),b?.map(e=>{let t=In(e),n=L(e),r=E.has(e.address),i=e.config?.remote===!0;return(0,Q.jsxs)(`div`,{onClick:()=>!n&&!o&&R(e.address),className:G(`group relative flex min-h-10 items-center gap-2 rounded-md px-3 py-2 text-sm shadow-elevation-1 transition-all select-none`,`before:absolute before:left-0 before:top-0 before:bottom-0 before:w-1.5 before:transition-colors`,n?`cursor-not-allowed bg-muted/40 opacity-60 before:bg-transparent`:`cursor-pointer hover:shadow`,!n&&r?v===`delete`?`bg-destructive/[0.08] hover:bg-destructive/[0.12] before:bg-destructive`:`bg-primary/[0.08] hover:bg-primary/[0.12] before:bg-primary`:n?``:`bg-card hover:bg-primary/[0.04] before:bg-transparent`),title:e.address,children:[(0,Q.jsx)(`input`,{type:I?`radio`:`checkbox`,checked:r,disabled:!!n||o,onChange:()=>R(e.address),onClick:e=>e.stopPropagation(),className:`h-4 w-4 shrink-0 accent-primary`,"aria-label":e.address}),(0,Q.jsx)(t,{className:`h-4 w-4 shrink-0 text-muted-foreground`}),(0,Q.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,Q.jsx)(`span`,{className:`block truncate font-medium`,children:e.config?.label||e.address}),(0,Q.jsxs)(`span`,{className:`block truncate font-mono text-[10px] text-muted-foreground`,children:[e.driver,` · `,e.address]})]}),i&&(0,Q.jsx)(`span`,{className:`shrink-0 rounded bg-info-subtle px-1.5 py-0.5 text-[10px] uppercase text-muted-foreground`,title:`Network mount${e.config?.transport?` (${e.config.transport})`:``} — transfers cross the network`,children:e.config?.transport||`remote`}),n&&(0,Q.jsx)(`span`,{className:`shrink-0 rounded bg-muted px-1.5 py-0.5 text-[10px] uppercase text-muted-foreground`,children:n})]},`${e.driver}/${e.address}`)}),v===`delete`&&(0,Q.jsxs)(`label`,{className:`mt-3 flex cursor-pointer items-start gap-2 rounded-md border border-destructive/30 bg-destructive/5 px-3 py-2 text-xs`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:O,onChange:e=>k(e.target.checked),disabled:o,className:`mt-0.5 h-3.5 w-3.5 accent-destructive`}),(0,Q.jsxs)(`span`,{children:[`Keep the index entry when its `,(0,Q.jsx)(`strong`,{children:`last`}),` copy is deleted.`,(0,Q.jsx)(`span`,{className:`block text-muted-foreground`,children:`Otherwise the document moves to workspace Trash once no locations remain.`})]})]}),B&&(0,Q.jsxs)(`div`,{className:`mt-3 space-y-2 rounded-md border px-3 py-2`,children:[(0,Q.jsxs)(`p`,{className:`text-xs font-medium`,children:[`Destination on `,z.map(e=>e.config?.label||e.address).join(`, `)]}),(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{htmlFor:`backend-transfer-folder`,className:`text-[11px] text-muted-foreground`,children:`Folder (relative to the backend root)`}),(0,Q.jsxs)(`div`,{className:`flex gap-1.5`,children:[(0,Q.jsx)(se,{id:`backend-transfer-folder`,value:A,onChange:e=>j(e.target.value),placeholder:`/`,disabled:o,className:`h-9 font-mono text-xs`}),(0,Q.jsx)(K,{type:`button`,variant:`outline`,size:`icon`,className:`h-9 w-9 shrink-0`,onClick:()=>_(!0),disabled:o,"aria-label":`Browse backend folders`,title:`Browse…`,children:(0,Q.jsx)(re,{className:`h-4 w-4`})})]})]}),t===1?(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{htmlFor:`backend-transfer-filename`,className:`text-[11px] text-muted-foreground`,children:`File name`}),(0,Q.jsx)(se,{id:`backend-transfer-filename`,value:N,onChange:e=>P(e.target.value),placeholder:r||`keeps the document's own name`,disabled:o,className:`h-9 font-mono text-xs`})]}):(0,Q.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:`Each document keeps its own file name and extension.`}),(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{htmlFor:`backend-transfer-conflict`,className:`text-[11px] text-muted-foreground`,children:`If a different file already has that name`}),(0,Q.jsx)(`select`,{id:`backend-transfer-conflict`,className:Fn,value:F,onChange:e=>ee(e.target.value),disabled:o,children:Pn.map(e=>(0,Q.jsx)(`option`,{value:e.value,children:e.label},e.value))})]})]}),v===`move`&&te.length>0&&(0,Q.jsx)(`p`,{className:`px-1 pt-2 text-[11px] text-muted-foreground`,children:`The source copy is released only once the destination write is durable.`})]}),o&&u&&(0,Q.jsxs)(`div`,{role:`status`,className:`flex items-center justify-between gap-2 border-t px-4 py-2 text-xs`,children:[(0,Q.jsxs)(`span`,{children:[d?`Stopping after current file`:`Processing`,` · `,u.completed,`/`,u.total]}),f&&(0,Q.jsx)(K,{size:`sm`,variant:`outline`,onClick:f,disabled:d,children:`Stop`})]}),(0,Q.jsxs)(`div`,{className:`flex shrink-0 items-center justify-between gap-2 border-t px-4 py-3`,children:[(0,Q.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[E.size,` backend`,E.size===1?``:`s`,` selected`]}),(0,Q.jsx)(K,{size:`sm`,variant:v===`delete`?`destructive`:`default`,onClick:ae,disabled:E.size===0||o,children:o?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(ce,{className:`mr-1.5 h-3.5 w-3.5`}),`Working…`]}):(0,Q.jsxs)(Q.Fragment,{children:[v===`delete`?(0,Q.jsx)(w,{className:`mr-1 h-3.5 w-3.5`}):v===`move`?(0,Q.jsx)(M,{className:`mr-1 h-3.5 w-3.5`}):(0,Q.jsx)(x,{className:`mr-1 h-3.5 w-3.5`}),J]})})]}),v===`delete`&&(0,Q.jsxs)(`div`,{className:`flex items-start gap-2 border-t bg-destructive/5 px-4 py-2 text-[11px] text-muted-foreground`,children:[(0,Q.jsx)(m,{className:`mt-0.5 h-3.5 w-3.5 shrink-0 text-destructive`}),(0,Q.jsx)(`span`,{children:l&&E.has(l.backend)?`Deletes selected files in ${l.backend}/${l.folder}. Copies in other folders are kept.${E.size>1?` Other selected backends are also targeted.`:` Copies on other backends are kept.`}`:`Deletes the file data from the selected backends. Copies on other backends are untouched.`})]}),g&&(0,Q.jsx)(yt,{onClose:()=>_(!1),children:(0,Q.jsx)(de,{sizeClassName:`h-full w-[380px] max-w-[90vw] max-md:w-full`,multiple:!1,tabs:[`backends`],fixedWorkspaceName:e,title:`Pick a destination folder…`,confirmLabel:`Use folder`,backendFolderCreation:{canCreate:V,create:H},onConfirm:ie,onClose:()=>_(!1)})})]})}var Rn={exif:`from the photo's EXIF`,device:`from the device at capture`,manual:`placed by hand`};function zn(e){let t=`${e.lat.toFixed(5)}, ${e.lon.toFixed(5)}`,n=e.source?Rn[e.source]:null;return[t,e.accuracy==null?null:`±${e.accuracy} m`,n].filter(Boolean).join(` · `)}function Bn({value:e,onChange:t,idPrefix:n=`edit-geo`}){let[r,i]=(0,Z.useState)(!1);return(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(q,{htmlFor:`${n}-action`,children:`Location`}),(0,Q.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,Q.jsxs)(`span`,{className:`flex min-w-0 items-center gap-2 text-xs`,children:[(0,Q.jsx)(ae,{className:e?`h-4 w-4 shrink-0 text-info`:`h-4 w-4 shrink-0 text-muted-foreground`}),(0,Q.jsx)(`span`,{className:e?`truncate tabular-nums`:`truncate text-muted-foreground`,children:e?zn(e):`No location on this document`})]}),(0,Q.jsxs)(`span`,{className:`flex shrink-0 items-center gap-1`,children:[(0,Q.jsxs)(`button`,{id:`${n}-action`,type:`button`,onClick:()=>i(!0),className:`inline-flex items-center gap-1.5 rounded-md border border-border px-2 py-1 text-xs text-muted-foreground transition-colors hover:bg-muted hover:text-foreground`,children:[(0,Q.jsx)(z,{className:`h-3.5 w-3.5`}),e?`Move pin`:`Set on map`]}),e&&(0,Q.jsx)(`button`,{type:`button`,onClick:()=>t(null),"aria-label":`Remove location`,title:`Remove location`,className:`rounded p-1 text-muted-foreground hover:bg-muted hover:text-foreground`,children:(0,Q.jsx)(w,{className:`h-3.5 w-3.5`})})]})]}),r&&(0,Q.jsx)(We,{initial:e,onPick:e=>t({lat:e.lat,lon:e.lon,source:`manual`}),onClose:()=>i(!1)})]})}function Vn(e){return e===`data/schema/note`||e===`data/schema/link`||e===`data/schema/tab`||e===`data/schema/task`||e===`data/schema/drawing`||e===`data/schema/identity`||e.startsWith(`data/schema/identity/`)}function Hn(e){return Vn(e.schema)||Ze(e)}function Un(e){return e===`data/schema/link`?{urlKey:`uri`,titleKey:`label`}:e===`data/schema/tab`?{urlKey:`url`,titleKey:`title`}:{urlKey:null,titleKey:`title`}}async function Wn(e,t,n){try{let r=new Set(n.map(e=>e.identityId).filter(Boolean)),i=await Te(e,t,{resolve:!1}),a=new Set(i.outgoing.filter(e=>e.p===`member-of`).map(e=>e.to));for(let n of r)a.has(n)||await Ee(e,t,`member-of`,[n]);for(let n of a)r.has(n)||await we(e,t,`member-of`,n)}catch(e){console.error(`Failed to sync organization relations`,e)}}function Gn({document:e,workspaceId:t,onClose:n}){let{showSuccessToast:r,showErrorToast:i}=X(),a=Vn(e.schema),o=e.schema===`data/schema/file`,[s,c]=(0,Z.useState)(()=>Y(e)),l=!o||!!s.trim()&&!/[\\/]/.test(s)&&!Array.from(s).some(e=>e.charCodeAt(0)<32)&&s!==`.`&&s!==`..`,u=e.schema===pe,d=Ze(e),f=et(e)??`markdown`,p=d&&Xe(e),m=e.schema===ge,h=e.schema===`data/schema/identity`||e.schema.startsWith(`data/schema/identity/`),{urlKey:g,titleKey:_}=Un(e.schema),[v,y]=(0,Z.useState)(g?String(e.data?.[g]??``):``),[b,x]=(0,Z.useState)(String(e.data?.[_]??``)),[S,C]=(0,Z.useState)(String(e.data?.content??``)),[w,T]=(0,Z.useState)(String(e.data?.description??``)),[E,D]=(0,Z.useState)(e.data?.status??`pending`),[O,k]=(0,Z.useState)(typeof e.data?.priority==`number`?e.data.priority:``),[A,j]=(0,Z.useState)(e.data?.dueDate?ft(String(e.data.dueDate)):ut()),M=He(Ge(e)),[N,P]=(0,Z.useState)(String(e.comment??``)),F=e.metadata?.geo??null,[ee,I]=(0,Z.useState)(F),L=e.features??e.metadata?.features,[te,ne]=(0,Z.useState)(ot(L).length?ot(L):e.data?.tags??[]),R=xt(e,t,u),{title:z,content:B,comment:V,tags:H,geo:re,setTitle:ie,setContent:ae,setComment:U,setTags:W,setGeo:oe}=u?R:{title:b,content:S,comment:N,tags:te,geo:ee,setTitle:x,setContent:C,setComment:P,setTags:ne,setGeo:I},G=JSON.stringify(re??null)!==JSON.stringify(F??null),J=$e(t,e.id,{mode:`text`,enabled:d&&!p,maxTextLength:Qe,version:e.checksumArray?.[0]??null}),[ce,le]=(0,Z.useState)(null),ue=`${e.id}:${e.checksumArray?.[0]??``}`;d&&J.text!=null&&ce!==ue&&(le(ue),ae(J.text));let[de,fe]=(0,Z.useState)([]),[me,he]=(0,Z.useState)(!1),{replicating:_e,mirror:ve}=Ie(e);(0,Z.useEffect)(()=>{let e=!1;return De(t).then(t=>{e||fe(t)}).catch(()=>{}),()=>{e=!0}},[t]);let ye=!g||(()=>{try{return new URL(v.trim()),!0}catch{return!1}})(),be=!me&&l&&(d?!p&&J.text!=null&&!J.loading:a?h?M.displayName.trim().length>0&&M.emailValid:m?z.trim().length>0:u?R.canSave:ye:!0),Se=async()=>{he(!0);let c=[...(L||[]).filter(e=>!e.startsWith(`tag/`)),...at(H)];try{if(u){await R.save(),n();return}if(d){let i=await nt(t,e,B,{comment:V.trim(),metadata:{features:c,...o?{filename:s.trim()}:{},...G?{geo:re}:{}}});r(`Document updated`),window.dispatchEvent(new CustomEvent(`workspace:documents:refresh`)),n(i);return}let i={id:e.id,schema:e.schema,schemaVersion:e.schemaVersion,comment:V.trim(),metadata:{features:c,...o?{filename:s.trim()}:{}}};if(h){let{type:t,...n}=e.data??{};i.schema=`${xe}/${M.values.type}`,i.data={...n,...Ue(M.values)}}else if(m)i.data={...e.data,...lt({title:z,description:w,status:E,priority:O,due:A})};else if(a){let t=H.map(e=>e.trim()).filter(Boolean),n;u?n={...z.trim()?{title:z.trim()}:{},content:B}:(n={...e.data},g&&(n[g]=v.trim()),z.trim()?n[_]=z.trim():delete n[_],n.tags=t),i.data=n}G&&(i.metadata={...i.metadata??{},geo:re}),await Fe(t,i),h&&(await Wn(t,e.id,M.values.organizations),st()),r(`Document updated`),window.dispatchEvent(new CustomEvent(`workspace:documents:refresh`)),n()}catch(e){i(e instanceof Error?e.message:`Failed to update document`)}finally{he(!1)}};return(0,Q.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[o&&(0,Q.jsxs)(`div`,{className:`space-y-2`,children:[(0,Q.jsx)(q,{htmlFor:`file-name`,children:`File name`}),(0,Q.jsx)(se,{id:`file-name`,value:s,onChange:e=>c(e.target.value)}),(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Changes the object’s name; storage locations stay the same.`})]}),a&&g&&(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(q,{htmlFor:`edit-url`,children:`URL`}),(0,Q.jsx)(se,{id:`edit-url`,value:v,onChange:e=>y(e.target.value),placeholder:`https://example.com`,className:`font-mono text-xs`}),v.trim()&&!ye&&(0,Q.jsx)(`p`,{className:`text-xs text-destructive`,children:`Enter a valid URL, e.g. https://example.com`})]}),a&&h&&(0,Q.jsx)(qe,{idPrefix:`edit-identity`,workspaceName:t,...M,emailValid:M.emailValid}),a&&m&&(0,Q.jsx)(Be,{idPrefix:`edit-todo`,title:z,setTitle:ie,description:w,setDescription:T,status:E,setStatus:D,priority:O,setPriority:k,due:A,setDue:j}),a&&!m&&!h&&(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(q,{htmlFor:`edit-title`,children:`Title`}),(0,Q.jsx)(se,{id:`edit-title`,value:z,onChange:e=>ie(e.target.value),placeholder:u?`Optional; defaults to today's date`:`Optional display title`})]}),(u||d)&&(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(q,{children:`Body`}),p?(0,Q.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`This file is too large to edit here (`,`>`,1e3,` kB) — download it instead.`]}):d&&J.error?(0,Q.jsx)(`p`,{className:`text-xs text-destructive`,children:J.error}):d&&J.text==null?(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Loading content…`}):(0,Q.jsx)(St,{kind:u?`markdown`:f,value:B,onChange:ae,placeholder:u?`Write your note…`:void 0})]}),(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(q,{children:`Tags`}),(0,Q.jsx)(Ke,{tags:H,onChange:W,suggestions:de})]}),(0,Q.jsx)(Bn,{value:re,onChange:oe}),(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(q,{htmlFor:`edit-comment`,children:`Comment`}),(0,Q.jsx)(`textarea`,{id:`edit-comment`,value:V,onChange:e=>U(e.target.value),rows:3,placeholder:`Add context you can't infer from the content, e.g. “sofa from the cozmo bar in Košice”`,className:`flex w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-elevation-1 transition-colors placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50`})]}),u&&(0,Q.jsx)(bt,{...R,onRetry:R.save}),(0,Q.jsxs)(`div`,{className:`flex justify-end gap-2 pt-2`,children:[(0,Q.jsx)(K,{variant:`outline`,size:`sm`,onClick:()=>n(),disabled:me,children:u?`Close`:`Cancel`}),(0,Q.jsx)(K,{size:`sm`,onClick:Se,disabled:!be,children:me?_e?`Replicating to ${ve.label}…`:`Saving…`:`Save changes`})]})]})}var Kn=(0,Z.createContext)(null),qn={entry:null,open:()=>{},close:()=>{}};function Jn(){return(0,Z.useContext)(Kn)??qn}var Yn=`main`,Xn=(0,Z.createContext)(null);function Zn(){return(0,Z.useContext)(Xn)}var Qn=50;function $n({relation:e,workspaceId:t,direction:n,onRemove:r,removing:i}){let{open:a}=Ct(),o=Jn(),s=Zn(),c=n===`out`?e.to:e.from,l=e.document??null,u=l?fe(l).title:``,[d,f]=(0,Z.useState)(!1),{showErrorToast:p}=X(),m=async()=>{if(!(c==null||!l)){f(!0);try{let n=e.preview?await Pe(t,c):l;s?o.open(n,t):a(n,t)}catch(e){p(e instanceof Error?e.message:`Failed to open document`)}finally{f(!1)}}},h=!e.meta||e.meta.src===`doc`;return(0,Q.jsxs)(`div`,{className:`group flex items-center gap-2 rounded-md px-2 py-1.5 text-sm hover:bg-muted/60`,children:[n===`out`?(0,Q.jsx)(M,{className:`h-3.5 w-3.5 shrink-0 text-muted-foreground`}):(0,Q.jsx)(V,{className:`h-3.5 w-3.5 shrink-0 text-muted-foreground`}),l?(0,Q.jsx)(ht,{document:l,size:3.5}):null,l?(0,Q.jsx)(`button`,{type:`button`,onClick:()=>void m(),disabled:d,className:`min-w-0 flex-1 truncate text-left hover:underline`,title:u,children:u}):(0,Q.jsxs)(`span`,{className:`min-w-0 flex-1 truncate italic text-muted-foreground`,children:[`Document `,c,` (not available)`]}),(0,Q.jsxs)(`span`,{className:`shrink-0 font-mono text-[10px] text-muted-foreground`,children:[`#`,c]}),!h&&(0,Q.jsx)(`span`,{className:`shrink-0 rounded-full bg-muted px-1.5 py-0.5 text-[10px] text-muted-foreground`,title:`Derived by ${e.meta?.src}`,children:e.meta?.src}),h&&(0,Q.jsx)(`button`,{type:`button`,onClick:r,disabled:i,className:`shrink-0 rounded p-1 text-muted-foreground opacity-0 transition-opacity hover:bg-destructive/10 hover:text-destructive group-hover:opacity-100 disabled:opacity-40`,title:`Remove relation`,"aria-label":`Remove relation`,children:(0,Q.jsx)(w,{className:`h-3.5 w-3.5`})})]})}function er({document:e,workspaceId:t}){let{showSuccessToast:n,showErrorToast:r}=X(),[i,a]=(0,Z.useState)(null),[o,s]=(0,Z.useState)(null),[c,l]=(0,Z.useState)(!1),[u,d]=(0,Z.useState)(!1),[f,p]=(0,Z.useState)(null),[m,h]=(0,Z.useState)(0),[g,_]=(0,Z.useState)(1),v=(0,Z.useRef)(0),y=(0,Z.useCallback)(()=>{v.current++},[]),x=(0,Z.useCallback)(async()=>{let n=++v.current;try{let r=await Te(t,e.id,{offset:m*Qn,limit:Qn,summary:!0});if(n!==v.current)return;let i=Math.max(0,Math.ceil(Math.max(r.outgoingCount??r.outgoing.length,r.incomingCount??r.incoming.length)/Qn)-1);if(_(i+1),m>i){h(i);return}a(r),s(null)}catch(e){if(n!==v.current)return;s(e instanceof Error?e.message:String(e))}},[t,e.id,m]),S=`${t}:${e.id}`,[C,w]=(0,Z.useState)(S);S!==C&&(w(S),a(null),s(null),h(0),_(1)),(0,Z.useEffect)(()=>{async function e(){await x()}return e(),window.addEventListener(ct,e),()=>{y(),window.removeEventListener(ct,e)}},[x,y]);let T=async(i,a)=>{let o=a===`out`?i.to:i.from;if(o==null)return;let s=`${a}:${i.p}:${o}`;p(s);try{await we(t,e.id,i.p,o,a),n(`Relation removed`),st()}catch(e){r(e instanceof Error?e.message:`Failed to remove relation`)}finally{p(null)}},E=[{dir:`out`,title:`Points at`,hint:`this document as the subject`,entries:i?.outgoing??[]},{dir:`in`,title:`Pointed at by`,hint:`this document as the object`,entries:i?.incoming??[]}],D=e=>{a(null),h(e)};return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(`div`,{className:`mb-2 flex items-center justify-between gap-2`,children:[(0,Q.jsx)(`h3`,{className:`font-semibold`,children:`Documents`}),(0,Q.jsxs)(K,{variant:`outline`,size:`sm`,onClick:()=>l(!0),children:[(0,Q.jsx)(b,{className:`mr-1 h-3 w-3`}),` Add relation`]})]}),o?(0,Q.jsx)(`p`,{className:`text-sm text-destructive`,children:o}):i?E.every(e=>e.entries.length===0)?(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`No related documents.`}):(0,Q.jsx)(`div`,{className:`space-y-4`,children:E.filter(e=>e.entries.length>0).map(({dir:e,title:n,hint:r,entries:i})=>(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`p`,{className:`mb-1 text-xs font-medium text-muted-foreground`,title:r,children:n}),Array.from(new Set(i.map(e=>e.p))).map(n=>(0,Q.jsxs)(`div`,{className:`mb-2`,children:[(0,Q.jsx)(`p`,{className:`px-2 font-mono text-[11px] text-muted-foreground`,children:n}),i.filter(e=>e.p===n).map(n=>{let r=e===`out`?n.to:n.from,i=`${e}:${n.p}:${r}`;return(0,Q.jsx)($n,{relation:n,workspaceId:t,direction:e,removing:f===i,onRemove:()=>void T(n,e)},i)})]},n))]},e))}):(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Loading relations…`}),(g>1||m>0)&&(0,Q.jsxs)(`div`,{className:`mt-3 flex items-center justify-between gap-2 text-xs text-muted-foreground`,children:[(0,Q.jsx)(K,{variant:`outline`,size:`sm`,disabled:m===0,onClick:()=>D(m-1),children:`Previous`}),(0,Q.jsxs)(`span`,{children:[`Page `,m+1,` of `,g]}),(0,Q.jsx)(K,{variant:`outline`,size:`sm`,disabled:!i||m+1>=g,onClick:()=>D(m+1),children:`Next`})]}),c&&(0,Q.jsx)(yt,{onClose:()=>{u||l(!1)},children:(0,Q.jsx)(de,{sizeClassName:`h-full w-[380px] max-w-[90vw] max-md:w-full`,title:`Relate to…`,tabs:[`relations`],fixedWorkspaceName:t,documentCount:1,saving:u,relationPredicates:i?.predicates,relationExcludeIds:new Set([e.id]),onClose:()=>l(!1),onConfirm:()=>{},onConfirmRelation:async({predicate:i,direction:a,targetIds:o})=>{d(!0);try{await Ee(t,e.id,i,o,a),n(`Related to ${o.length} document${o.length===1?``:`s`}`),l(!1),st()}catch(e){r(e instanceof Error?e.message:`Failed to create relation`)}finally{d(!1)}}})})]})}var tr=(0,Z.lazy)(()=>a(()=>import(`./TextDocumentEditor-CU5ersd_.js`),__vite__mapDeps([2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,1,24]))),nr={reply:`Reply`,replyAll:`Reply all`,forward:`Forward`},rr={reply:d,replyAll:u,forward:f};function ir({document:e,workspaceId:t,initialEdit:n=!1,onChanged:r}){let i=Je()!=null,{showErrorToast:a,showSuccessToast:o}=X(),[s,l]=(0,Z.useState)(!1),u=e.data?.url||e.data?.uri,d=e.schema!==`data/schema/file`&&typeof u==`string`&&/^https?:\/\//i.test(u),[f,m]=(0,Z.useState)(!1),h=[`data/schema/message`,`data/schema/message/email`].includes(e.schema),[g,_]=(0,Z.useState)(null),v=e.schema===`data/schema/message/email`,y=!i&&(v||[`slack`,`whatsapp`].includes(String(e.data?.platform))),b=v?[`reply`,`replyAll`,`forward`]:[`reply`],x=e=>_(t=>t===e?null:e),S=!i,[C,w]=(0,Z.useState)(n&&!i),T=e.schema===be,[E,O]=(0,Z.useState)(!1),k=e.schema===`data/schema/note`||Ze(e),[A,j]=(0,Z.useState)(!1),M=`${t}:${e.id}:${n}:${i}`,[N,P]=(0,Z.useState)(M);M!==N&&(P(M),w(n&&!i),_(null),m(!1),O(!1),j(!1));let F=t=>{if(!S||!Hn(e)||t.defaultPrevented)return!1;let n=t.target;return n instanceof Element&&t.currentTarget.contains(n)&&!n.closest(`a, button, input, textarea, select, label, summary, audio, video, [role="button"], [role="checkbox"], [contenteditable]:not([contenteditable="false"])`)};return C&&S?(0,Q.jsx)(Gn,{document:e,workspaceId:t,onClose:e=>{w(!1),r?.(e)}}):(0,Q.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col gap-3`,children:[S&&(0,Q.jsxs)(`div`,{className:`flex shrink-0 justify-end gap-2`,children:[h&&(0,Q.jsx)(K,{size:`sm`,variant:f?`secondary`:`outline`,onClick:()=>m(!f),children:f?`Show message`:`View thread`}),y&&b.map(e=>{let t=rr[e];return(0,Q.jsxs)(K,{size:`sm`,variant:g===e?`secondary`:`outline`,onClick:()=>x(e),children:[(0,Q.jsx)(t,{className:`mr-1.5 h-3.5 w-3.5`}),nr[e]]},e)}),d&&(0,Q.jsxs)(K,{variant:`outline`,size:`sm`,disabled:s,onClick:async()=>{l(!0);try{await ye(t,e.id),window.dispatchEvent(new CustomEvent(`workspace:documents:refresh`)),r?.(),o(`File saved to workspace; the original link is preserved`)}catch(e){a(e instanceof Error?e.message:String(e))}finally{l(!1)}},children:[(0,Q.jsx)(U,{className:`mr-1 h-3 w-3`}),s?`Downloading…`:`Download to workspace`]}),e.schema===`data/schema/file`&&(0,Q.jsxs)(K,{variant:`outline`,size:`sm`,onClick:()=>ve(t,e.id,Y(e)||`document-${e.id}`).catch(e=>a(e instanceof Error?e.message:String(e))),children:[(0,Q.jsx)(U,{className:`mr-1 h-3 w-3`}),` Download`]}),T&&(0,Q.jsxs)(K,{variant:`outline`,size:`sm`,onClick:()=>O(!0),children:[(0,Q.jsx)(D,{className:`mr-1 h-3 w-3`}),` Edit sketch`]}),k&&(0,Q.jsxs)(K,{variant:`outline`,size:`sm`,onClick:()=>j(!0),children:[(0,Q.jsx)(p,{className:`mr-1 h-3 w-3`}),` Open editor`]}),(0,Q.jsxs)(K,{variant:`outline`,size:`sm`,onClick:()=>w(!0),children:[(0,Q.jsx)(c,{className:`mr-1 h-3 w-3`}),` Edit`]})]}),E&&S&&(0,Q.jsx)(Z.Suspense,{fallback:(0,Q.jsx)(`div`,{className:`fixed inset-0 z-fullscreen flex items-center justify-center bg-background surface-glass`,children:(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Loading sketch editor…`})}),children:(0,Q.jsx)(wt,{doc:e,workspaceName:t,onSaved:()=>{O(!1),r?.()},onClose:()=>O(!1),onDetails:()=>{O(!1),w(!0)}})}),A&&S&&(0,Q.jsx)(Z.Suspense,{fallback:(0,Q.jsx)(`div`,{className:`fixed inset-0 z-fullscreen flex items-center justify-center bg-background surface-glass`,children:(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Loading editor…`})}),children:(0,Q.jsx)(tr,{doc:e,workspaceName:t,onSaved:e=>{j(!1),r?.(e)},onClose:()=>j(!1),onDetails:()=>{j(!1),w(!0)}})}),(0,Q.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-auto`,onMouseDownCapture:e=>{e.button===0&&e.detail>1&&F(e)&&e.preventDefault()},onDoubleClickCapture:e=>{F(e)&&(e.preventDefault(),e.stopPropagation(),e.currentTarget.ownerDocument.getSelection()?.removeAllRanges(),w(!0))},children:[f&&!i?(0,Q.jsx)(An,{workspaceId:t,documentId:Number(e.id)},`${t}:${e.id}`):(0,Q.jsx)(kn,{workspaceId:t,document:e}),g&&y&&(0,Q.jsx)(vt,{workspaceId:t,replyToDocumentId:Number(e.id),mode:g,originalSubject:v&&typeof e.data?.subject==`string`?e.data.subject:void 0,onClose:()=>_(null)},`${e.id}:${g}`)]}),e.comment?.trim()&&(0,Q.jsxs)(`div`,{className:`shrink-0 rounded-md border border-border bg-muted/40 px-3 py-2`,children:[(0,Q.jsx)(`p`,{className:`text-xs font-medium text-muted-foreground mb-0.5`,children:`Comment`}),(0,Q.jsx)(`p`,{className:`text-sm whitespace-pre-wrap`,children:e.comment})]})]})}var ar=e=>e?new Date(e).toLocaleDateString(`en-US`,{year:`numeric`,month:`long`,day:`numeric`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`}):`—`,or=e=>!Number.isFinite(e)||!e?null:e>=1?`${e}s`:`1/${Math.round(1/e)}s`;function sr({meta:e}){let{geo:t,exif:n,dimensions:r}=e;if(!t&&!n&&!r)return null;let i=(e,t)=>t==null||t===``?null:(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(`span`,{className:`font-medium`,children:[e,`:`]}),(0,Q.jsx)(`span`,{className:`ml-2`,children:t})]});return(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`h3`,{className:`font-semibold mb-3`,children:`Photo`}),(0,Q.jsxs)(`div`,{className:`grid gap-3 text-sm`,children:[r&&i(`Dimensions`,r.width&&r.height?`${r.width} × ${r.height}`:null),n&&i(`Camera`,[n.make,n.model].filter(Boolean).join(` `)),n&&i(`Lens`,n.lensModel),n&&i(`Aperture`,Number.isFinite(n.fNumber)?`ƒ/${n.fNumber}`:null),n&&i(`Shutter`,or(n.exposureTime)),n&&i(`ISO`,Number.isFinite(n.iso)?n.iso:null),n&&i(`Focal length`,Number.isFinite(n.focalLength)?`${n.focalLength} mm`:null),n&&i(`Captured`,ar(n.capturedAt)),t&&Number.isFinite(t.lat)&&Number.isFinite(t.lon)&&i(`Location`,(0,Q.jsxs)(`a`,{href:`https://www.openstreetmap.org/?mlat=${t.lat}&mlon=${t.lon}#map=15/${t.lat}/${t.lon}`,target:`_blank`,rel:`noopener noreferrer`,className:`text-primary underline underline-offset-2`,children:[t.lat.toFixed(5),`, `,t.lon.toFixed(5),Number.isFinite(t.alt)?` · ${Math.round(t.alt)} m`:``]}))]})]})}function cr({document:e}){let t=e.metadata;return(0,Q.jsxs)(`div`,{className:`space-y-6`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`h3`,{className:`font-semibold mb-3`,children:`Basic Information`}),(0,Q.jsxs)(`div`,{className:`grid gap-3 text-sm`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`span`,{className:`font-medium`,children:`ID:`}),(0,Q.jsx)(`span`,{className:`ml-2 font-mono`,children:e.id})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`span`,{className:`font-medium`,children:`Schema:`}),(0,Q.jsx)(`span`,{className:`ml-2 font-mono`,children:e.schema})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`span`,{className:`font-medium`,children:`Schema Version:`}),(0,Q.jsx)(`span`,{className:`ml-2`,children:e.schemaVersion})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`span`,{className:`font-medium`,children:`Created:`}),(0,Q.jsx)(`span`,{className:`ml-2`,children:ar(e.createdAt)})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`span`,{className:`font-medium`,children:`Updated:`}),(0,Q.jsx)(`span`,{className:`ml-2`,children:ar(e.updatedAt)})]})]})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`h3`,{className:`font-semibold mb-3`,children:`Metadata`}),(0,Q.jsxs)(`div`,{className:`grid gap-3 text-sm`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`span`,{className:`font-medium`,children:`Content Type:`}),(0,Q.jsx)(`span`,{className:`ml-2`,children:e.metadata?.contentType??`—`})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`span`,{className:`font-medium`,children:`Content Encoding:`}),(0,Q.jsx)(`span`,{className:`ml-2`,children:e.metadata?.contentEncoding??`—`})]}),Number.isFinite(e.metadata?.size)&&(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`span`,{className:`font-medium`,children:`Size:`}),(0,Q.jsxs)(`span`,{className:`ml-2`,children:[e.metadata?.size,` bytes`]})]})]})]}),(0,Q.jsx)(sr,{meta:t}),Array.isArray(e.locations)&&e.locations.length>0&&(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`h3`,{className:`font-semibold mb-3`,children:`Locations`}),(0,Q.jsx)(`div`,{className:`space-y-2`,children:e.locations.map((e,t)=>{let{backend:n,key:r}=fr(e.url);return(0,Q.jsxs)(`div`,{className:`flex items-baseline gap-2 text-sm font-mono`,children:[(0,Q.jsx)(`span`,{className:`font-medium shrink-0`,children:n}),e.status&&e.status!==`available`&&(0,Q.jsx)(`span`,{className:`shrink-0 rounded border px-1 text-xs`,title:e.statusChangedAt,children:e.status===`deleted`?`Deleted`:`Not found`}),r&&(0,Q.jsx)(`span`,{className:`break-all text-muted-foreground`,children:r})]},t)})})]}),Array.isArray(e.checksumArray)&&e.checksumArray.length>0&&(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`h3`,{className:`font-semibold mb-3`,children:`Checksums`}),(0,Q.jsx)(`div`,{className:`space-y-2`,children:e.checksumArray.map((e,t)=>{let[n,r]=e.split(`/`);return(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 text-sm font-mono`,children:[(0,Q.jsxs)(`span`,{className:`font-medium`,children:[n,`:`]}),(0,Q.jsx)(`span`,{className:`break-all text-muted-foreground`,children:r})]},t)})})]}),e.indexOptions&&(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`h3`,{className:`font-semibold mb-3`,children:`Index Options`}),(0,Q.jsxs)(`div`,{className:`space-y-3 text-sm`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`span`,{className:`font-medium`,children:`FTS Search Fields:`}),(0,Q.jsx)(`div`,{className:`ml-2 mt-1`,children:(e.indexOptions.ftsSearchFields??[]).map((e,t)=>(0,Q.jsx)(`span`,{className:`mb-1 mr-2 inline-block rounded bg-muted px-2 py-1 text-xs`,children:e},t))})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`span`,{className:`font-medium`,children:`Vector Embedding Fields:`}),(0,Q.jsx)(`div`,{className:`ml-2 mt-1`,children:(e.indexOptions.vectorEmbeddingFields??[]).map((e,t)=>(0,Q.jsx)(`span`,{className:`mb-1 mr-2 inline-block rounded bg-muted px-2 py-1 text-xs`,children:e},t))})]})]})]})]})}function lr({document:e}){let{showSuccessToast:t,showErrorToast:n}=X(),r=JSON.stringify(e,null,2);return(0,Q.jsxs)(`div`,{className:`space-y-2`,children:[(0,Q.jsx)(`div`,{className:`flex justify-end`,children:(0,Q.jsxs)(K,{variant:`outline`,size:`sm`,onClick:async()=>{try{await navigator.clipboard.writeText(r),t(`Copied to clipboard`)}catch{n(`Copy failed`)}},children:[(0,Q.jsx)(x,{className:`mr-1 h-3 w-3`}),` Copy to clipboard`]})}),(0,Q.jsx)(`pre`,{className:`overflow-x-auto rounded-lg bg-muted p-4 text-xs`,children:r})]})}function ur({document:e,workspaceId:t}){let[n,r]=(0,Z.useState)(null),[i,a]=(0,Z.useState)(null),o=`${t}:${e.id}`,[s,c]=(0,Z.useState)(o);return o!==s&&(c(o),r(null),a(null)),(0,Z.useEffect)(()=>{let n=!1;return _e(t,e.id).then(e=>{n||r(e)}).catch(e=>{n||a(e instanceof Error?e.message:String(e))}),()=>{n=!0}},[o]),i?(0,Q.jsx)(`p`,{className:`text-sm text-destructive`,children:i}):n?(0,Q.jsxs)(`div`,{className:`space-y-6`,children:[[{title:`Context tree`,type:`context`},{title:`Directory tree`,type:`directory`}].map(({title:e,type:t})=>{let r=n.filter(e=>e.type===t),i=r.flatMap(e=>e.paths.map(t=>({tree:e.tree,path:t})));return(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`h3`,{className:`mb-3 font-semibold`,children:e}),i.length===0?(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`No placements.`}):(0,Q.jsx)(`div`,{className:`space-y-1`,children:i.map(({tree:e,path:t},n)=>(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 text-sm`,children:[(0,Q.jsx)(`span`,{className:`break-all font-mono text-xs`,children:t}),r.length>1&&(0,Q.jsxs)(`span`,{className:`shrink-0 text-xs text-muted-foreground`,children:[`(`,e,`)`]})]},`${e}:${t}:${n}`))})]},t)}),(0,Q.jsx)(er,{document:e,workspaceId:t})]}):(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Loading memberships...`})}function dr(e){return e===`stored`?k:e===`workspace-file`?s:e===`imap`?A:e===`readonly`?S:I}function fr(e){let t=e.match(/^([a-z][a-z0-9+.-]*):\/\/([^/]*)\/?(.*)$/i);return t?{backend:`${t[1]}://${t[2]}`,key:t[3]}:{backend:e,key:``}}function pr({document:e,workspaceId:t,onChanged:n}){let{showSuccessToast:r,showErrorToast:i}=X(),[a,o]=(0,Z.useState)(null),[s,c]=(0,Z.useState)(null),[l,u]=(0,Z.useState)(null),[d,f]=(0,Z.useState)(null),[p,m]=(0,Z.useState)(null),[h,g]=(0,Z.useState)(!1),_=`${t}:${e.id}`,[v,y]=(0,Z.useState)(_);_!==v&&(y(_),o(null),c(null),f(null));let b=()=>{je(t,e.id).then(o).catch(e=>c(e instanceof Error?e.message:String(e)))};(0,Z.useEffect)(()=>{let n=!1;return je(t,e.id).then(e=>{n||o(e)}).catch(e=>{n||c(e instanceof Error?e.message:String(e))}),()=>{n=!0}},[_]);let S=async(a,o)=>{u(a),f(null);try{let i=await me(t,[e.id],{urls:[a],...o===void 0?{}:{keepDocument:o}}),s=i.successful[0];if(!s)throw Error(i.failed[0]?.reason||`Destroy failed`);s.docDeleted?r(`Removed from backend; document removed from index`):s.deleted.includes(a)?r(`Removed from backend`):r(`Reference dropped (backend is read-only)`),window.dispatchEvent(new CustomEvent(`workspace:documents:refresh`)),n?.(),b()}catch(e){i(e instanceof Error?e.message:String(e))}finally{u(null)}},C=async(a,o,s)=>{g(!0);try{let i=await Ae(t,[e.id],{to:a,mode:o,keepDocument:s.keepDocument,folder:s.folder,filename:s.filename,onConflict:s.onConflict}),c=i.successful[0];if(!c)throw Error(jn(i.failed,new Map([[e.id,Y(e)||`Document ${e.id}`]]))||`Transfer failed`);let l=c.transfers?.flatMap(e=>e.state===`unchanged`?[]:[e.backend])??[],u=a.join(`, `);o===`delete`?r(`Deleted from ${u}`):l.length===0?r(`Nothing to do — already on ${u}`):r(`${o===`move`?`Moved to`:`Copied to`} ${l.join(`, `)}${c.transfers?.some(e=>e.state===`pending`)?` (pending sync)`:``}`),window.dispatchEvent(new CustomEvent(`workspace:documents:refresh`)),m(null),n?.(),b()}catch(e){i(e instanceof Error?e.message:String(e))}finally{g(!1)}},T=e=>{if((a?.length??0)<=1){f(e.url);return}window.confirm(`Remove this copy from the backend?\n\n${e.url}`)&&S(e.url)};if(s)return(0,Q.jsx)(`p`,{className:`text-sm text-destructive`,children:s});if(!a)return(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Loading locations...`});let E=a.length===0,D=Y(e);return(0,Q.jsxs)(`div`,{className:`space-y-3`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between gap-2 rounded border px-3 py-2 text-sm`,children:[(0,Q.jsxs)(`span`,{className:`inline-flex min-w-0 items-center gap-2`,children:[(0,Q.jsx)(k,{className:`h-4 w-4 shrink-0 text-muted-foreground`}),(0,Q.jsx)(`span`,{className:`font-mono text-xs`,children:`workspace:db`}),(0,Q.jsxs)(`span`,{className:`truncate text-xs text-muted-foreground`,children:[`index entry (id `,e.id,`)`]})]}),(0,Q.jsx)(`span`,{className:`shrink-0 rounded bg-muted px-1.5 py-0.5 text-[10px] uppercase text-muted-foreground`,children:`json`})]}),E?(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`No byte locations; this object lives only in the workspace database, so there is no file data to copy or move.`}):(0,Q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,Q.jsxs)(K,{variant:`outline`,size:`sm`,onClick:()=>m(`copy`),title:`Copy the file data to another storage backend (keeps the existing copies)`,children:[(0,Q.jsx)(x,{className:`mr-1 h-3.5 w-3.5`}),` Copy to…`]}),(0,Q.jsxs)(K,{variant:`outline`,size:`sm`,onClick:()=>m(`move`),title:`Move the file data to another storage backend (source released once the copy is durable)`,children:[(0,Q.jsx)(M,{className:`mr-1 h-3.5 w-3.5`}),` Move to…`]})]}),a.map(n=>{let r=dr(n.kind),{backend:a,key:o}=fr(n.url),s=l===n.url;return(0,Q.jsxs)(`div`,{className:`space-y-2 rounded border px-3 py-2 text-sm`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,Q.jsxs)(`span`,{className:`inline-flex min-w-0 items-center gap-2`,children:[(0,Q.jsx)(r,{className:`h-4 w-4 shrink-0 text-muted-foreground`}),(0,Q.jsx)(`span`,{className:`shrink-0 font-mono text-xs`,children:n.backend||a}),(0,Q.jsx)(`span`,{className:`truncate font-mono text-xs text-muted-foreground`,title:n.url,children:o||n.url})]}),(0,Q.jsxs)(`span`,{className:`flex shrink-0 items-center gap-2`,children:[(0,Q.jsx)(`span`,{className:`rounded px-1.5 py-0.5 text-[10px] uppercase ${n.deletable?`bg-muted text-muted-foreground`:`bg-warning/15 text-warning`}`,children:n.deletable?n.kind:`read-only`}),(0,Q.jsx)(`button`,{onClick:()=>ve(t,e.id,D||`document-${e.id}`,{url:n.url}).catch(e=>i(e instanceof Error?e.message:String(e))),className:`text-muted-foreground hover:text-foreground`,title:`Download this copy`,children:(0,Q.jsx)(U,{className:`h-3.5 w-3.5`})}),(0,Q.jsx)(`button`,{onClick:()=>T(n),disabled:s,className:`text-muted-foreground hover:text-destructive disabled:opacity-50`,title:n.deletable?`Remove from backend`:`Drop reference (bytes stay; backend is read-only)`,children:(0,Q.jsx)(w,{className:`h-3.5 w-3.5`})})]})]}),d===n.url&&(0,Q.jsxs)(`div`,{className:`space-y-2 rounded border border-destructive/40 bg-destructive/5 p-2`,children:[(0,Q.jsxs)(`p`,{className:`text-xs`,children:[`This is the object's `,(0,Q.jsx)(`strong`,{children:`last`}),` location. Remove the bytes from the backend and…`]}),(0,Q.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,Q.jsx)(K,{variant:`destructive`,size:`sm`,disabled:s,onClick:()=>void S(n.url,!1),children:`Also remove index entry`}),(0,Q.jsx)(K,{variant:`outline`,size:`sm`,disabled:s,onClick:()=>void S(n.url,!0),children:`Keep index entry (no bytes)`}),(0,Q.jsx)(K,{variant:`ghost`,size:`sm`,onClick:()=>f(null),children:`Cancel`})]})]})]},n.url)}),p&&(0,Mn.createPortal)((0,Q.jsx)(`div`,{className:`fixed inset-0 z-picker flex items-center justify-center bg-scrim p-4 max-md:p-2`,children:(0,Q.jsx)(Ln,{workspaceId:t,documentCount:1,initialMode:p,defaultFilename:D,saving:h,onConfirm:C,onClose:()=>{h||m(null)}})}),window.document.body)]})}var mr=(0,Z.lazy)(()=>a(()=>import(`./LocationTab-DAtqAQ3l.js`),__vite__mapDeps([25,3,4,26,27]))),hr=[{id:`view`,label:`View`,icon:P},{id:`location`,label:`Location`,icon:ae},{id:`metadata`,label:`Metadata`,icon:ee},{id:`json`,label:`JSON`,icon:o},{id:`synapses`,label:`Synapses`,icon:te},{id:`backends`,label:`Backends`,icon:k}];function gr({document:e,workspaceId:t,initialTab:n=`view`,initialEdit:r=!1,onChanged:i,className:a=``,compact:o=!1,navigation:s,tabActions:c,onTabChange:l}){let u=Je()!=null,d=Tt(e),f=hr.filter(e=>(e.id!==`location`||d!==null)&&(!u||![`synapses`,`backends`].includes(e.id))),[p,m]=(0,Z.useState)(n),h=`${e.id}:${n}`,[g,_]=(0,Z.useState)(h);h!==g&&(_(h),m(n));let v=f.some(e=>e.id===p)?p:`view`,y=e=>{m(e),l?.(e)},b=o&&!!c&&!s,x=(0,Q.jsx)(`div`,{className:G(b&&`document-detail-header shrink-0 border-b-[3px] bg-muted`),children:(0,Q.jsxs)(`div`,{className:G(`flex min-w-0 items-center`,b&&`mx-auto h-[calc(3rem-4px)] w-full max-w-[var(--document-reading-width,100%)] gap-1 pl-2 pr-2 sm:pl-4`),children:[(0,Q.jsx)(_t,{tabs:f,active:v,onChange:y,className:G(`min-w-0 flex-1 px-1`,b&&`h-full border-b-0 px-0 max-sm:gap-0 max-sm:[&>button]:px-2.5`),iconOnly:o}),c]})});return(0,Q.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col ${a}`,children:[s?(0,Q.jsx)(On,{...s,tabs:x,section:v,onDocument:()=>y(`view`),onSection:()=>y(`view`),onBack:v===`view`?s.onBack:()=>y(`view`)}):x,(0,Q.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:(0,Q.jsxs)(`div`,{className:`mx-auto h-full w-full max-w-[var(--document-reading-width,100%)] p-4`,children:[v===`view`&&(0,Q.jsx)(ir,{document:e,workspaceId:t,initialEdit:r&&!u,onChanged:i}),v===`location`&&d&&(0,Q.jsx)(Z.Suspense,{fallback:(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Loading map…`}),children:(0,Q.jsx)(mr,{lat:d.lat,lon:d.lon})}),v===`metadata`&&(0,Q.jsx)(cr,{document:e,workspaceId:t}),v===`json`&&(0,Q.jsx)(lr,{document:e,workspaceId:t}),v===`synapses`&&!u&&(0,Q.jsx)(ur,{document:e,workspaceId:t}),v===`backends`&&!u&&(0,Q.jsx)(pr,{document:e,workspaceId:t,onChanged:i})]})})]})}export{en as _,Kn as a,Dt as b,Ln as c,Dn as d,wn as f,an as g,nn as h,Zn as i,jn as l,rn as m,Xn as n,Jn as o,tn as p,Yn as r,Bn as s,gr as t,On as u,Ut as v,Pt as y};
@@ -1 +0,0 @@
1
- import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{l as t,u as n}from"./code-editor-BOIngd5F.js";import{_ as r,g as i,h as a}from"./chunk-62JRHF6Z-vspAGgtK.js";import{t as o}from"./socket-CtH3EU9m.js";import{n as s}from"./use-toast-BlLDqSUO.js";import{o as c,s as l}from"./LinkToCard-BQ1yoFDr.js";import{G as u,Sn as d,V as ee,bn as te,zt as ne}from"./workspace-BJELPCNs.js";import{r as re}from"./document-list-CQ1_7Sja.js";import{n as ie}from"./use-toolbox-Ck_cLGgf.js";import{E as ae,_ as oe,a as se,b as ce,i as le,l as ue,o as de}from"./context-DZ1Hn7tt.js";import{i as fe}from"./color-DFEH4BfK.js";import{t as pe}from"./geo-CZfs0E-x.js";import{a as me,i as he,o as ge}from"./workspace-BydSRtST.js";import{i as _e}from"./use-menu-DIP1zh7I.js";import{a as ve,c as ye,i as be,l as xe,n as Se,o as Ce,r as we,s as Te,t as Ee}from"./content-app-view-AUB8kjjJ.js";import{t as De}from"./use-workspace-identity-B8gOMGj4.js";var f=e(n(),1),p=t();function Oe(e,t){if(!e||!t)return`/`;let n=`${t}://`;if(!e.startsWith(n))return`/`;let r=e.slice(n.length).replace(/^\/+/,``).replace(/\/+$/,``);return r?`/${r}`:`/`}function m(){let{contextId:e}=r(),t=a(),n=i(),m=new URLSearchParams(t.search).get(`ownerId`)||void 0,h=(0,f.useMemo)(()=>{let e=new URLSearchParams(t.search),n=e.getAll(`q`).map(e=>e.trim()).filter(Boolean),r=(e.get(`search`)||``).trim();return n.length?n:r?[r]:[]},[t.search]),{showToast:g,showProgress:ke}=s(),{state:_,saveFilters:Ae,setSort:je,setAccentColor:v,setMapDocuments:y}=ie(),{openM1Drawer:Me,openM2Drawer:Ne,goBack:Pe}=_e(),b=_.filters.features.allOf,Fe=_.filters.features.anyOf,Ie=_.filters.features.noneOf,Le=[...he(_.filters.timeline),...me(_.filters.geo),...ge(_.filters.lens,_.filters.geo.includeUnlocated)],x=JSON.stringify({a:b,b:Fe,c:Ie,d:Le,ids:_.filters.lens.ids,sort:_.filters.sort,geoSelection:_.geoSelection,includeUnlocated:_.filters.geo.includeUnlocated}),S=(0,f.useMemo)(()=>JSON.parse(x),[x]),[C,w]=(0,f.useState)(null),[Re,ze]=(0,f.useState)(!0),[Be,Ve]=(0,f.useState)(null),[T,E]=(0,f.useState)([]),[He,Ue]=(0,f.useState)(!1),[We,D]=(0,f.useState)(0),[Ge,Ke]=(0,f.useState)([]),[O,k]=(0,f.useState)(1),[A,qe]=(0,f.useState)(50),[j,M]=(0,f.useState)(h),[N,P]=(0,f.useState)(!1),[F,Je]=(0,f.useState)(null),[I,Ye]=(0,f.useState)(!1),L=(0,f.useRef)(!1),R=F?.id===C?.id&&F?.url===C?.url?F?.path:null,Xe=new URLSearchParams(t.search).get(`layer`),z=!!m,Ze=De(z?void 0:C?.workspaceName||C?.workspaceId),B=C?Oe(C.url,C.workspaceName):`/`,Qe=Xe?`context-layer`:`context`,V=!_.liveEnabled&&typeof C?.metadata?.toolboxSearchQuery==`string`?C.metadata.toolboxSearchQuery:``,H=z?null:C?.workspaceName??null,[$e,et]=(0,f.useState)(null);(0,f.useEffect)(()=>{if(!H)return;let e=!1;return u(H,d).then(t=>{e||et({key:H,tree:t})}).catch(()=>{e||et({key:H,tree:null})}),()=>{e=!0}},[H]);let U=H&&$e?.key===H?$e.tree:null,W=!Xe&&!z&&U?B===`/`?U:ee(U,B):null,G=`${C?.workspaceName??``}\0${B}`,[K,tt]=(0,f.useState)(null),q=K?.key===G?K.views:Ce(W?.metadata),J=K?.key===G?K.activeId:q[0]?.id??be.id,Y=q.find(e=>e.id===J)??q[0]??be,X=ve(Y);xe(ye({workspace:C?.workspaceName||C?.workspaceId||null,treeNameOrId:_.activeTreeName,path:B,contextId:e??null,scope:`context`},{..._.filters,features:{..._.filters.features,allOf:X?[...b,X]:b}},_.geoSelection,j));let nt=e=>{k(1),tt({key:G,views:q,activeId:e})},rt=(e,t)=>{t&&t!==J&&k(1),tt({key:G,views:e,activeId:t??J}),C?.workspaceName&&te(C.workspaceName,B,{metadata:{...W?.metadata??{},views:e}},d).catch(()=>{g({title:`View not saved`,description:`Could not persist views to the layer`,variant:`destructive`})})},Z=(0,f.useRef)(null);(0,f.useEffect)(()=>()=>Z.current?.abort(),[]);let Q=(0,f.useCallback)(async()=>{if(!e)return;Z.current?.abort();let t=new AbortController;Z.current=t,Ue(!0);try{let n=await de(e,X?[...S.a,X]:S.a,S.d,{...S.sort,geoSelection:S.geoSelection,includeUnlocated:S.includeUnlocated,ids:S.ids,signal:t.signal,limit:A,page:O,queries:j.length?j:void 0,anyOf:S.b,noneOf:S.c,applyContextSpec:!1},m);if(t.signal.aborted)return;E(n),D(n.totalCount||n.count||n.length)}catch(e){if(t.signal.aborted)return;g({title:`Error`,description:e instanceof Error?e.message:`Failed to fetch documents`,variant:`destructive`}),E([]),D(0)}finally{t.signal.aborted||Ue(!1)}},[e,O,A,m,j,S,g,X]),it=(0,f.useCallback)(async()=>{if(e){ze(!0);try{let t=z?await se(e,m):await se(e);if(!t)throw Error(`No context data received.`);let n=t.workspace,r=t.workspaceId||(typeof n==`string`?n:n?.id)||``,i=t.workspaceName||(typeof n==`string`?n:n?.name)||``;w({id:t.id,userId:t.userId,url:t.url,baseUrl:t.baseUrl||null,path:t.path||null,pathArray:t.pathArray||[],workspaceId:r,workspaceName:i,acl:t.acl||{},createdAt:t.createdAt,updatedAt:t.updatedAt,locked:t.locked||!1,serverContextArray:t.serverContextArray||[],clientContextArray:t.clientContextArray||[],contextBitmapArray:t.contextBitmapArray||[],featureBitmapArray:t.featureBitmapArray||[],filterArray:t.filterArray||[],pendingUrl:t.pendingUrl||null,description:t.description||null,metadata:t.metadata||{},name:t.name??null,color:t.color??null,icon:t.icon??null}),Ve(null)}catch(t){let n=t instanceof Error?t.message:`Failed to fetch context ${e}`;Ve(n),w(null),g({title:`Error`,description:n,variant:`destructive`})}ze(!1)}},[e,m,z,g]);(0,f.useEffect)(()=>{it()},[it]);let at=fe(C?.color)||null;(0,f.useEffect)(()=>(v(at),()=>v(null)),[at,v]);let ot=_.geoSelection,st=C?.workspaceName||C?.workspaceId||null;(0,f.useEffect)(()=>{y(T,st)},[T,st,y]),(0,f.useEffect)(()=>()=>y([]),[y]);let ct=(0,f.useMemo)(()=>ot?T.filter(e=>pe(e,ot,_.filters.geo.includeUnlocated)):T,[T,ot,_.filters.geo.includeUnlocated]),lt=C?.id,ut=C?.url;(0,f.useEffect)(()=>{lt&&Q()},[lt,ut,Q]),(0,f.useEffect)(()=>{let e=()=>Q();return window.addEventListener(`workspace:documents:refresh`,e),()=>window.removeEventListener(`workspace:documents:refresh`,e)},[Q]);let[dt,ft]=(0,f.useState)(x);dt!==x&&(ft(x),k(1));let[pt,mt]=(0,f.useState)(e);pt!==e&&(mt(e),k(1),P(!1));let[ht,gt]=(0,f.useState)(h);ht!==h&&(gt(h),M(h),k(1));let[_t,vt]=(0,f.useState)({urlSearchQueries:h,ignoreSavedSearch:N,savedContextSearchQuery:V});(_t.urlSearchQueries!==h||_t.ignoreSavedSearch!==N||_t.savedContextSearchQuery!==V)&&(vt({urlSearchQueries:h,ignoreSavedSearch:N,savedContextSearchQuery:V}),!new URLSearchParams(t.search).has(`q`)&&!h.length&&!N&&(M(V?[V]:[]),k(1)));let $=(0,f.useCallback)(e=>{let r=new URLSearchParams(t.search);r.delete(`q`),r.delete(`search`);for(let t of e)r.append(`q`,t);let i=r.toString();n(`${t.pathname}${i?`?${i}`:``}${t.hash}`)},[t.pathname,t.search,t.hash,n]),yt=(0,f.useCallback)(e=>{let t=e.trim();if(!t)return;P(!1);let n=j.includes(t)?j:[...j,t];M(n),$(n)},[j,$]),bt=(0,f.useCallback)(e=>{let t=e<0?[]:j.filter((t,n)=>n!==e);t.length===0&&P(!0),M(t),$(t)},[j,$]),xt=(j[0]||``).trim(),St=!!_.activeContextType&&(_.isDirty||xt!==(_.savedSearchQuery||V||``));(0,f.useEffect)(()=>{if(!e)return;let t=`context:${m?`${m}/`:``}${e}`,n=()=>o.emit(`subscribe`,{channel:t}),r=()=>o.emit(`unsubscribe`,{channel:t}),i=o.on(`connect`,n);n();let a=new Map,s=(t,n)=>{let r=Date.now(),i=`${t}:${n?.id||n?.contextId||e}`;return(a.get(i)||0)+1e3>r?!1:(a.set(i,r),!0)},c=t=>{let n=t,r=n?.context||n;(r?.id===e||r?.contextId===e)&&s(`ctx:updated`,r)&&(w(e=>e?{...e,...r}:null),r.url&&Q())},l=t=>{let n=t,r=n?.id||n?.contextId||n?.context?.id,i=n?.url||n?.context?.url;r===e&&typeof i==`string`&&s(`ctx:url`,n)&&(w(e=>e?{...e,url:i}:null),Q())},u=t=>{let n=t;(n?.contextId||n?.id||n?.context?.id)===e&&s(`doc:changed`,n)&&Q()},d=[[`context.updated`,c],[`context:updated`,c],[`context.url.set`,l],[`context:url:set`,l],[`document.inserted`,u],[`document.updated`,u],[`document.removed`,u],[`document.removed.batch`,u],[`document.linked`,u],[`document.unlinked`,u],[`document.linked.batch`,u],[`document.unlinked.batch`,u],[`document.deleted`,u],[`document.deleted.batch`,u]];return d.forEach(([e,t])=>o.on(e,t)),()=>{i(),r(),d.forEach(([e,t])=>o.off(e,t))}},[e,m,Q]);let Ct=async e=>{if(C)try{await ce(C.id,[e],m,B),E(t=>t.filter(t=>t.id!==e)),D(e=>Math.max(0,e-1)),g({title:`Success`,description:`Document removed from context.`})}catch(e){g({title:`Error`,description:e instanceof Error?e.message:`Failed to remove document`,variant:`destructive`})}},wt=async e=>{if(C)try{await le(C.id,[e],m,B),E(t=>t.filter(t=>t.id!==e)),D(e=>Math.max(0,e-1)),g({title:`Success`,description:`Document deleted.`})}catch(e){g({title:`Error`,description:e instanceof Error?e.message:`Failed to delete document`,variant:`destructive`})}},Tt=async e=>{if(C)try{await ce(C.id,e,m,B),E(t=>t.filter(t=>!e.includes(t.id))),D(t=>Math.max(0,t-e.length)),g({title:`Success`,description:`${e.length} document(s) removed.`})}catch(e){g({title:`Error`,description:e instanceof Error?e.message:`Failed to remove documents`,variant:`destructive`})}},Et=async e=>{if(C)try{await le(C.id,e,m,B),E(t=>t.filter(t=>!e.includes(t.id))),D(t=>Math.max(0,t-e.length)),g({title:`Success`,description:`${e.length} document(s) deleted.`})}catch(e){g({title:`Error`,description:e instanceof Error?e.message:`Failed to delete documents`,variant:`destructive`})}},Dt=e=>{Ke(e),g({title:`Copied`,description:`${e.length} document(s) copied to clipboard`})},Ot=async(e,t,n={})=>{if(!C)return!1;let r=ke({title:`Pasting…`,description:`${t.length} document(s) → "${e}"`});try{let i=n.targetTreeName&&!z?await ne(C.workspaceName||C.workspaceId,e,t,n.targetTreeName,n.targetTreeType):await oe(C.id,e,t,m);return r.done(i?{title:`Success`,description:`${t.length} document(s) pasted to "${e}"`}:void 0),i&&(Ke([]),await Q()),i}catch(e){return r.fail({title:`Error`,description:e instanceof Error?e.message:`Failed to paste documents`,variant:`destructive`}),!1}},kt=async(e,t)=>{if(!C)return!1;try{let n=await ue(C.workspaceId,t,e);return n&&(re(C.workspaceName||C.workspaceId,`context`,t),g({title:`Success`,description:`Imported ${e.length} document(s) to "${t}"`})),n}catch(e){return g({title:`Error`,description:e instanceof Error?e.message:`Failed to import documents`,variant:`destructive`}),!1}},At=async()=>{if(!C||!R||z||L.current)return;let e={id:C.id,url:C.url,path:R};L.current=!0,Ye(!0);try{let t=await ae(e.id,`${C.workspaceName}://${e.path.replace(/^\/+/,``)}`);w(n=>n?.id===e.id&&n.url===e.url?{...n,url:t.url,path:e.path}:n),Je(null),k(1),window.dispatchEvent(new CustomEvent(`contexts:refresh`,{detail:{contextId:e.id}})),g({title:`Saved`,description:`Context path updated`})}catch(e){g({title:`Error`,description:e instanceof Error?e.message:`Could not update context path`,variant:`destructive`})}finally{L.current=!1,Ye(!1)}};if(Re)return(0,p.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,p.jsxs)(`div`,{className:`text-center space-y-2`,children:[(0,p.jsx)(`div`,{className:`animate-spin rounded-full h-8 w-8 border-b-2 border-primary mx-auto`}),(0,p.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Loading context...`})]})});if(Be&&!C)return(0,p.jsxs)(`div`,{className:`flex items-center justify-center h-full text-destructive`,children:[`Error: `,Be]});if(!C)return(0,p.jsx)(`div`,{className:`flex items-center justify-center h-full text-muted-foreground`,children:`Context not found.`});let jt=fe(C.color);return(0,p.jsx)(`div`,{className:`flex flex-col h-full min-h-0`,children:(0,p.jsx)(Te,{onBack:Pe,accentColor:jt,navigationTabs:W?(0,p.jsx)(we,{views:q,activeId:J,onSelect:nt,onSave:rt,accentColor:jt}):void 0,workspaceLabel:Ze?.label||C.workspaceName||C.workspaceId,workspaceIcon:Ze?.icon,treeName:d,urlType:Qe,urlDisplay:C.url,contextPath:B,workspaceId:C.workspaceName||C.workspaceId,documentSchema:X,linkTree:U,documents:ct,isLoading:He,totalCount:We,currentPage:O,pageSize:A,onPageChange:k,onPageSizeChange:e=>{qe(e),k(1)},onRemoveDocument:B===`/`?void 0:Ct,onDeleteDocument:wt,onRemoveDocuments:B===`/`?void 0:Tt,onDeleteDocuments:Et,onCopyDocuments:Dt,onPasteDocuments:Ot,onImportDocuments:z?void 0:kt,pastedDocumentIds:Ge,backendSearchQueries:j,onBackendSearch:yt,serverSort:_.filters.sort,onServerSortChange:je,onRemoveBackendQuery:bt,canSaveChanges:St,isSavingChanges:_.isSaving,onSaveChanges:Ae,onBrowseTree:!z&&e?()=>Ne(`contexts`,`detail`,e):void 0,onBrowseWorkspaces:()=>Me(`workspaces`),onNavigatePath:z?void 0:e=>{L.current||Je({id:C.id,url:C.url,path:e})},contentBanner:R?(0,p.jsxs)(`div`,{className:`border-b bg-warning/10 px-4 py-2`,role:`status`,children:[(0,p.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Set this context to the selected path? Contents stay at the current path until you apply it.`}),(0,p.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,p.jsx)(l,{items:c(R,C.workspaceName),label:`Selected context path`}),(0,p.jsx)(`button`,{type:`button`,disabled:I,onClick:()=>void At(),className:`shrink-0 rounded border px-3 py-1 text-sm hover:bg-accent disabled:opacity-50`,children:I?`Setting…`:`Set`}),(0,p.jsx)(`button`,{type:`button`,disabled:I,onClick:()=>Je(null),className:`shrink-0 rounded px-2 py-1 text-sm hover:bg-accent disabled:opacity-50`,children:`Cancel`})]})]}):void 0,children:Y.kind===`columns`?(0,p.jsx)(Se,{documents:ct,workspaceId:C.workspaceName||C.workspaceId,columns:Y.columns??[],onColumnsChange:e=>rt(q.map(t=>t.id===Y.id?{...t,columns:e}:t))}):Y.kind===`app`&&Y.app&&Y.app!==`notes`?(0,p.jsx)(Ee,{app:Y.app,contextId:e,workspaceId:C.workspaceName||C.workspaceId,treeName:d,path:B}):null})})}export{m as default};