@inkandswitch/patchwork-pkg-base 0.0.73 → 0.0.74

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 (31) hide show
  1. package/module-settings-url +1 -1
  2. package/package.json +1 -1
  3. package/packages/chat/dist/{ChatRoot-BRiX2ym6.js → ChatRoot-BYmq4SXi.js} +3541 -6287
  4. package/packages/chat/dist/{context-tool-CAHkp64h.js → context-tool-Bob-FZ_T.js} +2 -2
  5. package/packages/chat/dist/{index-Bt9HfG9I.js → index-wkaHcVCz.js} +3 -3
  6. package/packages/chat/dist/index.js +1 -1
  7. package/packages/chat/dist/{tool-DoxHbcfW.js → tool-DCOdh_fx.js} +1 -1
  8. package/packages/chat/package.json +3 -3
  9. package/packages/isolation/dist/assets/{component-DA0d3480.js → component-Daum8ibW.js} +118 -240
  10. package/packages/isolation/dist/assets/component-Daum8ibW.js.map +1 -0
  11. package/packages/isolation/dist/index.js +1 -1
  12. package/packages/threepane/dist/IsolatedDocumentArea-54ZI7TNY.js +2 -0
  13. package/packages/threepane/dist/PatchworkFrame-REYVVXOP.js +2 -0
  14. package/packages/threepane/dist/PatchworkFrame-REYVVXOP.js.map +7 -0
  15. package/packages/threepane/dist/{chunk-FX3MJIE5.js → chunk-DV7PRUYR.js} +3 -3
  16. package/packages/threepane/dist/chunk-DV7PRUYR.js.map +7 -0
  17. package/packages/threepane/dist/chunk-ESMUVHPH.js +2 -0
  18. package/packages/threepane/dist/chunk-ESMUVHPH.js.map +7 -0
  19. package/packages/threepane/dist/{datatypes-WPL4KARJ.js → datatypes-5DFL6VIN.js} +2 -2
  20. package/packages/threepane/dist/index.js +1 -1
  21. package/plugin-registry-url +1 -1
  22. package/packages/chat/dist/assets/worker-CFUOJ0Hd.js +0 -9
  23. package/packages/isolation/dist/assets/component-DA0d3480.js.map +0 -1
  24. package/packages/threepane/dist/IsolatedDocumentArea-MSJE4GCW.js +0 -2
  25. package/packages/threepane/dist/PatchworkFrame-3XYJCU3F.js +0 -2
  26. package/packages/threepane/dist/PatchworkFrame-3XYJCU3F.js.map +0 -7
  27. package/packages/threepane/dist/chunk-2NJMYYSD.js +0 -2
  28. package/packages/threepane/dist/chunk-2NJMYYSD.js.map +0 -7
  29. package/packages/threepane/dist/chunk-FX3MJIE5.js.map +0 -7
  30. /package/packages/threepane/dist/{IsolatedDocumentArea-MSJE4GCW.js.map → IsolatedDocumentArea-54ZI7TNY.js.map} +0 -0
  31. /package/packages/threepane/dist/{datatypes-WPL4KARJ.js.map → datatypes-5DFL6VIN.js.map} +0 -0
@@ -65,7 +65,7 @@ const plugins = [
65
65
  // with "Failed to resolve module specifier @automerge/automerge-repo/slim".
66
66
  // Deferring it keeps discovery to metadata only — the runtime imports
67
67
  // happen later, when load() runs in a context that has the import map.
68
- load: async () => (await __vitePreload(async () => { const {mountIsolation} = await import('./assets/component-DA0d3480.js');return { mountIsolation }},true ?[]:void 0,import.meta.url)).mountIsolation
68
+ load: async () => (await __vitePreload(async () => { const {mountIsolation} = await import('./assets/component-Daum8ibW.js');return { mountIsolation }},true ?[]:void 0,import.meta.url)).mountIsolation
69
69
  }
70
70
  ];
71
71
 
