@inkandswitch/patchwork-pkg-base 0.0.63 → 0.0.64

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 (38) hide show
  1. package/package.json +1 -1
  2. package/packages/sideboard/dist/account-bar-KGTVEYOE.js +2 -0
  3. package/packages/sideboard/dist/chunk-6LWWNFKU.js +2 -0
  4. package/packages/sideboard/dist/chunk-6LWWNFKU.js.map +7 -0
  5. package/packages/sideboard/dist/chunk-KHS2XJKP.js +15 -0
  6. package/packages/sideboard/dist/chunk-KHS2XJKP.js.map +7 -0
  7. package/packages/sideboard/dist/chunk-LJ5XCENG.js +2 -0
  8. package/packages/sideboard/dist/chunk-LJ5XCENG.js.map +7 -0
  9. package/packages/sideboard/dist/chunk-NO6SJFVH.js +2 -0
  10. package/packages/sideboard/dist/chunk-NO6SJFVH.js.map +7 -0
  11. package/packages/sideboard/dist/chunk-TCL6SLDB.js +2 -0
  12. package/packages/sideboard/dist/chunk-TCL6SLDB.js.map +7 -0
  13. package/packages/sideboard/dist/chunk-TXFTRSLY.js +13 -0
  14. package/packages/sideboard/dist/chunk-TXFTRSLY.js.map +7 -0
  15. package/packages/sideboard/dist/chunk-V62KH27A.js +2 -0
  16. package/packages/sideboard/dist/{chunk-52EOIDIA.js.map → chunk-V62KH27A.js.map} +2 -2
  17. package/packages/sideboard/dist/chunk-ZQBDNEEV.js +2 -0
  18. package/packages/sideboard/dist/chunk-ZQBDNEEV.js.map +7 -0
  19. package/packages/sideboard/dist/create-new-menu-EU5KJJ3R.js +2 -0
  20. package/packages/sideboard/dist/create-new-menu-EU5KJJ3R.js.map +7 -0
  21. package/packages/sideboard/dist/document-list-panel-WDIVYTZU.js +2 -0
  22. package/packages/sideboard/dist/index.css +1 -1
  23. package/packages/sideboard/dist/index.css.map +2 -2
  24. package/packages/sideboard/dist/index.js +1 -1
  25. package/packages/sideboard/dist/item-menu-N2ATUOK3.js +2 -0
  26. package/packages/sideboard/dist/item-menu-N2ATUOK3.js.map +7 -0
  27. package/packages/sideboard/dist/sideboard/sideboard.js +1 -1
  28. package/packages/sideboard/dist/sideboard/sideboard.js.map +2 -2
  29. package/packages/sideboard/package.json +5 -6
  30. package/packages/sideboard/dist/account-bar-6B65GY2V.js +0 -2
  31. package/packages/sideboard/dist/chunk-52EOIDIA.js +0 -2
  32. package/packages/sideboard/dist/chunk-G7U5YDCS.js +0 -2
  33. package/packages/sideboard/dist/chunk-G7U5YDCS.js.map +0 -7
  34. package/packages/sideboard/dist/chunk-NPZBYDER.js +0 -26
  35. package/packages/sideboard/dist/chunk-NPZBYDER.js.map +0 -7
  36. package/packages/sideboard/dist/document-list-panel-44RR5PWX.js +0 -2
  37. /package/packages/sideboard/dist/{account-bar-6B65GY2V.js.map → account-bar-KGTVEYOE.js.map} +0 -0
  38. /package/packages/sideboard/dist/{document-list-panel-44RR5PWX.js.map → document-list-panel-WDIVYTZU.js.map} +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/sideboard/state.ts", "../src/sideboard/dnd/operations.ts", "../src/sideboard/dnd/debug.ts"],
