@inkandswitch/patchwork-pkg-base 0.0.106 → 0.0.108

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/module-settings-url +1 -1
  2. package/package.json +1 -1
  3. package/packages/llm-host/dist/{LlmConfigTray-CjW04jeT.js → LlmConfigTray-CsVpZoou.js} +160 -150
  4. package/packages/llm-host/dist/index.js +1 -1
  5. package/packages/providers/dist/assets/SelectedDocProvider-CpFoW1D5.js +2 -0
  6. package/packages/providers/dist/assets/SelectedDocProvider-CpFoW1D5.js.map +1 -0
  7. package/packages/providers/dist/index.js +1 -1
  8. package/packages/sideboard/dist/{chunk-RZPTJTVZ.js → chunk-3A65VAIS.js} +2 -2
  9. package/packages/sideboard/dist/chunk-B2O2X2JP.js +13 -0
  10. package/packages/sideboard/dist/chunk-B2O2X2JP.js.map +7 -0
  11. package/packages/sideboard/dist/chunk-PVIUDN4Q.js +2 -0
  12. package/packages/sideboard/dist/chunk-PVIUDN4Q.js.map +7 -0
  13. package/packages/sideboard/dist/chunk-WIFOKAHN.js +2 -0
  14. package/packages/sideboard/dist/chunk-WIFOKAHN.js.map +7 -0
  15. package/packages/sideboard/dist/chunk-WPHECYLJ.js +15 -0
  16. package/packages/sideboard/dist/chunk-WPHECYLJ.js.map +7 -0
  17. package/packages/sideboard/dist/{create-new-menu-4VNS2UFI.js → create-new-menu-JPICLPWM.js} +2 -2
  18. package/packages/sideboard/dist/document-list-panel-VFY2RV33.js +2 -0
  19. package/packages/sideboard/dist/index.css +1 -1
  20. package/packages/sideboard/dist/index.css.map +2 -2
  21. package/packages/sideboard/dist/index.js +1 -1
  22. package/packages/sideboard/dist/item-menu-C37UJBFI.js +2 -0
  23. package/packages/sideboard/dist/{item-menu-3JUJN3MS.js.map → item-menu-C37UJBFI.js.map} +1 -1
  24. package/packages/sideboard/dist/sideboard/sideboard.js +1 -1
  25. package/packages/threepane/dist/IsolatedDocumentArea-UTNJADQ7.js +2 -0
  26. package/packages/threepane/dist/{PatchworkFrame-X4GBBC46.js → PatchworkFrame-U2TVLGCZ.js} +2 -2
  27. package/packages/threepane/dist/chunk-XOKWELWP.js +1210 -0
  28. package/packages/threepane/dist/chunk-XOKWELWP.js.map +7 -0
  29. package/packages/threepane/dist/index.js +1 -1
  30. package/plugin-registry-url +1 -1
  31. package/packages/providers/dist/assets/SelectedDocProvider-CLztU54U.js +0 -2
  32. package/packages/providers/dist/assets/SelectedDocProvider-CLztU54U.js.map +0 -1
  33. package/packages/sideboard/dist/chunk-73XN2I2U.js +0 -15
  34. package/packages/sideboard/dist/chunk-73XN2I2U.js.map +0 -7
  35. package/packages/sideboard/dist/chunk-NS3ADG2Z.js +0 -2
  36. package/packages/sideboard/dist/chunk-NS3ADG2Z.js.map +0 -7
  37. package/packages/sideboard/dist/chunk-OFWMAVKQ.js +0 -13
  38. package/packages/sideboard/dist/chunk-OFWMAVKQ.js.map +0 -7
  39. package/packages/sideboard/dist/chunk-YZ573CYO.js +0 -2
  40. package/packages/sideboard/dist/chunk-YZ573CYO.js.map +0 -7
  41. package/packages/sideboard/dist/document-list-panel-SCICIJCF.js +0 -2
  42. package/packages/sideboard/dist/item-menu-3JUJN3MS.js +0 -2
  43. package/packages/threepane/dist/IsolatedDocumentArea-W7IBHNIS.js +0 -2
  44. package/packages/threepane/dist/chunk-MWFQHDD3.js +0 -1210
  45. package/packages/threepane/dist/chunk-MWFQHDD3.js.map +0 -7
  46. /package/packages/sideboard/dist/{chunk-RZPTJTVZ.js.map → chunk-3A65VAIS.js.map} +0 -0
  47. /package/packages/sideboard/dist/{create-new-menu-4VNS2UFI.js.map → create-new-menu-JPICLPWM.js.map} +0 -0
  48. /package/packages/sideboard/dist/{document-list-panel-SCICIJCF.js.map → document-list-panel-VFY2RV33.js.map} +0 -0
  49. /package/packages/threepane/dist/{IsolatedDocumentArea-W7IBHNIS.js.map → IsolatedDocumentArea-UTNJADQ7.js.map} +0 -0
  50. /package/packages/threepane/dist/{PatchworkFrame-X4GBBC46.js.map → PatchworkFrame-U2TVLGCZ.js.map} +0 -0
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/sideboard/icons.tsx", "../src/sideboard/create-new.tsx"],
4
- "sourcesContent": ["import { template as _$template } from \"solid-js/web\";\nimport { spread as _$spread } from \"solid-js/web\";\nvar _tmpl$ = /*#__PURE__*/_$template(`<svg xmlns=http://www.w3.org/2000/svg width=24 height=24 viewBox=\"0 0 24 24\"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round class=search-icon><path d=\"m21 21-4.34-4.34\"></path><circle cx=11 cy=11 r=8>`),\n _tmpl$2 = /*#__PURE__*/_$template(`<svg xmlns=http://www.w3.org/2000/svg width=16 height=16 viewBox=\"0 0 24 24\"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round class=\"plus-icon icon\"><path d=\"M5 12h14\"></path><path d=\"M12 5v14\">`),\n _tmpl$3 = /*#__PURE__*/_$template(`<svg xmlns=http://www.w3.org/2000/svg width=16 height=16 viewBox=\"0 0 24 24\"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round class=\"new-doc-icon icon\"><path d=\"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z\"></path><path d=\"M14 2v4a2 2 0 0 0 2 2h4\"></path><path d=\"M9 15h6\"></path><path d=\"M12 18v-6\">`),\n _tmpl$4 = /*#__PURE__*/_$template(`<svg xmlns=http://www.w3.org/2000/svg width=16 height=16 viewBox=\"0 0 24 24\"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><path d=\"m9 18 6-6-6-6\">`);\nexport function SearchIcon() {\n return _tmpl$();\n}\nexport function PlusIcon(props) {\n return (() => {\n var _el$2 = _tmpl$2();\n _$spread(_el$2, props, true, true);\n return _el$2;\n })();\n}\nexport function NewDocIcon(props) {\n return (() => {\n var _el$3 = _tmpl$3();\n _$spread(_el$3, props, true, true);\n return _el$3;\n })();\n}\nexport function Chevron(props) {\n return (() => {\n var _el$4 = _tmpl$4();\n _$spread(_el$4, props, true, true);\n return _el$4;\n })();\n}", "import { template as _$template } from \"solid-js/web\";\nimport { delegateEvents as _$delegateEvents } 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\";\nimport { addEventListener as _$addEventListener } from \"solid-js/web\";\nimport { use as _$use } from \"solid-js/web\";\nvar _tmpl$ = /*#__PURE__*/_$template(`<span class=create-new-button__text>Create new`),\n _tmpl$2 = /*#__PURE__*/_$template(`<div class=create-new-button-anchor><button type=button class=create-new-button aria-label=\"create new\">`);\nimport { isValidAutomergeUrl } from \"@automerge/automerge-repo/slim\";\nimport { createDocOfDatatype2, getRegistry, isLoadablePlugin, isLoadedPlugin } from \"@inkandswitch/patchwork-plugins\";\nimport { createSignal, lazy, onCleanup, onMount, Show } from \"solid-js\";\nimport { NewDocIcon } from \"./icons.tsx\";\nimport { docLinkFromUrl } from \"./lib/doc-link.ts\";\nimport { NEW_DOC_DND_TYPE, setNewDocDragging, clearDropTarget } from \"./dnd/dnd.ts\";\nexport async function createNew(repo, datatype) {\n if (isLoadablePlugin(datatype)) {\n const registry = getRegistry(\"patchwork:datatype\");\n datatype = (await registry.load(datatype.id)) ?? datatype;\n }\n if (!isLoadedPlugin(datatype)) {\n throw new Error(\"plugin not loaded after loading\");\n }\n const docHandle = await createDocOfDatatype2(datatype, repo);\n const doc = docHandle.doc();\n const name = datatype.module.getTitle(doc);\n return {\n name,\n type: datatype.id,\n url: docHandle.url\n };\n}\nconst CreateNewMenu = lazy(() => import(\"./create-new-menu.tsx\").then(m => ({\n default: m.CreateNewMenu\n})));\nexport default function CreateNew(props) {\n const [open, setOpen] = createSignal(false);\n onMount(() => {\n const preload = () => void CreateNewMenu.preload();\n if (typeof requestIdleCallback === \"function\") {\n const id = requestIdleCallback(preload);\n onCleanup(() => cancelIdleCallback(id));\n } else {\n const id = setTimeout(preload, 0);\n onCleanup(() => clearTimeout(id));\n }\n });\n async function selectDatatype(datatype) {\n const freshy = await createNew(props.repo, datatype);\n props.changeFolder(doc => {\n doc.docs.push(freshy);\n });\n props.clearFilter();\n props.open(freshy);\n setOpen(false);\n }\n async function handleUrlSubmit(url) {\n const trimmed = url.trim();\n if (!isValidAutomergeUrl(trimmed)) return;\n const docLink = await docLinkFromUrl(props.repo, trimmed);\n props.changeFolder(doc => {\n doc.docs.push(docLink);\n });\n props.clearFilter();\n props.open(docLink);\n setOpen(false);\n }\n let lastCloseAt = 0;\n function handleDragStart(event) {\n setOpen(false);\n setNewDocDragging(true);\n event.dataTransfer.setData(NEW_DOC_DND_TYPE, \"1\");\n event.dataTransfer.effectAllowed = \"all\";\n const preview = document.createElement(\"div\");\n preview.style.cssText = `\n position: absolute;\n top: -1000px;\n background: var(--document-list-primary);\n padding: 0.5rem 0.75rem;\n border-radius: var(--document-list-radius);\n font-family: inherit;\n font-size: 0.9rem;\n pointer-events: none;\n color: var(--document-list-primary-line);\n box-shadow: 0 2px 8px rgba(0,0,0,0.1);\n `;\n preview.textContent = \"new doc\";\n document.body.appendChild(preview);\n event.dataTransfer.setDragImage(preview, 10, 10);\n setTimeout(() => preview.remove(), 0);\n }\n let anchor;\n return (() => {\n var _el$ = _tmpl$2(),\n _el$2 = _el$.firstChild;\n var _ref$ = anchor;\n typeof _ref$ === \"function\" ? _$use(_ref$, _el$) : anchor = _el$;\n _$addEventListener(_el$2, \"dragend\", () => {\n setNewDocDragging(false);\n clearDropTarget();\n });\n _$addEventListener(_el$2, \"dragstart\", props.draggable ? handleDragStart : void 0);\n _el$2.$$click = () => {\n if (performance.now() - lastCloseAt > 200) setOpen(true);\n };\n _el$2.addEventListener(\"focus\", () => void CreateNewMenu.preload());\n _el$2.addEventListener(\"pointerenter\", () => void CreateNewMenu.preload());\n _$insert(_el$2, _$createComponent(NewDocIcon, {\n \"class\": \"create-new-button__icon\"\n }), null);\n _$insert(_el$2, _$createComponent(Show, {\n get when() {\n return !props.square;\n },\n get children() {\n return [\" \", _tmpl$()];\n }\n }), null);\n _$insert(_el$, _$createComponent(Show, {\n get when() {\n return open();\n },\n get children() {\n return _$createComponent(CreateNewMenu, {\n get anchor() {\n return anchor.getBoundingClientRect();\n },\n onClose: () => {\n setOpen(false);\n lastCloseAt = performance.now();\n },\n onPickDatatype: selectDatatype,\n onSubmitUrl: handleUrlSubmit\n });\n }\n }), null);\n _$effect(_p$ => {\n var _v$ = !!props.square,\n _v$2 = props.draggable;\n _v$ !== _p$.e && _el$2.classList.toggle(\"create-new-button--square\", _p$.e = _v$);\n _v$2 !== _p$.t && _$setAttribute(_el$2, \"draggable\", _p$.t = _v$2);\n return _p$;\n }, {\n e: undefined,\n t: undefined\n });\n return _el$;\n })();\n}\n_$delegateEvents([\"click\"]);"],
5
- "mappings": "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",
6
- "names": ["_$template", "_$spread", "_tmpl$", "_tmpl$3", "_$template", "_tmpl$4", "SearchIcon", "_tmpl$", "NewDocIcon", "props", "_el$3", "_tmpl$3", "_$spread", "Chevron", "_el$4", "_tmpl$4", "_$template", "_$delegateEvents", "_$setAttribute", "_$effect", "_$insert", "_$createComponent", "_$addEventListener", "_$use", "isValidAutomergeUrl", "createDocOfDatatype2", "getRegistry", "isLoadablePlugin", "isLoadedPlugin", "createSignal", "lazy", "onCleanup", "onMount", "Show", "_tmpl$", "_$template", "_tmpl$2", "createNew", "repo", "datatype", "isLoadablePlugin", "getRegistry", "isLoadedPlugin", "docHandle", "createDocOfDatatype2", "doc", "CreateNewMenu", "lazy", "m", "CreateNew", "props", "open", "setOpen", "createSignal", "onMount", "preload", "id", "onCleanup", "selectDatatype", "freshy", "handleUrlSubmit", "url", "trimmed", "isValidAutomergeUrl", "docLink", "docLinkFromUrl", "lastCloseAt", "handleDragStart", "event", "setNewDocDragging", "NEW_DOC_DND_TYPE", "preview", "anchor", "_el$", "_el$2", "_ref$", "_$use", "_$addEventListener", "clearDropTarget", "_$insert", "_$createComponent", "NewDocIcon", "Show", "_$effect", "_p$", "_v$", "_v$2", "_$setAttribute", "_$delegateEvents"]
7
- }
@@ -1,2 +0,0 @@
1
- import{getRegistry as m,isLoadedPlugin as D}from"@inkandswitch/patchwork-plugins";async function A(t,e){let d=(await t.find(e)).doc(),s=d?.["@patchwork"]?.type??"",c="Untitled";if(s){let f=m("patchwork:datatype"),i=f.get(s);i&&(await f.load(i.id),D(i)&&(c=i.module.getTitle(d)||c))}return{name:c,type:s,url:e}}import{createSignal as l}from"solid-js";var[k,U]=l(!1),[h,v]=l(!1),x="application/x-patchwork-new-doc",[w,M]=l(!1);function P(t){return t.dataTransfer?.types.includes(x)??!1}function C(t,e){return e==="inside"?{id:t.id,position:e,folderUrl:t.url,index:0}:{id:t.id,position:e,folderUrl:t.parentUrl,index:e==="above"?t.index:t.index+1}}function I(t,e){return{id:t,position:"end",folderUrl:t,index:e}}var n=null;function O(){return n}function r(t,e){return document.querySelectorAll(`[${t}="${CSS.escape(e)}"]`)}function g(t,e){if(t){for(let o of r("data-dnd-item",t.id))o.removeAttribute("data-dnd-droplist-state");for(let o of r("data-dnd-container",t.id))o.removeAttribute("data-drop-state")}if(e){if(e.position==="inside"||e.position==="end")for(let o of r("data-dnd-container",e.id))o.setAttribute("data-drop-state",e.position);if(e.position!=="end")for(let o of r("data-dnd-item",e.id))o.setAttribute("data-dnd-droplist-state",e.position)}}var p=null;function E(t){p=t}function L(t){return p!=null&&p===t}var a=new Map;function u(t,e){for(let o of r("data-dnd-item",t))e?o.setAttribute("aria-checked","true"):o.removeAttribute("aria-checked")}function N(t,e){a.set(t,e),u(t,!0)}function R(t){a.delete(t),u(t,!1)}function j(){for(let t of a.keys())u(t,!1);a.clear()}function V(t){for(let e of t)for(let o of r("data-dnd-item",e))o.setAttribute("data-dnd-dragging","")}function _(){for(let t of document.querySelectorAll("[data-dnd-dragging]"))t.removeAttribute("data-dnd-dragging")}function q(t,e){let o=e.getBoundingClientRect();return t-o.top<o.height/2}function F(){g(n,null),n=null}function H(t){let e=n;!e&&!t||e&&t&&e.id===t.id&&e.position===t.position&&e.folderUrl===t.folderUrl&&e.index===t.index||(g(e,t),n=t)}export{A as a,U as b,h as c,v as d,x as e,M as f,P as g,C as h,I as i,O as j,E as k,L as l,a as m,N as n,R as o,j as p,V as q,_ as r,q as s,F as t,H as u};
2
- //# sourceMappingURL=chunk-YZ573CYO.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/sideboard/lib/doc-link.ts", "../src/sideboard/dnd/dnd.ts"],
4
- "sourcesContent": ["import type { AutomergeUrl, Repo } from \"@automerge/automerge-repo/slim\";\nimport { getRegistry, isLoadedPlugin } from \"@inkandswitch/patchwork-plugins\";\nimport type {\n DocLink,\n HasPatchworkMetadata,\n} from \"@inkandswitch/patchwork-filesystem\";\n\n// Resolve a bare automerge url into a DocLink by reading the doc's\n// patchwork metadata and asking its datatype for a title\nexport async function docLinkFromUrl(\n repo: Repo,\n url: AutomergeUrl\n): Promise<DocLink> {\n const handle = await repo.find<Partial<HasPatchworkMetadata>>(url);\n const doc = handle.doc();\n const type = doc?.[\"@patchwork\"]?.type ?? \"\";\n let name = \"Untitled\";\n\n if (type) {\n const registry = getRegistry(\"patchwork:datatype\");\n const datatype = registry.get(type);\n if (datatype) {\n await registry.load(datatype.id);\n if (isLoadedPlugin(datatype)) {\n name = datatype.module.getTitle(doc) || name;\n }\n }\n }\n\n return { name, type, url };\n}\n", "import { createSignal } from \"solid-js\";\nimport type { AutomergeUrl } from \"@automerge/automerge-repo/slim\";\n\nexport const [dragging, setDragging] = createSignal(false);\nexport const [copyMode, setCopyMode] = createSignal(false);\n\n// Dragging the \"new document\" button. Carries no document \u2014 on drop it asks the\n// list to open a pending-doc placeholder at the drop location instead of moving\n// anything.\nexport const NEW_DOC_DND_TYPE = \"application/x-patchwork-new-doc\";\nexport const [newDocDragging, setNewDocDragging] = createSignal(false);\n\nexport function isNewDocDrag(event: DragEvent) {\n return event.dataTransfer?.types.includes(NEW_DOC_DND_TYPE) ?? false;\n}\n\n/**\n * Where a drop will land. It's the one answer both the drop line (while\n * dragging) and the drop itself use, so the picture can't disagree with the\n * result: `folderUrl` + `index` is the insertion point, and `id` + `position`\n * say what to draw.\n *\n * - above/below: a line on the row whose `data-dnd-item` is `id`\n * - inside: the folder whose `data-dnd-container` is `id` lights up\n * - end: a line after the last row of the list whose container is `id`\n */\nexport type DropSpot = {\n id: string;\n position: \"above\" | \"below\" | \"inside\" | \"end\";\n folderUrl: AutomergeUrl;\n index: number;\n};\n\n/** The spot for a row: above/below go into its parent, inside into itself. */\nexport function rowSpot(\n row: { id: string; url: AutomergeUrl; parentUrl: AutomergeUrl; index: number },\n position: \"above\" | \"below\" | \"inside\"\n): DropSpot {\n if (position === \"inside\") {\n return { id: row.id, position, folderUrl: row.url, index: 0 };\n }\n return {\n id: row.id,\n position,\n folderUrl: row.parentUrl,\n index: position === \"above\" ? row.index : row.index + 1,\n };\n}\n\n/** The spot after the last row of a folder's list. */\nexport function endSpot(folderUrl: AutomergeUrl, length: number): DropSpot {\n return { id: folderUrl, position: \"end\", folderUrl, index: length };\n}\n\n// Drop target is a plain variable \u2014 not a SolidJS signal.\n// Visual state is updated via direct DOM manipulation to avoid\n// O(n) reactive updates across all items on every dragover.\nlet currentDropTarget: DropSpot | null = null;\n\nexport function getDropTarget() {\n return currentDropTarget;\n}\n\n// Every mounted copy of a row shares its id (the same folder can be open in\n// two places, or in two panels), and they all stand for the same docref, so\n// every copy gets the mark \u2014 not just whichever one comes first in the DOM.\nfunction marked(attribute: string, id: string) {\n return document.querySelectorAll(`[${attribute}=\"${CSS.escape(id)}\"]`);\n}\n\nfunction updateDropTargetDOM(\n oldTarget: DropSpot | null,\n newTarget: DropSpot | null\n) {\n if (oldTarget) {\n for (const item of marked(\"data-dnd-item\", oldTarget.id))\n item.removeAttribute(\"data-dnd-droplist-state\");\n for (const container of marked(\"data-dnd-container\", oldTarget.id))\n container.removeAttribute(\"data-drop-state\");\n }\n if (newTarget) {\n if (newTarget.position === \"inside\" || newTarget.position === \"end\") {\n for (const container of marked(\"data-dnd-container\", newTarget.id))\n container.setAttribute(\"data-drop-state\", newTarget.position);\n }\n if (newTarget.position !== \"end\") {\n for (const item of marked(\"data-dnd-item\", newTarget.id))\n item.setAttribute(\"data-dnd-droplist-state\", newTarget.position);\n }\n }\n}\n\n// Identity for the \"did this drag start and end in the same view?\" question.\n// The answer decides move (\u2192 in-view) vs add-link (\u2192 cross-view or external).\n//\n// The tool id can't answer it: the sideboard is shown through patchwork-view's\n// *fallback* path, which never sets the `tool-id` attribute, so element.toolId\n// is null \u2014 and even when set it names the tool *type*, not the instance, so\n// two side-by-side views would collide. The <patchwork-view> element itself is\n// the instance identity. We're single-context on the web (dragstart and drop\n// run in the same window), so plain reference equality is all we need: remember\n// the origin element on dragstart, compare it on drop, clear it on dragend.\nlet dragOriginView: object | null = null;\nexport function setDragOriginView(element: object | null) {\n dragOriginView = element;\n}\nexport function isSameDragOriginView(element: object): boolean {\n return dragOriginView != null && dragOriginView === element;\n}\n\nexport type SideboardDragAndDropItem = {\n id: string;\n url: AutomergeUrl;\n type: string;\n name: string;\n source: string;\n};\n\n// Plain Map \u2014 not reactive. aria-checked is updated via DOM manipulation\n// to avoid O(n) reactive updates when selection changes.\nexport const dragstack = new Map<string, SideboardDragAndDropItem>();\n\nfunction setDragChecked(id: string, checked: boolean) {\n for (const el of marked(\"data-dnd-item\", id)) {\n if (checked) {\n el.setAttribute(\"aria-checked\", \"true\");\n } else {\n el.removeAttribute(\"aria-checked\");\n }\n }\n}\n\nexport function addToDragstack(id: string, item: SideboardDragAndDropItem) {\n dragstack.set(id, item);\n setDragChecked(id, true);\n}\n\nexport function removeFromDragstack(id: string) {\n dragstack.delete(id);\n setDragChecked(id, false);\n}\n\nexport function clearDragstack() {\n for (const id of dragstack.keys()) {\n setDragChecked(id, false);\n }\n dragstack.clear();\n}\n\nexport function setDragSourceItems(ids: string[]) {\n for (const id of ids) {\n for (const el of marked(\"data-dnd-item\", id))\n el.setAttribute(\"data-dnd-dragging\", \"\");\n }\n}\n\nexport function clearDragSourceItems() {\n for (const el of document.querySelectorAll(\"[data-dnd-dragging]\")) {\n el.removeAttribute(\"data-dnd-dragging\");\n }\n}\n\nexport function isAbove(clientY: number, element: Element) {\n const rect = element.getBoundingClientRect();\n const offset = clientY - rect.top;\n return offset < rect.height / 2;\n}\n\nexport function clearDropTarget() {\n updateDropTargetDOM(currentDropTarget, null);\n currentDropTarget = null;\n}\n\nexport function setDropTarget(target: DropSpot | null) {\n // Only update if actually changed\n const current = currentDropTarget;\n if (!current && !target) return;\n if (\n current &&\n target &&\n current.id === target.id &&\n current.position === target.position &&\n current.folderUrl === target.folderUrl &&\n current.index === target.index\n ) {\n return;\n }\n\n updateDropTargetDOM(current, target);\n currentDropTarget = target;\n}\n"],
5
- "mappings": "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",
6
- "names": ["getRegistry", "isLoadedPlugin", "docLinkFromUrl", "repo", "url", "doc", "type", "name", "registry", "datatype", "createSignal", "dragging", "setDragging", "copyMode", "setCopyMode", "NEW_DOC_DND_TYPE", "newDocDragging", "setNewDocDragging", "isNewDocDrag", "event", "rowSpot", "row", "position", "endSpot", "folderUrl", "length", "currentDropTarget", "getDropTarget", "marked", "attribute", "id", "updateDropTargetDOM", "oldTarget", "newTarget", "item", "container", "dragOriginView", "setDragOriginView", "element", "isSameDragOriginView", "dragstack", "setDragChecked", "checked", "el", "addToDragstack", "removeFromDragstack", "clearDragstack", "setDragSourceItems", "ids", "clearDragSourceItems", "isAbove", "clientY", "rect", "clearDropTarget", "setDropTarget", "target", "current"]
7
- }
@@ -1,2 +0,0 @@
1
- import{b as a,c as b}from"./chunk-73XN2I2U.js";import"./chunk-OFWMAVKQ.js";import"./chunk-RZPTJTVZ.js";import"./chunk-YZ573CYO.js";import"./chunk-FEMULUBJ.js";import"./chunk-TCL6SLDB.js";import"./chunk-FW4363Y4.js";export{a as DocumentListPanel,b as renderDocumentListPanel};
2
- //# sourceMappingURL=document-list-panel-SCICIJCF.js.map
@@ -1,2 +0,0 @@
1
- import{a as f,b as w,c as v,d as o,e as a}from"./chunk-NS3ADG2Z.js";import{h as m,i as g,o as S}from"./chunk-RZPTJTVZ.js";import{m as c,p}from"./chunk-YZ573CYO.js";import"./chunk-TCL6SLDB.js";import"./chunk-FW4363Y4.js";import{memo as $}from"solid-js/web";import{createComponent as e}from"solid-js/web";import{For as d,Show as u}from"solid-js";import{parseAutomergeUrl as I}from"@automerge/automerge-repo/slim";function A(l){let n=()=>{let r=m();return r&&l.element.contains(r.element)?r:null};function i(r){m()===r&&g(null),r.element.isConnected&&r.element.focus({preventScroll:!0})}return e(u,{get when(){return n()},keyed:!0,children:r=>e(v,{get anchor(){return{x:r.x,y:r.y}},placement:"right-start",onClose:()=>i(r),get children(){return e(T,{target:r,get repo(){return l.repo},get rootFolderHandle(){return l.rootFolderHandle}})}})})}function T(l){let n=l.target,i=w(n.type),r=f(t=>!t.unlisted),h=()=>c.has(n.id)&&c.size>1,s=()=>`${location.protocol}//${location.host}/#doc=${I(n.url).documentId}`;async function b(){if(!h()){n.remove();return}let t=[...c.values()].map(y=>y.url);confirm(`Remove ${t.length} items from the sidebar?`)&&(p(),await S(l.repo,l.rootFolderHandle,t))}return[e(u,{get when(){return n.createInside},get children(){return e(a,{label:"Create",get children(){return e(d,{each:r,children:t=>e(o,{onSelect:()=>n.createInside(t),get children(){return t.name}})})}})}}),e(u,{get when(){return i.length},get children(){return e(a,{label:"Open with...",get children(){return e(d,{each:i,children:t=>e(o,{onSelect:()=>n.openWith(t.id),get children(){return t.name}})})}})}}),e(a,{label:"Copy",get children(){return[e(o,{onSelect:()=>navigator.clipboard.writeText(n.url),children:"Automerge url"}),e(o,{onSelect:()=>navigator.clipboard.writeText(s()),children:"Patchwork url"}),e(u,{get when(){return i.length},get children(){return e(a,{label:"Patchwork url with...",get children(){return e(d,{each:i,children:t=>e(o,{onSelect:()=>navigator.clipboard.writeText(`${s()}&tool=${t.id}`),get children(){return t.name}})})}})}})]}}),e(o,{onSelect:()=>n.startRenaming(),children:"Rename"}),e(o,{onSelect:b,get children(){return $(()=>!!h())()?`Remove ${c.size} items`:"Remove"}})]}export{A as ItemMenu};
2
- //# sourceMappingURL=item-menu-3JUJN3MS.js.map
@@ -1,2 +0,0 @@
1
- import{r as a,s as b}from"./chunk-MWFQHDD3.js";import"./chunk-FW4363Y4.js";export{a as IsolatedDocumentArea,b as mountIsolationRoot};
2
- //# sourceMappingURL=IsolatedDocumentArea-W7IBHNIS.js.map