@@ -0,0 +1,2 @@
1
+ import{s as a,t as b}from"./chunk-DV7PRUYR.js";import"./chunk-FW4363Y4.js";export{a as IsolatedDocumentArea,b as mountIsolationRoot};
2
+ //# sourceMappingURL=IsolatedDocumentArea-54ZI7TNY.js.map
@@ -0,0 +1,2 @@
1
+ import{a as xe,b as N,c as B,d as ne,e as ie,f as ae,g as le,h as se,i as de,j as ce,k as ue,l as me,m as fe,n as x,o as F,p as he,q as pe,r as ge,s as we}from"./chunk-DV7PRUYR.js";import{a as P,b as ve}from"./chunk-ESMUVHPH.js";import{b as We}from"./chunk-FW4363Y4.js";import{template as y}from"solid-js/web";import{delegateEvents as ot}from"solid-js/web";import{memo as rt}from"solid-js/web";import{setStyleProperty as nt}from"solid-js/web";import{setAttribute as G}from"solid-js/web";import{effect as W}from"solid-js/web";import{getOwner as T}from"solid-js/web";import{use as R}from"solid-js/web";import{insert as _}from"solid-js/web";import{createComponent as m}from"solid-js/web";import"@inkandswitch/patchwork-elements";import{subscribe as pt}from"@inkandswitch/patchwork-providers";import{template as z}from"solid-js/web";import{delegateEvents as Fe}from"solid-js/web";import{memo as Pe}from"solid-js/web";import{insert as _e}from"solid-js/web";import{createComponent as O}from"solid-js/web";import{For as Ne,Show as j}from"solid-js";var Me=z("<div class=threepane-widgets>"),He=z("<div class=threepane-widgets__empty><button type=button class=threepane-widgets__add>\uFF0B Add document list"),Ve=z("<div class=threepane-widget>"),Be="chee/document-list";function be(e){let a=()=>{let l=e.rootFolderUrl(),r=e.configHandle();!l||!r||r.change(i=>{i.sidebar.widgets.push([Be,l])})};return(()=>{var l=Me();return _e(l,O(j,{get when(){return e.ready()},get children(){return O(j,{get when(){return e.widgets().length},get fallback(){return O(j,{get when(){return Pe(()=>!!e.rootFolderUrl())()&&e.configHandle()},get children(){var r=He(),i=r.firstChild;return i.$$click=a,r}})},get children(){return O(Ne,{get each(){return e.widgets()},children:r=>(()=>{var i=Ve();return _e(i,O(F,{slot:r})),i})()})}})}})),l})()}Fe(["click"]);import{template as Se}from"solid-js/web";import{setAttribute as je}from"solid-js/web";import{effect as ze}from"solid-js/web";import{insert as ye}from"solid-js/web";import{createComponent as K}from"solid-js/web";import{For as Xe,Show as Ye}from"solid-js";var Ke=Se("<div class=frame-tray>"),Ge=Se("<div class=frame-tray__item>");function De(e){return K(Ye,{get when(){return e.slots().length},get children(){var a=Ke();return ye(a,K(Xe,{get each(){return e.slots()},children:l=>(()=>{var r=Ge();return ye(r,K(F,{slot:l})),ze(()=>je(r,"data-tray-id",x(l))),r})()})),a}})}import{createEffect as U,createMemo as q,createSignal as v,onCleanup as k,onMount as J,Show as C}from"solid-js";import{render as gt}from"solid-js/web";import{createDocOfDatatype2 as Je}from"@inkandswitch/patchwork-plugins";import{getRegistry as qe}from"@inkandswitch/patchwork-plugins";function M(e){return qe("patchwork:datatype").loadWhenReady(e)}var Qe=new Set(["document-title","spacer"]),Ze="chee/document-list";function $e(e){return e?[[Ze,e]]:[]}async function ke(e,a){let l=e.doc()?.rootFolderUrl,r=e.doc()?.tools?.threepane;if(r){(await a.find(r)).change(d=>{if(l&&!d.sidebar?.widgets?.length&&(d.sidebar.widgets=$e(l)),!d.tray)d.tray=P.slice();else{let u=new Set(d.tray.map(c=>x(c)));for(let c of P)u.has(c)||d.tray.push(c)}d.doctitle?.tools?.length||(d.doctitle={...d.doctitle,tools:ve.slice()})});return}let i=await M("threepane:config");if(!i){console.warn("frame: threepane:config datatype never registered");return}if(e.doc()?.tools?.threepane)return;let t=e.doc(),o=(t?.documentToolbarToolIds??[]).filter(n=>!Qe.has(n)),s=await Je(i,a);s.change(n=>{o.length&&(n.doctitle.tools=o),n.sidebar.widgets=$e(t?.rootFolderUrl),n.tray||(n.tray=P.slice())}),e.change(n=>{n.tools||(n.tools={}),n.tools.threepane||(n.tools.threepane=s.url)})}var Te=We(xe(),1);import{createDocOfDatatype2 as et}from"@inkandswitch/patchwork-plugins";var w=(0,Te.default)("patchwork:threepane:examples");async function Re(e,a){let l=e.doc();if(!l?.rootFolderUrl){w("skipped \u2014 account has no rootFolderUrl");return}if(l.exampleDocsSeededAt){w("skipped \u2014 already ran for this account at",new Date(l.exampleDocsSeededAt).toISOString());return}w("claiming marker on account",e.url),e.change(u=>{u.exampleDocsSeededAt||(u.exampleDocsSeededAt=Date.now())});let r=await a.find(l.rootFolderUrl),i=r.doc()?.docs?.length??0;if(i){w(`skipped \u2014 root folder already has ${i} doc(s); only fresh accounts are seeded`);return}let t=window.location.hostname.includes("gaios"),o=t?[]:await tt();if(w(t?"gaios examples":"bundle init scripts:",o),!t&&!o.length){w("skipped \u2014 no static module bundles to ask");return}let s=await M("folder");if(!s){w("folder datatype never registered; giving up");return}let n=await et(s,a,u=>{u.title="Examples"});if(t){let{seedGaiosExamples:u}=await import("./gaiosExamples-YDNQB35L.js");await u(a,n)}for(let u of o)try{await(await import(u)).default?.(a,n),w("ran init script",u)}catch(c){w("init script unavailable or failed",u,c)}let d=n.doc()?.docs?.length??0;if(!d){w("no bundle contributed any documents");return}r.change(u=>{u.docs.unshift({name:"Examples",type:"folder",url:n.url})}),w(`seeded ${d} document(s) into Examples folder`,n.url)}var Ce="https://patchwork-tools.netlify.app/init.js",Ee="https://patchwork-base.netlify.app/init.js";async function tt(){let e=window.patchwork?.packages;if(!e?.urls)return[Ee,Ce];await e.doneLoading;let a=Object.values(e.urls).filter(r=>typeof r=="string"&&!r.startsWith("automerge:")).map(r=>new URL("init.js",new URL(r,document.baseURI)).href),l=a.length?[]:[Ee];return[...new Set([...a,...l,Ce])]}var it=y("<div class=frame-shell><aside class=frame-warning-banner>research grade software. do not share links. sharing a doc is sharing your account.</aside><div class=frame><patchwork-view component=patchwork-selected-doc-provider><patchwork-view component=patchwork-account-provider><patchwork-view component=patchwork-tool-storage-provider><patchwork-view component=patchwork-worker-provider>",!0,!1,!1),at=y("<div style=display:contents>"),lt=y("<div class=main-area>"),st=y("<div class=frame__popover-backdrop><div class=frame__popover role=dialog aria-modal=true><div class=frame__popover-toolbar><patchwork-view tool-id=doc-openwith></patchwork-view></div><div class=frame__popover-body><patchwork-view>",!0,!1,!1),dt=y('<button type=button class="frame__sidebar-toggle frame__left-toggle">'),ct=y("<div class=threepane-sidebar><div class=threepane-sidebar__footer><footer class=threepane-account-bar><button type=button class=threepane-account-bar__button>Settings"),ut=y("<div class=frame__tray-dock>"),mt=y('<button type=button class="threepane-account-bar__button threepane-account-bar__avatar"title=Account aria-label=Account><patchwork-view tool-id=contact-avatar>',!0,!1,!1),ft=y("<button type=button class=threepane-account-bar__button>Packages"),ht=y('<svg xmlns=http://www.w3.org/2000/svg width=18 height=18 viewBox="0 0 24 24"fill=none stroke=var(--studio-chrome-line) stroke-width=1.75 stroke-linecap=round stroke-linejoin=round><rect width=18 height=18 x=3 y=3 rx=2></rect><path d="M9 3v18">'),wt=180,vt=720,_t=120,bt=3,X=(e,a)=>{let[l,r]=v(!1);return U(()=>{let i=a();if(!i)return;r(!1);let t=o=>{o.detail?.componentId===e&&r(!0)};i.addEventListener("patchwork:mounted",t),k(()=>i.removeEventListener("patchwork:mounted",t))}),l};function Y(e,a){e.dispatchEvent(new CustomEvent("patchwork:open-document",{detail:a,bubbles:!0,composed:!0}))}function yt({handle:e,repo:a,...l}){ge();let r=e.url,[i,t]=v(),o=X("patchwork-account-provider",i),[s,n]=v(),d=X("patchwork-tool-storage-provider",s),[u,c]=v(),h=X("patchwork-selected-doc-provider",u),g=q(()=>h()&&o()&&d());return(()=>{var S=it(),p=S.firstChild,Q=p.firstChild,H=p.nextSibling,L=H.firstChild,I=L.firstChild,D=I.firstChild,A=D.firstChild;return _(p,m(C,{get when(){return l.isolation},get children(){return[" ","isolation is highly experimental. if things are broken, switch back to wild west."]}}),null),R(c,L),L._$owner=T(),R(t,I),I.docUrl=r,I._$owner=T(),R(n,D),D.docUrl=r,D._$owner=T(),A._$owner=T(),_(A,m(C,{get when(){return g()},get children(){return m(St,{handle:e,repo:a,get isolation(){return l.isolation}})}})),S})()}function St(e){let a=N(()=>e.handle.url,{repo:e.repo});(async()=>{await ke(e.handle,e.repo),await Re(e.handle,e.repo)})().catch(f=>{console.error("frame: account bootstrap failed",f)});let[l,r]=v(0);U(()=>{let f=a();if(!f)return;let b=()=>r($=>$+1);f.on("change",b),k(()=>f.off("change",b))});let i=q(()=>(l(),a()?.doc())),t=e.handle.url,o=()=>i()?.tools?.threepane,s=N(()=>o(),{repo:e.repo}),[n,d]=v(0);U(()=>{let f=s();if(!f)return;let b=()=>d($=>$+1);f.on("change",b),k(()=>f.off("change",b))});let u=q(()=>(n(),s()?.doc())),c=()=>u()?.doctitle?.tools,h=()=>u()?.sidebar?.widgets??[],g=()=>u()?.tray??[],S=()=>i()?.rootFolderUrl,p=se(),Q=de({setLeftSidebarWidth:p.setLeftSidebarWidth,setRightSidebarWidth:p.setRightSidebarWidth,setIsSidebarCollapsed:p.setIsSidebarCollapsed,setIsRightSidebarCollapsed:p.setIsRightSidebarCollapsed,isLeftCollapsed:p.isSidebarCollapsed,isRightCollapsed:p.isRightSidebarCollapsed,minWidth:wt,maxWidth:vt,autoCloseWidth:_t,dragThreshold:bt}),{events:H,dismissEvent:L,clearAll:I}=ue(),D,[A,Ie]=v(null),[Ue,Z]=v(null);J(()=>{let f=pt(D,{type:"patchwork:selected-view"},b=>Ie(b));k(f)});let E=()=>A()?.url,V=()=>A()?.toolId??void 0,ee=()=>ae(B.rightWidth,ie),te=()=>le(B.rightCollapsed),[Le,oe]=v(),Ae=ce(Le,E),[re,Oe]=v(!1);return U(()=>{re()||(e.isolation||!E()||Ae())&&Oe(!0)}),(()=>{var f=at(),b=D;return typeof b=="function"?R(b,f):D=f,_(f,m(me,{get events(){return H()},onDismiss:L,onClearAll:I}),null),_(f,m($t,{accountDocUrl:t,sidebarState:p,sidebarResize:Q,sidebarWidgets:h,traySlots:g,configHandle:s,rootFolderUrl:S,widgetsReady:re,contactUrl:()=>i()?.contactUrl,moduleSettingsUrl:()=>i()?.moduleSettingsUrl,get isolation(){return e.isolation},onInterceptOpen:Z,get children(){return m(C,{get when(){return E()},get fallback(){return(()=>{var $=lt();return _($,m(he,{viewKey:E,selectedDocUrl:E,toolId:V,ref:oe})),$})()},get children(){return m(C,{get when(){return e.isolation},get fallback(){return m(pe,{setMainDocElement:oe,selectedDocUrl:E,selectedToolId:V,doctitleSlots:c,get isLeftCollapsed(){return p.isSidebarCollapsed},initialRightWidth:ee,initialRightCollapsed:te})},get children(){return m(we,{get contactUrl(){return i()?.contactUrl},selectedDocUrl:E,selectedToolId:V,doctitleSlots:c,get isLeftCollapsed(){return p.isSidebarCollapsed},initialRightWidth:ee,initialRightCollapsed:te})}})}})}}),null),_(f,m(C,{get when(){return Ue()},children:$=>m(Dt,{get view(){return $()},onClose:()=>Z(null)})}),null),f})()}function Dt(e){let[a,l]=v(e.view.toolId??void 0);U(()=>l(e.view.toolId??void 0));let r;return J(()=>{let i=s=>{s.key==="Escape"&&e.onClose()};window.addEventListener("keydown",i),k(()=>window.removeEventListener("keydown",i));let t=r;if(!t)return;let o=s=>{let{url:n,toolId:d}=s.detail;n&&(s.stopPropagation(),l(d??void 0))};t.addEventListener("patchwork:open-document",o),k(()=>t.removeEventListener("patchwork:open-document",o))}),(()=>{var i=st(),t=i.firstChild,o=t.firstChild,s=o.firstChild,n=o.nextSibling,d=n.firstChild;i.$$click=()=>e.onClose(),t.$$click=c=>c.stopPropagation();var u=r;return typeof u=="function"?R(u,t):r=t,s._$owner=T(),d._$owner=T(),W(c=>{var h=e.view.url,g=e.view.url,S=a();return h!==c.e&&(s.docUrl=c.e=h),g!==c.t&&(d.docUrl=c.t=g),S!==c.a&&(d.toolId=c.a=S),c},{e:void 0,t:void 0,a:void 0}),i})()}function $t(e){let a=e.sidebarState.isSidebarCollapsed,l=()=>e.traySlots().length>0,r;J(()=>{if(!e.isolation||!r)return;let t=r,o=s=>{let{url:n,toolId:d}=s.detail;n&&(s.stopPropagation(),e.onInterceptOpen?.({url:n,toolId:d??null}))};t.addEventListener("patchwork:open-document",o),k(()=>t.removeEventListener("patchwork:open-document",o))});let i;return U(()=>{if(e.sidebarState.isSidebarCollapsed())return;let t=i;if(!t)return;let o=()=>{t.getBoundingClientRect().width<=window.innerWidth*.75||(e.sidebarState.setIsSidebarCollapsed(!0),window.dispatchEvent(new CustomEvent(ne)))};t.addEventListener("patchwork:open-document",o),k(()=>t.removeEventListener("patchwork:open-document",o))}),[(()=>{var t=dt();return t.$$click=()=>e.sidebarState.setIsSidebarCollapsed(o=>!o),_(t,m(kt,{})),W(o=>{var s=a()?"Show sidebar":"Hide sidebar",n=a()?"Show sidebar":"Hide sidebar",d=!a();return s!==o.e&&G(t,"title",o.e=s),n!==o.t&&G(t,"aria-label",o.t=n),d!==o.a&&G(t,"aria-pressed",o.a=d),o},{e:void 0,t:void 0,a:void 0}),t})(),m(fe,{side:"left",isCollapsed:a,get width(){return e.sidebarState.leftSidebarWidth},get onMouseDown(){return e.sidebarResize.handleMouseDown},get onToggleClick(){return e.sidebarResize.handleToggleClick},get children(){var t=ct(),o=t.firstChild,s=o.firstChild,n=s.firstChild,d=i;typeof d=="function"?R(d,t):i=t,_(t,m(be,{get widgets(){return e.sidebarWidgets},get configHandle(){return e.configHandle},get rootFolderUrl(){return e.rootFolderUrl},get ready(){return e.widgetsReady}}),o);var u=r;return typeof u=="function"?R(u,o):r=o,_(s,m(C,{get when(){return e.contactUrl()},children:c=>(()=>{var h=mt(),g=h.firstChild;return h.$$click=S=>Y(S.currentTarget,{url:e.accountDocUrl,toolId:"account-picker"}),g._$owner=T(),W(()=>g.docUrl=c()),h})()}),n),_(s,m(C,{get when(){return e.moduleSettingsUrl()},children:c=>(()=>{var h=ft();return h.$$click=g=>Y(g.currentTarget,{url:c(),toolId:"packages"}),h})()}),n),n.$$click=c=>Y(c.currentTarget,{url:e.accountDocUrl,toolId:"frame-configurator"}),W(()=>t.classList.toggle("threepane-sidebar--has-tray",!!l())),t}}),m(C,{get when(){return l()},get children(){var t=ut();return _(t,m(De,{get slots(){return e.traySlots}})),W(o=>{var s=!!a(),n=`${e.sidebarState.leftSidebarWidth()}px`;return s!==o.e&&t.classList.toggle("frame__tray-dock--collapsed",o.e=s),n!==o.t&&nt(t,"width",o.t=n),o},{e:void 0,t:void 0}),t}}),rt(()=>e.children)]}function kt(){return ht()}function $o(e){return(a,l)=>gt(()=>m(yt,{handle:a,get repo(){return l.repo},isolation:e}),l)}ot(["click"]);export{yt as PatchworkFrame,$o as renderPatchworkFrame};
2
+ //# sourceMappingURL=PatchworkFrame-REYVVXOP.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/PatchworkFrame.tsx", "../src/components/SidebarWidgets.tsx", "../src/components/Tray.tsx", "../src/account/ensureThreepaneConfig.ts", "../src/account/loadDatatypeWhenReady.ts", "../src/account/seedExampleDocuments.ts"],
4
+ "sourcesContent": ["import { template as _$template } from \"solid-js/web\";\nimport { delegateEvents as _$delegateEvents } from \"solid-js/web\";\nimport { memo as _$memo } from \"solid-js/web\";\nimport { setStyleProperty as _$setStyleProperty } from \"solid-js/web\";\nimport { setAttribute as _$setAttribute } from \"solid-js/web\";\nimport { effect as _$effect } from \"solid-js/web\";\nimport { getOwner as _$getOwner } from \"solid-js/web\";\nimport { use as _$use } from \"solid-js/web\";\nimport { insert as _$insert } from \"solid-js/web\";\nimport { createComponent as _$createComponent } from \"solid-js/web\";\nvar _tmpl$ = /*#__PURE__*/_$template(`<div class=frame-shell><aside class=frame-warning-banner>research grade software. do not share links. sharing a doc is sharing your account.</aside><div class=frame><patchwork-view component=patchwork-selected-doc-provider><patchwork-view component=patchwork-account-provider><patchwork-view component=patchwork-tool-storage-provider><patchwork-view component=patchwork-worker-provider>`, true, false, false),\n _tmpl$2 = /*#__PURE__*/_$template(`<div style=display:contents>`),\n _tmpl$3 = /*#__PURE__*/_$template(`<div class=main-area>`),\n _tmpl$4 = /*#__PURE__*/_$template(`<div class=frame__popover-backdrop><div class=frame__popover role=dialog aria-modal=true><div class=frame__popover-toolbar><patchwork-view tool-id=doc-openwith></patchwork-view></div><div class=frame__popover-body><patchwork-view>`, true, false, false),\n _tmpl$5 = /*#__PURE__*/_$template(`<button type=button class=\"frame__sidebar-toggle frame__left-toggle\">`),\n _tmpl$6 = /*#__PURE__*/_$template(`<div class=threepane-sidebar><div class=threepane-sidebar__footer><footer class=threepane-account-bar><button type=button class=threepane-account-bar__button>Settings`),\n _tmpl$7 = /*#__PURE__*/_$template(`<div class=frame__tray-dock>`),\n _tmpl$8 = /*#__PURE__*/_$template(`<button type=button class=\"threepane-account-bar__button threepane-account-bar__avatar\"title=Account aria-label=Account><patchwork-view tool-id=contact-avatar>`, true, false, false),\n _tmpl$9 = /*#__PURE__*/_$template(`<button type=button class=threepane-account-bar__button>Packages`),\n _tmpl$0 = /*#__PURE__*/_$template(`<svg xmlns=http://www.w3.org/2000/svg width=18 height=18 viewBox=\"0 0 24 24\"fill=none stroke=var(--studio-chrome-line) stroke-width=1.75 stroke-linecap=round stroke-linejoin=round><rect width=18 height=18 x=3 y=3 rx=2></rect><path d=\"M9 3v18\">`);\nimport \"@inkandswitch/patchwork-elements\";\nimport { useDocHandle } from \"solid-automerge\";\nimport { subscribe } from \"@inkandswitch/patchwork-providers\";\nimport { useSidebarState, useSidebarResize, useMainDocMounted, useDebugRegistryToast, DebugRegistryToast, SIDEBAR_KEYS, COLLAPSE_CONTEXT_SIDEBAR_EVENT, getStoredNumber, getStoredBoolean, DEFAULT_SIDEBAR_WIDTH } from \"./hooks\";\nimport { Sidebar } from \"./components/Sidebar\";\nimport { SidebarWidgets } from \"./components/SidebarWidgets\";\nimport { DocumentAreaRoot } from \"./components/DocumentAreaRoot\";\nimport { IsolatedDocumentArea } from \"./components/IsolatedDocumentArea\";\nimport { MainDocumentView } from \"./components/MainDocumentView\";\nimport { Tray } from \"./components/Tray\";\nimport { createEffect, createMemo, createSignal, onCleanup, onMount, Show } from \"solid-js\";\nimport { render } from \"solid-js/web\";\nimport { ensureThreepaneConfig } from \"./account/ensureThreepaneConfig\";\nimport { seedExampleDocuments } from \"./account/seedExampleDocuments\";\nimport { ensureFrameStyles } from \"./ensureFrameStyles\";\nconst MIN_SIDEBAR_WIDTH = 180;\nconst MAX_SIDEBAR_WIDTH = 720;\nconst AUTO_CLOSE_WIDTH = 120;\nconst DRAG_THRESHOLD = 3;\nconst useFrameProviderReady = (componentId, element) => {\n const [isReady, setReady] = createSignal(false);\n createEffect(() => {\n const el = element();\n if (!el) return;\n setReady(false);\n const onMounted = event => {\n const detail = event.detail;\n if (detail?.componentId !== componentId) return;\n setReady(true);\n };\n el.addEventListener(\"patchwork:mounted\", onMounted);\n onCleanup(() => el.removeEventListener(\"patchwork:mounted\", onMounted));\n });\n return isReady;\n};\nfunction dispatchOpen(el, detail) {\n el.dispatchEvent(new CustomEvent(\"patchwork:open-document\", {\n detail,\n bubbles: true,\n composed: true\n }));\n}\nexport function PatchworkFrame({\n handle,\n repo,\n ...props\n}) {\n ensureFrameStyles();\n const accountDocUrl = handle.url;\n const [accountProviderElement, setAccountProviderElement] = createSignal();\n const isAccountProviderReady = useFrameProviderReady(\"patchwork-account-provider\", accountProviderElement);\n const [toolStorageProviderElement, setToolStorageProviderElement] = createSignal();\n const isToolStorageProviderReady = useFrameProviderReady(\"patchwork-tool-storage-provider\", toolStorageProviderElement);\n const [selectedDocProviderElement, setSelectedDocProviderElement] = createSignal();\n const isSelectedDocProviderReady = useFrameProviderReady(\"patchwork-selected-doc-provider\", selectedDocProviderElement);\n const areProvidersReady = createMemo(() => isSelectedDocProviderReady() && isAccountProviderReady() && isToolStorageProviderReady());\n return (() => {\n var _el$ = _tmpl$(),\n _el$2 = _el$.firstChild,\n _el$3 = _el$2.firstChild,\n _el$4 = _el$2.nextSibling,\n _el$5 = _el$4.firstChild,\n _el$6 = _el$5.firstChild,\n _el$7 = _el$6.firstChild,\n _el$8 = _el$7.firstChild;\n _$insert(_el$2, _$createComponent(Show, {\n get when() {\n return props.isolation;\n },\n get children() {\n return [\" \", \"isolation is highly experimental. if things are broken, switch back to wild west.\"];\n }\n }), null);\n _$use(setSelectedDocProviderElement, _el$5);\n _el$5._$owner = _$getOwner();\n _$use(setAccountProviderElement, _el$6);\n _el$6.docUrl = accountDocUrl;\n _el$6._$owner = _$getOwner();\n _$use(setToolStorageProviderElement, _el$7);\n _el$7.docUrl = accountDocUrl;\n _el$7._$owner = _$getOwner();\n _el$8._$owner = _$getOwner();\n _$insert(_el$8, _$createComponent(Show, {\n get when() {\n return areProvidersReady();\n },\n get children() {\n return _$createComponent(PatchworkFrameInner, {\n handle: handle,\n repo: repo,\n get isolation() {\n return props.isolation;\n }\n });\n }\n }));\n return _el$;\n })();\n}\nfunction PatchworkFrameInner(props) {\n const accountDocHandle = useDocHandle(() => props.handle.url, {\n repo: props.repo\n });\n void (async () => {\n await ensureThreepaneConfig(props.handle, props.repo);\n await seedExampleDocuments(props.handle, props.repo);\n })().catch(err => {\n console.error(\"frame: account bootstrap failed\", err);\n });\n const [docVersion, setDocVersion] = createSignal(0);\n createEffect(() => {\n const h = accountDocHandle();\n if (!h) return;\n const onChange = () => setDocVersion(v => v + 1);\n h.on(\"change\", onChange);\n onCleanup(() => h.off(\"change\", onChange));\n });\n const accountDoc = createMemo(() => {\n docVersion();\n return accountDocHandle()?.doc();\n });\n const accountDocUrl = props.handle.url;\n const threepaneUrl = () => accountDoc()?.tools?.[\"threepane\"];\n const threepaneConfigHandle = useDocHandle(() => threepaneUrl(), {\n repo: props.repo\n });\n const [threepaneVersion, setThreepaneVersion] = createSignal(0);\n createEffect(() => {\n const h = threepaneConfigHandle();\n if (!h) return;\n const onChange = () => setThreepaneVersion(v => v + 1);\n h.on(\"change\", onChange);\n onCleanup(() => h.off(\"change\", onChange));\n });\n const threepaneConfig = createMemo(() => {\n threepaneVersion();\n return threepaneConfigHandle()?.doc();\n });\n const doctitleSlots = () => threepaneConfig()?.doctitle?.tools;\n const sidebarWidgets = () => threepaneConfig()?.sidebar?.widgets ?? [];\n const traySlots = () => threepaneConfig()?.tray ?? [];\n const rootFolderUrl = () => accountDoc()?.rootFolderUrl;\n const sidebarState = useSidebarState();\n const sidebarResize = useSidebarResize({\n setLeftSidebarWidth: sidebarState.setLeftSidebarWidth,\n setRightSidebarWidth: sidebarState.setRightSidebarWidth,\n setIsSidebarCollapsed: sidebarState.setIsSidebarCollapsed,\n setIsRightSidebarCollapsed: sidebarState.setIsRightSidebarCollapsed,\n isLeftCollapsed: sidebarState.isSidebarCollapsed,\n isRightCollapsed: sidebarState.isRightSidebarCollapsed,\n minWidth: MIN_SIDEBAR_WIDTH,\n maxWidth: MAX_SIDEBAR_WIDTH,\n autoCloseWidth: AUTO_CLOSE_WIDTH,\n dragThreshold: DRAG_THRESHOLD\n });\n const {\n events: debugEvents,\n dismissEvent,\n clearAll\n } = useDebugRegistryToast();\n let element;\n const [selectedView, setSelectedView] = createSignal(null);\n const [popoverView, setPopoverView] = createSignal(null);\n onMount(() => {\n const unsubscribeSelectedView = subscribe(element, {\n type: \"patchwork:selected-view\"\n }, view => setSelectedView(view));\n onCleanup(unsubscribeSelectedView);\n });\n const selectedDocUrl = () => selectedView()?.url;\n const selectedToolId = () => selectedView()?.toolId ?? void 0;\n const initialRightWidth = () => getStoredNumber(SIDEBAR_KEYS.rightWidth, DEFAULT_SIDEBAR_WIDTH);\n const initialRightCollapsed = () => getStoredBoolean(SIDEBAR_KEYS.rightCollapsed);\n const [mainDocElement, setMainDocElement] = createSignal();\n const isMainDocMounted = useMainDocMounted(mainDocElement, selectedDocUrl);\n const [widgetsReady, setWidgetsReady] = createSignal(false);\n createEffect(() => {\n if (widgetsReady()) return;\n if (props.isolation || !selectedDocUrl() || isMainDocMounted()) setWidgetsReady(true);\n });\n return (() => {\n var _el$9 = _tmpl$2();\n var _ref$ = element;\n typeof _ref$ === \"function\" ? _$use(_ref$, _el$9) : element = _el$9;\n _$insert(_el$9, _$createComponent(DebugRegistryToast, {\n get events() {\n return debugEvents();\n },\n onDismiss: dismissEvent,\n onClearAll: clearAll\n }), null);\n _$insert(_el$9, _$createComponent(FrameLayout, {\n accountDocUrl: accountDocUrl,\n sidebarState: sidebarState,\n sidebarResize: sidebarResize,\n sidebarWidgets: sidebarWidgets,\n traySlots: traySlots,\n configHandle: threepaneConfigHandle,\n rootFolderUrl: rootFolderUrl,\n widgetsReady: widgetsReady,\n contactUrl: () => accountDoc()?.contactUrl,\n moduleSettingsUrl: () => accountDoc()?.moduleSettingsUrl,\n get isolation() {\n return props.isolation;\n },\n onInterceptOpen: setPopoverView,\n get children() {\n return _$createComponent(Show, {\n get when() {\n return selectedDocUrl();\n },\n get fallback() {\n return (() => {\n var _el$0 = _tmpl$3();\n _$insert(_el$0, _$createComponent(MainDocumentView, {\n viewKey: selectedDocUrl,\n selectedDocUrl: selectedDocUrl,\n toolId: selectedToolId,\n ref: setMainDocElement\n }));\n return _el$0;\n })();\n },\n get children() {\n return _$createComponent(Show, {\n get when() {\n return props.isolation;\n },\n get fallback() {\n return _$createComponent(DocumentAreaRoot, {\n setMainDocElement: setMainDocElement,\n selectedDocUrl: selectedDocUrl,\n selectedToolId: selectedToolId,\n doctitleSlots: doctitleSlots,\n get isLeftCollapsed() {\n return sidebarState.isSidebarCollapsed;\n },\n initialRightWidth: initialRightWidth,\n initialRightCollapsed: initialRightCollapsed\n });\n },\n get children() {\n return _$createComponent(IsolatedDocumentArea, {\n get contactUrl() {\n return accountDoc()?.contactUrl;\n },\n selectedDocUrl: selectedDocUrl,\n selectedToolId: selectedToolId,\n doctitleSlots: doctitleSlots,\n get isLeftCollapsed() {\n return sidebarState.isSidebarCollapsed;\n },\n initialRightWidth: initialRightWidth,\n initialRightCollapsed: initialRightCollapsed\n });\n }\n });\n }\n });\n }\n }), null);\n _$insert(_el$9, _$createComponent(Show, {\n get when() {\n return popoverView();\n },\n children: view => _$createComponent(FramePopover, {\n get view() {\n return view();\n },\n onClose: () => setPopoverView(null)\n })\n }), null);\n return _el$9;\n })();\n}\nfunction FramePopover(props) {\n const [toolId, setToolId] = createSignal(props.view.toolId ?? void 0);\n createEffect(() => setToolId(props.view.toolId ?? void 0));\n let popoverEl;\n onMount(() => {\n const onKey = e => {\n if (e.key === \"Escape\") props.onClose();\n };\n window.addEventListener(\"keydown\", onKey);\n onCleanup(() => window.removeEventListener(\"keydown\", onKey));\n const el = popoverEl;\n if (!el) return;\n const onOpen = event => {\n const {\n url,\n toolId: nextToolId\n } = event.detail;\n if (!url) return;\n event.stopPropagation();\n setToolId(nextToolId ?? void 0);\n };\n el.addEventListener(\"patchwork:open-document\", onOpen);\n onCleanup(() => el.removeEventListener(\"patchwork:open-document\", onOpen));\n });\n return (() => {\n var _el$1 = _tmpl$4(),\n _el$10 = _el$1.firstChild,\n _el$11 = _el$10.firstChild,\n _el$12 = _el$11.firstChild,\n _el$13 = _el$11.nextSibling,\n _el$14 = _el$13.firstChild;\n _el$1.$$click = () => props.onClose();\n _el$10.$$click = e => e.stopPropagation();\n var _ref$2 = popoverEl;\n typeof _ref$2 === \"function\" ? _$use(_ref$2, _el$10) : popoverEl = _el$10;\n _el$12._$owner = _$getOwner();\n _el$14._$owner = _$getOwner();\n _$effect(_p$ => {\n var _v$ = props.view.url,\n _v$2 = props.view.url,\n _v$3 = toolId();\n _v$ !== _p$.e && (_el$12.docUrl = _p$.e = _v$);\n _v$2 !== _p$.t && (_el$14.docUrl = _p$.t = _v$2);\n _v$3 !== _p$.a && (_el$14.toolId = _p$.a = _v$3);\n return _p$;\n }, {\n e: undefined,\n t: undefined,\n a: undefined\n });\n return _el$1;\n })();\n}\nfunction FrameLayout(props) {\n const isCollapsed = props.sidebarState.isSidebarCollapsed;\n const hasTray = () => props.traySlots().length > 0;\n let footerEl;\n onMount(() => {\n if (!props.isolation || !footerEl) return;\n const el = footerEl;\n const onOpen = event => {\n const {\n url,\n toolId\n } = event.detail;\n if (!url) return;\n event.stopPropagation();\n props.onInterceptOpen?.({\n url,\n toolId: toolId ?? null\n });\n };\n el.addEventListener(\"patchwork:open-document\", onOpen);\n onCleanup(() => el.removeEventListener(\"patchwork:open-document\", onOpen));\n });\n let sidebarContentEl;\n createEffect(() => {\n if (props.sidebarState.isSidebarCollapsed()) return;\n const el = sidebarContentEl;\n if (!el) return;\n const onOpen = () => {\n if (el.getBoundingClientRect().width <= window.innerWidth * 0.75) return;\n props.sidebarState.setIsSidebarCollapsed(true);\n window.dispatchEvent(new CustomEvent(COLLAPSE_CONTEXT_SIDEBAR_EVENT));\n };\n el.addEventListener(\"patchwork:open-document\", onOpen);\n onCleanup(() => el.removeEventListener(\"patchwork:open-document\", onOpen));\n });\n return [(() => {\n var _el$15 = _tmpl$5();\n _el$15.$$click = () => props.sidebarState.setIsSidebarCollapsed(v => !v);\n _$insert(_el$15, _$createComponent(PanelLeftIcon, {}));\n _$effect(_p$ => {\n var _v$4 = isCollapsed() ? \"Show sidebar\" : \"Hide sidebar\",\n _v$5 = isCollapsed() ? \"Show sidebar\" : \"Hide sidebar\",\n _v$6 = !isCollapsed();\n _v$4 !== _p$.e && _$setAttribute(_el$15, \"title\", _p$.e = _v$4);\n _v$5 !== _p$.t && _$setAttribute(_el$15, \"aria-label\", _p$.t = _v$5);\n _v$6 !== _p$.a && _$setAttribute(_el$15, \"aria-pressed\", _p$.a = _v$6);\n return _p$;\n }, {\n e: undefined,\n t: undefined,\n a: undefined\n });\n return _el$15;\n })(), _$createComponent(Sidebar, {\n side: \"left\",\n isCollapsed: isCollapsed,\n get width() {\n return props.sidebarState.leftSidebarWidth;\n },\n get onMouseDown() {\n return props.sidebarResize.handleMouseDown;\n },\n get onToggleClick() {\n return props.sidebarResize.handleToggleClick;\n },\n get children() {\n var _el$16 = _tmpl$6(),\n _el$17 = _el$16.firstChild,\n _el$18 = _el$17.firstChild,\n _el$19 = _el$18.firstChild;\n var _ref$3 = sidebarContentEl;\n typeof _ref$3 === \"function\" ? _$use(_ref$3, _el$16) : sidebarContentEl = _el$16;\n _$insert(_el$16, _$createComponent(SidebarWidgets, {\n get widgets() {\n return props.sidebarWidgets;\n },\n get configHandle() {\n return props.configHandle;\n },\n get rootFolderUrl() {\n return props.rootFolderUrl;\n },\n get ready() {\n return props.widgetsReady;\n }\n }), _el$17);\n var _ref$4 = footerEl;\n typeof _ref$4 === \"function\" ? _$use(_ref$4, _el$17) : footerEl = _el$17;\n _$insert(_el$18, _$createComponent(Show, {\n get when() {\n return props.contactUrl();\n },\n children: contactUrl => (() => {\n var _el$21 = _tmpl$8(),\n _el$22 = _el$21.firstChild;\n _el$21.$$click = e => dispatchOpen(e.currentTarget, {\n url: props.accountDocUrl,\n toolId: \"account-picker\"\n });\n _el$22._$owner = _$getOwner();\n _$effect(() => _el$22.docUrl = contactUrl());\n return _el$21;\n })()\n }), _el$19);\n _$insert(_el$18, _$createComponent(Show, {\n get when() {\n return props.moduleSettingsUrl();\n },\n children: moduleSettingsUrl => (() => {\n var _el$23 = _tmpl$9();\n _el$23.$$click = e => dispatchOpen(e.currentTarget, {\n url: moduleSettingsUrl(),\n toolId: \"packages\"\n });\n return _el$23;\n })()\n }), _el$19);\n _el$19.$$click = e => dispatchOpen(e.currentTarget, {\n url: props.accountDocUrl,\n toolId: \"frame-configurator\"\n });\n _$effect(() => _el$16.classList.toggle(\"threepane-sidebar--has-tray\", !!hasTray()));\n return _el$16;\n }\n }), _$createComponent(Show, {\n get when() {\n return hasTray();\n },\n get children() {\n var _el$20 = _tmpl$7();\n _$insert(_el$20, _$createComponent(Tray, {\n get slots() {\n return props.traySlots;\n }\n }));\n _$effect(_p$ => {\n var _v$7 = !!isCollapsed(),\n _v$8 = `${props.sidebarState.leftSidebarWidth()}px`;\n _v$7 !== _p$.e && _el$20.classList.toggle(\"frame__tray-dock--collapsed\", _p$.e = _v$7);\n _v$8 !== _p$.t && _$setStyleProperty(_el$20, \"width\", _p$.t = _v$8);\n return _p$;\n }, {\n e: undefined,\n t: undefined\n });\n return _el$20;\n }\n }), _$memo(() => props.children)];\n}\nfunction PanelLeftIcon() {\n return _tmpl$0();\n}\nexport function renderPatchworkFrame(isolation) {\n return (handle, element) => {\n return render(() => _$createComponent(PatchworkFrame, {\n handle: handle,\n get repo() {\n return element.repo;\n },\n isolation: isolation\n }), element);\n };\n}\n_$delegateEvents([\"click\"]);", "import { template as _$template } from \"solid-js/web\";\nimport { delegateEvents as _$delegateEvents } from \"solid-js/web\";\nimport { memo as _$memo } from \"solid-js/web\";\nimport { insert as _$insert } from \"solid-js/web\";\nimport { createComponent as _$createComponent } from \"solid-js/web\";\nvar _tmpl$ = /*#__PURE__*/_$template(`<div class=threepane-widgets>`),\n _tmpl$2 = /*#__PURE__*/_$template(`<div class=threepane-widgets__empty><button type=button class=threepane-widgets__add>\uFF0B Add document list`),\n _tmpl$3 = /*#__PURE__*/_$template(`<div class=threepane-widget>`);\nimport { For, Show } from \"solid-js\";\nimport { SlotView } from \"./SlotView\";\nconst DOCUMENT_LIST_TOOL = \"chee/document-list\";\nexport function SidebarWidgets(props) {\n const addDocumentList = () => {\n const root = props.rootFolderUrl();\n const handle = props.configHandle();\n if (!root || !handle) return;\n handle.change(doc => {\n doc.sidebar.widgets.push([DOCUMENT_LIST_TOOL, root]);\n });\n };\n return (() => {\n var _el$ = _tmpl$();\n _$insert(_el$, _$createComponent(Show, {\n get when() {\n return props.ready();\n },\n get children() {\n return _$createComponent(Show, {\n get when() {\n return props.widgets().length;\n },\n get fallback() {\n return (// While the config/root folder are still loading we can't add a\n // widget yet \u2014 show nothing rather than a disabled button.\n _$createComponent(Show, {\n get when() {\n return _$memo(() => !!props.rootFolderUrl())() && props.configHandle();\n },\n get children() {\n var _el$2 = _tmpl$2(),\n _el$3 = _el$2.firstChild;\n _el$3.$$click = addDocumentList;\n return _el$2;\n }\n })\n );\n },\n get children() {\n return _$createComponent(For, {\n get each() {\n return props.widgets();\n },\n children: widget => (() => {\n var _el$4 = _tmpl$3();\n _$insert(_el$4, _$createComponent(SlotView, {\n slot: widget\n }));\n return _el$4;\n })()\n });\n }\n });\n }\n }));\n return _el$;\n })();\n}\n_$delegateEvents([\"click\"]);", "import { template as _$template } from \"solid-js/web\";\nimport { setAttribute as _$setAttribute } from \"solid-js/web\";\nimport { effect as _$effect } from \"solid-js/web\";\nimport { insert as _$insert } from \"solid-js/web\";\nimport { createComponent as _$createComponent } from \"solid-js/web\";\nvar _tmpl$ = /*#__PURE__*/_$template(`<div class=frame-tray>`),\n _tmpl$2 = /*#__PURE__*/_$template(`<div class=frame-tray__item>`);\nimport { For, Show } from \"solid-js\";\nimport { SlotView, slotId } from \"./SlotView\";\nexport function Tray(props) {\n return _$createComponent(Show, {\n get when() {\n return props.slots().length;\n },\n get children() {\n var _el$ = _tmpl$();\n _$insert(_el$, _$createComponent(For, {\n get each() {\n return props.slots();\n },\n children: slot => (() => {\n var _el$2 = _tmpl$2();\n _$insert(_el$2, _$createComponent(SlotView, {\n slot: slot\n }));\n _$effect(() => _$setAttribute(_el$2, \"data-tray-id\", slotId(slot)));\n return _el$2;\n })()\n }));\n return _el$;\n }\n });\n}", "import type { AutomergeUrl, DocHandle, Repo } from \"@automerge/automerge-repo/slim\";\nimport { createDocOfDatatype2 } from \"@inkandswitch/patchwork-plugins\";\nimport type { AccountDoc, ThreepaneConfigDoc, ToolRef, ToolSlot } from \"../types\";\nimport { DEFAULT_DOCTITLE_TOOLS, DEFAULT_TRAY_TOOLS } from \"../datatypes\";\nimport { loadDatatypeWhenReady } from \"./loadDatatypeWhenReady\";\nimport { slotId } from \"../components/SlotView\";\n\n// Title + spacer are intrinsic to the frame's top bar, never configured tools.\nconst INTRINSIC_DOCTITLE_TOOLS = new Set([\"document-title\", \"spacer\"]);\n\n// The sidebar's default widget: a document list pinned to the account's root\n// folder. Every account gets one so the left pane is never empty.\nconst DOCUMENT_LIST_TOOL = \"chee/document-list\";\n\n/** The default sidebar widgets for a fresh (or empty) account. */\nfunction defaultSidebarWidgets(rootFolderUrl?: AutomergeUrl): ToolRef[] {\n return rootFolderUrl ? [[DOCUMENT_LIST_TOOL, rootFolderUrl]] : [];\n}\n\n/**\n * Lazily create the threepane layout config doc and point `account.tools.threepane`\n * at it, migrating the legacy `account.documentToolbarToolIds` into its\n * `doctitle` lane. The system tray is an explicit `tray` list here, seeded with\n * `DEFAULT_TRAY_TOOLS` (and backfilled for configs created before the field\n * existed).\n *\n * Seeds the sidebar with a default document-list widget (pinned to the account's\n * root folder), so the left pane is never empty.\n *\n * Non-destructive: the old `documentToolbarToolIds` / `accountSidebarToolId`\n * fields are left untouched so older builds keep working. Run the (separate,\n * opt-in) cleanupLegacyAccountFields script to remove them later.\n */\nexport async function ensureThreepaneConfig(\n accountHandle: DocHandle<AccountDoc>,\n repo: Repo\n) {\n const rootFolderUrl = accountHandle.doc()?.rootFolderUrl;\n const existingConfigUrl = accountHandle.doc()?.tools?.[\"threepane\"];\n\n // Already migrated. Backfill the default document-list widget for early\n // builds of this branch that seeded an empty sidebar.\n if (existingConfigUrl) {\n const configHandle = await repo.find<ThreepaneConfigDoc>(existingConfigUrl);\n configHandle.change((doc) => {\n if (rootFolderUrl && !doc.sidebar?.widgets?.length) {\n doc.sidebar.widgets = defaultSidebarWidgets(rootFolderUrl);\n }\n // Backfill the tray for configs created before the field existed.\n if (!doc.tray) {\n doc.tray = DEFAULT_TRAY_TOOLS.slice();\n } else {\n // Append default tray tools the saved tray is missing, like\n // llm-config-tray. slotId compares across the string and tuple forms.\n const present = new Set(doc.tray.map((s) => slotId(s)));\n for (const id of DEFAULT_TRAY_TOOLS) {\n if (!present.has(id)) doc.tray.push(id);\n }\n }\n // An account whose doctitle lane ended up empty (nothing to migrate from\n // the legacy field) gets the defaults rather than a bare top bar.\n if (!doc.doctitle?.tools?.length) {\n doc.doctitle = { ...doc.doctitle, tools: DEFAULT_DOCTITLE_TOOLS.slice() };\n }\n });\n return;\n }\n\n const datatype = await loadDatatypeWhenReady<ThreepaneConfigDoc>(\n \"threepane:config\"\n );\n if (!datatype) {\n console.warn(\"frame: threepane:config datatype never registered\");\n return;\n }\n\n // Re-check after the await in case another tab migrated concurrently.\n if (accountHandle.doc()?.tools?.[\"threepane\"]) return;\n\n const account = accountHandle.doc();\n\n // doctitle tools migrate as bare ids: the frame always points them at the\n // selected main-view doc, so a slot tuple's docid would be ignored \u2014 keep\n // them as plain strings.\n const doctitleTools: ToolSlot[] = (account?.documentToolbarToolIds ?? [])\n .filter((id) => !INTRINSIC_DOCTITLE_TOOLS.has(id));\n\n const configHandle = await createDocOfDatatype2<ThreepaneConfigDoc>(\n datatype,\n repo\n );\n configHandle.change((doc) => {\n if (doctitleTools.length) doc.doctitle.tools = doctitleTools;\n doc.sidebar.widgets = defaultSidebarWidgets(account?.rootFolderUrl);\n if (!doc.tray) doc.tray = DEFAULT_TRAY_TOOLS.slice();\n });\n\n accountHandle.change((acc) => {\n if (!acc.tools) acc.tools = {};\n if (!acc.tools[\"threepane\"]) acc.tools[\"threepane\"] = configHandle.url;\n });\n}\n", "import {\n getRegistry,\n type DatatypeDescription,\n type LoadedDatatype,\n} from \"@inkandswitch/patchwork-plugins\";\n\nexport function loadDatatypeWhenReady<D>(\n id: string\n): Promise<LoadedDatatype<D>> {\n return getRegistry<DatatypeDescription>(\n \"patchwork:datatype\"\n ).loadWhenReady(id) as Promise<LoadedDatatype<D>>;\n}\n", "import debug from \"debug\";\nimport type { DocHandle, Repo } from \"@automerge/automerge-repo/slim\";\nimport { createDocOfDatatype2 } from \"@inkandswitch/patchwork-plugins\";\nimport type { FolderDoc } from \"@inkandswitch/patchwork-filesystem\";\nimport type { AccountDoc } from \"../types\";\nimport { loadDatatypeWhenReady } from \"./loadDatatypeWhenReady\";\n\nconst log = debug(\"patchwork:threepane:examples\");\n\n/**\n * Seed a fresh account with example documents by running each static module\n * bundle's generated `init.js` (emitted by that repo's scripts/bundle.mjs next\n * to its modules.json). Every init script receives the same Examples folder\n * handle, so multiple bundles merge their examples into one folder.\n *\n * Runs at most once per account: the account doc's `exampleDocsSeededAt`\n * marker is claimed *before* seeding (a race between two tabs can at worst\n * skip the examples, never duplicate them), and a deleted Examples folder is\n * never recreated. Accounts that already have documents get the marker but no\n * examples \u2014 only truly fresh accounts are seeded.\n */\nexport async function seedExampleDocuments(\n accountHandle: DocHandle<AccountDoc>,\n repo: Repo\n) {\n const account = accountHandle.doc();\n if (!account?.rootFolderUrl) {\n log(\"skipped \u2014 account has no rootFolderUrl\");\n return;\n }\n if (account.exampleDocsSeededAt) {\n log(\n \"skipped \u2014 already ran for this account at\",\n new Date(account.exampleDocsSeededAt).toISOString()\n );\n return;\n }\n\n log(\"claiming marker on account\", accountHandle.url);\n accountHandle.change((doc) => {\n if (!doc.exampleDocsSeededAt) doc.exampleDocsSeededAt = Date.now();\n });\n\n const rootFolder = await repo.find<FolderDoc>(account.rootFolderUrl);\n const existingDocs = rootFolder.doc()?.docs?.length ?? 0;\n if (existingDocs) {\n log(\n `skipped \u2014 root folder already has ${existingDocs} doc(s); only fresh accounts are seeded`\n );\n return;\n }\n\n const gaios = window.location.hostname.includes(\"gaios\");\n const initUrls = gaios ? [] : await bundleInitScriptUrls();\n log(gaios ? \"gaios examples\" : \"bundle init scripts:\", initUrls);\n if (!gaios && !initUrls.length) {\n log(\"skipped \u2014 no static module bundles to ask\");\n return;\n }\n\n const folderDatatype = await loadDatatypeWhenReady<FolderDoc>(\"folder\");\n if (!folderDatatype) {\n log(\"folder datatype never registered; giving up\");\n return;\n }\n const folder = await createDocOfDatatype2<FolderDoc>(\n folderDatatype,\n repo,\n (doc) => {\n doc.title = \"Examples\";\n }\n );\n\n if (gaios) {\n const { seedGaiosExamples } = await import(\"./gaiosExamples\");\n await seedGaiosExamples(repo, folder);\n }\n\n for (const url of initUrls) {\n try {\n const mod = await import(/* @vite-ignore */ url);\n await mod.default?.(repo, folder);\n log(\"ran init script\", url);\n } catch (err) {\n // A bundle that ships no init script 404s here \u2014 normal, not an error.\n log(\"init script unavailable or failed\", url, err);\n }\n }\n\n const seeded = folder.doc()?.docs?.length ?? 0;\n if (!seeded) {\n // Don't leave an empty Examples folder if no bundle contributed anything.\n log(\"no bundle contributed any documents\");\n return;\n }\n\n rootFolder.change((doc) => {\n doc.docs.unshift({ name: \"Examples\", type: \"folder\", url: folder.url });\n });\n log(`seeded ${seeded} document(s) into Examples folder`, folder.url);\n}\n\ntype ModuleWatcherLike = {\n urls?: Record<string, string>;\n doneLoading?: Promise<void>;\n};\n\n/**\n * The patchwork-tools bundle isn't in every site's default module sources\n * (some boot from an automerge module-settings doc, which has no init.js),\n * but its examples should seed everywhere \u2014 so it's always consulted.\n */\nconst TOOLS_BUNDLE_INIT_URL = \"https://patchwork-tools.netlify.app/init.js\";\n\n/**\n * Fallback for shells with no static manifest at all (automerge-doc module\n * sources only): the deployed patchwork-base bundle. Not consulted when any\n * static manifest is configured, because that manifest is usually a copy of\n * this very bundle (e.g. a localhost dev serve) and URL-dedupe can't tell \u2014\n * always adding it would seed base's examples twice.\n */\nconst BASE_BUNDLE_INIT_URL = \"https://patchwork-base.netlify.app/init.js\";\n\n/**\n * The `init.js` URL next to every static (http) module manifest the host is\n * watching, plus the hardcoded bundles above. Automerge module-settings docs\n * have no init script. Waits for the watcher's initial load so the bundles'\n * plugins are registered before any example runs.\n */\nasync function bundleInitScriptUrls(): Promise<string[]> {\n const watcher = (\n window as { patchwork?: { packages?: ModuleWatcherLike } }\n ).patchwork?.packages;\n if (!watcher?.urls) return [BASE_BUNDLE_INIT_URL, TOOLS_BUNDLE_INIT_URL];\n await watcher.doneLoading;\n const fromManifests = Object.values(watcher.urls)\n .filter((url) => typeof url === \"string\" && !url.startsWith(\"automerge:\"))\n .map((url) => new URL(\"init.js\", new URL(url, document.baseURI)).href);\n const base = fromManifests.length ? [] : [BASE_BUNDLE_INIT_URL];\n return [...new Set([...fromManifests, ...base, TOOLS_BUNDLE_INIT_URL])];\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["_$template", "_$delegateEvents", "_$memo", "_$setStyleProperty", "_$setAttribute", "_$effect", "_$getOwner", "_$use", "_$insert", "_$createComponent", "subscribe", "_$template", "_$delegateEvents", "_$memo", "_$insert", "_$createComponent", "For", "Show", "_tmpl$", "_$template", "_tmpl$2", "_tmpl$3", "DOCUMENT_LIST_TOOL", "SidebarWidgets", "props", "addDocumentList", "root", "handle", "doc", "_el$", "_$insert", "_$createComponent", "Show", "_$memo", "_el$2", "_el$3", "For", "widget", "_el$4", "SlotView", "_$delegateEvents", "_$template", "_$setAttribute", "_$effect", "_$insert", "_$createComponent", "For", "Show", "_tmpl$", "_$template", "_tmpl$2", "Tray", "props", "_$createComponent", "Show", "_el$", "_$insert", "For", "slot", "_el$2", "SlotView", "_$effect", "_$setAttribute", "slotId", "createEffect", "createMemo", "createSignal", "onCleanup", "onMount", "Show", "render", "createDocOfDatatype2", "getRegistry", "loadDatatypeWhenReady", "id", "INTRINSIC_DOCTITLE_TOOLS", "DOCUMENT_LIST_TOOL", "defaultSidebarWidgets", "rootFolderUrl", "ensureThreepaneConfig", "accountHandle", "repo", "existingConfigUrl", "doc", "DEFAULT_TRAY_TOOLS", "present", "s", "slotId", "id", "DEFAULT_DOCTITLE_TOOLS", "datatype", "loadDatatypeWhenReady", "account", "doctitleTools", "configHandle", "createDocOfDatatype2", "acc", "import_debug", "createDocOfDatatype2", "log", "debug", "seedExampleDocuments", "accountHandle", "repo", "account", "doc", "rootFolder", "existingDocs", "gaios", "initUrls", "bundleInitScriptUrls", "folderDatatype", "loadDatatypeWhenReady", "folder", "createDocOfDatatype2", "seedGaiosExamples", "url", "err", "seeded", "TOOLS_BUNDLE_INIT_URL", "BASE_BUNDLE_INIT_URL", "watcher", "fromManifests", "base", "_tmpl$", "_$template", "_tmpl$2", "_tmpl$3", "_tmpl$4", "_tmpl$5", "_tmpl$6", "_tmpl$7", "_tmpl$8", "_tmpl$9", "_tmpl$0", "MIN_SIDEBAR_WIDTH", "MAX_SIDEBAR_WIDTH", "AUTO_CLOSE_WIDTH", "DRAG_THRESHOLD", "useFrameProviderReady", "componentId", "element", "isReady", "setReady", "createSignal", "createEffect", "el", "onMounted", "event", "onCleanup", "dispatchOpen", "detail", "PatchworkFrame", "handle", "repo", "props", "ensureFrameStyles", "accountDocUrl", "accountProviderElement", "setAccountProviderElement", "isAccountProviderReady", "toolStorageProviderElement", "setToolStorageProviderElement", "isToolStorageProviderReady", "selectedDocProviderElement", "setSelectedDocProviderElement", "isSelectedDocProviderReady", "areProvidersReady", "createMemo", "_el$", "_el$2", "_el$3", "_el$4", "_el$5", "_el$6", "_el$7", "_el$8", "_$insert", "_$createComponent", "Show", "_$use", "_$getOwner", "PatchworkFrameInner", "accountDocHandle", "useDocHandle", "ensureThreepaneConfig", "seedExampleDocuments", "err", "docVersion", "setDocVersion", "h", "onChange", "v", "accountDoc", "threepaneUrl", "threepaneConfigHandle", "threepaneVersion", "setThreepaneVersion", "threepaneConfig", "doctitleSlots", "sidebarWidgets", "traySlots", "rootFolderUrl", "sidebarState", "useSidebarState", "sidebarResize", "useSidebarResize", "debugEvents", "dismissEvent", "clearAll", "useDebugRegistryToast", "selectedView", "setSelectedView", "popoverView", "setPopoverView", "onMount", "unsubscribeSelectedView", "subscribe", "view", "selectedDocUrl", "selectedToolId", "initialRightWidth", "getStoredNumber", "SIDEBAR_KEYS", "DEFAULT_SIDEBAR_WIDTH", "initialRightCollapsed", "getStoredBoolean", "mainDocElement", "setMainDocElement", "isMainDocMounted", "useMainDocMounted", "widgetsReady", "setWidgetsReady", "_el$9", "_ref$", "DebugRegistryToast", "FrameLayout", "_el$0", "MainDocumentView", "DocumentAreaRoot", "IsolatedDocumentArea", "FramePopover", "toolId", "setToolId", "popoverEl", "onKey", "e", "onOpen", "url", "nextToolId", "_el$1", "_el$10", "_el$11", "_el$12", "_el$13", "_el$14", "_ref$2", "_$effect", "_p$", "_v$", "_v$2", "_v$3", "isCollapsed", "hasTray", "footerEl", "sidebarContentEl", "COLLAPSE_CONTEXT_SIDEBAR_EVENT", "_el$15", "PanelLeftIcon", "_v$4", "_v$5", "_v$6", "_$setAttribute", "Sidebar", "_el$16", "_el$17", "_el$18", "_el$19", "_ref$3", "SidebarWidgets", "_ref$4", "contactUrl", "_el$21", "_el$22", "moduleSettingsUrl", "_el$23", "_el$20", "Tray", "_v$7", "_v$8", "_$setStyleProperty", "_$memo", "renderPatchworkFrame", "isolation", "render", "_$delegateEvents"]
7
+ }
@@ -1,4 +1,4 @@
1
- import{a as be,b as Et}from"./chunk-FW4363Y4.js";var Oe=be((An,Me)=>{var A=1e3,R=A*60,F=R*60,T=F*24,ir=T*7,sr=T*365.25;Me.exports=function(e,o){o=o||{};var t=typeof e;if(t==="string"&&e.length>0)return lr(e);if(t==="number"&&isFinite(e))return o.long?cr(e):dr(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function lr(e){if(e=String(e),!(e.length>100)){var o=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(o){var t=parseFloat(o[1]),n=(o[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return t*sr;case"weeks":case"week":case"w":return t*ir;case"days":case"day":case"d":return t*T;case"hours":case"hour":case"hrs":case"hr":case"h":return t*F;case"minutes":case"minute":case"mins":case"min":case"m":return t*R;case"seconds":case"second":case"secs":case"sec":case"s":return t*A;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return t;default:return}}}}function dr(e){var o=Math.abs(e);return o>=T?Math.round(e/T)+"d":o>=F?Math.round(e/F)+"h":o>=R?Math.round(e/R)+"m":o>=A?Math.round(e/A)+"s":e+"ms"}function cr(e){var o=Math.abs(e);return o>=T?re(e,o,T,"day"):o>=F?re(e,o,F,"hour"):o>=R?re(e,o,R,"minute"):o>=A?re(e,o,A,"second"):e+" ms"}function re(e,o,t,n){var r=o>=t*1.5;return Math.round(e/t)+" "+n+(r?"s":"")}});var Pe=be((Rn,ze)=>{function ur(e){t.debug=t,t.default=t,t.coerce=h,t.disable=a,t.enable=r,t.enabled=d,t.humanize=Oe(),t.destroy=g,Object.keys(e).forEach(s=>{t[s]=e[s]}),t.names=[],t.skips=[],t.formatters={};function o(s){let l=0;for(let f=0;f<s.length;f++)l=(l<<5)-l+s.charCodeAt(f),l|=0;return t.colors[Math.abs(l)%t.colors.length]}t.selectColor=o;function t(s){let l,f=null,p,m;function u(...c){if(!u.enabled)return;let b=u,v=Number(new Date),y=v-(l||v);b.diff=y,b.prev=l,b.curr=v,l=v,c[0]=t.coerce(c[0]),typeof c[0]!="string"&&c.unshift("%O");let C=0;c[0]=c[0].replace(/%([a-zA-Z%])/g,(W,K)=>{if(W==="%%")return"%";C++;let j=t.formatters[K];if(typeof j=="function"){let ge=c[C];W=j.call(b,ge),c.splice(C,1),C--}return W}),t.formatArgs.call(b,c),(b.log||t.log).apply(b,c)}return u.namespace=s,u.useColors=t.useColors(),u.color=t.selectColor(s),u.extend=n,u.destroy=t.destroy,Object.defineProperty(u,"enabled",{enumerable:!0,configurable:!1,get:()=>f!==null?f:(p!==t.namespaces&&(p=t.namespaces,m=t.enabled(s)),m),set:c=>{f=c}}),typeof t.init=="function"&&t.init(u),u}function n(s,l){let f=t(this.namespace+(typeof l>"u"?":":l)+s);return f.log=this.log,f}function r(s){t.save(s),t.namespaces=s,t.names=[],t.skips=[];let l=(typeof s=="string"?s:"").trim().replace(/\s+/g,",").split(",").filter(Boolean);for(let f of l)f[0]==="-"?t.skips.push(f.slice(1)):t.names.push(f)}function i(s,l){let f=0,p=0,m=-1,u=0;for(;f<s.length;)if(p<l.length&&(l[p]===s[f]||l[p]==="*"))l[p]==="*"?(m=p,u=f,p++):(f++,p++);else if(m!==-1)p=m+1,u++,f=u;else return!1;for(;p<l.length&&l[p]==="*";)p++;return p===l.length}function a(){let s=[...t.names,...t.skips.map(l=>"-"+l)].join(",");return t.enable(""),s}function d(s){for(let l of t.skips)if(i(s,l))return!1;for(let l of t.names)if(i(s,l))return!0;return!1}function h(s){return s instanceof Error?s.stack||s.message:s}function g(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return t.enable(t.load()),t}ze.exports=ur});var Ue=be((_,oe)=>{_.formatArgs=hr;_.save=pr;_.load=mr;_.useColors=fr;_.storage=gr();_.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();_.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function fr(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let e;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(e=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(e[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function hr(e){if(e[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+e[0]+(this.useColors?"%c ":" ")+"+"+oe.exports.humanize(this.diff),!this.useColors)return;let o="color: "+this.color;e.splice(1,0,o,"color: inherit");let t=0,n=0;e[0].replace(/%[a-zA-Z%]/g,r=>{r!=="%%"&&(t++,r==="%c"&&(n=t))}),e.splice(n,0,o)}_.log=console.debug||console.log||(()=>{});function pr(e){try{e?_.storage.setItem("debug",e):_.storage.removeItem("debug")}catch{}}function mr(){let e;try{e=_.storage.getItem("debug")||_.storage.getItem("DEBUG")}catch{}return!e&&typeof process<"u"&&"env"in process&&(e=process.env.DEBUG),e}function gr(){try{return localStorage}catch{}}oe.exports=Pe()(_);var{formatters:br}=oe.exports;br.j=function(e){try{return JSON.stringify(e)}catch(o){return"[UnexpectedJSONParseError]: "+o.message}}});import{template as St}from"solid-js/web";import{createComponent as zo}from"solid-js/web";import{setAttribute as Po}from"solid-js/web";import{effect as Uo}from"solid-js/web";import{insert as $t}from"solid-js/web";import{getOwner as Wo}from"solid-js/web";import{createMemo as Ct}from"solid-js";import{createStore as Ho,reconcile as Bo}from"solid-js/store";import{render as qo}from"solid-js/web";import{template as De}from"solid-js/web";import{insert as Y}from"solid-js/web";import{getOwner as ue}from"solid-js/web";import{use as fe}from"solid-js/web";import{createComponent as E}from"solid-js/web";import{createUniqueId as Tt,untrack as Ie}from"solid-js";import{isServer as Dt,isDev as Ae}from"solid-js/web";import{reconcile as It}from"solid-js/store";function ve(e,o={}){let t=o.storage||globalThis.localStorage,n=o.name||`storage-${Tt()}`;if(!t)return Object.assign(e,{2:null});let r=o.storageOptions,i=o.serialize||JSON.stringify.bind(JSON),a=o.deserialize||JSON.parse.bind(JSON),d=t.getItem(n,r),h=typeof e[0]=="function"?s=>{try{let l=a(s);e[1](()=>l)}catch(l){Ae&&console.warn(l)}}:s=>{try{let l=a(s);e[1](It(l))}catch(l){Ae&&console.warn(l)}},g=!0;if(d instanceof Promise?d.then(s=>g&&s&&h(s)):d&&h(d),typeof o.sync?.[0]=="function"){let s=typeof e[0]=="function"?e[0]:()=>e[0];o.sync[0](l=>{l.key!==n||!Dt&&(l.url||globalThis.location.href)!==globalThis.location.href||l.newValue===i(Ie(s))||h(l.newValue)})}return Object.assign([],e,{1:typeof e[0]=="function"?s=>{let l=e[1](s),f=s!=null?i(l):s;return o.sync?.[1](n,f),f!=null?t.setItem(n,f,r):t.removeItem(n,r),g=!1,l}:(...s)=>{e[1](...s);let l=Ie(()=>i(e[0]));o.sync?.[1](n,l),t.setItem(n,l,r),g=!1},2:d})}import{createEffect as vt,createMemo as wt,createSignal as S,on as xt,onCleanup as Do,onMount as Io,Show as he}from"solid-js";import{createEffect as G,createSignal as Z,on as Q}from"solid-js";var k={leftCollapsed:"patchwork:leftSidebarCollapsed",rightCollapsed:"patchwork:rightSidebarCollapsed",leftWidth:"patchwork:leftSidebarWidth",rightWidth:"patchwork:rightSidebarWidth",contextToolId:"patchwork:contextSidebarToolId"},ee="patchwork:collapse-context-sidebar",N=400;function we(e,o){let t=localStorage.getItem(e);return t?parseInt(t,10):o}function xe(e){return localStorage.getItem(e)==="true"}function At(){let[e,o]=Z(xe(k.leftCollapsed)),[t,n]=Z(xe(k.rightCollapsed)),[r,i]=Z(we(k.leftWidth,N)),[a,d]=Z(we(k.rightWidth,N));return G(Q(e,h=>{localStorage.setItem(k.leftCollapsed,String(h))})),G(Q(t,h=>{localStorage.setItem(k.rightCollapsed,String(h))})),G(Q(r,h=>{localStorage.setItem(k.leftWidth,String(h))})),G(Q(a,h=>{localStorage.setItem(k.rightWidth,String(h))})),{isSidebarCollapsed:e,setIsSidebarCollapsed:o,isRightSidebarCollapsed:t,setIsRightSidebarCollapsed:n,leftSidebarWidth:r,setLeftSidebarWidth:i,rightSidebarWidth:a,setRightSidebarWidth:d}}import{onCleanup as Rt,onMount as Ft}from"solid-js";function ye({setLeftSidebarWidth:e,setRightSidebarWidth:o,setIsSidebarCollapsed:t,setIsRightSidebarCollapsed:n,isLeftCollapsed:r,isRightCollapsed:i,minWidth:a,maxWidth:d,autoCloseWidth:h,dragThreshold:g}){let s=null,l=null,f=!1,p=null,m=(w,x)=>w==="left"?e(x):o(x),u=(w,x)=>w==="left"?t(x):n(x),c=w=>w==="left"?r():i(),b=(w,x)=>{if(x<h){c(w)||u(w,!0),p=null;return}c(w)&&u(w,!1);let $=Math.min(d,x);m(w,$),p=$},v=w=>{c(w)||p!==null&&p<a&&m(w,a)},y=null,C=w=>{document.body.setAttribute("data-sidebar-resizing",w),y=document.createElement("div"),y.style.cssText="position:fixed;inset:0;z-index:2147483647;cursor:col-resize;",document.body.appendChild(y)},me=()=>{s=null,l=null,document.body.style.userSelect="",document.body.removeAttribute("data-sidebar-resizing"),y?.remove(),y=null},W=(w,x)=>{x.preventDefault(),l={x:x.clientX,y:x.clientY},f=!1,p=null,s=w,document.body.style.userSelect="none"},K=()=>{let w=s,x=f;me(),w&&x&&v(w)},j=w=>{if(!s||!l)return;let x=Math.abs(w.clientX-l.x),$=Math.abs(w.clientY-l.y);!f&&(x>g||$>g)&&(f=!0,C(s)),s==="left"?b("left",w.clientX):s==="right"&&b("right",window.innerWidth-w.clientX)},ge=(w,x)=>{if(f){x.preventDefault(),x.stopPropagation(),f=!1;return}w==="left"?t($=>!$):n($=>!$)};return Ft(()=>{document.addEventListener("mousemove",j),document.addEventListener("mouseup",K),Rt(()=>{document.removeEventListener("mousemove",j),document.removeEventListener("mouseup",K),s&&me()})}),{handleMouseDown:W,handleToggleClick:ge}}import{createEffect as Lt,createSignal as Mt,onCleanup as Ot}from"solid-js";var D=(e,o)=>{let[t,n]=Mt(!1);return Lt(()=>{let r=o();if(!r)return;n(!1);let i=a=>{a.detail?.componentId===e&&n(!0)};r.addEventListener("patchwork:mounted",i),Ot(()=>r.removeEventListener("patchwork:mounted",i))}),t};import{createEffect as zt,createSignal as Pt,onCleanup as Ut}from"solid-js";var Wt=5e3,jt=(e,o)=>{let[t,n]=Pt(!1);return zt(()=>{if(t())return;let r=e(),i=o();if(!r||!i)return;let a=h=>{let g=h.detail;g?.url&&g.url!==i||n(!0)};r.addEventListener("patchwork:mounted",a),r.addEventListener("patchwork:no-tool",a);let d=setTimeout(()=>n(!0),Wt);Ut(()=>{r.removeEventListener("patchwork:mounted",a),r.removeEventListener("patchwork:no-tool",a),clearTimeout(d)})}),t};import{getRegistry as Nt}from"@inkandswitch/patchwork-plugins";import{createMemo as Ht,createSignal as Bt,onCleanup as qt}from"solid-js";function H(e){let o=Nt("patchwork:component"),[t,n]=Bt(0),r=o.on("changed",()=>n(i=>i+1));return qt(r),Ht(()=>(t(),(o.all?.()??[]).filter(i=>(i.tags??[]).includes(e)).map(i=>({id:i.id,name:i.name||i.id,icon:i.icon})).sort((i,a)=>i.name.localeCompare(a.name))))}import{template as _e}from"solid-js/web";import{delegateEvents as Vt}from"solid-js/web";import{setStyleProperty as Jt}from"solid-js/web";import{effect as Xt}from"solid-js/web";import{memo as Yt}from"solid-js/web";import{addEventListener as Kt}from"solid-js/web";import{insert as I}from"solid-js/web";import{createEffect as Re,createSignal as Fe,onCleanup as Le}from"solid-js";import{getAllRegistries as er}from"@inkandswitch/patchwork-plugins";var Gt=_e('<div class=debug-registry-toast><div class=debug-registry-toast__header><span class=debug-registry-toast__title>\u{1F527} Registry (<!>)</span><button class=debug-registry-toast__clear title="Clear all">\u2715</button></div><div class=debug-registry-toast__list>'),Zt=_e("<div class=debug-registry-toast__item><div class=debug-registry-toast__content><span class=debug-registry-toast__event-type></span><span class=debug-registry-toast__plugin-type>"),Qt=_e("<span class=debug-registry-toast__plugin-id>"),te="debugModal";function tr(){try{return localStorage.getItem(te)==="true"}catch{return!1}}function rr(e){try{e?localStorage.setItem(te,"true"):localStorage.removeItem(te)}catch{}}var or=["changed"];function nr(e={}){let{events:o=or}=e,[t,n]=Fe([]),[r,i]=Fe(tr()),a=new Set,d=(s,l,f,p)=>{let m={id:crypto.randomUUID(),type:s,event:l,pluginId:f,pluginName:p,timestamp:Date.now()};n(c=>[m,...c].slice(0,50));let u=setTimeout(()=>{n(c=>c.filter(b=>b.id!==m.id)),a.delete(u)},5e3);a.add(u)},h=s=>{n(l=>l.filter(f=>f.id!==s))},g=()=>{n([])};return Re(()=>{if(!r()){n([]),a.forEach(p=>clearTimeout(p)),a.clear();return}let s=er(),l=[],f=new Map;s.forEach((p,m)=>{let u=p.on("registered",v=>{f.set(m,{id:v.id,name:v.name,action:"registered"}),o.includes("registered")&&d(m,"registered",v.id,v.name)});l.push(u);let c=p.on("loaded",v=>{f.set(m,{id:v.id,name:v.name,action:"loaded"}),o.includes("loaded")&&d(m,"loaded",v.id,v.name)});l.push(c);let b=p.on("removed",v=>{f.set(m,{id:v,action:"removed"}),o.includes("removed")&&d(m,"removed",v)});if(l.push(b),o.includes("changed")){let v=p.on("changed",()=>{let y=f.get(m);d(m,"changed",y?.id,y?.name),f.delete(m)});l.push(v)}}),Le(()=>{l.forEach(p=>p()),a.forEach(p=>clearTimeout(p)),a.clear()})}),Re(()=>{let s=l=>{l.key===te&&i(l.newValue==="true")};window.addEventListener("storage",s),Le(()=>window.removeEventListener("storage",s))}),{events:t,isEnabled:r,setIsEnabled:s=>{rr(s),i(s)},dismissEvent:h,clearAll:g}}function ar({events:e,onDismiss:o,onClearAll:t}){if(e.length===0)return null;let n=r=>{switch(r){case"registered":return"var(--debug-toast-registered, #3b82f6)";case"loaded":return"var(--debug-toast-loaded, #22c55e)";case"removed":return"var(--debug-toast-removed, #ef4444)";case"changed":return"var(--debug-toast-changed, #f59e0b)"}};return(()=>{var r=Gt(),i=r.firstChild,a=i.firstChild,d=a.firstChild,h=d.nextSibling,g=h.nextSibling,s=a.nextSibling,l=i.nextSibling;return I(a,()=>e.length,h),Kt(s,"click",t,!0),I(l,()=>e.map(f=>(()=>{var p=Zt(),m=p.firstChild,u=m.firstChild,c=u.nextSibling;return p.$$click=()=>o(f.id),I(u,()=>f.event),I(c,()=>f.type),I(m,(()=>{var b=Yt(()=>!!f.pluginId);return()=>b()&&(()=>{var v=Qt();return I(v,()=>f.pluginId),v})()})(),null),Xt(b=>Jt(p,"border-left-color",n(f.event))),p})())),r})()}Vt(["click"]);import{template as X}from"solid-js/web";import{delegateEvents as so}from"solid-js/web";import{getOwner as lo}from"solid-js/web";import{effect as ht}from"solid-js/web";import{setAttribute as co}from"solid-js/web";import{memo as pt}from"solid-js/web";import{insert as P}from"solid-js/web";import{createComponent as U}from"solid-js/web";import{For as go,Show as Ee}from"solid-js";import{template as Xe}from"solid-js/web";import{delegateEvents as Tr}from"solid-js/web";import{setAttribute as Dr}from"solid-js/web";import{insert as Ir}from"solid-js/web";import"solid-js/web";import{effect as Je}from"solid-js/web";import{use as Ye}from"solid-js/web";import{createComponent as Ce}from"solid-js/web";var Ne=Et(Ue(),1),He=(0,Ne.default)("cabbages");function We(e){return typeof e=="object"&&typeof e!=null&&Object.getPrototypeOf(e)==Object.prototype}var vr="\uFFFC";function Be(e,...o){if(o.length==0){He("empty patch");return}let[t,n,r]=o,i=[...t];for(;;){let a=i.shift();if(!i.length){let h=Array.isArray(n);if(We(e)&&h&&typeof a>"u"&&typeof n[0]=="string"){delete e[n[0]];return}if(h||typeof n=="number"){if(typeof a>"u")throw new Error("cant treat top level as a seq");a=a;let[g,s]=Array.isArray(n)?n:[n,n+1],l=Array.isArray(n)&&n.length==0;if(!l&&(g==null||s==null))throw new RangeError("it's all or nothing, no half measures");let f=typeof r>"u",p=g===s&&!f,m=l&&!f,u=!p&&!f&&!m;if(typeof e[a]>"u"){if(typeof e=="string")return;typeof r=="string"?e[a]="":e[a]=[]}let c=e[a];if(Array.isArray(c)){if(m){Array.isArray(r)?c.push(...r):c.push(r);return}if(p||u){Array.isArray(r)?c.splice(g,s-g,...r):c.splice(g,s-g,r);return}if(f){c.splice(g,s-g);return}throw new Error("i don't know what happened")}if(typeof c=="string"){if(m){e[a]=c+r;return}if(u||p){e[a]=c.slice(0,g)+(typeof r=="string"?r:r.map(b=>typeof b=="string"?b:vr).join(""))+c.slice(s);return}if(f){e[a]=c.slice(0,g)+c.slice(s);return}throw new Error("i don't know what happened")}if(We(c)&&h&&typeof n[0]=="string"){delete c[n[0]];return}throw new Error("not implemented")}if(typeof a>"u"){if(typeof n!="string")throw new Error(`can't index top-level map with ${n}`);typeof r>"u"?delete e[n]:e[n]=r;return}if(typeof e[a]>"u"&&(e[a]={}),h){let[g,s]=n;g!=null&&s!=null&&(typeof r>"u"&&g!=null&&s!=null?delete e[a][g||s]:e[a][g||s]=r)}else if(typeof r>"u")delete e[a][n];else{if(typeof e[a]=="string")return;e[a][n]=r}return}if(typeof a>"u")throw new Error("cant treat top level as a seq");a=a;let d=i[0];if(typeof e[a]>"u")if(typeof d=="string")e[a]={};else if(typeof d=="number")e[a]=[];else throw new Error(`can't go down this road ${e}.${a}.${d}`);e=e[a]}}function je(e,o){for(let t=0;t<o.length;t++)e=e?e[o[t]]:void 0;return e}function qe(e,o){let t=e.path.slice(0,-1),n=e.path[e.path.length-1];switch(e.action){case"mark":case"unmark":return He(`skipping ${e.action} because it doesn't affect material reality`),[];case"inc":if(o)return[t,n,je(o.patchInfo.after,e.path)];throw new Error(`can't apply ${e.action} without payload argument`);case"conflict":if(o)return[t,n,je(o.patchInfo.after,e.path)];throw new Error(`can't apply ${e.action} without payload argument`);case"del":return typeof n=="string"?[t,n]:[t,[n,n+(e.length||1)]];case"insert":return[t,[n,n],structuredClone(e.values)];case"splice":return[t,[n,n],[e.value]];case"put":return[t,n,structuredClone(e.value)]}}function ne(e){return o=>{for(let t of e.patches)Be(o,...qe(t,e))}}import{createMemo as _r}from"solid-js";import{onCleanup as wr}from"solid-js";import{createStore as xr,produce as yr,reconcile as Ve}from"solid-js/store";var B=new WeakMap;function ae(e){if(wr(()=>{let i=B.get(e);i&&(i.refs--||i.cleanup())}),B.has(e)){let i=B.get(e);return i.refs++,i.store}let[o,t]=xr(structuredClone(e.doc()));B.set(e,{refs:0,store:o,cleanup(){e.off("change",n),e.off("delete",r),B.delete(e)}});function n(i){if(i.scopeReplaced){t(Ve(i.doc??{}));return}t(yr(ne(i)))}function r(){t(Ve({}))}return e.on("change",n),e.on("delete",r),e.whenReady().then(()=>{t(structuredClone(e.doc()))}),o}import{getOwner as jn,onCleanup as Nn,createSignal as Hn,untrack as Bn,sharedConfig as qn,onMount as Vn,DEV as Jn,equalFn as Xn}from"solid-js";import{isServer as Kn}from"solid-js/web";var L=e=>typeof e=="function"&&!e.length?e():e;function ie(e){return _r(()=>L(e)&&ae(L(e)))}import{createEffect as kr,createResource as Sr,useContext as $r}from"solid-js";import{createContext as Cr}from"solid-js";var se=Cr(null);function q(e,o){let t=$r(se);if(!o?.repo&&!t)throw new Error("use outside <RepoContext> requires options.repo");let n=o?.repo||t;function r(){if(o?.["~skipInitialValue"])return;let d=L(e);if(!d)return;let h=n.findWithProgress(d).peek();return h.state==="ready"?h.handle:void 0}let[i,{mutate:a}]=Sr(e,d=>n.findWithProgress(d).whenReady(),{initialValue:r()});return kr(()=>{L(e)||a()}),i}function le(e,o){let t=q(e,o);return[ie(t),t]}import{onCleanup as ha}from"solid-js";import{createSignal as ma}from"solid-js";import{createEffect as va,onCleanup as wa}from"solid-js";import{createSignal as ya}from"solid-js";import{useContext as Ta}from"solid-js";import{getType as Rr}from"@inkandswitch/patchwork-filesystem";import{getRegistry as Fr,isLoadedPlugin as Lr}from"@inkandswitch/patchwork-plugins";import{createEffect as Mr,createMemo as de,createSignal as ke,onCleanup as Or,onMount as Ge,Show as Ze}from"solid-js";var Ke=Xe("<span class=threepane__title-text>"),Ar=Xe("<input class=threepane__title-input type=text>");function Qe(e){let o,[t,n]=ke();return Ge(()=>{n(o.closest("repo-provider")?.repo)}),Ce(Ze,{get when(){return t()},get fallback(){return(()=>{var r=Ke(),i=o;return typeof i=="function"?Ye(i,r):o=r,r})()},children:r=>Ce(zr,{get docUrl(){return e.docUrl},get repo(){return r()}})})}function zr(e){let[o,t]=le(()=>e.docUrl(),{repo:e.repo}),n=Fr("patchwork:datatype"),[r,i]=ke(0);Ge(()=>{let u=n.on("changed",()=>i(c=>c+1));Or(u)});let a=de(()=>{let u=o();return u?Rr(u):void 0});Mr(()=>{let u=a();u&&n.load(u)});let d=de(()=>{r();let u=a();if(!u)return;let c=n.get(u);return c&&Lr(c)?c:void 0}),h=de(()=>{let u=o(),c=d();if(!(!u||!c))return c.module.getTitle(u)}),g=de(()=>!!t()&&typeof d()?.module.setTitle=="function"),[s,l]=ke(!1),f;function p(){g()&&(l(!0),queueMicrotask(()=>{f?.focus(),f?.select()}))}function m(u){if(!s()||(l(!1),!u))return;let c=f?.value.trim();if(!c||c===h())return;let b=t(),v=d()?.module.setTitle;!b||!v||b.change(y=>{v(y,c);let C=y["@patchwork"];C&&(C.title=c)})}return Ce(Ze,{get when(){return s()},get fallback(){return(()=>{var u=Ke();return u.$$click=p,Ir(u,()=>h()??"Untitled"),Je(c=>{var b=!!g(),v=g()?"Rename":void 0;return b!==c.e&&u.classList.toggle("threepane__title-text--editable",c.e=b),v!==c.t&&Dr(u,"title",c.t=v),c},{e:void 0,t:void 0}),u})()},get children(){var u=Ar();u.$$keydown=b=>{b.key==="Enter"?(b.preventDefault(),m(!0)):b.key==="Escape"&&(b.preventDefault(),m(!1))},u.addEventListener("blur",()=>m(!0));var c=f;return typeof c=="function"?Ye(c,u):f=u,Je(()=>u.value=h()??""),u}})}Tr(["keydown","click"]);import{template as J}from"solid-js/web";import{delegateEvents as Kr}from"solid-js/web";import{getOwner as Gr}from"solid-js/web";import{insert as V}from"solid-js/web";import{createComponent as z}from"solid-js/web";import{Show as Se}from"solid-js";import{template as ce}from"solid-js/web";import{delegateEvents as Pr}from"solid-js/web";import{setStyleProperty as Ur}from"solid-js/web";import{setAttribute as et}from"solid-js/web";import{insert as M}from"solid-js/web";import{memo as O}from"solid-js/web";import{effect as tt}from"solid-js/web";import{getOwner as Wr}from"solid-js/web";var jr=ce("<patchwork-view>",!0,!1,!1),Nr=ce("<div class=sidebar>"),rt=ce('<button class="sidebar-toggle sidebar-toggle--resizable"aria-label="Toggle or resize sidebar"title="Click to toggle, drag to resize">'),ot=ce('<button class="sidebar-toggle sidebar-toggle--resizable"aria-label="Expand sidebar"title="Click to expand, drag to resize">');function nt(e){let o=()=>`${e.isCollapsed()?0:e.width()}px`,t=()=>e.children!==void 0?e.children:e.toolId&&e.docUrl?(()=>{var r=jr();return r._$owner=Wr(),tt(i=>{var a=e.docUrl,d=e.toolId;return a!==i.e&&(r.docUrl=i.e=a),d!==i.t&&(r.toolId=i.t=d),i},{e:void 0,t:void 0}),r})():null,n=()=>e.canExpand?.()??!0;return(()=>{var r=Nr();return M(r,(()=>{var i=O(()=>e.side==="left"&&!e.isCollapsed());return()=>i()&&t()})(),null),M(r,(()=>{var i=O(()=>e.side==="left"&&!e.isCollapsed());return()=>i()&&(()=>{var a=rt();return a.$$mousedown=d=>e.onMouseDown(e.side,d),a.$$click=d=>e.onToggleClick(e.side,d),a})()})(),null),M(r,(()=>{var i=O(()=>!!(e.side==="left"&&e.isCollapsed()&&n()));return()=>i()&&(()=>{var a=ot();return a.$$mousedown=d=>e.onMouseDown(e.side,d),a.$$click=d=>e.onToggleClick(e.side,d),a})()})(),null),M(r,(()=>{var i=O(()=>e.side==="right"&&!e.isCollapsed());return()=>i()&&(()=>{var a=rt();return a.$$mousedown=d=>e.onMouseDown(e.side,d),a.$$click=d=>e.onToggleClick(e.side,d),a})()})(),null),M(r,(()=>{var i=O(()=>!!(e.side==="right"&&e.isCollapsed()&&n()));return()=>i()&&(()=>{var a=ot();return a.$$mousedown=d=>e.onMouseDown(e.side,d),a.$$click=d=>e.onToggleClick(e.side,d),a})()})(),null),M(r,(()=>{var i=O(()=>e.side==="right"&&!e.isCollapsed());return()=>i()&&t()})(),null),tt(i=>{var a=e.side,d=e.isCollapsed()?"":void 0,h=o();return a!==i.e&&et(r,"data-side",i.e=a),d!==i.t&&et(r,"data-collapsed",i.t=d),h!==i.a&&Ur(r,"width",i.a=h),i},{e:void 0,t:void 0,a:void 0}),r})()}Pr(["click","mousedown"]);import{template as it}from"solid-js/web";import{delegateEvents as Hr}from"solid-js/web";import{setAttribute as Br}from"solid-js/web";import{effect as qr}from"solid-js/web";import{insert as at}from"solid-js/web";import{createComponent as Vr}from"solid-js/web";import{For as Yr}from"solid-js";var Jr=it("<div role=tablist class=context-sidebar__tablist>"),Xr=it("<button type=button role=tab class=context-sidebar__tab>");function st(e){let o=()=>{let t=e.items().map(r=>r.id),n=e.selectedToolId();return n&&t.includes(n)?n:t[0]};return(()=>{var t=Jr();return at(t,Vr(Yr,{get each(){return e.items()},children:n=>(()=>{var r=Xr();return r.$$click=()=>e.setSelectedToolId(n.id),at(r,()=>n.name),qr(()=>Br(r,"data-active",o()===n.id?"":void 0)),r})()})),t})()}Hr(["click"]);var Zr=J('<div class=context-sidebar__tabs><button type=button class=context-sidebar__close title="Hide context sidebar"aria-label="Hide context sidebar">'),Qr=J("<div class=context-sidebar__content>"),eo=J("<div class=context-sidebar>"),to=J("<patchwork-view>",!0,!1,!1),ro=J('<svg xmlns=http://www.w3.org/2000/svg width=18 height=18 viewBox="0 0 24 24"fill=none stroke=var(--studio-chrome-line) stroke-width=1.75 stroke-linecap=round stroke-linejoin=round><rect width=18 height=18 x=3 y=3 rx=2></rect><path d="M15 3v18">');function lt(e){let o=H("context-tool"),t=()=>{let n=o().map(i=>i.id),r=e.selectedToolId();return r&&n.includes(r)?r:n[0]};return z(nt,{side:"right",get isCollapsed(){return e.isCollapsed},get width(){return e.width},get onMouseDown(){return e.onMouseDown},get onToggleClick(){return e.onToggleClick},get canExpand(){return e.canExpand},get children(){var n=eo();return V(n,z(Se,{get when(){return o().length},get children(){var r=Zr(),i=r.firstChild;return V(r,z(st,{items:o,get selectedToolId(){return e.selectedToolId},get setSelectedToolId(){return e.setSelectedToolId}}),i),i.$$click=()=>e.onCollapse(),V(i,z($e,{})),r}}),null),V(n,z(Se,{get when(){return!e.isCollapsed()},get children(){var r=Qr();return V(r,z(Se,{get when(){return t()},keyed:!0,children:i=>(()=>{var a=to();return a.component=i,a._$owner=Gr(),a})()})),r}}),null),n}})}function $e(){return ro()}Kr(["click"]);import{template as oo}from"solid-js/web";import{effect as dt}from"solid-js/web";import{getOwner as ct}from"solid-js/web";import{createComponent as no}from"solid-js/web";import{memo as ao}from"solid-js/web";import{Show as io}from"solid-js";var ut=oo("<patchwork-view>",!0,!1,!1),ft=e=>Array.isArray(e)?String(e[0]):String(e);function zi(e){return no(io,{get when(){return ao(()=>!!Array.isArray(e.slot))()?e.slot:!1},get fallback(){return(()=>{var o=ut();return o._$owner=ct(),dt(()=>o.component=String(e.slot)),o})()},children:o=>(()=>{var t=ut();return t._$owner=ct(),dt(n=>{var r=o()[1],i=o()[0];return r!==n.e&&(t.docUrl=n.e=r),i!==n.t&&(t.toolId=n.t=i),n},{e:void 0,t:void 0}),t})()})}var uo=X("<div class=threepane__title>"),fo=X("<div class=threepane__doctitle-tools>"),ho=X('<button type=button class=frame__sidebar-toggle title="Show context sidebar"aria-label="Show context sidebar">'),po=X("<div class=frame__topbar><div class=threepane__spacer>"),mo=X("<patchwork-view>",!0,!1,!1);function mt(e){let o=()=>e.toolSlots()??[];return(()=>{var t=po(),n=t.firstChild;return P(t,U(Ee,{get when(){return e.docUrl()},get children(){var r=uo();return P(r,U(Qe,{get docUrl(){return e.docUrl}})),r}}),n),P(t,U(Ee,{get when(){return pt(()=>!!e.docUrl())()&&o().length},get children(){var r=fo();return P(r,U(go,{get each(){return o()},children:i=>(()=>{var a=mo();return a._$owner=lo(),ht(d=>{var h=ft(i),g=e.docUrl();return h!==d.e&&(a.toolId=d.e=h),g!==d.t&&(a.docUrl=d.t=g),d},{e:void 0,t:void 0}),a})()})),r}}),null),P(t,U(Ee,{get when(){return pt(()=>!!e.hasContext())()&&e.isRightCollapsed()},get children(){var r=ho();return r.$$click=()=>e.onToggleRight(),co(r,"aria-pressed",!1),P(r,U($e,{})),r}}),null),ht(()=>t.classList.toggle("frame__topbar--left-collapsed",!!e.isLeftCollapsed())),t})()}so(["click"]);import{template as Te}from"solid-js/web";import{effect as bo}from"solid-js/web";import{getOwner as vo}from"solid-js/web";import{insert as gt}from"solid-js/web";import{memo as wo}from"solid-js/web";import{createComponent as xo}from"solid-js/web";import{use as yo}from"solid-js/web";import{Show as So}from"solid-js";var _o=Te("<div class=document-view>"),Co=Te("<patchwork-view>",!0,!1,!1),ko=Te("<div class=placeholder>Select a document in the sidebar");function bt({viewKey:e,selectedDocUrl:o,toolId:t,ref:n}){return(()=>{var r=_o(),i=n;return typeof i=="function"?yo(i,r):n=r,gt(r,xo(So,{get when(){return e()},keyed:!0,children:a=>(()=>{var d=Co();return d._$owner=vo(),bo(h=>{var g=o(),s=t();return g!==h.e&&(d.docUrl=h.e=g),s!==h.t&&(d.toolId=h.t=s),h},{e:void 0,t:void 0}),d})()}),null),gt(r,(()=>{var a=wo(()=>!o());return()=>a()&&ko()})(),null),r})()}var $o=De("<patchwork-view component=patchwork-draft-state-provider>",!0,!1,!1),Eo=De("<div class=frame__main-column><div class=frame__doc-column><div class=main-area>"),To=De("<patchwork-view component=patchwork-draft-overlay-provider><patchwork-view component=patchwork-comments-provider><patchwork-view component=patchwork-focus-provider>",!0,!1,!1),Ao=180,Ro=720,Fo=120,Lo=3;function yt(e){let[o,t]=S(e.initialRightCollapsed()),[n,r]=S(e.initialRightWidth());vt(xt(o,m=>{try{localStorage.setItem(k.rightCollapsed,String(m))}catch{}},{defer:!0})),vt(xt(n,m=>{try{localStorage.setItem(k.rightWidth,String(m))}catch{}},{defer:!0}));let[,i]=S(0),[,a]=S(!1),d=ye({setLeftSidebarWidth:i,setRightSidebarWidth:r,setIsSidebarCollapsed:a,setIsRightSidebarCollapsed:t,isLeftCollapsed:()=>e.isLeftCollapsed(),isRightCollapsed:o,minWidth:Ao,maxWidth:Ro,autoCloseWidth:Fo,dragThreshold:Lo});Io(()=>{let m=()=>t(!0);window.addEventListener(ee,m),Do(()=>window.removeEventListener(ee,m))});let[h,g]=ve(S(),{name:k.contextToolId}),[s,l]=S(),f=D("patchwork-draft-state-provider",s),p=()=>f()?s():void 0;return E(he,{get when(){return e.selectedDocUrl()},keyed:!0,children:m=>(()=>{var u=$o();return fe(l,u),u.docUrl=m,u._$owner=ue(),Y(u,E(he,{get when(){return p()},children:c=>E(Mo,{get host(){return c()},get setMainDocElement(){return e.setMainDocElement},get selectedDocUrl(){return e.selectedDocUrl},get selectedToolId(){return e.selectedToolId},get doctitleSlots(){return e.doctitleSlots},get isLeftCollapsed(){return e.isLeftCollapsed},isRightSidebarCollapsed:o,setIsRightSidebarCollapsed:t,rightSidebarWidth:n,get handleMouseDown(){return d.handleMouseDown},get handleToggleClick(){return d.handleToggleClick},selectedContextToolId:h,setSelectedContextToolId:g})})),u})()})}function Mo(e){let o=H("context-tool"),t=()=>o().length>0,n=wt(()=>e.selectedDocUrl()),[r,i]=S(),a=D("patchwork-draft-overlay-provider",r),[d,h]=S(),g=D("patchwork-comments-provider",d),[s,l]=S(),f=D("patchwork-focus-provider",s),p=wt(()=>a()&&g()&&f());return(()=>{var m=To(),u=m.firstChild,c=u.firstChild;return fe(i,m),m._$owner=ue(),fe(h,u),u._$owner=ue(),fe(l,c),c._$owner=ue(),Y(c,E(he,{get when(){return p()},get children(){var b=Eo(),v=b.firstChild,y=v.firstChild;return Y(v,E(mt,{get docUrl(){return e.selectedDocUrl},get toolSlots(){return e.doctitleSlots},get isLeftCollapsed(){return e.isLeftCollapsed},hasContext:t,get isRightCollapsed(){return e.isRightSidebarCollapsed},onToggleRight:()=>e.setIsRightSidebarCollapsed(C=>!C)}),y),Y(y,E(bt,{viewKey:n,get selectedDocUrl(){return e.selectedDocUrl},get toolId(){return e.selectedToolId},ref:C=>e.setMainDocElement?.(C)})),Y(b,E(he,{get when(){return t()},get children(){return E(lt,{get selectedToolId(){return e.selectedContextToolId},get setSelectedToolId(){return e.setSelectedContextToolId},get isCollapsed(){return e.isRightSidebarCollapsed},get width(){return e.rightSidebarWidth},get onMouseDown(){return e.handleMouseDown},get onToggleClick(){return e.handleToggleClick},onCollapse:()=>e.setIsRightSidebarCollapsed(!0)})}}),null),b}})),m})()}var pe=`:root,
1
+ import{a as be,b as Et}from"./chunk-FW4363Y4.js";var Oe=be((An,Me)=>{var A=1e3,R=A*60,F=R*60,T=F*24,ir=T*7,sr=T*365.25;Me.exports=function(e,o){o=o||{};var t=typeof e;if(t==="string"&&e.length>0)return lr(e);if(t==="number"&&isFinite(e))return o.long?cr(e):dr(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function lr(e){if(e=String(e),!(e.length>100)){var o=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(o){var t=parseFloat(o[1]),n=(o[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return t*sr;case"weeks":case"week":case"w":return t*ir;case"days":case"day":case"d":return t*T;case"hours":case"hour":case"hrs":case"hr":case"h":return t*F;case"minutes":case"minute":case"mins":case"min":case"m":return t*R;case"seconds":case"second":case"secs":case"sec":case"s":return t*A;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return t;default:return}}}}function dr(e){var o=Math.abs(e);return o>=T?Math.round(e/T)+"d":o>=F?Math.round(e/F)+"h":o>=R?Math.round(e/R)+"m":o>=A?Math.round(e/A)+"s":e+"ms"}function cr(e){var o=Math.abs(e);return o>=T?re(e,o,T,"day"):o>=F?re(e,o,F,"hour"):o>=R?re(e,o,R,"minute"):o>=A?re(e,o,A,"second"):e+" ms"}function re(e,o,t,n){var r=o>=t*1.5;return Math.round(e/t)+" "+n+(r?"s":"")}});var Pe=be((Rn,ze)=>{function hr(e){t.debug=t,t.default=t,t.coerce=f,t.disable=a,t.enable=r,t.enabled=d,t.humanize=Oe(),t.destroy=g,Object.keys(e).forEach(s=>{t[s]=e[s]}),t.names=[],t.skips=[],t.formatters={};function o(s){let l=0;for(let u=0;u<s.length;u++)l=(l<<5)-l+s.charCodeAt(u),l|=0;return t.colors[Math.abs(l)%t.colors.length]}t.selectColor=o;function t(s){let l,u=null,p,m;function h(...c){if(!h.enabled)return;let b=h,v=Number(new Date),y=v-(l||v);b.diff=y,b.prev=l,b.curr=v,l=v,c[0]=t.coerce(c[0]),typeof c[0]!="string"&&c.unshift("%O");let C=0;c[0]=c[0].replace(/%([a-zA-Z%])/g,(W,K)=>{if(W==="%%")return"%";C++;let j=t.formatters[K];if(typeof j=="function"){let ge=c[C];W=j.call(b,ge),c.splice(C,1),C--}return W}),t.formatArgs.call(b,c),(b.log||t.log).apply(b,c)}return h.namespace=s,h.useColors=t.useColors(),h.color=t.selectColor(s),h.extend=n,h.destroy=t.destroy,Object.defineProperty(h,"enabled",{enumerable:!0,configurable:!1,get:()=>u!==null?u:(p!==t.namespaces&&(p=t.namespaces,m=t.enabled(s)),m),set:c=>{u=c}}),typeof t.init=="function"&&t.init(h),h}function n(s,l){let u=t(this.namespace+(typeof l>"u"?":":l)+s);return u.log=this.log,u}function r(s){t.save(s),t.namespaces=s,t.names=[],t.skips=[];let l=(typeof s=="string"?s:"").trim().replace(/\s+/g,",").split(",").filter(Boolean);for(let u of l)u[0]==="-"?t.skips.push(u.slice(1)):t.names.push(u)}function i(s,l){let u=0,p=0,m=-1,h=0;for(;u<s.length;)if(p<l.length&&(l[p]===s[u]||l[p]==="*"))l[p]==="*"?(m=p,h=u,p++):(u++,p++);else if(m!==-1)p=m+1,h++,u=h;else return!1;for(;p<l.length&&l[p]==="*";)p++;return p===l.length}function a(){let s=[...t.names,...t.skips.map(l=>"-"+l)].join(",");return t.enable(""),s}function d(s){for(let l of t.skips)if(i(s,l))return!1;for(let l of t.names)if(i(s,l))return!0;return!1}function f(s){return s instanceof Error?s.stack||s.message:s}function g(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return t.enable(t.load()),t}ze.exports=hr});var Ue=be((_,oe)=>{_.formatArgs=fr;_.save=pr;_.load=mr;_.useColors=ur;_.storage=gr();_.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();_.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function ur(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let e;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(e=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(e[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function fr(e){if(e[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+e[0]+(this.useColors?"%c ":" ")+"+"+oe.exports.humanize(this.diff),!this.useColors)return;let o="color: "+this.color;e.splice(1,0,o,"color: inherit");let t=0,n=0;e[0].replace(/%[a-zA-Z%]/g,r=>{r!=="%%"&&(t++,r==="%c"&&(n=t))}),e.splice(n,0,o)}_.log=console.debug||console.log||(()=>{});function pr(e){try{e?_.storage.setItem("debug",e):_.storage.removeItem("debug")}catch{}}function mr(){let e;try{e=_.storage.getItem("debug")||_.storage.getItem("DEBUG")}catch{}return!e&&typeof process<"u"&&"env"in process&&(e=process.env.DEBUG),e}function gr(){try{return localStorage}catch{}}oe.exports=Pe()(_);var{formatters:br}=oe.exports;br.j=function(e){try{return JSON.stringify(e)}catch(o){return"[UnexpectedJSONParseError]: "+o.message}}});import{template as St}from"solid-js/web";import{createComponent as zo}from"solid-js/web";import{setAttribute as Po}from"solid-js/web";import{effect as Uo}from"solid-js/web";import{insert as $t}from"solid-js/web";import{getOwner as Wo}from"solid-js/web";import{createMemo as Ct}from"solid-js";import{createStore as Ho,reconcile as Bo}from"solid-js/store";import{render as qo}from"solid-js/web";import{template as De}from"solid-js/web";import{insert as Y}from"solid-js/web";import{getOwner as he}from"solid-js/web";import{use as ue}from"solid-js/web";import{createComponent as E}from"solid-js/web";import{createUniqueId as Tt,untrack as Ie}from"solid-js";import{isServer as Dt,isDev as Ae}from"solid-js/web";import{reconcile as It}from"solid-js/store";function ve(e,o={}){let t=o.storage||globalThis.localStorage,n=o.name||`storage-${Tt()}`;if(!t)return Object.assign(e,{2:null});let r=o.storageOptions,i=o.serialize||JSON.stringify.bind(JSON),a=o.deserialize||JSON.parse.bind(JSON),d=t.getItem(n,r),f=typeof e[0]=="function"?s=>{try{let l=a(s);e[1](()=>l)}catch(l){Ae&&console.warn(l)}}:s=>{try{let l=a(s);e[1](It(l))}catch(l){Ae&&console.warn(l)}},g=!0;if(d instanceof Promise?d.then(s=>g&&s&&f(s)):d&&f(d),typeof o.sync?.[0]=="function"){let s=typeof e[0]=="function"?e[0]:()=>e[0];o.sync[0](l=>{l.key!==n||!Dt&&(l.url||globalThis.location.href)!==globalThis.location.href||l.newValue===i(Ie(s))||f(l.newValue)})}return Object.assign([],e,{1:typeof e[0]=="function"?s=>{let l=e[1](s),u=s!=null?i(l):s;return o.sync?.[1](n,u),u!=null?t.setItem(n,u,r):t.removeItem(n,r),g=!1,l}:(...s)=>{e[1](...s);let l=Ie(()=>i(e[0]));o.sync?.[1](n,l),t.setItem(n,l,r),g=!1},2:d})}import{createEffect as vt,createMemo as wt,createSignal as S,on as xt,onCleanup as Do,onMount as Io,Show as fe}from"solid-js";import{createEffect as G,createSignal as Z,on as Q}from"solid-js";var k={leftCollapsed:"patchwork:leftSidebarCollapsed",rightCollapsed:"patchwork:rightSidebarCollapsed",leftWidth:"patchwork:leftSidebarWidth",rightWidth:"patchwork:rightSidebarWidth",contextToolId:"patchwork:contextSidebarToolId"},ee="patchwork:collapse-context-sidebar",N=400;function we(e,o){let t=localStorage.getItem(e);return t?parseInt(t,10):o}function xe(e){return localStorage.getItem(e)==="true"}function At(){let[e,o]=Z(xe(k.leftCollapsed)),[t,n]=Z(xe(k.rightCollapsed)),[r,i]=Z(we(k.leftWidth,N)),[a,d]=Z(we(k.rightWidth,N));return G(Q(e,f=>{localStorage.setItem(k.leftCollapsed,String(f))})),G(Q(t,f=>{localStorage.setItem(k.rightCollapsed,String(f))})),G(Q(r,f=>{localStorage.setItem(k.leftWidth,String(f))})),G(Q(a,f=>{localStorage.setItem(k.rightWidth,String(f))})),{isSidebarCollapsed:e,setIsSidebarCollapsed:o,isRightSidebarCollapsed:t,setIsRightSidebarCollapsed:n,leftSidebarWidth:r,setLeftSidebarWidth:i,rightSidebarWidth:a,setRightSidebarWidth:d}}import{onCleanup as Rt,onMount as Ft}from"solid-js";function ye({setLeftSidebarWidth:e,setRightSidebarWidth:o,setIsSidebarCollapsed:t,setIsRightSidebarCollapsed:n,isLeftCollapsed:r,isRightCollapsed:i,minWidth:a,maxWidth:d,autoCloseWidth:f,dragThreshold:g}){let s=null,l=null,u=!1,p=null,m=(w,x)=>w==="left"?e(x):o(x),h=(w,x)=>w==="left"?t(x):n(x),c=w=>w==="left"?r():i(),b=(w,x)=>{if(x<f){c(w)||h(w,!0),p=null;return}c(w)&&h(w,!1);let $=Math.min(d,x);m(w,$),p=$},v=w=>{c(w)||p!==null&&p<a&&m(w,a)},y=null,C=w=>{document.body.setAttribute("data-sidebar-resizing",w),y=document.createElement("div"),y.style.cssText="position:fixed;inset:0;z-index:2147483647;cursor:col-resize;",document.body.appendChild(y)},me=()=>{s=null,l=null,document.body.style.userSelect="",document.body.removeAttribute("data-sidebar-resizing"),y?.remove(),y=null},W=(w,x)=>{x.preventDefault(),l={x:x.clientX,y:x.clientY},u=!1,p=null,s=w,document.body.style.userSelect="none"},K=()=>{let w=s,x=u;me(),w&&x&&v(w)},j=w=>{if(!s||!l)return;let x=Math.abs(w.clientX-l.x),$=Math.abs(w.clientY-l.y);!u&&(x>g||$>g)&&(u=!0,C(s)),s==="left"?b("left",w.clientX):s==="right"&&b("right",window.innerWidth-w.clientX)},ge=(w,x)=>{if(u){x.preventDefault(),x.stopPropagation(),u=!1;return}w==="left"?t($=>!$):n($=>!$)};return Ft(()=>{document.addEventListener("mousemove",j),document.addEventListener("mouseup",K),Rt(()=>{document.removeEventListener("mousemove",j),document.removeEventListener("mouseup",K),s&&me()})}),{handleMouseDown:W,handleToggleClick:ge}}import{createEffect as Lt,createSignal as Mt,onCleanup as Ot}from"solid-js";var D=(e,o)=>{let[t,n]=Mt(!1);return Lt(()=>{let r=o();if(!r)return;n(!1);let i=a=>{a.detail?.componentId===e&&n(!0)};r.addEventListener("patchwork:mounted",i),Ot(()=>r.removeEventListener("patchwork:mounted",i))}),t};import{createEffect as zt,createSignal as Pt,onCleanup as Ut}from"solid-js";var Wt=5e3,jt=(e,o)=>{let[t,n]=Pt(!1);return zt(()=>{if(t())return;let r=e(),i=o();if(!r||!i)return;let a=f=>{let g=f.detail;g?.url&&g.url!==i||n(!0)};r.addEventListener("patchwork:mounted",a),r.addEventListener("patchwork:no-tool",a);let d=setTimeout(()=>n(!0),Wt);Ut(()=>{r.removeEventListener("patchwork:mounted",a),r.removeEventListener("patchwork:no-tool",a),clearTimeout(d)})}),t};import{getRegistry as Nt}from"@inkandswitch/patchwork-plugins";import{createMemo as Ht,createSignal as Bt,onCleanup as qt}from"solid-js";function H(e){let o=Nt("patchwork:component"),[t,n]=Bt(0),r=o.on("changed",()=>n(i=>i+1));return qt(r),Ht(()=>(t(),(o.all?.()??[]).filter(i=>(i.tags??[]).includes(e)).map(i=>({id:i.id,name:i.name||i.id,icon:i.icon})).sort((i,a)=>i.name.localeCompare(a.name))))}import{template as _e}from"solid-js/web";import{delegateEvents as Vt}from"solid-js/web";import{setStyleProperty as Jt}from"solid-js/web";import{effect as Xt}from"solid-js/web";import{memo as Yt}from"solid-js/web";import{addEventListener as Kt}from"solid-js/web";import{insert as I}from"solid-js/web";import{createEffect as Re,createSignal as Fe,onCleanup as Le}from"solid-js";import{getAllRegistries as er}from"@inkandswitch/patchwork-plugins";var Gt=_e('<div class=debug-registry-toast><div class=debug-registry-toast__header><span class=debug-registry-toast__title>\u{1F527} Registry (<!>)</span><button class=debug-registry-toast__clear title="Clear all">\u2715</button></div><div class=debug-registry-toast__list>'),Zt=_e("<div class=debug-registry-toast__item><div class=debug-registry-toast__content><span class=debug-registry-toast__event-type></span><span class=debug-registry-toast__plugin-type>"),Qt=_e("<span class=debug-registry-toast__plugin-id>"),te="debugModal";function tr(){try{return localStorage.getItem(te)==="true"}catch{return!1}}function rr(e){try{e?localStorage.setItem(te,"true"):localStorage.removeItem(te)}catch{}}var or=["changed"];function nr(e={}){let{events:o=or}=e,[t,n]=Fe([]),[r,i]=Fe(tr()),a=new Set,d=(s,l,u,p)=>{let m={id:crypto.randomUUID(),type:s,event:l,pluginId:u,pluginName:p,timestamp:Date.now()};n(c=>[m,...c].slice(0,50));let h=setTimeout(()=>{n(c=>c.filter(b=>b.id!==m.id)),a.delete(h)},5e3);a.add(h)},f=s=>{n(l=>l.filter(u=>u.id!==s))},g=()=>{n([])};return Re(()=>{if(!r()){n([]),a.forEach(p=>clearTimeout(p)),a.clear();return}let s=er(),l=[],u=new Map;s.forEach((p,m)=>{let h=p.on("registered",v=>{u.set(m,{id:v.id,name:v.name,action:"registered"}),o.includes("registered")&&d(m,"registered",v.id,v.name)});l.push(h);let c=p.on("loaded",v=>{u.set(m,{id:v.id,name:v.name,action:"loaded"}),o.includes("loaded")&&d(m,"loaded",v.id,v.name)});l.push(c);let b=p.on("removed",v=>{u.set(m,{id:v,action:"removed"}),o.includes("removed")&&d(m,"removed",v)});if(l.push(b),o.includes("changed")){let v=p.on("changed",()=>{let y=u.get(m);d(m,"changed",y?.id,y?.name),u.delete(m)});l.push(v)}}),Le(()=>{l.forEach(p=>p()),a.forEach(p=>clearTimeout(p)),a.clear()})}),Re(()=>{let s=l=>{l.key===te&&i(l.newValue==="true")};window.addEventListener("storage",s),Le(()=>window.removeEventListener("storage",s))}),{events:t,isEnabled:r,setIsEnabled:s=>{rr(s),i(s)},dismissEvent:f,clearAll:g}}function ar({events:e,onDismiss:o,onClearAll:t}){if(e.length===0)return null;let n=r=>{switch(r){case"registered":return"var(--debug-toast-registered, #3b82f6)";case"loaded":return"var(--debug-toast-loaded, #22c55e)";case"removed":return"var(--debug-toast-removed, #ef4444)";case"changed":return"var(--debug-toast-changed, #f59e0b)"}};return(()=>{var r=Gt(),i=r.firstChild,a=i.firstChild,d=a.firstChild,f=d.nextSibling,g=f.nextSibling,s=a.nextSibling,l=i.nextSibling;return I(a,()=>e.length,f),Kt(s,"click",t,!0),I(l,()=>e.map(u=>(()=>{var p=Zt(),m=p.firstChild,h=m.firstChild,c=h.nextSibling;return p.$$click=()=>o(u.id),I(h,()=>u.event),I(c,()=>u.type),I(m,(()=>{var b=Yt(()=>!!u.pluginId);return()=>b()&&(()=>{var v=Qt();return I(v,()=>u.pluginId),v})()})(),null),Xt(b=>Jt(p,"border-left-color",n(u.event))),p})())),r})()}Vt(["click"]);import{template as X}from"solid-js/web";import{delegateEvents as so}from"solid-js/web";import{getOwner as lo}from"solid-js/web";import{effect as ft}from"solid-js/web";import{setAttribute as co}from"solid-js/web";import{memo as pt}from"solid-js/web";import{insert as P}from"solid-js/web";import{createComponent as U}from"solid-js/web";import{For as go,Show as Ee}from"solid-js";import{template as Xe}from"solid-js/web";import{delegateEvents as Tr}from"solid-js/web";import{setAttribute as Dr}from"solid-js/web";import{insert as Ir}from"solid-js/web";import"solid-js/web";import{effect as Je}from"solid-js/web";import{use as Ye}from"solid-js/web";import{createComponent as Ce}from"solid-js/web";var Ne=Et(Ue(),1),He=(0,Ne.default)("cabbages");function We(e){return typeof e=="object"&&typeof e!=null&&Object.getPrototypeOf(e)==Object.prototype}var vr="\uFFFC";function Be(e,...o){if(o.length==0){He("empty patch");return}let[t,n,r]=o,i=[...t];for(;;){let a=i.shift();if(!i.length){let f=Array.isArray(n);if(We(e)&&f&&typeof a>"u"&&typeof n[0]=="string"){delete e[n[0]];return}if(f||typeof n=="number"){if(typeof a>"u")throw new Error("cant treat top level as a seq");a=a;let[g,s]=Array.isArray(n)?n:[n,n+1],l=Array.isArray(n)&&n.length==0;if(!l&&(g==null||s==null))throw new RangeError("it's all or nothing, no half measures");let u=typeof r>"u",p=g===s&&!u,m=l&&!u,h=!p&&!u&&!m;if(typeof e[a]>"u"){if(typeof e=="string")return;typeof r=="string"?e[a]="":e[a]=[]}let c=e[a];if(Array.isArray(c)){if(m){Array.isArray(r)?c.push(...r):c.push(r);return}if(p||h){Array.isArray(r)?c.splice(g,s-g,...r):c.splice(g,s-g,r);return}if(u){c.splice(g,s-g);return}throw new Error("i don't know what happened")}if(typeof c=="string"){if(m){e[a]=c+r;return}if(h||p){e[a]=c.slice(0,g)+(typeof r=="string"?r:r.map(b=>typeof b=="string"?b:vr).join(""))+c.slice(s);return}if(u){e[a]=c.slice(0,g)+c.slice(s);return}throw new Error("i don't know what happened")}if(We(c)&&f&&typeof n[0]=="string"){delete c[n[0]];return}throw new Error("not implemented")}if(typeof a>"u"){if(typeof n!="string")throw new Error(`can't index top-level map with ${n}`);typeof r>"u"?delete e[n]:e[n]=r;return}if(typeof e[a]>"u"&&(e[a]={}),f){let[g,s]=n;g!=null&&s!=null&&(typeof r>"u"&&g!=null&&s!=null?delete e[a][g||s]:e[a][g||s]=r)}else if(typeof r>"u")delete e[a][n];else{if(typeof e[a]=="string")return;e[a][n]=r}return}if(typeof a>"u")throw new Error("cant treat top level as a seq");a=a;let d=i[0];if(typeof e[a]>"u")if(typeof d=="string")e[a]={};else if(typeof d=="number")e[a]=[];else throw new Error(`can't go down this road ${e}.${a}.${d}`);e=e[a]}}function je(e,o){for(let t=0;t<o.length;t++)e=e?e[o[t]]:void 0;return e}function qe(e,o){let t=e.path.slice(0,-1),n=e.path[e.path.length-1];switch(e.action){case"mark":case"unmark":return He(`skipping ${e.action} because it doesn't affect material reality`),[];case"inc":if(o)return[t,n,je(o.patchInfo.after,e.path)];throw new Error(`can't apply ${e.action} without payload argument`);case"conflict":if(o)return[t,n,je(o.patchInfo.after,e.path)];throw new Error(`can't apply ${e.action} without payload argument`);case"del":return typeof n=="string"?[t,n]:[t,[n,n+(e.length||1)]];case"insert":return[t,[n,n],structuredClone(e.values)];case"splice":return[t,[n,n],[e.value]];case"put":return[t,n,structuredClone(e.value)]}}function ne(e){return o=>{for(let t of e.patches)Be(o,...qe(t,e))}}import{createMemo as _r}from"solid-js";import{onCleanup as wr}from"solid-js";import{createStore as xr,produce as yr,reconcile as Ve}from"solid-js/store";var B=new WeakMap;function ae(e){if(wr(()=>{let i=B.get(e);i&&(i.refs--||i.cleanup())}),B.has(e)){let i=B.get(e);return i.refs++,i.store}let[o,t]=xr(structuredClone(e.doc()));B.set(e,{refs:0,store:o,cleanup(){e.off("change",n),e.off("delete",r),B.delete(e)}});function n(i){if(i.scopeReplaced){t(Ve(i.doc??{}));return}t(yr(ne(i)))}function r(){t(Ve({}))}return e.on("change",n),e.on("delete",r),e.whenReady().then(()=>{t(structuredClone(e.doc()))}),o}import{getOwner as jn,onCleanup as Nn,createSignal as Hn,untrack as Bn,sharedConfig as qn,onMount as Vn,DEV as Jn,equalFn as Xn}from"solid-js";import{isServer as Kn}from"solid-js/web";var L=e=>typeof e=="function"&&!e.length?e():e;function ie(e){return _r(()=>L(e)&&ae(L(e)))}import{createEffect as kr,createResource as Sr,useContext as $r}from"solid-js";import{createContext as Cr}from"solid-js";var se=Cr(null);function q(e,o){let t=$r(se);if(!o?.repo&&!t)throw new Error("use outside <RepoContext> requires options.repo");let n=o?.repo||t;function r(){if(o?.["~skipInitialValue"])return;let d=L(e);if(!d)return;let f=n.findWithProgress(d).peek();return f.state==="ready"?f.handle:void 0}let[i,{mutate:a}]=Sr(e,d=>n.findWithProgress(d).whenReady(),{initialValue:r()});return kr(()=>{L(e)||a()}),i}function le(e,o){let t=q(e,o);return[ie(t),t]}import{onCleanup as fa}from"solid-js";import{createSignal as ma}from"solid-js";import{createEffect as va,onCleanup as wa}from"solid-js";import{createSignal as ya}from"solid-js";import{useContext as Ta}from"solid-js";import{getType as Rr}from"@inkandswitch/patchwork-filesystem";import{getRegistry as Fr,isLoadedPlugin as Lr}from"@inkandswitch/patchwork-plugins";import{createEffect as Mr,createMemo as de,createSignal as ke,onCleanup as Or,onMount as Ge,Show as Ze}from"solid-js";var Ke=Xe("<span class=threepane__title-text>"),Ar=Xe("<input class=threepane__title-input type=text>");function Qe(e){let o,[t,n]=ke();return Ge(()=>{n(o.closest("repo-provider")?.repo)}),Ce(Ze,{get when(){return t()},get fallback(){return(()=>{var r=Ke(),i=o;return typeof i=="function"?Ye(i,r):o=r,r})()},children:r=>Ce(zr,{get docUrl(){return e.docUrl},get repo(){return r()}})})}function zr(e){let[o,t]=le(()=>e.docUrl(),{repo:e.repo}),n=Fr("patchwork:datatype"),[r,i]=ke(0);Ge(()=>{let h=n.on("changed",()=>i(c=>c+1));Or(h)});let a=de(()=>{let h=o();return h?Rr(h):void 0});Mr(()=>{let h=a();h&&n.load(h)});let d=de(()=>{r();let h=a();if(!h)return;let c=n.get(h);return c&&Lr(c)?c:void 0}),f=de(()=>{let h=o(),c=d();if(!(!h||!c))return c.module.getTitle(h)}),g=de(()=>!!t()&&typeof d()?.module.setTitle=="function"),[s,l]=ke(!1),u;function p(){g()&&(l(!0),queueMicrotask(()=>{u?.focus(),u?.select()}))}function m(h){if(!s()||(l(!1),!h))return;let c=u?.value.trim();if(!c||c===f())return;let b=t(),v=d()?.module.setTitle;!b||!v||b.change(y=>{v(y,c);let C=y["@patchwork"];C&&(C.title=c)})}return Ce(Ze,{get when(){return s()},get fallback(){return(()=>{var h=Ke();return h.$$click=p,Ir(h,()=>f()??"Untitled"),Je(c=>{var b=!!g(),v=g()?"Rename":void 0;return b!==c.e&&h.classList.toggle("threepane__title-text--editable",c.e=b),v!==c.t&&Dr(h,"title",c.t=v),c},{e:void 0,t:void 0}),h})()},get children(){var h=Ar();h.$$keydown=b=>{b.key==="Enter"?(b.preventDefault(),m(!0)):b.key==="Escape"&&(b.preventDefault(),m(!1))},h.addEventListener("blur",()=>m(!0));var c=u;return typeof c=="function"?Ye(c,h):u=h,Je(()=>h.value=f()??""),h}})}Tr(["keydown","click"]);import{template as J}from"solid-js/web";import{delegateEvents as Kr}from"solid-js/web";import{getOwner as Gr}from"solid-js/web";import{insert as V}from"solid-js/web";import{createComponent as z}from"solid-js/web";import{Show as Se}from"solid-js";import{template as ce}from"solid-js/web";import{delegateEvents as Pr}from"solid-js/web";import{setStyleProperty as Ur}from"solid-js/web";import{setAttribute as et}from"solid-js/web";import{insert as M}from"solid-js/web";import{memo as O}from"solid-js/web";import{effect as tt}from"solid-js/web";import{getOwner as Wr}from"solid-js/web";var jr=ce("<patchwork-view>",!0,!1,!1),Nr=ce("<div class=sidebar>"),rt=ce('<button class="sidebar-toggle sidebar-toggle--resizable"aria-label="Toggle or resize sidebar"title="Click to toggle, drag to resize">'),ot=ce('<button class="sidebar-toggle sidebar-toggle--resizable"aria-label="Expand sidebar"title="Click to expand, drag to resize">');function nt(e){let o=()=>`${e.isCollapsed()?0:e.width()}px`,t=()=>e.children!==void 0?e.children:e.toolId&&e.docUrl?(()=>{var r=jr();return r._$owner=Wr(),tt(i=>{var a=e.docUrl,d=e.toolId;return a!==i.e&&(r.docUrl=i.e=a),d!==i.t&&(r.toolId=i.t=d),i},{e:void 0,t:void 0}),r})():null,n=()=>e.canExpand?.()??!0;return(()=>{var r=Nr();return M(r,(()=>{var i=O(()=>e.side==="left"&&!e.isCollapsed());return()=>i()&&t()})(),null),M(r,(()=>{var i=O(()=>e.side==="left"&&!e.isCollapsed());return()=>i()&&(()=>{var a=rt();return a.$$mousedown=d=>e.onMouseDown(e.side,d),a.$$click=d=>e.onToggleClick(e.side,d),a})()})(),null),M(r,(()=>{var i=O(()=>!!(e.side==="left"&&e.isCollapsed()&&n()));return()=>i()&&(()=>{var a=ot();return a.$$mousedown=d=>e.onMouseDown(e.side,d),a.$$click=d=>e.onToggleClick(e.side,d),a})()})(),null),M(r,(()=>{var i=O(()=>e.side==="right"&&!e.isCollapsed());return()=>i()&&(()=>{var a=rt();return a.$$mousedown=d=>e.onMouseDown(e.side,d),a.$$click=d=>e.onToggleClick(e.side,d),a})()})(),null),M(r,(()=>{var i=O(()=>!!(e.side==="right"&&e.isCollapsed()&&n()));return()=>i()&&(()=>{var a=ot();return a.$$mousedown=d=>e.onMouseDown(e.side,d),a.$$click=d=>e.onToggleClick(e.side,d),a})()})(),null),M(r,(()=>{var i=O(()=>e.side==="right"&&!e.isCollapsed());return()=>i()&&t()})(),null),tt(i=>{var a=e.side,d=e.isCollapsed()?"":void 0,f=o();return a!==i.e&&et(r,"data-side",i.e=a),d!==i.t&&et(r,"data-collapsed",i.t=d),f!==i.a&&Ur(r,"width",i.a=f),i},{e:void 0,t:void 0,a:void 0}),r})()}Pr(["click","mousedown"]);import{template as it}from"solid-js/web";import{delegateEvents as Hr}from"solid-js/web";import{setAttribute as Br}from"solid-js/web";import{effect as qr}from"solid-js/web";import{insert as at}from"solid-js/web";import{createComponent as Vr}from"solid-js/web";import{For as Yr}from"solid-js";var Jr=it("<div role=tablist class=context-sidebar__tablist>"),Xr=it("<button type=button role=tab class=context-sidebar__tab>");function st(e){let o=()=>{let t=e.items().map(r=>r.id),n=e.selectedToolId();return n&&t.includes(n)?n:t[0]};return(()=>{var t=Jr();return at(t,Vr(Yr,{get each(){return e.items()},children:n=>(()=>{var r=Xr();return r.$$click=()=>e.setSelectedToolId(n.id),at(r,()=>n.name),qr(()=>Br(r,"data-active",o()===n.id?"":void 0)),r})()})),t})()}Hr(["click"]);var Zr=J('<div class=context-sidebar__tabs><button type=button class=context-sidebar__close title="Hide context sidebar"aria-label="Hide context sidebar">'),Qr=J("<div class=context-sidebar__content>"),eo=J("<div class=context-sidebar>"),to=J("<patchwork-view>",!0,!1,!1),ro=J('<svg xmlns=http://www.w3.org/2000/svg width=18 height=18 viewBox="0 0 24 24"fill=none stroke=var(--studio-chrome-line) stroke-width=1.75 stroke-linecap=round stroke-linejoin=round><rect width=18 height=18 x=3 y=3 rx=2></rect><path d="M15 3v18">');function lt(e){let o=H("context-tool"),t=()=>{let n=o().map(i=>i.id),r=e.selectedToolId();return r&&n.includes(r)?r:n[0]};return z(nt,{side:"right",get isCollapsed(){return e.isCollapsed},get width(){return e.width},get onMouseDown(){return e.onMouseDown},get onToggleClick(){return e.onToggleClick},get canExpand(){return e.canExpand},get children(){var n=eo();return V(n,z(Se,{get when(){return o().length},get children(){var r=Zr(),i=r.firstChild;return V(r,z(st,{items:o,get selectedToolId(){return e.selectedToolId},get setSelectedToolId(){return e.setSelectedToolId}}),i),i.$$click=()=>e.onCollapse(),V(i,z($e,{})),r}}),null),V(n,z(Se,{get when(){return!e.isCollapsed()},get children(){var r=Qr();return V(r,z(Se,{get when(){return t()},keyed:!0,children:i=>(()=>{var a=to();return a.component=i,a._$owner=Gr(),a})()})),r}}),null),n}})}function $e(){return ro()}Kr(["click"]);import{template as oo}from"solid-js/web";import{effect as dt}from"solid-js/web";import{getOwner as ct}from"solid-js/web";import{createComponent as no}from"solid-js/web";import{memo as ao}from"solid-js/web";import{Show as io}from"solid-js";var ht=oo("<patchwork-view>",!0,!1,!1),ut=e=>Array.isArray(e)?String(e[0]):String(e);function zi(e){return no(io,{get when(){return ao(()=>!!Array.isArray(e.slot))()?e.slot:!1},get fallback(){return(()=>{var o=ht();return o._$owner=ct(),dt(()=>o.component=String(e.slot)),o})()},children:o=>(()=>{var t=ht();return t._$owner=ct(),dt(n=>{var r=o()[1],i=o()[0];return r!==n.e&&(t.docUrl=n.e=r),i!==n.t&&(t.toolId=n.t=i),n},{e:void 0,t:void 0}),t})()})}var ho=X("<div class=threepane__title>"),uo=X("<div class=threepane__doctitle-tools>"),fo=X('<button type=button class=frame__sidebar-toggle title="Show context sidebar"aria-label="Show context sidebar">'),po=X("<div class=frame__topbar><div class=threepane__spacer>"),mo=X("<patchwork-view>",!0,!1,!1);function mt(e){let o=()=>e.toolSlots()??[];return(()=>{var t=po(),n=t.firstChild;return P(t,U(Ee,{get when(){return e.docUrl()},get children(){var r=ho();return P(r,U(Qe,{get docUrl(){return e.docUrl}})),r}}),n),P(t,U(Ee,{get when(){return pt(()=>!!e.docUrl())()&&o().length},get children(){var r=uo();return P(r,U(go,{get each(){return o()},children:i=>(()=>{var a=mo();return a._$owner=lo(),ft(d=>{var f=ut(i),g=e.docUrl();return f!==d.e&&(a.toolId=d.e=f),g!==d.t&&(a.docUrl=d.t=g),d},{e:void 0,t:void 0}),a})()})),r}}),null),P(t,U(Ee,{get when(){return pt(()=>!!e.hasContext())()&&e.isRightCollapsed()},get children(){var r=fo();return r.$$click=()=>e.onToggleRight(),co(r,"aria-pressed",!1),P(r,U($e,{})),r}}),null),ft(()=>t.classList.toggle("frame__topbar--left-collapsed",!!e.isLeftCollapsed())),t})()}so(["click"]);import{template as Te}from"solid-js/web";import{effect as bo}from"solid-js/web";import{getOwner as vo}from"solid-js/web";import{insert as gt}from"solid-js/web";import{memo as wo}from"solid-js/web";import{createComponent as xo}from"solid-js/web";import{use as yo}from"solid-js/web";import{Show as So}from"solid-js";var _o=Te("<div class=document-view>"),Co=Te("<patchwork-view>",!0,!1,!1),ko=Te("<div class=placeholder>Select a document in the sidebar");function bt({viewKey:e,selectedDocUrl:o,toolId:t,ref:n}){return(()=>{var r=_o(),i=n;return typeof i=="function"?yo(i,r):n=r,gt(r,xo(So,{get when(){return e()},keyed:!0,children:a=>(()=>{var d=Co();return d._$owner=vo(),bo(f=>{var g=o(),s=t();return g!==f.e&&(d.docUrl=f.e=g),s!==f.t&&(d.toolId=f.t=s),f},{e:void 0,t:void 0}),d})()}),null),gt(r,(()=>{var a=wo(()=>!o());return()=>a()&&ko()})(),null),r})()}var $o=De("<patchwork-view component=patchwork-draft-state-provider>",!0,!1,!1),Eo=De("<div class=frame__main-column><div class=frame__doc-column><div class=main-area>"),To=De("<patchwork-view component=patchwork-draft-overlay-provider><patchwork-view component=patchwork-comments-provider><patchwork-view component=patchwork-focus-provider>",!0,!1,!1),Ao=180,Ro=720,Fo=120,Lo=3;function yt(e){let[o,t]=S(e.initialRightCollapsed()),[n,r]=S(e.initialRightWidth());vt(xt(o,m=>{try{localStorage.setItem(k.rightCollapsed,String(m))}catch{}},{defer:!0})),vt(xt(n,m=>{try{localStorage.setItem(k.rightWidth,String(m))}catch{}},{defer:!0}));let[,i]=S(0),[,a]=S(!1),d=ye({setLeftSidebarWidth:i,setRightSidebarWidth:r,setIsSidebarCollapsed:a,setIsRightSidebarCollapsed:t,isLeftCollapsed:()=>e.isLeftCollapsed(),isRightCollapsed:o,minWidth:Ao,maxWidth:Ro,autoCloseWidth:Fo,dragThreshold:Lo});Io(()=>{let m=()=>t(!0);window.addEventListener(ee,m),Do(()=>window.removeEventListener(ee,m))});let[f,g]=ve(S(),{name:k.contextToolId}),[s,l]=S(),u=D("patchwork-draft-state-provider",s),p=()=>u()?s():void 0;return E(fe,{get when(){return e.selectedDocUrl()},keyed:!0,children:m=>(()=>{var h=$o();return ue(l,h),h.docUrl=m,h._$owner=he(),Y(h,E(fe,{get when(){return p()},children:c=>E(Mo,{get host(){return c()},get setMainDocElement(){return e.setMainDocElement},get selectedDocUrl(){return e.selectedDocUrl},get selectedToolId(){return e.selectedToolId},get doctitleSlots(){return e.doctitleSlots},get isLeftCollapsed(){return e.isLeftCollapsed},isRightSidebarCollapsed:o,setIsRightSidebarCollapsed:t,rightSidebarWidth:n,get handleMouseDown(){return d.handleMouseDown},get handleToggleClick(){return d.handleToggleClick},selectedContextToolId:f,setSelectedContextToolId:g})})),h})()})}function Mo(e){let o=H("context-tool"),t=()=>o().length>0,n=wt(()=>e.selectedDocUrl()),[r,i]=S(),a=D("patchwork-draft-overlay-provider",r),[d,f]=S(),g=D("patchwork-comments-provider",d),[s,l]=S(),u=D("patchwork-focus-provider",s),p=wt(()=>a()&&g()&&u());return(()=>{var m=To(),h=m.firstChild,c=h.firstChild;return ue(i,m),m._$owner=he(),ue(f,h),h._$owner=he(),ue(l,c),c._$owner=he(),Y(c,E(fe,{get when(){return p()},get children(){var b=Eo(),v=b.firstChild,y=v.firstChild;return Y(v,E(mt,{get docUrl(){return e.selectedDocUrl},get toolSlots(){return e.doctitleSlots},get isLeftCollapsed(){return e.isLeftCollapsed},hasContext:t,get isRightCollapsed(){return e.isRightSidebarCollapsed},onToggleRight:()=>e.setIsRightSidebarCollapsed(C=>!C)}),y),Y(y,E(bt,{viewKey:n,get selectedDocUrl(){return e.selectedDocUrl},get toolId(){return e.selectedToolId},ref:C=>e.setMainDocElement?.(C)})),Y(b,E(fe,{get when(){return t()},get children(){return E(lt,{get selectedToolId(){return e.selectedContextToolId},get setSelectedToolId(){return e.setSelectedContextToolId},get isCollapsed(){return e.isRightSidebarCollapsed},get width(){return e.rightSidebarWidth},get onMouseDown(){return e.handleMouseDown},get onToggleClick(){return e.handleToggleClick},onCollapse:()=>e.setIsRightSidebarCollapsed(!0)})}}),null),b}})),m})()}var pe=`:root,
2
2
  :host,
3
3
  [theme] {
4
4
  --threepane-bg: var(--studio-fill, white);
@@ -965,5 +965,5 @@ import{a as be,b as Et}from"./chunk-FW4363Y4.js";var Oe=be((An,Me)=>{var A=1e3,R
965
965
  body[data-sidebar-resizing] .sidebar {
966
966
  transition: none;
967
967
  }
968
- `;function _t(){let e="patchwork-frame-styles",o=document.getElementById(e);if(o){o.textContent!==pe&&(o.textContent=pe);return}let t=document.createElement("style");t.id=e,t.textContent=pe,document.head.append(t)}var jo=St("<patchwork-view component=patchwork-isolation root-component=threepane-isolation-root shared-providers=patchwork:contact,patchwork:selected-doc style=display:contents><script type=application/json data-root-component-data>",!0,!1,!1),No=St("<div class=frame>");function Ms(e){let o=Ct(()=>{let n=new Set,r=e.selectedDocUrl();return r&&n.add(r),e.contactUrl&&n.add(e.contactUrl),[...n]}),t=Ct(()=>JSON.stringify({selectedDocUrl:e.selectedDocUrl(),selectedToolId:e.selectedToolId(),doctitleSlots:e.doctitleSlots(),isLeftCollapsed:e.isLeftCollapsed(),initialRightWidth:e.initialRightWidth(),initialRightCollapsed:e.initialRightCollapsed()}));return(()=>{var n=jo(),r=n.firstChild;return n._$owner=Wo(),$t(r,t),Uo(()=>Po(n,"automerge-allowlist",o().join(","))),n})()}function kt(e){if(!e?.textContent)return{};try{return JSON.parse(e.textContent)}catch(o){return console.error("[threepane-isolation-root] bad props JSON:",o),{}}}function Os(e){_t();let o=e.querySelector('script[type="application/json"]'),[t,n]=Ho(kt(o)),r=new MutationObserver(()=>{n(Bo(kt(o)))});o&&r.observe(o,{characterData:!0,childList:!0,subtree:!0});let i=qo(()=>(()=>{var a=No();return $t(a,zo(yt,{selectedDocUrl:()=>t.selectedDocUrl,selectedToolId:()=>t.selectedToolId,doctitleSlots:()=>t.doctitleSlots,isLeftCollapsed:()=>t.isLeftCollapsed??!1,initialRightWidth:()=>t.initialRightWidth??N,initialRightCollapsed:()=>t.initialRightCollapsed??!1})),a})(),e);return()=>{r.disconnect(),i()}}export{Ue as a,q as b,k as c,ee as d,N as e,we as f,xe as g,At as h,ye as i,jt as j,nr as k,ar as l,nt as m,ft as n,zi as o,bt as p,yt as q,_t as r,Ms as s,Os as t};
969
- //# sourceMappingURL=chunk-FX3MJIE5.js.map
968
+ `;function _t(){let e="patchwork-frame-styles",o=document.getElementById(e);if(o){o.textContent!==pe&&(o.textContent=pe);return}let t=document.createElement("style");t.id=e,t.textContent=pe,document.head.append(t)}var jo=St("<patchwork-view component=patchwork-isolation root-component=threepane-isolation-root shared-providers=patchwork:contact,patchwork:selected-doc,patchwork:worker-channel shared-tools=llm-config-tray style=display:contents><script type=application/json data-root-component-data>",!0,!1,!1),No=St("<div class=frame>");function Ms(e){let o=Ct(()=>{let n=new Set,r=e.selectedDocUrl();return r&&n.add(r),e.contactUrl&&n.add(e.contactUrl),[...n]}),t=Ct(()=>JSON.stringify({selectedDocUrl:e.selectedDocUrl(),selectedToolId:e.selectedToolId(),doctitleSlots:e.doctitleSlots(),isLeftCollapsed:e.isLeftCollapsed(),initialRightWidth:e.initialRightWidth(),initialRightCollapsed:e.initialRightCollapsed()}));return(()=>{var n=jo(),r=n.firstChild;return n._$owner=Wo(),$t(r,t),Uo(()=>Po(n,"automerge-allowlist",o().join(","))),n})()}function kt(e){if(!e?.textContent)return{};try{return JSON.parse(e.textContent)}catch(o){return console.error("[threepane-isolation-root] bad props JSON:",o),{}}}function Os(e){_t();let o=e.querySelector('script[type="application/json"]'),[t,n]=Ho(kt(o)),r=new MutationObserver(()=>{n(Bo(kt(o)))});o&&r.observe(o,{characterData:!0,childList:!0,subtree:!0});let i=qo(()=>(()=>{var a=No();return $t(a,zo(yt,{selectedDocUrl:()=>t.selectedDocUrl,selectedToolId:()=>t.selectedToolId,doctitleSlots:()=>t.doctitleSlots,isLeftCollapsed:()=>t.isLeftCollapsed??!1,initialRightWidth:()=>t.initialRightWidth??N,initialRightCollapsed:()=>t.initialRightCollapsed??!1})),a})(),e);return()=>{r.disconnect(),i()}}export{Ue as a,q as b,k as c,ee as d,N as e,we as f,xe as g,At as h,ye as i,jt as j,nr as k,ar as l,nt as m,ut as n,zi as o,bt as p,yt as q,_t as r,Ms as s,Os as t};
969
+ //# sourceMappingURL=chunk-DV7PRUYR.js.map