4
+ "sourcesContent": ["import { createSignal } from \"solid-js\";\nimport type { AutomergeUrl } from \"@automerge/automerge-repo/slim\";\nimport type {\n DatatypeDescription,\n Plugin,\n} from \"@inkandswitch/patchwork-plugins\";\n\n// A \"new document\" drag (or click) is asking for a doc to be created inside the\n// folder at `containerUrl`, inserted at `index`. The DocumentList whose handle\n// matches `containerUrl` renders a placeholder row + type picker there.\nexport const [pendingNewDoc, setPendingNewDoc] = createSignal<{\n containerUrl: AutomergeUrl;\n index: number;\n} | null>(null);\n\nexport function filterMatches(filter: string, string?: string) {\n const lower = string?.toLowerCase();\n return (\n !!lower &&\n filter\n .split(/\\s+/)\n .filter(Boolean)\n .every((term) => lower.includes(term))\n );\n}\n\nexport const [renaming, setRenaming] = createSignal(\"\");\n\n// The set of folder URLs that lie on the path from the root to a currently\n// selected document. A folder reads this to auto-expand itself so the selected\n// doc is revealed, even when it sits in a deeply nested (and otherwise\n// unmounted) subtree. Computed by the panel whenever the selection changes; see\n// collectExpandedFolders in document-list/auto-expand.ts.\nexport const [autoExpandedFolders, setAutoExpandedFolders] = createSignal<\n Set<AutomergeUrl>\n>(new Set());\n\n// The row whose context menu is open. Rows don't own a menu each (a Kobalte\n// menu per row is far too heavy for big trees); the panel renders one shared\n// menu for whichever row last asked, anchored at the pointer.\nexport interface MenuTarget {\n x: number;\n y: number;\n element: HTMLElement;\n id: string;\n url: AutomergeUrl;\n name: string;\n type: string;\n openWith(toolId?: string): void;\n startRenaming(): void;\n remove(): void;\n createInside?(datatype: Plugin<DatatypeDescription>): void;\n}\n\nexport const [menuTarget, setMenuTarget] = createSignal<MenuTarget | null>(\n null\n);\n", "import type { DocHandle, Repo, AutomergeUrl } from \"@automerge/automerge-repo/slim\";\nimport type { FolderDoc, DocLink } from \"@inkandswitch/patchwork-filesystem\";\nimport { deleteAt } from \"@automerge/automerge-repo/slim\";\nimport { log } from \"./debug.ts\";\nimport { docLinkFromUrl } from \"../lib/doc-link.ts\";\n\n// Track loaded folders to prevent memory leaks\nconst folderCache = new Map<AutomergeUrl, DocHandle<FolderDoc>>();\n\n// Maximum folder nesting depth to prevent stack overflow\nconst MAX_FOLDER_DEPTH = 20;\n\n// Helper to extract plain data from Automerge proxy objects\n// structuredClone doesn't work with Automerge proxies - they contain\n// internal symbols and proxies that cannot be cloned\nfunction extractPlainDocLink(docLink: DocLink): DocLink {\n // Explicitly copy only the serializable properties\n const plain: DocLink = {\n url: docLink.url,\n name: docLink.name,\n type: docLink.type,\n };\n return plain;\n}\n\nexport interface DropOperation {\n draggedIds: string[];\n draggedUrls: AutomergeUrl[];\n // Full payload items, used to add links when the dragged docs\n // aren't part of this sideboard's folder tree\n draggedItems?: Array<{ url: AutomergeUrl; name?: string; type?: string }>;\n targetId: string;\n position: \"above\" | \"below\" | \"inside\";\n sourceToolId: string;\n copyMode: boolean;\n}\n\ninterface ItemLocation {\n url: AutomergeUrl;\n folderUrl: AutomergeUrl;\n folderPath: number[];\n index: number;\n item: DocLink;\n}\n\ninterface ItemLocations {\n sourceItems: ItemLocation[];\n targetFolder: AutomergeUrl;\n targetFolderPath: number[];\n targetIndex: number;\n}\n\nexport async function executeDrop(\n operation: DropOperation,\n repo: Repo,\n rootFolderHandle: DocHandle<FolderDoc>,\n // True when the drop lands in the same <patchwork-view> the drag started in.\n // Only then can items be moved; see step 3.\n sameOriginView: boolean\n) {\n log(\"executeDrop called with:\", {\n draggedIds: operation.draggedIds,\n targetId: operation.targetId,\n position: operation.position,\n copyMode: operation.copyMode,\n sourceToolId: operation.sourceToolId,\n });\n\n // 1. Validate we have items to drop\n if (operation.draggedUrls.length === 0) {\n log(\"No items to drop\");\n return;\n }\n\n log(\"Starting location finding...\");\n\n // 2. Find source and target locations\n const locations = await findItemLocations(\n rootFolderHandle,\n operation.draggedUrls,\n operation.targetId,\n repo,\n operation.position\n );\n\n if (!locations) {\n log(\"Could not find target location. Target:\", operation.targetId);\n return;\n }\n\n // 3. Move only when the drag started inside *this same* <patchwork-view> and\n // the dragged docs are actually in this tree. A drag from another view, or an\n // external / bare-url drop (neither sets the origin view), is added to the\n // target folder as a link instead. Identity is the view element itself \u2014 not\n // the tool id, which is null for the fallback-mounted sideboard and was what\n // made the old check send every in-view drag down this add-link path,\n // duplicating instead of moving.\n if (!sameOriginView || locations.sourceItems.length === 0) {\n log(\n \"Cross-view/external drop, adding links. sameOriginView:\",\n sameOriginView\n );\n await performAdd(repo, rootFolderHandle, locations, operation);\n return;\n }\n\n log(\"Locations found:\", {\n sourceItemsCount: locations.sourceItems.length,\n targetFolder: locations.targetFolder,\n targetIndex: locations.targetIndex,\n });\n\n // 4. Validate drop is legal (no circular references, etc)\n log(\"Validating drop...\");\n const validationError = getDropValidationError(locations, operation);\n if (validationError) {\n log(\"Invalid drop operation:\", validationError);\n return;\n }\n\n log(\"Validation passed, executing operation...\");\n\n // 5. Execute the move or copy\n if (operation.copyMode) {\n await performCopy(rootFolderHandle, locations, operation, repo);\n } else {\n await performMove(rootFolderHandle, locations, operation);\n }\n\n log(\"Operation complete!\");\n}\n\n// Remove every doc-link matching one of `urls` from the sideboard's folder\n// tree, wherever it lives. Used by the context menu to remove a multi-selection\n// in one shot. Deletes are batched per folder and applied high-index-first so\n// earlier removals don't shift the indices of later ones.\nexport async function removeItemsByUrl(\n repo: Repo,\n rootFolderHandle: DocHandle<FolderDoc>,\n urls: AutomergeUrl[]\n): Promise<void> {\n const targets = new Set(urls);\n if (targets.size === 0) return;\n\n const removalsByFolder = new Map<DocHandle<FolderDoc>, number[]>();\n const visited = new Set<AutomergeUrl>();\n\n async function traverse(\n handle: DocHandle<FolderDoc>,\n depth: number\n ): Promise<void> {\n if (depth >= MAX_FOLDER_DEPTH) return;\n const doc = handle.doc();\n if (!doc?.docs) return;\n visited.add(handle.url);\n\n for (let i = 0; i < doc.docs.length; i++) {\n const child = doc.docs[i];\n\n if (targets.has(child.url)) {\n const indices = removalsByFolder.get(handle) ?? [];\n indices.push(i);\n removalsByFolder.set(handle, indices);\n }\n\n if (\n child.type === \"folder\" &&\n child.url &&\n child.url !== handle.url &&\n !visited.has(child.url)\n ) {\n let nested = folderCache.get(child.url);\n if (!nested) {\n try {\n nested = await repo.find<FolderDoc>(child.url);\n folderCache.set(child.url, nested);\n } catch (error) {\n log(\"Failed to load folder while removing:\", child.url, error);\n continue;\n }\n }\n await traverse(nested, depth + 1);\n }\n }\n }\n\n await traverse(rootFolderHandle, 0);\n\n for (const [handle, indices] of removalsByFolder) {\n const sorted = [...indices].sort((a, b) => b - a);\n handle.change((doc) => {\n for (const index of sorted) deleteAt(doc.docs, index);\n });\n }\n}\n\nasync function findItemLocations(\n rootFolderHandle: DocHandle<FolderDoc>,\n draggedUrls: AutomergeUrl[],\n targetId: string,\n repo: Repo,\n position: \"above\" | \"below\" | \"inside\"\n): Promise<ItemLocations | null> {\n const rootFolder = rootFolderHandle.doc();\n if (!rootFolder) return null;\n\n const sourceItems: ItemLocation[] = [];\n let targetFolder: AutomergeUrl | null = null;\n let targetFolderPath: number[] | null = null;\n let targetIndex = 0;\n\n // Track visited folders to prevent infinite recursion\n const visitedFolders = new Set<AutomergeUrl>();\n\n // Helper to traverse folder tree recursively\n async function traverse(\n folderUrl: AutomergeUrl,\n docs: DocLink[] | undefined,\n path: number[],\n depth: number = 0\n ): Promise<void> {\n if (!docs) return;\n\n // Prevent infinite recursion with depth limit\n if (depth >= MAX_FOLDER_DEPTH) {\n log(`Max folder depth (${MAX_FOLDER_DEPTH}) reached, stopping traversal`);\n return;\n }\n\n // Mark this folder as visited\n visitedFolders.add(folderUrl);\n\n for (let i = 0; i < docs.length; i++) {\n const doc = docs[i];\n\n // Check if this is a dragged item\n if (draggedUrls.includes(doc.url)) {\n sourceItems.push({\n url: doc.url,\n folderUrl,\n folderPath: [...path],\n index: i,\n item: doc,\n });\n }\n\n // Check if this is the target\n const itemId = folderUrl + \"/\" + i;\n if (itemId === targetId) {\n targetFolder = folderUrl;\n targetFolderPath = [...path];\n targetIndex = i;\n }\n\n // Check if folder URL matches targetId for above/below/inside positions\n if (doc.type === \"folder\" && doc.url === targetId) {\n if (position === \"above\" || position === \"below\") {\n // Dropping above or below the folder - target is the parent folder\n targetFolder = folderUrl;\n targetFolderPath = [...path];\n targetIndex = i;\n } else if (position === \"inside\") {\n // Dropping inside the folder - target is the folder itself\n targetFolder = doc.url;\n targetFolderPath = [...path, i];\n targetIndex = 0; // Drop at start of folder\n }\n }\n\n // Recurse into folders to find nested items\n if (doc.type === \"folder\" && doc.url) {\n // Skip if folder references itself (only skip recursion, not target matching above)\n if (doc.url === folderUrl) {\n log(\"Skipping self-referencing folder:\", doc.url);\n continue;\n }\n\n // Skip if we've already visited this folder (prevent circular refs)\n if (visitedFolders.has(doc.url)) {\n log(\"Skipping already visited folder:\", doc.url);\n continue;\n }\n\n const nestedPath = [...path, i];\n\n // Load the nested folder if not cached\n let nestedHandle = folderCache.get(doc.url);\n if (!nestedHandle) {\n try {\n nestedHandle = await repo.find<FolderDoc>(doc.url);\n folderCache.set(doc.url, nestedHandle);\n } catch (error) {\n log(\"Failed to load folder:\", doc.url, error);\n continue;\n }\n }\n\n const nestedFolder = nestedHandle?.doc();\n if (nestedFolder?.docs) {\n await traverse(doc.url, nestedFolder.docs, nestedPath, depth + 1);\n }\n }\n }\n }\n\n // Start traversal from root\n if (rootFolder.docs) {\n await traverse(rootFolderHandle.url, rootFolder.docs, [], 0);\n }\n\n // If target is the root folder URL (dropping inside root), set target to root\n if (targetId === rootFolderHandle.url && position === \"inside\") {\n targetFolder = rootFolderHandle.url;\n targetFolderPath = [];\n targetIndex = 0;\n }\n\n if (!targetFolder || !targetFolderPath) {\n return null;\n }\n\n return {\n sourceItems,\n targetFolder,\n targetFolderPath,\n targetIndex,\n };\n}\n\nfunction getDropValidationError(\n locations: ItemLocations,\n operation: DropOperation\n): string | null {\n // Check if dropping onto itself\n for (const sourceItem of locations.sourceItems) {\n const sourceId = sourceItem.folderUrl + \"/\" + sourceItem.index;\n\n // Prevent dropping item onto itself\n if (\n sourceId === operation.targetId ||\n sourceItem.url === operation.targetId\n ) {\n return `Cannot drop item onto itself (${sourceItem.item.name})`;\n }\n\n // Prevent dropping item into its current position\n if (\n sourceItem.folderUrl === locations.targetFolder &&\n operation.position === \"inside\" &&\n !operation.copyMode\n ) {\n return `Item is already in this folder (${sourceItem.item.name})`;\n }\n\n // Check if trying to drop folder into itself\n if (\n sourceItem.item.type === \"folder\" &&\n sourceItem.url === locations.targetFolder\n ) {\n return `Cannot drop folder into itself (${sourceItem.item.name})`;\n }\n\n // Check if dropping folder into its descendants (circular reference prevention)\n if (sourceItem.item.type === \"folder\") {\n const isDescendant = isDescendantFolder(\n sourceItem.url,\n locations.targetFolder\n );\n if (isDescendant) {\n return `Cannot drop folder into its own descendant (${sourceItem.item.name})`;\n }\n }\n }\n\n return null;\n}\n\n// Helper to check if targetFolder is a descendant of potentialAncestor\nfunction isDescendantFolder(\n potentialAncestor: AutomergeUrl,\n targetFolder: AutomergeUrl\n): boolean {\n if (potentialAncestor === targetFolder) {\n return true;\n }\n\n // Check cached folder for descendants\n const ancestorHandle = folderCache.get(potentialAncestor);\n if (!ancestorHandle) return false;\n\n const ancestorDoc = ancestorHandle.doc();\n if (!ancestorDoc?.docs) return false;\n\n // Recursively check all subfolders\n for (const doc of ancestorDoc.docs) {\n if (doc.type === \"folder\" && doc.url) {\n if (doc.url === targetFolder) {\n return true;\n }\n if (isDescendantFolder(doc.url, targetFolder)) {\n return true;\n }\n }\n }\n\n return false;\n}\n\nasync function performMove(\n rootFolderHandle: DocHandle<FolderDoc>,\n locations: ItemLocations,\n operation: DropOperation\n) {\n log(\n `Moving ${locations.sourceItems.length} item(s) to position:`,\n operation.position\n );\n\n // Group sources by folder for efficient removal\n const sourcesByFolder = new Map<AutomergeUrl, ItemLocation[]>();\n for (const source of locations.sourceItems) {\n const sources = sourcesByFolder.get(source.folderUrl) || [];\n sources.push(source);\n sourcesByFolder.set(source.folderUrl, sources);\n }\n\n // Remove items from source folders (process each folder once)\n const removedItems: DocLink[] = [];\n for (const [folderUrl, sources] of sourcesByFolder) {\n // Sort by index descending to remove from end first (preserves indices)\n const sorted = [...sources].sort((a, b) => b.index - a.index);\n\n if (folderUrl === rootFolderHandle.url) {\n // Root level - can modify directly\n rootFolderHandle.change((doc) => {\n for (const source of sorted) {\n const item = extractPlainDocLink(doc.docs[source.index]);\n removedItems.unshift(item);\n deleteAt(doc.docs, source.index);\n }\n });\n } else {\n // Nested folder - need to load and modify\n const folderHandle = folderCache.get(folderUrl);\n if (folderHandle) {\n folderHandle.change((doc) => {\n for (const source of sorted) {\n const item = extractPlainDocLink(doc.docs[source.index]);\n removedItems.unshift(item);\n deleteAt(doc.docs, source.index);\n }\n });\n }\n }\n }\n\n // Calculate target index (adjust if moving within same folder)\n let finalTargetIndex = locations.targetIndex;\n\n const sourcesInTargetFolder = sourcesByFolder.get(locations.targetFolder);\n if (sourcesInTargetFolder) {\n // Moving within same folder - adjust for removed items\n const removedBefore = sourcesInTargetFolder.filter(\n (s) => s.index < locations.targetIndex\n ).length;\n finalTargetIndex -= removedBefore;\n }\n\n // Adjust based on position\n if (operation.position === \"above\") {\n // Insert before target\n } else if (operation.position === \"below\") {\n // Insert after target\n finalTargetIndex++;\n } else if (operation.position === \"inside\") {\n // Insert at beginning of folder\n finalTargetIndex = 0;\n }\n\n // Insert items at target location\n if (locations.targetFolder === rootFolderHandle.url) {\n // Root level\n rootFolderHandle.change((doc) => {\n doc.docs.splice(finalTargetIndex, 0, ...removedItems);\n });\n } else {\n // Nested folder\n const targetHandle = folderCache.get(locations.targetFolder);\n if (targetHandle) {\n targetHandle.change((doc) => {\n doc.docs.splice(finalTargetIndex, 0, ...removedItems);\n });\n }\n }\n}\n\n// Add links for docs dragged in from outside this sideboard's folder tree\nasync function performAdd(\n repo: Repo,\n rootFolderHandle: DocHandle<FolderDoc>,\n locations: ItemLocations,\n operation: DropOperation\n) {\n const candidates = (operation.draggedItems ?? []).filter(\n (item) => item.url && item.url !== locations.targetFolder\n );\n\n // Don't add items that are already present in the target folder -\n // dropping a doc into a folder it's already in shouldn't duplicate it.\n const targetDocs =\n locations.targetFolder === rootFolderHandle.url\n ? rootFolderHandle.doc()?.docs\n : folderCache.get(locations.targetFolder)?.doc()?.docs;\n const existingUrls = new Set(targetDocs?.map((doc) => doc.url) ?? []);\n\n const links = (\n await Promise.all(\n candidates\n .filter((item) => !existingUrls.has(item.url))\n .map(async (item): Promise<DocLink | null> => {\n if (item.name && item.type) {\n return { url: item.url, name: item.name, type: item.type };\n }\n // Bare url (e.g. dragged link text) - resolve name/type from the doc\n try {\n return await docLinkFromUrl(repo, item.url);\n } catch (error) {\n log(\"Failed to resolve dropped doc:\", item.url, error);\n return null;\n }\n })\n )\n ).filter((link): link is DocLink => link !== null);\n\n if (links.length === 0) {\n log(\"No addable items in external drop (already present or unresolvable)\");\n return;\n }\n\n let finalTargetIndex = locations.targetIndex;\n if (operation.position === \"below\") {\n finalTargetIndex++;\n } else if (operation.position === \"inside\") {\n finalTargetIndex = 0;\n }\n\n log(`Adding ${links.length} link(s) at index:`, finalTargetIndex);\n\n if (locations.targetFolder === rootFolderHandle.url) {\n rootFolderHandle.change((doc) => {\n doc.docs.splice(finalTargetIndex, 0, ...links);\n });\n } else {\n const targetHandle = folderCache.get(locations.targetFolder);\n if (targetHandle) {\n targetHandle.change((doc) => {\n doc.docs.splice(finalTargetIndex, 0, ...links);\n });\n }\n }\n}\n\nasync function performCopy(\n rootFolderHandle: DocHandle<FolderDoc>,\n locations: ItemLocations,\n operation: DropOperation,\n _repo: Repo\n) {\n log(\n `Copying ${locations.sourceItems.length} item(s) to position:`,\n operation.position\n );\n\n // Collect items to copy from their source folders\n const itemsToCopy: DocLink[] = [];\n\n for (const source of locations.sourceItems) {\n let item: DocLink | undefined;\n\n if (source.folderUrl === rootFolderHandle.url) {\n // Root level\n const doc = rootFolderHandle.doc();\n if (doc?.docs) {\n item = doc.docs[source.index];\n }\n } else {\n // Nested folder\n const folderHandle = folderCache.get(source.folderUrl);\n const doc = folderHandle?.doc();\n if (doc?.docs) {\n item = doc.docs[source.index];\n }\n }\n\n if (item) {\n const clonedItem = extractPlainDocLink(item);\n clonedItem.name = item.name;\n itemsToCopy.push(clonedItem);\n }\n }\n\n // Calculate target index\n let finalTargetIndex = locations.targetIndex;\n\n if (operation.position === \"above\") {\n // Insert before target\n } else if (operation.position === \"below\") {\n // Insert after target\n finalTargetIndex++;\n } else if (operation.position === \"inside\") {\n // Insert at beginning of folder\n finalTargetIndex = 0;\n }\n\n // Insert copied items at target location\n if (locations.targetFolder === rootFolderHandle.url) {\n // Root level\n rootFolderHandle.change((doc) => {\n doc.docs.splice(finalTargetIndex, 0, ...itemsToCopy);\n });\n } else {\n // Nested folder\n const targetHandle = folderCache.get(locations.targetFolder);\n if (targetHandle) {\n targetHandle.change((doc) => {\n doc.docs.splice(finalTargetIndex, 0, ...itemsToCopy);\n });\n }\n }\n}\n", "import debug from \"debug\";\n\nexport const log = debug(\"patchwork:sideboard:dnd\");\n"],
5
+ "mappings": "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",
6
+ "names": ["createSignal", "pendingNewDoc", "setPendingNewDoc", "filterMatches", "filter", "string", "lower", "term", "renaming", "setRenaming", "autoExpandedFolders", "setAutoExpandedFolders", "menuTarget", "setMenuTarget", "deleteAt", "import_debug", "log", "debug", "folderCache", "MAX_FOLDER_DEPTH", "extractPlainDocLink", "docLink", "executeDrop", "operation", "repo", "rootFolderHandle", "sameOriginView", "log", "locations", "findItemLocations", "performAdd", "validationError", "getDropValidationError", "performCopy", "performMove", "removeItemsByUrl", "urls", "targets", "removalsByFolder", "visited", "traverse", "handle", "depth", "doc", "i", "child", "indices", "nested", "error", "sorted", "a", "b", "index", "deleteAt", "draggedUrls", "targetId", "position", "rootFolder", "sourceItems", "targetFolder", "targetFolderPath", "targetIndex", "visitedFolders", "folderUrl", "docs", "path", "nestedPath", "nestedHandle", "nestedFolder", "sourceItem", "isDescendantFolder", "potentialAncestor", "ancestorHandle", "ancestorDoc", "sourcesByFolder", "source", "sources", "removedItems", "item", "folderHandle", "finalTargetIndex", "sourcesInTargetFolder", "removedBefore", "targetHandle", "candidates", "targetDocs", "existingUrls", "links", "docLinkFromUrl", "link", "_repo", "itemsToCopy", "clonedItem"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{a as x}from"./chunk-FW4363Y4.js";var E=x((V,k)=>{var h=1e3,g=h*60,m=g*60,f=m*24,J=f*7,P=f*365.25;k.exports=function(r,n){n=n||{};var e=typeof r;if(e==="string"&&r.length>0)return U(r);if(e==="number"&&isFinite(r))return n.long?G(r):q(r);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(r))};function U(r){if(r=String(r),!(r.length>100)){var n=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(r);if(n){var e=parseFloat(n[1]),l=(n[2]||"ms").toLowerCase();switch(l){case"years":case"year":case"yrs":case"yr":case"y":return e*P;case"weeks":case"week":case"w":return e*J;case"days":case"day":case"d":return e*f;case"hours":case"hour":case"hrs":case"hr":case"h":return e*m;case"minutes":case"minute":case"mins":case"min":case"m":return e*g;case"seconds":case"second":case"secs":case"sec":case"s":return e*h;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return e;default:return}}}}function q(r){var n=Math.abs(r);return n>=f?Math.round(r/f)+"d":n>=m?Math.round(r/m)+"h":n>=g?Math.round(r/g)+"m":n>=h?Math.round(r/h)+"s":r+"ms"}function G(r){var n=Math.abs(r);return n>=f?b(r,n,f,"day"):n>=m?b(r,n,m,"hour"):n>=g?b(r,n,g,"minute"):n>=h?b(r,n,h,"second"):r+" ms"}function b(r,n,e,l){var d=n>=e*1.5;return Math.round(r/e)+" "+l+(d?"s":"")}});var j=x((X,M)=>{function T(r){e.debug=e,e.default=e,e.coerce=D,e.disable=O,e.enable=d,e.enabled=S,e.humanize=E(),e.destroy=L,Object.keys(r).forEach(t=>{e[t]=r[t]}),e.names=[],e.skips=[],e.formatters={};function n(t){let o=0;for(let s=0;s<t.length;s++)o=(o<<5)-o+t.charCodeAt(s),o|=0;return e.colors[Math.abs(o)%e.colors.length]}e.selectColor=n;function e(t){let o,s=null,i,F;function a(...u){if(!a.enabled)return;let C=a,p=Number(new Date),z=p-(o||p);C.diff=z,C.prev=o,C.curr=p,o=p,u[0]=e.coerce(u[0]),typeof u[0]!="string"&&u.unshift("%O");let y=0;u[0]=u[0].replace(/%([a-zA-Z%])/g,(v,N)=>{if(v==="%%")return"%";y++;let I=e.formatters[N];if(typeof I=="function"){let B=u[y];v=I.call(C,B),u.splice(y,1),y--}return v}),e.formatArgs.call(C,u),(C.log||e.log).apply(C,u)}return a.namespace=t,a.useColors=e.useColors(),a.color=e.selectColor(t),a.extend=l,a.destroy=e.destroy,Object.defineProperty(a,"enabled",{enumerable:!0,configurable:!1,get:()=>s!==null?s:(i!==e.namespaces&&(i=e.namespaces,F=e.enabled(t)),F),set:u=>{s=u}}),typeof e.init=="function"&&e.init(a),a}function l(t,o){let s=e(this.namespace+(typeof o>"u"?":":o)+t);return s.log=this.log,s}function d(t){e.save(t),e.namespaces=t,e.names=[],e.skips=[];let o=(typeof t=="string"?t:"").trim().replace(/\s+/g,",").split(",").filter(Boolean);for(let s of o)s[0]==="-"?e.skips.push(s.slice(1)):e.names.push(s)}function A(t,o){let s=0,i=0,F=-1,a=0;for(;s<t.length;)if(i<o.length&&(o[i]===t[s]||o[i]==="*"))o[i]==="*"?(F=i,a=s,i++):(s++,i++);else if(F!==-1)i=F+1,a++,s=a;else return!1;for(;i<o.length&&o[i]==="*";)i++;return i===o.length}function O(){let t=[...e.names,...e.skips.map(o=>"-"+o)].join(",");return e.enable(""),t}function S(t){for(let o of e.skips)if(A(t,o))return!1;for(let o of e.names)if(A(t,o))return!0;return!1}function D(t){return t instanceof Error?t.stack||t.message:t}function L(){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 e.enable(e.load()),e}M.exports=T});var Q=x((c,w)=>{c.formatArgs=_;c.save=W;c.load=$;c.useColors=Z;c.storage=H();c.destroy=(()=>{let r=!1;return()=>{r||(r=!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`."))}})();c.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 Z(){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 r;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&&(r=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(r[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function _(r){if(r[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+r[0]+(this.useColors?"%c ":" ")+"+"+w.exports.humanize(this.diff),!this.useColors)return;let n="color: "+this.color;r.splice(1,0,n,"color: inherit");let e=0,l=0;r[0].replace(/%[a-zA-Z%]/g,d=>{d!=="%%"&&(e++,d==="%c"&&(l=e))}),r.splice(l,0,n)}c.log=console.debug||console.log||(()=>{});function W(r){try{r?c.storage.setItem("debug",r):c.storage.removeItem("debug")}catch{}}function $(){let r;try{r=c.storage.getItem("debug")||c.storage.getItem("DEBUG")}catch{}return!r&&typeof process<"u"&&"env"in process&&(r=process.env.DEBUG),r}function H(){try{return localStorage}catch{}}w.exports=j()(c);var{formatters:K}=w.exports;K.j=function(r){try{return JSON.stringify(r)}catch(n){return"[UnexpectedJSONParseError]: "+n.message}}});export{Q as a};
2
+ //# sourceMappingURL=chunk-TCL6SLDB.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../node_modules/.pnpm/ms@2.1.3/node_modules/ms/index.js", "../node_modules/.pnpm/debug@4.4.3/node_modules/debug/src/common.js", "../node_modules/.pnpm/debug@4.4.3/node_modules/debug/src/browser.js"],
4
+ "sourcesContent": ["/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n", "\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '')\n\t\t\t.trim()\n\t\t\t.replace(/\\s+/g, ',')\n\t\t\t.split(',')\n\t\t\t.filter(Boolean);\n\n\t\tfor (const ns of split) {\n\t\t\tif (ns[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(ns.slice(1));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(ns);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the given string matches a namespace template, honoring\n\t * asterisks as wildcards.\n\t *\n\t * @param {String} search\n\t * @param {String} template\n\t * @return {Boolean}\n\t */\n\tfunction matchesTemplate(search, template) {\n\t\tlet searchIndex = 0;\n\t\tlet templateIndex = 0;\n\t\tlet starIndex = -1;\n\t\tlet matchIndex = 0;\n\n\t\twhile (searchIndex < search.length) {\n\t\t\tif (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) {\n\t\t\t\t// Match character or proceed with wildcard\n\t\t\t\tif (template[templateIndex] === '*') {\n\t\t\t\t\tstarIndex = templateIndex;\n\t\t\t\t\tmatchIndex = searchIndex;\n\t\t\t\t\ttemplateIndex++; // Skip the '*'\n\t\t\t\t} else {\n\t\t\t\t\tsearchIndex++;\n\t\t\t\t\ttemplateIndex++;\n\t\t\t\t}\n\t\t\t} else if (starIndex !== -1) { // eslint-disable-line no-negated-condition\n\t\t\t\t// Backtrack to the last '*' and try to match more characters\n\t\t\t\ttemplateIndex = starIndex + 1;\n\t\t\t\tmatchIndex++;\n\t\t\t\tsearchIndex = matchIndex;\n\t\t\t} else {\n\t\t\t\treturn false; // No match\n\t\t\t}\n\t\t}\n\n\t\t// Handle trailing '*' in template\n\t\twhile (templateIndex < template.length && template[templateIndex] === '*') {\n\t\t\ttemplateIndex++;\n\t\t}\n\n\t\treturn templateIndex === template.length;\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names,\n\t\t\t...createDebug.skips.map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tfor (const skip of createDebug.skips) {\n\t\t\tif (matchesTemplate(name, skip)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (const ns of createDebug.names) {\n\t\t\tif (matchesTemplate(name, ns)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n", "/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\t// eslint-disable-next-line no-return-assign\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n"],
5
+ "mappings": "wCAAA,IAAAA,EAAAC,EAAA,CAAAC,EAAAC,IAAA,CAIA,IAAIC,EAAI,IACJC,EAAID,EAAI,GACRE,EAAID,EAAI,GACRE,EAAID,EAAI,GACRE,EAAID,EAAI,EACRE,EAAIF,EAAI,OAgBZJ,EAAO,QAAU,SAAUO,EAAKC,EAAS,CACvCA,EAAUA,GAAW,CAAC,EACtB,IAAIC,EAAO,OAAOF,EAClB,GAAIE,IAAS,UAAYF,EAAI,OAAS,EACpC,OAAOG,EAAMH,CAAG,EACX,GAAIE,IAAS,UAAY,SAASF,CAAG,EAC1C,OAAOC,EAAQ,KAAOG,EAAQJ,CAAG,EAAIK,EAASL,CAAG,EAEnD,MAAM,IAAI,MACR,wDACE,KAAK,UAAUA,CAAG,CACtB,CACF,EAUA,SAASG,EAAMG,EAAK,CAElB,GADAA,EAAM,OAAOA,CAAG,EACZ,EAAAA,EAAI,OAAS,KAGjB,KAAIC,EAAQ,mIAAmI,KAC7ID,CACF,EACA,GAAKC,EAGL,KAAIC,EAAI,WAAWD,EAAM,CAAC,CAAC,EACvBL,GAAQK,EAAM,CAAC,GAAK,MAAM,YAAY,EAC1C,OAAQL,EAAM,CACZ,IAAK,QACL,IAAK,OACL,IAAK,MACL,IAAK,KACL,IAAK,IACH,OAAOM,EAAIT,EACb,IAAK,QACL,IAAK,OACL,IAAK,IACH,OAAOS,EAAIV,EACb,IAAK,OACL,IAAK,MACL,IAAK,IACH,OAAOU,EAAIX,EACb,IAAK,QACL,IAAK,OACL,IAAK,MACL,IAAK,KACL,IAAK,IACH,OAAOW,EAAIZ,EACb,IAAK,UACL,IAAK,SACL,IAAK,OACL,IAAK,MACL,IAAK,IACH,OAAOY,EAAIb,EACb,IAAK,UACL,IAAK,SACL,IAAK,OACL,IAAK,MACL,IAAK,IACH,OAAOa,EAAId,EACb,IAAK,eACL,IAAK,cACL,IAAK,QACL,IAAK,OACL,IAAK,KACH,OAAOc,EACT,QACE,MACJ,GACF,CAUA,SAASH,EAASI,EAAI,CACpB,IAAIC,EAAQ,KAAK,IAAID,CAAE,EACvB,OAAIC,GAASb,EACJ,KAAK,MAAMY,EAAKZ,CAAC,EAAI,IAE1Ba,GAASd,EACJ,KAAK,MAAMa,EAAKb,CAAC,EAAI,IAE1Bc,GAASf,EACJ,KAAK,MAAMc,EAAKd,CAAC,EAAI,IAE1Be,GAAShB,EACJ,KAAK,MAAMe,EAAKf,CAAC,EAAI,IAEvBe,EAAK,IACd,CAUA,SAASL,EAAQK,EAAI,CACnB,IAAIC,EAAQ,KAAK,IAAID,CAAE,EACvB,OAAIC,GAASb,EACJc,EAAOF,EAAIC,EAAOb,EAAG,KAAK,EAE/Ba,GAASd,EACJe,EAAOF,EAAIC,EAAOd,EAAG,MAAM,EAEhCc,GAASf,EACJgB,EAAOF,EAAIC,EAAOf,EAAG,QAAQ,EAElCe,GAAShB,EACJiB,EAAOF,EAAIC,EAAOhB,EAAG,QAAQ,EAE/Be,EAAK,KACd,CAMA,SAASE,EAAOF,EAAIC,EAAOF,EAAGI,EAAM,CAClC,IAAIC,EAAWH,GAASF,EAAI,IAC5B,OAAO,KAAK,MAAMC,EAAKD,CAAC,EAAI,IAAMI,GAAQC,EAAW,IAAM,GAC7D,ICjKA,IAAAC,EAAAC,EAAA,CAAAC,EAAAC,IAAA,CAMA,SAASC,EAAMC,EAAK,CACnBC,EAAY,MAAQA,EACpBA,EAAY,QAAUA,EACtBA,EAAY,OAASC,EACrBD,EAAY,QAAUE,EACtBF,EAAY,OAASG,EACrBH,EAAY,QAAUI,EACtBJ,EAAY,SAAW,IACvBA,EAAY,QAAUK,EAEtB,OAAO,KAAKN,CAAG,EAAE,QAAQO,GAAO,CAC/BN,EAAYM,CAAG,EAAIP,EAAIO,CAAG,CAC3B,CAAC,EAMDN,EAAY,MAAQ,CAAC,EACrBA,EAAY,MAAQ,CAAC,EAOrBA,EAAY,WAAa,CAAC,EAQ1B,SAASO,EAAYC,EAAW,CAC/B,IAAIC,EAAO,EAEX,QAASC,EAAI,EAAGA,EAAIF,EAAU,OAAQE,IACrCD,GAASA,GAAQ,GAAKA,EAAQD,EAAU,WAAWE,CAAC,EACpDD,GAAQ,EAGT,OAAOT,EAAY,OAAO,KAAK,IAAIS,CAAI,EAAIT,EAAY,OAAO,MAAM,CACrE,CACAA,EAAY,YAAcO,EAS1B,SAASP,EAAYQ,EAAW,CAC/B,IAAIG,EACAC,EAAiB,KACjBC,EACAC,EAEJ,SAASC,KAASC,EAAM,CAEvB,GAAI,CAACD,EAAM,QACV,OAGD,IAAME,EAAOF,EAGPG,EAAO,OAAO,IAAI,IAAM,EACxBC,EAAKD,GAAQP,GAAYO,GAC/BD,EAAK,KAAOE,EACZF,EAAK,KAAON,EACZM,EAAK,KAAOC,EACZP,EAAWO,EAEXF,EAAK,CAAC,EAAIhB,EAAY,OAAOgB,EAAK,CAAC,CAAC,EAEhC,OAAOA,EAAK,CAAC,GAAM,UAEtBA,EAAK,QAAQ,IAAI,EAIlB,IAAII,EAAQ,EACZJ,EAAK,CAAC,EAAIA,EAAK,CAAC,EAAE,QAAQ,gBAAiB,CAACK,EAAOC,IAAW,CAE7D,GAAID,IAAU,KACb,MAAO,IAERD,IACA,IAAMG,EAAYvB,EAAY,WAAWsB,CAAM,EAC/C,GAAI,OAAOC,GAAc,WAAY,CACpC,IAAMC,EAAMR,EAAKI,CAAK,EACtBC,EAAQE,EAAU,KAAKN,EAAMO,CAAG,EAGhCR,EAAK,OAAOI,EAAO,CAAC,EACpBA,GACD,CACA,OAAOC,CACR,CAAC,EAGDrB,EAAY,WAAW,KAAKiB,EAAMD,CAAI,GAExBC,EAAK,KAAOjB,EAAY,KAChC,MAAMiB,EAAMD,CAAI,CACvB,CAEA,OAAAD,EAAM,UAAYP,EAClBO,EAAM,UAAYf,EAAY,UAAU,EACxCe,EAAM,MAAQf,EAAY,YAAYQ,CAAS,EAC/CO,EAAM,OAASU,EACfV,EAAM,QAAUf,EAAY,QAE5B,OAAO,eAAee,EAAO,UAAW,CACvC,WAAY,GACZ,aAAc,GACd,IAAK,IACAH,IAAmB,KACfA,GAEJC,IAAoBb,EAAY,aACnCa,EAAkBb,EAAY,WAC9Bc,EAAed,EAAY,QAAQQ,CAAS,GAGtCM,GAER,IAAKY,GAAK,CACTd,EAAiBc,CAClB,CACD,CAAC,EAGG,OAAO1B,EAAY,MAAS,YAC/BA,EAAY,KAAKe,CAAK,EAGhBA,CACR,CAEA,SAASU,EAAOjB,EAAWmB,EAAW,CACrC,IAAMC,EAAW5B,EAAY,KAAK,WAAa,OAAO2B,EAAc,IAAc,IAAMA,GAAanB,CAAS,EAC9G,OAAAoB,EAAS,IAAM,KAAK,IACbA,CACR,CASA,SAASzB,EAAO0B,EAAY,CAC3B7B,EAAY,KAAK6B,CAAU,EAC3B7B,EAAY,WAAa6B,EAEzB7B,EAAY,MAAQ,CAAC,EACrBA,EAAY,MAAQ,CAAC,EAErB,IAAM8B,GAAS,OAAOD,GAAe,SAAWA,EAAa,IAC3D,KAAK,EACL,QAAQ,OAAQ,GAAG,EACnB,MAAM,GAAG,EACT,OAAO,OAAO,EAEhB,QAAWE,KAAMD,EACZC,EAAG,CAAC,IAAM,IACb/B,EAAY,MAAM,KAAK+B,EAAG,MAAM,CAAC,CAAC,EAElC/B,EAAY,MAAM,KAAK+B,CAAE,CAG5B,CAUA,SAASC,EAAgBC,EAAQC,EAAU,CAC1C,IAAIC,EAAc,EACdC,EAAgB,EAChBC,EAAY,GACZC,EAAa,EAEjB,KAAOH,EAAcF,EAAO,QAC3B,GAAIG,EAAgBF,EAAS,SAAWA,EAASE,CAAa,IAAMH,EAAOE,CAAW,GAAKD,EAASE,CAAa,IAAM,KAElHF,EAASE,CAAa,IAAM,KAC/BC,EAAYD,EACZE,EAAaH,EACbC,MAEAD,IACAC,aAESC,IAAc,GAExBD,EAAgBC,EAAY,EAC5BC,IACAH,EAAcG,MAEd,OAAO,GAKT,KAAOF,EAAgBF,EAAS,QAAUA,EAASE,CAAa,IAAM,KACrEA,IAGD,OAAOA,IAAkBF,EAAS,MACnC,CAQA,SAAShC,GAAU,CAClB,IAAM2B,EAAa,CAClB,GAAG7B,EAAY,MACf,GAAGA,EAAY,MAAM,IAAIQ,GAAa,IAAMA,CAAS,CACtD,EAAE,KAAK,GAAG,EACV,OAAAR,EAAY,OAAO,EAAE,EACd6B,CACR,CASA,SAASzB,EAAQmC,EAAM,CACtB,QAAWC,KAAQxC,EAAY,MAC9B,GAAIgC,EAAgBO,EAAMC,CAAI,EAC7B,MAAO,GAIT,QAAWT,KAAM/B,EAAY,MAC5B,GAAIgC,EAAgBO,EAAMR,CAAE,EAC3B,MAAO,GAIT,MAAO,EACR,CASA,SAAS9B,EAAOuB,EAAK,CACpB,OAAIA,aAAe,MACXA,EAAI,OAASA,EAAI,QAElBA,CACR,CAMA,SAASnB,GAAU,CAClB,QAAQ,KAAK,uIAAuI,CACrJ,CAEA,OAAAL,EAAY,OAAOA,EAAY,KAAK,CAAC,EAE9BA,CACR,CAEAH,EAAO,QAAUC,ICnSjB,IAAA2C,EAAAC,EAAA,CAAAC,EAAAC,IAAA,CAMAD,EAAQ,WAAaE,EACrBF,EAAQ,KAAOG,EACfH,EAAQ,KAAOI,EACfJ,EAAQ,UAAYK,EACpBL,EAAQ,QAAUM,EAAa,EAC/BN,EAAQ,SAAW,IAAM,CACxB,IAAIO,EAAS,GAEb,MAAO,IAAM,CACPA,IACJA,EAAS,GACT,QAAQ,KAAK,uIAAuI,EAEtJ,CACD,GAAG,EAMHP,EAAQ,OAAS,CAChB,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACD,EAWA,SAASK,GAAY,CAIpB,GAAI,OAAO,OAAW,KAAe,OAAO,UAAY,OAAO,QAAQ,OAAS,YAAc,OAAO,QAAQ,QAC5G,MAAO,GAIR,GAAI,OAAO,UAAc,KAAe,UAAU,WAAa,UAAU,UAAU,YAAY,EAAE,MAAM,uBAAuB,EAC7H,MAAO,GAGR,IAAIG,EAKJ,OAAQ,OAAO,SAAa,KAAe,SAAS,iBAAmB,SAAS,gBAAgB,OAAS,SAAS,gBAAgB,MAAM,kBAEtI,OAAO,OAAW,KAAe,OAAO,UAAY,OAAO,QAAQ,SAAY,OAAO,QAAQ,WAAa,OAAO,QAAQ,QAG1H,OAAO,UAAc,KAAe,UAAU,YAAcA,EAAI,UAAU,UAAU,YAAY,EAAE,MAAM,gBAAgB,IAAM,SAASA,EAAE,CAAC,EAAG,EAAE,GAAK,IAEpJ,OAAO,UAAc,KAAe,UAAU,WAAa,UAAU,UAAU,YAAY,EAAE,MAAM,oBAAoB,CAC1H,CAQA,SAASN,EAAWO,EAAM,CAQzB,GAPAA,EAAK,CAAC,GAAK,KAAK,UAAY,KAAO,IAClC,KAAK,WACJ,KAAK,UAAY,MAAQ,KAC1BA,EAAK,CAAC,GACL,KAAK,UAAY,MAAQ,KAC1B,IAAMR,EAAO,QAAQ,SAAS,KAAK,IAAI,EAEpC,CAAC,KAAK,UACT,OAGD,IAAMS,EAAI,UAAY,KAAK,MAC3BD,EAAK,OAAO,EAAG,EAAGC,EAAG,gBAAgB,EAKrC,IAAIC,EAAQ,EACRC,EAAQ,EACZH,EAAK,CAAC,EAAE,QAAQ,cAAeI,GAAS,CACnCA,IAAU,OAGdF,IACIE,IAAU,OAGbD,EAAQD,GAEV,CAAC,EAEDF,EAAK,OAAOG,EAAO,EAAGF,CAAC,CACxB,CAUAV,EAAQ,IAAM,QAAQ,OAAS,QAAQ,MAAQ,IAAM,CAAC,GAQtD,SAASG,EAAKW,EAAY,CACzB,GAAI,CACCA,EACHd,EAAQ,QAAQ,QAAQ,QAASc,CAAU,EAE3Cd,EAAQ,QAAQ,WAAW,OAAO,CAEpC,MAAgB,CAGhB,CACD,CAQA,SAASI,GAAO,CACf,IAAI,EACJ,GAAI,CACH,EAAIJ,EAAQ,QAAQ,QAAQ,OAAO,GAAKA,EAAQ,QAAQ,QAAQ,OAAO,CACxE,MAAgB,CAGhB,CAGA,MAAI,CAAC,GAAK,OAAO,QAAY,KAAe,QAAS,UACpD,EAAI,QAAQ,IAAI,OAGV,CACR,CAaA,SAASM,GAAe,CACvB,GAAI,CAGH,OAAO,YACR,MAAgB,CAGhB,CACD,CAEAL,EAAO,QAAU,IAAoBD,CAAO,EAE5C,GAAM,CAAC,WAAAe,CAAU,EAAId,EAAO,QAM5Bc,EAAW,EAAI,SAAUC,EAAG,CAC3B,GAAI,CACH,OAAO,KAAK,UAAUA,CAAC,CACxB,OAASC,EAAO,CACf,MAAO,+BAAiCA,EAAM,OAC/C,CACD",
6
+ "names": ["require_ms", "__commonJSMin", "exports", "module", "s", "m", "h", "d", "w", "y", "val", "options", "type", "parse", "fmtLong", "fmtShort", "str", "match", "n", "ms", "msAbs", "plural", "name", "isPlural", "require_common", "__commonJSMin", "exports", "module", "setup", "env", "createDebug", "coerce", "disable", "enable", "enabled", "destroy", "key", "selectColor", "namespace", "hash", "i", "prevTime", "enableOverride", "namespacesCache", "enabledCache", "debug", "args", "self", "curr", "ms", "index", "match", "format", "formatter", "val", "extend", "v", "delimiter", "newDebug", "namespaces", "split", "ns", "matchesTemplate", "search", "template", "searchIndex", "templateIndex", "starIndex", "matchIndex", "name", "skip", "require_browser", "__commonJSMin", "exports", "module", "formatArgs", "save", "load", "useColors", "localstorage", "warned", "m", "args", "c", "index", "lastC", "match", "namespaces", "formatters", "v", "error"]
7
+ }
@@ -0,0 +1,13 @@
1
+ import{a as g,e as v,f as d,r as _}from"./chunk-ZQBDNEEV.js";import{template as m}from"solid-js/web";import{spread as k}from"solid-js/web";var D=m('<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>');var N=m('<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">'),E=m('<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">');function Y(){return D()}function b(e){return(()=>{var r=N();return k(r,e,!0,!0),r})()}function Z(e){return(()=>{var r=E();return k(r,e,!0,!0),r})()}import{template as C}from"solid-js/web";import{delegateEvents as M}from"solid-js/web";import{setAttribute as T}from"solid-js/web";import{effect as L}from"solid-js/web";import{insert as f}from"solid-js/web";import{createComponent as l}from"solid-js/web";import{addEventListener as x}from"solid-js/web";import{use as S}from"solid-js/web";import{isValidAutomergeUrl as F}from"@automerge/automerge-repo/slim";import{createDocOfDatatype2 as I,getRegistry as P,isLoadablePlugin as j,isLoadedPlugin as U}from"@inkandswitch/patchwork-plugins";import{createSignal as q,lazy as O,Show as $}from"solid-js";var A=C("<span class=create-new-button__text>Create new"),B=C('<div class=create-new-button-anchor><button type=button class=create-new-button aria-label="create new">');async function z(e,r){if(j(r)&&await P("patchwork:datatype").load(r.id),!U(r))throw new Error("plugin not loaded after loading");let o=await I(r,e),s=o.doc();return{name:r.module.getTitle(s),type:r.id,url:o.url}}var H=O(()=>import("./create-new-menu-EU5KJJ3R.js").then(e=>({default:e.CreateNewMenu})));function R(e){let[r,o]=q(!1);async function s(n){let t=await z(e.repo,n);e.changeFolder(a=>{a.docs.push(t)}),e.clearFilter(),e.open(t),o(!1)}async function h(n){let t=n.trim();if(!F(t))return;let a=await g(e.repo,t);e.changeFolder(i=>{i.docs.push(a)}),e.clearFilter(),e.open(a),o(!1)}let c=0;function y(n){o(!1),d(!0),n.dataTransfer.setData(v,"1"),n.dataTransfer.effectAllowed="all";let t=document.createElement("div");t.style.cssText=`
2
+ position: absolute;
3
+ top: -1000px;
4
+ background: var(--document-list-primary);
5
+ padding: 0.5rem 0.75rem;
6
+ border-radius: var(--document-list-radius);
7
+ font-family: inherit;
8
+ font-size: 0.9rem;
9
+ pointer-events: none;
10
+ color: var(--document-list-primary-line);
11
+ box-shadow: 0 2px 8px rgba(0,0,0,0.1);
12
+ `,t.textContent="new doc",document.body.appendChild(t),n.dataTransfer.setDragImage(t,10,10),setTimeout(()=>t.remove(),0)}let u;return(()=>{var n=B(),t=n.firstChild,a=u;return typeof a=="function"?S(a,n):u=n,x(t,"dragend",()=>{d(!1),_()}),x(t,"dragstart",e.draggable?y:void 0),t.$$click=()=>{performance.now()-c>200&&o(!0)},f(t,l(b,{class:"create-new-button__icon"}),null),f(t,l($,{get when(){return!e.square},get children(){return[" ",A()]}}),null),f(n,l($,{get when(){return r()},get children(){return l(H,{get anchor(){return u.getBoundingClientRect()},onClose:()=>{o(!1),c=performance.now()},onPickDatatype:s,onSubmitUrl:h})}}),null),L(i=>{var p=!!e.square,w=e.draggable;return p!==i.e&&t.classList.toggle("create-new-button--square",i.e=p),w!==i.t&&T(t,"draggable",i.t=w),i},{e:void 0,t:void 0}),n})()}M(["click"]);export{Y as a,Z as b,z as c,R as d};
13
+ //# sourceMappingURL=chunk-TXFTRSLY.js.map
@@ -0,0 +1,7 @@
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, 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 await registry.load(datatype.id);\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 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 _$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", "Show", "_tmpl$", "_$template", "_tmpl$2", "createNew", "repo", "datatype", "isLoadablePlugin", "getRegistry", "isLoadedPlugin", "docHandle", "createDocOfDatatype2", "doc", "CreateNewMenu", "lazy", "m", "CreateNew", "props", "open", "setOpen", "createSignal", "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
+ }
@@ -0,0 +1,2 @@
1
+ import{a as i,c as m}from"./chunk-LJ5XCENG.js";import{template as l}from"solid-js/web";import{delegateEvents as f}from"solid-js/web";import{insert as s}from"solid-js/web";import{createComponent as c}from"solid-js/web";import{effect as _}from"solid-js/web";import{getOwner as d}from"solid-js/web";import{Show as p}from"solid-js";import{render as h}from"solid-js/web";var $=l('<button type=button class="account-bar__button account-bar__avatar"title=Account aria-label=Account><patchwork-view tool-id=contact-avatar>',!0,!1,!1),b=l("<button type=button class=account-bar__button>Packages"),g=l("<footer class=account-bar><button type=button class=account-bar__button>Settings");function v(e){let t=i(e.handle),n=r=>e.element.dispatchEvent(m(r));return(()=>{var r=g(),a=r.firstChild;return s(r,c(p,{get when(){return t.contactUrl},get children(){var o=$(),u=o.firstChild;return o.$$click=()=>n({url:e.handle.url,toolId:"account-picker"}),u._$owner=d(),_(()=>u.docUrl=t.contactUrl),o}}),a),s(r,c(p,{get when(){return t.moduleSettingsUrl},get children(){var o=b();return o.$$click=()=>n({url:t.moduleSettingsUrl,toolId:"packages"}),o}}),a),a.$$click=()=>n({url:e.handle.url,toolId:"frame-configurator"}),r})()}function x(e,t){return h(()=>c(v,{handle:e,get repo(){return t.repo},element:t}),t)}f(["click"]);export{v as a,x as b};
2
+ //# sourceMappingURL=chunk-V62KH27A.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/sideboard/account-bar.tsx"],
4
4
  "sourcesContent": ["import { template as _$template } from \"solid-js/web\";\nimport { delegateEvents as _$delegateEvents } from \"solid-js/web\";\nimport { insert as _$insert } from \"solid-js/web\";\nimport { createComponent as _$createComponent } from \"solid-js/web\";\nimport { effect as _$effect } from \"solid-js/web\";\nimport { getOwner as _$getOwner } from \"solid-js/web\";\nvar _tmpl$ = /*#__PURE__*/_$template(`<button type=button class=\"account-bar__button account-bar__avatar\"title=Account aria-label=Account><patchwork-view tool-id=contact-avatar>`, true, false, false),\n _tmpl$2 = /*#__PURE__*/_$template(`<button type=button class=account-bar__button>Packages`),\n _tmpl$3 = /*#__PURE__*/_$template(`<footer class=account-bar><button type=button class=account-bar__button>Settings`);\nimport { makeDocumentProjection } from \"solid-automerge\";\nimport { Show } from \"solid-js\";\nimport { render } from \"solid-js/web\";\nimport { createOpenEvent } from \"./events.ts\";\nexport function AccountBar(props) {\n const doc = makeDocumentProjection(props.handle);\n const open = detail => props.element.dispatchEvent(createOpenEvent(detail));\n return (() => {\n var _el$ = _tmpl$3(),\n _el$5 = _el$.firstChild;\n _$insert(_el$, _$createComponent(Show, {\n get when() {\n return doc.contactUrl;\n },\n get children() {\n var _el$2 = _tmpl$(),\n _el$3 = _el$2.firstChild;\n _el$2.$$click = () => open({\n url: props.handle.url,\n toolId: \"account-picker\"\n });\n _el$3._$owner = _$getOwner();\n _$effect(() => _el$3.docUrl = doc.contactUrl);\n return _el$2;\n }\n }), _el$5);\n _$insert(_el$, _$createComponent(Show, {\n get when() {\n return doc.moduleSettingsUrl;\n },\n get children() {\n var _el$4 = _tmpl$2();\n _el$4.$$click = () => open({\n url: doc.moduleSettingsUrl,\n toolId: \"packages\"\n });\n return _el$4;\n }\n }), _el$5);\n _el$5.$$click = () => open({\n url: props.handle.url,\n toolId: \"frame-configurator\"\n });\n return _el$;\n })();\n}\nexport function renderAccountBar(handle, element) {\n return render(() => _$createComponent(AccountBar, {\n handle: handle,\n get repo() {\n return element.repo;\n },\n element: element\n }), element);\n}\n_$delegateEvents([\"click\"]);"],
5
- "mappings": "uGAMA,IAAIA,EAAsBC,EAAW,8IAA+I,GAAM,GAAO,EAAK,EACpMC,EAAuBD,EAAW,wDAAwD,EAC1FE,EAAuBF,EAAW,kFAAkF,EAK/G,SAASG,EAAWC,EAAO,CAChC,IAAMC,EAAMC,EAAuBF,EAAM,MAAM,EACzCG,EAAOC,GAAUJ,EAAM,QAAQ,cAAcK,EAAgBD,CAAM,CAAC,EAC1E,OAAQ,IAAM,CACZ,IAAIE,EAAOR,EAAQ,EACjBS,EAAQD,EAAK,WACf,OAAAE,EAASF,EAAMG,EAAkBC,EAAM,CACrC,IAAI,MAAO,CACT,OAAOT,EAAI,UACb,EACA,IAAI,UAAW,CACb,IAAIU,EAAQhB,EAAO,EACjBiB,EAAQD,EAAM,WAChB,OAAAA,EAAM,QAAU,IAAMR,EAAK,CACzB,IAAKH,EAAM,OAAO,IAClB,OAAQ,gBACV,CAAC,EACDY,EAAM,QAAUC,EAAW,EAC3BC,EAAS,IAAMF,EAAM,OAASX,EAAI,UAAU,EACrCU,CACT,CACF,CAAC,EAAGJ,CAAK,EACTC,EAASF,EAAMG,EAAkBC,EAAM,CACrC,IAAI,MAAO,CACT,OAAOT,EAAI,iBACb,EACA,IAAI,UAAW,CACb,IAAIc,EAAQlB,EAAQ,EACpB,OAAAkB,EAAM,QAAU,IAAMZ,EAAK,CACzB,IAAKF,EAAI,kBACT,OAAQ,UACV,CAAC,EACMc,CACT,CACF,CAAC,EAAGR,CAAK,EACTA,EAAM,QAAU,IAAMJ,EAAK,CACzB,IAAKH,EAAM,OAAO,IAClB,OAAQ,oBACV,CAAC,EACMM,CACT,GAAG,CACL,CACO,SAASU,EAAiBC,EAAQC,EAAS,CAChD,OAAOC,EAAO,IAAMV,EAAkBV,EAAY,CAChD,OAAQkB,EACR,IAAI,MAAO,CACT,OAAOC,EAAQ,IACjB,EACA,QAASA,CACX,CAAC,EAAGA,CAAO,CACb,CACAE,EAAiB,CAAC,OAAO,CAAC",
6
- "names": ["_tmpl$", "template", "_tmpl$2", "_tmpl$3", "AccountBar", "props", "doc", "makeDocumentProjection", "open", "detail", "createOpenEvent", "_el$", "_el$5", "insert", "createComponent", "Show", "_el$2", "_el$3", "getOwner", "createRenderEffect", "_el$4", "renderAccountBar", "handle", "element", "render", "delegateEvents"]
5
+ "mappings": "+CAAA,OAAS,YAAYA,MAAkB,eACvC,OAAS,kBAAkBC,MAAwB,eACnD,OAAS,UAAUC,MAAgB,eACnC,OAAS,mBAAmBC,MAAyB,eACrD,OAAS,UAAUC,MAAgB,eACnC,OAAS,YAAYC,MAAkB,eAKvC,OAAS,QAAAC,MAAY,WACrB,OAAS,UAAAC,MAAc,eALvB,IAAIC,EAAsBC,EAAW,8IAA+I,GAAM,GAAO,EAAK,EACpMC,EAAuBD,EAAW,wDAAwD,EAC1FE,EAAuBF,EAAW,kFAAkF,EAK/G,SAASG,EAAWC,EAAO,CAChC,IAAMC,EAAMC,EAAuBF,EAAM,MAAM,EACzCG,EAAOC,GAAUJ,EAAM,QAAQ,cAAcK,EAAgBD,CAAM,CAAC,EAC1E,OAAQ,IAAM,CACZ,IAAIE,EAAOR,EAAQ,EACjBS,EAAQD,EAAK,WACf,OAAAE,EAASF,EAAMG,EAAkBC,EAAM,CACrC,IAAI,MAAO,CACT,OAAOT,EAAI,UACb,EACA,IAAI,UAAW,CACb,IAAIU,EAAQhB,EAAO,EACjBiB,EAAQD,EAAM,WAChB,OAAAA,EAAM,QAAU,IAAMR,EAAK,CACzB,IAAKH,EAAM,OAAO,IAClB,OAAQ,gBACV,CAAC,EACDY,EAAM,QAAUC,EAAW,EAC3BC,EAAS,IAAMF,EAAM,OAASX,EAAI,UAAU,EACrCU,CACT,CACF,CAAC,EAAGJ,CAAK,EACTC,EAASF,EAAMG,EAAkBC,EAAM,CACrC,IAAI,MAAO,CACT,OAAOT,EAAI,iBACb,EACA,IAAI,UAAW,CACb,IAAIc,EAAQlB,EAAQ,EACpB,OAAAkB,EAAM,QAAU,IAAMZ,EAAK,CACzB,IAAKF,EAAI,kBACT,OAAQ,UACV,CAAC,EACMc,CACT,CACF,CAAC,EAAGR,CAAK,EACTA,EAAM,QAAU,IAAMJ,EAAK,CACzB,IAAKH,EAAM,OAAO,IAClB,OAAQ,oBACV,CAAC,EACMM,CACT,GAAG,CACL,CACO,SAASU,EAAiBC,EAAQC,EAAS,CAChD,OAAOC,EAAO,IAAMV,EAAkBV,EAAY,CAChD,OAAQkB,EACR,IAAI,MAAO,CACT,OAAOC,EAAQ,IACjB,EACA,QAASA,CACX,CAAC,EAAGA,CAAO,CACb,CACAE,EAAiB,CAAC,OAAO,CAAC",
6
+ "names": ["_$template", "_$delegateEvents", "_$insert", "_$createComponent", "_$effect", "_$getOwner", "Show", "render", "_tmpl$", "_$template", "_tmpl$2", "_tmpl$3", "AccountBar", "props", "doc", "makeDocumentProjection", "open", "detail", "createOpenEvent", "_el$", "_el$5", "_$insert", "_$createComponent", "Show", "_el$2", "_el$3", "_$getOwner", "_$effect", "_el$4", "renderAccountBar", "handle", "element", "render", "_$delegateEvents"]
7
7
  }
@@ -0,0 +1,2 @@
1
+ import{getRegistry as f,isLoadedPlugin as m}from"@inkandswitch/patchwork-plugins";async function y(t,e){let r=(await t.find(e)).doc(),s=r?.["@patchwork"]?.type??"",c="Untitled";if(s){let l=f("patchwork:datatype"),i=l.get(s);i&&(await l.load(i.id),m(i)&&(c=i.module.getTitle(r)||c))}return{name:c,type:s,url:e}}import{createSignal as p}from"solid-js";var[k,A]=p(!1),[h,w]=p(!1),D="application/x-patchwork-new-doc",[P,C]=p(!1);function v(t){return t.dataTransfer?.types.includes(D)??!1}var n=null;function q(){return n}function g(t,e){if(t){let o=document.querySelector(`[data-dnd-item="${CSS.escape(t.id)}"]`);o&&o.removeAttribute("data-dnd-droplist-state");let r=document.querySelector(`[data-dnd-container="${CSS.escape(t.id)}"]`);r&&r.removeAttribute("data-drop-state")}if(e){let o=document.querySelector(`[data-dnd-item="${CSS.escape(e.id)}"]`);if(o&&o.setAttribute("data-dnd-droplist-state",e.position??""),e.position==="inside"){let r=document.querySelector(`[data-dnd-container="${CSS.escape(e.id)}"]`);r&&r.setAttribute("data-drop-state","inside")}}}var d=null;function M(t){d=t}function U(t){return d!=null&&d===t}var a=new Map;function u(t,e){let o=document.querySelector(`[data-dnd-item="${CSS.escape(t)}"]`);o&&(e?o.setAttribute("aria-checked","true"):o.removeAttribute("aria-checked"))}function $(t,e){a.set(t,e),u(t,!0)}function I(t){a.delete(t),u(t,!1)}function O(){for(let t of a.keys())u(t,!1);a.clear()}function E(t){for(let e of t){let o=document.querySelector(`[data-dnd-item="${CSS.escape(e)}"]`);o&&o.setAttribute("data-dnd-dragging","")}}function L(){for(let t of document.querySelectorAll("[data-dnd-dragging]"))t.removeAttribute("data-dnd-dragging")}function N(t,e){let o=e.getBoundingClientRect();return t-o.top<o.height/2}function R(){g(n,null),n=null}function j(t){let e=n;!e&&!t||e&&t&&e.id===t.id&&e.position===t.position||(g(e,t),n=t)}export{y as a,A as b,h as c,w as d,D as e,C as f,v as g,q as h,M as i,U as j,a as k,$ as l,I as m,O as n,E as o,L as p,N as q,R as r,j as s};
2
+ //# sourceMappingURL=chunk-ZQBDNEEV.js.map
@@ -0,0 +1,7 @@
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\nexport type DropPosition = \"above\" | \"below\" | \"inside\" | null;\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: { id: string; position: DropPosition } | null = null;\n\nexport function getDropTarget() {\n return currentDropTarget;\n}\n\nfunction updateDropTargetDOM(\n oldTarget: { id: string; position: DropPosition } | null,\n newTarget: { id: string; position: DropPosition } | null\n) {\n if (oldTarget) {\n const item = document.querySelector(\n `[data-dnd-item=\"${CSS.escape(oldTarget.id)}\"]`\n );\n if (item) item.removeAttribute(\"data-dnd-droplist-state\");\n const container = document.querySelector(\n `[data-dnd-container=\"${CSS.escape(oldTarget.id)}\"]`\n );\n if (container) container.removeAttribute(\"data-drop-state\");\n }\n if (newTarget) {\n const item = document.querySelector(\n `[data-dnd-item=\"${CSS.escape(newTarget.id)}\"]`\n );\n if (item)\n item.setAttribute(\"data-dnd-droplist-state\", newTarget.position ?? \"\");\n if (newTarget.position === \"inside\") {\n const container = document.querySelector(\n `[data-dnd-container=\"${CSS.escape(newTarget.id)}\"]`\n );\n if (container) container.setAttribute(\"data-drop-state\", \"inside\");\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 const el = document.querySelector(`[data-dnd-item=\"${CSS.escape(id)}\"]`);\n if (el) {\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 const el = document.querySelector(`[data-dnd-item=\"${CSS.escape(id)}\"]`);\n if (el) 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(\n target: { id: string; position: DropPosition } | null\n) {\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 ) {\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", "currentDropTarget", "getDropTarget", "updateDropTargetDOM", "oldTarget", "newTarget", "item", "container", "dragOriginView", "setDragOriginView", "element", "isSameDragOriginView", "dragstack", "setDragChecked", "id", "checked", "el", "addToDragstack", "removeFromDragstack", "clearDragstack", "setDragSourceItems", "ids", "clearDragSourceItems", "isAbove", "clientY", "rect", "clearDropTarget", "setDropTarget", "target", "current"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{a as _,c as d,d as g}from"./chunk-6LWWNFKU.js";import{c as y}from"./chunk-TXFTRSLY.js";import{a as h}from"./chunk-ZQBDNEEV.js";import"./chunk-FW4363Y4.js";import{template as D}from"solid-js/web";import{delegateEvents as U}from"solid-js/web";import{createComponent as c}from"solid-js/web";import{use as v}from"solid-js/web";import{effect as P}from"solid-js/web";import{isValidAutomergeUrl as p}from"@automerge/automerge-repo/slim";import{createSignal as w,For as x,Show as L}from"solid-js";var S=D('<div class=create-new-filter><input class=create-new-filter__input placeholder="Filter or paste automerge url\u2026">'),b=D('<div class="document-list-item document-list-placeholder"><span class=document-list-item__name>New document');function k(t){let s=_(o=>!o.unlisted),[l,m]=w(""),[a,r]=w(0),u=()=>p(l().trim()),f=()=>{let o=l().toLowerCase();return[...o?s.filter(e=>e.name.toLowerCase().includes(o)):s].sort((e,i)=>e.name.localeCompare(i.name))},C=()=>(u()?1:0)+f().length;function $(){let o=a();if(u()){if(o===0){t.onSubmitUrl(l());return}let n=f()[o-1];n&&t.onPickDatatype(n)}else{let n=f()[o];n&&t.onPickDatatype(n)}}return[(()=>{var o=S(),n=o.firstChild;return v(e=>{requestAnimationFrame(()=>e.focus())},n),n.addEventListener("paste",e=>{let i=e.clipboardData?.getData("text/plain")??"";p(i.trim())&&(e.preventDefault(),m(i.trim()),r(0))}),n.$$keydown=e=>{if(e.key==="Enter")e.preventDefault(),$();else if(e.key==="ArrowDown")e.preventDefault(),r(i=>Math.min(i+1,C()-1));else if(e.key==="ArrowUp")e.preventDefault(),r(i=>Math.max(i-1,0));else if(e.key==="Escape")return;e.stopPropagation()},n.$$input=e=>{m(e.target.value),r(0)},P(()=>n.value=l()),o})(),c(L,{get when(){return u()},get children(){return c(g,{get classList(){return{"popmenu__item--highlighted":a()===0}},onSelect:()=>t.onSubmitUrl(l()),onPointerMove:()=>r(0),children:"Add by URL"})}}),c(x,{get each(){return f()},children:(o,n)=>c(g,{get classList(){return{"popmenu__item--highlighted":a()===n()+(u()?1:0)}},onSelect:()=>t.onPickDatatype(o),onPointerMove:()=>r(n()+(u()?1:0)),get children(){return o.name}})})]}function V(t){return c(d,{get anchor(){return t.anchor},class:"popmenu__content create-new-menu__content",autofocus:!1,get onClose(){return t.onClose},get children(){return c(k,{get onPickDatatype(){return t.onPickDatatype},get onSubmitUrl(){return t.onSubmitUrl}})}})}function j(t){let s;async function l(a){let r=await y(t.repo,a);t.clearFilter(),t.onCreate(r)}async function m(a){let r=a.trim();if(!p(r))return;let u=await h(t.repo,r);t.clearFilter(),t.onCreate(u)}return[(()=>{var a=b(),r=s;return typeof r=="function"?v(r,a):s=a,a})(),c(d,{get anchor(){return s.getBoundingClientRect()},class:"popmenu__content create-new-menu__content",autofocus:!1,get onClose(){return t.onDismiss},get children(){return c(k,{onPickDatatype:l,onSubmitUrl:m})}})]}U(["input","keydown"]);export{V as CreateNewMenu,j as NewDocPlaceholder};
2
+ //# sourceMappingURL=create-new-menu-EU5KJJ3R.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/sideboard/create-new-menu.tsx"],
4
+ "sourcesContent": ["import { template as _$template } from \"solid-js/web\";\nimport { delegateEvents as _$delegateEvents } from \"solid-js/web\";\nimport { createComponent as _$createComponent } from \"solid-js/web\";\nimport { use as _$use } from \"solid-js/web\";\nimport { effect as _$effect } from \"solid-js/web\";\nvar _tmpl$ = /*#__PURE__*/_$template(`<div class=create-new-filter><input class=create-new-filter__input placeholder=\"Filter or paste automerge url\u2026\">`),\n _tmpl$2 = /*#__PURE__*/_$template(`<div class=\"document-list-item document-list-placeholder\"><span class=document-list-item__name>New document`);\nimport { isValidAutomergeUrl } from \"@automerge/automerge-repo/slim\";\nimport { createSignal, For, Show } from \"solid-js\";\nimport { docLinkFromUrl } from \"./lib/doc-link.ts\";\nimport { useFilteredDatatypes } from \"./lib/solid-plugins\";\nimport { Menu, MenuItem } from \"./popmenu.tsx\";\nimport { createNew } from \"./create-new.tsx\";\nfunction DatatypeMenuContent(props) {\n const datatypes = useFilteredDatatypes(item => !item.unlisted);\n const [query, setQuery] = createSignal(\"\");\n const [highlightIndex, setHighlightIndex] = createSignal(0);\n const isUrl = () => isValidAutomergeUrl(query().trim());\n const filteredDatatypes = () => {\n const q = query().toLowerCase();\n const matching = q ? datatypes.filter(d => d.name.toLowerCase().includes(q)) : datatypes;\n return [...matching].sort((a, b) => a.name.localeCompare(b.name));\n };\n const itemCount = () => (isUrl() ? 1 : 0) + filteredDatatypes().length;\n function selectHighlighted() {\n const idx = highlightIndex();\n if (isUrl()) {\n if (idx === 0) {\n props.onSubmitUrl(query());\n return;\n }\n const datatype = filteredDatatypes()[idx - 1];\n if (datatype) props.onPickDatatype(datatype);\n } else {\n const datatype = filteredDatatypes()[idx];\n if (datatype) props.onPickDatatype(datatype);\n }\n }\n return [(() => {\n var _el$ = _tmpl$(),\n _el$2 = _el$.firstChild;\n _$use(el => {\n requestAnimationFrame(() => el.focus());\n }, _el$2);\n _el$2.addEventListener(\"paste\", e => {\n const text = e.clipboardData?.getData(\"text/plain\") ?? \"\";\n if (isValidAutomergeUrl(text.trim())) {\n e.preventDefault();\n setQuery(text.trim());\n setHighlightIndex(0);\n }\n });\n _el$2.$$keydown = e => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n selectHighlighted();\n } else if (e.key === \"ArrowDown\") {\n e.preventDefault();\n setHighlightIndex(i => Math.min(i + 1, itemCount() - 1));\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault();\n setHighlightIndex(i => Math.max(i - 1, 0));\n } else if (e.key === \"Escape\") {\n return;\n }\n e.stopPropagation();\n };\n _el$2.$$input = e => {\n setQuery(e.target.value);\n setHighlightIndex(0);\n };\n _$effect(() => _el$2.value = query());\n return _el$;\n })(), _$createComponent(Show, {\n get when() {\n return isUrl();\n },\n get children() {\n return _$createComponent(MenuItem, {\n get classList() {\n return {\n \"popmenu__item--highlighted\": highlightIndex() === 0\n };\n },\n onSelect: () => props.onSubmitUrl(query()),\n onPointerMove: () => setHighlightIndex(0),\n children: \"Add by URL\"\n });\n }\n }), _$createComponent(For, {\n get each() {\n return filteredDatatypes();\n },\n children: (datatype, i) => _$createComponent(MenuItem, {\n get classList() {\n return {\n \"popmenu__item--highlighted\": highlightIndex() === i() + (isUrl() ? 1 : 0)\n };\n },\n onSelect: () => props.onPickDatatype(datatype),\n onPointerMove: () => setHighlightIndex(i() + (isUrl() ? 1 : 0)),\n get children() {\n return datatype.name;\n }\n })\n })];\n}\nexport function CreateNewMenu(props) {\n return _$createComponent(Menu, {\n get anchor() {\n return props.anchor;\n },\n \"class\": \"popmenu__content create-new-menu__content\",\n autofocus: false,\n get onClose() {\n return props.onClose;\n },\n get children() {\n return _$createComponent(DatatypeMenuContent, {\n get onPickDatatype() {\n return props.onPickDatatype;\n },\n get onSubmitUrl() {\n return props.onSubmitUrl;\n }\n });\n }\n });\n}\nexport function NewDocPlaceholder(props) {\n let row;\n async function pickDatatype(datatype) {\n const freshy = await createNew(props.repo, datatype);\n props.clearFilter();\n props.onCreate(freshy);\n }\n async function submitUrl(url) {\n const trimmed = url.trim();\n if (!isValidAutomergeUrl(trimmed)) return;\n const docLink = await docLinkFromUrl(props.repo, trimmed);\n props.clearFilter();\n props.onCreate(docLink);\n }\n return [(() => {\n var _el$3 = _tmpl$2();\n var _ref$ = row;\n typeof _ref$ === \"function\" ? _$use(_ref$, _el$3) : row = _el$3;\n return _el$3;\n })(), _$createComponent(Menu, {\n get anchor() {\n return row.getBoundingClientRect();\n },\n \"class\": \"popmenu__content create-new-menu__content\",\n autofocus: false,\n get onClose() {\n return props.onDismiss;\n },\n get children() {\n return _$createComponent(DatatypeMenuContent, {\n onPickDatatype: pickDatatype,\n onSubmitUrl: submitUrl\n });\n }\n })];\n}\n_$delegateEvents([\"input\", \"keydown\"]);"],
5
+ "mappings": "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",
6
+ "names": ["_$template", "_$delegateEvents", "_$createComponent", "_$use", "_$effect", "isValidAutomergeUrl", "createSignal", "For", "Show", "_tmpl$", "_$template", "_tmpl$2", "DatatypeMenuContent", "props", "datatypes", "useFilteredDatatypes", "item", "query", "setQuery", "createSignal", "highlightIndex", "setHighlightIndex", "isUrl", "isValidAutomergeUrl", "filteredDatatypes", "q", "d", "a", "b", "itemCount", "selectHighlighted", "idx", "datatype", "_el$", "_el$2", "_$use", "el", "text", "_$effect", "_$createComponent", "Show", "MenuItem", "For", "i", "CreateNewMenu", "Menu", "NewDocPlaceholder", "row", "pickDatatype", "freshy", "createNew", "submitUrl", "url", "trimmed", "docLink", "docLinkFromUrl", "_el$3", "_ref$", "_$delegateEvents"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{b as a,c as b}from"./chunk-KHS2XJKP.js";import"./chunk-TXFTRSLY.js";import"./chunk-NO6SJFVH.js";import"./chunk-ZQBDNEEV.js";import"./chunk-LJ5XCENG.js";import"./chunk-TCL6SLDB.js";import"./chunk-FW4363Y4.js";export{a as DocumentListPanel,b as renderDocumentListPanel};
2
+ //# sourceMappingURL=document-list-panel-WDIVYTZU.js.map
@@ -1,2 +1,2 @@
1
- @layer package{:root,:host,[theme]{--document-list-fill: var( --studio-chrome, light-dark( color-mix(in oklch, var(--studio-secondary-fill, var(--studio-secondary, #33ccf8)), var(--studio-fill, white) 80%), black ) );--document-list-fill-offset: color-mix( in oklab, var(--document-list-fill), oklch(1 0 0 / 1) 10% );--document-list-line: var(--studio-line, black);--document-list-line-offset-20: var(--studio-line-offset-20, #333);--document-list-widget-fill: var(--studio-fill, white);--document-list-widget-line: var(--document-list-line);--document-list-padding-x: .5rem;--document-list-radius: .275rem;--placeholder-line: var(--studio-line-offset-50, #808e80);--document-list-search-line: var(--studio-line, #000);--document-list-primary: var(--studio-primary-fill, var(--studio-primary, #35f7ca));--document-list-primary-line: var(--studio-primary-line, var(--studio-line, black));--document-list-selection-fill: var(--document-list-primary);--document-list-selection-line: var(--document-list-primary-line);--document-list-create-new-fill: var(--studio-fill, white);--document-list-create-new-line: color-mix( in oklch, var(--document-list-primary), var(--studio-line, black) 30% );--document-list-create-new-border-line: color-mix( in oklch, var(--document-list-primary), var(--document-list-create-new-fill) 50% );--document-list-create-new-shadow-color: color-mix( in oklch, var(--document-list-fill), var(--document-list-line) 10% );--document-list-family: var(--studio-family-sans, system-ui, sans-serif);--document-list-family-code: var(--studio-family-code, ui-monospace, monospace);--document-list-muted: var(--studio-line-offset-40, #666);--document-list-border: var(--studio-fill-offset-10, #e5e5e5);--document-list-border-strong: var(--studio-fill-offset-20, #ccc);--document-list-divider: var(--studio-chrome-offset-20, #d4d4d4);--document-list-added: var(--studio-added, #35f7ca);--document-list-danger: var(--studio-danger-text, var(--studio-danger, #ff6a90));--document-list-toggle-hover: color-mix(in oklch, var(--studio-line, black), transparent 93%);--account-bar-fill: var(--studio-chrome-offset-10);--account-bar-line: var(--studio-chrome-line, var(--studio-line, black))}}button{background:none;border:none;font:inherit;color:inherit;cursor:pointer;padding:0}.document-list,.document-list *{box-sizing:border-box}.document-list{background:var(--document-list-fill);display:flex;height:100%;flex-direction:column;gap:.75rem;font-family:var(--document-list-family);padding-inline:var(--document-list-padding-x);padding-top:var(--document-list-top-margin, env(safe-area-inset-top, 0px));padding-bottom:env(safe-area-inset-bottom);--depth: 0;.document-list-close-button{display:flex;align-items:center;align-self:flex-start;padding:.25rem;margin-top:12px;margin-left:-2px;background:transparent;border:none;cursor:pointer;opacity:.5;color:var(--document-list-line)}.document-list-close-button:hover{opacity:1}}.create-new-button{display:flex;padding-inline:.75rem;padding-block:.375rem;border:none;border-radius:var(--document-list-radius);background:var(--document-list-create-new-fill);color:var(--document-list-line);font-weight:400;align-items:center;justify-content:start;white-space:nowrap;font-size:.9rem;text-align:left;gap:1ex;position:relative;flex-shrink:0}.create-new-button__icon{stroke:var(--document-list-line-offset-20)}.create-new-button--square{width:2rem;height:2rem;padding:0;justify-content:center;cursor:grab;color:color-mix(in oklch,var(--document-list-line),transparent 35%);transition:color .12s ease,box-shadow .12s ease}.create-new-button--square:hover{color:var(--document-list-line);box-shadow:var(--studio-shadow, 0 1px 3px rgb(0 0 0 / .1), 0 1px 2px rgb(0 0 0 / .06))}.create-new-button--square:active{cursor:grabbing}.create-new-button-anchor{position:relative;display:flex;flex-shrink:0}.create-new-button-anchor__trigger{position:absolute;inset:0;width:100%;height:100%;padding:0;border:0;background:none;pointer-events:none}.document-list__toolbar{position:sticky;top:0;z-index:3;display:flex;align-items:center;gap:.375rem;padding:.375rem;background:var(--document-list-widget-fill);border-bottom:1px solid var(--document-list-divider)}.document-list__toolbar .document-list__filter-container{flex:1;min-width:0}.icon{height:1em}.document-list__filter-container{position:relative;font-size:.875rem;border-radius:var(--document-list-radius);.search-icon{height:1em;top:.4lh;left:2px;position:absolute;z-index:1;stroke:var(--placeholder-line)}&:focus-within{.search-icon{stroke:var(--document-list-line)}}}.document-list__filter{width:100%;background:var(--document-list-widget-fill);color:var(--document-list-widget-line);padding-left:2em;padding-right:.75rem;padding-top:.375rem;padding-bottom:.375rem;border:none;border-radius:var(--document-list-radius);&::placeholder{color:var(--placeholder-line)}&:focus-visible{outline-color:var(--sidebar-widget-line);outline-offset:1px;box-shadow:0 0 0 4px #fff;border-radius:var(--document-list-radius)}}.document-list__doclist{--doclist-padding-x: .75rem;display:flex;flex-direction:column;border-radius:var(--document-list-radius);box-shadow:0 1px 2px #0014320d;width:100%;max-height:100%;overflow:scroll;transition:background-color .2s ease,box-shadow .2s ease;&::-webkit-scrollbar{display:none}}.document-list__doclist--drag-over{background:color-mix(in oklch,var(--document-list-primary),transparent 95%);box-shadow:0 0 0 2px var(--document-list-primary) inset,0 1px 2px #0014320d}.document-list-item{display:flex;gap:.25ch;padding-inline:var(--doclist-padding-x);padding-block:.5rem;font-weight:400;color:var(--sidebar-widget-line);cursor:default;position:relative;&:focus-visible{outline-color:#000;outline-offset:-2px;box-shadow:0 0 0 4px var(--document-list-widget-fill);border-radius:var(--document-list-radius)}&:active{outline:0;box-shadow:0}&[aria-selected=true]{background:var(--document-list-selection-fill);color:var(--document-list-selection-line);.document-list-folder__toggle path{stroke:var(--document-list-selection-line)}.document-list__doclist>&:first-child{border-top-left-radius:var(--document-list-radius);border-top-right-radius:var(--document-list-radius)}.document-list__doclist>&:last-child{border-bottom-left-radius:var(--document-list-radius);border-bottom-right-radius:var(--document-list-radius)}}&[aria-checked=true]{outline:2px dashed color-mix(in oklch,var(--document-list-line),transparent 50%);outline-offset:-4px}&[data-dnd-dragging]{opacity:.4}&[data-dnd-springload]{animation:doclist-springload .75s ease-out .75s both}&[data-dnd-droplist-state]:before{content:"";position:absolute;left:0;margin-left:calc(var(--depth) * 1.75rem);right:0;height:2px;background:var(--document-list-line)}&[data-dnd-droplist-state=above]:before{top:-1px}&[data-dnd-droplist-state=below]:before{bottom:-1px}}@keyframes doclist-springload{0%{background:transparent}to{background:color-mix(in oklch,var(--document-list-primary),transparent 40%)}}.document-list-folder[data-drop-state=inside]{outline:2px solid var(--document-list-primary);outline-offset:-2px;border-radius:var(--document-list-radius);background:color-mix(in oklch,var(--document-list-primary),transparent 50%);>.document-list-item:before{content:"";position:absolute;left:0;right:0;height:2px;background:var(--document-list-line);bottom:0}[data-dnd-droplist-state]:before{display:none}}.document-list__loading{display:flex;flex-direction:column}.document-list-item--loading{pointer-events:none;padding-left:calc(1.8rem * var(--depth) + var(--doclist-padding-x))}.document-list__loading .document-list-item__skeleton{flex:0 0 auto}.document-list-item__skeleton{flex:1;min-width:0;max-width:12rem;height:.75em;border-radius:4px;background:linear-gradient(90deg,var(--placeholder-line) 25%,color-mix(in oklch,var(--placeholder-line),transparent 65%) 50%,var(--placeholder-line) 75%);background-size:200% 100%;opacity:.35;animation:doclist-skeleton-shimmer 1.2s ease-in-out infinite}@keyframes doclist-skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.document-list-item__name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;flex:1;min-width:0;&:is(input){padding:4px;margin:-4px}}.document-list-folder__toggle{margin-left:-.75ch;padding-inline:.25ch;&:hover{background:var(--document-list-toggle-hover)}& svg{width:14px;height:14px}& path{stroke:var(--document-list-line-offset-20)}}.document-list-folder__contents--hidden{display:none}.document-list-folder__circular-ref{padding:.5rem;padding-left:calc(2.2rem * var(--depth));color:var(--document-list-muted);font-style:italic;font-size:.9em}.document-list__item{content-visibility:auto;contain-intrinsic-size:auto 2.25rem}.document-list__item--invisible{display:none}.document-list__item--visible,.document-list__item--invisible:has(.document-list__item--visible){display:block}.document-list-folder__contents .document-list-item{padding-left:calc(1.8rem * var(--depth))}.document-list-widget{width:100%;background:var(--document-list-widget-fill);color:var(--document-list-widget-line)}.document-list-widget:empty{display:none}.document-list-placeholder{font-style:italic;color:var(--placeholder-line)}.popmenu__content,.popmenu__sub-content,.popmenu__content *,.popmenu__sub-content *{box-sizing:border-box}.popmenu__trigger,.popmenu__sub-trigger{cursor:default;user-select:none;width:100%;text-align:left}.popmenu__sub-content,.popmenu__content{z-index:2;min-width:220px;max-height:min(400px,50vh);overflow-y:auto;padding:4px;background-color:var(--document-list-widget-fill);font-size:.8rem;border-radius:6px;border:1px solid var(--document-list-border);box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;outline:none;transform-origin:var(--kb-menu-content-transform-origin);animation:contentHide .25s ease-in forwards}.popmenu__content[data-expanded],.popmenu__sub-content[data-expanded]{animation:contentShow .25s ease-out}.popmenu__item,.popmenu__checkbox-item,.popmenu__radio-item,.popmenu__sub-trigger{font-size:.8rem;line-height:1;color:var(--document-list-widget-line);border-radius:4px;display:flex;align-items:center;height:32px;padding-inline:12px;padding-block:6px;position:relative;user-select:none;outline:none;cursor:default}.popmenu__sub-trigger[data-expanded]{background-color:var(--document-list-fill-offset);color:var(--document-list-line)}.popmenu__item[data-disabled],.popmenu__checkbox-item[data-disabled],.popmenu__radio-item[data-disabled],.popmenu__sub-trigger[data-disabled]{color:var(--document-list-muted);opacity:.5;pointer-events:none}.popmenu__item[data-highlighted],.popmenu__checkbox-item[data-highlighted],.popmenu__radio-item[data-highlighted],.popmenu__sub-trigger[data-highlighted]{outline:none;background-color:var(--document-list-selection-fill);color:var(--document-list-selection-line)}@keyframes contentShow{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}@keyframes contentHide{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.96)}}.popmenu__item--highlighted{outline:none;background-color:var(--document-list-selection-fill);color:var(--document-list-selection-line)}.create-new-menu__content{scrollbar-gutter:stable;scrollbar-color:var(--document-list-border-strong) var(--document-list-widget-fill);scrollbar-width:thin}.create-new-menu__content::-webkit-scrollbar{width:10px}.create-new-menu__content::-webkit-scrollbar-track{background:var(--document-list-widget-fill)}.create-new-menu__content::-webkit-scrollbar-thumb{background:var(--document-list-border-strong);border:2px solid var(--document-list-widget-fill);border-radius:999px}.create-new-menu__content::-webkit-scrollbar-thumb:hover{background:var(--document-list-muted)}.create-new-filter{padding:4px}.create-new-filter__input{width:100%;box-sizing:border-box;padding:6px 8px;font-size:.8rem;border:1px solid var(--document-list-border-strong);border-radius:4px;background:var(--document-list-widget-fill);color:var(--document-list-widget-line);outline:none}.create-new-filter__input:focus{border-color:var(--document-list-primary)}.create-new-filter__input::placeholder{color:var(--document-list-muted)}.sideboard{display:flex;flex-direction:column;height:100%;min-height:0}.sideboard>.document-list{flex:1;height:auto;min-height:0;padding-bottom:0}.account-bar{container-type:inline-size;display:flex;align-items:center;gap:1rem;min-height:4rem;background:var(--account-bar-fill);color:var(--account-bar-line);border-top:1px solid var(--document-list-divider);padding-block:.25rem;padding-bottom:calc(.25rem + env(safe-area-inset-bottom));padding-left:calc(env(safe-area-inset-left) + var(--document-list-padding-x));padding-right:calc(env(safe-area-inset-right) + var(--document-list-padding-x));justify-content:space-between}.account-bar__button{display:flex;align-items:center;border:1px solid transparent;padding-inline:.25rem;padding-block:.125rem;border-radius:3px;background:transparent;color:inherit;font:inherit;white-space:nowrap;cursor:pointer}.account-bar__button:hover{border-color:var(--document-list-divider)}.account-bar__avatar patchwork-view{display:block;width:100%;height:100%}
1
+ @layer package{:root,:host,[theme]{--document-list-fill: var( --studio-chrome, light-dark( color-mix(in oklch, var(--studio-secondary-fill, var(--studio-secondary, #33ccf8)), var(--studio-fill, white) 80%), black ) );--document-list-fill-offset: color-mix( in oklab, var(--document-list-fill), oklch(1 0 0 / 1) 10% );--document-list-line: var(--studio-line, black);--document-list-line-offset-20: var(--studio-line-offset-20, #333);--document-list-widget-fill: var(--studio-fill, white);--document-list-widget-line: var(--document-list-line);--document-list-padding-x: .5rem;--document-list-radius: .275rem;--placeholder-line: var(--studio-line-offset-50, #808e80);--document-list-search-line: var(--studio-line, #000);--document-list-primary: var(--studio-primary-fill, var(--studio-primary, #35f7ca));--document-list-primary-line: var(--studio-primary-line, var(--studio-line, black));--document-list-selection-fill: var(--document-list-primary);--document-list-selection-line: var(--document-list-primary-line);--document-list-create-new-fill: var(--studio-fill, white);--document-list-create-new-line: color-mix( in oklch, var(--document-list-primary), var(--studio-line, black) 30% );--document-list-create-new-border-line: color-mix( in oklch, var(--document-list-primary), var(--document-list-create-new-fill) 50% );--document-list-create-new-shadow-color: color-mix( in oklch, var(--document-list-fill), var(--document-list-line) 10% );--document-list-family: var(--studio-family-sans, system-ui, sans-serif);--document-list-family-code: var(--studio-family-code, ui-monospace, monospace);--document-list-muted: var(--studio-line-offset-40, #666);--document-list-border: var(--studio-fill-offset-10, #e5e5e5);--document-list-border-strong: var(--studio-fill-offset-20, #ccc);--document-list-divider: var(--studio-chrome-offset-20, #d4d4d4);--document-list-added: var(--studio-added, #35f7ca);--document-list-danger: var(--studio-danger-text, var(--studio-danger, #ff6a90));--document-list-toggle-hover: color-mix(in oklch, var(--studio-line, black), transparent 93%);--account-bar-fill: var(--studio-chrome-offset-10);--account-bar-line: var(--studio-chrome-line, var(--studio-line, black))}}button{background:none;border:none;font:inherit;color:inherit;cursor:pointer;padding:0}.document-list,.document-list *{box-sizing:border-box}.document-list{background:var(--document-list-fill);display:flex;height:100%;flex-direction:column;gap:.75rem;font-family:var(--document-list-family);padding-inline:var(--document-list-padding-x);padding-top:var(--document-list-top-margin, env(safe-area-inset-top, 0px));padding-bottom:env(safe-area-inset-bottom);--depth: 0;.document-list-close-button{display:flex;align-items:center;align-self:flex-start;padding:.25rem;margin-top:12px;margin-left:-2px;background:transparent;border:none;cursor:pointer;opacity:.5;color:var(--document-list-line)}.document-list-close-button:hover{opacity:1}}.create-new-button{display:flex;padding-inline:.75rem;padding-block:.375rem;border:none;border-radius:var(--document-list-radius);background:var(--document-list-create-new-fill);color:var(--document-list-line);font-weight:400;align-items:center;justify-content:start;white-space:nowrap;font-size:.9rem;text-align:left;gap:1ex;position:relative;flex-shrink:0}.create-new-button__icon{stroke:var(--document-list-line-offset-20)}.create-new-button--square{width:2rem;height:2rem;padding:0;justify-content:center;cursor:grab;color:color-mix(in oklch,var(--document-list-line),transparent 35%);transition:color .12s ease,box-shadow .12s ease}.create-new-button--square:hover{color:var(--document-list-line);box-shadow:var(--studio-shadow, 0 1px 3px rgb(0 0 0 / .1), 0 1px 2px rgb(0 0 0 / .06))}.create-new-button--square:active{cursor:grabbing}.create-new-button-anchor{position:relative;display:flex;flex-shrink:0}.document-list__toolbar{position:sticky;top:0;z-index:3;display:flex;align-items:center;gap:.375rem;padding:.375rem;background:var(--document-list-widget-fill);border-bottom:1px solid var(--document-list-divider)}.document-list__toolbar .document-list__filter-container{flex:1;min-width:0}.icon{height:1em}.document-list__filter-container{position:relative;font-size:.875rem;border-radius:var(--document-list-radius);.search-icon{height:1em;top:.4lh;left:2px;position:absolute;z-index:1;stroke:var(--placeholder-line)}&:focus-within{.search-icon{stroke:var(--document-list-line)}}}.document-list__filter{width:100%;background:var(--document-list-widget-fill);color:var(--document-list-widget-line);padding-left:2em;padding-right:.75rem;padding-top:.375rem;padding-bottom:.375rem;border:none;border-radius:var(--document-list-radius);&::placeholder{color:var(--placeholder-line)}&:focus-visible{outline-color:var(--sidebar-widget-line);outline-offset:1px;box-shadow:0 0 0 4px #fff;border-radius:var(--document-list-radius)}}.document-list__doclist{--doclist-padding-x: .75rem;display:flex;flex-direction:column;border-radius:var(--document-list-radius);box-shadow:0 1px 2px #0014320d;width:100%;max-height:100%;overflow:scroll;transition:background-color .2s ease,box-shadow .2s ease;&::-webkit-scrollbar{display:none}}.document-list__doclist--drag-over{background:color-mix(in oklch,var(--document-list-primary),transparent 95%);box-shadow:0 0 0 2px var(--document-list-primary) inset,0 1px 2px #0014320d}.document-list-item{display:flex;gap:.25ch;padding-inline:var(--doclist-padding-x);padding-block:.5rem;font-weight:400;color:var(--sidebar-widget-line);cursor:default;position:relative;&:focus-visible{outline-color:#000;outline-offset:-2px;box-shadow:0 0 0 4px var(--document-list-widget-fill);border-radius:var(--document-list-radius)}&:active{outline:0;box-shadow:0}&[aria-selected=true]{background:var(--document-list-selection-fill);color:var(--document-list-selection-line);.document-list-folder__toggle path{stroke:var(--document-list-selection-line)}.document-list__doclist>&:first-child{border-top-left-radius:var(--document-list-radius);border-top-right-radius:var(--document-list-radius)}.document-list__doclist>&:last-child{border-bottom-left-radius:var(--document-list-radius);border-bottom-right-radius:var(--document-list-radius)}}&[aria-checked=true]{outline:2px dashed color-mix(in oklch,var(--document-list-line),transparent 50%);outline-offset:-4px}&[data-dnd-dragging]{opacity:.4}&[data-dnd-springload]{animation:doclist-springload .75s ease-out .75s both}&[data-dnd-droplist-state]:before{content:"";position:absolute;left:0;margin-left:calc(var(--depth) * 1.75rem);right:0;height:2px;background:var(--document-list-line)}&[data-dnd-droplist-state=above]:before{top:-1px}&[data-dnd-droplist-state=below]:before{bottom:-1px}}@keyframes doclist-springload{0%{background:transparent}to{background:color-mix(in oklch,var(--document-list-primary),transparent 40%)}}.document-list-folder[data-drop-state=inside]{outline:2px solid var(--document-list-primary);outline-offset:-2px;border-radius:var(--document-list-radius);background:color-mix(in oklch,var(--document-list-primary),transparent 50%);>.document-list-item:before{content:"";position:absolute;left:0;right:0;height:2px;background:var(--document-list-line);bottom:0}[data-dnd-droplist-state]:before{display:none}}.document-list__loading{display:flex;flex-direction:column}.document-list-item--loading{pointer-events:none;padding-left:calc(1.8rem * var(--depth) + var(--doclist-padding-x))}.document-list__loading .document-list-item__skeleton{flex:0 0 auto}.document-list-item__skeleton{flex:1;min-width:0;max-width:12rem;height:.75em;border-radius:4px;background:linear-gradient(90deg,var(--placeholder-line) 25%,color-mix(in oklch,var(--placeholder-line),transparent 65%) 50%,var(--placeholder-line) 75%);background-size:200% 100%;opacity:.35;animation:doclist-skeleton-shimmer 1.2s ease-in-out infinite}@keyframes doclist-skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.document-list-item__name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;flex:1;min-width:0;&:is(input){padding:4px;margin:-4px}}.document-list-folder__toggle{margin-left:-.75ch;padding-inline:.25ch;&:hover{background:var(--document-list-toggle-hover)}& svg{width:14px;height:14px}& path{stroke:var(--document-list-line-offset-20)}}.document-list-folder__contents--hidden{display:none}.document-list-folder__circular-ref{padding:.5rem;padding-left:calc(2.2rem * var(--depth));color:var(--document-list-muted);font-style:italic;font-size:.9em}.document-list__item{content-visibility:auto;contain-intrinsic-size:auto 2.25rem}.document-list__item--invisible{display:none}.document-list__item--visible,.document-list__item--invisible:has(.document-list__item--visible){display:block}.document-list-folder__contents .document-list-item{padding-left:calc(1.8rem * var(--depth))}.document-list-widget{width:100%;background:var(--document-list-widget-fill);color:var(--document-list-widget-line)}.document-list-widget:empty{display:none}.document-list-placeholder{font-style:italic;color:var(--placeholder-line)}.popmenu__content,.popmenu__sub-content,.popmenu__content *,.popmenu__sub-content *{box-sizing:border-box}.popmenu__trigger,.popmenu__sub-trigger{cursor:default;user-select:none;width:100%;text-align:left}.popmenu__sub-content,.popmenu__content{z-index:2;min-width:220px;max-height:min(400px,50vh);overflow-y:auto;padding:4px;background-color:var(--document-list-widget-fill);font-size:.8rem;border-radius:6px;border:1px solid var(--document-list-border);box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;outline:none;transform-origin:var(--kb-menu-content-transform-origin);animation:contentHide .25s ease-in forwards}.popmenu__content[data-expanded],.popmenu__sub-content[data-expanded]{animation:contentShow .25s ease-out}.popmenu__item,.popmenu__checkbox-item,.popmenu__radio-item,.popmenu__sub-trigger{font-size:.8rem;line-height:1;color:var(--document-list-widget-line);border-radius:4px;display:flex;align-items:center;height:32px;padding-inline:12px;padding-block:6px;position:relative;user-select:none;outline:none;cursor:default}.popmenu__sub-trigger[data-expanded]{background-color:var(--document-list-fill-offset);color:var(--document-list-line)}.popmenu__item[data-disabled],.popmenu__checkbox-item[data-disabled],.popmenu__radio-item[data-disabled],.popmenu__sub-trigger[data-disabled]{color:var(--document-list-muted);opacity:.5;pointer-events:none}.popmenu__item[data-highlighted],.popmenu__checkbox-item[data-highlighted],.popmenu__radio-item[data-highlighted],.popmenu__sub-trigger[data-highlighted]{outline:none;background-color:var(--document-list-selection-fill);color:var(--document-list-selection-line)}@keyframes contentShow{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}@keyframes contentHide{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.96)}}.popmenu__item--highlighted{outline:none;background-color:var(--document-list-selection-fill);color:var(--document-list-selection-line)}.create-new-menu__content{scrollbar-gutter:stable;scrollbar-color:var(--document-list-border-strong) var(--document-list-widget-fill);scrollbar-width:thin}.create-new-menu__content::-webkit-scrollbar{width:10px}.create-new-menu__content::-webkit-scrollbar-track{background:var(--document-list-widget-fill)}.create-new-menu__content::-webkit-scrollbar-thumb{background:var(--document-list-border-strong);border:2px solid var(--document-list-widget-fill);border-radius:999px}.create-new-menu__content::-webkit-scrollbar-thumb:hover{background:var(--document-list-muted)}.create-new-filter{padding:4px}.create-new-filter__input{width:100%;box-sizing:border-box;padding:6px 8px;font-size:.8rem;border:1px solid var(--document-list-border-strong);border-radius:4px;background:var(--document-list-widget-fill);color:var(--document-list-widget-line);outline:none}.create-new-filter__input:focus{border-color:var(--document-list-primary)}.create-new-filter__input::placeholder{color:var(--document-list-muted)}.sideboard{display:flex;flex-direction:column;height:100%;min-height:0}.sideboard>.document-list{flex:1;height:auto;min-height:0;padding-bottom:0}.account-bar{container-type:inline-size;display:flex;align-items:center;gap:1rem;min-height:4rem;background:var(--account-bar-fill);color:var(--account-bar-line);border-top:1px solid var(--document-list-divider);padding-block:.25rem;padding-bottom:calc(.25rem + env(safe-area-inset-bottom));padding-left:calc(env(safe-area-inset-left) + var(--document-list-padding-x));padding-right:calc(env(safe-area-inset-right) + var(--document-list-padding-x));justify-content:space-between}.account-bar__button{display:flex;align-items:center;border:1px solid transparent;padding-inline:.25rem;padding-block:.125rem;border-radius:3px;background:transparent;color:inherit;font:inherit;white-space:nowrap;cursor:pointer}.account-bar__button:hover{border-color:var(--document-list-divider)}.account-bar__avatar patchwork-view{display:block;width:100%;height:100%}
2
2
  /*# sourceMappingURL=index.css.map */
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/index.css"],
4
- "sourcesContent": ["@layer package {\n:root,\n:host,\n[theme] {\n --document-list-fill: var(\n --studio-chrome,\n light-dark(\n color-mix(in oklch, var(--studio-secondary-fill, var(--studio-secondary, #33ccf8)), var(--studio-fill, white) 80%),\n black\n )\n );\n --document-list-fill-offset: color-mix(\n in oklab,\n var(--document-list-fill),\n oklch(1 0 0 / 1) 10%\n );\n --document-list-line: var(--studio-line, black);\n --document-list-line-offset-20: var(--studio-line-offset-20, #333);\n --document-list-widget-fill: var(--studio-fill, white);\n --document-list-widget-line: var(--document-list-line);\n\n --document-list-padding-x: 0.5rem;\n\n --document-list-radius: 0.275rem;\n --placeholder-line: var(--studio-line-offset-50, #808e80);\n --document-list-search-line: var(--studio-line, #000);\n\n --document-list-primary: var(--studio-primary-fill, var(--studio-primary, #35f7ca));\n --document-list-primary-line: var(--studio-primary-line, var(--studio-line, black));\n --document-list-selection-fill: var(--document-list-primary);\n --document-list-selection-line: var(--document-list-primary-line);\n\n --document-list-create-new-fill: var(--studio-fill, white);\n --document-list-create-new-line: color-mix(\n in oklch,\n var(--document-list-primary),\n var(--studio-line, black) 30%\n );\n --document-list-create-new-border-line: color-mix(\n in oklch,\n var(--document-list-primary),\n var(--document-list-create-new-fill) 50%\n );\n --document-list-create-new-shadow-color: color-mix(\n in oklch,\n var(--document-list-fill),\n var(--document-list-line) 10%\n );\n\n --document-list-family: var(--studio-family-sans, system-ui, sans-serif);\n --document-list-family-code: var(--studio-family-code, ui-monospace, monospace);\n --document-list-muted: var(--studio-line-offset-40, #666);\n --document-list-border: var(--studio-fill-offset-10, #e5e5e5);\n --document-list-border-strong: var(--studio-fill-offset-20, #ccc);\n /* subtle divider on the document-list's chrome surface - the same base-theme\n token the patchwork-frame sidebar divider uses (chrome mixed toward the\n chrome ink, so it tracks the palette and reads correctly light/dark). */\n --document-list-divider: var(--studio-chrome-offset-20, #d4d4d4);\n --document-list-added: var(--studio-added, #35f7ca);\n --document-list-danger: var(--studio-danger-text, var(--studio-danger, #ff6a90));\n --document-list-toggle-hover: color-mix(in oklch, var(--studio-line, black), transparent 93%);\n --account-bar-fill: var(--studio-chrome-offset-10);\n /* ink on the account-bar's chrome surface: rides the chrome ink ramp, not\n --document-list-line (which is content ink and tracks the list surface). */\n --account-bar-line: var(--studio-chrome-line, var(--studio-line, black));\n}\n}\n\nbutton {\n background: none;\n border: none;\n font: inherit;\n color: inherit;\n cursor: pointer;\n padding: 0;\n}\n\n.document-list,\n.document-list * {\n box-sizing: border-box;\n}\n\n.document-list {\n background: var(--document-list-fill);\n display: flex;\n height: 100%;\n flex-direction: column;\n gap: 0.75rem;\n font-family: var(--document-list-family);\n padding-inline: var(--document-list-padding-x);\n /* Space above the doclist. Defaults to just the top safe-area inset; hosts\n like patchwork-frame override --document-list-top-margin to also clear their\n own header. Declared via the var() fallback (not on :host) so an ancestor's\n value can cascade in. */\n padding-top: var(--document-list-top-margin, env(safe-area-inset-top, 0px));\n padding-bottom: env(safe-area-inset-bottom);\n --depth: 0;\n .document-list-close-button {\n display: flex;\n align-items: center;\n align-self: flex-start;\n padding: 0.25rem;\n margin-top: 12px;\n margin-left: -2px;\n background: transparent;\n border: none;\n cursor: pointer;\n opacity: 0.5;\n color: var(--document-list-line);\n }\n\n .document-list-close-button:hover {\n opacity: 1;\n }\n}\n\n.create-new-button {\n display: flex;\n padding-inline: 0.75rem;\n padding-block: 0.375rem;\n border: none;\n border-radius: var(--document-list-radius);\n background: var(--document-list-create-new-fill);\n color: var(--document-list-line);\n font-weight: 400;\n align-items: center;\n justify-content: start;\n white-space: nowrap;\n font-size: 0.9rem;\n text-align: left;\n gap: 1ex;\n position: relative;\n flex-shrink: 0;\n}\n\n.create-new-button__icon {\n stroke: var(--document-list-line-offset-20);\n}\n\n/* square, icon-only variant used in the doclist toolbar; also the drag handle\n for creating a doc at a specific spot. */\n.create-new-button--square {\n width: 2rem;\n height: 2rem;\n padding: 0;\n justify-content: center;\n cursor: grab;\n /* icon rides a little paler than the full ink at rest */\n color: color-mix(in oklch, var(--document-list-line), transparent 35%);\n transition:\n color 0.12s ease,\n box-shadow 0.12s ease;\n}\n\n/* darken and grow a little buttony shadow on hover */\n.create-new-button--square:hover {\n color: var(--document-list-line);\n box-shadow: var(--studio-shadow, 0 1px 3px rgb(0 0 0 / 0.1), 0 1px 2px rgb(0 0 0 / 0.06));\n}\n\n.create-new-button--square:active {\n cursor: grabbing;\n}\n\n/* the visible button handles click + drag; a 0-size aria-hidden Kobalte trigger\n overlays it purely to anchor the dropdown menu. */\n.create-new-button-anchor {\n position: relative;\n display: flex;\n flex-shrink: 0;\n}\n\n.create-new-button-anchor__trigger {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n padding: 0;\n border: 0;\n background: none;\n pointer-events: none;\n}\n\n/* sticky toolbar pinned to the top of the scrolling doclist: square new-doc\n button + filter, laid out horizontally. */\n.document-list__toolbar {\n position: sticky;\n top: 0;\n z-index: 3;\n display: flex;\n align-items: center;\n gap: 0.375rem;\n padding: 0.375rem;\n background: var(--document-list-widget-fill);\n border-bottom: 1px solid var(--document-list-divider);\n}\n\n.document-list__toolbar .document-list__filter-container {\n flex: 1;\n min-width: 0;\n}\n\n.icon {\n height: 1em;\n}\n\n.document-list__filter-container {\n position: relative;\n font-size: 0.875rem;\n border-radius: var(--document-list-radius);\n .search-icon {\n height: 1em;\n top: 0.4lh;\n left: 2px;\n position: absolute;\n z-index: 1;\n stroke: var(--placeholder-line);\n }\n &:focus-within {\n .search-icon {\n stroke: var(--document-list-line);\n }\n }\n}\n\n.document-list__filter {\n width: 100%;\n\n background: var(--document-list-widget-fill);\n color: var(--document-list-widget-line);\n\n padding-left: 2em;\n padding-right: 0.75rem;\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n border: none;\n border-radius: var(--document-list-radius);\n\n &::placeholder {\n color: var(--placeholder-line);\n }\n\n &:focus-visible {\n outline-color: var(--sidebar-widget-line);\n outline-offset: 1px;\n box-shadow: 0 0 0 4px #fff;\n border-radius: var(--document-list-radius);\n }\n}\n\n.document-list__doclist {\n --doclist-padding-x: 0.75rem;\n display: flex;\n flex-direction: column;\n border-radius: var(--document-list-radius);\n box-shadow: 0 1px 2px rgba(0, 20, 50, 0.05);\n width: 100%;\n max-height: 100%;\n overflow: scroll;\n transition:\n background-color 0.2s ease,\n box-shadow 0.2s ease;\n\n &::-webkit-scrollbar {\n display: none;\n }\n}\n\n.document-list__doclist--drag-over {\n background: color-mix(in oklch, var(--document-list-primary), transparent 95%);\n box-shadow:\n 0 0 0 2px var(--document-list-primary) inset,\n 0 1px 2px rgba(0, 20, 50, 0.05);\n}\n\n.document-list-item {\n display: flex;\n gap: 0.25ch;\n padding-inline: var(--doclist-padding-x);\n padding-block: 0.5rem;\n font-weight: 400;\n color: var(--sidebar-widget-line);\n cursor: default;\n position: relative;\n\n &:focus-visible {\n outline-color: #000;\n outline-offset: -2px;\n box-shadow: 0 0 0 4px var(--document-list-widget-fill);\n border-radius: var(--document-list-radius);\n }\n\n &:active {\n outline: 0;\n box-shadow: 0;\n }\n\n &[aria-selected=\"true\"] {\n background: var(--document-list-selection-fill);\n color: var(--document-list-selection-line);\n .document-list-folder__toggle path {\n stroke: var(--document-list-selection-line);\n }\n .document-list__doclist > &:first-child {\n border-top-left-radius: var(--document-list-radius);\n border-top-right-radius: var(--document-list-radius);\n }\n .document-list__doclist > &:last-child {\n border-bottom-left-radius: var(--document-list-radius);\n border-bottom-right-radius: var(--document-list-radius);\n }\n }\n &[aria-checked=\"true\"] {\n outline: 2px dashed\n color-mix(in oklch, var(--document-list-line), transparent 50%);\n outline-offset: -4px;\n }\n &[data-dnd-dragging] {\n opacity: 0.4;\n }\n /* Spring-load: hovering a drag over this row opens the document after\n SPRING_LOAD_MS (see item.tsx). The highlight only fades in for the second\n half of the hold, so quick pass-overs never flash an animation. */\n &[data-dnd-springload] {\n animation: doclist-springload 0.75s ease-out 0.75s both;\n }\n &[data-dnd-droplist-state]::before {\n content: \"\";\n position: absolute;\n left: 0;\n margin-left: calc(var(--depth) * 1.75rem);\n right: 0;\n height: 2px;\n background: var(--document-list-line);\n }\n &[data-dnd-droplist-state=\"above\"]::before {\n top: -1px;\n }\n &[data-dnd-droplist-state=\"below\"]::before {\n bottom: -1px;\n }\n}\n\n@keyframes doclist-springload {\n from {\n background: transparent;\n }\n to {\n background: color-mix(\n in oklch,\n var(--document-list-primary),\n transparent 40%\n );\n }\n}\n\n.document-list-folder[data-drop-state=\"inside\"] {\n outline: 2px solid var(--document-list-primary);\n outline-offset: -2px;\n border-radius: var(--document-list-radius);\n background: color-mix(in oklch, var(--document-list-primary), transparent 50%);\n > .document-list-item::before {\n content: \"\";\n position: absolute;\n left: 0;\n right: 0;\n height: 2px;\n background: var(--document-list-line);\n bottom: 0;\n }\n [data-dnd-droplist-state]::before {\n display: none;\n }\n}\n\n.document-list__loading {\n display: flex;\n flex-direction: column;\n}\n\n.document-list-item--loading {\n pointer-events: none;\n padding-left: calc(1.8rem * var(--depth) + var(--doclist-padding-x));\n}\n\n/* In the loading-box, each skeleton keeps its own (inline) width so the stack\n reads as a list of distinct items rather than identical full-width bars. */\n.document-list__loading .document-list-item__skeleton {\n flex: 0 0 auto;\n}\n\n.document-list-item__skeleton {\n flex: 1;\n min-width: 0;\n max-width: 12rem;\n height: 0.75em;\n border-radius: 4px;\n background: linear-gradient(\n 90deg,\n var(--placeholder-line) 25%,\n color-mix(in oklch, var(--placeholder-line), transparent 65%) 50%,\n var(--placeholder-line) 75%\n );\n background-size: 200% 100%;\n opacity: 0.35;\n animation: doclist-skeleton-shimmer 1.2s ease-in-out infinite;\n}\n\n@keyframes doclist-skeleton-shimmer {\n from {\n background-position: 200% 0;\n }\n to {\n background-position: -200% 0;\n }\n}\n\n.document-list-item__name {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n display: block;\n flex: 1;\n min-width: 0;\n &:is(input) {\n padding: 4px;\n margin: -4px;\n }\n}\n\n.document-list-folder__toggle {\n margin-left: -0.75ch;\n padding-inline: 0.25ch;\n &:hover {\n background: var(--document-list-toggle-hover);\n }\n\n & svg {\n width: 14px;\n height: 14px;\n }\n\n & path {\n stroke: var(--document-list-line-offset-20);\n }\n}\n\n.document-list-folder__contents--hidden {\n display: none;\n}\n\n.document-list-folder__circular-ref {\n padding: 0.5rem;\n padding-left: calc(2.2rem * var(--depth));\n color: var(--document-list-muted);\n font-style: italic;\n font-size: 0.9em;\n}\n\n.document-list__item {\n content-visibility: auto;\n contain-intrinsic-size: auto 2.25rem;\n}\n\n.document-list__item--invisible {\n display: none;\n}\n\n.document-list__item--visible,\n.document-list__item--invisible:has(.document-list__item--visible) {\n display: block;\n}\n\n.document-list-folder__contents .document-list-item {\n padding-left: calc(1.8rem * var(--depth));\n}\n\n.document-list-widget {\n width: 100%;\n background: var(--document-list-widget-fill);\n color: var(--document-list-widget-line);\n}\n\n.document-list-widget:empty {\n display: none;\n}\n\n/* the pending \"New document\" row created by dropping the new-doc button:\n renders like a normal list item, but italic and faded. */\n.document-list-placeholder {\n font-style: italic;\n color: var(--placeholder-line);\n}\n\n/* The menu content is portalled to document.body, so it misses the\n .document-list border-box rule. Without it, width:100% + padding makes\n sub-triggers overflow the menu horizontally, and hover-focus then scrolls\n the (overflow:auto) menu sideways, shifting its content to the left. */\n.popmenu__content,\n.popmenu__sub-content,\n.popmenu__content *,\n.popmenu__sub-content * {\n box-sizing: border-box;\n}\n\n.popmenu__trigger,\n.popmenu__sub-trigger {\n cursor: default;\n user-select: none;\n width: 100%;\n text-align: left;\n}\n\n.popmenu__sub-content,\n.popmenu__content {\n z-index: 2;\n min-width: 220px;\n max-height: min(400px, 50vh);\n overflow-y: auto;\n padding: 4px;\n background-color: var(--document-list-widget-fill);\n font-size: 0.8rem;\n border-radius: 6px;\n border: 1px solid var(--document-list-border);\n box-shadow:\n 0 4px 6px -1px rgb(0 0 0 / 0.1),\n 0 2px 4px -2px rgb(0 0 0 / 0.1);\n outline: none;\n transform-origin: var(--kb-menu-content-transform-origin);\n animation: contentHide 250ms ease-in forwards;\n}\n.popmenu__content[data-expanded],\n.popmenu__sub-content[data-expanded] {\n animation: contentShow 250ms ease-out;\n}\n.popmenu__item,\n.popmenu__checkbox-item,\n.popmenu__radio-item,\n.popmenu__sub-trigger {\n font-size: 0.8rem;\n line-height: 1;\n color: var(--document-list-widget-line);\n border-radius: 4px;\n display: flex;\n align-items: center;\n height: 32px;\n padding-inline: 12px;\n padding-block: 6px;\n position: relative;\n user-select: none;\n outline: none;\n cursor: default;\n}\n.popmenu__sub-trigger[data-expanded] {\n background-color: var(--document-list-fill-offset);\n color: var(--document-list-line);\n}\n.popmenu__item[data-disabled],\n.popmenu__checkbox-item[data-disabled],\n.popmenu__radio-item[data-disabled],\n.popmenu__sub-trigger[data-disabled] {\n color: var(--document-list-muted);\n opacity: 0.5;\n pointer-events: none;\n}\n.popmenu__item[data-highlighted],\n.popmenu__checkbox-item[data-highlighted],\n.popmenu__radio-item[data-highlighted],\n.popmenu__sub-trigger[data-highlighted] {\n outline: none;\n background-color: var(--document-list-selection-fill);\n color: var(--document-list-selection-line);\n}\n@keyframes contentShow {\n from {\n opacity: 0;\n transform: scale(0.96);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n@keyframes contentHide {\n from {\n opacity: 1;\n transform: scale(1);\n }\n to {\n opacity: 0;\n transform: scale(0.96);\n }\n}\n\n.popmenu__item--highlighted {\n outline: none;\n background-color: var(--document-list-selection-fill);\n color: var(--document-list-selection-line);\n}\n\n.create-new-menu__content {\n scrollbar-gutter: stable;\n scrollbar-color: var(--document-list-border-strong) var(--document-list-widget-fill);\n scrollbar-width: thin;\n}\n\n.create-new-menu__content::-webkit-scrollbar {\n width: 10px;\n}\n\n.create-new-menu__content::-webkit-scrollbar-track {\n background: var(--document-list-widget-fill);\n}\n\n.create-new-menu__content::-webkit-scrollbar-thumb {\n background: var(--document-list-border-strong);\n border: 2px solid var(--document-list-widget-fill);\n border-radius: 999px;\n}\n\n.create-new-menu__content::-webkit-scrollbar-thumb:hover {\n background: var(--document-list-muted);\n}\n\n.create-new-filter {\n padding: 4px;\n}\n\n.create-new-filter__input {\n width: 100%;\n box-sizing: border-box;\n padding: 6px 8px;\n font-size: 0.8rem;\n border: 1px solid var(--document-list-border-strong);\n border-radius: 4px;\n background: var(--document-list-widget-fill);\n color: var(--document-list-widget-line);\n outline: none;\n}\n\n.create-new-filter__input:focus {\n border-color: var(--document-list-primary);\n}\n\n.create-new-filter__input::placeholder {\n color: var(--document-list-muted);\n}\n\n/* Combined chee/sideboard tool: the document list with the account bar pinned\n below it. The document-list panel fills; the bar sits at the bottom. */\n.sideboard {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n}\n\n.sideboard > .document-list {\n flex: 1;\n height: auto;\n min-height: 0;\n padding-bottom: 0;\n}\n\n/* The account bar: avatar (account picker), packages, settings. Usable as its\n own tool or pinned to the bottom of the combined sideboard. */\n.account-bar {\n container-type: inline-size;\n display: flex;\n align-items: center;\n gap: 1rem;\n min-height: 4rem;\n background: var(--account-bar-fill);\n color: var(--account-bar-line);\n border-top: 1px solid var(--document-list-divider);\n padding-block: 0.25rem;\n padding-bottom: calc(0.25rem + env(safe-area-inset-bottom));\n padding-left: calc(env(safe-area-inset-left) + var(--document-list-padding-x));\n padding-right: calc(env(safe-area-inset-right) + var(--document-list-padding-x));\n justify-content: space-between;\n}\n\n.account-bar__button {\n display: flex;\n align-items: center;\n border: 1px solid transparent;\n padding-inline: 0.25rem;\n padding-block: 0.125rem;\n border-radius: 3px;\n background: transparent;\n color: inherit;\n font: inherit;\n white-space: nowrap;\n cursor: pointer;\n}\n\n.account-bar__button:hover {\n border-color: var(--document-list-divider);\n}\n\n.account-bar__avatar patchwork-view {\n display: block;\n width: 100%;\n height: 100%;\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["@layer package {\n:root,\n:host,\n[theme] {\n --document-list-fill: var(\n --studio-chrome,\n light-dark(\n color-mix(in oklch, var(--studio-secondary-fill, var(--studio-secondary, #33ccf8)), var(--studio-fill, white) 80%),\n black\n )\n );\n --document-list-fill-offset: color-mix(\n in oklab,\n var(--document-list-fill),\n oklch(1 0 0 / 1) 10%\n );\n --document-list-line: var(--studio-line, black);\n --document-list-line-offset-20: var(--studio-line-offset-20, #333);\n --document-list-widget-fill: var(--studio-fill, white);\n --document-list-widget-line: var(--document-list-line);\n\n --document-list-padding-x: 0.5rem;\n\n --document-list-radius: 0.275rem;\n --placeholder-line: var(--studio-line-offset-50, #808e80);\n --document-list-search-line: var(--studio-line, #000);\n\n --document-list-primary: var(--studio-primary-fill, var(--studio-primary, #35f7ca));\n --document-list-primary-line: var(--studio-primary-line, var(--studio-line, black));\n --document-list-selection-fill: var(--document-list-primary);\n --document-list-selection-line: var(--document-list-primary-line);\n\n --document-list-create-new-fill: var(--studio-fill, white);\n --document-list-create-new-line: color-mix(\n in oklch,\n var(--document-list-primary),\n var(--studio-line, black) 30%\n );\n --document-list-create-new-border-line: color-mix(\n in oklch,\n var(--document-list-primary),\n var(--document-list-create-new-fill) 50%\n );\n --document-list-create-new-shadow-color: color-mix(\n in oklch,\n var(--document-list-fill),\n var(--document-list-line) 10%\n );\n\n --document-list-family: var(--studio-family-sans, system-ui, sans-serif);\n --document-list-family-code: var(--studio-family-code, ui-monospace, monospace);\n --document-list-muted: var(--studio-line-offset-40, #666);\n --document-list-border: var(--studio-fill-offset-10, #e5e5e5);\n --document-list-border-strong: var(--studio-fill-offset-20, #ccc);\n /* subtle divider on the document-list's chrome surface - the same base-theme\n token the patchwork-frame sidebar divider uses (chrome mixed toward the\n chrome ink, so it tracks the palette and reads correctly light/dark). */\n --document-list-divider: var(--studio-chrome-offset-20, #d4d4d4);\n --document-list-added: var(--studio-added, #35f7ca);\n --document-list-danger: var(--studio-danger-text, var(--studio-danger, #ff6a90));\n --document-list-toggle-hover: color-mix(in oklch, var(--studio-line, black), transparent 93%);\n --account-bar-fill: var(--studio-chrome-offset-10);\n /* ink on the account-bar's chrome surface: rides the chrome ink ramp, not\n --document-list-line (which is content ink and tracks the list surface). */\n --account-bar-line: var(--studio-chrome-line, var(--studio-line, black));\n}\n}\n\nbutton {\n background: none;\n border: none;\n font: inherit;\n color: inherit;\n cursor: pointer;\n padding: 0;\n}\n\n.document-list,\n.document-list * {\n box-sizing: border-box;\n}\n\n.document-list {\n background: var(--document-list-fill);\n display: flex;\n height: 100%;\n flex-direction: column;\n gap: 0.75rem;\n font-family: var(--document-list-family);\n padding-inline: var(--document-list-padding-x);\n /* Space above the doclist. Defaults to just the top safe-area inset; hosts\n like patchwork-frame override --document-list-top-margin to also clear their\n own header. Declared via the var() fallback (not on :host) so an ancestor's\n value can cascade in. */\n padding-top: var(--document-list-top-margin, env(safe-area-inset-top, 0px));\n padding-bottom: env(safe-area-inset-bottom);\n --depth: 0;\n .document-list-close-button {\n display: flex;\n align-items: center;\n align-self: flex-start;\n padding: 0.25rem;\n margin-top: 12px;\n margin-left: -2px;\n background: transparent;\n border: none;\n cursor: pointer;\n opacity: 0.5;\n color: var(--document-list-line);\n }\n\n .document-list-close-button:hover {\n opacity: 1;\n }\n}\n\n.create-new-button {\n display: flex;\n padding-inline: 0.75rem;\n padding-block: 0.375rem;\n border: none;\n border-radius: var(--document-list-radius);\n background: var(--document-list-create-new-fill);\n color: var(--document-list-line);\n font-weight: 400;\n align-items: center;\n justify-content: start;\n white-space: nowrap;\n font-size: 0.9rem;\n text-align: left;\n gap: 1ex;\n position: relative;\n flex-shrink: 0;\n}\n\n.create-new-button__icon {\n stroke: var(--document-list-line-offset-20);\n}\n\n/* square, icon-only variant used in the doclist toolbar; also the drag handle\n for creating a doc at a specific spot. */\n.create-new-button--square {\n width: 2rem;\n height: 2rem;\n padding: 0;\n justify-content: center;\n cursor: grab;\n /* icon rides a little paler than the full ink at rest */\n color: color-mix(in oklch, var(--document-list-line), transparent 35%);\n transition:\n color 0.12s ease,\n box-shadow 0.12s ease;\n}\n\n/* darken and grow a little buttony shadow on hover */\n.create-new-button--square:hover {\n color: var(--document-list-line);\n box-shadow: var(--studio-shadow, 0 1px 3px rgb(0 0 0 / 0.1), 0 1px 2px rgb(0 0 0 / 0.06));\n}\n\n.create-new-button--square:active {\n cursor: grabbing;\n}\n\n/* the visible button handles click + drag; a 0-size aria-hidden Kobalte trigger\n overlays it purely to anchor the dropdown menu. */\n.create-new-button-anchor {\n position: relative;\n display: flex;\n flex-shrink: 0;\n}\n\n\n/* sticky toolbar pinned to the top of the scrolling doclist: square new-doc\n button + filter, laid out horizontally. */\n.document-list__toolbar {\n position: sticky;\n top: 0;\n z-index: 3;\n display: flex;\n align-items: center;\n gap: 0.375rem;\n padding: 0.375rem;\n background: var(--document-list-widget-fill);\n border-bottom: 1px solid var(--document-list-divider);\n}\n\n.document-list__toolbar .document-list__filter-container {\n flex: 1;\n min-width: 0;\n}\n\n.icon {\n height: 1em;\n}\n\n.document-list__filter-container {\n position: relative;\n font-size: 0.875rem;\n border-radius: var(--document-list-radius);\n .search-icon {\n height: 1em;\n top: 0.4lh;\n left: 2px;\n position: absolute;\n z-index: 1;\n stroke: var(--placeholder-line);\n }\n &:focus-within {\n .search-icon {\n stroke: var(--document-list-line);\n }\n }\n}\n\n.document-list__filter {\n width: 100%;\n\n background: var(--document-list-widget-fill);\n color: var(--document-list-widget-line);\n\n padding-left: 2em;\n padding-right: 0.75rem;\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n border: none;\n border-radius: var(--document-list-radius);\n\n &::placeholder {\n color: var(--placeholder-line);\n }\n\n &:focus-visible {\n outline-color: var(--sidebar-widget-line);\n outline-offset: 1px;\n box-shadow: 0 0 0 4px #fff;\n border-radius: var(--document-list-radius);\n }\n}\n\n.document-list__doclist {\n --doclist-padding-x: 0.75rem;\n display: flex;\n flex-direction: column;\n border-radius: var(--document-list-radius);\n box-shadow: 0 1px 2px rgba(0, 20, 50, 0.05);\n width: 100%;\n max-height: 100%;\n overflow: scroll;\n transition:\n background-color 0.2s ease,\n box-shadow 0.2s ease;\n\n &::-webkit-scrollbar {\n display: none;\n }\n}\n\n.document-list__doclist--drag-over {\n background: color-mix(in oklch, var(--document-list-primary), transparent 95%);\n box-shadow:\n 0 0 0 2px var(--document-list-primary) inset,\n 0 1px 2px rgba(0, 20, 50, 0.05);\n}\n\n.document-list-item {\n display: flex;\n gap: 0.25ch;\n padding-inline: var(--doclist-padding-x);\n padding-block: 0.5rem;\n font-weight: 400;\n color: var(--sidebar-widget-line);\n cursor: default;\n position: relative;\n\n &:focus-visible {\n outline-color: #000;\n outline-offset: -2px;\n box-shadow: 0 0 0 4px var(--document-list-widget-fill);\n border-radius: var(--document-list-radius);\n }\n\n &:active {\n outline: 0;\n box-shadow: 0;\n }\n\n &[aria-selected=\"true\"] {\n background: var(--document-list-selection-fill);\n color: var(--document-list-selection-line);\n .document-list-folder__toggle path {\n stroke: var(--document-list-selection-line);\n }\n .document-list__doclist > &:first-child {\n border-top-left-radius: var(--document-list-radius);\n border-top-right-radius: var(--document-list-radius);\n }\n .document-list__doclist > &:last-child {\n border-bottom-left-radius: var(--document-list-radius);\n border-bottom-right-radius: var(--document-list-radius);\n }\n }\n &[aria-checked=\"true\"] {\n outline: 2px dashed\n color-mix(in oklch, var(--document-list-line), transparent 50%);\n outline-offset: -4px;\n }\n &[data-dnd-dragging] {\n opacity: 0.4;\n }\n /* Spring-load: hovering a drag over this row opens the document after\n SPRING_LOAD_MS (see item.tsx). The highlight only fades in for the second\n half of the hold, so quick pass-overs never flash an animation. */\n &[data-dnd-springload] {\n animation: doclist-springload 0.75s ease-out 0.75s both;\n }\n &[data-dnd-droplist-state]::before {\n content: \"\";\n position: absolute;\n left: 0;\n margin-left: calc(var(--depth) * 1.75rem);\n right: 0;\n height: 2px;\n background: var(--document-list-line);\n }\n &[data-dnd-droplist-state=\"above\"]::before {\n top: -1px;\n }\n &[data-dnd-droplist-state=\"below\"]::before {\n bottom: -1px;\n }\n}\n\n@keyframes doclist-springload {\n from {\n background: transparent;\n }\n to {\n background: color-mix(\n in oklch,\n var(--document-list-primary),\n transparent 40%\n );\n }\n}\n\n.document-list-folder[data-drop-state=\"inside\"] {\n outline: 2px solid var(--document-list-primary);\n outline-offset: -2px;\n border-radius: var(--document-list-radius);\n background: color-mix(in oklch, var(--document-list-primary), transparent 50%);\n > .document-list-item::before {\n content: \"\";\n position: absolute;\n left: 0;\n right: 0;\n height: 2px;\n background: var(--document-list-line);\n bottom: 0;\n }\n [data-dnd-droplist-state]::before {\n display: none;\n }\n}\n\n.document-list__loading {\n display: flex;\n flex-direction: column;\n}\n\n.document-list-item--loading {\n pointer-events: none;\n padding-left: calc(1.8rem * var(--depth) + var(--doclist-padding-x));\n}\n\n/* In the loading-box, each skeleton keeps its own (inline) width so the stack\n reads as a list of distinct items rather than identical full-width bars. */\n.document-list__loading .document-list-item__skeleton {\n flex: 0 0 auto;\n}\n\n.document-list-item__skeleton {\n flex: 1;\n min-width: 0;\n max-width: 12rem;\n height: 0.75em;\n border-radius: 4px;\n background: linear-gradient(\n 90deg,\n var(--placeholder-line) 25%,\n color-mix(in oklch, var(--placeholder-line), transparent 65%) 50%,\n var(--placeholder-line) 75%\n );\n background-size: 200% 100%;\n opacity: 0.35;\n animation: doclist-skeleton-shimmer 1.2s ease-in-out infinite;\n}\n\n@keyframes doclist-skeleton-shimmer {\n from {\n background-position: 200% 0;\n }\n to {\n background-position: -200% 0;\n }\n}\n\n.document-list-item__name {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n display: block;\n flex: 1;\n min-width: 0;\n &:is(input) {\n padding: 4px;\n margin: -4px;\n }\n}\n\n.document-list-folder__toggle {\n margin-left: -0.75ch;\n padding-inline: 0.25ch;\n &:hover {\n background: var(--document-list-toggle-hover);\n }\n\n & svg {\n width: 14px;\n height: 14px;\n }\n\n & path {\n stroke: var(--document-list-line-offset-20);\n }\n}\n\n.document-list-folder__contents--hidden {\n display: none;\n}\n\n.document-list-folder__circular-ref {\n padding: 0.5rem;\n padding-left: calc(2.2rem * var(--depth));\n color: var(--document-list-muted);\n font-style: italic;\n font-size: 0.9em;\n}\n\n.document-list__item {\n content-visibility: auto;\n contain-intrinsic-size: auto 2.25rem;\n}\n\n.document-list__item--invisible {\n display: none;\n}\n\n.document-list__item--visible,\n.document-list__item--invisible:has(.document-list__item--visible) {\n display: block;\n}\n\n.document-list-folder__contents .document-list-item {\n padding-left: calc(1.8rem * var(--depth));\n}\n\n.document-list-widget {\n width: 100%;\n background: var(--document-list-widget-fill);\n color: var(--document-list-widget-line);\n}\n\n.document-list-widget:empty {\n display: none;\n}\n\n/* the pending \"New document\" row created by dropping the new-doc button:\n renders like a normal list item, but italic and faded. */\n.document-list-placeholder {\n font-style: italic;\n color: var(--placeholder-line);\n}\n\n/* The menu content is portalled to document.body, so it misses the\n .document-list border-box rule. Without it, width:100% + padding makes\n sub-triggers overflow the menu horizontally, and hover-focus then scrolls\n the (overflow:auto) menu sideways, shifting its content to the left. */\n.popmenu__content,\n.popmenu__sub-content,\n.popmenu__content *,\n.popmenu__sub-content * {\n box-sizing: border-box;\n}\n\n.popmenu__trigger,\n.popmenu__sub-trigger {\n cursor: default;\n user-select: none;\n width: 100%;\n text-align: left;\n}\n\n.popmenu__sub-content,\n.popmenu__content {\n z-index: 2;\n min-width: 220px;\n max-height: min(400px, 50vh);\n overflow-y: auto;\n padding: 4px;\n background-color: var(--document-list-widget-fill);\n font-size: 0.8rem;\n border-radius: 6px;\n border: 1px solid var(--document-list-border);\n box-shadow:\n 0 4px 6px -1px rgb(0 0 0 / 0.1),\n 0 2px 4px -2px rgb(0 0 0 / 0.1);\n outline: none;\n transform-origin: var(--kb-menu-content-transform-origin);\n animation: contentHide 250ms ease-in forwards;\n}\n.popmenu__content[data-expanded],\n.popmenu__sub-content[data-expanded] {\n animation: contentShow 250ms ease-out;\n}\n.popmenu__item,\n.popmenu__checkbox-item,\n.popmenu__radio-item,\n.popmenu__sub-trigger {\n font-size: 0.8rem;\n line-height: 1;\n color: var(--document-list-widget-line);\n border-radius: 4px;\n display: flex;\n align-items: center;\n height: 32px;\n padding-inline: 12px;\n padding-block: 6px;\n position: relative;\n user-select: none;\n outline: none;\n cursor: default;\n}\n.popmenu__sub-trigger[data-expanded] {\n background-color: var(--document-list-fill-offset);\n color: var(--document-list-line);\n}\n.popmenu__item[data-disabled],\n.popmenu__checkbox-item[data-disabled],\n.popmenu__radio-item[data-disabled],\n.popmenu__sub-trigger[data-disabled] {\n color: var(--document-list-muted);\n opacity: 0.5;\n pointer-events: none;\n}\n.popmenu__item[data-highlighted],\n.popmenu__checkbox-item[data-highlighted],\n.popmenu__radio-item[data-highlighted],\n.popmenu__sub-trigger[data-highlighted] {\n outline: none;\n background-color: var(--document-list-selection-fill);\n color: var(--document-list-selection-line);\n}\n@keyframes contentShow {\n from {\n opacity: 0;\n transform: scale(0.96);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n@keyframes contentHide {\n from {\n opacity: 1;\n transform: scale(1);\n }\n to {\n opacity: 0;\n transform: scale(0.96);\n }\n}\n\n.popmenu__item--highlighted {\n outline: none;\n background-color: var(--document-list-selection-fill);\n color: var(--document-list-selection-line);\n}\n\n.create-new-menu__content {\n scrollbar-gutter: stable;\n scrollbar-color: var(--document-list-border-strong) var(--document-list-widget-fill);\n scrollbar-width: thin;\n}\n\n.create-new-menu__content::-webkit-scrollbar {\n width: 10px;\n}\n\n.create-new-menu__content::-webkit-scrollbar-track {\n background: var(--document-list-widget-fill);\n}\n\n.create-new-menu__content::-webkit-scrollbar-thumb {\n background: var(--document-list-border-strong);\n border: 2px solid var(--document-list-widget-fill);\n border-radius: 999px;\n}\n\n.create-new-menu__content::-webkit-scrollbar-thumb:hover {\n background: var(--document-list-muted);\n}\n\n.create-new-filter {\n padding: 4px;\n}\n\n.create-new-filter__input {\n width: 100%;\n box-sizing: border-box;\n padding: 6px 8px;\n font-size: 0.8rem;\n border: 1px solid var(--document-list-border-strong);\n border-radius: 4px;\n background: var(--document-list-widget-fill);\n color: var(--document-list-widget-line);\n outline: none;\n}\n\n.create-new-filter__input:focus {\n border-color: var(--document-list-primary);\n}\n\n.create-new-filter__input::placeholder {\n color: var(--document-list-muted);\n}\n\n/* Combined chee/sideboard tool: the document list with the account bar pinned\n below it. The document-list panel fills; the bar sits at the bottom. */\n.sideboard {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n}\n\n.sideboard > .document-list {\n flex: 1;\n height: auto;\n min-height: 0;\n padding-bottom: 0;\n}\n\n/* The account bar: avatar (account picker), packages, settings. Usable as its\n own tool or pinned to the bottom of the combined sideboard. */\n.account-bar {\n container-type: inline-size;\n display: flex;\n align-items: center;\n gap: 1rem;\n min-height: 4rem;\n background: var(--account-bar-fill);\n color: var(--account-bar-line);\n border-top: 1px solid var(--document-list-divider);\n padding-block: 0.25rem;\n padding-bottom: calc(0.25rem + env(safe-area-inset-bottom));\n padding-left: calc(env(safe-area-inset-left) + var(--document-list-padding-x));\n padding-right: calc(env(safe-area-inset-right) + var(--document-list-padding-x));\n justify-content: space-between;\n}\n\n.account-bar__button {\n display: flex;\n align-items: center;\n border: 1px solid transparent;\n padding-inline: 0.25rem;\n padding-block: 0.125rem;\n border-radius: 3px;\n background: transparent;\n color: inherit;\n font: inherit;\n white-space: nowrap;\n cursor: pointer;\n}\n\n.account-bar__button:hover {\n border-color: var(--document-list-divider);\n}\n\n.account-bar__avatar patchwork-view {\n display: block;\n width: 100%;\n height: 100%;\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,2 +1,2 @@
1
- import"./chunk-FW4363Y4.js";async function n(){let e=new URL("./index.css",import.meta.url);return(await fetch(e)).text()}function r(e){let t="sideboard-styles",o=document.head.querySelector(`#${t}`)??document.createElement("style");Object.assign(o,{textContent:e,id:t}),document.head.append(o)}var a={id:"chee/document-list",type:"patchwork:tool",name:"Document List",supportedDatatypes:["folder"],icon:"FolderOpen",unlisted:!0,async load(){let[{renderDocumentListPanel:e},t]=await Promise.all([import("./document-list-panel-44RR5PWX.js"),n()]);return(o,i)=>(r(t),e(o.url,i))}},c=[a,Object.assign({},a,{id:"folder-tree-view",name:"Folder Tree View",icon:"Tree",unlisted:!1}),{id:"chee/account-bar",type:"patchwork:tool",name:"Account Bar",supportedDatatypes:["account"],icon:"UserCircle",unlisted:!0,async load(){let[{renderAccountBar:e},t]=await Promise.all([import("./account-bar-6B65GY2V.js"),n()]);return(o,i)=>(r(t),e(o,i))}},{id:"chee/sideboard",type:"patchwork:tool",tags:["sidebar-account"],name:"Sideboard",supportedDatatypes:["account"],icon:"FolderOpen",unlisted:!0,async load(){let[{renderSideboard:e},t]=await Promise.all([import("./sideboard/sideboard.js"),n()]);return(o,i)=>(r(t),e(o,i))}}];export{c as plugins};
1
+ import"./chunk-FW4363Y4.js";async function n(){let e=new URL("./index.css",import.meta.url);return(await fetch(e)).text()}function r(e){let t="sideboard-styles",o=document.head.querySelector(`#${t}`)??document.createElement("style");Object.assign(o,{textContent:e,id:t}),document.head.append(o)}var a={id:"chee/document-list",type:"patchwork:tool",name:"Document List",supportedDatatypes:["folder"],icon:"FolderOpen",unlisted:!0,async load(){let[{renderDocumentListPanel:e},t]=await Promise.all([import("./document-list-panel-WDIVYTZU.js"),n()]);return(o,i)=>(r(t),e(o.url,i))}},c=[a,Object.assign({},a,{id:"folder-tree-view",name:"Folder Tree View",icon:"Tree",unlisted:!1}),{id:"chee/account-bar",type:"patchwork:tool",name:"Account Bar",supportedDatatypes:["account"],icon:"UserCircle",unlisted:!0,async load(){let[{renderAccountBar:e},t]=await Promise.all([import("./account-bar-KGTVEYOE.js"),n()]);return(o,i)=>(r(t),e(o,i))}},{id:"chee/sideboard",type:"patchwork:tool",tags:["sidebar-account"],name:"Sideboard",supportedDatatypes:["account"],icon:"FolderOpen",unlisted:!0,async load(){let[{renderSideboard:e},t]=await Promise.all([import("./sideboard/sideboard.js"),n()]);return(o,i)=>(r(t),e(o,i))}}];export{c as plugins};
2
2
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,2 @@
1
+ import{a as f,b as w,c as v,d as o,e as a}from"./chunk-6LWWNFKU.js";import{h as s,i as g,l as S}from"./chunk-NO6SJFVH.js";import{k as i,n as p}from"./chunk-ZQBDNEEV.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 m,Show as u}from"solid-js";import{parseAutomergeUrl as I}from"@automerge/automerge-repo/slim";function A(l){let t=()=>{let n=s();return n&&l.element.contains(n.element)?n:null};function c(){let n=t();n&&(g(null),n.element.focus({preventScroll:!0}))}return e(u,{get when(){return t()},keyed:!0,children:n=>e(v,{get anchor(){return{x:n.x,y:n.y}},placement:"right-start",onClose:c,get children(){return e(T,{target:n,get repo(){return l.repo},get rootFolderHandle(){return l.rootFolderHandle}})}})})}function T(l){let t=l.target,c=w(t.type),n=f(r=>!r.unlisted),d=()=>i.has(t.id)&&i.size>1,h=()=>`${location.protocol}//${location.host}/#doc=${I(t.url).documentId}`;async function b(){if(!d()){t.remove();return}let r=[...i.values()].map(y=>y.url);confirm(`Remove ${r.length} items from the sidebar?`)&&(p(),await S(l.repo,l.rootFolderHandle,r))}return[e(u,{get when(){return t.createInside},get children(){return e(a,{label:"Create",get children(){return e(m,{each:n,children:r=>e(o,{onSelect:()=>t.createInside(r),get children(){return r.name}})})}})}}),e(u,{get when(){return c.length},get children(){return e(a,{label:"Open with...",get children(){return e(m,{each:c,children:r=>e(o,{onSelect:()=>t.openWith(r.id),get children(){return r.name}})})}})}}),e(a,{label:"Copy",get children(){return[e(o,{onSelect:()=>navigator.clipboard.writeText(t.url),children:"Automerge url"}),e(o,{onSelect:()=>navigator.clipboard.writeText(h()),children:"Patchwork url"}),e(u,{get when(){return c.length},get children(){return e(a,{label:"Patchwork url with...",get children(){return e(m,{each:c,children:r=>e(o,{onSelect:()=>navigator.clipboard.writeText(`${h()}&tool=${r.id}`),get children(){return r.name}})})}})}})]}}),e(o,{onSelect:()=>t.startRenaming(),children:"Rename"}),e(o,{onSelect:b,get children(){return $(()=>!!d())()?`Remove ${i.size} items`:"Remove"}})]}export{A as ItemMenu};
2
+ //# sourceMappingURL=item-menu-N2ATUOK3.js.map