@inkandswitch/patchwork-pkg-base 0.0.135 → 0.0.136

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 (54) hide show
  1. package/module-settings-url +1 -1
  2. package/package.json +1 -1
  3. package/packages/account/dist/{ContactAvatar-IVYTJ7M4.js → ContactAvatar-IL5NSSA4.js} +2 -3
  4. package/packages/account/dist/{ContactAvatar-IVYTJ7M4.js.map → ContactAvatar-IL5NSSA4.js.map} +1 -1
  5. package/packages/account/dist/{ContactCursor-2FVKF5QA.js → ContactCursor-AAYWKZQ6.js} +2 -3
  6. package/packages/account/dist/{ContactCursor-2FVKF5QA.js.map → ContactCursor-AAYWKZQ6.js.map} +1 -1
  7. package/packages/account/dist/{ContactViewer-32NVB5LB.js → ContactViewer-XSBR3IGY.js} +1 -2
  8. package/packages/account/dist/{ContactViewer-32NVB5LB.js.map → ContactViewer-XSBR3IGY.js.map} +1 -1
  9. package/packages/account/dist/{InlineContactAvatar-6UAAJ73R.js → InlineContactAvatar-IWMTGVN7.js} +1 -2
  10. package/packages/account/dist/{InlineContactAvatar-6UAAJ73R.js.map → InlineContactAvatar-IWMTGVN7.js.map} +1 -1
  11. package/packages/account/dist/{chunk-L6JWPAD3.js → chunk-3744NRLE.js} +2 -25
  12. package/packages/account/dist/{chunk-L6JWPAD3.js.map → chunk-3744NRLE.js.map} +1 -1
  13. package/packages/account/dist/{datatype-Y52FEGOW.js → datatype-TO6U5DAY.js} +1 -3
  14. package/packages/account/dist/{datatype-Y52FEGOW.js.map → datatype-TO6U5DAY.js.map} +1 -1
  15. package/packages/account/dist/index.css +0 -507
  16. package/packages/account/dist/index.css.map +3 -3
  17. package/packages/account/dist/index.js +9 -22
  18. package/packages/account/dist/index.js.map +2 -2
  19. package/packages/account/dist/{styles-KCFZAQMN.js → styles-XU34T3AI.js} +1 -3
  20. package/packages/account/dist/{styles-KCFZAQMN.js.map → styles-XU34T3AI.js.map} +1 -1
  21. package/packages/account/package.json +1 -1
  22. package/packages/codemirror-markdown/dist/extensions/markdown.js +19 -5
  23. package/packages/codemirror-markdown/dist/extensions/markdown.js.map +2 -2
  24. package/packages/settings/dist/assets/Settings-Do_cRfv4.js +3 -0
  25. package/packages/settings/dist/assets/Settings-Do_cRfv4.js.map +1 -0
  26. package/packages/settings/dist/index.js +1 -1
  27. package/packages/settings/dist/index.js.map +1 -1
  28. package/packages/settings/package.json +1 -1
  29. package/packages/sideboard/dist/account-bar-F3MXGPYB.js +2 -0
  30. package/packages/sideboard/dist/chunk-4RJIKO65.js +2 -0
  31. package/packages/sideboard/dist/chunk-4RJIKO65.js.map +7 -0
  32. package/packages/sideboard/dist/index.js +1 -1
  33. package/packages/sideboard/dist/sideboard/sideboard.js +1 -1
  34. package/packages/threepane/dist/IsolatedDocumentArea-GDW25K5U.js +2 -0
  35. package/packages/threepane/dist/PatchworkFrame-Y342MRR3.js +2 -0
  36. package/packages/threepane/dist/PatchworkFrame-Y342MRR3.js.map +7 -0
  37. package/packages/threepane/dist/{chunk-UJ7QHTY6.js → chunk-2HSAKXXA.js} +106 -7
  38. package/packages/threepane/dist/{chunk-UJ7QHTY6.js.map → chunk-2HSAKXXA.js.map} +2 -2
  39. package/packages/threepane/dist/index.js +1 -1
  40. package/plugin-registry-url +1 -1
  41. package/packages/account/dist/AccountPicker-SBCGXHRS.js +0 -7008
  42. package/packages/account/dist/AccountPicker-SBCGXHRS.js.map +0 -7
  43. package/packages/account/dist/chunk-5WRI5ZAA.js +0 -31
  44. package/packages/settings/dist/assets/FrameConfigurator-M-u9az7g.js +0 -3
  45. package/packages/settings/dist/assets/FrameConfigurator-M-u9az7g.js.map +0 -1
  46. package/packages/sideboard/dist/account-bar-6WTRIGGE.js +0 -2
  47. package/packages/sideboard/dist/chunk-JE5VBSXY.js +0 -2
  48. package/packages/sideboard/dist/chunk-JE5VBSXY.js.map +0 -7
  49. package/packages/threepane/dist/IsolatedDocumentArea-ZF6AC4GB.js +0 -2
  50. package/packages/threepane/dist/IsolatedDocumentArea-ZF6AC4GB.js.map +0 -7
  51. package/packages/threepane/dist/PatchworkFrame-SEJC7VST.js +0 -2
  52. package/packages/threepane/dist/PatchworkFrame-SEJC7VST.js.map +0 -7
  53. /package/packages/{account/dist/chunk-5WRI5ZAA.js.map → sideboard/dist/account-bar-F3MXGPYB.js.map} +0 -0
  54. /package/packages/{sideboard/dist/account-bar-6WTRIGGE.js.map → threepane/dist/IsolatedDocumentArea-GDW25K5U.js.map} +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/sideboard/account-bar.tsx"],
4
+ "sourcesContent": ["import { template as _$template } from \"solid-js/web\";\nimport { delegateEvents as _$delegateEvents } from \"solid-js/web\";\nimport { insert as _$insert } from \"solid-js/web\";\nimport { createComponent as _$createComponent } from \"solid-js/web\";\nimport { effect as _$effect } from \"solid-js/web\";\nimport { getOwner as _$getOwner } from \"solid-js/web\";\nvar _tmpl$ = /*#__PURE__*/_$template(`<button type=button class=\"account-bar__button account-bar__avatar\"title=Settings aria-label=Settings><patchwork-view tool-id=contact-avatar>`, true, false, false),\n _tmpl$2 = /*#__PURE__*/_$template(`<button type=button class=account-bar__button>Packages`),\n _tmpl$3 = /*#__PURE__*/_$template(`<footer class=account-bar>`);\nimport { makeDocumentProjection } from \"solid-automerge\";\nimport { Show } from \"solid-js\";\nimport { render } from \"solid-js/web\";\nimport { createOpenEvent } from \"./events.ts\";\nexport function AccountBar(props) {\n const doc = makeDocumentProjection(props.handle);\n const open = detail => props.element.dispatchEvent(createOpenEvent(detail));\n return (() => {\n var _el$ = _tmpl$3();\n _$insert(_el$, _$createComponent(Show, {\n get when() {\n return doc.contactUrl;\n },\n get children() {\n var _el$2 = _tmpl$(),\n _el$3 = _el$2.firstChild;\n _el$2.$$click = () => open({\n url: props.handle.url,\n toolId: \"settings\"\n });\n _el$3._$owner = _$getOwner();\n _$effect(() => _el$3.docUrl = doc.contactUrl);\n return _el$2;\n }\n }), null);\n _$insert(_el$, _$createComponent(Show, {\n get when() {\n return doc.moduleSettingsUrl;\n },\n get children() {\n var _el$4 = _tmpl$2();\n _el$4.$$click = () => open({\n url: doc.moduleSettingsUrl,\n toolId: \"packages\"\n });\n return _el$4;\n }\n }), null);\n return _el$;\n })();\n}\nexport function renderAccountBar(handle, element) {\n return render(() => _$createComponent(AccountBar, {\n handle: handle,\n get repo() {\n return element.repo;\n },\n element: element\n }), element);\n}\n_$delegateEvents([\"click\"]);"],
5
+ "mappings": "+CAAA,OAAS,YAAYA,MAAkB,eACvC,OAAS,kBAAkBC,MAAwB,eACnD,OAAS,UAAUC,MAAgB,eACnC,OAAS,mBAAmBC,MAAyB,eACrD,OAAS,UAAUC,MAAgB,eACnC,OAAS,YAAYC,MAAkB,eAKvC,OAAS,QAAAC,MAAY,WACrB,OAAS,UAAAC,MAAc,eALvB,IAAIC,EAAsBC,EAAW,gJAAiJ,GAAM,GAAO,EAAK,EACtMC,EAAuBD,EAAW,wDAAwD,EAC1FE,EAAuBF,EAAW,4BAA4B,EAKzD,SAASG,EAAWC,EAAO,CAChC,IAAMC,EAAMC,EAAuBF,EAAM,MAAM,EACzCG,EAAOC,GAAUJ,EAAM,QAAQ,cAAcK,EAAgBD,CAAM,CAAC,EAC1E,OAAQ,IAAM,CACZ,IAAIE,EAAOR,EAAQ,EACnB,OAAAS,EAASD,EAAME,EAAkBC,EAAM,CACrC,IAAI,MAAO,CACT,OAAOR,EAAI,UACb,EACA,IAAI,UAAW,CACb,IAAIS,EAAQf,EAAO,EACjBgB,EAAQD,EAAM,WAChB,OAAAA,EAAM,QAAU,IAAMP,EAAK,CACzB,IAAKH,EAAM,OAAO,IAClB,OAAQ,UACV,CAAC,EACDW,EAAM,QAAUC,EAAW,EAC3BC,EAAS,IAAMF,EAAM,OAASV,EAAI,UAAU,EACrCS,CACT,CACF,CAAC,EAAG,IAAI,EACRH,EAASD,EAAME,EAAkBC,EAAM,CACrC,IAAI,MAAO,CACT,OAAOR,EAAI,iBACb,EACA,IAAI,UAAW,CACb,IAAIa,EAAQjB,EAAQ,EACpB,OAAAiB,EAAM,QAAU,IAAMX,EAAK,CACzB,IAAKF,EAAI,kBACT,OAAQ,UACV,CAAC,EACMa,CACT,CACF,CAAC,EAAG,IAAI,EACDR,CACT,GAAG,CACL,CACO,SAASS,EAAiBC,EAAQC,EAAS,CAChD,OAAOC,EAAO,IAAMV,EAAkBT,EAAY,CAChD,OAAQiB,EACR,IAAI,MAAO,CACT,OAAOC,EAAQ,IACjB,EACA,QAASA,CACX,CAAC,EAAGA,CAAO,CACb,CACAE,EAAiB,CAAC,OAAO,CAAC",
6
+ "names": ["_$template", "_$delegateEvents", "_$insert", "_$createComponent", "_$effect", "_$getOwner", "Show", "render", "_tmpl$", "_$template", "_tmpl$2", "_tmpl$3", "AccountBar", "props", "doc", "makeDocumentProjection", "open", "detail", "createOpenEvent", "_el$", "_$insert", "_$createComponent", "Show", "_el$2", "_el$3", "_$getOwner", "_$effect", "_el$4", "renderAccountBar", "handle", "element", "render", "_$delegateEvents"]
7
+ }
@@ -1,2 +1,2 @@
1
- import"./chunk-FW4363Y4.js";async function r(){let e=new URL("./index.css",import.meta.url);return(await fetch(e)).text()}function n(e){let t="sideboard-styles",o=document.head.querySelector(`#${t}`)??document.createElement("style");Object.assign(o,{textContent:e,id:t}),document.head.append(o)}var a={id:"chee/document-list",type:"patchwork:tool",name:"Document List",supportedDatatypes:["folder"],icon:"FolderOpen",unlisted:!0,async load(){let[{renderDocumentListPanel:e},t]=await Promise.all([import("./document-list-panel-OKR5ALTE.js"),r()]);return(o,i)=>(n(t),e(o.url,i))}},c=[a,Object.assign({},a,{id:"folder-tree-view",name:"Folder Tree View",icon:"Tree",unlisted:!1}),{id:"chee/account-bar",type:"patchwork:tool",name:"Account Bar",supportedDatatypes:["account"],icon:"UserCircle",unlisted:!0,async load(){let[{renderAccountBar:e},t]=await Promise.all([import("./account-bar-6WTRIGGE.js"),r()]);return(o,i)=>(n(t),e(o,i))}},{id:"chee/sideboard",type:"patchwork:tool",tags:["sidebar-account"],name:"Sideboard",supportedDatatypes:["account"],icon:"FolderOpen",unlisted:!0,async load(){let[{renderSideboard:e},t]=await Promise.all([import("./sideboard/sideboard.js"),r()]);return(o,i)=>(n(t),e(o,i))}}];export{c as plugins};
1
+ import"./chunk-FW4363Y4.js";async function r(){let e=new URL("./index.css",import.meta.url);return(await fetch(e)).text()}function n(e){let t="sideboard-styles",o=document.head.querySelector(`#${t}`)??document.createElement("style");Object.assign(o,{textContent:e,id:t}),document.head.append(o)}var a={id:"chee/document-list",type:"patchwork:tool",name:"Document List",supportedDatatypes:["folder"],icon:"FolderOpen",unlisted:!0,async load(){let[{renderDocumentListPanel:e},t]=await Promise.all([import("./document-list-panel-OKR5ALTE.js"),r()]);return(o,i)=>(n(t),e(o.url,i))}},c=[a,Object.assign({},a,{id:"folder-tree-view",name:"Folder Tree View",icon:"Tree",unlisted:!1}),{id:"chee/account-bar",type:"patchwork:tool",name:"Account Bar",supportedDatatypes:["account"],icon:"UserCircle",unlisted:!0,async load(){let[{renderAccountBar:e},t]=await Promise.all([import("./account-bar-F3MXGPYB.js"),r()]);return(o,i)=>(n(t),e(o,i))}},{id:"chee/sideboard",type:"patchwork:tool",tags:["sidebar-account"],name:"Sideboard",supportedDatatypes:["account"],icon:"FolderOpen",unlisted:!0,async load(){let[{renderSideboard:e},t]=await Promise.all([import("./sideboard/sideboard.js"),r()]);return(o,i)=>(n(t),e(o,i))}}];export{c as plugins};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- import{a as i,b as a}from"../chunk-EQ26U6B2.js";import"../chunk-B2O2X2JP.js";import"../chunk-3A65VAIS.js";import"../chunk-PVIUDN4Q.js";import{a as d}from"../chunk-JE5VBSXY.js";import{a as m}from"../chunk-3Q7KVV6Y.js";import"../chunk-TCL6SLDB.js";import"../chunk-FW4363Y4.js";import{template as u}from"solid-js/web";import{insert as n}from"solid-js/web";import{createComponent as t}from"solid-js/web";import{Show as p}from"solid-js";import{render as g}from"solid-js/web";var s=u("<div class=sideboard>"),f=u('<aside class=document-list><nav class="document-list__doclist document-list-widget">');function _(e){let r=m(e.handle);return(()=>{var o=s();return n(o,t(p,{get when(){return r.rootFolderUrl},get fallback(){return(()=>{var l=f(),c=l.firstChild;return n(c,t(i,{depth:0})),l})()},get children(){return t(a,{get folderUrl(){return r.rootFolderUrl},get repo(){return e.repo},get element(){return e.element}})}}),null),n(o,t(d,{get handle(){return e.handle},get repo(){return e.repo},get element(){return e.element}}),null),o})()}function x(e,r){return g(()=>t(_,{handle:e,get repo(){return r.repo},element:r}),r)}export{_ as Sideboard,x as renderSideboard};
1
+ import{a as i,b as a}from"../chunk-EQ26U6B2.js";import"../chunk-B2O2X2JP.js";import"../chunk-3A65VAIS.js";import"../chunk-PVIUDN4Q.js";import{a as d}from"../chunk-4RJIKO65.js";import{a as m}from"../chunk-3Q7KVV6Y.js";import"../chunk-TCL6SLDB.js";import"../chunk-FW4363Y4.js";import{template as u}from"solid-js/web";import{insert as n}from"solid-js/web";import{createComponent as t}from"solid-js/web";import{Show as p}from"solid-js";import{render as g}from"solid-js/web";var s=u("<div class=sideboard>"),f=u('<aside class=document-list><nav class="document-list__doclist document-list-widget">');function _(e){let r=m(e.handle);return(()=>{var o=s();return n(o,t(p,{get when(){return r.rootFolderUrl},get fallback(){return(()=>{var l=f(),c=l.firstChild;return n(c,t(i,{depth:0})),l})()},get children(){return t(a,{get folderUrl(){return r.rootFolderUrl},get repo(){return e.repo},get element(){return e.element}})}}),null),n(o,t(d,{get handle(){return e.handle},get repo(){return e.repo},get element(){return e.element}}),null),o})()}function x(e,r){return g(()=>t(_,{handle:e,get repo(){return r.repo},element:r}),r)}export{_ as Sideboard,x as renderSideboard};
2
2
  //# sourceMappingURL=sideboard.js.map
