@inkandswitch/patchwork-pkg-base 0.0.109 → 0.0.111
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/module-settings-url +1 -1
- package/package.json +1 -1
- package/packages/account-history/dist/assets/{HistoryRecorder-_3PrVW6n.js → HistoryRecorder-TRWDhOKO.js} +2 -3
- package/packages/account-history/dist/assets/HistoryRecorder-TRWDhOKO.js.map +1 -0
- package/packages/account-history/dist/assets/{index-DYqbrbYW.js → index-DBnlnSMc.js} +2 -2
- package/packages/account-history/dist/assets/{index-DYqbrbYW.js.map → index-DBnlnSMc.js.map} +1 -1
- package/packages/account-history/dist/index.js +1 -1
- package/packages/add-doc-to-sidebar-button/button.js +141 -25
- package/packages/add-doc-to-sidebar-button/button.test.js +114 -0
- package/packages/theming/dist/{active-theme-CC3CS64F.js → active-theme-6H5UANUR.js} +2 -2
- package/packages/theming/dist/{chunk-DH4YUYFJ.js → chunk-HHCCYVOT.js} +1 -2
- package/packages/theming/dist/chunk-HHCCYVOT.js.map +7 -0
- package/packages/theming/dist/main.js +3 -3
- package/packages/theming/dist/{theme-titlebar-BO2Y2GRN.js → theme-titlebar-UX4BND5Z.js} +2 -2
- package/packages/theming/dist/{theme-tray-V6BEXQWR.js → theme-tray-B477G2WR.js} +2 -2
- package/packages/theming/dist/tool.js +1 -1
- package/packages/threepane/dist/IsolatedDocumentArea-5WRK3TWL.js +2 -0
- package/packages/threepane/dist/PatchworkFrame-22UEOQ6E.js +2 -0
- package/packages/threepane/dist/PatchworkFrame-22UEOQ6E.js.map +7 -0
- package/packages/threepane/dist/{chunk-XOKWELWP.js → chunk-U4IJVHXK.js} +10 -5
- package/packages/threepane/dist/chunk-U4IJVHXK.js.map +7 -0
- package/packages/threepane/dist/index.js +1 -1
- package/plugin-registry-url +1 -1
- package/packages/account-history/dist/assets/HistoryRecorder-_3PrVW6n.js.map +0 -1
- package/packages/theming/dist/chunk-DH4YUYFJ.js.map +0 -7
- package/packages/threepane/dist/IsolatedDocumentArea-UTNJADQ7.js +0 -2
- package/packages/threepane/dist/PatchworkFrame-U2TVLGCZ.js +0 -2
- package/packages/threepane/dist/PatchworkFrame-U2TVLGCZ.js.map +0 -7
- package/packages/threepane/dist/chunk-XOKWELWP.js.map +0 -7
- /package/packages/theming/dist/{active-theme-CC3CS64F.js.map → active-theme-6H5UANUR.js.map} +0 -0
- /package/packages/theming/dist/{theme-titlebar-BO2Y2GRN.js.map → theme-titlebar-UX4BND5Z.js.map} +0 -0
- /package/packages/theming/dist/{theme-tray-V6BEXQWR.js.map → theme-tray-B477G2WR.js.map} +0 -0
- /package/packages/threepane/dist/{IsolatedDocumentArea-UTNJADQ7.js.map → IsolatedDocumentArea-5WRK3TWL.js.map} +0 -0
|
@@ -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(`<div class=threepane-sidebar><div class=threepane-sidebar__footer><footer class=threepane-account-bar><button type=button class=threepane-account-bar__button>Settings`),\n _tmpl$7 = /*#__PURE__*/_$template(`<div class=frame__tray-dock>`),\n _tmpl$8 = /*#__PURE__*/_$template(`<button type=button class=\"threepane-account-bar__button threepane-account-bar__avatar\"title=Account aria-label=Account><patchwork-view tool-id=contact-avatar>`, true, false, false),\n _tmpl$9 = /*#__PURE__*/_$template(`<button type=button class=threepane-account-bar__button>Packages`),\n _tmpl$0 = /*#__PURE__*/_$template(`<svg xmlns=http://www.w3.org/2000/svg width=18 height=18 viewBox=\"0 0 24 24\"fill=none stroke=var(--studio-chrome-line) stroke-width=1.75 stroke-linecap=round stroke-linejoin=round><rect width=18 height=18 x=3 y=3 rx=2></rect><path d=\"M9 3v18\">`);\nimport \"@inkandswitch/patchwork-elements\";\nimport { useDocHandle } from \"solid-automerge\";\nimport { subscribe } from \"@inkandswitch/patchwork-providers\";\nimport { useSidebarState, useSidebarResize, useMainDocMounted, SIDEBAR_KEYS, COLLAPSE_CONTEXT_SIDEBAR_EVENT, getStoredNumber, getStoredBoolean, DEFAULT_SIDEBAR_WIDTH } from \"./hooks\";\nimport { Sidebar } from \"./components/Sidebar\";\nimport { SidebarWidgets } from \"./components/SidebarWidgets\";\nimport { DocumentAreaRoot } from \"./components/DocumentAreaRoot\";\nimport { IsolatedDocumentArea } from \"./components/IsolatedDocumentArea\";\nimport { MainDocumentView } from \"./components/MainDocumentView\";\nimport { Tray } from \"./components/Tray\";\nimport { createEffect, createMemo, createSignal, onCleanup, onMount, Show } from \"solid-js\";\nimport { render } from \"solid-js/web\";\nimport { ensureThreepaneConfig } from \"./account/ensureThreepaneConfig\";\nimport { seedExampleDocuments } from \"./account/seedExampleDocuments\";\nimport { handleAddToSidebar } from \"./account/addToSidebar\";\nimport { ensureFrameStyles } from \"./ensureFrameStyles\";\nimport { useHandleDoc } from \"./hooks/useHandleDoc\";\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 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 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 hasTray = () => props.traySlots().length > 0;\n let sidebarContentEl;\n let footerEl;\n createEffect(() => {\n if (isCollapsed()) return;\n const el = sidebarContentEl;\n if (!el) return;\n const footer = footerEl;\n const onOpen = event => {\n const {\n url,\n toolId\n } = event.detail;\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$6(),\n _el$17 = _el$16.firstChild,\n _el$18 = _el$17.firstChild,\n _el$19 = _el$18.firstChild;\n var _ref$3 = sidebarContentEl;\n typeof _ref$3 === \"function\" ? _$use(_ref$3, _el$16) : sidebarContentEl = _el$16;\n _$insert(_el$16, _$createComponent(SidebarWidgets, {\n get widgets() {\n return props.sidebarWidgets;\n },\n get configHandle() {\n return props.configHandle;\n },\n get rootFolderUrl() {\n return props.rootFolderUrl;\n },\n get ready() {\n return props.widgetsReady;\n }\n }), _el$17);\n var _ref$4 = footerEl;\n typeof _ref$4 === \"function\" ? _$use(_ref$4, _el$17) : footerEl = _el$17;\n _$insert(_el$18, _$createComponent(Show, {\n get when() {\n return props.contactUrl();\n },\n children: contactUrl => (() => {\n var _el$21 = _tmpl$8(),\n _el$22 = _el$21.firstChild;\n _el$21.$$click = e => dispatchOpen(e.currentTarget, {\n url: props.accountDocUrl,\n toolId: \"account-picker\"\n });\n _el$22._$owner = _$getOwner();\n _$effect(() => _el$22.docUrl = contactUrl());\n return _el$21;\n })()\n }), _el$19);\n _$insert(_el$18, _$createComponent(Show, {\n get when() {\n return props.moduleSettingsUrl();\n },\n children: moduleSettingsUrl => (() => {\n var _el$23 = _tmpl$9();\n _el$23.$$click = e => dispatchOpen(e.currentTarget, {\n url: moduleSettingsUrl(),\n toolId: \"packages\"\n });\n return _el$23;\n })()\n }), _el$19);\n _el$19.$$click = e => dispatchOpen(e.currentTarget, {\n url: props.accountDocUrl,\n toolId: \"frame-configurator\"\n });\n _$effect(() => _el$16.classList.toggle(\"threepane-sidebar--has-tray\", !!hasTray()));\n return _el$16;\n }\n }), _$createComponent(Show, {\n get when() {\n return hasTray();\n },\n get children() {\n var _el$20 = _tmpl$7();\n _$insert(_el$20, _$createComponent(Tray, {\n get slots() {\n return props.traySlots;\n }\n }));\n _$effect(_p$ => {\n var _v$7 = !!isCollapsed(),\n _v$8 = `${props.sidebarState.leftSidebarWidth()}px`;\n _v$7 !== _p$.e && _el$20.classList.toggle(\"frame__tray-dock--collapsed\", _p$.e = _v$7);\n _v$8 !== _p$.t && _$setStyleProperty(_el$20, \"width\", _p$.t = _v$8);\n return _p$;\n }, {\n e: undefined,\n t: undefined\n });\n return _el$20;\n }\n }), _$memo(() => props.children)];\n}\nfunction PanelLeftIcon() {\n return _tmpl$0();\n}\nexport function renderPatchworkFrame(isolation) {\n return (handle, element) => {\n return render(() => _$createComponent(PatchworkFrame, {\n handle: handle,\n get repo() {\n return element.repo;\n },\n isolation: isolation\n }), element);\n };\n}\n_$delegateEvents([\"click\"]);", "import { template as _$template } from \"solid-js/web\";\nimport { delegateEvents as _$delegateEvents } from \"solid-js/web\";\nimport { memo as _$memo } from \"solid-js/web\";\nimport { insert as _$insert } from \"solid-js/web\";\nimport { createComponent as _$createComponent } from \"solid-js/web\";\nvar _tmpl$ = /*#__PURE__*/_$template(`<div class=threepane-widgets>`),\n _tmpl$2 = /*#__PURE__*/_$template(`<div class=threepane-widgets__empty><button type=button class=threepane-widgets__add>\uFF0B Add document list`),\n _tmpl$3 = /*#__PURE__*/_$template(`<div class=threepane-widget>`);\nimport { For, Show } from \"solid-js\";\nimport { SlotView } from \"./SlotView\";\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": "mRAAA,OAAS,YAAYA,MAAkB,eACvC,OAAS,kBAAkBC,OAAwB,eACnD,OAAS,QAAQC,OAAc,eAC/B,OAAS,oBAAoBC,OAA0B,eACvD,OAAS,gBAAgBC,MAAsB,eAC/C,OAAS,UAAUC,MAAgB,eACnC,OAAS,YAAYC,MAAkB,eACvC,OAAS,OAAOC,MAAa,eAC7B,OAAS,UAAUC,MAAgB,eACnC,OAAS,mBAAmBC,MAAyB,eAWrD,MAAO,mCAEP,OAAS,aAAAC,OAAiB,oCCtB1B,OAAS,YAAYC,MAAkB,eACvC,OAAS,kBAAkBC,OAAwB,eACnD,OAAS,QAAQC,OAAc,eAC/B,OAAS,UAAUC,OAAgB,eACnC,OAAS,mBAAmBC,MAAyB,eAIrD,OAAS,OAAAC,GAAK,QAAAC,MAAY,WAH1B,IAAIC,GAAsBC,EAAW,+BAA+B,EAClEC,GAAuBD,EAAW,+GAA0G,EAC5IE,GAAuBF,EAAW,8BAA8B,EAI3D,SAASG,GAAeC,EAAO,CACpC,IAAMC,EAAkB,IAAM,CAC5B,IAAMC,EAAOF,EAAM,cAAc,EAC3BG,EAASH,EAAM,aAAa,EAC9B,CAACE,GAAQ,CAACC,GACdA,EAAO,OAAOC,GAAO,CACnBA,EAAI,QAAQ,QAAQ,KAAK,CAACC,EAAoBH,CAAI,CAAC,CACrD,CAAC,CACH,EACA,OAAQ,IAAM,CACZ,IAAII,EAAOX,GAAO,EAClB,OAAAY,GAASD,EAAME,EAAkBC,EAAM,CACrC,IAAI,MAAO,CACT,OAAOT,EAAM,MAAM,CACrB,EACA,IAAI,UAAW,CACb,OAAOQ,EAAkBC,EAAM,CAC7B,IAAI,MAAO,CACT,OAAOT,EAAM,QAAQ,EAAE,MACzB,EACA,IAAI,UAAW,CACb,OAEEQ,EAAkBC,EAAM,CACtB,IAAI,MAAO,CACT,OAAOC,GAAO,IAAM,CAAC,CAACV,EAAM,cAAc,CAAC,EAAE,GAAKA,EAAM,aAAa,CACvE,EACA,IAAI,UAAW,CACb,IAAIW,EAAQd,GAAQ,EAClBe,EAAQD,EAAM,WAChB,OAAAC,EAAM,QAAUX,EACTU,CACT,CACF,CAAC,CAEL,EACA,IAAI,UAAW,CACb,OAAOH,EAAkBK,GAAK,CAC5B,IAAI,MAAO,CACT,OAAOb,EAAM,QAAQ,CACvB,EACA,SAAUc,IAAW,IAAM,CACzB,IAAIC,EAAQjB,GAAQ,EACpB,OAAAS,GAASQ,EAAOP,EAAkBQ,EAAU,CAC1C,KAAMF,CACR,CAAC,CAAC,EACKC,CACT,GAAG,CACL,CAAC,CACH,CACF,CAAC,CACH,CACF,CAAC,CAAC,EACKT,CACT,GAAG,CACL,CACAW,GAAiB,CAAC,OAAO,CAAC,ECnE1B,OAAS,YAAYC,OAAkB,eACvC,OAAS,gBAAgBC,OAAsB,eAC/C,OAAS,UAAUC,OAAgB,eACnC,OAAS,UAAUC,OAAgB,eACnC,OAAS,mBAAmBC,MAAyB,eAGrD,OAAS,OAAAC,GAAK,QAAAC,OAAY,WAF1B,IAAIC,GAAsBC,GAAW,wBAAwB,EAC3DC,GAAuBD,GAAW,8BAA8B,EAG3D,SAASE,GAAKC,EAAO,CAC1B,OAAOC,EAAkBC,GAAM,CAC7B,IAAI,MAAO,CACT,OAAOF,EAAM,MAAM,EAAE,MACvB,EACA,IAAI,UAAW,CACb,IAAIG,EAAOP,GAAO,EAClB,OAAAQ,GAASD,EAAMF,EAAkBI,GAAK,CACpC,IAAI,MAAO,CACT,OAAOC,EAAYN,EAAM,MAAM,CAAC,CAClC,EACA,SAAUO,IAAS,IAAM,CACvB,IAAIC,EAAQV,GAAQ,EACpB,OAAAM,GAASI,EAAOP,EAAkBQ,EAAU,CAC1C,KAAMF,CACR,CAAC,CAAC,EACFG,GAAS,IAAMC,GAAeH,EAAO,eAAgBI,EAAOL,CAAI,CAAC,CAAC,EAC3DC,CACT,GAAG,CACL,CAAC,CAAC,EACKL,CACT,CACF,CAAC,CACH,CFFA,OAAS,gBAAAU,EAAc,cAAAC,GAAY,gBAAAC,EAAc,aAAAC,EAAW,WAAAC,GAAS,QAAAC,MAAY,WACjF,OAAS,UAAAC,OAAc,eG9BvB,OAAS,wBAAAC,OAA4B,kCCDrC,OACE,eAAAC,OAGK,kCAEA,SAASC,EACdC,EAC4B,CAC5B,OAAOF,GACL,oBACF,EAAE,cAAcE,CAAE,CACpB,CDCA,IAAMC,GAA2B,IAAI,IAAI,CAAC,iBAAkB,QAAQ,CAAC,EAGrE,SAASC,GAAsBC,EAAyC,CACtE,OAAOA,EAAgB,CAAC,CAACC,EAAoBD,CAAa,CAAC,EAAI,CAAC,CAClE,CAQO,SAASE,GACdC,EACAH,EACA,CACA,GAAK,GAAAG,EAAI,SAAW,IAAM,GAO1B,IALKA,EAAI,UAASA,EAAI,QAAU,CAAE,QAAS,CAAC,CAAE,GAC1CH,GAAiB,CAACG,EAAI,QAAQ,SAAS,SACzCA,EAAI,QAAQ,QAAUJ,GAAsBC,CAAa,GAGvD,CAACG,EAAI,KACPA,EAAI,KAAOC,EAAmB,MAAM,MAC/B,CAGL,IAAMC,EAASC,EAAYH,EAAI,IAAI,EAC/BE,EAAO,SAAWF,EAAI,KAAK,SAAQA,EAAI,KAAOE,GAClD,IAAME,EAAU,IAAI,IAAIJ,EAAI,KAAK,IAAKK,GAAMC,EAAOD,CAAC,CAAC,CAAC,EACtD,QAAWE,KAAMN,EACVG,EAAQ,IAAIG,CAAE,IACjBP,EAAI,KAAK,KAAKO,CAAE,EAChBH,EAAQ,IAAIG,CAAE,EAGpB,CAIKP,EAAI,UAAU,OAAO,SACxBA,EAAI,SAAW,CAAE,GAAGA,EAAI,SAAU,MAAOQ,GAAuB,MAAM,CAAE,GAKtE,GAACR,EAAI,QAAQ,SAAS,QAAU,CAACH,KAErCG,EAAI,QAAU,GAChB,CAeA,eAAsBS,GACpBC,EACAC,EACA,CACA,IAAMd,EAAgBa,EAAc,IAAI,GAAG,cACrCE,EAAoBF,EAAc,IAAI,GAAG,OAAQ,UAEvD,GAAIE,EAAmB,CACrB,IAAMC,EAAe,MAAMF,EAAK,KAAyBC,CAAiB,EAC1E,IAAKC,EAAa,IAAI,GAAG,SAAW,IAAM,EAA0B,OACpEA,EAAa,OAAQb,GAAQD,GAAuBC,EAAKH,CAAa,CAAC,EACvE,MACF,CAEA,IAAMiB,EAAW,MAAMC,EACrB,kBACF,EACA,GAAI,CAACD,EAAU,CACb,QAAQ,KAAK,mDAAmD,EAChE,MACF,CAGA,GAAIJ,EAAc,IAAI,GAAG,OAAQ,UAAc,OAE/C,IAAMM,EAAUN,EAAc,IAAI,EAK5BO,GAA6BD,GAAS,wBAA0B,CAAC,GACpE,OAAQT,GAAO,CAACZ,GAAyB,IAAIY,CAAE,CAAC,EAE7CM,EAAe,MAAMK,GACzBJ,EACAH,CACF,EACAE,EAAa,OAAQb,GAAQ,CACvBiB,EAAc,SAAQjB,EAAI,SAAS,MAAQiB,GAC/CjB,EAAI,QAAQ,QAAUJ,GAAsBoB,GAAS,aAAa,EAC7DhB,EAAI,OAAMA,EAAI,KAAOC,EAAmB,MAAM,GAG/Ce,GAAS,cAAehB,EAAI,QAAU,EACrC,OAAOA,EAAI,OAClB,CAAC,EAEDU,EAAc,OAAQS,GAAQ,CACvBA,EAAI,QAAOA,EAAI,MAAQ,CAAC,GACxBA,EAAI,MAAM,YAAcA,EAAI,MAAM,UAAeN,EAAa,IACrE,CAAC,CACH,CElIA,IAAAO,GAAkB,WAElB,OAAS,wBAAAC,OAA4B,kCAKrC,IAAMC,KAAM,GAAAC,SAAM,8BAA8B,EAchD,eAAsBC,GACpBC,EACAC,EACA,CACA,IAAMC,EAAUF,EAAc,IAAI,EAClC,GAAI,CAACE,GAAS,cAAe,CAC3BL,EAAI,6CAAwC,EAC5C,MACF,CACA,GAAIK,EAAQ,oBAAqB,CAC/BL,EACE,iDACA,IAAI,KAAKK,EAAQ,mBAAmB,EAAE,YAAY,CACpD,EACA,MACF,CAEAL,EAAI,6BAA8BG,EAAc,GAAG,EACnDA,EAAc,OAAQG,GAAQ,CACvBA,EAAI,sBAAqBA,EAAI,oBAAsB,KAAK,IAAI,EACnE,CAAC,EAED,IAAMC,EAAa,MAAMH,EAAK,KAAgBC,EAAQ,aAAa,EAC7DG,EAAeD,EAAW,IAAI,GAAG,MAAM,QAAU,EACvD,GAAIC,EAAc,CAChBR,EACE,0CAAqCQ,CAAY,yCACnD,EACA,MACF,CAEA,IAAMC,EAAQ,OAAO,SAAS,SAAS,SAAS,OAAO,EACjDC,EAAWD,EAAQ,CAAC,EAAI,MAAME,GAAqB,EAEzD,GADAX,EAAIS,EAAQ,iBAAmB,uBAAwBC,CAAQ,EAC3D,CAACD,GAAS,CAACC,EAAS,OAAQ,CAC9BV,EAAI,gDAA2C,EAC/C,MACF,CAEA,IAAMY,EAAiB,MAAMC,EAAiC,QAAQ,EACtE,GAAI,CAACD,EAAgB,CACnBZ,EAAI,6CAA6C,EACjD,MACF,CACA,IAAMc,EAAS,MAAMC,GACnBH,EACAR,EACCE,GAAQ,CACPA,EAAI,MAAQ,UACd,CACF,EAEA,GAAIG,EAAO,CACT,GAAM,CAAE,kBAAAO,CAAkB,EAAI,KAAM,QAAO,6BAAiB,EAC5D,MAAMA,EAAkBZ,EAAMU,CAAM,CACtC,CAEA,QAAWG,KAAOP,EAChB,GAAI,CAEF,MADY,MAAM,OAA0BO,IAClC,UAAUb,EAAMU,CAAM,EAChCd,EAAI,kBAAmBiB,CAAG,CAC5B,OAASC,EAAK,CAEZlB,EAAI,oCAAqCiB,EAAKC,CAAG,CACnD,CAGF,IAAMC,EAASL,EAAO,IAAI,GAAG,MAAM,QAAU,EAC7C,GAAI,CAACK,EAAQ,CAEXnB,EAAI,qCAAqC,EACzC,MACF,CAEAO,EAAW,OAAQD,GAAQ,CACzBA,EAAI,KAAK,QAAQ,CAAE,KAAM,WAAY,KAAM,SAAU,IAAKQ,EAAO,GAAI,CAAC,CACxE,CAAC,EACDd,EAAI,UAAUmB,CAAM,oCAAqCL,EAAO,GAAG,CACrE,CAaA,IAAMM,GAAwB,8CASxBC,GAAuB,6CAO7B,SAASC,IAAmB,CAC1B,OAAO,SAAS,gBAAgB,aAAa,eAAe,IAAM,MACpE,CASA,eAAeX,IAA0C,CACvD,IAAMY,EAAWD,GAAiB,EAC5BE,EACJ,OACA,WAAW,SACb,GAAI,CAACA,GAAS,KACZ,OAAOD,EAAW,CAAC,EAAI,CAACF,GAAsBD,EAAqB,EAErE,MAAMI,EAAQ,YACd,IAAMC,EAAgB,OAAO,OAAOD,EAAQ,IAAI,EAC7C,OAAQP,GAAQ,OAAOA,GAAQ,UAAY,CAACA,EAAI,WAAW,YAAY,CAAC,EACxE,IAAKA,GAAQ,IAAI,IAAI,UAAW,IAAI,IAAIA,EAAK,SAAS,OAAO,CAAC,EAAE,IAAI,EACvE,GAAIM,EAAU,MAAO,CAAC,GAAG,IAAI,IAAIE,CAAa,CAAC,EAC/C,IAAMC,EAAOD,EAAc,OAAS,CAAC,EAAI,CAACJ,EAAoB,EAC9D,MAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAGI,EAAe,GAAGC,EAAMN,EAAqB,CAAC,CAAC,CACxE,CCnJO,IAAMO,GAAuB,2BAiB7B,SAASC,GAASC,EAAoBC,EAAe,CACrDD,EAAO,OAAMA,EAAO,KAAO,CAAC,GACjC,IAAME,EAAOF,EAAO,KACdG,EAAKD,EAAK,UAAWE,GAAaA,EAAS,MAAQH,EAAK,GAAG,EACjE,GAAIE,IAAO,EACX,IAAIA,EAAK,EAAG,CACV,GAAM,CAAE,KAAAE,EAAM,KAAAC,CAAK,EAAIJ,EAAKC,CAAE,EAC9BD,EAAK,OAAOC,EAAI,CAAC,EACjBD,EAAK,QAAQ,CAAE,IAAKD,EAAK,IAAK,KAAAI,EAAM,KAAAC,CAAK,CAAC,EAC1C,MACF,CACAJ,EAAK,QAAQ,CAAE,IAAKD,EAAK,IAAK,KAAMA,EAAK,KAAM,KAAMA,EAAK,IAAK,CAAC,EAClE,CAGA,SAASM,GACPC,EACAC,EACY,CACZ,OAAO,IAAI,QAASC,GAAY,CAC9B,IAAMC,EAAQ,IAAM,CAClB,IAAMC,EAAMJ,EAAO,IAAI,EACjBK,EAASD,GAAOH,EAAKG,CAAG,EACzBC,IACLL,EAAO,IAAI,SAAUG,CAAK,EAC1BD,EAAQG,CAAM,EAChB,EACAL,EAAO,GAAG,SAAUG,CAAK,EACzBA,EAAM,CACR,CAAC,CACH,CAQO,SAASG,GACdC,EACAC,EACAC,EACA,CACA,IAAMC,EAASC,GAAiB,CAC9B,IAAMC,EAAUD,EAA0C,OAC1D,GAAI,CAACC,GAAQ,IAAK,OAClBD,EAAM,eAAe,EACrBA,EAAM,gBAAgB,EAEtB,IAAME,GAAQ,SAAY,CACxB,IAAMC,EAAgB,MAAMf,GAAKU,EAAgBL,GAAQA,EAAI,aAAa,GACvD,MAAMI,EAAK,KAAiBM,CAAa,GACjD,OAAQtB,GACjBD,GAASC,EAAQ,CACf,IAAKoB,EAAO,IACZ,KAAMA,EAAO,MAAQ,WACrB,KAAMA,EAAO,MAAQ,SACvB,CAAC,CACH,CACF,GAAG,EACHC,EAAK,MAAOE,GACV,QAAQ,MAAM,qCAAsCA,CAAK,CAC3D,EACAH,EAAO,cAAcC,CAAI,CAC3B,EAEA,OAAAN,EAAQ,iBAAiBjB,GAAsBoB,CAAK,EAC7C,IAAMH,EAAQ,oBAAoBjB,GAAsBoB,CAAK,CACtE,CC5FA,OACE,gBAAAM,GACA,cAAAC,GACA,gBAAAC,GACA,aAAAC,OAEK,WAOA,SAASC,EACdC,EACyB,CACzB,GAAM,CAACC,EAASC,CAAU,EAAIL,GAAa,CAAC,EAC5C,OAAAF,GAAa,IAAM,CACjB,IAAMQ,EAAIH,EAAO,EACjB,GAAI,CAACG,EAAG,OACR,IAAMC,EAAW,IAAMF,EAAYG,GAAMA,EAAI,CAAC,EAC9CF,EAAE,GAAG,SAAUC,CAAQ,EACvBN,GAAU,IAAMK,EAAE,IAAI,SAAUC,CAAQ,CAAC,CAC3C,CAAC,EACMR,GAAW,KAChBK,EAAQ,EACDD,EAAO,GAAG,IAAI,EACtB,CACH,CPnBA,IAAIM,GAAsBC,EAAW,qYAAsY,GAAM,GAAO,EAAK,EAC3bC,GAAuBD,EAAW,8BAA8B,EAChEE,GAAuBF,EAAW,uBAAuB,EACzDG,GAAuBH,EAAW,yOAA0O,GAAM,GAAO,EAAK,EAC9RI,GAAuBJ,EAAW,uEAAuE,EACzGK,GAAuBL,EAAW,wKAAwK,EAC1MM,GAAuBN,EAAW,8BAA8B,EAChEO,GAAuBP,EAAW,kKAAmK,GAAM,GAAO,EAAK,EACvNQ,GAAuBR,EAAW,kEAAkE,EACpGS,GAAuBT,EAAW,qPAAqP,EAkBnRU,EAAwB,CAACC,EAAaC,IAAY,CACtD,GAAM,CAACC,EAASC,CAAQ,EAAIC,EAAa,EAAK,EAC9C,OAAAC,EAAa,IAAM,CACjB,IAAMC,EAAKL,EAAQ,EACnB,GAAI,CAACK,EAAI,OACTH,EAAS,EAAK,EACd,IAAMI,EAAYC,GAAS,CACVA,EAAM,QACT,cAAgBR,GAC5BG,EAAS,EAAI,CACf,EACAG,EAAG,iBAAiB,oBAAqBC,CAAS,EAClDE,EAAU,IAAMH,EAAG,oBAAoB,oBAAqBC,CAAS,CAAC,CACxE,CAAC,EACML,CACT,EACA,SAASQ,EAAaJ,EAAIK,EAAQ,CAChCL,EAAG,cAAc,IAAI,YAAY,0BAA2B,CAC1D,OAAAK,EACA,QAAS,GACT,SAAU,EACZ,CAAC,CAAC,CACJ,CACO,SAASC,GAAe,CAC7B,OAAAC,EACA,KAAAC,EACA,GAAGC,CACL,EAAG,CACDC,GAAkB,EAClB,IAAMC,EAAgBJ,EAAO,IACvB,CAACK,EAAwBC,CAAyB,EAAIf,EAAa,EACnEgB,EAAyBrB,EAAsB,6BAA8BmB,CAAsB,EACnG,CAACG,EAA4BC,CAA6B,EAAIlB,EAAa,EAC3EmB,EAA6BxB,EAAsB,kCAAmCsB,CAA0B,EAChH,CAACG,EAA4BC,CAA6B,EAAIrB,EAAa,EAC3EsB,EAA6B3B,EAAsB,kCAAmCyB,CAA0B,EAChHG,EAAoBC,GAAW,IAAMF,EAA2B,GAAKN,EAAuB,GAAKG,EAA2B,CAAC,EACnI,OAAQ,IAAM,CACZ,IAAIM,EAAOzC,GAAO,EAChB0C,EAAQD,EAAK,WACbE,EAAQD,EAAM,WACdE,EAAQF,EAAM,YACdG,EAAQD,EAAM,WACdE,EAAQD,EAAM,WACdE,EAAQD,EAAM,WACdE,EAAQD,EAAM,WAChB,OAAAE,EAASP,EAAOQ,EAAkBC,EAAM,CACtC,IAAI,MAAO,CACT,OAAOxB,EAAM,SACf,EACA,IAAI,UAAW,CACb,MAAO,CAAC,IAAK,mFAAmF,CAClG,CACF,CAAC,EAAG,IAAI,EACRyB,EAAMf,EAA+BQ,CAAK,EAC1CA,EAAM,QAAUQ,EAAW,EAC3BD,EAAMrB,EAA2Be,CAAK,EACtCA,EAAM,OAASjB,EACfiB,EAAM,QAAUO,EAAW,EAC3BD,EAAMlB,EAA+Ba,CAAK,EAC1CA,EAAM,OAASlB,EACfkB,EAAM,QAAUM,EAAW,EAC3BL,EAAM,QAAUK,EAAW,EAC3BJ,EAASD,EAAOE,EAAkBC,EAAM,CACtC,IAAI,MAAO,CACT,OAAOZ,EAAkB,CAC3B,EACA,IAAI,UAAW,CACb,OAAOW,EAAkBI,GAAqB,CAC5C,OAAQ7B,EACR,KAAMC,EACN,IAAI,WAAY,CACd,OAAOC,EAAM,SACf,CACF,CAAC,CACH,CACF,CAAC,CAAC,EACKc,CACT,GAAG,CACL,CACA,SAASa,GAAoB3B,EAAO,CAClC,IAAM4B,EAAmBC,EAAa,IAAM7B,EAAM,OAAO,IAAK,CAC5D,KAAMA,EAAM,IACd,CAAC,GACK,SAAY,CAChB,MAAM8B,GAAsB9B,EAAM,OAAQA,EAAM,IAAI,EACpD,MAAM+B,GAAqB/B,EAAM,OAAQA,EAAM,IAAI,CACrD,GAAG,EAAE,MAAMgC,GAAO,CAChB,QAAQ,MAAM,kCAAmCA,CAAG,CACtD,CAAC,EACD,IAAMC,EAAaC,EAAaN,CAAgB,EAC1C1B,EAAgBF,EAAM,OAAO,IAC7BmC,EAAe,IAAMF,EAAW,GAAG,OAAQ,UAC3CG,EAAwBP,EAAa,IAAMM,EAAa,EAAG,CAC/D,KAAMnC,EAAM,IACd,CAAC,EACKqC,EAAkBH,EAAaE,CAAqB,EACpDE,EAAgB,IAAMD,EAAgB,GAAG,UAAU,MACnDE,EAAiB,IAAMF,EAAgB,GAAG,SAAS,SAAW,CAAC,EAC/DG,EAAY,IAAMH,EAAgB,GAAG,MAAQ,CAAC,EAC9CI,EAAgB,IAAMR,EAAW,GAAG,cACpCS,EAAeC,GAAgB,EAC/BC,EAAgBC,GAAiB,OAAQ,CAC7C,YAAaH,EAAa,mBAC1B,aAAcA,EAAa,sBAC3B,SAAUA,EAAa,mBACzB,CAAC,EACGxD,EACE,CAAC4D,EAAcC,CAAe,EAAI1D,EAAa,IAAI,EACnD,CAAC2D,EAAaC,CAAc,EAAI5D,EAAa,IAAI,EACvD6D,GAAQ,IAAM,CACZ,IAAMC,EAA0BC,GAAUlE,EAAS,CACjD,KAAM,yBACR,EAAGmE,GAAQN,EAAgBM,CAAI,CAAC,EAChC3D,EAAUyD,CAAuB,EACjCzD,EAAU4D,GAAmBpE,EAASc,EAAM,KAAMA,EAAM,MAAM,CAAC,CACjE,CAAC,EACD,IAAMuD,EAAiB,IAAMT,EAAa,GAAG,IACvCU,EAAiB,IAAMV,EAAa,GAAG,QAAU,OACjDW,EAAoB,IAAMC,GAAgBC,EAAa,WAAYC,EAAqB,EACxFC,EAAwB,IAAMC,GAAiBH,EAAa,cAAc,EAC1E,CAACI,GAAgBC,CAAiB,EAAI3E,EAAa,EACnD4E,GAAmBC,GAAkBH,GAAgBR,CAAc,EACnE,CAACY,GAAcC,EAAe,EAAI/E,EAAa,EAAK,EAC1D,OAAAC,EAAa,IAAM,CACb6E,GAAa,IACbnE,EAAM,WAAa,CAACuD,EAAe,GAAKU,GAAiB,IAAGG,GAAgB,EAAI,CACtF,CAAC,GACO,IAAM,CACZ,IAAIC,EAAQ9F,GAAQ,EAChB+F,EAAQpF,EACZ,cAAOoF,GAAU,WAAa7C,EAAM6C,EAAOD,CAAK,EAAInF,EAAUmF,EAC9D/C,EAAS+C,EAAO9C,EAAkBgD,GAAa,CAC7C,cAAerE,EACf,aAAcwC,EACd,cAAeE,EACf,eAAgBL,EAChB,UAAWC,EACX,aAAcJ,EACd,cAAeK,EACf,aAAc0B,GACd,WAAY,IAAMlC,EAAW,GAAG,WAChC,kBAAmB,IAAMA,EAAW,GAAG,kBACvC,IAAI,WAAY,CACd,OAAOjC,EAAM,SACf,EACA,gBAAiBiD,EACjB,IAAI,UAAW,CACb,OAAO1B,EAAkBC,EAAM,CAC7B,IAAI,MAAO,CACT,OAAO+B,EAAe,CACxB,EACA,IAAI,UAAW,CACb,OAAQ,IAAM,CACZ,IAAIiB,EAAQhG,GAAQ,EACpB,OAAA8C,EAASkD,EAAOjD,EAAkBkD,GAAkB,CAClD,QAASlB,EACT,eAAgBA,EAChB,OAAQC,EACR,IAAKQ,CACP,CAAC,CAAC,EACKQ,CACT,GAAG,CACL,EACA,IAAI,UAAW,CACb,OAAOjD,EAAkBC,EAAM,CAC7B,IAAI,MAAO,CACT,OAAOxB,EAAM,SACf,EACA,IAAI,UAAW,CACb,OAAOuB,EAAkBmD,GAAkB,CACzC,kBAAmBV,EACnB,eAAgBT,EAChB,eAAgBC,EAChB,cAAelB,EACf,IAAI,iBAAkB,CACpB,OAAOI,EAAa,kBACtB,EACA,kBAAmBe,EACnB,sBAAuBI,CACzB,CAAC,CACH,EACA,IAAI,UAAW,CACb,OAAOtC,EAAkBoD,GAAsB,CAC7C,IAAI,YAAa,CACf,OAAO1C,EAAW,GAAG,UACvB,EACA,eAAgBsB,EAChB,eAAgBC,EAChB,cAAelB,EACf,IAAI,iBAAkB,CACpB,OAAOI,EAAa,kBACtB,EACA,kBAAmBe,EACnB,sBAAuBI,CACzB,CAAC,CACH,CACF,CAAC,CACH,CACF,CAAC,CACH,CACF,CAAC,EAAG,IAAI,EACRvC,EAAS+C,EAAO9C,EAAkBC,EAAM,CACtC,IAAI,MAAO,CACT,OAAOwB,EAAY,CACrB,EACA,SAAUK,GAAQ9B,EAAkBqD,GAAc,CAChD,IAAI,MAAO,CACT,OAAOvB,EAAK,CACd,EACA,QAAS,IAAMJ,EAAe,IAAI,CACpC,CAAC,CACH,CAAC,EAAG,IAAI,EACDoB,CACT,GAAG,CACL,CACA,SAASO,GAAa5E,EAAO,CAC3B,GAAM,CAAC6E,EAAQC,CAAS,EAAIzF,EAAaW,EAAM,KAAK,QAAU,MAAM,EACpEV,EAAa,IAAMwF,EAAU9E,EAAM,KAAK,QAAU,MAAM,CAAC,EACzD,IAAI+E,EACJ,OAAA7B,GAAQ,IAAM,CACZ,IAAM8B,EAAQC,GAAK,CACbA,EAAE,MAAQ,UAAUjF,EAAM,QAAQ,CACxC,EACA,OAAO,iBAAiB,UAAWgF,CAAK,EACxCtF,EAAU,IAAM,OAAO,oBAAoB,UAAWsF,CAAK,CAAC,EAC5D,IAAMzF,EAAKwF,EACX,GAAI,CAACxF,EAAI,OACT,IAAM2F,EAASzF,GAAS,CACtB,GAAM,CACJ,IAAA0F,EACA,OAAQC,CACV,EAAI3F,EAAM,OACL0F,IACL1F,EAAM,gBAAgB,EACtBqF,EAAUM,GAAc,MAAM,EAChC,EACA7F,EAAG,iBAAiB,0BAA2B2F,CAAM,EACrDxF,EAAU,IAAMH,EAAG,oBAAoB,0BAA2B2F,CAAM,CAAC,CAC3E,CAAC,GACO,IAAM,CACZ,IAAIG,EAAQ5G,GAAQ,EAClB6G,EAASD,EAAM,WACfE,EAASD,EAAO,WAChBE,EAASD,EAAO,WAChBE,EAASF,EAAO,YAChBG,EAASD,EAAO,WAClBJ,EAAM,QAAU,IAAMrF,EAAM,QAAQ,EACpCsF,EAAO,QAAUL,GAAKA,EAAE,gBAAgB,EACxC,IAAIU,EAASZ,EACb,cAAOY,GAAW,WAAalE,EAAMkE,EAAQL,CAAM,EAAIP,EAAYO,EACnEE,EAAO,QAAU9D,EAAW,EAC5BgE,EAAO,QAAUhE,EAAW,EAC5BkE,EAASC,GAAO,CACd,IAAIC,EAAM9F,EAAM,KAAK,IACnB+F,EAAO/F,EAAM,KAAK,IAClBgG,EAAOnB,EAAO,EAChB,OAAAiB,IAAQD,EAAI,IAAML,EAAO,OAASK,EAAI,EAAIC,GAC1CC,IAASF,EAAI,IAAMH,EAAO,OAASG,EAAI,EAAIE,GAC3CC,IAASH,EAAI,IAAMH,EAAO,OAASG,EAAI,EAAIG,GACpCH,CACT,EAAG,CACD,EAAG,OACH,EAAG,OACH,EAAG,MACL,CAAC,EACMR,CACT,GAAG,CACL,CACO,SAASd,GAAYvE,EAAO,CACjC,IAAMiG,EAAcjG,EAAM,aAAa,mBACjCkG,EAAU,IAAMlG,EAAM,UAAU,EAAE,OAAS,EAC7CmG,EACAC,EACJ,OAAA9G,EAAa,IAAM,CACjB,GAAI2G,EAAY,EAAG,OACnB,IAAM1G,EAAK4G,EACX,GAAI,CAAC5G,EAAI,OACT,IAAM8G,EAASD,EACTlB,EAASzF,GAAS,CACtB,GAAM,CACJ,IAAA0F,EACA,OAAAN,CACF,EAAIpF,EAAM,OACV,GAAIO,EAAM,WAAamF,GAAOkB,GAAU5G,EAAM,aAAa,EAAE,SAAS4G,CAAM,EAAG,CAC7E5G,EAAM,gBAAgB,EACtBO,EAAM,kBAAkB,CACtB,IAAAmF,EACA,OAAQN,GAAU,IACpB,CAAC,EACD,MACF,CACItF,EAAG,sBAAsB,EAAE,OAAS,OAAO,WAAa,MAC5DS,EAAM,aAAa,sBAAsB,EAAI,EAC7C,OAAO,cAAc,IAAI,YAAYsG,EAA8B,CAAC,EACtE,EACA/G,EAAG,iBAAiB,0BAA2B2F,CAAM,EACrDxF,EAAU,IAAMH,EAAG,oBAAoB,0BAA2B2F,CAAM,CAAC,CAC3E,CAAC,EACM,EAAE,IAAM,CACb,IAAIqB,EAAS7H,GAAQ,EACrB,OAAA6H,EAAO,QAAU,IAAMvG,EAAM,aAAa,sBAAsBwG,GAAK,CAACA,CAAC,EACvElF,EAASiF,EAAQhF,EAAkBkF,GAAe,CAAC,CAAC,CAAC,EACrDb,EAASC,GAAO,CACd,IAAIa,EAAOT,EAAY,EAAI,eAAiB,eAC1CU,EAAOV,EAAY,EAAI,eAAiB,eACxCW,EAAO,CAACX,EAAY,EACtB,OAAAS,IAASb,EAAI,GAAKgB,EAAeN,EAAQ,QAASV,EAAI,EAAIa,CAAI,EAC9DC,IAASd,EAAI,GAAKgB,EAAeN,EAAQ,aAAcV,EAAI,EAAIc,CAAI,EACnEC,IAASf,EAAI,GAAKgB,EAAeN,EAAQ,eAAgBV,EAAI,EAAIe,CAAI,EAC9Df,CACT,EAAG,CACD,EAAG,OACH,EAAG,OACH,EAAG,MACL,CAAC,EACMU,CACT,GAAG,EAAGhF,EAAkBuF,GAAS,CAC/B,KAAM,OACN,YAAab,EACb,IAAI,OAAQ,CACV,OAAOjG,EAAM,aAAa,gBAC5B,EACA,IAAI,aAAc,CAChB,OAAOA,EAAM,cAAc,eAC7B,EACA,IAAI,eAAgB,CAClB,OAAOA,EAAM,cAAc,iBAC7B,EACA,IAAI,UAAW,CACb,IAAI+G,EAASpI,GAAQ,EACnBqI,EAASD,EAAO,WAChBE,EAASD,EAAO,WAChBE,EAASD,EAAO,WACdE,EAAShB,EACb,OAAOgB,GAAW,WAAa1F,EAAM0F,EAAQJ,CAAM,EAAIZ,EAAmBY,EAC1EzF,EAASyF,EAAQxF,EAAkB6F,GAAgB,CACjD,IAAI,SAAU,CACZ,OAAOpH,EAAM,cACf,EACA,IAAI,cAAe,CACjB,OAAOA,EAAM,YACf,EACA,IAAI,eAAgB,CAClB,OAAOA,EAAM,aACf,EACA,IAAI,OAAQ,CACV,OAAOA,EAAM,YACf,CACF,CAAC,EAAGgH,CAAM,EACV,IAAIK,EAASjB,EACb,cAAOiB,GAAW,WAAa5F,EAAM4F,EAAQL,CAAM,EAAIZ,EAAWY,EAClE1F,EAAS2F,EAAQ1F,EAAkBC,EAAM,CACvC,IAAI,MAAO,CACT,OAAOxB,EAAM,WAAW,CAC1B,EACA,SAAUsH,IAAe,IAAM,CAC7B,IAAIC,EAAS1I,GAAQ,EACnB2I,EAASD,EAAO,WAClB,OAAAA,EAAO,QAAUtC,GAAKtF,EAAasF,EAAE,cAAe,CAClD,IAAKjF,EAAM,cACX,OAAQ,gBACV,CAAC,EACDwH,EAAO,QAAU9F,EAAW,EAC5BkE,EAAS,IAAM4B,EAAO,OAASF,EAAW,CAAC,EACpCC,CACT,GAAG,CACL,CAAC,EAAGL,CAAM,EACV5F,EAAS2F,EAAQ1F,EAAkBC,EAAM,CACvC,IAAI,MAAO,CACT,OAAOxB,EAAM,kBAAkB,CACjC,EACA,SAAUyH,IAAsB,IAAM,CACpC,IAAIC,EAAS5I,GAAQ,EACrB,OAAA4I,EAAO,QAAUzC,GAAKtF,EAAasF,EAAE,cAAe,CAClD,IAAKwC,EAAkB,EACvB,OAAQ,UACV,CAAC,EACMC,CACT,GAAG,CACL,CAAC,EAAGR,CAAM,EACVA,EAAO,QAAUjC,GAAKtF,EAAasF,EAAE,cAAe,CAClD,IAAKjF,EAAM,cACX,OAAQ,oBACV,CAAC,EACD4F,EAAS,IAAMmB,EAAO,UAAU,OAAO,8BAA+B,CAAC,CAACb,EAAQ,CAAC,CAAC,EAC3Ea,CACT,CACF,CAAC,EAAGxF,EAAkBC,EAAM,CAC1B,IAAI,MAAO,CACT,OAAO0E,EAAQ,CACjB,EACA,IAAI,UAAW,CACb,IAAIyB,EAAS/I,GAAQ,EACrB,OAAA0C,EAASqG,EAAQpG,EAAkBqG,GAAM,CACvC,IAAI,OAAQ,CACV,OAAO5H,EAAM,SACf,CACF,CAAC,CAAC,EACF4F,EAASC,GAAO,CACd,IAAIgC,EAAO,CAAC,CAAC5B,EAAY,EACvB6B,EAAO,GAAG9H,EAAM,aAAa,iBAAiB,CAAC,KACjD,OAAA6H,IAAShC,EAAI,GAAK8B,EAAO,UAAU,OAAO,8BAA+B9B,EAAI,EAAIgC,CAAI,EACrFC,IAASjC,EAAI,GAAKkC,GAAmBJ,EAAQ,QAAS9B,EAAI,EAAIiC,CAAI,EAC3DjC,CACT,EAAG,CACD,EAAG,OACH,EAAG,MACL,CAAC,EACM8B,CACT,CACF,CAAC,EAAGK,GAAO,IAAMhI,EAAM,QAAQ,CAAC,CAClC,CACA,SAASyG,IAAgB,CACvB,OAAO1H,GAAQ,CACjB,CACO,SAASkJ,GAAqBC,EAAW,CAC9C,MAAO,CAACpI,EAAQZ,IACPiJ,GAAO,IAAM5G,EAAkB1B,GAAgB,CACpD,OAAQC,EACR,IAAI,MAAO,CACT,OAAOZ,EAAQ,IACjB,EACA,UAAWgJ,CACb,CAAC,EAAGhJ,CAAO,CAEf,CACAkJ,GAAiB,CAAC,OAAO,CAAC",
|
|
6
|
+
"names": ["_$template", "_$delegateEvents", "_$memo", "_$setStyleProperty", "_$setAttribute", "_$effect", "_$getOwner", "_$use", "_$insert", "_$createComponent", "subscribe", "_$template", "_$delegateEvents", "_$memo", "_$insert", "_$createComponent", "For", "Show", "_tmpl$", "_$template", "_tmpl$2", "_tmpl$3", "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", "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", "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", "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", "hasTray", "sidebarContentEl", "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", "_ref$3", "SidebarWidgets", "_ref$4", "contactUrl", "_el$21", "_el$22", "moduleSettingsUrl", "_el$23", "_el$20", "Tray", "_v$7", "_v$8", "_$setStyleProperty", "_$memo", "renderPatchworkFrame", "isolation", "render", "_$delegateEvents"]
|
|
7
|
+
}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
import{a as Ye,b as qr}from"./chunk-FW4363Y4.js";var kt=Ye((Ni,xt)=>{var ie=1e3,se=ie*60,le=se*60,te=le*24,po=te*7,ho=te*365.25;xt.exports=function(e,r){r=r||{};var t=typeof e;if(t==="string"&&e.length>0)return fo(e);if(t==="number"&&isFinite(e))return r.long?go(e):mo(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function fo(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*ho;case"weeks":case"week":case"w":return t*po;case"days":case"day":case"d":return t*te;case"hours":case"hour":case"hrs":case"hr":case"h":return t*le;case"minutes":case"minute":case"mins":case"min":case"m":return t*se;case"seconds":case"second":case"secs":case"sec":case"s":return t*ie;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return t;default:return}}}}function mo(e){var r=Math.abs(e);return r>=te?Math.round(e/te)+"d":r>=le?Math.round(e/le)+"h":r>=se?Math.round(e/se)+"m":r>=ie?Math.round(e/ie)+"s":e+"ms"}function go(e){var r=Math.abs(e);return r>=te?Fe(e,r,te,"day"):r>=le?Fe(e,r,le,"hour"):r>=se?Fe(e,r,se,"minute"):r>=ie?Fe(e,r,ie,"second"):e+" ms"}function Fe(e,r,t,o){var n=r>=t*1.5;return Math.round(e/t)+" "+o+(n?"s":"")}});var $t=Ye((qi,Ct)=>{function bo(e){t.debug=t,t.default=t,t.coerce=l,t.disable=i,t.enable=n,t.enabled=d,t.humanize=kt(),t.destroy=c,Object.keys(e).forEach(s=>{t[s]=e[s]}),t.names=[],t.skips=[],t.formatters={};function r(s){let u=0;for(let h=0;h<s.length;h++)u=(u<<5)-u+s.charCodeAt(h),u|=0;return t.colors[Math.abs(u)%t.colors.length]}t.selectColor=r;function t(s){let u,h=null,b,_;function m(...p){if(!m.enabled)return;let f=m,w=Number(new Date),T=w-(u||w);f.diff=T,f.prev=u,f.curr=w,u=w,p[0]=t.coerce(p[0]),typeof p[0]!="string"&&p.unshift("%O");let F=0;p[0]=p[0].replace(/%([a-zA-Z%])/g,(j,Q)=>{if(j==="%%")return"%";F++;let O=t.formatters[Q];if(typeof O=="function"){let J=p[F];j=O.call(f,J),p.splice(F,1),F--}return j}),t.formatArgs.call(f,p),(f.log||t.log).apply(f,p)}return m.namespace=s,m.useColors=t.useColors(),m.color=t.selectColor(s),m.extend=o,m.destroy=t.destroy,Object.defineProperty(m,"enabled",{enumerable:!0,configurable:!1,get:()=>h!==null?h:(b!==t.namespaces&&(b=t.namespaces,_=t.enabled(s)),_),set:p=>{h=p}}),typeof t.init=="function"&&t.init(m),m}function o(s,u){let h=t(this.namespace+(typeof u>"u"?":":u)+s);return h.log=this.log,h}function n(s){t.save(s),t.namespaces=s,t.names=[],t.skips=[];let u=(typeof s=="string"?s:"").trim().replace(/\s+/g,",").split(",").filter(Boolean);for(let h of u)h[0]==="-"?t.skips.push(h.slice(1)):t.names.push(h)}function a(s,u){let h=0,b=0,_=-1,m=0;for(;h<s.length;)if(b<u.length&&(u[b]===s[h]||u[b]==="*"))u[b]==="*"?(_=b,m=h,b++):(h++,b++);else if(_!==-1)b=_+1,m++,h=m;else return!1;for(;b<u.length&&u[b]==="*";)b++;return b===u.length}function i(){let s=[...t.names,...t.skips.map(u=>"-"+u)].join(",");return t.enable(""),s}function d(s){for(let u of t.skips)if(a(s,u))return!1;for(let u of t.names)if(a(s,u))return!0;return!1}function l(s){return s instanceof Error?s.stack||s.message:s}function c(){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}Ct.exports=bo});var St=Ye((P,Pe)=>{P.formatArgs=wo;P.save=yo;P.load=_o;P.useColors=vo;P.storage=xo();P.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`."))}})();P.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 vo(){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 wo(e){if(e[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+e[0]+(this.useColors?"%c ":" ")+"+"+Pe.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)}P.log=console.debug||console.log||(()=>{});function yo(e){try{e?P.storage.setItem("debug",e):P.storage.removeItem("debug")}catch{}}function _o(){let e;try{e=P.storage.getItem("debug")||P.storage.getItem("DEBUG")}catch{}return!e&&typeof process<"u"&&"env"in process&&(e=process.env.DEBUG),e}function xo(){try{return localStorage}catch{}}Pe.exports=$t()(P);var{formatters:ko}=Pe.exports;ko.j=function(e){try{return JSON.stringify(e)}catch(r){return"[UnexpectedJSONParseError]: "+r.message}}});import{template as Hr}from"solid-js/web";import{createComponent as si}from"solid-js/web";import{setAttribute as li}from"solid-js/web";import{effect as ci}from"solid-js/web";import{insert as Nr}from"solid-js/web";import{getOwner as di}from"solid-js/web";import{createMemo as jr}from"solid-js";import{createStore as hi,reconcile as fi}from"solid-js/store";import{render as mi}from"solid-js/web";import{template as Ae}from"solid-js/web";import{insert as ne}from"solid-js/web";import{getOwner as Ee}from"solid-js/web";import{use as Te}from"solid-js/web";import{createComponent as U}from"solid-js/web";import{createUniqueId as Br,untrack as ht}from"solid-js";import{isServer as Jr,isDev as ft}from"solid-js/web";import{reconcile as Vr}from"solid-js/store";function Xe(e,r={}){let t=r.storage||globalThis.localStorage,o=r.name||`storage-${Br()}`;if(!t)return Object.assign(e,{2:null});let n=r.storageOptions,a=r.serialize||JSON.stringify.bind(JSON),i=r.deserialize||JSON.parse.bind(JSON),d=t.getItem(o,n),l=typeof e[0]=="function"?s=>{try{let u=i(s);e[1](()=>u)}catch(u){ft&&console.warn(u)}}:s=>{try{let u=i(s);e[1](Vr(u))}catch(u){ft&&console.warn(u)}},c=!0;if(d instanceof Promise?d.then(s=>c&&s&&l(s)):d&&l(d),typeof r.sync?.[0]=="function"){let s=typeof e[0]=="function"?e[0]:()=>e[0];r.sync[0](u=>{u.key!==o||!Jr&&(u.url||globalThis.location.href)!==globalThis.location.href||u.newValue===a(ht(s))||l(u.newValue)})}return Object.assign([],e,{1:typeof e[0]=="function"?s=>{let u=e[1](s),h=s!=null?a(u):s;return r.sync?.[1](o,h),h!=null?t.setItem(o,h,n):t.removeItem(o,n),c=!1,u}:(...s)=>{e[1](...s);let u=ht(()=>a(e[0]));r.sync?.[1](o,u),t.setItem(o,u,n),c=!1},2:d})}import{createEffect as Lr,createMemo as pt,createSignal as Z,on as Mr,onCleanup as oi,onMount as ni,Show as me}from"solid-js";import{createEffect as mt,createSignal as gt,on as bt}from"solid-js";var V={leftCollapsed:"patchwork:leftSidebarCollapsed",rightCollapsed:"patchwork:rightSidebarCollapsed",leftWidth:"patchwork:leftSidebarWidth",rightWidth:"patchwork:rightSidebarWidth",contextToolId:"patchwork:contextSidebarToolId"},Ie="patchwork:collapse-context-sidebar",Re=400;function vt(e,r){let t=localStorage.getItem(e);return t?parseInt(t,10):r}function wt(e){return localStorage.getItem(e)==="true"}function Kr(){let[e,r]=gt(wt(V.leftCollapsed)),[t,o]=gt(vt(V.leftWidth,Re));return mt(bt(e,n=>{localStorage.setItem(V.leftCollapsed,String(n))})),mt(bt(t,n=>{localStorage.setItem(V.leftWidth,String(n))})),{isSidebarCollapsed:e,setIsSidebarCollapsed:r,leftSidebarWidth:t,setLeftSidebarWidth:o}}import{onCleanup as Yr,onMount as Xr}from"solid-js";var yt=180,Gr=720,Zr=120,_t=3;function Ge(e,{isCollapsed:r,setCollapsed:t,setWidth:o}){let n=!1,a=null,i=!1,d=null,l=f=>{if(f<Zr){r()||t(!0),d=null;return}r()&&t(!1);let w=Math.min(Gr,f);o(w),d=w},c=()=>{r()||d!==null&&d<yt&&o(yt)},s=null,u=()=>{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)},h=()=>{n=!1,a=null,document.body.style.userSelect="",document.body.removeAttribute("data-sidebar-resizing"),s?.remove(),s=null},b=f=>{f.preventDefault(),a={x:f.clientX,y:f.clientY},i=!1,d=null,n=!0,document.body.style.userSelect="none"},_=()=>{let f=n,w=i;h(),f&&w&&c()},m=f=>{if(!n||!a)return;let w=Math.abs(f.clientX-a.x),T=Math.abs(f.clientY-a.y);!i&&(w>_t||T>_t)&&(i=!0,u()),l(e==="left"?f.clientX:window.innerWidth-f.clientX)},p=f=>{if(i){f.preventDefault(),f.stopPropagation(),i=!1;return}t(w=>!w)};return Xr(()=>{document.addEventListener("mousemove",m),document.addEventListener("mouseup",_),Yr(()=>{document.removeEventListener("mousemove",m),document.removeEventListener("mouseup",_),n&&h()})}),{handleMouseDown:b,handleToggleClick:p}}import{createEffect as Qr,createSignal as eo,onCleanup as to}from"solid-js";var ee=(e,r)=>{let[t,o]=eo(!1);return Qr(()=>{let n=r();if(!n)return;o(!1);let a=i=>{i.detail?.componentId===e&&o(!0)};n.addEventListener("patchwork:mounted",a),to(()=>n.removeEventListener("patchwork:mounted",a))}),t};import{createEffect as ro,createSignal as oo,onCleanup as no}from"solid-js";var ao=5e3,io=(e,r)=>{let[t,o]=oo(!1);return ro(()=>{if(t())return;let n=e(),a=r();if(!n||!a)return;let i=l=>{let c=l.detail;c?.url&&c.url!==a||o(!0)};n.addEventListener("patchwork:mounted",i),n.addEventListener("patchwork:no-tool",i);let d=setTimeout(()=>o(!0),ao);no(()=>{n.removeEventListener("patchwork:mounted",i),n.removeEventListener("patchwork:no-tool",i),clearTimeout(d)})}),t};import{getRegistry as so}from"@inkandswitch/patchwork-plugins";import{createMemo as lo,createSignal as co,onCleanup as uo}from"solid-js";function ae(e){let r=so("patchwork:component"),[t,o]=co(0),n=r.on("changed",()=>o(a=>a+1));return uo(n),lo(()=>(t(),(r.all?.()??[]).filter(a=>(a.tags??[]).includes(e)).map(a=>({id:a.id,name:a.name||a.id,icon:a.icon})).sort((a,i)=>a.name.localeCompare(i.name))))}import{template as ke}from"solid-js/web";import{delegateEvents as fn}from"solid-js/web";import{getOwner as mn}from"solid-js/web";import{effect as Qt}from"solid-js/web";import{setAttribute as gn}from"solid-js/web";import{memo as er}from"solid-js/web";import{insert as ue}from"solid-js/web";import{createComponent as pe}from"solid-js/web";import{For as xn,Show as ot}from"solid-js";import{template as Lt}from"solid-js/web";import{delegateEvents as Po}from"solid-js/web";import{setAttribute as Lo}from"solid-js/web";import{insert as Mo}from"solid-js/web";import"solid-js/web";import{effect as Pt}from"solid-js/web";import{use as Mt}from"solid-js/web";import{createComponent as Ze}from"solid-js/web";var At=qr(St(),1),Dt=(0,At.default)("cabbages");function Et(e){return typeof e=="object"&&typeof e!=null&&Object.getPrototypeOf(e)==Object.prototype}var Co="\uFFFC";function It(e,...r){if(r.length==0){Dt("empty patch");return}let[t,o,n]=r,a=[...t];for(;;){let i=a.shift();if(!a.length){let l=Array.isArray(o);if(Et(e)&&l&&typeof i>"u"&&typeof o[0]=="string"){delete e[o[0]];return}if(l||typeof o=="number"){if(typeof i>"u")throw new Error("cant treat top level as a seq");i=i;let[c,s]=Array.isArray(o)?o:[o,o+1],u=Array.isArray(o)&&o.length==0;if(!u&&(c==null||s==null))throw new RangeError("it's all or nothing, no half measures");let h=typeof n>"u",b=c===s&&!h,_=u&&!h,m=!b&&!h&&!_;if(typeof e[i]>"u"){if(typeof e=="string")return;typeof n=="string"?e[i]="":e[i]=[]}let p=e[i];if(Array.isArray(p)){if(_){Array.isArray(n)?p.push(...n):p.push(n);return}if(b||m){Array.isArray(n)?p.splice(c,s-c,...n):p.splice(c,s-c,n);return}if(h){p.splice(c,s-c);return}throw new Error("i don't know what happened")}if(typeof p=="string"){if(_){e[i]=p+n;return}if(m||b){e[i]=p.slice(0,c)+(typeof n=="string"?n:n.map(f=>typeof f=="string"?f:Co).join(""))+p.slice(s);return}if(h){e[i]=p.slice(0,c)+p.slice(s);return}throw new Error("i don't know what happened")}if(Et(p)&&l&&typeof o[0]=="string"){delete p[o[0]];return}throw new Error("not implemented")}if(typeof i>"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[i]>"u"&&(e[i]={}),l){let[c,s]=o;c!=null&&s!=null&&(typeof n>"u"&&c!=null&&s!=null?delete e[i][c||s]:e[i][c||s]=n)}else if(typeof n>"u")delete e[i][o];else{if(typeof e[i]=="string")return;e[i][o]=n}return}if(typeof i>"u")throw new Error("cant treat top level as a seq");i=i;let d=a[0];if(typeof e[i]>"u")if(typeof d=="string")e[i]={};else if(typeof d=="number")e[i]=[];else throw new Error(`can't go down this road ${e}.${i}.${d}`);e=e[i]}}function Tt(e,r){for(let t=0;t<r.length;t++)e=e?e[r[t]]:void 0;return e}function Rt(e,r){let t=e.path.slice(0,-1),o=e.path[e.path.length-1];switch(e.action){case"mark":case"unmark":return Dt(`skipping ${e.action} because it doesn't affect material reality`),[];case"inc":if(r)return[t,o,Tt(r.patchInfo.after,e.path)];throw new Error(`can't apply ${e.action} without payload argument`);case"conflict":if(r)return[t,o,Tt(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],structuredClone(e.values)];case"splice":return[t,[o,o],[e.value]];case"put":return[t,o,structuredClone(e.value)]}}function Le(e){return r=>{for(let t of e.patches)It(r,...Rt(t,e))}}import{createMemo as To}from"solid-js";import{onCleanup as $o}from"solid-js";import{createStore as So,produce as Eo,reconcile as Ft}from"solid-js/store";var ve=new WeakMap;function Me(e){if($o(()=>{let a=ve.get(e);a&&(a.refs--||a.cleanup())}),ve.has(e)){let a=ve.get(e);return a.refs++,a.store}let[r,t]=So(structuredClone(e.doc()));ve.set(e,{refs:0,store:r,cleanup(){e.off("change",o),e.off("delete",n),ve.delete(e)}});function o(a){if(a.scopeReplaced){t(Ft(a.doc??{}));return}t(Eo(Le(a)))}function n(){t(Ft({}))}return e.on("change",o),e.on("delete",n),e.whenReady().then(()=>{t(structuredClone(e.doc()))}),r}import{getOwner as Qi,onCleanup as es,createSignal as ts,untrack as rs,sharedConfig as os,onMount as ns,DEV as as,equalFn as is}from"solid-js";import{isServer as ls}from"solid-js/web";var ce=e=>typeof e=="function"&&!e.length?e():e;function Oe(e){return To(()=>ce(e)&&Me(ce(e)))}import{createEffect as Do,createResource as Io,useContext as Ro}from"solid-js";import{createContext as Ao}from"solid-js";var ze=Ao(null);function we(e,r){let t=Ro(ze);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 d=ce(e);if(!d)return;let l=o.findWithProgress(d).peek();return l.state==="ready"?l.handle:void 0}let[a,{mutate:i}]=Io(e,d=>o.findWithProgress(d).whenReady(),{initialValue:n()});return Do(()=>{ce(e)||i()}),a}function Ue(e,r){let t=we(e,r);return[Oe(t),t]}import{onCleanup as $s}from"solid-js";import{createSignal as Es}from"solid-js";import{createEffect as Ds,onCleanup as Is}from"solid-js";import{createSignal as Fs}from"solid-js";import{useContext as js}from"solid-js";import{getType as zo}from"@inkandswitch/patchwork-filesystem";import{getRegistry as Uo,isLoadedPlugin as jo}from"@inkandswitch/patchwork-plugins";import{createEffect as Wo,createMemo as je,createSignal as Qe,onCleanup as Ho,onMount as zt,Show as Ut}from"solid-js";var Ot=Lt("<span class=threepane__title-text>"),Oo=Lt("<input class=threepane__title-input type=text>");function jt(e){let r,[t,o]=Qe();return zt(()=>{o(r.closest("repo-provider")?.repo)}),Ze(Ut,{get when(){return t()},get fallback(){return(()=>{var n=Ot(),a=r;return typeof a=="function"?Mt(a,n):r=n,n})()},children:n=>Ze(No,{get docUrl(){return e.docUrl},get repo(){return n()}})})}function No(e){let[r,t]=Ue(()=>e.docUrl(),{repo:e.repo}),o=Uo("patchwork:datatype"),[n,a]=Qe(0);zt(()=>{let m=o.on("changed",()=>a(p=>p+1));Ho(m)});let i=je(()=>{let m=r();return m?zo(m):void 0});Wo(()=>{let m=i();m&&o.load(m)});let d=je(()=>{n();let m=i();if(!m)return;let p=o.get(m);return p&&jo(p)?p:void 0}),l=je(()=>{let m=r(),p=d();if(!(!m||!p))return p.module.getTitle(m)}),c=je(()=>!!t()&&typeof d()?.module.setTitle=="function"),[s,u]=Qe(!1),h;function b(){c()&&(u(!0),queueMicrotask(()=>{h?.focus(),h?.select()}))}function _(m){if(!s()||(u(!1),!m))return;let p=h?.value.trim();if(!p||p===l())return;let f=t(),w=d()?.module.setTitle;!f||!w||f.change(T=>{w(T,p);let F=T["@patchwork"];F&&(F.title=p)})}return Ze(Ut,{get when(){return s()},get fallback(){return(()=>{var m=Ot();return m.$$click=b,Mo(m,()=>l()??"Untitled"),Pt(p=>{var f=!!c(),w=c()?"Rename":void 0;return f!==p.e&&m.classList.toggle("threepane__title-text--editable",p.e=f),w!==p.t&&Lo(m,"title",p.t=w),p},{e:void 0,t:void 0}),m})()},get children(){var m=Oo();m.$$keydown=f=>{f.key==="Enter"?(f.preventDefault(),_(!0)):f.key==="Escape"&&(f.preventDefault(),_(!1))},m.addEventListener("blur",()=>_(!0));var p=h;return typeof p=="function"?Mt(p,m):h=m,Pt(()=>m.value=l()??""),m}})}Po(["keydown","click"]);import{template as xe}from"solid-js/web";import{delegateEvents as rn}from"solid-js/web";import{getOwner as on}from"solid-js/web";import{insert as _e}from"solid-js/web";import{createComponent as de}from"solid-js/web";import{Show as et}from"solid-js";import{template as qt}from"solid-js/web";import{delegateEvents as qo}from"solid-js/web";import{setStyleProperty as Bo}from"solid-js/web";import{insert as Jo}from"solid-js/web";import{setAttribute as We}from"solid-js/web";import{effect as Wt}from"solid-js/web";import{memo as ye}from"solid-js/web";import{createComponent as Ht}from"solid-js/web";import{Show as Nt}from"solid-js";var Vo=qt('<button class="sidebar-toggle sidebar-toggle--resizable">'),Ko=qt("<div class=sidebar>");function Bt(e){let r=()=>`${e.isCollapsed()?0:e.width()}px`,t=()=>e.canExpand?.()??!0,o=()=>Ht(Nt,{get when(){return!e.isCollapsed()},get children(){return e.children}}),n=()=>Ht(Nt,{get when(){return!e.isCollapsed()||t()},get children(){var a=Vo();return a.$$mousedown=i=>e.onMouseDown(i),a.$$click=i=>e.onToggleClick(i),Wt(i=>{var d=e.isCollapsed()?"Expand sidebar":"Toggle or resize sidebar",l=e.isCollapsed()?"Click to expand, drag to resize":"Click to toggle, drag to resize";return d!==i.e&&We(a,"aria-label",i.e=d),l!==i.t&&We(a,"title",i.t=l),i},{e:void 0,t:void 0}),a}});return(()=>{var a=Ko();return Jo(a,(()=>{var i=ye(()=>e.side==="left");return()=>i()?[ye(o),ye(n)]:[ye(n),ye(o)]})()),Wt(i=>{var d=e.side,l=e.isCollapsed()?"":void 0,c=r();return d!==i.e&&We(a,"data-side",i.e=d),l!==i.t&&We(a,"data-collapsed",i.t=l),c!==i.a&&Bo(a,"width",i.a=c),i},{e:void 0,t:void 0,a:void 0}),a})()}qo(["click","mousedown"]);import{template as Vt}from"solid-js/web";import{delegateEvents as Yo}from"solid-js/web";import{setAttribute as Xo}from"solid-js/web";import{effect as Go}from"solid-js/web";import{insert as Jt}from"solid-js/web";import{createComponent as Zo}from"solid-js/web";import{For as tn}from"solid-js";var Qo=Vt("<div role=tablist class=context-sidebar__tablist>"),en=Vt("<button type=button role=tab class=context-sidebar__tab>");function Kt(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=Qo();return Jt(t,Zo(tn,{get each(){return e.items()},children:o=>(()=>{var n=en();return n.$$click=()=>e.setSelectedToolId(o.id),Jt(n,()=>o.name),Go(()=>Xo(n,"data-active",r()===o.id?"":void 0)),n})()})),t})()}Yo(["click"]);var nn=xe('<div class=context-sidebar__tabs><button type=button class=context-sidebar__close title="Hide context sidebar"aria-label="Hide context sidebar">'),an=xe("<div class=context-sidebar__content>"),sn=xe("<div class=context-sidebar>"),ln=xe("<patchwork-view>",!0,!1,!1),cn=xe('<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 Yt(e){let r=ae("context-tool"),t=()=>{let o=r().map(a=>a.id),n=e.selectedToolId();return n&&o.includes(n)?n:o[0]};return de(Bt,{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=sn();return _e(o,de(et,{get when(){return r().length},get children(){var n=nn(),a=n.firstChild;return _e(n,de(Kt,{items:r,get selectedToolId(){return e.selectedToolId},get setSelectedToolId(){return e.setSelectedToolId}}),a),a.$$click=()=>e.onCollapse(),_e(a,de(tt,{})),n}}),null),_e(o,de(et,{get when(){return!e.isCollapsed()},get children(){var n=an();return _e(n,de(et,{get when(){return t()},keyed:!0,children:a=>(()=>{var i=ln();return i.component=a,i._$owner=on(),i})()})),n}}),null),o}})}function tt(){return cn()}rn(["click"]);import{template as dn}from"solid-js/web";import{effect as Xt}from"solid-js/web";import{getOwner as Gt}from"solid-js/web";import{createComponent as un}from"solid-js/web";import{memo as pn}from"solid-js/web";import{Show as hn}from"solid-js";var Zt=dn("<patchwork-view>",!0,!1,!1),rt=e=>Array.isArray(e)?String(e[0]):String(e);function Xl(e){let r=new Set;return e.filter(t=>{let o=rt(t);return r.has(o)?!1:(r.add(o),!0)})}function Gl(e){return un(hn,{get when(){return pn(()=>!!Array.isArray(e.slot))()?e.slot:!1},get fallback(){return(()=>{var r=Zt();return r._$owner=Gt(),Xt(()=>r.component=String(e.slot)),r})()},children:r=>(()=>{var t=Zt();return t._$owner=Gt(),Xt(o=>{var n=r()[1],a=r()[0];return n!==o.e&&(t.docUrl=o.e=n),a!==o.t&&(t.toolId=o.t=a),o},{e:void 0,t:void 0}),t})()})}var bn=ke("<div class=threepane__title>"),vn=ke("<div class=threepane__doctitle-tools>"),wn=ke('<button type=button class=frame__sidebar-toggle title="Show context sidebar"aria-label="Show context sidebar">'),yn=ke("<div class=frame__topbar><div class=threepane__spacer>"),_n=ke("<patchwork-view>",!0,!1,!1);function tr(e){let r=()=>e.toolSlots()??[];return(()=>{var t=yn(),o=t.firstChild;return ue(t,pe(ot,{get when(){return e.docUrl()},get children(){var n=bn();return ue(n,pe(jt,{get docUrl(){return e.docUrl}})),n}}),o),ue(t,pe(ot,{get when(){return er(()=>!!e.docUrl())()&&r().length},get children(){var n=vn();return ue(n,pe(xn,{get each(){return r()},children:a=>(()=>{var i=_n();return i._$owner=mn(),Qt(d=>{var l=rt(a),c=e.docUrl();return l!==d.e&&(i.toolId=d.e=l),c!==d.t&&(i.docUrl=d.t=c),d},{e:void 0,t:void 0}),i})()})),n}}),null),ue(t,pe(ot,{get when(){return er(()=>!!e.hasContext())()&&e.isRightCollapsed()},get children(){var n=wn();return n.$$click=()=>e.onToggleRight(),gn(n,"aria-pressed",!1),ue(n,pe(tt,{})),n}}),null),Qt(()=>t.classList.toggle("frame__topbar--left-collapsed",!!e.isLeftCollapsed())),t})()}fn(["click"]);import{template as Ve}from"solid-js/web";import{effect as Ar}from"solid-js/web";import{getOwner as Dr}from"solid-js/web";import{insert as Y}from"solid-js/web";import{createComponent as R}from"solid-js/web";import{memo as Se}from"solid-js/web";import{use as Ir}from"solid-js/web";import{parseAutomergeUrl as Wa}from"@automerge/automerge-repo/slim";import{getSuggestedImportUrl as Ha,getType as Na}from"@inkandswitch/patchwork-filesystem";import{getFallbackTool as qa,getRegistry as Ba}from"@inkandswitch/patchwork-plugins";import{createEffect as ut,createMemo as Je,createSignal as K,onCleanup as oe,onMount as Ja,Show as B}from"solid-js";import{template as C}from"solid-js/web";import{delegateEvents as sa}from"solid-js/web";import{setAttribute as Be}from"solid-js/web";import{effect as ct}from"solid-js/web";import"solid-js/web";import{createComponent as D}from"solid-js/web";import{insert as I}from"solid-js/web";import{use as la}from"solid-js/web";import{importPackage as Ra}from"@inkandswitch/patchwork-filesystem";import{registerPlugins as Fa}from"@inkandswitch/patchwork-plugins";import{createResource as Pa,createSignal as fe,onCleanup as lt,onMount as La,Show as q}from"solid-js";import{template as k}from"solid-js/web";import{delegateEvents as Dn}from"solid-js/web";import{effect as hr}from"solid-js/web";import{memo as In}from"solid-js/web";import{insert as v}from"solid-js/web";import{createComponent as x}from"solid-js/web";import{use as Rn}from"solid-js/web";import{setAttribute as Ce}from"solid-js/web";import{createResource as ta,createSignal as Ne,For as st,Match as he,onMount as ra,Show as z,Switch as cr}from"solid-js";import*as or from"@automerge/automerge/slim";import{getImportableUrlFromAutomergeUrl as kn}from"@inkandswitch/patchwork-filesystem";var nt=e=>e.startsWith("automerge:");function Cn(e){return e.replace(/[#?].*$/,"")}function nr(e){let r=e.split("#")[1];return r?r.split("|").filter(Boolean):[]}var N=e=>typeof e=="string"&&e.trim()?e.trim():void 0;function $n(e){if(typeof e=="string")return N(e);if(e&&typeof e=="object"){let{name:r,email:t}=e,o=N(r),n=N(t);return o&&n?`${o} <${n}>`:o??n}}function ar(e){if(!e||typeof e!="object")return{};let r=e,t=r.supportedDatatypes;return{id:N(r.id),name:N(r.name),type:N(r.type),supportedDatatypes:typeof t=="string"?[t]:Array.isArray(t)?t.filter(o=>typeof o=="string"):void 0}}async function rr(e){try{let r=await fetch(e);return r.ok?await r.json():void 0}catch{return}}var Sn=new Set(["dist","build","lib","out","esm","src","public"]);async function En(e){if(nt(e)){let o=kn(e);return rr(new URL("package.json",o).href)}let r;try{r=new URL(e)}catch{return}let t=r.pathname.split("/").filter(Boolean);for(/\.[a-z0-9]+$/i.test(t.at(-1)??"")&&t.pop();;){let o=`${r.origin}/${t.join("/")}${t.length?"/":""}`,n=await rr(new URL("package.json",o).href);if(n&&typeof n=="object")return n;if(!Sn.has(t.at(-1)?.toLowerCase()??""))return;t.pop()}}async function ir(e){let r=await En(e);if(r)return{name:N(r.name),title:N(r.title),version:N(r.version),description:N(r.description),author:$n(r.author),plugins:Array.isArray(r.plugins)?r.plugins.map(ar):void 0}}var He,Tn=1,re=new Map;function An(){if(He)return He;let e=new Worker("/module-loader-worker.js",{type:"module",name:"threepane-package-preview"});return e.addEventListener("message",r=>{let t=r.data,o=t&&re.get(t.id);o&&(re.delete(t.id),t.type==="descriptors"?o.resolve(t.descriptors.map(ar)):o.reject(new Error(t.error)))}),e.addEventListener("error",r=>{let t=new Error(`the background worker stopped: ${r.message??"no reason given"}`);for(let o of re.values())o.reject(t);re.clear(),He=void 0}),He=e,e}function sr(e,r=15e3){let t=Tn++;return new Promise((o,n)=>{let a=setTimeout(()=>{re.delete(t)&&n(new Error("it took too long to answer"))},r);re.set(t,{resolve:i=>{clearTimeout(a),o(i)},reject:i=>{clearTimeout(a),n(i)}});try{An().postMessage({type:"discover",id:t,url:e})}catch(i){clearTimeout(a),re.delete(t),n(i instanceof Error?i:new Error(String(i)))}})}async function lr(e,r){let t=await e.find(Cn(r)),o=t.doc();await new Promise(i=>setTimeout(i,0));let n=or.getChangesMetaSince(o,[]),a=new Map;for(let i of n){let d=i.time??0,l=a.get(i.actor);if(!l){a.set(i.actor,{actor:i.actor,changes:1,first:d,last:d});continue}l.changes++,d&&(!l.first||d<l.first)&&(l.first=d),d>l.last&&(l.last=d)}return{heads:[...t.heads()],changes:n.length,writers:[...a.values()].sort((i,d)=>d.changes-i.changes)}}var Fn=k("<button type=button class=doc-card__link>see package details"),Pn=k("<p class=pkg-about__quiet>reading\u2026"),Ln=k("<p class=pkg-about__quiet>no package.json."),Mn=k("<dl class=pkg-about__facts><dt>plugins</dt><dd>"),On=k("<dt>pinned"),it=k("<dd>"),at=k("<dt>history"),zn=k("<dd class=pkg-about__quiet>reading\u2026"),Un=k("<dd class=pkg-about__quiet>couldn't get its folder."),jn=k('<div class=pkg-about popover=auto><header class=pkg-about__header><h3 class=doc-card__rough></h3><button type=button class="doc-card__link pkg-about__close"popovertargetaction=hide aria-label=close>\xD7</button></header><section class="pkg-about__section pkg-about__section--claims"><h4>self-reported <span class=pkg-about__tag>unverified</span></h4></section><section class=pkg-about__section><h4>source</h4><dl class=pkg-about__facts><dt>url</dt><dd><code class="doc-card__code doc-card__url">'),Wn=k("<span class=pkg-about__version> "),Hn=k("<button type=button class=doc-card__link>"),Nn=k("<span class=pkg-about__quiet>unknown until loaded"),qn=k("<p class=doc-card__notice>"),Bn=k("<dt>heads"),Jn=k("<dd> <!>, <!> <p class=pkg-about__quiet>writers are devices, not people. folder only."),Vn=k("<dt>"),fr=k("<ul class=pkg-about__list>"),Kn=k("<span>nothing"),Yn=k("<span class=pkg-about__quiet> for "),Xn=k("<li>"),mr=k("<span class=pkg-about__quiet> \xB7 "),Gn=k("<span class=pkg-about__heads>"),Zn=k("<code class=doc-card__code>"),Qn=k("<li class=pkg-about__quiet>and <!> more"),ea=k("<li><code class=doc-card__code></code> <!> "),oa=0;function gr(e){let r=`pkg-about-${++oa}`,t=nt(e.url),o=nr(e.url),[n,a]=Ne(!1),[i]=ta(()=>n()&&t?e.url:void 0,f=>lr(e.repo,f)),[d,l]=Ne(!1),[c,s]=Ne(),[u,h]=Ne();async function b(){if(window.confirm(`Listing its plugins runs the package's code in a background worker.
|
|
1
|
+
import{a as Ye,b as Br}from"./chunk-FW4363Y4.js";var kt=Ye((Hi,xt)=>{var ie=1e3,se=ie*60,le=se*60,te=le*24,ho=te*7,fo=te*365.25;xt.exports=function(e,r){r=r||{};var t=typeof e;if(t==="string"&&e.length>0)return mo(e);if(t==="number"&&isFinite(e))return r.long?bo(e):go(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function mo(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*fo;case"weeks":case"week":case"w":return t*ho;case"days":case"day":case"d":return t*te;case"hours":case"hour":case"hrs":case"hr":case"h":return t*le;case"minutes":case"minute":case"mins":case"min":case"m":return t*se;case"seconds":case"second":case"secs":case"sec":case"s":return t*ie;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return t;default:return}}}}function go(e){var r=Math.abs(e);return r>=te?Math.round(e/te)+"d":r>=le?Math.round(e/le)+"h":r>=se?Math.round(e/se)+"m":r>=ie?Math.round(e/ie)+"s":e+"ms"}function bo(e){var r=Math.abs(e);return r>=te?Fe(e,r,te,"day"):r>=le?Fe(e,r,le,"hour"):r>=se?Fe(e,r,se,"minute"):r>=ie?Fe(e,r,ie,"second"):e+" ms"}function Fe(e,r,t,o){var n=r>=t*1.5;return Math.round(e/t)+" "+o+(n?"s":"")}});var $t=Ye((qi,Ct)=>{function vo(e){t.debug=t,t.default=t,t.coerce=l,t.disable=i,t.enable=n,t.enabled=u,t.humanize=kt(),t.destroy=c,Object.keys(e).forEach(s=>{t[s]=e[s]}),t.names=[],t.skips=[],t.formatters={};function r(s){let h=0;for(let f=0;f<s.length;f++)h=(h<<5)-h+s.charCodeAt(f),h|=0;return t.colors[Math.abs(h)%t.colors.length]}t.selectColor=r;function t(s){let h,f=null,b,y;function x(...p){if(!x.enabled)return;let d=x,g=Number(new Date),$=g-(h||g);d.diff=$,d.prev=h,d.curr=g,h=g,p[0]=t.coerce(p[0]),typeof p[0]!="string"&&p.unshift("%O");let F=0;p[0]=p[0].replace(/%([a-zA-Z%])/g,(j,Q)=>{if(j==="%%")return"%";F++;let O=t.formatters[Q];if(typeof O=="function"){let J=p[F];j=O.call(d,J),p.splice(F,1),F--}return j}),t.formatArgs.call(d,p),(d.log||t.log).apply(d,p)}return x.namespace=s,x.useColors=t.useColors(),x.color=t.selectColor(s),x.extend=o,x.destroy=t.destroy,Object.defineProperty(x,"enabled",{enumerable:!0,configurable:!1,get:()=>f!==null?f:(b!==t.namespaces&&(b=t.namespaces,y=t.enabled(s)),y),set:p=>{f=p}}),typeof t.init=="function"&&t.init(x),x}function o(s,h){let f=t(this.namespace+(typeof h>"u"?":":h)+s);return f.log=this.log,f}function n(s){t.save(s),t.namespaces=s,t.names=[],t.skips=[];let h=(typeof s=="string"?s:"").trim().replace(/\s+/g,",").split(",").filter(Boolean);for(let f of h)f[0]==="-"?t.skips.push(f.slice(1)):t.names.push(f)}function a(s,h){let f=0,b=0,y=-1,x=0;for(;f<s.length;)if(b<h.length&&(h[b]===s[f]||h[b]==="*"))h[b]==="*"?(y=b,x=f,b++):(f++,b++);else if(y!==-1)b=y+1,x++,f=x;else return!1;for(;b<h.length&&h[b]==="*";)b++;return b===h.length}function i(){let s=[...t.names,...t.skips.map(h=>"-"+h)].join(",");return t.enable(""),s}function u(s){for(let h of t.skips)if(a(s,h))return!1;for(let h of t.names)if(a(s,h))return!0;return!1}function l(s){return s instanceof Error?s.stack||s.message:s}function c(){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}Ct.exports=vo});var St=Ye((L,Pe)=>{L.formatArgs=yo;L.save=_o;L.load=xo;L.useColors=wo;L.storage=ko();L.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`."))}})();L.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 wo(){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 yo(e){if(e[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+e[0]+(this.useColors?"%c ":" ")+"+"+Pe.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)}L.log=console.debug||console.log||(()=>{});function _o(e){try{e?L.storage.setItem("debug",e):L.storage.removeItem("debug")}catch{}}function xo(){let e;try{e=L.storage.getItem("debug")||L.storage.getItem("DEBUG")}catch{}return!e&&typeof process<"u"&&"env"in process&&(e=process.env.DEBUG),e}function ko(){try{return localStorage}catch{}}Pe.exports=$t()(L);var{formatters:Co}=Pe.exports;Co.j=function(e){try{return JSON.stringify(e)}catch(r){return"[UnexpectedJSONParseError]: "+r.message}}});import{template as Hr}from"solid-js/web";import{createComponent as si}from"solid-js/web";import{setAttribute as li}from"solid-js/web";import{effect as ci}from"solid-js/web";import{insert as qr}from"solid-js/web";import{getOwner as di}from"solid-js/web";import{createMemo as Wr}from"solid-js";import{createStore as hi,reconcile as fi}from"solid-js/store";import{render as mi}from"solid-js/web";import{template as Ae}from"solid-js/web";import{insert as ne}from"solid-js/web";import{getOwner as Ee}from"solid-js/web";import{use as Te}from"solid-js/web";import{createComponent as U}from"solid-js/web";import{createUniqueId as Jr,untrack as ht}from"solid-js";import{isServer as Vr,isDev as ft}from"solid-js/web";import{reconcile as Kr}from"solid-js/store";function Xe(e,r={}){let t=r.storage||globalThis.localStorage,o=r.name||`storage-${Jr()}`;if(!t)return Object.assign(e,{2:null});let n=r.storageOptions,a=r.serialize||JSON.stringify.bind(JSON),i=r.deserialize||JSON.parse.bind(JSON),u=t.getItem(o,n),l=typeof e[0]=="function"?s=>{try{let h=i(s);e[1](()=>h)}catch(h){ft&&console.warn(h)}}:s=>{try{let h=i(s);e[1](Kr(h))}catch(h){ft&&console.warn(h)}},c=!0;if(u instanceof Promise?u.then(s=>c&&s&&l(s)):u&&l(u),typeof r.sync?.[0]=="function"){let s=typeof e[0]=="function"?e[0]:()=>e[0];r.sync[0](h=>{h.key!==o||!Vr&&(h.url||globalThis.location.href)!==globalThis.location.href||h.newValue===a(ht(s))||l(h.newValue)})}return Object.assign([],e,{1:typeof e[0]=="function"?s=>{let h=e[1](s),f=s!=null?a(h):s;return r.sync?.[1](o,f),f!=null?t.setItem(o,f,n):t.removeItem(o,n),c=!1,h}:(...s)=>{e[1](...s);let h=ht(()=>a(e[0]));r.sync?.[1](o,h),t.setItem(o,h,n),c=!1},2:u})}import{createEffect as Mr,createMemo as pt,createSignal as Z,on as Or,onCleanup as oi,onMount as ni,Show as me}from"solid-js";import{createEffect as mt,createSignal as gt,on as bt}from"solid-js";var V={leftCollapsed:"patchwork:leftSidebarCollapsed",rightCollapsed:"patchwork:rightSidebarCollapsed",leftWidth:"patchwork:leftSidebarWidth",rightWidth:"patchwork:rightSidebarWidth",contextToolId:"patchwork:contextSidebarToolId"},Ie="patchwork:collapse-context-sidebar",Re=400;function vt(e,r){let t=localStorage.getItem(e);return t?parseInt(t,10):r}function wt(e){return localStorage.getItem(e)==="true"}function Yr(){let[e,r]=gt(wt(V.leftCollapsed)),[t,o]=gt(vt(V.leftWidth,Re));return mt(bt(e,n=>{localStorage.setItem(V.leftCollapsed,String(n))})),mt(bt(t,n=>{localStorage.setItem(V.leftWidth,String(n))})),{isSidebarCollapsed:e,setIsSidebarCollapsed:r,leftSidebarWidth:t,setLeftSidebarWidth:o}}import{onCleanup as Xr,onMount as Gr}from"solid-js";var yt=180,Zr=720,Qr=120,_t=3;function Ge(e,{isCollapsed:r,setCollapsed:t,setWidth:o}){let n=!1,a=null,i=!1,u=null,l=d=>{if(d<Qr){r()||t(!0),u=null;return}r()&&t(!1);let g=Math.min(Zr,d);o(g),u=g},c=()=>{r()||u!==null&&u<yt&&o(yt)},s=null,h=()=>{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)},f=()=>{n=!1,a=null,document.body.style.userSelect="",document.body.removeAttribute("data-sidebar-resizing"),s?.remove(),s=null},b=d=>{d.preventDefault(),a={x:d.clientX,y:d.clientY},i=!1,u=null,n=!0,document.body.style.userSelect="none"},y=()=>{let d=n,g=i;f(),d&&g&&c()},x=d=>{if(!n||!a)return;let g=Math.abs(d.clientX-a.x),$=Math.abs(d.clientY-a.y);!i&&(g>_t||$>_t)&&(i=!0,h()),l(e==="left"?d.clientX:window.innerWidth-d.clientX)},p=d=>{if(i){d.preventDefault(),d.stopPropagation(),i=!1;return}t(g=>!g)};return Gr(()=>{document.addEventListener("mousemove",x),document.addEventListener("mouseup",y),Xr(()=>{document.removeEventListener("mousemove",x),document.removeEventListener("mouseup",y),n&&f()})}),{handleMouseDown:b,handleToggleClick:p}}import{createEffect as eo,createSignal as to,onCleanup as ro}from"solid-js";var ee=(e,r)=>{let[t,o]=to(!1);return eo(()=>{let n=r();if(!n)return;o(!1);let a=i=>{i.detail?.componentId===e&&o(!0)};n.addEventListener("patchwork:mounted",a),ro(()=>n.removeEventListener("patchwork:mounted",a))}),t};import{createEffect as oo,createSignal as no,onCleanup as ao}from"solid-js";var io=5e3,so=(e,r)=>{let[t,o]=no(!1);return oo(()=>{if(t())return;let n=e(),a=r();if(!n||!a)return;let i=l=>{let c=l.detail;c?.url&&c.url!==a||o(!0)};n.addEventListener("patchwork:mounted",i),n.addEventListener("patchwork:no-tool",i);let u=setTimeout(()=>o(!0),io);ao(()=>{n.removeEventListener("patchwork:mounted",i),n.removeEventListener("patchwork:no-tool",i),clearTimeout(u)})}),t};import{getRegistry as lo}from"@inkandswitch/patchwork-plugins";import{createMemo as co,createSignal as uo,onCleanup as po}from"solid-js";function ae(e){let r=lo("patchwork:component"),[t,o]=uo(0),n=r.on("changed",()=>o(a=>a+1));return po(n),co(()=>(t(),(r.all?.()??[]).filter(a=>(a.tags??[]).includes(e)).map(a=>({id:a.id,name:a.name||a.id,icon:a.icon})).sort((a,i)=>a.name.localeCompare(i.name))))}import{template as ke}from"solid-js/web";import{delegateEvents as fn}from"solid-js/web";import{getOwner as mn}from"solid-js/web";import{effect as er}from"solid-js/web";import{setAttribute as gn}from"solid-js/web";import{memo as tr}from"solid-js/web";import{insert as ue}from"solid-js/web";import{createComponent as pe}from"solid-js/web";import{For as xn,Show as ot}from"solid-js";import{template as Mt}from"solid-js/web";import{delegateEvents as Lo}from"solid-js/web";import{insert as Mo}from"solid-js/web";import"solid-js/web";import{setAttribute as Pt}from"solid-js/web";import{effect as Lt}from"solid-js/web";import{use as Ot}from"solid-js/web";import{createComponent as Ze}from"solid-js/web";var At=Br(St(),1),Dt=(0,At.default)("cabbages");function Et(e){return typeof e=="object"&&typeof e!=null&&Object.getPrototypeOf(e)==Object.prototype}var $o="\uFFFC";function It(e,...r){if(r.length==0){Dt("empty patch");return}let[t,o,n]=r,a=[...t];for(;;){let i=a.shift();if(!a.length){let l=Array.isArray(o);if(Et(e)&&l&&typeof i>"u"&&typeof o[0]=="string"){delete e[o[0]];return}if(l||typeof o=="number"){if(typeof i>"u")throw new Error("cant treat top level as a seq");i=i;let[c,s]=Array.isArray(o)?o:[o,o+1],h=Array.isArray(o)&&o.length==0;if(!h&&(c==null||s==null))throw new RangeError("it's all or nothing, no half measures");let f=typeof n>"u",b=c===s&&!f,y=h&&!f,x=!b&&!f&&!y;if(typeof e[i]>"u"){if(typeof e=="string")return;typeof n=="string"?e[i]="":e[i]=[]}let p=e[i];if(Array.isArray(p)){if(y){Array.isArray(n)?p.push(...n):p.push(n);return}if(b||x){Array.isArray(n)?p.splice(c,s-c,...n):p.splice(c,s-c,n);return}if(f){p.splice(c,s-c);return}throw new Error("i don't know what happened")}if(typeof p=="string"){if(y){e[i]=p+n;return}if(x||b){e[i]=p.slice(0,c)+(typeof n=="string"?n:n.map(d=>typeof d=="string"?d:$o).join(""))+p.slice(s);return}if(f){e[i]=p.slice(0,c)+p.slice(s);return}throw new Error("i don't know what happened")}if(Et(p)&&l&&typeof o[0]=="string"){delete p[o[0]];return}throw new Error("not implemented")}if(typeof i>"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[i]>"u"&&(e[i]={}),l){let[c,s]=o;c!=null&&s!=null&&(typeof n>"u"&&c!=null&&s!=null?delete e[i][c||s]:e[i][c||s]=n)}else if(typeof n>"u")delete e[i][o];else{if(typeof e[i]=="string")return;e[i][o]=n}return}if(typeof i>"u")throw new Error("cant treat top level as a seq");i=i;let u=a[0];if(typeof e[i]>"u")if(typeof u=="string")e[i]={};else if(typeof u=="number")e[i]=[];else throw new Error(`can't go down this road ${e}.${i}.${u}`);e=e[i]}}function Tt(e,r){for(let t=0;t<r.length;t++)e=e?e[r[t]]:void 0;return e}function Rt(e,r){let t=e.path.slice(0,-1),o=e.path[e.path.length-1];switch(e.action){case"mark":case"unmark":return Dt(`skipping ${e.action} because it doesn't affect material reality`),[];case"inc":if(r)return[t,o,Tt(r.patchInfo.after,e.path)];throw new Error(`can't apply ${e.action} without payload argument`);case"conflict":if(r)return[t,o,Tt(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],structuredClone(e.values)];case"splice":return[t,[o,o],[e.value]];case"put":return[t,o,structuredClone(e.value)]}}function Le(e){return r=>{for(let t of e.patches)It(r,...Rt(t,e))}}import{createMemo as Ao}from"solid-js";import{onCleanup as So}from"solid-js";import{createStore as Eo,produce as To,reconcile as Ft}from"solid-js/store";var ve=new WeakMap;function Me(e){if(So(()=>{let a=ve.get(e);a&&(a.refs--||a.cleanup())}),ve.has(e)){let a=ve.get(e);return a.refs++,a.store}let[r,t]=Eo(structuredClone(e.doc()));ve.set(e,{refs:0,store:r,cleanup(){e.off("change",o),e.off("delete",n),ve.delete(e)}});function o(a){if(a.scopeReplaced){t(Ft(a.doc??{}));return}t(To(Le(a)))}function n(){t(Ft({}))}return e.on("change",o),e.on("delete",n),e.whenReady().then(()=>{t(structuredClone(e.doc()))}),r}import{getOwner as Qi,onCleanup as es,createSignal as ts,untrack as rs,sharedConfig as os,onMount as ns,DEV as as,equalFn as is}from"solid-js";import{isServer as ls}from"solid-js/web";var ce=e=>typeof e=="function"&&!e.length?e():e;function Oe(e){return Ao(()=>ce(e)&&Me(ce(e)))}import{createEffect as Io,createResource as Ro,useContext as Fo}from"solid-js";import{createContext as Do}from"solid-js";var ze=Do(null);function we(e,r){let t=Fo(ze);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 u=ce(e);if(!u)return;let l=o.findWithProgress(u).peek();return l.state==="ready"?l.handle:void 0}let[a,{mutate:i}]=Ro(e,u=>o.findWithProgress(u).whenReady(),{initialValue:n()});return Io(()=>{ce(e)||i()}),a}function Ue(e,r){let t=we(e,r);return[Oe(t),t]}import{onCleanup as $s}from"solid-js";import{createSignal as Es}from"solid-js";import{createEffect as Ds,onCleanup as Is}from"solid-js";import{createSignal as Fs}from"solid-js";import{useContext as js}from"solid-js";import{getType as zo}from"@inkandswitch/patchwork-filesystem";import{getRegistry as Uo,isLoadedPlugin as jo}from"@inkandswitch/patchwork-plugins";import{createEffect as Wo,createMemo as je,createSignal as Qe,onCleanup as No,onMount as Ut,Show as jt}from"solid-js";var zt=Mt("<span class=threepane__title-text>"),Oo=Mt("<input class=threepane__title-input type=text>");function Wt(e){let r,[t,o]=Qe();return Ut(()=>{o(r.closest("repo-provider")?.repo)}),Ze(jt,{get when(){return t()},get fallback(){return(()=>{var n=zt(),a=r;return typeof a=="function"?Ot(a,n):r=n,n})()},children:n=>Ze(Ho,{get docUrl(){return e.docUrl},get repo(){return n()}})})}function Ho(e){let[r,t]=Ue(()=>e.docUrl(),{repo:e.repo}),o=Uo("patchwork:datatype"),[n,a]=Qe(0);Ut(()=>{let p=o.on("changed",()=>a(d=>d+1));No(p)});let i=je(()=>{let p=r();return p?zo(p):void 0});Wo(()=>{let p=i();p&&o.load(p)});let u=je(()=>{n();let p=i();if(!p)return;let d=o.get(p);return d&&jo(d)?d:void 0}),l=je(()=>{let p=r(),d=u();if(!(!p||!d))return d.module.getTitle(p)}),c=je(()=>!!t()&&typeof u()?.module.setTitle=="function"),[s,h]=Qe(!1),f;function b(){c()&&(h(!0),queueMicrotask(()=>{f?.focus(),f?.select()}))}function y(p){if(!s()||(h(!1),!p))return;let d=f?.value.trim();if(!d||d===l())return;let g=t(),$=u()?.module.setTitle;!g||!$||g.change(F=>{$(F,d);let P=F["@patchwork"];P&&(P.title=d)})}function x(p){let d=e.docUrl(),g=p.dataTransfer;if(!d||!g)return;let $=l()??"Untitled",F=i();g.effectAllowed="copyLink",g.setData("text/x-patchwork-dnd",JSON.stringify({source:"threepane",items:[{url:d,name:$,type:F}]})),g.setData("text/x-patchwork-urls",JSON.stringify([d])),g.setData("text/uri-list",`${location.origin}${location.pathname}#doc=${d}\r
|
|
2
|
+
`),g.setData("text/plain",d)}return Ze(jt,{get when(){return s()},get fallback(){return(()=>{var p=zt();return p.$$click=b,p.addEventListener("dragstart",x),Pt(p,"draggable",!0),Mo(p,()=>l()??"Untitled"),Lt(d=>{var g=!!c(),$=c()?"Rename":void 0;return g!==d.e&&p.classList.toggle("threepane__title-text--editable",d.e=g),$!==d.t&&Pt(p,"title",d.t=$),d},{e:void 0,t:void 0}),p})()},get children(){var p=Oo();p.$$keydown=g=>{g.key==="Enter"?(g.preventDefault(),y(!0)):g.key==="Escape"&&(g.preventDefault(),y(!1))},p.addEventListener("blur",()=>y(!0));var d=f;return typeof d=="function"?Ot(d,p):f=p,Lt(()=>p.value=l()??""),p}})}Lo(["keydown","click"]);import{template as xe}from"solid-js/web";import{delegateEvents as rn}from"solid-js/web";import{getOwner as on}from"solid-js/web";import{insert as _e}from"solid-js/web";import{createComponent as de}from"solid-js/web";import{Show as et}from"solid-js";import{template as Bt}from"solid-js/web";import{delegateEvents as qo}from"solid-js/web";import{setStyleProperty as Bo}from"solid-js/web";import{insert as Jo}from"solid-js/web";import{setAttribute as We}from"solid-js/web";import{effect as Nt}from"solid-js/web";import{memo as ye}from"solid-js/web";import{createComponent as Ht}from"solid-js/web";import{Show as qt}from"solid-js";var Vo=Bt('<button class="sidebar-toggle sidebar-toggle--resizable">'),Ko=Bt("<div class=sidebar>");function Jt(e){let r=()=>`${e.isCollapsed()?0:e.width()}px`,t=()=>e.canExpand?.()??!0,o=()=>Ht(qt,{get when(){return!e.isCollapsed()},get children(){return e.children}}),n=()=>Ht(qt,{get when(){return!e.isCollapsed()||t()},get children(){var a=Vo();return a.$$mousedown=i=>e.onMouseDown(i),a.$$click=i=>e.onToggleClick(i),Nt(i=>{var u=e.isCollapsed()?"Expand sidebar":"Toggle or resize sidebar",l=e.isCollapsed()?"Click to expand, drag to resize":"Click to toggle, drag to resize";return u!==i.e&&We(a,"aria-label",i.e=u),l!==i.t&&We(a,"title",i.t=l),i},{e:void 0,t:void 0}),a}});return(()=>{var a=Ko();return Jo(a,(()=>{var i=ye(()=>e.side==="left");return()=>i()?[ye(o),ye(n)]:[ye(n),ye(o)]})()),Nt(i=>{var u=e.side,l=e.isCollapsed()?"":void 0,c=r();return u!==i.e&&We(a,"data-side",i.e=u),l!==i.t&&We(a,"data-collapsed",i.t=l),c!==i.a&&Bo(a,"width",i.a=c),i},{e:void 0,t:void 0,a:void 0}),a})()}qo(["click","mousedown"]);import{template as Kt}from"solid-js/web";import{delegateEvents as Yo}from"solid-js/web";import{setAttribute as Xo}from"solid-js/web";import{effect as Go}from"solid-js/web";import{insert as Vt}from"solid-js/web";import{createComponent as Zo}from"solid-js/web";import{For as tn}from"solid-js";var Qo=Kt("<div role=tablist class=context-sidebar__tablist>"),en=Kt("<button type=button role=tab class=context-sidebar__tab>");function Yt(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=Qo();return Vt(t,Zo(tn,{get each(){return e.items()},children:o=>(()=>{var n=en();return n.$$click=()=>e.setSelectedToolId(o.id),Vt(n,()=>o.name),Go(()=>Xo(n,"data-active",r()===o.id?"":void 0)),n})()})),t})()}Yo(["click"]);var nn=xe('<div class=context-sidebar__tabs><button type=button class=context-sidebar__close title="Hide context sidebar"aria-label="Hide context sidebar">'),an=xe("<div class=context-sidebar__content>"),sn=xe("<div class=context-sidebar>"),ln=xe("<patchwork-view>",!0,!1,!1),cn=xe('<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 Xt(e){let r=ae("context-tool"),t=()=>{let o=r().map(a=>a.id),n=e.selectedToolId();return n&&o.includes(n)?n:o[0]};return de(Jt,{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=sn();return _e(o,de(et,{get when(){return r().length},get children(){var n=nn(),a=n.firstChild;return _e(n,de(Yt,{items:r,get selectedToolId(){return e.selectedToolId},get setSelectedToolId(){return e.setSelectedToolId}}),a),a.$$click=()=>e.onCollapse(),_e(a,de(tt,{})),n}}),null),_e(o,de(et,{get when(){return!e.isCollapsed()},get children(){var n=an();return _e(n,de(et,{get when(){return t()},keyed:!0,children:a=>(()=>{var i=ln();return i.component=a,i._$owner=on(),i})()})),n}}),null),o}})}function tt(){return cn()}rn(["click"]);import{template as dn}from"solid-js/web";import{effect as Gt}from"solid-js/web";import{getOwner as Zt}from"solid-js/web";import{createComponent as un}from"solid-js/web";import{memo as pn}from"solid-js/web";import{Show as hn}from"solid-js";var Qt=dn("<patchwork-view>",!0,!1,!1),rt=e=>Array.isArray(e)?String(e[0]):String(e);function Xl(e){let r=new Set;return e.filter(t=>{let o=rt(t);return r.has(o)?!1:(r.add(o),!0)})}function Gl(e){return un(hn,{get when(){return pn(()=>!!Array.isArray(e.slot))()?e.slot:!1},get fallback(){return(()=>{var r=Qt();return r._$owner=Zt(),Gt(()=>r.component=String(e.slot)),r})()},children:r=>(()=>{var t=Qt();return t._$owner=Zt(),Gt(o=>{var n=r()[1],a=r()[0];return n!==o.e&&(t.docUrl=o.e=n),a!==o.t&&(t.toolId=o.t=a),o},{e:void 0,t:void 0}),t})()})}var bn=ke("<div class=threepane__title>"),vn=ke("<div class=threepane__doctitle-tools>"),wn=ke('<button type=button class=frame__sidebar-toggle title="Show context sidebar"aria-label="Show context sidebar">'),yn=ke("<div class=frame__topbar><div class=threepane__spacer>"),_n=ke("<patchwork-view>",!0,!1,!1);function rr(e){let r=()=>e.toolSlots()??[];return(()=>{var t=yn(),o=t.firstChild;return ue(t,pe(ot,{get when(){return e.docUrl()},get children(){var n=bn();return ue(n,pe(Wt,{get docUrl(){return e.docUrl}})),n}}),o),ue(t,pe(ot,{get when(){return tr(()=>!!e.docUrl())()&&r().length},get children(){var n=vn();return ue(n,pe(xn,{get each(){return r()},children:a=>(()=>{var i=_n();return i._$owner=mn(),er(u=>{var l=rt(a),c=e.docUrl();return l!==u.e&&(i.toolId=u.e=l),c!==u.t&&(i.docUrl=u.t=c),u},{e:void 0,t:void 0}),i})()})),n}}),null),ue(t,pe(ot,{get when(){return tr(()=>!!e.hasContext())()&&e.isRightCollapsed()},get children(){var n=wn();return n.$$click=()=>e.onToggleRight(),gn(n,"aria-pressed",!1),ue(n,pe(tt,{})),n}}),null),er(()=>t.classList.toggle("frame__topbar--left-collapsed",!!e.isLeftCollapsed())),t})()}fn(["click"]);import{template as Ve}from"solid-js/web";import{effect as Dr}from"solid-js/web";import{getOwner as Ir}from"solid-js/web";import{insert as Y}from"solid-js/web";import{createComponent as R}from"solid-js/web";import{memo as Se}from"solid-js/web";import{use as Rr}from"solid-js/web";import{parseAutomergeUrl as Wa}from"@automerge/automerge-repo/slim";import{getSuggestedImportUrl as Na,getType as Ha}from"@inkandswitch/patchwork-filesystem";import{getFallbackTool as qa,getRegistry as Ba}from"@inkandswitch/patchwork-plugins";import{createEffect as ut,createMemo as Je,createSignal as K,onCleanup as oe,onMount as Ja,Show as B}from"solid-js";import{template as C}from"solid-js/web";import{delegateEvents as sa}from"solid-js/web";import{setAttribute as Be}from"solid-js/web";import{effect as ct}from"solid-js/web";import"solid-js/web";import{createComponent as D}from"solid-js/web";import{insert as I}from"solid-js/web";import{use as la}from"solid-js/web";import{importPackage as Ra}from"@inkandswitch/patchwork-filesystem";import{registerPlugins as Fa}from"@inkandswitch/patchwork-plugins";import{createResource as Pa,createSignal as fe,onCleanup as lt,onMount as La,Show as q}from"solid-js";import{template as k}from"solid-js/web";import{delegateEvents as Dn}from"solid-js/web";import{effect as fr}from"solid-js/web";import{memo as In}from"solid-js/web";import{insert as v}from"solid-js/web";import{createComponent as _}from"solid-js/web";import{use as Rn}from"solid-js/web";import{setAttribute as Ce}from"solid-js/web";import{createResource as ta,createSignal as He,For as st,Match as he,onMount as ra,Show as z,Switch as dr}from"solid-js";import*as nr from"@automerge/automerge/slim";import{getImportableUrlFromAutomergeUrl as kn}from"@inkandswitch/patchwork-filesystem";var nt=e=>e.startsWith("automerge:");function Cn(e){return e.replace(/[#?].*$/,"")}function ar(e){let r=e.split("#")[1];return r?r.split("|").filter(Boolean):[]}var H=e=>typeof e=="string"&&e.trim()?e.trim():void 0;function $n(e){if(typeof e=="string")return H(e);if(e&&typeof e=="object"){let{name:r,email:t}=e,o=H(r),n=H(t);return o&&n?`${o} <${n}>`:o??n}}function ir(e){if(!e||typeof e!="object")return{};let r=e,t=r.supportedDatatypes;return{id:H(r.id),name:H(r.name),type:H(r.type),supportedDatatypes:typeof t=="string"?[t]:Array.isArray(t)?t.filter(o=>typeof o=="string"):void 0}}async function or(e){try{let r=await fetch(e);return r.ok?await r.json():void 0}catch{return}}var Sn=new Set(["dist","build","lib","out","esm","src","public"]);async function En(e){if(nt(e)){let o=kn(e);return or(new URL("package.json",o).href)}let r;try{r=new URL(e)}catch{return}let t=r.pathname.split("/").filter(Boolean);for(/\.[a-z0-9]+$/i.test(t.at(-1)??"")&&t.pop();;){let o=`${r.origin}/${t.join("/")}${t.length?"/":""}`,n=await or(new URL("package.json",o).href);if(n&&typeof n=="object")return n;if(!Sn.has(t.at(-1)?.toLowerCase()??""))return;t.pop()}}async function sr(e){let r=await En(e);if(r)return{name:H(r.name),title:H(r.title),version:H(r.version),description:H(r.description),author:$n(r.author),plugins:Array.isArray(r.plugins)?r.plugins.map(ir):void 0}}var Ne,Tn=1,re=new Map;function An(){if(Ne)return Ne;let e=new Worker("/module-loader-worker.js",{type:"module",name:"threepane-package-preview"});return e.addEventListener("message",r=>{let t=r.data,o=t&&re.get(t.id);o&&(re.delete(t.id),t.type==="descriptors"?o.resolve(t.descriptors.map(ir)):o.reject(new Error(t.error)))}),e.addEventListener("error",r=>{let t=new Error(`the background worker stopped: ${r.message??"no reason given"}`);for(let o of re.values())o.reject(t);re.clear(),Ne=void 0}),Ne=e,e}function lr(e,r=15e3){let t=Tn++;return new Promise((o,n)=>{let a=setTimeout(()=>{re.delete(t)&&n(new Error("it took too long to answer"))},r);re.set(t,{resolve:i=>{clearTimeout(a),o(i)},reject:i=>{clearTimeout(a),n(i)}});try{An().postMessage({type:"discover",id:t,url:e})}catch(i){clearTimeout(a),re.delete(t),n(i instanceof Error?i:new Error(String(i)))}})}async function cr(e,r){let t=await e.find(Cn(r)),o=t.doc();await new Promise(i=>setTimeout(i,0));let n=nr.getChangesMetaSince(o,[]),a=new Map;for(let i of n){let u=i.time??0,l=a.get(i.actor);if(!l){a.set(i.actor,{actor:i.actor,changes:1,first:u,last:u});continue}l.changes++,u&&(!l.first||u<l.first)&&(l.first=u),u>l.last&&(l.last=u)}return{heads:[...t.heads()],changes:n.length,writers:[...a.values()].sort((i,u)=>u.changes-i.changes)}}var Fn=k("<button type=button class=doc-card__link>see package details"),Pn=k("<p class=pkg-about__quiet>reading\u2026"),Ln=k("<p class=pkg-about__quiet>no package.json."),Mn=k("<dl class=pkg-about__facts><dt>plugins</dt><dd>"),On=k("<dt>pinned"),it=k("<dd>"),at=k("<dt>history"),zn=k("<dd class=pkg-about__quiet>reading\u2026"),Un=k("<dd class=pkg-about__quiet>couldn't get its folder."),jn=k('<div class=pkg-about popover=auto><header class=pkg-about__header><h3 class=doc-card__rough></h3><button type=button class="doc-card__link pkg-about__close"popovertargetaction=hide aria-label=close>\xD7</button></header><section class="pkg-about__section pkg-about__section--claims"><h4>self-reported <span class=pkg-about__tag>unverified</span></h4></section><section class=pkg-about__section><h4>source</h4><dl class=pkg-about__facts><dt>url</dt><dd><code class="doc-card__code doc-card__url">'),Wn=k("<span class=pkg-about__version> "),Nn=k("<button type=button class=doc-card__link>"),Hn=k("<span class=pkg-about__quiet>unknown until loaded"),qn=k("<p class=doc-card__notice>"),Bn=k("<dt>heads"),Jn=k("<dd> <!>, <!> <p class=pkg-about__quiet>writers are devices, not people. folder only."),Vn=k("<dt>"),mr=k("<ul class=pkg-about__list>"),Kn=k("<span>nothing"),Yn=k("<span class=pkg-about__quiet> for "),Xn=k("<li>"),gr=k("<span class=pkg-about__quiet> \xB7 "),Gn=k("<span class=pkg-about__heads>"),Zn=k("<code class=doc-card__code>"),Qn=k("<li class=pkg-about__quiet>and <!> more"),ea=k("<li><code class=doc-card__code></code> <!> "),oa=0;function br(e){let r=`pkg-about-${++oa}`,t=nt(e.url),o=ar(e.url),[n,a]=He(!1),[i]=ta(()=>n()&&t?e.url:void 0,d=>cr(e.repo,d)),[u,l]=He(!1),[c,s]=He(),[h,f]=He();async function b(){if(window.confirm(`Listing its plugins runs the package's code in a background worker.
|
|
2
3
|
|
|
3
4
|
${e.url}
|
|
4
5
|
|
|
5
6
|
It can use the network and this site's stored data, including your documents. Only run it if you trust where it came from.
|
|
6
7
|
|
|
7
|
-
Run it?`)){
|
|
8
|
+
Run it?`)){f(void 0),l(!0);try{s(await lr(e.url))}catch(g){f(g?.message??String(g))}finally{l(!1)}}}let y;ra(()=>{y.addEventListener("toggle",d=>{d.newState==="open"&&a(!0)})});let x=()=>e.claims?.title??e.claims?.name??"package",p=()=>c()??e.claims?.plugins;return[(()=>{var d=Fn();return Ce(d,"popovertarget",r),d})(),(()=>{var d=jn(),g=d.firstChild,$=g.firstChild,F=$.nextSibling,P=g.nextSibling,j=P.firstChild,Q=P.nextSibling,O=Q.firstChild,J=O.nextSibling,ge=J.firstChild,be=ge.nextSibling,De=be.firstChild,X=y;return typeof X=="function"?Rn(X,d):y=d,Ce(d,"id",r),v($,x,null),v($,_(z,{get when(){return e.claims?.version},children:E=>(()=>{var S=Wn(),G=S.firstChild;return v(S,E,null),S})()}),null),Ce(F,"popovertarget",r),v(P,_(dr,{get children(){return[_(he,{get when(){return e.claimsLoading},get children(){return Pn()}}),_(he,{get when(){return In(()=>!e.claims)()&&!c()},get children(){return Ln()}}),_(he,{when:!0,get children(){var E=Mn(),S=E.firstChild,G=S.nextSibling;return v(E,_(qe,{label:"name",get value(){return e.claims?.name}}),S),v(E,_(qe,{label:"title",get value(){return e.claims?.title}}),S),v(E,_(qe,{label:"author",get value(){return e.claims?.author}}),S),v(E,_(qe,{label:"description",get value(){return e.claims?.description}}),S),v(G,_(z,{get when(){return p()},get fallback(){return _(z,{when:t,get fallback(){return Hn()},get children(){var M=Nn();return M.$$click=()=>void b(),v(M,()=>u()?"listing\u2026":"list them"),fr(()=>M.disabled=u()),M}})},children:M=>_(na,{get plugins(){return M()}})}),null),v(G,_(z,{get when(){return h()},children:M=>(()=>{var m=qn();return v(m,M),m})()}),null),E}})]}}),null),v(De,()=>e.url),v(J,_(z,{get when(){return o.length},get children(){return[On(),(()=>{var E=it();return v(E,_(ur,{heads:o})),E})()]}}),null),v(J,_(z,{when:t,get children(){return _(dr,{get children(){return[_(he,{get when(){return i.loading},get children(){return[at(),zn()]}}),_(he,{get when(){return i.error},get children(){return[at(),Un()]}}),_(he,{get when(){return i()},children:E=>[Bn(),(()=>{var S=it();return v(S,_(ur,{get heads(){return E().heads}})),S})(),at(),(()=>{var S=Jn(),G=S.firstChild,M=G.nextSibling,m=M.nextSibling,w=m.nextSibling,T=w.nextSibling,A=T.nextSibling;return v(S,()=>E().changes,G),v(S,()=>E().changes===1?"change":"changes",M),v(S,()=>E().writers.length,w),v(S,()=>E().writers.length===1?"writer":"writers",A),v(S,_(aa,{get writers(){return E().writers}}),A),S})()]})]}})}}),null),d})()]}function qe(e){return _(z,{get when(){return e.value},get children(){return[(()=>{var r=Vn();return v(r,()=>e.label),r})(),(()=>{var r=it();return v(r,()=>e.value),r})()]}})}function na(e){return _(z,{get when(){return e.plugins.length},get fallback(){return Kn()},get children(){var r=mr();return v(r,_(st,{get each(){return e.plugins},children:t=>(()=>{var o=Xn();return v(o,()=>t.name??t.id??"(unnamed)",null),v(o,_(z,{get when(){return t.type},children:n=>(()=>{var a=gr(),i=a.firstChild;return v(a,n,null),a})()}),null),v(o,_(z,{get when(){return t.supportedDatatypes?.length},get children(){var n=Yn(),a=n.firstChild;return v(n,()=>t.supportedDatatypes.join(", "),null),n}}),null),o})()})),r}})}function ur(e){return(()=>{var r=Gn();return v(r,_(st,{get each(){return e.heads},children:t=>(()=>{var o=Zn();return Ce(o,"title",t),v(o,()=>t.slice(0,7)),o})()})),r})()}var pr=6;function aa(e){let r=()=>e.writers.length-pr;return(()=>{var t=mr();return v(t,_(st,{get each(){return e.writers.slice(0,pr)},children:o=>(()=>{var n=ea(),a=n.firstChild,i=a.nextSibling,u=i.nextSibling,l=u.nextSibling;return v(a,()=>o.actor.slice(0,8)),v(n,()=>o.changes,u),v(n,()=>o.changes===1?"change":"changes",null),v(n,_(z,{get when(){return o.last},get children(){var c=gr(),s=c.firstChild;return v(c,()=>ia(o),null),c}}),null),fr(()=>Ce(a,"title",o.actor)),n})()}),null),v(t,_(z,{get when(){return r()>0},get children(){var o=Qn(),n=o.firstChild,a=n.nextSibling,i=a.nextSibling;return v(o,r,a),o}}),null),t})()}function hr(e){return new Date(e*1e3).toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric"})}function ia(e){let r=hr(e.last),t=e.first?hr(e.first):r;return t===r?r:`${t} \u2013 ${r}`}Dn(["click"]);var ca=C("<div class=doc-card><svg class=doc-card__defs aria-hidden=true><filter id=doc-card-rough><feTurbulence type=fractalNoise baseFrequency=0.04 numOctaves=2 seed=1></feTurbulence><feDisplacementMap in=SourceGraphic scale=1.4></feDisplacementMap></filter></svg><div class=doc-card__sheet><h2 class=doc-card__rough>"),da=C('<div class="doc-card doc-card--finding"role=status><span class=doc-card__dot></span><span class=doc-card__finding-label>finding this doc\u2026'),ua=C("<p>it's a <code class=doc-card__code></code>.<br>nothing here opens one yet."),pa=C("<p class=doc-card__links>"),ha=C("<p>it'll open here if a package adds a tool for it."),fa=C("<p>the doc suggests "),dt=C('<div class=doc-card__actions><button type=button class="doc-card__button doc-card__button--primary">'),ma=C("<strong class=pkg-line>"),ga=C("<span class=pkg-line__version> "),ba=C("<p class=doc-card__notice>couldn't load it: "),va=C("<button type=button class=doc-card__link>open doc with "),wa=C("<p>we couldn't get it from anywhere we looked.<br>that might mean:"),ya=C("<ul class=doc-card__reasons><li>the person who sent you the link hasn't given you access yet</li><li>it hasn't finished syncing from their device yet</li><li>something's wrong with the "),_a=C("<p>we'll keep looking. if it turns up, it'll open right here."),xa=C("<button type=button class=doc-card__sync>sync server"),ka=C("<span class=doc-card__sync-told role=status> (<!>)"),Ca=C("<p>found it, but it's private."),$a=C("<p>ask the owner to share it. if you're not in their phonebook, send them your card."),Sa=C("<p>it'll open right here once they do."),Ea=C("<p>the doc is here, but the tool that shows it didn't load."),Ta=C("<p class=doc-card__notice>"),Aa=C("<p>a bit of it got lost or changed on the way here, so it can't point at any doc. maybe a character dropped when it was copied, or the link got cut short."),Da=C("<p>if someone sent it to you, ask them for the link again."),Ia=C('<p class=doc-card__aside><code class="doc-card__code doc-card__url">');function $e(e){let r;return La(()=>{r.dispatchEvent(new CustomEvent("patchwork:no-tool",{bubbles:!0,composed:!0,detail:{url:e.url}}))}),(()=>{var t=ca(),o=t.firstChild,n=o.nextSibling,a=n.firstChild,i=r;return typeof i=="function"?la(i,t):r=t,I(a,()=>e.title),I(n,()=>e.children,null),t})()}function vr(){return da()}function wr(e){let[r,t]=fe(!1),[o,n]=fe(),[a]=Pa(()=>e.suggestion,l=>sr(l).catch(()=>{}));async function i(l){if(window.confirm(`Load this package?
|
|
8
9
|
|
|
9
10
|
${l}
|
|
10
11
|
|
|
11
|
-
Its code runs in this page and can read and change your documents. Only load it if you trust where it came from.`)){n(void 0),t(!0);try{let s=await Ra(l);if(!Array.isArray(s?.plugins))throw new Error("it doesn't export any plugins");Fa(s.plugins,l)}catch(s){console.error(`couldn't load the package at ${l}`,s),n(s?.message??String(s))}finally{t(!1)}}}let d=()=>{let l=a();return l&&(l.title||l.name)?l:void 0};return D($e,{get url(){return e.url},title:"no tool for this",get children(){return[(()=>{var l=ua(),c=l.firstChild,s=c.nextSibling;return I(s,()=>e.type),l})(),D(q,{get when(){return e.suggestion},get fallback(){return ha()},children:l=>[(()=>{var c=fa(),s=c.firstChild;return I(c,D(q,{get when(){return d()},fallback:"a package.",children:u=>[(()=>{var h=ma();return I(h,()=>u().title??u().name),h})(),D(q,{get when(){return u().version},children:h=>(()=>{var b=ga(),_=b.firstChild;return I(b,h,null),b})()}),"."]}),null),c})(),(()=>{var c=dt(),s=c.firstChild;return s.$$click=()=>void i(l()),I(s,()=>r()?"loading\u2026":"load package"),ct(()=>s.disabled=r()),c})(),D(q,{get when(){return o()},children:c=>(()=>{var s=ba(),u=s.firstChild;return I(s,c,null),s})()})]}),D(q,{get when(){return e.suggestion||e.anything},get children(){var l=pa();return I(l,D(q,{get when(){return e.suggestion},children:c=>D(gr,{get url(){return c()},get repo(){return e.repo},get claims(){return a()},get claimsLoading(){return a.loading}})}),null),I(l,D(q,{get when(){return e.anything},children:c=>(()=>{var s=va(),u=s.firstChild;return s.$$click=()=>e.onPeek(c().id),I(s,()=>c().name.toLowerCase(),null),s})()}),null),l}})]}})}function wr(e){let r=e.repo,t=typeof r.isSubductionConnected=="function",[o,n]=fe(t?r.isSubductionConnected():void 0),a=i=>{let d=o();n(i),i&&d===!1&&e.onRetry()};if(t&&r.on&&r.off){let i=d=>a(d.connected);r.on("subduction-connection",i),lt(()=>r.off("subduction-connection",i))}if(t){let i=setInterval(()=>a(r.isSubductionConnected()),2e3);lt(()=>clearInterval(i))}return D($e,{get url(){return e.url},title:"can't load this doc",get children(){return[wa(),(()=>{var i=ya(),d=i.firstChild,l=d.nextSibling,c=l.nextSibling,s=c.firstChild;return I(c,D(q,{get when(){return o()!==void 0},fallback:"sync server",get children(){return D(Ma,{get connected(){return o()}})}}),null),i})(),_a()]}})}function Ma(e){let[r,t]=fe(!1),o=()=>`sync server: ${e.connected?"connected":"disconnected"}`;return[(()=>{var n=xa();return n.$$click=()=>t(a=>!a),ct(a=>{var i=e.connected?"":void 0,d=o(),l=o(),c=r();return i!==a.e&&Be(n,"data-connected",a.e=i),d!==a.t&&Be(n,"title",a.t=d),l!==a.a&&Be(n,"aria-label",a.a=l),c!==a.o&&Be(n,"aria-expanded",a.o=c),a},{e:void 0,t:void 0,a:void 0,o:void 0}),n})(),D(q,{get when(){return r()},get children(){var n=ka(),a=n.firstChild,i=a.nextSibling,d=i.nextSibling;return I(n,()=>e.connected?"connected":"disconnected",i),n}})]}function yr(e){let[r,t]=fe(!1),o;lt(()=>clearTimeout(o));let n=async()=>{e.card&&(await navigator.clipboard.writeText(e.card),t(!0),clearTimeout(o),o=setTimeout(()=>t(!1),1500))};return D($e,{get url(){return e.url},title:"not shared with you yet",get children(){return[Ca(),$a(),Sa(),D(q,{get when(){return e.card},get children(){var a=dt(),i=a.firstChild;return i.$$click=()=>void n(),I(i,()=>r()?"copied":"copy my card"),a}})]}})}function _r(e){let[r,t]=fe(!1),o=async()=>{t(!0);try{await e.onRetry()}finally{t(!1)}};return D($e,{get url(){return e.url},get title(){return`can't load ${e.name}`},get children(){return[Ea(),(()=>{var n=Ta();return I(n,()=>e.error),n})(),(()=>{var n=dt(),a=n.firstChild;return a.$$click=()=>void o(),I(a,()=>r()?"trying\u2026":"try again"),ct(()=>a.disabled=r()),n})()]}})}function xr(e){return D($e,{get url(){return e.url},title:"this link is broken",get children(){return[Aa(),Da(),(()=>{var r=Ia(),t=r.firstChild;return I(t,()=>e.url),r})()]}})}sa(["click"]);import*as Cr from"@inkandswitch/patchwork-elements";import{isKeyhiveDoc as Oa}from"@inkandswitch/patchwork-plugins";var kr=Cr.hasActiveAccess,$r=()=>globalThis.hive;async function Sr(e,r){if(Oa(r))try{if(kr)return await kr(e,r);let t=e.active.individual.id;return!!(e.bestAccessForDoc?await e.bestAccessForDoc(t,r):await e.accessForDoc(t,r))}catch{return}}function Er(e,r){return e.networkAdapter?.on("ingest-remote",r),()=>e.networkAdapter?.off("ingest-remote",r)}function Tr(e){try{let r="";for(let t of e.active.contactCard.toBytes())r+=String.fromCharCode(t);return btoa(r)}catch{return}}var za=Ve("<div class=document-view>"),Rr=Ve("<patchwork-view>",!0,!1,!1),Ua=Ve("<div class=placeholder>Select a document in the sidebar"),ja=Ve("<div class=doc-stack>"),Va=5e3;function Fr({viewKey:e,selectedDocUrl:r,toolId:t,ref:o}){let n,[a,i]=K();return Ja(()=>{i(n.closest("repo-provider")?.repo??null)}),(()=>{var d=za();return Ir(l=>{n=l,o?.(l)},d),Y(d,R(B,{get when(){return Se(()=>a()!==void 0)()&&e()},keyed:!0,children:l=>R(B,{get when(){return a()},get fallback(){return(()=>{var c=Rr();return c._$owner=Dr(),Ar(s=>{var u=r(),h=t();return u!==s.e&&(c.docUrl=s.e=u),h!==s.t&&(c.toolId=s.t=h),s},{e:void 0,t:void 0}),c})()},children:c=>R(Ka,{get url(){return r()},toolId:t,get repo(){return c()}})})}),null),Y(d,(()=>{var l=Se(()=>!r());return()=>l()&&Ua()})(),null),d})()}function Ka(e){let r=Ba("patchwork:tool"),[t,o]=K(0);oe(r.on("changed",()=>{o(g=>g+1)}));let[n,a]=K({state:"finding"}),[i,d]=K(),l=()=>e.toolId()??i(),[c,s]=K(!1),[u,h]=K(0),b=!1;oe(()=>b=!0);async function _(){try{let g=await e.repo.find(e.url);if(b)return;let y=n().state==="unavailable";a({state:"ready",doc:g.doc()}),y&&!c()&&h(E=>E+1)}catch(g){if(b)return;let y=Xa(g);a({state:y?"invalid":"unavailable"}),y||p(E=>E+1)}}let[m,p]=K(0),f,w;function T(){w?.(),f=Ya(e.repo,e.url),w=f?.subscribe(g=>{g.state==="ready"&&n().state==="unavailable"&&_()})}oe(()=>w?.()),_(),T();function F(){let g=e.repo;if(typeof g.resyncSubduction=="function")try{g.resyncSubduction(Wa(e.url).documentId)}catch{}}let M;oe(()=>clearTimeout(M));function j(g=1e3){F(),clearTimeout(M),M=setTimeout(()=>void _(),g)}ut(()=>{let g=m();g===0||n().state!=="unavailable"||c()||(j(Math.min(3e4,3e3*2**(g-1))),oe(()=>clearTimeout(M)))});let Q=Je(()=>{t();let g=n();if(g.state!=="ready")return g;let y=g.doc,E=y?Na(y):void 0;if(!E)return{state:"open",toolId:void 0};let A=l(),H;if(!A){let W=Pr(()=>qa(y));W&&Ga(W.supportedDatatypes,E)?H={id:W.id,name:W.name}:W&&(A=W.id)}return A&&r.get(A)?{state:"open",toolId:A}:{state:"no-tool",type:E,suggestion:Ha(y),anything:H}}),O=Je(()=>Q().state),J=Je(()=>{let g=Q();return g.state==="open"?g.toolId:void 0}),[ge,be]=K();async function De(g){try{return await r.load(g),J()===g&&be(void 0),!0}catch(y){return J()===g&&be({id:g,message:y instanceof Error?y.message:String(y)}),!1}}ut(()=>{let g=J();be(void 0),g&&De(g)});let X=$r(),[S,$]=K();ut(()=>{if(!X||O()!=="open"){$(void 0);return}let g=e.url,y=!0,E=()=>void Sr(X,g).then(W=>{y&&$(W)});E();let A=Er(X,E),H=setInterval(()=>{S()===!1&&E()},Va);oe(()=>{y=!1,A(),clearInterval(H)})});async function G(){let g=ge()?.id;g&&await De(g)&&h(y=>y+1)}let L=Je(()=>{let g=Q();return g.state==="no-tool"?g:void 0});return(()=>{var g=ja();return Ir(y=>{let E=A=>{let H=A.detail;H?.url&&H.url!==e.url||(s(!0),n().state==="unavailable"&&_())};y.addEventListener("patchwork:mounted",E),oe(()=>y.removeEventListener("patchwork:mounted",E))},g),Y(g,R(B,{get when(){return Se(()=>O()==="open")()&&!ge()||O()==="unavailable"},get children(){return R(B,{get when(){return u()+1},keyed:!0,children:y=>(()=>{var E=Rr();return E._$owner=Dr(),Ar(A=>{var H=e.url,W=l();return H!==A.e&&(E.docUrl=A.e=H),W!==A.t&&(E.toolId=A.t=W),A},{e:void 0,t:void 0}),E})()})}}),null),Y(g,R(B,{get when(){return O()==="finding"},get children(){return R(br,{})}}),null),Y(g,R(B,{get when(){return Se(()=>O()==="open")()&&S()===!1},get children(){return R(yr,{get url(){return e.url},get card(){return X&&Tr(X)}})}}),null),Y(g,R(B,{get when(){return ge()},children:y=>R(_r,{get url(){return e.url},get name(){return r.get(y().id)?.name??y().id},get error(){return y().message},onRetry:G})}),null),Y(g,R(B,{get when(){return O()==="invalid"},get children(){return R(xr,{get url(){return e.url}})}}),null),Y(g,R(B,{get when(){return Se(()=>O()==="unavailable")()&&!c()},get children(){return R(wr,{get url(){return e.url},get repo(){return e.repo},onRetry:j})}}),null),Y(g,R(B,{get when(){return L()},children:y=>R(vr,{get url(){return e.url},get type(){return y().type},get suggestion(){return y().suggestion},get anything(){return y().anything},onPeek:d,get repo(){return e.repo}})}),null),g})()}function Ya(e,r){let t=e.findWithProgress;if(typeof t=="function")return Pr(()=>{let o=t.call(e,r);return typeof o?.subscribe=="function"&&typeof o?.peek=="function"?o:void 0})}function Xa(e){let r=e?.message??String(e);return/invalid (automergeurl|document url|documentid|document id)/i.test(r)}function Ga(e,r){let t=e==="*"?["*"]:e??[];return t.includes("*")&&!t.includes(r)}function Pr(e){try{return e()}catch{return}}var Za=Ae("<patchwork-view component=patchwork-draft-state-provider>",!0,!1,!1),Qa=Ae("<patchwork-view component=patchwork-draft-overlay-provider>",!0,!1,!1),ei=Ae("<div class=frame__main-column><div class=frame__doc-column><div class=main-area>"),ti=Ae("<patchwork-view component=patchwork-comments-provider><patchwork-view component=patchwork-focus-provider>",!0,!1,!1),ri=Ae("<patchwork-view>",!0,!1,!1);function Or(e){let[r,t]=Z(e.initialRightCollapsed()),[o,n]=Z(e.initialRightWidth());Lr(Mr(r,h=>{try{localStorage.setItem(V.rightCollapsed,String(h))}catch{}},{defer:!0})),Lr(Mr(o,h=>{try{localStorage.setItem(V.rightWidth,String(h))}catch{}},{defer:!0}));let a=Ge("right",{isCollapsed:r,setCollapsed:t,setWidth:n});ni(()=>{let h=()=>t(!0);window.addEventListener(Ie,h),oi(()=>window.removeEventListener(Ie,h))});let[i,d]=Xe(Z(),{name:V.contextToolId}),[l,c]=Z(),s=ee("patchwork-draft-state-provider",l),u=()=>s()?l():void 0;return U(me,{get when(){return e.selectedDocUrl()},keyed:!0,children:h=>(()=>{var b=Za();return Te(c,b),b.docUrl=h,b._$owner=Ee(),ne(b,U(me,{get when(){return u()},children:_=>U(ai,{get host(){return _()},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 a.handleMouseDown},get handleToggleClick(){return a.handleToggleClick},selectedContextToolId:i,setSelectedContextToolId:d})})),b})()})}function ai(e){let r=ae("context-tool"),t=()=>r().length>0,o=pt(()=>e.selectedDocUrl()),[n,a]=Z(),i=ee("patchwork-draft-overlay-provider",n),[d,l]=Z(),c=ee("patchwork-comments-provider",d),[s,u]=Z(),h=ee("patchwork-focus-provider",s),b=pt(()=>i()&&c()&&h()),_=ae("document-provider"),m=pt(()=>_().map(p=>p.id),[],{equals:(p,f)=>p.length===f.length&&p.every((w,T)=>w===f[T])});return(()=>{var p=Qa();return Te(a,p),p._$owner=Ee(),ne(p,U(zr,{get ids(){return m()},render:()=>(()=>{var f=ti(),w=f.firstChild;return Te(l,f),f._$owner=Ee(),Te(u,w),w._$owner=Ee(),ne(w,U(me,{get when(){return b()},get children(){var T=ei(),F=T.firstChild,M=F.firstChild;return ne(F,U(tr,{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(j=>!j)}),M),ne(M,U(Fr,{viewKey:o,get selectedDocUrl(){return e.selectedDocUrl},get toolId(){return e.selectedToolId},ref:j=>e.setMainDocElement?.(j)})),ne(T,U(me,{get when(){return t()},get children(){return U(Yt,{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),T}})),f})()})),p})()}function zr(e){return U(me,{get when(){return e.ids[0]},keyed:!0,get fallback(){return e.render()},children:r=>{let[t,o]=Z(),n=ee(r,t);return(()=>{var a=ri();return Te(o,a),a.component=r,a._$owner=Ee(),ne(a,U(me,{get when(){return n()},get children(){return U(zr,{get ids(){return e.ids.slice(1)},get render(){return e.render}})}})),a})()}})}var Ke=`:root,
|
|
12
|
+
Its code runs in this page and can read and change your documents. Only load it if you trust where it came from.`)){n(void 0),t(!0);try{let s=await Ra(l);if(!Array.isArray(s?.plugins))throw new Error("it doesn't export any plugins");Fa(s.plugins,l)}catch(s){console.error(`couldn't load the package at ${l}`,s),n(s?.message??String(s))}finally{t(!1)}}}let u=()=>{let l=a();return l&&(l.title||l.name)?l:void 0};return D($e,{get url(){return e.url},title:"no tool for this",get children(){return[(()=>{var l=ua(),c=l.firstChild,s=c.nextSibling;return I(s,()=>e.type),l})(),D(q,{get when(){return e.suggestion},get fallback(){return ha()},children:l=>[(()=>{var c=fa(),s=c.firstChild;return I(c,D(q,{get when(){return u()},fallback:"a package.",children:h=>[(()=>{var f=ma();return I(f,()=>h().title??h().name),f})(),D(q,{get when(){return h().version},children:f=>(()=>{var b=ga(),y=b.firstChild;return I(b,f,null),b})()}),"."]}),null),c})(),(()=>{var c=dt(),s=c.firstChild;return s.$$click=()=>void i(l()),I(s,()=>r()?"loading\u2026":"load package"),ct(()=>s.disabled=r()),c})(),D(q,{get when(){return o()},children:c=>(()=>{var s=ba(),h=s.firstChild;return I(s,c,null),s})()})]}),D(q,{get when(){return e.suggestion||e.anything},get children(){var l=pa();return I(l,D(q,{get when(){return e.suggestion},children:c=>D(br,{get url(){return c()},get repo(){return e.repo},get claims(){return a()},get claimsLoading(){return a.loading}})}),null),I(l,D(q,{get when(){return e.anything},children:c=>(()=>{var s=va(),h=s.firstChild;return s.$$click=()=>e.onPeek(c().id),I(s,()=>c().name.toLowerCase(),null),s})()}),null),l}})]}})}function yr(e){let r=e.repo,t=typeof r.isSubductionConnected=="function",[o,n]=fe(t?r.isSubductionConnected():void 0),a=i=>{let u=o();n(i),i&&u===!1&&e.onRetry()};if(t&&r.on&&r.off){let i=u=>a(u.connected);r.on("subduction-connection",i),lt(()=>r.off("subduction-connection",i))}if(t){let i=setInterval(()=>a(r.isSubductionConnected()),2e3);lt(()=>clearInterval(i))}return D($e,{get url(){return e.url},title:"can't load this doc",get children(){return[wa(),(()=>{var i=ya(),u=i.firstChild,l=u.nextSibling,c=l.nextSibling,s=c.firstChild;return I(c,D(q,{get when(){return o()!==void 0},fallback:"sync server",get children(){return D(Ma,{get connected(){return o()}})}}),null),i})(),_a()]}})}function Ma(e){let[r,t]=fe(!1),o=()=>`sync server: ${e.connected?"connected":"disconnected"}`;return[(()=>{var n=xa();return n.$$click=()=>t(a=>!a),ct(a=>{var i=e.connected?"":void 0,u=o(),l=o(),c=r();return i!==a.e&&Be(n,"data-connected",a.e=i),u!==a.t&&Be(n,"title",a.t=u),l!==a.a&&Be(n,"aria-label",a.a=l),c!==a.o&&Be(n,"aria-expanded",a.o=c),a},{e:void 0,t:void 0,a:void 0,o:void 0}),n})(),D(q,{get when(){return r()},get children(){var n=ka(),a=n.firstChild,i=a.nextSibling,u=i.nextSibling;return I(n,()=>e.connected?"connected":"disconnected",i),n}})]}function _r(e){let[r,t]=fe(!1),o;lt(()=>clearTimeout(o));let n=async()=>{e.card&&(await navigator.clipboard.writeText(e.card),t(!0),clearTimeout(o),o=setTimeout(()=>t(!1),1500))};return D($e,{get url(){return e.url},title:"not shared with you yet",get children(){return[Ca(),$a(),Sa(),D(q,{get when(){return e.card},get children(){var a=dt(),i=a.firstChild;return i.$$click=()=>void n(),I(i,()=>r()?"copied":"copy my card"),a}})]}})}function xr(e){let[r,t]=fe(!1),o=async()=>{t(!0);try{await e.onRetry()}finally{t(!1)}};return D($e,{get url(){return e.url},get title(){return`can't load ${e.name}`},get children(){return[Ea(),(()=>{var n=Ta();return I(n,()=>e.error),n})(),(()=>{var n=dt(),a=n.firstChild;return a.$$click=()=>void o(),I(a,()=>r()?"trying\u2026":"try again"),ct(()=>a.disabled=r()),n})()]}})}function kr(e){return D($e,{get url(){return e.url},title:"this link is broken",get children(){return[Aa(),Da(),(()=>{var r=Ia(),t=r.firstChild;return I(t,()=>e.url),r})()]}})}sa(["click"]);import*as $r from"@inkandswitch/patchwork-elements";import{isKeyhiveDoc as Oa}from"@inkandswitch/patchwork-plugins";var Cr=$r.hasActiveAccess,Sr=()=>globalThis.hive;async function Er(e,r){if(Oa(r))try{if(Cr)return await Cr(e,r);let t=e.active.individual.id;return!!(e.bestAccessForDoc?await e.bestAccessForDoc(t,r):await e.accessForDoc(t,r))}catch{return}}function Tr(e,r){return e.networkAdapter?.on("ingest-remote",r),()=>e.networkAdapter?.off("ingest-remote",r)}function Ar(e){try{let r="";for(let t of e.active.contactCard.toBytes())r+=String.fromCharCode(t);return btoa(r)}catch{return}}var za=Ve("<div class=document-view>"),Fr=Ve("<patchwork-view>",!0,!1,!1),Ua=Ve("<div class=placeholder>Select a document in the sidebar"),ja=Ve("<div class=doc-stack>"),Va=5e3;function Pr({viewKey:e,selectedDocUrl:r,toolId:t,ref:o}){let n,[a,i]=K();return Ja(()=>{i(n.closest("repo-provider")?.repo??null)}),(()=>{var u=za();return Rr(l=>{n=l,o?.(l)},u),Y(u,R(B,{get when(){return Se(()=>a()!==void 0)()&&e()},keyed:!0,children:l=>R(B,{get when(){return a()},get fallback(){return(()=>{var c=Fr();return c._$owner=Ir(),Dr(s=>{var h=r(),f=t();return h!==s.e&&(c.docUrl=s.e=h),f!==s.t&&(c.toolId=s.t=f),s},{e:void 0,t:void 0}),c})()},children:c=>R(Ka,{get url(){return r()},toolId:t,get repo(){return c()}})})}),null),Y(u,(()=>{var l=Se(()=>!r());return()=>l()&&Ua()})(),null),u})()}function Ka(e){let r=Ba("patchwork:tool"),[t,o]=K(0);oe(r.on("changed",()=>{o(m=>m+1)}));let[n,a]=K({state:"finding"}),[i,u]=K(),l=()=>e.toolId()??i(),[c,s]=K(!1),[h,f]=K(0),b=!1;oe(()=>b=!0);async function y(){try{let m=await e.repo.find(e.url);if(b)return;let w=n().state==="unavailable";a({state:"ready",doc:m.doc()}),w&&!c()&&f(T=>T+1)}catch(m){if(b)return;let w=Xa(m);a({state:w?"invalid":"unavailable"}),w||p(T=>T+1)}}let[x,p]=K(0),d,g;function $(){g?.(),d=Ya(e.repo,e.url),g=d?.subscribe(m=>{m.state==="ready"&&n().state==="unavailable"&&y()})}oe(()=>g?.()),y(),$();function F(){let m=e.repo;if(typeof m.resyncSubduction=="function")try{m.resyncSubduction(Wa(e.url).documentId)}catch{}}let P;oe(()=>clearTimeout(P));function j(m=1e3){F(),clearTimeout(P),P=setTimeout(()=>void y(),m)}ut(()=>{let m=x();m===0||n().state!=="unavailable"||c()||(j(Math.min(3e4,3e3*2**(m-1))),oe(()=>clearTimeout(P)))});let Q=Je(()=>{t();let m=n();if(m.state!=="ready")return m;let w=m.doc,T=w?Ha(w):void 0;if(!T)return{state:"open",toolId:void 0};let A=l(),N;if(!A){let W=Lr(()=>qa(w));W&&Ga(W.supportedDatatypes,T)?N={id:W.id,name:W.name}:W&&(A=W.id)}return A&&r.get(A)?{state:"open",toolId:A}:{state:"no-tool",type:T,suggestion:Na(w),anything:N}}),O=Je(()=>Q().state),J=Je(()=>{let m=Q();return m.state==="open"?m.toolId:void 0}),[ge,be]=K();async function De(m){try{return await r.load(m),J()===m&&be(void 0),!0}catch(w){return J()===m&&be({id:m,message:w instanceof Error?w.message:String(w)}),!1}}ut(()=>{let m=J();be(void 0),m&&De(m)});let X=Sr(),[E,S]=K();ut(()=>{if(!X||O()!=="open"){S(void 0);return}let m=e.url,w=!0,T=()=>void Er(X,m).then(W=>{w&&S(W)});T();let A=Tr(X,T),N=setInterval(()=>{E()===!1&&T()},Va);oe(()=>{w=!1,A(),clearInterval(N)})});async function G(){let m=ge()?.id;m&&await De(m)&&f(w=>w+1)}let M=Je(()=>{let m=Q();return m.state==="no-tool"?m:void 0});return(()=>{var m=ja();return Rr(w=>{let T=A=>{let N=A.detail;N?.url&&N.url!==e.url||(s(!0),n().state==="unavailable"&&y())};w.addEventListener("patchwork:mounted",T),oe(()=>w.removeEventListener("patchwork:mounted",T))},m),Y(m,R(B,{get when(){return Se(()=>O()==="open")()&&!ge()||O()==="unavailable"},get children(){return R(B,{get when(){return h()+1},keyed:!0,children:w=>(()=>{var T=Fr();return T._$owner=Ir(),Dr(A=>{var N=e.url,W=l();return N!==A.e&&(T.docUrl=A.e=N),W!==A.t&&(T.toolId=A.t=W),A},{e:void 0,t:void 0}),T})()})}}),null),Y(m,R(B,{get when(){return O()==="finding"},get children(){return R(vr,{})}}),null),Y(m,R(B,{get when(){return Se(()=>O()==="open")()&&E()===!1},get children(){return R(_r,{get url(){return e.url},get card(){return X&&Ar(X)}})}}),null),Y(m,R(B,{get when(){return ge()},children:w=>R(xr,{get url(){return e.url},get name(){return r.get(w().id)?.name??w().id},get error(){return w().message},onRetry:G})}),null),Y(m,R(B,{get when(){return O()==="invalid"},get children(){return R(kr,{get url(){return e.url}})}}),null),Y(m,R(B,{get when(){return Se(()=>O()==="unavailable")()&&!c()},get children(){return R(yr,{get url(){return e.url},get repo(){return e.repo},onRetry:j})}}),null),Y(m,R(B,{get when(){return M()},children:w=>R(wr,{get url(){return e.url},get type(){return w().type},get suggestion(){return w().suggestion},get anything(){return w().anything},onPeek:u,get repo(){return e.repo}})}),null),m})()}function Ya(e,r){let t=e.findWithProgress;if(typeof t=="function")return Lr(()=>{let o=t.call(e,r);return typeof o?.subscribe=="function"&&typeof o?.peek=="function"?o:void 0})}function Xa(e){let r=e?.message??String(e);return/invalid (automergeurl|document url|documentid|document id)/i.test(r)}function Ga(e,r){let t=e==="*"?["*"]:e??[];return t.includes("*")&&!t.includes(r)}function Lr(e){try{return e()}catch{return}}var Za=Ae("<patchwork-view component=patchwork-draft-state-provider>",!0,!1,!1),Qa=Ae("<patchwork-view component=patchwork-draft-overlay-provider>",!0,!1,!1),ei=Ae("<div class=frame__main-column><div class=frame__doc-column><div class=main-area>"),ti=Ae("<patchwork-view component=patchwork-comments-provider><patchwork-view component=patchwork-focus-provider>",!0,!1,!1),ri=Ae("<patchwork-view>",!0,!1,!1);function zr(e){let[r,t]=Z(e.initialRightCollapsed()),[o,n]=Z(e.initialRightWidth());Mr(Or(r,f=>{try{localStorage.setItem(V.rightCollapsed,String(f))}catch{}},{defer:!0})),Mr(Or(o,f=>{try{localStorage.setItem(V.rightWidth,String(f))}catch{}},{defer:!0}));let a=Ge("right",{isCollapsed:r,setCollapsed:t,setWidth:n});ni(()=>{let f=()=>t(!0);window.addEventListener(Ie,f),oi(()=>window.removeEventListener(Ie,f))});let[i,u]=Xe(Z(),{name:V.contextToolId}),[l,c]=Z(),s=ee("patchwork-draft-state-provider",l),h=()=>s()?l():void 0;return U(me,{get when(){return e.selectedDocUrl()},keyed:!0,children:f=>(()=>{var b=Za();return Te(c,b),b.docUrl=f,b._$owner=Ee(),ne(b,U(me,{get when(){return h()},children:y=>U(ai,{get host(){return y()},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 a.handleMouseDown},get handleToggleClick(){return a.handleToggleClick},selectedContextToolId:i,setSelectedContextToolId:u})})),b})()})}function ai(e){let r=ae("context-tool"),t=()=>r().length>0,o=pt(()=>e.selectedDocUrl()),[n,a]=Z(),i=ee("patchwork-draft-overlay-provider",n),[u,l]=Z(),c=ee("patchwork-comments-provider",u),[s,h]=Z(),f=ee("patchwork-focus-provider",s),b=pt(()=>i()&&c()&&f()),y=ae("document-provider"),x=pt(()=>y().map(p=>p.id),[],{equals:(p,d)=>p.length===d.length&&p.every((g,$)=>g===d[$])});return(()=>{var p=Qa();return Te(a,p),p._$owner=Ee(),ne(p,U(Ur,{get ids(){return x()},render:()=>(()=>{var d=ti(),g=d.firstChild;return Te(l,d),d._$owner=Ee(),Te(h,g),g._$owner=Ee(),ne(g,U(me,{get when(){return b()},get children(){var $=ei(),F=$.firstChild,P=F.firstChild;return ne(F,U(rr,{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(j=>!j)}),P),ne(P,U(Pr,{viewKey:o,get selectedDocUrl(){return e.selectedDocUrl},get toolId(){return e.selectedToolId},ref:j=>e.setMainDocElement?.(j)})),ne($,U(me,{get when(){return t()},get children(){return U(Xt,{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),$}})),d})()})),p})()}function Ur(e){return U(me,{get when(){return e.ids[0]},keyed:!0,get fallback(){return e.render()},children:r=>{let[t,o]=Z(),n=ee(r,t);return(()=>{var a=ri();return Te(o,a),a.component=r,a._$owner=Ee(),ne(a,U(me,{get when(){return n()},get children(){return U(Ur,{get ids(){return e.ids.slice(1)},get render(){return e.render}})}})),a})()}})}var Ke=`:root,
|
|
12
13
|
:host,
|
|
13
14
|
[theme] {
|
|
14
15
|
--threepane-bg: var(--studio-fill, white);
|
|
@@ -278,6 +279,10 @@ Its code runs in this page and can read and change your documents. Only load it
|
|
|
278
279
|
text-overflow: ellipsis;
|
|
279
280
|
}
|
|
280
281
|
|
|
282
|
+
.threepane__title-text[draggable="true"] {
|
|
283
|
+
-webkit-user-drag: element;
|
|
284
|
+
}
|
|
285
|
+
|
|
281
286
|
.threepane__title-text--editable {
|
|
282
287
|
cursor: var(--studio-cursor-text, text);
|
|
283
288
|
}
|
|
@@ -1206,5 +1211,5 @@ Its code runs in this page and can read and change your documents. Only load it
|
|
|
1206
1211
|
body[data-sidebar-resizing] .sidebar {
|
|
1207
1212
|
transition: none;
|
|
1208
1213
|
}
|
|
1209
|
-
`;function
|
|
1210
|
-
//# sourceMappingURL=chunk-
|
|
1214
|
+
`;function jr(){let e="patchwork-frame-styles",r=document.getElementById(e);if(r){r.textContent!==Ke&&(r.textContent=Ke);return}let t=document.createElement("style");t.id=e,t.textContent=Ke,document.head.append(t)}var ui=Hr("<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),pi=Hr("<div class=frame>");function Dd(e){let r=Wr(()=>{let o=new Set,n=e.selectedDocUrl();return n&&o.add(n),e.contactUrl&&o.add(e.contactUrl),[...o]}),t=Wr(()=>JSON.stringify({selectedDocUrl:e.selectedDocUrl(),selectedToolId:e.selectedToolId(),doctitleSlots:e.doctitleSlots(),isLeftCollapsed:e.isLeftCollapsed(),initialRightWidth:e.initialRightWidth(),initialRightCollapsed:e.initialRightCollapsed()}));return(()=>{var o=ui(),n=o.firstChild;return o._$owner=di(),qr(n,t),ci(()=>li(o,"automerge-allowlist",r().join(","))),o})()}function Nr(e){if(!e?.textContent)return{};try{return JSON.parse(e.textContent)}catch(r){return console.error("[threepane-isolation-root] bad props JSON:",r),{}}}function Id(e){jr();let r=e.querySelector('script[type="application/json"]'),[t,o]=hi(Nr(r)),n=new MutationObserver(()=>{o(fi(Nr(r)))});r&&n.observe(r,{characterData:!0,childList:!0,subtree:!0});let a=mi(()=>(()=>{var i=pi();return qr(i,si(zr,{selectedDocUrl:()=>t.selectedDocUrl,selectedToolId:()=>t.selectedToolId,doctitleSlots:()=>t.doctitleSlots,isLeftCollapsed:()=>t.isLeftCollapsed??!1,initialRightWidth:()=>t.initialRightWidth??Re,initialRightCollapsed:()=>t.initialRightCollapsed??!1})),i})(),e);return()=>{n.disconnect(),a()}}export{St as a,we as b,V as c,Ie as d,Re as e,vt as f,wt as g,Yr as h,Ge as i,so as j,Jt as k,rt as l,Xl as m,Gl as n,Pr as o,zr as p,jr as q,Dd as r,Id as s};
|
|
1215
|
+
//# sourceMappingURL=chunk-U4IJVHXK.js.map
|