@@ -0,0 +1,2 @@
1
+ import{s as a,t as b}from"./chunk-2HSAKXXA.js";import"./chunk-FW4363Y4.js";export{a as IsolatedDocumentArea,b as mountIsolationRoot};
2
+ //# sourceMappingURL=IsolatedDocumentArea-GDW25K5U.js.map
@@ -0,0 +1,2 @@
1
+ import{a as j,b as fe,c as q,d as O}from"./chunk-YERFWP5I.js";import{a as Fe,b as Y,c as ne,d as G,e as ie,f as ae,g as le,h as se,i as ce,j as de,k as ue,l as me,m as V,n as B,o as K,p as pe,q as he,r as ge,s as we}from"./chunk-2HSAKXXA.js";import{b as Oe}from"./chunk-FW4363Y4.js";import{template as S}from"solid-js/web";import{delegateEvents as st}from"solid-js/web";import{memo as ct}from"solid-js/web";import{setStyleProperty as ee}from"solid-js/web";import{setAttribute as te}from"solid-js/web";import{effect as I}from"solid-js/web";import{getOwner as A}from"solid-js/web";import{use as R}from"solid-js/web";import{insert as D}from"solid-js/web";import{createComponent as f}from"solid-js/web";import"@inkandswitch/patchwork-elements";import{parseAutomergeUrl as St}from"@automerge/automerge-repo/slim";import{subscribe as $t}from"@inkandswitch/patchwork-providers";import{template as J}from"solid-js/web";import{delegateEvents as Pe}from"solid-js/web";import{memo as Me}from"solid-js/web";import{insert as ve}from"solid-js/web";import{createComponent as F}from"solid-js/web";import{For as Ve,Show as X}from"solid-js";var We=J("<div class=threepane-widgets>"),He=J("<div class=threepane-widgets__empty><button type=button class=threepane-widgets__add>\uFF0B Add document list"),Ne=J("<div class=threepane-widget>");function ye(e){let n=()=>{let o=e.rootFolderUrl(),r=e.configHandle();!o||!r||r.change(t=>{t.sidebar.widgets.push([q,o])})};return(()=>{var o=We();return ve(o,F(X,{get when(){return e.ready()},get children(){return F(X,{get when(){return e.widgets().length},get fallback(){return F(X,{get when(){return Me(()=>!!e.rootFolderUrl())()&&e.configHandle()},get children(){var r=He(),t=r.firstChild;return t.$$click=n,r}})},get children(){return F(Ve,{get each(){return e.widgets()},children:r=>(()=>{var t=Ne();return ve(t,F(K,{slot:r})),t})()})}})}})),o})()}Pe(["click"]);import{template as be}from"solid-js/web";import{setAttribute as Be}from"solid-js/web";import{effect as Ke}from"solid-js/web";import{insert as _e}from"solid-js/web";import{createComponent as Q}from"solid-js/web";import{For as ze,Show as Ye}from"solid-js";var je=be("<div class=frame-tray>"),qe=be("<div class=frame-tray__item>");function De(e){return Q(Ye,{get when(){return e.slots().length},get children(){var n=je();return _e(n,Q(ze,{get each(){return B(e.slots())},children:o=>(()=>{var r=qe();return _e(r,Q(K,{slot:o})),Ke(()=>Be(r,"data-tray-id",V(o))),r})()})),n}})}import{createEffect as P,createMemo as kt,createSignal as T,onCleanup as x,onMount as Ae,Show as U}from"solid-js";import{Portal as Et,render as Ct}from"solid-js/web";import{createDocOfDatatype2 as Xe}from"@inkandswitch/patchwork-plugins";import{getRegistry as Ge}from"@inkandswitch/patchwork-plugins";function z(e){return Ge("patchwork:datatype").loadWhenReady(e)}var Je=new Set(["document-title","spacer"]);function Se(e){return e?[[q,e]]:[]}function Qe(e,n){if(!((e.version??0)>=1)){if(e.sidebar||(e.sidebar={widgets:[]}),n&&!e.sidebar.widgets?.length&&(e.sidebar.widgets=Se(n)),!e.tray)e.tray=j.slice();else{let o=B(e.tray);o.length!==e.tray.length&&(e.tray=o);let r=new Set(e.tray.map(t=>V(t)));for(let t of j)r.has(t)||(e.tray.push(t),r.add(t))}e.doctitle?.tools?.length||(e.doctitle={...e.doctitle,tools:fe.slice()}),!(!e.sidebar.widgets?.length&&!n)&&(e.version=1)}}async function $e(e,n){let o=e.doc()?.rootFolderUrl,r=e.doc()?.tools?.threepane;if(r){let s=await n.find(r);if((s.doc()?.version??0)>=1)return;s.change(h=>Qe(h,o));return}let t=await z("threepane:config");if(!t){console.warn("frame: threepane:config datatype never registered");return}if(e.doc()?.tools?.threepane)return;let i=e.doc(),c=(i?.documentToolbarToolIds??[]).filter(s=>!Je.has(s)),d=await Xe(t,n);d.change(s=>{c.length&&(s.doctitle.tools=c),s.sidebar.widgets=Se(i?.rootFolderUrl),s.tray||(s.tray=j.slice()),i?.rootFolderUrl?s.version=1:delete s.version}),e.change(s=>{s.tools||(s.tools={}),s.tools.threepane||(s.tools.threepane=d.url)})}var Ce=Oe(Fe(),1);import{createDocOfDatatype2 as Ze}from"@inkandswitch/patchwork-plugins";var C=(0,Ce.default)("patchwork:threepane:examples");async function Te(e,n){let o=e.doc();if(!o?.rootFolderUrl){C("skipped \u2014 account has no rootFolderUrl");return}if(o.exampleDocsSeededAt){C("skipped \u2014 already ran for this account at",new Date(o.exampleDocsSeededAt).toISOString());return}C("claiming marker on account",e.url),e.change(p=>{p.exampleDocsSeededAt||(p.exampleDocsSeededAt=Date.now())});let r=await n.find(o.rootFolderUrl),t=r.doc()?.docs?.length??0;if(t){C(`skipped \u2014 root folder already has ${t} doc(s); only fresh accounts are seeded`);return}let i=window.location.hostname.includes("gaios"),c=i?[]:await tt();if(C(i?"gaios examples":"bundle init scripts:",c),!i&&!c.length){C("skipped \u2014 no static module bundles to ask");return}let d=await z("folder");if(!d){C("folder datatype never registered; giving up");return}let s=await Ze(d,n,p=>{p.title="Examples"});if(i){let{seedGaiosExamples:p}=await import("./gaiosExamples-YDNQB35L.js");await p(n,s)}for(let p of c)try{await(await import(p)).default?.(n,s),C("ran init script",p)}catch(g){C("init script unavailable or failed",p,g)}let h=s.doc()?.docs?.length??0;if(!h){C("no bundle contributed any documents");return}r.change(p=>{p.docs.unshift({name:"Examples",type:"folder",url:s.url})}),C(`seeded ${h} document(s) into Examples folder`,s.url)}var ke="https://patchwork-tools.netlify.app/init.js",Ee="https://patchwork-base.netlify.app/init.js";function et(){return document.documentElement.getAttribute("data-examples")==="site"}async function tt(){let e=et(),n=window.patchwork?.packages;if(!n?.urls)return e?[]:[Ee,ke];await n.doneLoading;let o=Object.values(n.urls).filter(t=>typeof t=="string"&&!t.startsWith("automerge:")).map(t=>new URL("init.js",new URL(t,document.baseURI)).href);if(e)return[...new Set(o)];let r=o.length?[]:[Ee];return[...new Set([...o,...r,ke])]}var Ue="patchwork:add-to-sidebar";function ot(e,n){e.docs||(e.docs=[]);let o=e.docs,r=o.findIndex(t=>t.url===n.url);if(r!==0){if(r>0){let{name:t,type:i}=o[r];o.splice(r,1),o.unshift({url:n.url,name:t,type:i});return}o.unshift({url:n.url,name:n.name,type:n.type})}}function rt(e,n){return new Promise(o=>{let r=()=>{let t=e.doc(),i=t&&n(t);i&&(e.off("change",r),o(i))};e.on("change",r),r()})}function Le(e,n,o){let r=t=>{let i=t.detail;if(!i?.url)return;t.preventDefault(),t.stopPropagation();let c=(async()=>{let d=await rt(o,h=>h.rootFolderUrl);(await n.find(d)).change(h=>ot(h,{url:i.url,name:i.name||"Untitled",type:i.type||"unknown"}))})();c.catch(d=>console.error("threepane: couldn't add to sidebar",d)),i.respondWith?.(c)};return e.addEventListener(Ue,r),()=>e.removeEventListener(Ue,r)}import{createEffect as nt,createMemo as it,createSignal as at,onCleanup as lt}from"solid-js";function Z(e){let[n,o]=at(0);return nt(()=>{let r=e();if(!r)return;let t=()=>o(i=>i+1);r.on("change",t),lt(()=>r.off("change",t))}),it(()=>(n(),e()?.doc()))}var dt=S("<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),ut=S("<div style=display:contents>"),mt=S("<div class=main-area>"),ft=S("<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),pt=S('<button type=button class="frame__sidebar-toggle frame__left-toggle">'),ht=S("<span class=threepane-account-bar__name>"),gt=S("<div class=threepane-sidebar><div class=threepane-sidebar__footer><footer class=threepane-account-bar><button type=button class=threepane-account-bar__me title=Settings aria-label=Settings aria-haspopup=menu>"),wt=S("<div class=frame__tray-dock>"),vt=S("<span class=threepane-account-bar__nobody>"),yt=S("<patchwork-view tool-id=contact-avatar>",!0,!1,!1),_t=S('<div class=threepane-account-menu role=menu aria-label="Account actions"><button type=button role=menuitem>Copy account key</button><button type=button role=menuitem>Sign out'),bt=S("<button type=button class=threepane-account-bar__button>Packages"),Dt=S('<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">'),Tt="tinyPatchworkAccountUrl",oe=(e,n)=>{let[o,r]=T(!1);return P(()=>{let t=n();if(!t)return;r(!1);let i=c=>{c.detail?.componentId===e&&r(!0)};t.addEventListener("patchwork:mounted",i),x(()=>t.removeEventListener("patchwork:mounted",i))}),o};function Re(e,n){e.dispatchEvent(new CustomEvent("patchwork:open-document",{detail:n,bubbles:!0,composed:!0}))}function Ut({handle:e,repo:n,...o}){ge();let r=e.url,[t,i]=T(),c=oe("patchwork-account-provider",t),[d,s]=T(),h=oe("patchwork-tool-storage-provider",d),[p,g]=T(),l=oe("patchwork-selected-doc-provider",p),a=kt(()=>l()&&c()&&h());return(()=>{var u=dt(),m=u.firstChild,k=m.firstChild,v=m.nextSibling,y=v.firstChild,b=y.firstChild,_=b.firstChild,w=_.firstChild;return D(m,f(U,{get when(){return o.isolation},get children(){return[" ","isolation is highly experimental. if things are broken, switch back to wild west."]}}),null),R(g,y),y._$owner=A(),R(i,b),b.docUrl=r,b._$owner=A(),R(s,_),_.docUrl=r,_._$owner=A(),w._$owner=A(),D(w,f(U,{get when(){return a()},get children(){return f(Lt,{handle:e,repo:n,get isolation(){return o.isolation}})}})),u})()}function Lt(e){let n=Y(()=>e.handle.url,{repo:e.repo});(async()=>{await $e(e.handle,e.repo),await Te(e.handle,e.repo)})().catch($=>{console.error("frame: account bootstrap failed",$)});let o=Z(n),r=e.handle.url,t=()=>o()?.tools?.threepane,i=Y(()=>t(),{repo:e.repo}),c=Z(i),d=()=>c()?.doctitle?.tools,s=()=>c()?.sidebar?.widgets??[],h=()=>c()?.tray??[],p=()=>o()?.rootFolderUrl,[g]=ne(()=>o()?.contactUrl,{repo:e.repo}),l=()=>{let $=g();return $?.type==="registered"?($.name??"").trim():""},a=ce(),u=de("left",{isCollapsed:a.isSidebarCollapsed,setCollapsed:a.setIsSidebarCollapsed,setWidth:a.setLeftSidebarWidth}),m,[k,v]=T(null),[y,b]=T(null);Ae(()=>{let $=$t(m,{type:"patchwork:selected-view"},H=>v(H));x($),x(Le(m,e.repo,e.handle))});let _=()=>k()?.url,w=()=>k()?.toolId??void 0,E=()=>le(G.rightWidth,ae),L=()=>se(G.rightCollapsed),[M,W]=T(),xe=ue(M,_),[re,Ie]=T(!1);return P(()=>{re()||(e.isolation||!_()||xe())&&Ie(!0)}),(()=>{var $=ut(),H=m;return typeof H=="function"?R(H,$):m=$,D($,f(At,{accountDocUrl:r,sidebarState:a,sidebarResize:u,sidebarWidgets:s,traySlots:h,configHandle:i,rootFolderUrl:p,widgetsReady:re,contactUrl:()=>o()?.contactUrl,contactName:l,moduleSettingsUrl:()=>o()?.moduleSettingsUrl,get isolation(){return e.isolation},onInterceptOpen:b,get children(){return f(U,{get when(){return _()},get fallback(){return(()=>{var N=mt();return D(N,f(pe,{viewKey:_,selectedDocUrl:_,toolId:w,ref:W})),N})()},get children(){return f(U,{get when(){return e.isolation},get fallback(){return f(he,{setMainDocElement:W,selectedDocUrl:_,selectedToolId:w,doctitleSlots:d,get isLeftCollapsed(){return a.isSidebarCollapsed},initialRightWidth:E,initialRightCollapsed:L})},get children(){return f(we,{get contactUrl(){return o()?.contactUrl},selectedDocUrl:_,selectedToolId:w,doctitleSlots:d,get isLeftCollapsed(){return a.isSidebarCollapsed},initialRightWidth:E,initialRightCollapsed:L})}})}})}}),null),D($,f(U,{get when(){return y()},children:N=>f(Rt,{get view(){return N()},onClose:()=>b(null)})}),null),$})()}function Rt(e){let[n,o]=T(e.view.toolId??void 0);P(()=>o(e.view.toolId??void 0));let r;return Ae(()=>{let t=d=>{d.key==="Escape"&&e.onClose()};window.addEventListener("keydown",t),x(()=>window.removeEventListener("keydown",t));let i=r;if(!i)return;let c=d=>{let{url:s,toolId:h}=d.detail;s&&(d.stopPropagation(),o(h??void 0))};i.addEventListener("patchwork:open-document",c),x(()=>i.removeEventListener("patchwork:open-document",c))}),(()=>{var t=ft(),i=t.firstChild,c=i.firstChild,d=c.firstChild,s=c.nextSibling,h=s.firstChild;t.$$click=()=>e.onClose(),i.$$click=g=>g.stopPropagation();var p=r;return typeof p=="function"?R(p,i):r=i,d._$owner=A(),h._$owner=A(),I(g=>{var l=e.view.url,a=e.view.url,u=n();return l!==g.e&&(d.docUrl=g.e=l),a!==g.t&&(h.docUrl=g.t=a),u!==g.a&&(h.toolId=g.a=u),g},{e:void 0,t:void 0,a:void 0}),t})()}function At(e){let n=e.sidebarState.isSidebarCollapsed,o=()=>e.contactName?.()??"",[r,t]=T(),i=()=>`account:${encodeURIComponent(o())}/${St(e.accountDocUrl).documentId}`;P(()=>{if(!r())return;let l=u=>{u.target?.closest(".threepane-account-menu")||t(void 0)},a=u=>{u.key==="Escape"&&t(void 0)};document.addEventListener("pointerdown",l,!0),document.addEventListener("keydown",a),x(()=>{document.removeEventListener("pointerdown",l,!0),document.removeEventListener("keydown",a)})});function c(l){l.preventDefault(),t({x:Math.max(4,Math.min(l.clientX,window.innerWidth-184)),y:Math.max(4,Math.min(l.clientY,window.innerHeight-96))})}function d(){localStorage.removeItem(Tt),window.location.replace("/")}let s=()=>e.traySlots().length>0,[h,p]=T(),g;return P(()=>{let l=h();if(!l)return;let a=u=>{let{url:m,toolId:k}=u.detail,v=g;if(e.isolation&&m&&v&&u.composedPath().includes(v)){u.stopPropagation(),e.onInterceptOpen?.({url:m,toolId:k??null});return}l.getBoundingClientRect().width<=window.innerWidth*.75||(e.sidebarState.setIsSidebarCollapsed(!0),window.dispatchEvent(new CustomEvent(ie)))};l.addEventListener("patchwork:open-document",a),x(()=>l.removeEventListener("patchwork:open-document",a))}),[(()=>{var l=pt();return l.$$click=()=>e.sidebarState.setIsSidebarCollapsed(a=>!a),D(l,f(xt,{})),I(a=>{var u=n()?"Show sidebar":"Hide sidebar",m=n()?"Show sidebar":"Hide sidebar",k=!n();return u!==a.e&&te(l,"title",a.e=u),m!==a.t&&te(l,"aria-label",a.t=m),k!==a.a&&te(l,"aria-pressed",a.a=k),a},{e:void 0,t:void 0,a:void 0}),l})(),f(me,{side:"left",isCollapsed:n,get width(){return e.sidebarState.leftSidebarWidth},get onMouseDown(){return e.sidebarResize.handleMouseDown},get onToggleClick(){return e.sidebarResize.handleToggleClick},get children(){var l=gt(),a=l.firstChild,u=a.firstChild,m=u.firstChild;R(p,l),D(l,f(ye,{get widgets(){return e.sidebarWidgets},get configHandle(){return e.configHandle},get rootFolderUrl(){return e.rootFolderUrl},get ready(){return e.widgetsReady}}),a);var k=g;return typeof k=="function"?R(k,a):g=a,m.$$contextmenu=c,m.$$click=v=>Re(v.currentTarget,{url:e.accountDocUrl,toolId:"settings"}),D(m,f(U,{get when(){return e.contactUrl()},get fallback(){return vt()},children:v=>(()=>{var y=yt();return y._$owner=A(),I(()=>y.docUrl=v()),y})()}),null),D(m,f(U,{get when(){return o()},get children(){var v=ht();return D(v,o),v}}),null),D(u,f(U,{get when(){return r()},children:v=>f(Et,{get children(){var y=_t(),b=y.firstChild,_=b.nextSibling;return y.$$keydown=w=>{let E=[...w.currentTarget.querySelectorAll('[role="menuitem"]')],L=E.indexOf(document.activeElement),M=W=>E[(W+E.length)%E.length]?.focus();if(w.key==="ArrowDown")M(L+1);else if(w.key==="ArrowUp")M(L<0?E.length-1:L-1);else return;w.preventDefault()},b.$$click=()=>{navigator.clipboard.writeText(i()),t(void 0)},R(w=>queueMicrotask(()=>w.focus()),b),_.$$click=()=>{t(void 0),d()},I(w=>{var E=`${v().x}px`,L=`${v().y}px`;return E!==w.e&&ee(y,"left",w.e=E),L!==w.t&&ee(y,"top",w.t=L),w},{e:void 0,t:void 0}),y}})}),null),D(u,f(U,{get when(){return e.moduleSettingsUrl()},children:v=>(()=>{var y=bt();return y.$$click=b=>Re(b.currentTarget,{url:v(),toolId:"packages"}),y})()}),null),I(()=>l.classList.toggle("threepane-sidebar--has-tray",!!s())),l}}),f(U,{get when(){return s()},get children(){var l=wt();return D(l,f(De,{get slots(){return e.traySlots}})),I(a=>{var u=!!n(),m=`${e.sidebarState.leftSidebarWidth()}px`;return u!==a.e&&l.classList.toggle("frame__tray-dock--collapsed",a.e=u),m!==a.t&&ee(l,"width",a.t=m),a},{e:void 0,t:void 0}),l}}),ct(()=>e.children)]}function xt(){return Dt()}function Wo(e){return(n,o)=>Ct(()=>f(Ut,{handle:n,get repo(){return o.repo},isolation:e}),o)}st(["click","contextmenu","keydown"]);export{At as FrameLayout,Ut as PatchworkFrame,Wo as renderPatchworkFrame};
2
+ //# sourceMappingURL=PatchworkFrame-Y342MRR3.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", "../src/account/addToSidebar.ts", "../src/hooks/useHandleDoc.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(`<span class=threepane-account-bar__name>`),\n _tmpl$7 = /*#__PURE__*/_$template(`<div class=threepane-sidebar><div class=threepane-sidebar__footer><footer class=threepane-account-bar><button type=button class=threepane-account-bar__me title=Settings aria-label=Settings aria-haspopup=menu>`),\n _tmpl$8 = /*#__PURE__*/_$template(`<div class=frame__tray-dock>`),\n _tmpl$9 = /*#__PURE__*/_$template(`<span class=threepane-account-bar__nobody>`),\n _tmpl$0 = /*#__PURE__*/_$template(`<patchwork-view tool-id=contact-avatar>`, true, false, false),\n _tmpl$1 = /*#__PURE__*/_$template(`<div class=threepane-account-menu role=menu aria-label=\"Account actions\"><button type=button role=menuitem>Copy account key</button><button type=button role=menuitem>Sign out`),\n _tmpl$10 = /*#__PURE__*/_$template(`<button type=button class=threepane-account-bar__button>Packages`),\n _tmpl$11 = /*#__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, useDocument } from \"solid-automerge\";\nimport { parseAutomergeUrl } from \"@automerge/automerge-repo/slim\";\nimport { subscribe } from \"@inkandswitch/patchwork-providers\";\nimport { useSidebarState, useSidebarResize, useMainDocMounted, 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 { Portal, render } from \"solid-js/web\";\nimport { ensureThreepaneConfig } from \"./account/ensureThreepaneConfig\";\nimport { seedExampleDocuments } from \"./account/seedExampleDocuments\";\nimport { handleAddToSidebar } from \"./account/addToSidebar\";\nimport { ensureFrameStyles } from \"./ensureFrameStyles\";\nimport { useHandleDoc } from \"./hooks/useHandleDoc\";\nconst ACCOUNT_URL_STORAGE_KEY = \"tinyPatchworkAccountUrl\";\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 accountDoc = useHandleDoc(accountDocHandle);\n const accountDocUrl = props.handle.url;\n const threepaneUrl = () => accountDoc()?.tools?.[\"threepane\"];\n const threepaneConfigHandle = useDocHandle(() => threepaneUrl(), {\n repo: props.repo\n });\n const threepaneConfig = useHandleDoc(threepaneConfigHandle);\n const doctitleSlots = () => threepaneConfig()?.doctitle?.tools;\n const sidebarWidgets = () => threepaneConfig()?.sidebar?.widgets ?? [];\n const traySlots = () => threepaneConfig()?.tray ?? [];\n const rootFolderUrl = () => accountDoc()?.rootFolderUrl;\n const [contact] = useDocument(() => accountDoc()?.contactUrl, {\n repo: props.repo\n });\n const contactName = () => {\n const doc = contact();\n return doc?.type === \"registered\" ? (doc.name ?? \"\").trim() : \"\";\n };\n const sidebarState = useSidebarState();\n const sidebarResize = useSidebarResize(\"left\", {\n isCollapsed: sidebarState.isSidebarCollapsed,\n setCollapsed: sidebarState.setIsSidebarCollapsed,\n setWidth: sidebarState.setLeftSidebarWidth\n });\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 onCleanup(handleAddToSidebar(element, props.repo, props.handle));\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(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 contactName: contactName,\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}\nexport function FrameLayout(props) {\n const isCollapsed = props.sidebarState.isSidebarCollapsed;\n const myName = () => props.contactName?.() ?? \"\";\n const [accountMenu, setAccountMenu] = createSignal();\n const accountKey = () => `account:${encodeURIComponent(myName())}/${parseAutomergeUrl(props.accountDocUrl).documentId}`;\n createEffect(() => {\n if (!accountMenu()) return;\n const onPointerDown = event => {\n if (event.target?.closest(\".threepane-account-menu\")) return;\n setAccountMenu(void 0);\n };\n const onKeyDown = event => {\n if (event.key === \"Escape\") setAccountMenu(void 0);\n };\n document.addEventListener(\"pointerdown\", onPointerDown, true);\n document.addEventListener(\"keydown\", onKeyDown);\n onCleanup(() => {\n document.removeEventListener(\"pointerdown\", onPointerDown, true);\n document.removeEventListener(\"keydown\", onKeyDown);\n });\n });\n function showAccountMenu(event) {\n event.preventDefault();\n setAccountMenu({\n x: Math.max(4, Math.min(event.clientX, window.innerWidth - 184)),\n y: Math.max(4, Math.min(event.clientY, window.innerHeight - 96))\n });\n }\n function signOut() {\n localStorage.removeItem(ACCOUNT_URL_STORAGE_KEY);\n window.location.replace(\"/\");\n }\n const hasTray = () => props.traySlots().length > 0;\n const [sidebarContentEl, setSidebarContentEl] = createSignal();\n let footerEl;\n createEffect(() => {\n const el = sidebarContentEl();\n if (!el) return;\n const onOpen = event => {\n const {\n url,\n toolId\n } = event.detail;\n const footer = footerEl;\n if (props.isolation && url && footer && event.composedPath().includes(footer)) {\n event.stopPropagation();\n props.onInterceptOpen?.({\n url,\n toolId: toolId ?? null\n });\n return;\n }\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$7(),\n _el$17 = _el$16.firstChild,\n _el$18 = _el$17.firstChild,\n _el$19 = _el$18.firstChild;\n _$use(setSidebarContentEl, _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$3 = footerEl;\n typeof _ref$3 === \"function\" ? _$use(_ref$3, _el$17) : footerEl = _el$17;\n _el$19.$$contextmenu = showAccountMenu;\n _el$19.$$click = e => dispatchOpen(e.currentTarget, {\n url: props.accountDocUrl,\n toolId: \"settings\"\n });\n _$insert(_el$19, _$createComponent(Show, {\n get when() {\n return props.contactUrl();\n },\n get fallback() {\n return _tmpl$9();\n },\n children: contactUrl => (() => {\n var _el$23 = _tmpl$0();\n _el$23._$owner = _$getOwner();\n _$effect(() => _el$23.docUrl = contactUrl());\n return _el$23;\n })()\n }), null);\n _$insert(_el$19, _$createComponent(Show, {\n get when() {\n return myName();\n },\n get children() {\n var _el$20 = _tmpl$6();\n _$insert(_el$20, myName);\n return _el$20;\n }\n }), null);\n _$insert(_el$18, _$createComponent(Show, {\n get when() {\n return accountMenu();\n },\n children: position => _$createComponent(Portal, {\n get children() {\n var _el$24 = _tmpl$1(),\n _el$25 = _el$24.firstChild,\n _el$26 = _el$25.nextSibling;\n _el$24.$$keydown = event => {\n const items = [...event.currentTarget.querySelectorAll('[role=\"menuitem\"]')];\n const index = items.indexOf(document.activeElement);\n const focus = next => items[(next + items.length) % items.length]?.focus();\n if (event.key === \"ArrowDown\") focus(index + 1);else if (event.key === \"ArrowUp\") focus(index < 0 ? items.length - 1 : index - 1);else return;\n event.preventDefault();\n };\n _el$25.$$click = () => {\n navigator.clipboard.writeText(accountKey());\n setAccountMenu(void 0);\n };\n _$use(el => queueMicrotask(() => el.focus()), _el$25);\n _el$26.$$click = () => {\n setAccountMenu(void 0);\n signOut();\n };\n _$effect(_p$ => {\n var _v$9 = `${position().x}px`,\n _v$0 = `${position().y}px`;\n _v$9 !== _p$.e && _$setStyleProperty(_el$24, \"left\", _p$.e = _v$9);\n _v$0 !== _p$.t && _$setStyleProperty(_el$24, \"top\", _p$.t = _v$0);\n return _p$;\n }, {\n e: undefined,\n t: undefined\n });\n return _el$24;\n }\n })\n }), null);\n _$insert(_el$18, _$createComponent(Show, {\n get when() {\n return props.moduleSettingsUrl();\n },\n children: moduleSettingsUrl => (() => {\n var _el$27 = _tmpl$10();\n _el$27.$$click = e => dispatchOpen(e.currentTarget, {\n url: moduleSettingsUrl(),\n toolId: \"packages\"\n });\n return _el$27;\n })()\n }), null);\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$21 = _tmpl$8();\n _$insert(_el$21, _$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$21.classList.toggle(\"frame__tray-dock--collapsed\", _p$.e = _v$7);\n _v$8 !== _p$.t && _$setStyleProperty(_el$21, \"width\", _p$.t = _v$8);\n return _p$;\n }, {\n e: undefined,\n t: undefined\n });\n return _el$21;\n }\n }), _$memo(() => props.children)];\n}\nfunction PanelLeftIcon() {\n return _tmpl$11();\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\", \"contextmenu\", \"keydown\"]);", "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\";\nimport { DOCUMENT_LIST_TOOL } from \"../datatypes\";\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, uniqueSlots } 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 uniqueSlots(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 {\n DEFAULT_DOCTITLE_TOOLS,\n DEFAULT_TRAY_TOOLS,\n DOCUMENT_LIST_TOOL,\n THREEPANE_CONFIG_VERSION,\n} from \"../datatypes\";\nimport { loadDatatypeWhenReady } from \"./loadDatatypeWhenReady\";\nimport { slotId, uniqueSlots } 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 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 * Bring a config doc made before versioning up to THREEPANE_CONFIG_VERSION:\n * fill in the default document list, tray and doctitle tools it's missing, and\n * drop duplicate tray slots. Runs once per doc. After that the doc is the\n * person's to edit, and anything they remove stays removed.\n */\nexport function migrateThreepaneConfig(\n doc: ThreepaneConfigDoc,\n rootFolderUrl?: AutomergeUrl\n) {\n if ((doc.version ?? 0) >= THREEPANE_CONFIG_VERSION) return;\n\n if (!doc.sidebar) doc.sidebar = { widgets: [] };\n if (rootFolderUrl && !doc.sidebar.widgets?.length) {\n doc.sidebar.widgets = defaultSidebarWidgets(rootFolderUrl);\n }\n\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 unique = uniqueSlots(doc.tray);\n if (unique.length !== doc.tray.length) doc.tray = unique;\n const present = new Set(doc.tray.map((s) => slotId(s)));\n for (const id of DEFAULT_TRAY_TOOLS) {\n if (!present.has(id)) {\n doc.tray.push(id);\n present.add(id);\n }\n }\n }\n\n // A doctitle lane that ended up empty (nothing to migrate from the legacy\n // 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 // Can't seed the document list until the account has a root folder, so leave\n // the migration pending and try again on the next mount.\n if (!doc.sidebar.widgets?.length && !rootFolderUrl) return;\n\n doc.version = THREEPANE_CONFIG_VERSION;\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 and seeding the sidebar with a document list pinned to the\n * account's root folder.\n *\n * Defaults are written only when the config doc is created, or once when an\n * older doc is migrated (see `migrateThreepaneConfig`), never on every mount.\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 if (existingConfigUrl) {\n const configHandle = await repo.find<ThreepaneConfigDoc>(existingConfigUrl);\n if ((configHandle.doc()?.version ?? 0) >= THREEPANE_CONFIG_VERSION) return;\n configHandle.change((doc) => migrateThreepaneConfig(doc, rootFolderUrl));\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 // No root folder yet means no document list yet: leave the doc unversioned\n // so the next mount's migration seeds it.\n if (account?.rootFolderUrl) doc.version = THREEPANE_CONFIG_VERSION;\n else delete doc.version;\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, unless\n * the site asks for only its own examples (see siteExamplesOnly).\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 * A site that wants only its own examples says so on its root element \u2014\n * `<html data-examples=\"site\">` \u2014 and the hardcoded bundles above are left\n * out: just the init.js next to each of its own static manifests runs.\n */\nfunction siteExamplesOnly() {\n return document.documentElement.getAttribute(\"data-examples\") === \"site\";\n}\n\n/**\n * The `init.js` URL next to every static (http) module manifest the host is\n * watching, plus the hardcoded bundles above (unless the site opts out of\n * them). Automerge module-settings docs have no init script. Waits for the\n * watcher's initial load so the bundles' plugins are registered before any\n * example runs.\n */\nasync function bundleInitScriptUrls(): Promise<string[]> {\n const siteOnly = siteExamplesOnly();\n const watcher = (\n window as { patchwork?: { packages?: ModuleWatcherLike } }\n ).patchwork?.packages;\n if (!watcher?.urls) {\n return siteOnly ? [] : [BASE_BUNDLE_INIT_URL, TOOLS_BUNDLE_INIT_URL];\n }\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 if (siteOnly) return [...new Set(fromManifests)];\n const base = fromManifests.length ? [] : [BASE_BUNDLE_INIT_URL];\n return [...new Set([...fromManifests, ...base, TOOLS_BUNDLE_INIT_URL])];\n}\n", "import type { AutomergeUrl, DocHandle, Repo } from \"@automerge/automerge-repo/slim\";\n\n/**\n * Asked for by anything that wants a doc in the sidebar (the \"Add to sidebar\"\n * titlebar button, say). It bubbles and is composed, so whatever frame is\n * around the asker can claim it: call `preventDefault()` and hand the work to\n * `detail.respondWith`. Unclaimed, the asker does it itself.\n */\nexport const ADD_TO_SIDEBAR_EVENT = \"patchwork:add-to-sidebar\";\n\nexport type DocLink = { url: AutomergeUrl; name: string; type: string };\n\nexport type AddToSidebarDetail = {\n url: AutomergeUrl;\n name?: string;\n type?: string;\n respondWith?(work: Promise<unknown>): void;\n};\n\ntype FolderLike = { docs?: DocLink[] };\n\n/**\n * Put `link` first in the folder. A doc that's already there is lifted to the\n * top, keeping its own name, rather than added twice.\n */\nexport function putAtTop(folder: FolderLike, link: DocLink) {\n if (!folder.docs) folder.docs = [];\n const docs = folder.docs;\n const at = docs.findIndex((existing) => existing.url === link.url);\n if (at === 0) return;\n if (at > 0) {\n const { name, type } = docs[at];\n docs.splice(at, 1);\n docs.unshift({ url: link.url, name, type });\n return;\n }\n docs.unshift({ url: link.url, name: link.name, type: link.type });\n}\n\n/** Resolves with pick(doc) once it's something. */\nfunction when<T, R>(\n handle: DocHandle<T>,\n pick: (doc: T) => R | undefined\n): Promise<R> {\n return new Promise((resolve) => {\n const check = () => {\n const doc = handle.doc();\n const picked = doc && pick(doc);\n if (!picked) return;\n handle.off(\"change\", check);\n resolve(picked);\n };\n handle.on(\"change\", check);\n check();\n });\n}\n\n/**\n * Answer `patchwork:add-to-sidebar` events from inside `element` by putting the\n * doc at the top of the account's root folder (what the sidebar's document list\n * shows). Uses the frame's own repo, so a request from inside a draft overlay\n * still lands in the real sidebar, not a draft of it.\n */\nexport function handleAddToSidebar<T extends { rootFolderUrl?: AutomergeUrl }>(\n element: HTMLElement,\n repo: Repo,\n accountHandle: DocHandle<T>\n) {\n const onAdd = (event: Event) => {\n const detail = (event as CustomEvent<AddToSidebarDetail>).detail;\n if (!detail?.url) return;\n event.preventDefault();\n event.stopPropagation();\n\n const work = (async () => {\n const rootFolderUrl = await when(accountHandle, (doc) => doc.rootFolderUrl);\n const rootFolder = await repo.find<FolderLike>(rootFolderUrl);\n rootFolder.change((folder) =>\n putAtTop(folder, {\n url: detail.url,\n name: detail.name || \"Untitled\",\n type: detail.type || \"unknown\",\n })\n );\n })();\n work.catch((error) =>\n console.error(\"threepane: couldn't add to sidebar\", error)\n );\n detail.respondWith?.(work);\n };\n\n element.addEventListener(ADD_TO_SIDEBAR_EVENT, onAdd);\n return () => element.removeEventListener(ADD_TO_SIDEBAR_EVENT, onAdd);\n}\n", "import type { DocHandle } from \"@automerge/automerge-repo/slim\";\nimport {\n createEffect,\n createMemo,\n createSignal,\n onCleanup,\n type Accessor,\n} from \"solid-js\";\n\n/**\n * The current doc of a handle, recomputed on every change. Reads through a\n * version counter instead of useDocument, because its store proxying conflicts\n * with Automerge array splices.\n */\nexport function useHandleDoc<T>(\n handle: Accessor<DocHandle<T> | undefined>\n): Accessor<T | undefined> {\n const [version, setVersion] = createSignal(0);\n createEffect(() => {\n const h = handle();\n if (!h) return;\n const onChange = () => setVersion((v) => v + 1);\n h.on(\"change\", onChange);\n onCleanup(() => h.off(\"change\", onChange));\n });\n return createMemo(() => {\n version();\n return handle()?.doc();\n });\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["_$template", "_$delegateEvents", "_$memo", "_$setStyleProperty", "_$setAttribute", "_$effect", "_$getOwner", "_$use", "_$insert", "_$createComponent", "parseAutomergeUrl", "subscribe", "_$template", "_$delegateEvents", "_$memo", "_$insert", "_$createComponent", "For", "Show", "_tmpl$", "_$template", "_tmpl$2", "_tmpl$3", "SidebarWidgets", "props", "addDocumentList", "root", "handle", "doc", "DOCUMENT_LIST_TOOL", "_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", "uniqueSlots", "slot", "_el$2", "SlotView", "_$effect", "_$setAttribute", "slotId", "createEffect", "createMemo", "createSignal", "onCleanup", "onMount", "Show", "Portal", "render", "createDocOfDatatype2", "getRegistry", "loadDatatypeWhenReady", "id", "INTRINSIC_DOCTITLE_TOOLS", "defaultSidebarWidgets", "rootFolderUrl", "DOCUMENT_LIST_TOOL", "migrateThreepaneConfig", "doc", "DEFAULT_TRAY_TOOLS", "unique", "uniqueSlots", "present", "s", "slotId", "id", "DEFAULT_DOCTITLE_TOOLS", "ensureThreepaneConfig", "accountHandle", "repo", "existingConfigUrl", "configHandle", "datatype", "loadDatatypeWhenReady", "account", "doctitleTools", "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", "siteExamplesOnly", "siteOnly", "watcher", "fromManifests", "base", "ADD_TO_SIDEBAR_EVENT", "putAtTop", "folder", "link", "docs", "at", "existing", "name", "type", "when", "handle", "pick", "resolve", "check", "doc", "picked", "handleAddToSidebar", "element", "repo", "accountHandle", "onAdd", "event", "detail", "work", "rootFolderUrl", "error", "createEffect", "createMemo", "createSignal", "onCleanup", "useHandleDoc", "handle", "version", "setVersion", "h", "onChange", "v", "_tmpl$", "_$template", "_tmpl$2", "_tmpl$3", "_tmpl$4", "_tmpl$5", "_tmpl$6", "_tmpl$7", "_tmpl$8", "_tmpl$9", "_tmpl$0", "_tmpl$1", "_tmpl$10", "_tmpl$11", "ACCOUNT_URL_STORAGE_KEY", "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", "accountDoc", "useHandleDoc", "threepaneUrl", "threepaneConfigHandle", "threepaneConfig", "doctitleSlots", "sidebarWidgets", "traySlots", "rootFolderUrl", "contact", "useDocument", "contactName", "doc", "sidebarState", "useSidebarState", "sidebarResize", "useSidebarResize", "selectedView", "setSelectedView", "popoverView", "setPopoverView", "onMount", "unsubscribeSelectedView", "subscribe", "view", "handleAddToSidebar", "selectedDocUrl", "selectedToolId", "initialRightWidth", "getStoredNumber", "SIDEBAR_KEYS", "DEFAULT_SIDEBAR_WIDTH", "initialRightCollapsed", "getStoredBoolean", "mainDocElement", "setMainDocElement", "isMainDocMounted", "useMainDocMounted", "widgetsReady", "setWidgetsReady", "_el$9", "_ref$", "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", "myName", "accountMenu", "setAccountMenu", "accountKey", "parseAutomergeUrl", "onPointerDown", "onKeyDown", "showAccountMenu", "signOut", "hasTray", "sidebarContentEl", "setSidebarContentEl", "footerEl", "footer", "COLLAPSE_CONTEXT_SIDEBAR_EVENT", "_el$15", "v", "PanelLeftIcon", "_v$4", "_v$5", "_v$6", "_$setAttribute", "Sidebar", "_el$16", "_el$17", "_el$18", "_el$19", "SidebarWidgets", "_ref$3", "contactUrl", "_el$23", "_el$20", "position", "Portal", "_el$24", "_el$25", "_el$26", "items", "index", "focus", "next", "_v$9", "_v$0", "_$setStyleProperty", "moduleSettingsUrl", "_el$27", "_el$21", "Tray", "_v$7", "_v$8", "_$memo", "renderPatchworkFrame", "isolation", "render", "_$delegateEvents"]
7
+ }
@@ -1,5 +1,5 @@
1
- import{a as se,b as It}from"./chunk-FW4363Y4.js";var Ie=se((yn,Ae)=>{var I=1e3,F=I*60,R=F*60,T=R*24,Zt=T*7,Qt=T*365.25;Ae.exports=function(e,r){r=r||{};var t=typeof e;if(t==="string"&&e.length>0)return er(e);if(t==="number"&&isFinite(e))return r.long?rr(e):tr(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function er(e){if(e=String(e),!(e.length>100)){var r=/^(-?(?:\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(r){var t=parseFloat(r[1]),o=(r[2]||"ms").toLowerCase();switch(o){case"years":case"year":case"yrs":case"yr":case"y":return t*Qt;case"weeks":case"week":case"w":return t*Zt;case"days":case"day":case"d":return t*T;case"hours":case"hour":case"hrs":case"hr":case"h":return t*R;case"minutes":case"minute":case"mins":case"min":case"m":return t*F;case"seconds":case"second":case"secs":case"sec":case"s":return t*I;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return t;default:return}}}}function tr(e){var r=Math.abs(e);return r>=T?Math.round(e/T)+"d":r>=R?Math.round(e/R)+"h":r>=F?Math.round(e/F)+"m":r>=I?Math.round(e/I)+"s":e+"ms"}function rr(e){var r=Math.abs(e);return r>=T?X(e,r,T,"day"):r>=R?X(e,r,R,"hour"):r>=F?X(e,r,F,"minute"):r>=I?X(e,r,I,"second"):e+" ms"}function X(e,r,t,o){var n=r>=t*1.5;return Math.round(e/t)+" "+o+(n?"s":"")}});var Re=se((_n,Fe)=>{function or(e){t.debug=t,t.default=t,t.coerce=m,t.disable=a,t.enable=n,t.enabled=f,t.humanize=Ie(),t.destroy=p,Object.keys(e).forEach(s=>{t[s]=e[s]}),t.names=[],t.skips=[],t.formatters={};function r(s){let l=0;for(let c=0;c<s.length;c++)l=(l<<5)-l+s.charCodeAt(c),l|=0;return t.colors[Math.abs(l)%t.colors.length]}t.selectColor=r;function t(s){let l,c=null,h,b;function v(...d){if(!v.enabled)return;let u=v,g=Number(new Date),w=g-(l||g);u.diff=w,u.prev=l,u.curr=g,l=g,d[0]=t.coerce(d[0]),typeof d[0]!="string"&&d.unshift("%O");let _=0;d[0]=d[0].replace(/%([a-zA-Z%])/g,($,Dt)=>{if($==="%%")return"%";_++;let xe=t.formatters[Dt];if(typeof xe=="function"){let At=d[_];$=xe.call(u,At),d.splice(_,1),_--}return $}),t.formatArgs.call(u,d),(u.log||t.log).apply(u,d)}return v.namespace=s,v.useColors=t.useColors(),v.color=t.selectColor(s),v.extend=o,v.destroy=t.destroy,Object.defineProperty(v,"enabled",{enumerable:!0,configurable:!1,get:()=>c!==null?c:(h!==t.namespaces&&(h=t.namespaces,b=t.enabled(s)),b),set:d=>{c=d}}),typeof t.init=="function"&&t.init(v),v}function o(s,l){let c=t(this.namespace+(typeof l>"u"?":":l)+s);return c.log=this.log,c}function n(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 c of l)c[0]==="-"?t.skips.push(c.slice(1)):t.names.push(c)}function i(s,l){let c=0,h=0,b=-1,v=0;for(;c<s.length;)if(h<l.length&&(l[h]===s[c]||l[h]==="*"))l[h]==="*"?(b=h,v=c,h++):(c++,h++);else if(b!==-1)h=b+1,v++,c=v;else return!1;for(;h<l.length&&l[h]==="*";)h++;return h===l.length}function a(){let s=[...t.names,...t.skips.map(l=>"-"+l)].join(",");return t.enable(""),s}function f(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 m(s){return s instanceof Error?s.stack||s.message:s}function p(){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}Fe.exports=or});var Oe=se((x,K)=>{x.formatArgs=ar;x.save=ir;x.load=sr;x.useColors=nr;x.storage=lr();x.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`."))}})();x.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 nr(){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 ar(e){if(e[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+e[0]+(this.useColors?"%c ":" ")+"+"+K.exports.humanize(this.diff),!this.useColors)return;let r="color: "+this.color;e.splice(1,0,r,"color: inherit");let t=0,o=0;e[0].replace(/%[a-zA-Z%]/g,n=>{n!=="%%"&&(t++,n==="%c"&&(o=t))}),e.splice(o,0,r)}x.log=console.debug||console.log||(()=>{});function ir(e){try{e?x.storage.setItem("debug",e):x.storage.removeItem("debug")}catch{}}function sr(){let e;try{e=x.storage.getItem("debug")||x.storage.getItem("DEBUG")}catch{}return!e&&typeof process<"u"&&"env"in process&&(e=process.env.DEBUG),e}function lr(){try{return localStorage}catch{}}K.exports=Re()(x);var{formatters:dr}=K.exports;dr.j=function(e){try{return JSON.stringify(e)}catch(r){return"[UnexpectedJSONParseError]: "+r.message}}});import{template as Et}from"solid-js/web";import{createComponent as Po}from"solid-js/web";import{setAttribute as No}from"solid-js/web";import{effect as Uo}from"solid-js/web";import{insert as Tt}from"solid-js/web";import{getOwner as jo}from"solid-js/web";import{createMemo as St}from"solid-js";import{createStore as qo,reconcile as Vo}from"solid-js/store";import{render as Bo}from"solid-js/web";import{template as B}from"solid-js/web";import{insert as D}from"solid-js/web";import{getOwner as q}from"solid-js/web";import{use as V}from"solid-js/web";import{createComponent as y}from"solid-js/web";import{createUniqueId as Ft,untrack as ye}from"solid-js";import{isServer as Rt,isDev as _e}from"solid-js/web";import{reconcile as Ot}from"solid-js/store";function le(e,r={}){let t=r.storage||globalThis.localStorage,o=r.name||`storage-${Ft()}`;if(!t)return Object.assign(e,{2:null});let n=r.storageOptions,i=r.serialize||JSON.stringify.bind(JSON),a=r.deserialize||JSON.parse.bind(JSON),f=t.getItem(o,n),m=typeof e[0]=="function"?s=>{try{let l=a(s);e[1](()=>l)}catch(l){_e&&console.warn(l)}}:s=>{try{let l=a(s);e[1](Ot(l))}catch(l){_e&&console.warn(l)}},p=!0;if(f instanceof Promise?f.then(s=>p&&s&&m(s)):f&&m(f),typeof r.sync?.[0]=="function"){let s=typeof e[0]=="function"?e[0]:()=>e[0];r.sync[0](l=>{l.key!==o||!Rt&&(l.url||globalThis.location.href)!==globalThis.location.href||l.newValue===i(ye(s))||m(l.newValue)})}return Object.assign([],e,{1:typeof e[0]=="function"?s=>{let l=e[1](s),c=s!=null?i(l):s;return r.sync?.[1](o,c),c!=null?t.setItem(o,c,n):t.removeItem(o,n),p=!1,l}:(...s)=>{e[1](...s);let l=ye(()=>i(e[0]));r.sync?.[1](o,l),t.setItem(o,l,n),p=!1},2:f})}import{createEffect as xt,createMemo as we,createSignal as S,on as yt,onCleanup as Oo,onMount as Mo,Show as z}from"solid-js";import{createEffect as Ce,createSignal as ke,on as Se}from"solid-js";var C={leftCollapsed:"patchwork:leftSidebarCollapsed",rightCollapsed:"patchwork:rightSidebarCollapsed",leftWidth:"patchwork:leftSidebarWidth",rightWidth:"patchwork:rightSidebarWidth",contextToolId:"patchwork:contextSidebarToolId"},J="patchwork:collapse-context-sidebar",Y=400;function $e(e,r){let t=localStorage.getItem(e);return t?parseInt(t,10):r}function Ee(e){return localStorage.getItem(e)==="true"}function Mt(){let[e,r]=ke(Ee(C.leftCollapsed)),[t,o]=ke($e(C.leftWidth,Y));return Ce(Se(e,n=>{localStorage.setItem(C.leftCollapsed,String(n))})),Ce(Se(t,n=>{localStorage.setItem(C.leftWidth,String(n))})),{isSidebarCollapsed:e,setIsSidebarCollapsed:r,leftSidebarWidth:t,setLeftSidebarWidth:o}}import{onCleanup as Lt,onMount as zt}from"solid-js";var Te=180,Pt=720,Nt=120,De=3;function de(e,{isCollapsed:r,setCollapsed:t,setWidth:o}){let n=!1,i=null,a=!1,f=null,m=u=>{if(u<Nt){r()||t(!0),f=null;return}r()&&t(!1);let g=Math.min(Pt,u);o(g),f=g},p=()=>{r()||f!==null&&f<Te&&o(Te)},s=null,l=()=>{document.body.setAttribute("data-sidebar-resizing",e),s=document.createElement("div"),s.style.cssText="position:fixed;inset:0;z-index:2147483647;cursor:col-resize;",document.body.appendChild(s)},c=()=>{n=!1,i=null,document.body.style.userSelect="",document.body.removeAttribute("data-sidebar-resizing"),s?.remove(),s=null},h=u=>{u.preventDefault(),i={x:u.clientX,y:u.clientY},a=!1,f=null,n=!0,document.body.style.userSelect="none"},b=()=>{let u=n,g=a;c(),u&&g&&p()},v=u=>{if(!n||!i)return;let g=Math.abs(u.clientX-i.x),w=Math.abs(u.clientY-i.y);!a&&(g>De||w>De)&&(a=!0,l()),m(e==="left"?u.clientX:window.innerWidth-u.clientX)},d=u=>{if(a){u.preventDefault(),u.stopPropagation(),a=!1;return}t(g=>!g)};return zt(()=>{document.addEventListener("mousemove",v),document.addEventListener("mouseup",b),Lt(()=>{document.removeEventListener("mousemove",v),document.removeEventListener("mouseup",b),n&&c()})}),{handleMouseDown:h,handleToggleClick:d}}import{createEffect as Ut,createSignal as jt,onCleanup as Wt}from"solid-js";var E=(e,r)=>{let[t,o]=jt(!1);return Ut(()=>{let n=r();if(!n)return;o(!1);let i=a=>{a.detail?.componentId===e&&o(!0)};n.addEventListener("patchwork:mounted",i),Wt(()=>n.removeEventListener("patchwork:mounted",i))}),t};import{createEffect as Ht,createSignal as qt,onCleanup as Vt}from"solid-js";var Bt=5e3,Jt=(e,r)=>{let[t,o]=qt(!1);return Ht(()=>{if(t())return;let n=e(),i=r();if(!n||!i)return;let a=m=>{let p=m.detail;p?.url&&p.url!==i||o(!0)};n.addEventListener("patchwork:mounted",a),n.addEventListener("patchwork:no-tool",a);let f=setTimeout(()=>o(!0),Bt);Vt(()=>{n.removeEventListener("patchwork:mounted",a),n.removeEventListener("patchwork:no-tool",a),clearTimeout(f)})}),t};import{getRegistry as Yt}from"@inkandswitch/patchwork-plugins";import{createMemo as Xt,createSignal as Kt,onCleanup as Gt}from"solid-js";function k(e){let r=Yt("patchwork:component"),[t,o]=Kt(0),n=r.on("changed",()=>o(i=>i+1));return Gt(n),Xt(()=>(t(),(r.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 H}from"solid-js/web";import{delegateEvents as no}from"solid-js/web";import{getOwner as ao}from"solid-js/web";import{effect as lt}from"solid-js/web";import{setAttribute as io}from"solid-js/web";import{memo as dt}from"solid-js/web";import{insert as M}from"solid-js/web";import{createComponent as L}from"solid-js/web";import{For as po,Show as ge}from"solid-js";import{template as We}from"solid-js/web";import{delegateEvents as _r}from"solid-js/web";import{insert as Cr}from"solid-js/web";import"solid-js/web";import{setAttribute as Ue}from"solid-js/web";import{effect as je}from"solid-js/web";import{use as He}from"solid-js/web";import{createComponent as fe}from"solid-js/web";var Le=It(Oe(),1),ce=(0,Le.default)("cabbages");function ue(e){return typeof e=="object"&&e!=null&&Object.getPrototypeOf(e)==Object.prototype}function G(e){if(Array.isArray(e))return e.map(G);if(ue(e)){let r={};for(let t of Object.keys(e))r[t]=G(e[t]);return r}return e instanceof Date?new Date(e):ArrayBuffer.isView(e)?e.slice():e}var cr="\uFFFC";function ze(e,...r){if(r.length==0){ce("empty patch");return}let[t,o,n]=r,i=[...t];for(;;){let a=i.shift();if(!i.length){let m=Array.isArray(o);if(ue(e)&&m&&typeof a>"u"&&typeof o[0]=="string"){delete e[o[0]];return}if(m||typeof o=="number"){if(typeof a>"u")throw new Error("cant treat top level as a seq");a=a;let[p,s]=Array.isArray(o)?o:[o,o+1],l=Array.isArray(o)&&o.length==0;if(!l&&(p==null||s==null))throw new RangeError("it's all or nothing, no half measures");let c=typeof n>"u",h=p===s&&!c,b=l&&!c,v=!h&&!c&&!b;if(typeof e[a]>"u"){if(typeof e=="string")return;typeof n=="string"?e[a]="":e[a]=[]}let d=e[a];if(Array.isArray(d)){if(b){Array.isArray(n)?d.push(...n):d.push(n);return}if(h||v){Array.isArray(n)?d.splice(p,s-p,...n):d.splice(p,s-p,n);return}if(c){d.splice(p,s-p);return}throw new Error("i don't know what happened")}if(typeof d=="string"){if(b){e[a]=d+n;return}if(v||h){e[a]=d.slice(0,p)+(typeof n=="string"?n:n.map(u=>typeof u=="string"?u:cr).join(""))+d.slice(s);return}if(c){e[a]=d.slice(0,p)+d.slice(s);return}throw new Error("i don't know what happened")}if(ue(d)&&m&&typeof o[0]=="string"){delete d[o[0]];return}throw new Error("not implemented")}if(typeof a>"u"){if(typeof o!="string")throw new Error(`can't index top-level map with ${o}`);typeof n>"u"?delete e[o]:e[o]=n;return}if(typeof e[a]>"u"&&(e[a]={}),m){let[p,s]=o;p!=null&&s!=null&&(typeof n>"u"&&p!=null&&s!=null?delete e[a][p||s]:e[a][p||s]=n)}else if(typeof n>"u")delete e[a][o];else{if(typeof e[a]=="string")return;e[a][o]=n}return}if(typeof a>"u")throw new Error("cant treat top level as a seq");a=a;let f=i[0];if(typeof e[a]>"u")if(typeof f=="string")e[a]={};else if(typeof f=="number")e[a]=[];else throw new Error(`can't go down this road ${e}.${a}.${f}`);if(e=e[a],typeof e=="string"){ce("ignoring patch to a block marker in a string",t,o);return}if(e==null||typeof e!="object"&&typeof e!="function")throw new TypeError(`invalid path ${JSON.stringify(t)}: ${String(a)} is ${e}`)}}function Me(e,r){for(let t=0;t<r.length;t++)e=e?e[r[t]]:void 0;return e}function Pe(e,r){let t=e.path.slice(0,-1),o=e.path[e.path.length-1];switch(e.action){case"mark":case"unmark":return ce(`skipping ${e.action} because it doesn't affect material reality`),[];case"inc":if(r)return[t,o,Me(r.patchInfo.after,e.path)];throw new Error(`can't apply ${e.action} without payload argument`);case"conflict":if(r)return[t,o,Me(r.patchInfo.after,e.path)];throw new Error(`can't apply ${e.action} without payload argument`);case"del":return typeof o=="string"?[t,o]:[t,[o,o+(e.length||1)]];case"insert":return[t,[o,o],G(e.values)];case"splice":return[t,[o,o],[e.value]];case"put":return[t,o,G(e.value)]}}function Z(e){return r=>{for(let t of e.patches)ze(r,...Pe(t,e))}}import{createMemo as hr}from"solid-js";import{onCleanup as ur}from"solid-js";import{createStore as fr,produce as pr,reconcile as Ne}from"solid-js/store";var P=new WeakMap;function Q(e){if(ur(()=>{let i=P.get(e);i&&(i.refs--||i.cleanup())}),P.has(e)){let i=P.get(e);return i.refs++,i.store}let[r,t]=fr(structuredClone(e.doc()));P.set(e,{refs:0,store:r,cleanup(){e.off("change",o),e.off("delete",n),P.delete(e)}});function o(i){if(i.scopeReplaced){t(Ne(i.doc??{}));return}t(pr(Z(i)))}function n(){t(Ne({}))}return e.on("change",o),e.on("delete",n),r}import{getOwner as In,onCleanup as Fn,createSignal as Rn,untrack as On,sharedConfig as Mn,onMount as Ln,DEV as zn,equalFn as Pn}from"solid-js";import{isServer as Un}from"solid-js/web";var O=e=>typeof e=="function"&&!e.length?e():e;function ee(e){return hr(()=>O(e)&&Q(O(e)))}import{createEffect as gr,createResource as br,useContext as vr}from"solid-js";import{createContext as mr}from"solid-js";var te=mr(null);function N(e,r){let t=vr(te);if(!r?.repo&&!t)throw new Error("use outside <RepoContext> requires options.repo");let o=r?.repo||t;function n(){if(r?.["~skipInitialValue"])return;let f=O(e);if(f)return xr(o,f)}let[i,{mutate:a}]=br(e,f=>o.find(f),{initialValue:n()});return gr(()=>{O(e)||a()}),i}function wr(e){return typeof e.query=="function"}function xr(e,r){if(wr(e)){let o=e.query(r).state();return o.status=="ready"?o.handle:void 0}let t=e.findWithProgress(r).peek();return t.state=="ready"?t.handle:void 0}function re(e,r){let t=N(e,r);return[ee(t),t]}import{onCleanup as oa}from"solid-js";import{createSignal as aa}from"solid-js";import{createEffect as la,onCleanup as da}from"solid-js";import{createSignal as ua}from"solid-js";import{useContext as va}from"solid-js";import{getType as Sr}from"@inkandswitch/patchwork-filesystem";import{getRegistry as $r,isLoadedPlugin as Er}from"@inkandswitch/patchwork-plugins";import{createEffect as Tr,createMemo as oe,createSignal as pe,onCleanup as Dr,onMount as Ve,Show as Be}from"solid-js";var qe=We("<span class=threepane__title-text>"),kr=We("<input class=threepane__title-input type=text>");function Je(e){let r,[t,o]=pe();return Ve(()=>{o(r.closest("repo-provider")?.repo)}),fe(Be,{get when(){return t()},get fallback(){return(()=>{var n=qe(),i=r;return typeof i=="function"?He(i,n):r=n,n})()},children:n=>fe(Ar,{get docUrl(){return e.docUrl},get repo(){return n()}})})}function Ar(e){let[r,t]=re(()=>e.docUrl(),{repo:e.repo}),o=$r("patchwork:datatype"),[n,i]=pe(0);Ve(()=>{let d=o.on("changed",()=>i(u=>u+1));Dr(d)});let a=oe(()=>{let d=r();return d?Sr(d):void 0});Tr(()=>{let d=a();d&&o.load(d)});let f=oe(()=>{n();let d=a();if(!d)return;let u=o.get(d);return u&&Er(u)?u:void 0}),m=oe(()=>{let d=r(),u=f();if(!(!d||!u))return u.module.getTitle(d)}),p=oe(()=>!!t()&&typeof f()?.module.setTitle=="function"),[s,l]=pe(!1),c;function h(){p()&&(l(!0),queueMicrotask(()=>{c?.focus(),c?.select()}))}function b(d){if(!s()||(l(!1),!d))return;let u=c?.value.trim();if(!u||u===m())return;let g=t(),w=f()?.module.setTitle;!g||!w||g.change(_=>{w(_,u);let A=_["@patchwork"];A&&(A.title=u)})}function v(d){let u=e.docUrl(),g=d.dataTransfer;if(!u||!g)return;let w=m()??"Untitled",_=a();g.effectAllowed="copyLink",g.setData("text/x-patchwork-dnd",JSON.stringify({source:"threepane",items:[{url:u,name:w,type:_}]})),g.setData("text/x-patchwork-urls",JSON.stringify([u])),g.setData("text/uri-list",`${location.origin}${location.pathname}#doc=${u}\r
2
- `),g.setData("text/plain",u)}return fe(Be,{get when(){return s()},get fallback(){return(()=>{var d=qe();return d.$$click=h,d.addEventListener("dragstart",v),Ue(d,"draggable",!0),Cr(d,()=>m()??"Untitled"),je(u=>{var g=!!p(),w=p()?"Rename":void 0;return g!==u.e&&d.classList.toggle("threepane__title-text--editable",u.e=g),w!==u.t&&Ue(d,"title",u.t=w),u},{e:void 0,t:void 0}),d})()},get children(){var d=kr();d.$$keydown=g=>{g.key==="Enter"?(g.preventDefault(),b(!0)):g.key==="Escape"&&(g.preventDefault(),b(!1))},d.addEventListener("blur",()=>b(!0));var u=c;return typeof u=="function"?He(u,d):c=d,je(()=>d.value=m()??""),d}})}_r(["keydown","click"]);import{template as ae}from"solid-js/web";import{delegateEvents as Yr}from"solid-js/web";import{getOwner as Xr}from"solid-js/web";import{insert as ne}from"solid-js/web";import{createComponent as W}from"solid-js/web";import{Show as ot}from"solid-js";import{template as Ze}from"solid-js/web";import{delegateEvents as Ir}from"solid-js/web";import{setStyleProperty as Fr}from"solid-js/web";import{insert as Rr}from"solid-js/web";import{use as Or}from"solid-js/web";import{setAttribute as U}from"solid-js/web";import{effect as Ye}from"solid-js/web";import{memo as j}from"solid-js/web";import{createComponent as Xe}from"solid-js/web";import{Show as Ke,createEffect as zr,createSignal as Ge,on as Pr,onCleanup as Nr}from"solid-js";var Mr=Ze('<button class="sidebar-toggle sidebar-toggle--resizable">'),Lr=Ze("<div class=sidebar>");function Ur(e){let r=parseFloat(getComputedStyle(e).transitionDuration);return Number.isFinite(r)?r*1e3:0}function Qe(e){let r=()=>`${e.isCollapsed()?0:e.width()}px`,t=()=>e.canExpand?.()??!0,o,[n,i]=Ge(!e.isCollapsed()),[a,f]=Ge(!1),m;zr(Pr(e.isCollapsed,l=>{clearTimeout(m),l||i(!0);let c=o?Ur(o):0;if(c<5){f(!1),l&&i(!1);return}f(!0),m=setTimeout(()=>{f(!1),l&&i(!1)},c)},{defer:!0})),Nr(()=>clearTimeout(m));let p=()=>Xe(Ke,{get when(){return n()},get children(){return e.children}}),s=()=>Xe(Ke,{get when(){return!e.isCollapsed()||t()},get children(){var l=Mr();return l.$$mousedown=c=>e.onMouseDown(c),l.$$click=c=>e.onToggleClick(c),Ye(c=>{var h=e.isCollapsed()?"Expand sidebar":"Toggle or resize sidebar",b=e.isCollapsed()?"Click to expand, drag to resize":"Click to toggle, drag to resize";return h!==c.e&&U(l,"aria-label",c.e=h),b!==c.t&&U(l,"title",c.t=b),c},{e:void 0,t:void 0}),l}});return(()=>{var l=Lr(),c=o;return typeof c=="function"?Or(c,l):o=l,Rr(l,(()=>{var h=j(()=>e.side==="left");return()=>h()?[j(p),j(s)]:[j(s),j(p)]})()),Ye(h=>{var b=e.side,v=a()?"":void 0,d=e.isCollapsed()?"":void 0,u=r();return b!==h.e&&U(l,"data-side",h.e=b),v!==h.t&&U(l,"data-moving",h.t=v),d!==h.a&&U(l,"data-collapsed",h.a=d),u!==h.o&&Fr(l,"width",h.o=u),h},{e:void 0,t:void 0,a:void 0,o:void 0}),l})()}Ir(["click","mousedown"]);import{template as tt}from"solid-js/web";import{delegateEvents as jr}from"solid-js/web";import{setAttribute as Wr}from"solid-js/web";import{effect as Hr}from"solid-js/web";import{insert as et}from"solid-js/web";import{createComponent as qr}from"solid-js/web";import{For as Jr}from"solid-js";var Vr=tt("<div role=tablist class=context-sidebar__tablist>"),Br=tt("<button type=button role=tab class=context-sidebar__tab>");function rt(e){let r=()=>{let t=e.items().map(n=>n.id),o=e.selectedToolId();return o&&t.includes(o)?o:t[0]};return(()=>{var t=Vr();return et(t,qr(Jr,{get each(){return e.items()},children:o=>(()=>{var n=Br();return n.$$click=()=>e.setSelectedToolId(o.id),et(n,()=>o.name),Hr(()=>Wr(n,"data-active",r()===o.id?"":void 0)),n})()})),t})()}jr(["click"]);var Kr=ae('<div class=context-sidebar__tabs><button type=button class=context-sidebar__close title="Hide context sidebar"aria-label="Hide context sidebar">'),Gr=ae("<div class=context-sidebar><div class=context-sidebar__content>"),Zr=ae("<patchwork-view>",!0,!1,!1),Qr=ae('<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 nt(e){let r=k("context-tool"),t=()=>{let o=r().map(i=>i.id),n=e.selectedToolId();return n&&o.includes(n)?n:o[0]};return W(Qe,{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 o=Gr(),n=o.firstChild;return ne(o,W(ot,{get when(){return r().length},get children(){var i=Kr(),a=i.firstChild;return ne(i,W(rt,{items:r,get selectedToolId(){return e.selectedToolId},get setSelectedToolId(){return e.setSelectedToolId}}),a),a.$$click=()=>e.onCollapse(),ne(a,W(he,{})),i}}),n),ne(n,W(ot,{get when(){return t()},keyed:!0,children:i=>(()=>{var a=Zr();return a.component=i,a._$owner=Xr(),a})()})),o}})}function he(){return Qr()}Yr(["click"]);import{template as eo}from"solid-js/web";import{effect as at}from"solid-js/web";import{getOwner as it}from"solid-js/web";import{createComponent as to}from"solid-js/web";import{memo as ro}from"solid-js/web";import{Show as oo}from"solid-js";var st=eo("<patchwork-view>",!0,!1,!1),me=e=>Array.isArray(e)?String(e[0]):String(e);function Di(e){let r=new Set;return e.filter(t=>{let o=me(t);return r.has(o)?!1:(r.add(o),!0)})}function Ai(e){return to(oo,{get when(){return ro(()=>!!Array.isArray(e.slot))()?e.slot:!1},get fallback(){return(()=>{var r=st();return r._$owner=it(),at(()=>r.component=String(e.slot)),r})()},children:r=>(()=>{var t=st();return t._$owner=it(),at(o=>{var n=r()[1],i=r()[0];return n!==o.e&&(t.docUrl=o.e=n),i!==o.t&&(t.toolId=o.t=i),o},{e:void 0,t:void 0}),t})()})}var so=H("<div class=threepane__title>"),lo=H("<div class=threepane__doctitle-tools>"),co=H('<button type=button class=frame__sidebar-toggle title="Show context sidebar"aria-label="Show context sidebar">'),uo=H("<div class=frame__topbar><div class=threepane__spacer>"),fo=H("<patchwork-view>",!0,!1,!1);function ct(e){let r=()=>e.toolSlots()??[];return(()=>{var t=uo(),o=t.firstChild;return M(t,L(ge,{get when(){return e.docUrl()},get children(){var n=so();return M(n,L(Je,{get docUrl(){return e.docUrl}})),n}}),o),M(t,L(ge,{get when(){return dt(()=>!!e.docUrl())()&&r().length},get children(){var n=lo();return M(n,L(po,{get each(){return r()},children:i=>(()=>{var a=fo();return a._$owner=ao(),lt(f=>{var m=me(i),p=e.docUrl();return m!==f.e&&(a.toolId=f.e=m),p!==f.t&&(a.docUrl=f.t=p),f},{e:void 0,t:void 0}),a})()})),n}}),null),M(t,L(ge,{get when(){return dt(()=>!!e.hasContext())()&&e.isRightCollapsed()},get children(){var n=co();return n.$$click=()=>e.onToggleRight(),io(n,"aria-pressed",!1),M(n,L(he,{})),n}}),null),lt(()=>t.classList.toggle("frame__topbar--left-collapsed",!!e.isLeftCollapsed())),t})()}no(["click"]);import{createEffect as ht,onCleanup as wo}from"solid-js";import{createEffect as ho,createSignal as ut,onCleanup as ft,onMount as mo}from"solid-js";import{createStore as go,reconcile as bo}from"solid-js/store";import*as be from"@inkandswitch/patchwork-providers";function vo(e){return typeof e=="function"?e():e}function pt(e,r){let[t,o]=ut(void 0);mo(()=>{let p=vo(e);if(!p)return;let s=!1,l=be.subscribe(p,r,c=>{if(!c)return;let h="repo"in window?window.repo:void 0;h&&Promise.resolve(h.find(c)).then(b=>{s||o(()=>b)})});ft(()=>{s=!0,l()})});let[n,i]=go({}),[a,f]=ut(!1);return ho(()=>{let p=t();if(!p){f(!1);return}let s=()=>{i(bo(p.doc()??{})),f(!0)};s(),p.on("change",s),ft(()=>p.off("change",s))}),[()=>a()?n:void 0,t]}var mt="comments-view",gt="threepane-context-sidebar";function bt(e){let[r,t]=pt(e.element,{type:"patchwork:focus"}),o=k("context-tool"),n=()=>o().some(a=>a.id===mt);ht(()=>{let a=t();!a||!n()||(a.change(f=>{f.commentViewOpeners||(f.commentViewOpeners={}),f.commentViewOpeners[gt]=!0}),wo(()=>a.change(f=>{f.commentViewOpeners&&delete f.commentViewOpeners[gt]})))});let i;return ht(()=>{let a=r()?.openCommentView??0;if(i===void 0){i=a;return}a!==i&&(i=a,n()&&e.open(mt))}),null}import{template as ve}from"solid-js/web";import{effect as xo}from"solid-js/web";import{getOwner as yo}from"solid-js/web";import{insert as vt}from"solid-js/web";import{memo as _o}from"solid-js/web";import{createComponent as Co}from"solid-js/web";import{use as ko}from"solid-js/web";import{Show as To}from"solid-js";var So=ve("<div class=document-view>"),$o=ve("<patchwork-view>",!0,!1,!1),Eo=ve("<div class=placeholder>Select a document in the sidebar");function wt({viewKey:e,selectedDocUrl:r,toolId:t,ref:o}){return(()=>{var n=So(),i=o;return typeof i=="function"?ko(i,n):o=n,vt(n,Co(To,{get when(){return e()},keyed:!0,children:a=>(()=>{var f=$o();return f._$owner=yo(),xo(m=>{var p=r(),s=t();return p!==m.e&&(f.docUrl=m.e=p),s!==m.t&&(f.toolId=m.t=s),m},{e:void 0,t:void 0}),f})()}),null),vt(n,(()=>{var a=_o(()=>!r());return()=>a()&&Eo()})(),null),n})()}var Do=B("<patchwork-view component=patchwork-draft-state-provider>",!0,!1,!1),Ao=B("<patchwork-view component=patchwork-draft-overlay-provider>",!0,!1,!1),Io=B("<div class=frame__main-column><div class=frame__doc-column><div class=main-area>"),Fo=B("<patchwork-view component=patchwork-comments-provider><patchwork-view component=patchwork-focus-provider>",!0,!1,!1),Ro=B("<patchwork-view>",!0,!1,!1);function _t(e){let[r,t]=S(e.initialRightCollapsed()),[o,n]=S(e.initialRightWidth());xt(yt(r,c=>{try{localStorage.setItem(C.rightCollapsed,String(c))}catch{}},{defer:!0})),xt(yt(o,c=>{try{localStorage.setItem(C.rightWidth,String(c))}catch{}},{defer:!0}));let i=de("right",{isCollapsed:r,setCollapsed:t,setWidth:n});Mo(()=>{let c=()=>t(!0);window.addEventListener(J,c),Oo(()=>window.removeEventListener(J,c))});let[a,f]=le(S(),{name:C.contextToolId}),[m,p]=S(),s=E("patchwork-draft-state-provider",m),l=()=>s()?m():void 0;return y(z,{get when(){return e.selectedDocUrl()},keyed:!0,children:c=>(()=>{var h=Do();return V(p,h),h.docUrl=c,h._$owner=q(),D(h,y(z,{get when(){return l()},children:b=>y(Lo,{get host(){return b()},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:r,setIsRightSidebarCollapsed:t,rightSidebarWidth:o,get handleMouseDown(){return i.handleMouseDown},get handleToggleClick(){return i.handleToggleClick},selectedContextToolId:a,setSelectedContextToolId:f})})),h})()})}function Lo(e){let r=k("context-tool"),t=()=>r().length>0,o=we(()=>e.selectedDocUrl()),[n,i]=S(),a=E("patchwork-draft-overlay-provider",n),[f,m]=S(),p=E("patchwork-comments-provider",f),[s,l]=S(),c=E("patchwork-focus-provider",s),h=we(()=>a()&&p()&&c()),b=k("document-provider"),v=we(()=>b().map(d=>d.id),[],{equals:(d,u)=>d.length===u.length&&d.every((g,w)=>g===u[w])});return(()=>{var d=Ao();return V(i,d),d._$owner=q(),D(d,y(Ct,{get ids(){return v()},render:()=>(()=>{var u=Fo(),g=u.firstChild;return V(m,u),u._$owner=q(),V(l,g),g._$owner=q(),D(g,y(z,{get when(){return h()},get children(){return[y(bt,{get element(){return s()},open:w=>{e.setSelectedContextToolId(w),e.setIsRightSidebarCollapsed(!1)}}),(()=>{var w=Io(),_=w.firstChild,A=_.firstChild;return D(_,y(ct,{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($=>!$)}),A),D(A,y(wt,{viewKey:o,get selectedDocUrl(){return e.selectedDocUrl},get toolId(){return e.selectedToolId},ref:$=>e.setMainDocElement?.($)})),D(w,y(z,{get when(){return t()},get children(){return y(nt,{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),w})()]}})),u})()})),d})()}function Ct(e){return y(z,{get when(){return e.ids[0]},keyed:!0,get fallback(){return e.render()},children:r=>{let[t,o]=S(),n=E(r,t);return(()=>{var i=Ro();return V(o,i),i.component=r,i._$owner=q(),D(i,y(z,{get when(){return n()},get children(){return y(Ct,{get ids(){return e.ids.slice(1)},get render(){return e.render}})}})),i})()}})}var ie=`:root,
1
+ import{a as se,b as It}from"./chunk-FW4363Y4.js";var Ie=se((yn,Ae)=>{var I=1e3,F=I*60,R=F*60,T=R*24,Zt=T*7,Qt=T*365.25;Ae.exports=function(e,r){r=r||{};var t=typeof e;if(t==="string"&&e.length>0)return er(e);if(t==="number"&&isFinite(e))return r.long?rr(e):tr(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function er(e){if(e=String(e),!(e.length>100)){var r=/^(-?(?:\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(r){var t=parseFloat(r[1]),o=(r[2]||"ms").toLowerCase();switch(o){case"years":case"year":case"yrs":case"yr":case"y":return t*Qt;case"weeks":case"week":case"w":return t*Zt;case"days":case"day":case"d":return t*T;case"hours":case"hour":case"hrs":case"hr":case"h":return t*R;case"minutes":case"minute":case"mins":case"min":case"m":return t*F;case"seconds":case"second":case"secs":case"sec":case"s":return t*I;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return t;default:return}}}}function tr(e){var r=Math.abs(e);return r>=T?Math.round(e/T)+"d":r>=R?Math.round(e/R)+"h":r>=F?Math.round(e/F)+"m":r>=I?Math.round(e/I)+"s":e+"ms"}function rr(e){var r=Math.abs(e);return r>=T?X(e,r,T,"day"):r>=R?X(e,r,R,"hour"):r>=F?X(e,r,F,"minute"):r>=I?X(e,r,I,"second"):e+" ms"}function X(e,r,t,o){var n=r>=t*1.5;return Math.round(e/t)+" "+o+(n?"s":"")}});var Re=se((_n,Fe)=>{function or(e){t.debug=t,t.default=t,t.coerce=m,t.disable=a,t.enable=n,t.enabled=p,t.humanize=Ie(),t.destroy=f,Object.keys(e).forEach(s=>{t[s]=e[s]}),t.names=[],t.skips=[],t.formatters={};function r(s){let l=0;for(let c=0;c<s.length;c++)l=(l<<5)-l+s.charCodeAt(c),l|=0;return t.colors[Math.abs(l)%t.colors.length]}t.selectColor=r;function t(s){let l,c=null,h,b;function v(...d){if(!v.enabled)return;let u=v,g=Number(new Date),w=g-(l||g);u.diff=w,u.prev=l,u.curr=g,l=g,d[0]=t.coerce(d[0]),typeof d[0]!="string"&&d.unshift("%O");let _=0;d[0]=d[0].replace(/%([a-zA-Z%])/g,($,Dt)=>{if($==="%%")return"%";_++;let xe=t.formatters[Dt];if(typeof xe=="function"){let At=d[_];$=xe.call(u,At),d.splice(_,1),_--}return $}),t.formatArgs.call(u,d),(u.log||t.log).apply(u,d)}return v.namespace=s,v.useColors=t.useColors(),v.color=t.selectColor(s),v.extend=o,v.destroy=t.destroy,Object.defineProperty(v,"enabled",{enumerable:!0,configurable:!1,get:()=>c!==null?c:(h!==t.namespaces&&(h=t.namespaces,b=t.enabled(s)),b),set:d=>{c=d}}),typeof t.init=="function"&&t.init(v),v}function o(s,l){let c=t(this.namespace+(typeof l>"u"?":":l)+s);return c.log=this.log,c}function n(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 c of l)c[0]==="-"?t.skips.push(c.slice(1)):t.names.push(c)}function i(s,l){let c=0,h=0,b=-1,v=0;for(;c<s.length;)if(h<l.length&&(l[h]===s[c]||l[h]==="*"))l[h]==="*"?(b=h,v=c,h++):(c++,h++);else if(b!==-1)h=b+1,v++,c=v;else return!1;for(;h<l.length&&l[h]==="*";)h++;return h===l.length}function a(){let s=[...t.names,...t.skips.map(l=>"-"+l)].join(",");return t.enable(""),s}function p(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 m(s){return s instanceof Error?s.stack||s.message:s}function f(){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}Fe.exports=or});var Oe=se((x,K)=>{x.formatArgs=ar;x.save=ir;x.load=sr;x.useColors=nr;x.storage=lr();x.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`."))}})();x.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 nr(){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 ar(e){if(e[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+e[0]+(this.useColors?"%c ":" ")+"+"+K.exports.humanize(this.diff),!this.useColors)return;let r="color: "+this.color;e.splice(1,0,r,"color: inherit");let t=0,o=0;e[0].replace(/%[a-zA-Z%]/g,n=>{n!=="%%"&&(t++,n==="%c"&&(o=t))}),e.splice(o,0,r)}x.log=console.debug||console.log||(()=>{});function ir(e){try{e?x.storage.setItem("debug",e):x.storage.removeItem("debug")}catch{}}function sr(){let e;try{e=x.storage.getItem("debug")||x.storage.getItem("DEBUG")}catch{}return!e&&typeof process<"u"&&"env"in process&&(e=process.env.DEBUG),e}function lr(){try{return localStorage}catch{}}K.exports=Re()(x);var{formatters:dr}=K.exports;dr.j=function(e){try{return JSON.stringify(e)}catch(r){return"[UnexpectedJSONParseError]: "+r.message}}});import{template as Et}from"solid-js/web";import{createComponent as Po}from"solid-js/web";import{setAttribute as No}from"solid-js/web";import{effect as Uo}from"solid-js/web";import{insert as Tt}from"solid-js/web";import{getOwner as jo}from"solid-js/web";import{createMemo as St}from"solid-js";import{createStore as qo,reconcile as Vo}from"solid-js/store";import{render as Bo}from"solid-js/web";import{template as B}from"solid-js/web";import{insert as D}from"solid-js/web";import{getOwner as q}from"solid-js/web";import{use as V}from"solid-js/web";import{createComponent as y}from"solid-js/web";import{createUniqueId as Ft,untrack as ye}from"solid-js";import{isServer as Rt,isDev as _e}from"solid-js/web";import{reconcile as Ot}from"solid-js/store";function le(e,r={}){let t=r.storage||globalThis.localStorage,o=r.name||`storage-${Ft()}`;if(!t)return Object.assign(e,{2:null});let n=r.storageOptions,i=r.serialize||JSON.stringify.bind(JSON),a=r.deserialize||JSON.parse.bind(JSON),p=t.getItem(o,n),m=typeof e[0]=="function"?s=>{try{let l=a(s);e[1](()=>l)}catch(l){_e&&console.warn(l)}}:s=>{try{let l=a(s);e[1](Ot(l))}catch(l){_e&&console.warn(l)}},f=!0;if(p instanceof Promise?p.then(s=>f&&s&&m(s)):p&&m(p),typeof r.sync?.[0]=="function"){let s=typeof e[0]=="function"?e[0]:()=>e[0];r.sync[0](l=>{l.key!==o||!Rt&&(l.url||globalThis.location.href)!==globalThis.location.href||l.newValue===i(ye(s))||m(l.newValue)})}return Object.assign([],e,{1:typeof e[0]=="function"?s=>{let l=e[1](s),c=s!=null?i(l):s;return r.sync?.[1](o,c),c!=null?t.setItem(o,c,n):t.removeItem(o,n),f=!1,l}:(...s)=>{e[1](...s);let l=ye(()=>i(e[0]));r.sync?.[1](o,l),t.setItem(o,l,n),f=!1},2:p})}import{createEffect as xt,createMemo as we,createSignal as S,on as yt,onCleanup as Oo,onMount as zo,Show as L}from"solid-js";import{createEffect as Ce,createSignal as ke,on as Se}from"solid-js";var C={leftCollapsed:"patchwork:leftSidebarCollapsed",rightCollapsed:"patchwork:rightSidebarCollapsed",leftWidth:"patchwork:leftSidebarWidth",rightWidth:"patchwork:rightSidebarWidth",contextToolId:"patchwork:contextSidebarToolId"},J="patchwork:collapse-context-sidebar",Y=400;function $e(e,r){let t=localStorage.getItem(e);return t?parseInt(t,10):r}function Ee(e){return localStorage.getItem(e)==="true"}function zt(){let[e,r]=ke(Ee(C.leftCollapsed)),[t,o]=ke($e(C.leftWidth,Y));return Ce(Se(e,n=>{localStorage.setItem(C.leftCollapsed,String(n))})),Ce(Se(t,n=>{localStorage.setItem(C.leftWidth,String(n))})),{isSidebarCollapsed:e,setIsSidebarCollapsed:r,leftSidebarWidth:t,setLeftSidebarWidth:o}}import{onCleanup as Mt,onMount as Lt}from"solid-js";var Te=180,Pt=720,Nt=120,De=3;function de(e,{isCollapsed:r,setCollapsed:t,setWidth:o}){let n=!1,i=null,a=!1,p=null,m=u=>{if(u<Nt){r()||t(!0),p=null;return}r()&&t(!1);let g=Math.min(Pt,u);o(g),p=g},f=()=>{r()||p!==null&&p<Te&&o(Te)},s=null,l=()=>{document.body.setAttribute("data-sidebar-resizing",e),s=document.createElement("div"),s.style.cssText="position:fixed;inset:0;z-index:2147483647;cursor:col-resize;",document.body.appendChild(s)},c=()=>{n=!1,i=null,document.body.style.userSelect="",document.body.removeAttribute("data-sidebar-resizing"),s?.remove(),s=null},h=u=>{u.preventDefault(),i={x:u.clientX,y:u.clientY},a=!1,p=null,n=!0,document.body.style.userSelect="none"},b=()=>{let u=n,g=a;c(),u&&g&&f()},v=u=>{if(!n||!i)return;let g=Math.abs(u.clientX-i.x),w=Math.abs(u.clientY-i.y);!a&&(g>De||w>De)&&(a=!0,l()),m(e==="left"?u.clientX:window.innerWidth-u.clientX)},d=u=>{if(a){u.preventDefault(),u.stopPropagation(),a=!1;return}t(g=>!g)};return Lt(()=>{document.addEventListener("mousemove",v),document.addEventListener("mouseup",b),Mt(()=>{document.removeEventListener("mousemove",v),document.removeEventListener("mouseup",b),n&&c()})}),{handleMouseDown:h,handleToggleClick:d}}import{createEffect as Ut,createSignal as jt,onCleanup as Wt}from"solid-js";var E=(e,r)=>{let[t,o]=jt(!1);return Ut(()=>{let n=r();if(!n)return;o(!1);let i=a=>{a.detail?.componentId===e&&o(!0)};n.addEventListener("patchwork:mounted",i),Wt(()=>n.removeEventListener("patchwork:mounted",i))}),t};import{createEffect as Ht,createSignal as qt,onCleanup as Vt}from"solid-js";var Bt=5e3,Jt=(e,r)=>{let[t,o]=qt(!1);return Ht(()=>{if(t())return;let n=e(),i=r();if(!n||!i)return;let a=m=>{let f=m.detail;f?.url&&f.url!==i||o(!0)};n.addEventListener("patchwork:mounted",a),n.addEventListener("patchwork:no-tool",a);let p=setTimeout(()=>o(!0),Bt);Vt(()=>{n.removeEventListener("patchwork:mounted",a),n.removeEventListener("patchwork:no-tool",a),clearTimeout(p)})}),t};import{getRegistry as Yt}from"@inkandswitch/patchwork-plugins";import{createMemo as Xt,createSignal as Kt,onCleanup as Gt}from"solid-js";function k(e){let r=Yt("patchwork:component"),[t,o]=Kt(0),n=r.on("changed",()=>o(i=>i+1));return Gt(n),Xt(()=>(t(),(r.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 H}from"solid-js/web";import{delegateEvents as no}from"solid-js/web";import{getOwner as ao}from"solid-js/web";import{effect as lt}from"solid-js/web";import{setAttribute as io}from"solid-js/web";import{memo as dt}from"solid-js/web";import{insert as z}from"solid-js/web";import{createComponent as M}from"solid-js/web";import{For as fo,Show as ge}from"solid-js";import{template as We}from"solid-js/web";import{delegateEvents as _r}from"solid-js/web";import{insert as Cr}from"solid-js/web";import"solid-js/web";import{setAttribute as Ue}from"solid-js/web";import{effect as je}from"solid-js/web";import{use as He}from"solid-js/web";import{createComponent as pe}from"solid-js/web";var Me=It(Oe(),1),ce=(0,Me.default)("cabbages");function ue(e){return typeof e=="object"&&e!=null&&Object.getPrototypeOf(e)==Object.prototype}function G(e){if(Array.isArray(e))return e.map(G);if(ue(e)){let r={};for(let t of Object.keys(e))r[t]=G(e[t]);return r}return e instanceof Date?new Date(e):ArrayBuffer.isView(e)?e.slice():e}var cr="\uFFFC";function Le(e,...r){if(r.length==0){ce("empty patch");return}let[t,o,n]=r,i=[...t];for(;;){let a=i.shift();if(!i.length){let m=Array.isArray(o);if(ue(e)&&m&&typeof a>"u"&&typeof o[0]=="string"){delete e[o[0]];return}if(m||typeof o=="number"){if(typeof a>"u")throw new Error("cant treat top level as a seq");a=a;let[f,s]=Array.isArray(o)?o:[o,o+1],l=Array.isArray(o)&&o.length==0;if(!l&&(f==null||s==null))throw new RangeError("it's all or nothing, no half measures");let c=typeof n>"u",h=f===s&&!c,b=l&&!c,v=!h&&!c&&!b;if(typeof e[a]>"u"){if(typeof e=="string")return;typeof n=="string"?e[a]="":e[a]=[]}let d=e[a];if(Array.isArray(d)){if(b){Array.isArray(n)?d.push(...n):d.push(n);return}if(h||v){Array.isArray(n)?d.splice(f,s-f,...n):d.splice(f,s-f,n);return}if(c){d.splice(f,s-f);return}throw new Error("i don't know what happened")}if(typeof d=="string"){if(b){e[a]=d+n;return}if(v||h){e[a]=d.slice(0,f)+(typeof n=="string"?n:n.map(u=>typeof u=="string"?u:cr).join(""))+d.slice(s);return}if(c){e[a]=d.slice(0,f)+d.slice(s);return}throw new Error("i don't know what happened")}if(ue(d)&&m&&typeof o[0]=="string"){delete d[o[0]];return}throw new Error("not implemented")}if(typeof a>"u"){if(typeof o!="string")throw new Error(`can't index top-level map with ${o}`);typeof n>"u"?delete e[o]:e[o]=n;return}if(typeof e[a]>"u"&&(e[a]={}),m){let[f,s]=o;f!=null&&s!=null&&(typeof n>"u"&&f!=null&&s!=null?delete e[a][f||s]:e[a][f||s]=n)}else if(typeof n>"u")delete e[a][o];else{if(typeof e[a]=="string")return;e[a][o]=n}return}if(typeof a>"u")throw new Error("cant treat top level as a seq");a=a;let p=i[0];if(typeof e[a]>"u")if(typeof p=="string")e[a]={};else if(typeof p=="number")e[a]=[];else throw new Error(`can't go down this road ${e}.${a}.${p}`);if(e=e[a],typeof e=="string"){ce("ignoring patch to a block marker in a string",t,o);return}if(e==null||typeof e!="object"&&typeof e!="function")throw new TypeError(`invalid path ${JSON.stringify(t)}: ${String(a)} is ${e}`)}}function ze(e,r){for(let t=0;t<r.length;t++)e=e?e[r[t]]:void 0;return e}function Pe(e,r){let t=e.path.slice(0,-1),o=e.path[e.path.length-1];switch(e.action){case"mark":case"unmark":return ce(`skipping ${e.action} because it doesn't affect material reality`),[];case"inc":if(r)return[t,o,ze(r.patchInfo.after,e.path)];throw new Error(`can't apply ${e.action} without payload argument`);case"conflict":if(r)return[t,o,ze(r.patchInfo.after,e.path)];throw new Error(`can't apply ${e.action} without payload argument`);case"del":return typeof o=="string"?[t,o]:[t,[o,o+(e.length||1)]];case"insert":return[t,[o,o],G(e.values)];case"splice":return[t,[o,o],[e.value]];case"put":return[t,o,G(e.value)]}}function Z(e){return r=>{for(let t of e.patches)Le(r,...Pe(t,e))}}import{createMemo as hr}from"solid-js";import{onCleanup as ur}from"solid-js";import{createStore as pr,produce as fr,reconcile as Ne}from"solid-js/store";var P=new WeakMap;function Q(e){if(ur(()=>{let i=P.get(e);i&&(i.refs--||i.cleanup())}),P.has(e)){let i=P.get(e);return i.refs++,i.store}let[r,t]=pr(structuredClone(e.doc()));P.set(e,{refs:0,store:r,cleanup(){e.off("change",o),e.off("delete",n),P.delete(e)}});function o(i){if(i.scopeReplaced){t(Ne(i.doc??{}));return}t(fr(Z(i)))}function n(){t(Ne({}))}return e.on("change",o),e.on("delete",n),r}import{getOwner as In,onCleanup as Fn,createSignal as Rn,untrack as On,sharedConfig as zn,onMount as Mn,DEV as Ln,equalFn as Pn}from"solid-js";import{isServer as Un}from"solid-js/web";var O=e=>typeof e=="function"&&!e.length?e():e;function ee(e){return hr(()=>O(e)&&Q(O(e)))}import{createEffect as gr,createResource as br,useContext as vr}from"solid-js";import{createContext as mr}from"solid-js";var te=mr(null);function N(e,r){let t=vr(te);if(!r?.repo&&!t)throw new Error("use outside <RepoContext> requires options.repo");let o=r?.repo||t;function n(){if(r?.["~skipInitialValue"])return;let p=O(e);if(p)return xr(o,p)}let[i,{mutate:a}]=br(e,p=>o.find(p),{initialValue:n()});return gr(()=>{O(e)||a()}),i}function wr(e){return typeof e.query=="function"}function xr(e,r){if(wr(e)){let o=e.query(r).state();return o.status=="ready"?o.handle:void 0}let t=e.findWithProgress(r).peek();return t.state=="ready"?t.handle:void 0}function re(e,r){let t=N(e,r);return[ee(t),t]}import{onCleanup as oa}from"solid-js";import{createSignal as aa}from"solid-js";import{createEffect as la,onCleanup as da}from"solid-js";import{createSignal as ua}from"solid-js";import{useContext as va}from"solid-js";import{getType as Sr}from"@inkandswitch/patchwork-filesystem";import{getRegistry as $r,isLoadedPlugin as Er}from"@inkandswitch/patchwork-plugins";import{createEffect as Tr,createMemo as oe,createSignal as fe,onCleanup as Dr,onMount as Ve,Show as Be}from"solid-js";var qe=We("<span class=threepane__title-text>"),kr=We("<input class=threepane__title-input type=text>");function Je(e){let r,[t,o]=fe();return Ve(()=>{o(r.closest("repo-provider")?.repo)}),pe(Be,{get when(){return t()},get fallback(){return(()=>{var n=qe(),i=r;return typeof i=="function"?He(i,n):r=n,n})()},children:n=>pe(Ar,{get docUrl(){return e.docUrl},get repo(){return n()}})})}function Ar(e){let[r,t]=re(()=>e.docUrl(),{repo:e.repo}),o=$r("patchwork:datatype"),[n,i]=fe(0);Ve(()=>{let d=o.on("changed",()=>i(u=>u+1));Dr(d)});let a=oe(()=>{let d=r();return d?Sr(d):void 0});Tr(()=>{let d=a();d&&o.load(d)});let p=oe(()=>{n();let d=a();if(!d)return;let u=o.get(d);return u&&Er(u)?u:void 0}),m=oe(()=>{let d=r(),u=p();if(!(!d||!u))return u.module.getTitle(d)}),f=oe(()=>!!t()&&typeof p()?.module.setTitle=="function"),[s,l]=fe(!1),c;function h(){f()&&(l(!0),queueMicrotask(()=>{c?.focus(),c?.select()}))}function b(d){if(!s()||(l(!1),!d))return;let u=c?.value.trim();if(!u||u===m())return;let g=t(),w=p()?.module.setTitle;!g||!w||g.change(_=>{w(_,u);let A=_["@patchwork"];A&&(A.title=u)})}function v(d){let u=e.docUrl(),g=d.dataTransfer;if(!u||!g)return;let w=m()??"Untitled",_=a();g.effectAllowed="copyLink",g.setData("text/x-patchwork-dnd",JSON.stringify({source:"threepane",items:[{url:u,name:w,type:_}]})),g.setData("text/x-patchwork-urls",JSON.stringify([u])),g.setData("text/uri-list",`${location.origin}${location.pathname}#doc=${u}\r
2
+ `),g.setData("text/plain",u)}return pe(Be,{get when(){return s()},get fallback(){return(()=>{var d=qe();return d.$$click=h,d.addEventListener("dragstart",v),Ue(d,"draggable",!0),Cr(d,()=>m()??"Untitled"),je(u=>{var g=!!f(),w=f()?"Rename":void 0;return g!==u.e&&d.classList.toggle("threepane__title-text--editable",u.e=g),w!==u.t&&Ue(d,"title",u.t=w),u},{e:void 0,t:void 0}),d})()},get children(){var d=kr();d.$$keydown=g=>{g.key==="Enter"?(g.preventDefault(),b(!0)):g.key==="Escape"&&(g.preventDefault(),b(!1))},d.addEventListener("blur",()=>b(!0));var u=c;return typeof u=="function"?He(u,d):c=d,je(()=>d.value=m()??""),d}})}_r(["keydown","click"]);import{template as ae}from"solid-js/web";import{delegateEvents as Yr}from"solid-js/web";import{getOwner as Xr}from"solid-js/web";import{insert as ne}from"solid-js/web";import{createComponent as W}from"solid-js/web";import{Show as ot}from"solid-js";import{template as Ze}from"solid-js/web";import{delegateEvents as Ir}from"solid-js/web";import{setStyleProperty as Fr}from"solid-js/web";import{insert as Rr}from"solid-js/web";import{use as Or}from"solid-js/web";import{setAttribute as U}from"solid-js/web";import{effect as Ye}from"solid-js/web";import{memo as j}from"solid-js/web";import{createComponent as Xe}from"solid-js/web";import{Show as Ke,createEffect as Lr,createSignal as Ge,on as Pr,onCleanup as Nr}from"solid-js";var zr=Ze('<button class="sidebar-toggle sidebar-toggle--resizable">'),Mr=Ze("<div class=sidebar>");function Ur(e){let r=parseFloat(getComputedStyle(e).transitionDuration);return Number.isFinite(r)?r*1e3:0}function Qe(e){let r=()=>`${e.isCollapsed()?0:e.width()}px`,t=()=>e.canExpand?.()??!0,o,[n,i]=Ge(!e.isCollapsed()),[a,p]=Ge(!1),m;Lr(Pr(e.isCollapsed,l=>{clearTimeout(m),l||i(!0);let c=o?Ur(o):0;if(c<5){p(!1),l&&i(!1);return}p(!0),m=setTimeout(()=>{p(!1),l&&i(!1)},c)},{defer:!0})),Nr(()=>clearTimeout(m));let f=()=>Xe(Ke,{get when(){return n()},get children(){return e.children}}),s=()=>Xe(Ke,{get when(){return!e.isCollapsed()||t()},get children(){var l=zr();return l.$$mousedown=c=>e.onMouseDown(c),l.$$click=c=>e.onToggleClick(c),Ye(c=>{var h=e.isCollapsed()?"Expand sidebar":"Toggle or resize sidebar",b=e.isCollapsed()?"Click to expand, drag to resize":"Click to toggle, drag to resize";return h!==c.e&&U(l,"aria-label",c.e=h),b!==c.t&&U(l,"title",c.t=b),c},{e:void 0,t:void 0}),l}});return(()=>{var l=Mr(),c=o;return typeof c=="function"?Or(c,l):o=l,Rr(l,(()=>{var h=j(()=>e.side==="left");return()=>h()?[j(f),j(s)]:[j(s),j(f)]})()),Ye(h=>{var b=e.side,v=a()?"":void 0,d=e.isCollapsed()?"":void 0,u=r();return b!==h.e&&U(l,"data-side",h.e=b),v!==h.t&&U(l,"data-moving",h.t=v),d!==h.a&&U(l,"data-collapsed",h.a=d),u!==h.o&&Fr(l,"width",h.o=u),h},{e:void 0,t:void 0,a:void 0,o:void 0}),l})()}Ir(["click","mousedown"]);import{template as tt}from"solid-js/web";import{delegateEvents as jr}from"solid-js/web";import{setAttribute as Wr}from"solid-js/web";import{effect as Hr}from"solid-js/web";import{insert as et}from"solid-js/web";import{createComponent as qr}from"solid-js/web";import{For as Jr}from"solid-js";var Vr=tt("<div role=tablist class=context-sidebar__tablist>"),Br=tt("<button type=button role=tab class=context-sidebar__tab>");function rt(e){let r=()=>{let t=e.items().map(n=>n.id),o=e.selectedToolId();return o&&t.includes(o)?o:t[0]};return(()=>{var t=Vr();return et(t,qr(Jr,{get each(){return e.items()},children:o=>(()=>{var n=Br();return n.$$click=()=>e.setSelectedToolId(o.id),et(n,()=>o.name),Hr(()=>Wr(n,"data-active",r()===o.id?"":void 0)),n})()})),t})()}jr(["click"]);var Kr=ae('<div class=context-sidebar__tabs><button type=button class=context-sidebar__close title="Hide context sidebar"aria-label="Hide context sidebar">'),Gr=ae("<div class=context-sidebar><div class=context-sidebar__content>"),Zr=ae("<patchwork-view>",!0,!1,!1),Qr=ae('<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 nt(e){let r=k("context-tool"),t=()=>{let o=r().map(i=>i.id),n=e.selectedToolId();return n&&o.includes(n)?n:o[0]};return W(Qe,{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 o=Gr(),n=o.firstChild;return ne(o,W(ot,{get when(){return r().length},get children(){var i=Kr(),a=i.firstChild;return ne(i,W(rt,{items:r,get selectedToolId(){return e.selectedToolId},get setSelectedToolId(){return e.setSelectedToolId}}),a),a.$$click=()=>e.onCollapse(),ne(a,W(he,{})),i}}),n),ne(n,W(ot,{get when(){return t()},keyed:!0,children:i=>(()=>{var a=Zr();return a.component=i,a._$owner=Xr(),a})()})),o}})}function he(){return Qr()}Yr(["click"]);import{template as eo}from"solid-js/web";import{effect as at}from"solid-js/web";import{getOwner as it}from"solid-js/web";import{createComponent as to}from"solid-js/web";import{memo as ro}from"solid-js/web";import{Show as oo}from"solid-js";var st=eo("<patchwork-view>",!0,!1,!1),me=e=>Array.isArray(e)?String(e[0]):String(e);function Di(e){let r=new Set;return e.filter(t=>{let o=me(t);return r.has(o)?!1:(r.add(o),!0)})}function Ai(e){return to(oo,{get when(){return ro(()=>!!Array.isArray(e.slot))()?e.slot:!1},get fallback(){return(()=>{var r=st();return r._$owner=it(),at(()=>r.component=String(e.slot)),r})()},children:r=>(()=>{var t=st();return t._$owner=it(),at(o=>{var n=r()[1],i=r()[0];return n!==o.e&&(t.docUrl=o.e=n),i!==o.t&&(t.toolId=o.t=i),o},{e:void 0,t:void 0}),t})()})}var so=H("<div class=threepane__title>"),lo=H("<div class=threepane__doctitle-tools>"),co=H('<button type=button class=frame__sidebar-toggle title="Show context sidebar"aria-label="Show context sidebar">'),uo=H("<div class=frame__topbar><div class=threepane__spacer>"),po=H("<patchwork-view>",!0,!1,!1);function ct(e){let r=()=>e.toolSlots()??[];return(()=>{var t=uo(),o=t.firstChild;return z(t,M(ge,{get when(){return e.docUrl()},get children(){var n=so();return z(n,M(Je,{get docUrl(){return e.docUrl}})),n}}),o),z(t,M(ge,{get when(){return dt(()=>!!e.docUrl())()&&r().length},get children(){var n=lo();return z(n,M(fo,{get each(){return r()},children:i=>(()=>{var a=po();return a._$owner=ao(),lt(p=>{var m=me(i),f=e.docUrl();return m!==p.e&&(a.toolId=p.e=m),f!==p.t&&(a.docUrl=p.t=f),p},{e:void 0,t:void 0}),a})()})),n}}),null),z(t,M(ge,{get when(){return dt(()=>!!e.hasContext())()&&e.isRightCollapsed()},get children(){var n=co();return n.$$click=()=>e.onToggleRight(),io(n,"aria-pressed",!1),z(n,M(he,{})),n}}),null),lt(()=>t.classList.toggle("frame__topbar--left-collapsed",!!e.isLeftCollapsed())),t})()}no(["click"]);import{createEffect as ht,onCleanup as wo}from"solid-js";import{createEffect as ho,createSignal as ut,onCleanup as pt,onMount as mo}from"solid-js";import{createStore as go,reconcile as bo}from"solid-js/store";import*as be from"@inkandswitch/patchwork-providers";function vo(e){return typeof e=="function"?e():e}function ft(e,r){let[t,o]=ut(void 0);mo(()=>{let f=vo(e);if(!f)return;let s=!1,l=be.subscribe(f,r,c=>{if(!c)return;let h="repo"in window?window.repo:void 0;h&&Promise.resolve(h.find(c)).then(b=>{s||o(()=>b)})});pt(()=>{s=!0,l()})});let[n,i]=go({}),[a,p]=ut(!1);return ho(()=>{let f=t();if(!f){p(!1);return}let s=()=>{i(bo(f.doc()??{})),p(!0)};s(),f.on("change",s),pt(()=>f.off("change",s))}),[()=>a()?n:void 0,t]}var mt="comments-view",gt="threepane-context-sidebar";function bt(e){let[r,t]=ft(e.element,{type:"patchwork:focus"}),o=k("context-tool"),n=()=>o().some(a=>a.id===mt);ht(()=>{let a=t();!a||!n()||(a.change(p=>{p.commentViewOpeners||(p.commentViewOpeners={}),p.commentViewOpeners[gt]=!0}),wo(()=>a.change(p=>{p.commentViewOpeners&&delete p.commentViewOpeners[gt]})))});let i;return ht(()=>{let a=r()?.openCommentView??0;if(i===void 0){i=a;return}a!==i&&(i=a,n()&&e.open(mt))}),null}import{template as ve}from"solid-js/web";import{effect as xo}from"solid-js/web";import{getOwner as yo}from"solid-js/web";import{insert as vt}from"solid-js/web";import{memo as _o}from"solid-js/web";import{createComponent as Co}from"solid-js/web";import{use as ko}from"solid-js/web";import{Show as To}from"solid-js";var So=ve("<div class=document-view>"),$o=ve("<patchwork-view>",!0,!1,!1),Eo=ve("<div class=placeholder>Select a document in the sidebar");function wt({viewKey:e,selectedDocUrl:r,toolId:t,ref:o}){return(()=>{var n=So(),i=o;return typeof i=="function"?ko(i,n):o=n,vt(n,Co(To,{get when(){return e()},keyed:!0,children:a=>(()=>{var p=$o();return p._$owner=yo(),xo(m=>{var f=r(),s=t();return f!==m.e&&(p.docUrl=m.e=f),s!==m.t&&(p.toolId=m.t=s),m},{e:void 0,t:void 0}),p})()}),null),vt(n,(()=>{var a=_o(()=>!r());return()=>a()&&Eo()})(),null),n})()}var Do=B("<patchwork-view component=patchwork-draft-state-provider>",!0,!1,!1),Ao=B("<patchwork-view component=patchwork-draft-overlay-provider>",!0,!1,!1),Io=B("<div class=frame__main-column><div class=frame__doc-column><div class=main-area>"),Fo=B("<patchwork-view component=patchwork-comments-provider><patchwork-view component=patchwork-focus-provider>",!0,!1,!1),Ro=B("<patchwork-view>",!0,!1,!1);function _t(e){let[r,t]=S(e.initialRightCollapsed()),[o,n]=S(e.initialRightWidth());xt(yt(r,c=>{try{localStorage.setItem(C.rightCollapsed,String(c))}catch{}},{defer:!0})),xt(yt(o,c=>{try{localStorage.setItem(C.rightWidth,String(c))}catch{}},{defer:!0}));let i=de("right",{isCollapsed:r,setCollapsed:t,setWidth:n});zo(()=>{let c=()=>t(!0);window.addEventListener(J,c),Oo(()=>window.removeEventListener(J,c))});let[a,p]=le(S(),{name:C.contextToolId}),[m,f]=S(),s=E("patchwork-draft-state-provider",m),l=()=>s()?m():void 0;return y(L,{get when(){return e.selectedDocUrl()},keyed:!0,children:c=>(()=>{var h=Do();return V(f,h),h.docUrl=c,h._$owner=q(),D(h,y(L,{get when(){return l()},children:b=>y(Mo,{get host(){return b()},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:r,setIsRightSidebarCollapsed:t,rightSidebarWidth:o,get handleMouseDown(){return i.handleMouseDown},get handleToggleClick(){return i.handleToggleClick},selectedContextToolId:a,setSelectedContextToolId:p})})),h})()})}function Mo(e){let r=k("context-tool"),t=()=>r().length>0,o=we(()=>e.selectedDocUrl()),[n,i]=S(),a=E("patchwork-draft-overlay-provider",n),[p,m]=S(),f=E("patchwork-comments-provider",p),[s,l]=S(),c=E("patchwork-focus-provider",s),h=we(()=>a()&&f()&&c()),b=k("document-provider"),v=we(()=>b().map(d=>d.id),[],{equals:(d,u)=>d.length===u.length&&d.every((g,w)=>g===u[w])});return(()=>{var d=Ao();return V(i,d),d._$owner=q(),D(d,y(Ct,{get ids(){return v()},render:()=>(()=>{var u=Fo(),g=u.firstChild;return V(m,u),u._$owner=q(),V(l,g),g._$owner=q(),D(g,y(L,{get when(){return h()},get children(){return[y(bt,{get element(){return s()},open:w=>{e.setSelectedContextToolId(w),e.setIsRightSidebarCollapsed(!1)}}),(()=>{var w=Io(),_=w.firstChild,A=_.firstChild;return D(_,y(ct,{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($=>!$)}),A),D(A,y(wt,{viewKey:o,get selectedDocUrl(){return e.selectedDocUrl},get toolId(){return e.selectedToolId},ref:$=>e.setMainDocElement?.($)})),D(w,y(L,{get when(){return t()},get children(){return y(nt,{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),w})()]}})),u})()})),d})()}function Ct(e){return y(L,{get when(){return e.ids[0]},keyed:!0,get fallback(){return e.render()},children:r=>{let[t,o]=S(),n=E(r,t);return(()=>{var i=Ro();return V(o,i),i.component=r,i._$owner=q(),D(i,y(L,{get when(){return n()},get children(){return y(Ct,{get ids(){return e.ids.slice(1)},get render(){return e.render}})}})),i})()}})}var ie=`:root,
3
3
  :host,
4
4
  [theme] {
5
5
  --threepane-bg: var(--studio-fill, white);
@@ -58,6 +58,9 @@ import{a as se,b as It}from"./chunk-FW4363Y4.js";var Ie=se((yn,Ae)=>{var I=1e3,F
58
58
  (it mixes toward the chrome ink, so it reads darker on light themes and
59
59
  lighter on dark ones), plus a primary-tinted glow + grab pill on hover. */
60
60
  --threepane-sidebar-divider: var(--studio-chrome-offset-20, #d4d4d4);
61
+ /* the account bar's "you": a soft wash on hover, like a sidebar row */
62
+ --threepane-sidebar-hover: var(--studio-chrome-hover-fill, var(--studio-chrome-offset-10, #f2f2f2));
63
+ --threepane-sidebar-muted: var(--studio-chrome-line-offset-50, var(--studio-line-offset-50, #999));
61
64
  --threepane-resize-glow: color-mix(in oklch, var(--studio-primary-fill, var(--studio-primary, #35f7ca)), transparent 35%);
62
65
  --threepane-resize-pill: var(--studio-primary-fill, var(--studio-primary, #35f7ca));
63
66
 
@@ -566,14 +569,110 @@ import{a as se,b as It}from"./chunk-FW4363Y4.js";var Ie=se((yn,Ae)=>{var I=1e3,F
566
569
  border-color: var(--threepane-sidebar-divider);
567
570
  }
568
571
 
569
- .threepane-account-bar__avatar {
570
- padding: 0;
572
+ /* you: your picture and your name, as one pill. opens the settings page */
573
+ .threepane-account-bar__me {
574
+ display: flex;
575
+ align-items: center;
576
+ gap: var(--threepane-space-xs);
577
+ min-width: 0;
578
+ padding: var(--threepane-space-3xs);
579
+ border: none;
580
+ border-radius: var(--threepane-radius-round);
581
+ background: transparent;
582
+ color: inherit;
583
+ font: inherit;
584
+ text-align: left;
585
+ cursor: var(--studio-cursor-pointer, pointer);
586
+ transition: background var(--studio-transition-fast, 0.1s ease);
587
+ }
588
+
589
+ /* only a name needs room after it; just a picture stays round */
590
+ .threepane-account-bar__me:has(.threepane-account-bar__name) {
591
+ padding-right: var(--threepane-space-sm);
592
+ }
593
+
594
+ @media (hover: hover) and (pointer: fine) {
595
+ .threepane-account-bar__me:hover {
596
+ background: var(--threepane-sidebar-hover);
597
+ }
571
598
  }
572
599
 
573
- .threepane-account-bar__avatar patchwork-view {
600
+ .threepane-account-bar__me:focus-visible {
601
+ outline: var(--studio-focus-ring, 2px solid currentColor);
602
+ outline-offset: 1px;
603
+ }
604
+
605
+ .threepane-account-bar__me patchwork-view {
574
606
  display: block;
607
+ flex: none;
608
+ width: 24px;
609
+ height: 24px;
610
+ /* initials, when there's no picture, sized to the circle */
611
+ font-size: 9.5px;
612
+ font-weight: 600;
613
+ letter-spacing: 0.02em;
614
+ }
615
+
616
+ /* contact-avatar draws itself at 2rem unless it's told to fill its view */
617
+ .threepane-account-bar__me patchwork-view .contact-avatar {
618
+ display: flex;
619
+ box-sizing: border-box;
575
620
  width: 100%;
621
+ min-width: 0;
622
+ max-width: none;
576
623
  height: 100%;
624
+ min-height: 0;
625
+ max-height: none;
626
+ }
627
+
628
+ .threepane-account-bar__nobody {
629
+ box-sizing: border-box;
630
+ flex: none;
631
+ width: 24px;
632
+ height: 24px;
633
+ border: var(--studio-border-width, 1px) dashed var(--threepane-sidebar-muted);
634
+ border-radius: 50%;
635
+ }
636
+
637
+ .threepane-account-bar__name {
638
+ min-width: 0;
639
+ overflow: hidden;
640
+ font-weight: 600;
641
+ white-space: nowrap;
642
+ text-overflow: ellipsis;
643
+ }
644
+
645
+ .threepane-account-menu {
646
+ position: fixed;
647
+ z-index: 20;
648
+ display: flex;
649
+ box-sizing: border-box;
650
+ width: 184px;
651
+ max-width: calc(100vw - 8px);
652
+ flex-direction: column;
653
+ padding: var(--threepane-space-3xs);
654
+ border: var(--studio-border-width, 1px) var(--studio-border-style, solid) var(--threepane-sidebar-divider);
655
+ border-radius: var(--threepane-radius-sm);
656
+ background: var(--threepane-bg);
657
+ color: var(--threepane-fg);
658
+ box-shadow: var(--studio-shadow-menu, 0 4px 12px rgb(0 0 0 / 20%));
659
+ }
660
+
661
+ .threepane-account-menu button {
662
+ padding: var(--threepane-space-xs) var(--threepane-space-sm);
663
+ border: none;
664
+ border-radius: var(--threepane-radius-xs);
665
+ background: transparent;
666
+ color: inherit;
667
+ font: inherit;
668
+ text-align: left;
669
+ cursor: var(--studio-cursor-pointer, pointer);
670
+ }
671
+
672
+ .threepane-account-menu button:hover,
673
+ .threepane-account-menu button:focus-visible {
674
+ outline: none;
675
+ background: var(--threepane-sidebar-hover);
577
676
  }
578
677
 
579
678
  /* Left sidebar: a stack of configured widgets. The widgets start below the
@@ -858,5 +957,5 @@ body[data-sidebar-resizing] .frame__topbar {
858
957
  min-width: 0;
859
958
  overflow: hidden;
860
959
  }
861
- `;function kt(){let e="patchwork-frame-styles",r=document.getElementById(e);if(r){r.textContent!==ie&&(r.textContent=ie);return}let t=document.createElement("style");t.id=e,t.textContent=ie,document.head.append(t)}var Wo=Et("<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),Ho=Et("<div class=frame>");function Ls(e){let r=St(()=>{let o=new Set,n=e.selectedDocUrl();return n&&o.add(n),e.contactUrl&&o.add(e.contactUrl),[...o]}),t=St(()=>JSON.stringify({selectedDocUrl:e.selectedDocUrl(),selectedToolId:e.selectedToolId(),doctitleSlots:e.doctitleSlots(),isLeftCollapsed:e.isLeftCollapsed(),initialRightWidth:e.initialRightWidth(),initialRightCollapsed:e.initialRightCollapsed()}));return(()=>{var o=Wo(),n=o.firstChild;return o._$owner=jo(),Tt(n,t),Uo(()=>No(o,"automerge-allowlist",r().join(","))),o})()}function $t(e){if(!e?.textContent)return{};try{return JSON.parse(e.textContent)}catch(r){return console.error("[threepane-isolation-root] bad props JSON:",r),{}}}function zs(e){kt();let r=e.querySelector('script[type="application/json"]'),[t,o]=qo($t(r)),n=new MutationObserver(()=>{o(Vo($t(r)))});r&&n.observe(r,{characterData:!0,childList:!0,subtree:!0});let i=Bo(()=>(()=>{var a=Ho();return Tt(a,Po(_t,{selectedDocUrl:()=>t.selectedDocUrl,selectedToolId:()=>t.selectedToolId,doctitleSlots:()=>t.doctitleSlots,isLeftCollapsed:()=>t.isLeftCollapsed??!1,initialRightWidth:()=>t.initialRightWidth??Y,initialRightCollapsed:()=>t.initialRightCollapsed??!1})),a})(),e);return()=>{n.disconnect(),i()}}export{Oe as a,N as b,C as c,J as d,Y as e,$e as f,Ee as g,Mt as h,de as i,Jt as j,Qe as k,me as l,Di as m,Ai as n,wt as o,_t as p,kt as q,Ls as r,zs as s};
862
- //# sourceMappingURL=chunk-UJ7QHTY6.js.map
960
+ `;function kt(){let e="patchwork-frame-styles",r=document.getElementById(e);if(r){r.textContent!==ie&&(r.textContent=ie);return}let t=document.createElement("style");t.id=e,t.textContent=ie,document.head.append(t)}var Wo=Et("<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),Ho=Et("<div class=frame>");function Ms(e){let r=St(()=>{let o=new Set,n=e.selectedDocUrl();return n&&o.add(n),e.contactUrl&&o.add(e.contactUrl),[...o]}),t=St(()=>JSON.stringify({selectedDocUrl:e.selectedDocUrl(),selectedToolId:e.selectedToolId(),doctitleSlots:e.doctitleSlots(),isLeftCollapsed:e.isLeftCollapsed(),initialRightWidth:e.initialRightWidth(),initialRightCollapsed:e.initialRightCollapsed()}));return(()=>{var o=Wo(),n=o.firstChild;return o._$owner=jo(),Tt(n,t),Uo(()=>No(o,"automerge-allowlist",r().join(","))),o})()}function $t(e){if(!e?.textContent)return{};try{return JSON.parse(e.textContent)}catch(r){return console.error("[threepane-isolation-root] bad props JSON:",r),{}}}function Ls(e){kt();let r=e.querySelector('script[type="application/json"]'),[t,o]=qo($t(r)),n=new MutationObserver(()=>{o(Vo($t(r)))});r&&n.observe(r,{characterData:!0,childList:!0,subtree:!0});let i=Bo(()=>(()=>{var a=Ho();return Tt(a,Po(_t,{selectedDocUrl:()=>t.selectedDocUrl,selectedToolId:()=>t.selectedToolId,doctitleSlots:()=>t.doctitleSlots,isLeftCollapsed:()=>t.isLeftCollapsed??!1,initialRightWidth:()=>t.initialRightWidth??Y,initialRightCollapsed:()=>t.initialRightCollapsed??!1})),a})(),e);return()=>{n.disconnect(),i()}}export{Oe as a,N as b,re as c,C as d,J as e,Y as f,$e as g,Ee as h,zt as i,de as j,Jt as k,Qe as l,me as m,Di as n,Ai as o,wt as p,_t as q,kt as r,Ms as s,Ls as t};
961
+ //# sourceMappingURL=chunk-2HSAKXXA.js.map