@powerhousedao/connect 5.0.0-staging.23 → 5.0.0-staging.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{atlas-import.DV9NGIcV.js → atlas-import.huSz2S1P.js} +2 -2
- package/dist/assets/{atlas-import.DV9NGIcV.js.map → atlas-import.huSz2S1P.js.map} +1 -1
- package/dist/assets/{ccip.BYxx80kf.js → ccip.B4gPk9T8.js} +2 -2
- package/dist/assets/{ccip.BYxx80kf.js.map → ccip.B4gPk9T8.js.map} +1 -1
- package/dist/assets/{content.DS8bCjW3.js → content.EqFpXqQo.js} +2 -2
- package/dist/assets/{content.DS8bCjW3.js.map → content.EqFpXqQo.js.map} +1 -1
- package/dist/assets/{creators.CjFm02Wg.js → creators.Cg7hgtUz.js} +2 -2
- package/dist/assets/{creators.CjFm02Wg.js.map → creators.Cg7hgtUz.js.map} +1 -1
- package/dist/assets/{drive-icon.BEe60eO5.js → drive-icon.VGDDLaPE.js} +2 -2
- package/dist/assets/{drive-icon.BEe60eO5.js.map → drive-icon.VGDDLaPE.js.map} +1 -1
- package/dist/assets/{index.J5BySxKV.js → index.CCqDl19I.js} +2 -2
- package/dist/assets/{index.J5BySxKV.js.map → index.CCqDl19I.js.map} +1 -1
- package/dist/assets/{index.DHgLJqcJ.js → index.CXV2LGi6.js} +2 -2
- package/dist/assets/{index.DHgLJqcJ.js.map → index.CXV2LGi6.js.map} +1 -1
- package/dist/assets/{index.OK3T5arx.js → index.CYAFrFct.js} +2 -2
- package/dist/assets/{index.OK3T5arx.js.map → index.CYAFrFct.js.map} +1 -1
- package/dist/assets/{index.Bt-6AiBl.js → index.CYF9Wn1v.js} +2 -2
- package/dist/assets/{index.Bt-6AiBl.js.map → index.CYF9Wn1v.js.map} +1 -1
- package/dist/assets/{index.DnJYbUXB.js → index.DA_wjuiB.js} +2 -2
- package/dist/assets/{index.DnJYbUXB.js.map → index.DA_wjuiB.js.map} +1 -1
- package/dist/assets/{index.6RVr5bn1.js → index.DL3Up0hU.js} +2 -2
- package/dist/assets/{index.6RVr5bn1.js.map → index.DL3Up0hU.js.map} +1 -1
- package/dist/assets/{index.CSVNwIam.js → index.JK7MVe59.js} +2 -2
- package/dist/assets/{index.CSVNwIam.js.map → index.JK7MVe59.js.map} +1 -1
- package/dist/assets/{main.D9OoNJWh.js → main.BXlmSY46.js} +7 -7
- package/dist/assets/{main.D9OoNJWh.js.map → main.BXlmSY46.js.map} +1 -1
- package/dist/assets/{nodefs.D4Jzt58G.js → nodefs.BpF1PLlt.js} +2 -2
- package/dist/assets/{nodefs.D4Jzt58G.js.map → nodefs.BpF1PLlt.js.map} +1 -1
- package/dist/assets/{opfs-ahp.DuAFuh-M.js → opfs-ahp.BCWCVPBr.js} +2 -2
- package/dist/assets/{opfs-ahp.DuAFuh-M.js.map → opfs-ahp.BCWCVPBr.js.map} +1 -1
- package/dist/assets/{root.DytsescB.js → root._-_EHvJY.js} +2 -2
- package/dist/assets/{root.DytsescB.js.map → root._-_EHvJY.js.map} +1 -1
- package/dist/index.html +1 -1
- package/dist/vite-envs.sh +1 -1
- package/package.json +9 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.DHgLJqcJ.js","sources":["../../../../packages/design-system/dist/src/powerhouse/hooks/useWindowSize.js","../../../../packages/design-system/dist/src/connect/components/breadcrumbs/breadcrumbs.js","../../../../packages/design-system/dist/src/connect/components/breadcrumbs/useBreadcrumbs.js","../../../../packages/design-system/dist/src/connect/hooks/drag-and-drop/use-drop.js","../../../../packages/design-system/dist/src/connect/components/status-icon/sync-status-icon.js","../../../../packages/design-system/dist/src/connect/components/file-item/file-item.js","../../../../packages/design-system/dist/src/connect/components/folder-item/folder-item.js","../../../../packages/design-system/dist/src/connect/components/node-input/node-input.js","../../../../node_modules/.pnpm/@tanstack+virtual-core@3.13.12/node_modules/@tanstack/virtual-core/dist/esm/utils.js","../../../../node_modules/.pnpm/@tanstack+virtual-core@3.13.12/node_modules/@tanstack/virtual-core/dist/esm/index.js","../../../../node_modules/.pnpm/@tanstack+react-virtual@3.13.12_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@tanstack/react-virtual/dist/esm/index.js","../../../../packages/design-system/dist/src/connect/components/search-bar/filter-item.js","../../../../packages/design-system/dist/src/connect/components/search-bar/search-bar.js","../../../../packages/design-system/dist/src/connect/constants/documents.js","../../../../packages/design-system/dist/src/assets/icons/budget.png","../../../../packages/design-system/dist/src/assets/icons/rwa-report.png","../../../../packages/design-system/dist/src/assets/icons/template.png","../../../../packages/design-system/dist/src/connect/constants/icons.js","../../../../packages/design-system/dist/src/connect/constants/nodes.js","../../../../packages/design-system/dist/src/connect/constants/syncing.js","../../../../packages/design-system/dist/src/connect/hooks/drag-and-drop/use-drag.js","../../../../packages/design-system/dist/src/connect/utils/get-document-icon-src.js","../../../../packages/common/dist/editors/generic-drive-explorer/components/create-document.js","../../../../packages/common/dist/editors/generic-drive-explorer/components/file-content-view.js","../../../../packages/common/dist/editors/generic-drive-explorer/components/layout.js","../../../../packages/common/dist/editors/generic-drive-explorer/components/folder-view.js","../../../../packages/common/dist/editors/generic-drive-explorer/components/search-bar.js","../../../../packages/common/dist/editors/generic-drive-explorer/editor.js","../../../../packages/common/dist/editors/generic-drive-explorer/index.js"],"sourcesContent":["import { useEffect, useState } from \"react\";\nexport const useWindowSize = () => {\n const [windowSize, setWindowSize] = useState({\n innerWidth: window.innerWidth,\n innerHeight: window.innerHeight,\n });\n useEffect(() => {\n const windowSizeHandler = () => {\n setWindowSize({\n innerWidth: window.innerWidth,\n innerHeight: window.innerHeight,\n });\n };\n window.addEventListener(\"resize\", windowSizeHandler);\n return () => {\n window.removeEventListener(\"resize\", windowSizeHandler);\n };\n }, []);\n return windowSize;\n};\n//# sourceMappingURL=useWindowSize.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { NodeInput } from \"#connect\";\nimport { Icon } from \"#powerhouse\";\nimport { Fragment, useCallback, useState } from \"react\";\nexport function Breadcrumbs(props) {\n const { breadcrumbs, createEnabled, onBreadcrumbSelected } = props;\n const [isCreating, setIsCreating] = useState(false);\n const onCreate = props.createEnabled ? props.onCreate : undefined;\n function onAddNew() {\n setIsCreating(true);\n }\n const onSubmit = useCallback((name) => {\n if (!createEnabled || !onCreate)\n return;\n onCreate(name, breadcrumbs.at(-1)?.id);\n setIsCreating(false);\n }, [breadcrumbs, createEnabled, onCreate]);\n const onCancel = useCallback(() => {\n setIsCreating(false);\n }, []);\n return (_jsxs(\"div\", { className: \"flex h-9 flex-row items-center gap-2 p-6 text-gray-500\", children: [breadcrumbs.map((node) => (_jsxs(Fragment, { children: [_jsx(Breadcrumb, { node: node, onClick: onBreadcrumbSelected }), _jsx(\"span\", { children: \"/\" })] }, node.id))), createEnabled &&\n (isCreating ? (_jsx(NodeInput, { className: \"text-gray-800\", defaultValue: \"New Folder\", onCancel: onCancel, onSubmit: onSubmit, placeholder: \"New Folder\" })) : (_jsxs(\"button\", { type: \"button\", className: \"ml-1 flex items-center justify-center gap-2 rounded-md bg-gray-50 px-2 py-1.5 transition-colors hover:bg-gray-200 hover:text-gray-800\", onClick: onAddNew, children: [_jsx(Icon, { name: \"Plus\", size: 14 }), \"Add new\"] })))] }));\n}\nexport function Breadcrumb(props) {\n const { node, onClick } = props;\n return (_jsx(\"div\", { className: \"transition-colors last-of-type:text-gray-800 hover:text-gray-800\", onClick: () => onClick(node), role: \"button\", children: node.name }));\n}\n//# sourceMappingURL=breadcrumbs.js.map","import { useCallback } from \"react\";\nexport function useBreadcrumbs({ selectedNodePath, setSelectedNode, }) {\n const onBreadcrumbSelected = useCallback((breadcrumb) => {\n setSelectedNode(breadcrumb);\n }, [setSelectedNode]);\n return {\n breadcrumbs: selectedNodePath,\n onBreadcrumbSelected,\n };\n}\n//# sourceMappingURL=useBreadcrumbs.js.map","import { UI_NODE } from \"#connect\";\nimport { useCallback, useMemo, useRef, useState } from \"react\";\nexport function useDrop(props) {\n const { node, onAddFile, onCopyNode, onMoveNode, trackNestedDrag = false, acceptedFileExtensions, } = props;\n const [isDropTarget, setIsDropTarget] = useState(false);\n const dragDepthRef = useRef(0);\n /**\n * Check if the dragged content is valid based on accepted file extensions\n */\n const isValidDropContent = useCallback((dataTransfer) => {\n if (!acceptedFileExtensions || acceptedFileExtensions.length === 0) {\n return true;\n }\n // Always allow internal node dragging\n if (dataTransfer.types.includes(UI_NODE)) {\n return true;\n }\n // Check if dragging files\n if (dataTransfer.types.includes(\"Files\")) {\n const items = Array.from(dataTransfer.items);\n return items.some((item) => {\n if (item.kind === \"file\") {\n // Check MIME types for zip files\n if (item.type === \"application/zip\" ||\n item.type === \"application/x-zip-compressed\") {\n return acceptedFileExtensions.includes(\".zip\");\n }\n // For custom extensions (.phd, .phdm), browsers might not report\n // a specific MIME type (they show as '' or 'application/octet-stream')\n // We allow these through and do stricter validation on drop\n if (item.type === \"\" || item.type === \"application/octet-stream\") {\n return true;\n }\n }\n return false;\n });\n }\n return false;\n }, [acceptedFileExtensions]);\n const onDragOver = useCallback((event) => {\n event.preventDefault();\n event.stopPropagation();\n const isValid = isValidDropContent(event.dataTransfer);\n if (isValid) {\n setIsDropTarget(true);\n }\n else {\n // Visual feedback that dropping is not allowed\n event.dataTransfer.dropEffect = \"none\";\n }\n }, [isValidDropContent]);\n const onDragEnter = useCallback((event) => {\n event.preventDefault();\n event.stopPropagation();\n const isValid = isValidDropContent(event.dataTransfer);\n if (isValid) {\n dragDepthRef.current += 1;\n setIsDropTarget(true);\n }\n }, [isValidDropContent]);\n const onDragLeaveDepth = useCallback((event) => {\n event.preventDefault();\n event.stopPropagation();\n dragDepthRef.current = Math.max(0, dragDepthRef.current - 1);\n if (dragDepthRef.current === 0) {\n setIsDropTarget(false);\n }\n }, []);\n const onDragLeaveSimple = useCallback(() => {\n setIsDropTarget(false);\n }, []);\n const onDrop = useCallback(async (event) => {\n event.preventDefault();\n const dropTarget = event.target;\n const closestDropZone = dropTarget.closest(\"[data-drop-zone]\");\n const dropZoneId = node?.id || \"root\";\n const closestDropZoneId = closestDropZone?.getAttribute(\"data-drop-zone\") || \"root\";\n if (closestDropZoneId !== dropZoneId) {\n setIsDropTarget(false);\n return;\n }\n try {\n let droppedFiles = getDroppedFiles(event.dataTransfer.items).filter(Boolean);\n // Filter files by accepted extensions if specified\n if (acceptedFileExtensions && acceptedFileExtensions.length > 0) {\n droppedFiles = droppedFiles.filter((file) => {\n if (!file)\n return false;\n const fileName = file.name.toLowerCase();\n return acceptedFileExtensions.some((ext) => fileName.endsWith(ext.toLowerCase()));\n });\n }\n if (droppedFiles.length) {\n for (const file of droppedFiles) {\n if (file) {\n await onAddFile(file, node);\n }\n }\n return;\n }\n const altOrOptionKeyPressed = event.getModifierState(\"Alt\");\n const data = event.dataTransfer.getData(UI_NODE);\n const droppedNode = JSON.parse(data);\n if (altOrOptionKeyPressed) {\n await onCopyNode(droppedNode, node);\n }\n else {\n await onMoveNode(droppedNode, node);\n }\n }\n catch (error) {\n console.error(error);\n }\n finally {\n if (trackNestedDrag)\n dragDepthRef.current = 0;\n setIsDropTarget(false);\n }\n }, [onAddFile, onCopyNode, onMoveNode, parent, node?.id, trackNestedDrag]);\n return useMemo(() => {\n const baseProps = {\n onDragOver,\n onDrop,\n \"data-drop-zone\": node?.id || \"root\",\n };\n if (trackNestedDrag) {\n baseProps.onDragEnter = onDragEnter;\n baseProps.onDragLeave = onDragLeaveDepth;\n }\n else {\n baseProps.onDragLeave = onDragLeaveSimple;\n }\n return {\n isDropTarget,\n dropProps: baseProps,\n };\n }, [\n isDropTarget,\n node?.id,\n onDragEnter,\n onDragLeaveDepth,\n onDragLeaveSimple,\n onDragOver,\n onDrop,\n trackNestedDrag,\n ]);\n}\nfunction getDroppedFiles(items) {\n const droppedFiles = Array.from(items)\n .map((item) => (item.kind === \"file\" ? item.getAsFile() : null))\n .filter(Boolean);\n return droppedFiles;\n}\n//# sourceMappingURL=use-drop.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { CONFLICT, ERROR, INITIAL_SYNC, MISSING, SUCCESS, SYNCING, } from \"#connect\";\nimport { Icon } from \"#powerhouse\";\nimport { twMerge } from \"tailwind-merge\";\nconst syncIcons = {\n SYNCING: \"Syncing\",\n SUCCESS: \"Synced\",\n CONFLICT: \"Error\",\n MISSING: \"Circle\",\n ERROR: \"Error\",\n INITIAL_SYNC: \"Syncing\",\n};\nexport function SyncStatusIcon(props) {\n const { syncStatus, className, overrideSyncIcons = {}, ...iconProps } = props;\n const icons = { ...syncIcons, ...overrideSyncIcons };\n const syncStatusIcons = {\n [INITIAL_SYNC]: (_jsx(Icon, { size: 16, ...iconProps, className: twMerge(\"text-blue-900\", className), name: icons[INITIAL_SYNC] })),\n [SYNCING]: (_jsx(Icon, { size: 16, ...iconProps, className: twMerge(\"text-blue-900\", className), name: icons[SYNCING] })),\n [SUCCESS]: (_jsx(Icon, { size: 16, ...iconProps, className: twMerge(\"text-green-900\", className), name: icons[SUCCESS] })),\n [CONFLICT]: (_jsx(Icon, { size: 16, ...iconProps, className: twMerge(\"text-orange-900\", className), name: icons[CONFLICT] })),\n [MISSING]: (_jsx(Icon, { size: 16, ...iconProps, className: twMerge(\"text-red-900\", className), name: icons[MISSING] })),\n [ERROR]: (_jsx(Icon, { size: 16, ...iconProps, className: twMerge(\"text-red-900\", className), name: icons[ERROR] })),\n };\n return syncStatusIcons[syncStatus];\n}\n//# sourceMappingURL=sync-status-icon.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { ConnectDropdownMenu, defaultFileOptions, DELETE, DUPLICATE, getDocumentIconSrc, NodeInput, nodeOptionsMap, READ, RENAME, useDrag, WRITE, } from \"#connect\";\nimport { Icon } from \"#powerhouse\";\nimport { useState } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\nimport { SyncStatusIcon } from \"../status-icon/index.js\";\nexport function FileItem(props) {\n const { fileNode, sharingType, className, customDocumentIconSrc, isAllowedToCreateDocuments, getSyncStatusSync, setSelectedNode, onRenameNode, onDuplicateNode, showDeleteNodeModal, } = props;\n const [mode, setMode] = useState(READ);\n const [isDropdownMenuOpen, setIsDropdownMenuOpen] = useState(false);\n const { dragProps } = useDrag({ node: fileNode });\n const isReadMode = mode === READ;\n const syncStatus = getSyncStatusSync(fileNode.id, sharingType);\n const dropdownMenuHandlers = {\n [DUPLICATE]: () => onDuplicateNode(fileNode),\n [RENAME]: () => setMode(WRITE),\n [DELETE]: () => showDeleteNodeModal(fileNode),\n };\n const dropdownMenuOptions = Object.entries(nodeOptionsMap)\n .map(([id, option]) => ({\n ...option,\n id: id,\n }))\n .filter((option) => defaultFileOptions.includes(option.id));\n function onSubmit(name) {\n onRenameNode(name, fileNode);\n setMode(READ);\n }\n function onCancel() {\n setMode(READ);\n }\n function onDropdownMenuOptionClick(itemId) {\n const handler = dropdownMenuHandlers[itemId];\n if (!handler) {\n console.error(`No handler found for dropdown menu item: ${itemId}`);\n return;\n }\n handler();\n setIsDropdownMenuOpen(false);\n }\n const iconSrc = getDocumentIconSrc(fileNode.documentType, customDocumentIconSrc);\n const iconNode = (_jsxs(\"div\", { className: \"relative\", children: [_jsx(\"img\", { alt: \"file icon\", className: \"max-w-none\", height: 34, src: iconSrc, width: 32 }), isReadMode && syncStatus && (_jsx(\"div\", { className: \"absolute bottom-[-2px] right-0 size-3 rounded-full bg-white\", children: _jsx(\"div\", { className: \"absolute left-[-2px] top-[-2px]\", children: _jsx(SyncStatusIcon, { overrideSyncIcons: { SUCCESS: \"CheckCircleFill\" }, syncStatus: syncStatus }) }) }))] }));\n const containerStyles = twMerge(\"group flex h-12 cursor-pointer select-none items-center rounded-lg bg-gray-200 px-2 text-gray-600 hover:text-gray-800\", className);\n const content = isReadMode ? (_jsxs(\"div\", { className: \"flex w-52 items-center justify-between\", children: [_jsxs(\"div\", { className: \"mr-2 truncate group-hover:mr-0\", children: [_jsx(\"div\", { className: \"max-h-6 truncate text-sm font-medium group-hover:text-gray-800\", children: fileNode.name }), _jsx(\"div\", { className: \"max-h-6 truncate text-xs font-medium text-gray-600 group-hover:text-gray-800\", children: fileNode.documentType })] }), isAllowedToCreateDocuments ? (_jsx(ConnectDropdownMenu, { items: dropdownMenuOptions, onItemClick: onDropdownMenuOptionClick, onOpenChange: setIsDropdownMenuOpen, open: isDropdownMenuOpen, children: _jsx(\"button\", { className: twMerge(\"hidden group-hover:block\", isDropdownMenuOpen && \"block\"), onClick: (e) => {\n e.stopPropagation();\n setIsDropdownMenuOpen(true);\n }, children: _jsx(Icon, { className: \"text-gray-600\", name: \"VerticalDots\" }) }) })) : null] })) : (_jsx(NodeInput, { className: \"ml-3 flex-1 font-medium\", defaultValue: fileNode.name, onCancel: onCancel, onSubmit: onSubmit }));\n return (_jsx(\"div\", { className: \"relative w-64\", onClick: () => setSelectedNode(fileNode), children: _jsx(\"div\", { ...dragProps, className: containerStyles, children: _jsxs(\"div\", { className: \"flex items-center\", children: [_jsx(\"div\", { className: \"mr-1.5\", children: iconNode }), content] }) }) }));\n}\n//# sourceMappingURL=file-item.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { ConnectDropdownMenu, defaultFolderOptions, DELETE, DUPLICATE, NodeInput, nodeOptionsMap, READ, RENAME, SyncStatusIcon, useDrag, useDrop, WRITE, } from \"#connect\";\nimport { Icon } from \"#powerhouse\";\nimport { useState } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\nexport function FolderItem(props) {\n const { folderNode, sharingType, isAllowedToCreateDocuments, className, setSelectedNode, getSyncStatusSync, onRenameNode, onDuplicateNode, showDeleteNodeModal, onAddFile, onCopyNode, onMoveNode, } = props;\n const [mode, setMode] = useState(READ);\n const [isDropdownMenuOpen, setIsDropdownMenuOpen] = useState(false);\n const { dragProps } = useDrag({ node: folderNode });\n const { isDropTarget, dropProps } = useDrop({\n node: folderNode,\n onAddFile,\n onCopyNode,\n onMoveNode,\n });\n const isReadMode = mode === READ;\n const syncStatus = getSyncStatusSync(folderNode.id, sharingType);\n function onCancel() {\n setMode(READ);\n }\n function onSubmit(name) {\n onRenameNode(name, folderNode);\n setMode(READ);\n }\n const dropdownMenuHandlers = {\n [DUPLICATE]: () => onDuplicateNode(folderNode),\n [RENAME]: () => setMode(WRITE),\n [DELETE]: () => showDeleteNodeModal(folderNode),\n };\n const dropdownMenuOptions = Object.entries(nodeOptionsMap)\n .map(([id, option]) => ({\n ...option,\n id: id,\n }))\n .filter((option) => defaultFolderOptions.includes(option.id));\n function onDropdownMenuOptionClick(itemId) {\n const handler = dropdownMenuHandlers[itemId];\n if (!handler) {\n console.error(`No handler found for dropdown menu item: ${itemId}`);\n return;\n }\n handler();\n setIsDropdownMenuOpen(false);\n }\n const content = isReadMode || !isAllowedToCreateDocuments ? (_jsx(\"div\", { className: \"ml-3 max-h-6 truncate font-medium text-gray-600 group-hover:text-gray-800\", children: folderNode.name })) : (_jsx(NodeInput, { className: \"ml-3 font-medium\", defaultValue: folderNode.name, onCancel: onCancel, onSubmit: onSubmit }));\n const containerStyles = twMerge(\"group flex h-12 cursor-pointer select-none items-center rounded-lg bg-gray-200 px-2\", className, isDropTarget && \"bg-blue-100\");\n return (_jsx(\"div\", { className: \"relative w-64\", onClick: () => setSelectedNode(folderNode), children: _jsxs(\"div\", { ...dragProps, ...dropProps, className: containerStyles, children: [_jsxs(\"div\", { className: \"flex items-center overflow-hidden\", children: [_jsx(\"div\", { className: \"p-1\", children: _jsxs(\"div\", { className: \"relative\", children: [_jsx(Icon, { name: \"FolderClose\", size: 24 }), isReadMode && syncStatus ? (_jsx(\"div\", { className: \"absolute bottom-[-3px] right-[-2px] size-3 rounded-full bg-white\", children: _jsx(\"div\", { className: \"absolute left-[-2px] top-[-2px]\", children: _jsx(SyncStatusIcon, { overrideSyncIcons: {\n SUCCESS: \"CheckCircleFill\",\n }, syncStatus: syncStatus }) }) })) : null] }) }), content] }), isReadMode && isAllowedToCreateDocuments ? (_jsx(ConnectDropdownMenu, { items: dropdownMenuOptions, onItemClick: onDropdownMenuOptionClick, onOpenChange: setIsDropdownMenuOpen, open: isDropdownMenuOpen, children: _jsx(\"button\", { className: twMerge(\"ml-auto hidden group-hover:block\", isDropdownMenuOpen && \"block\"), onClick: (e) => {\n e.stopPropagation();\n setIsDropdownMenuOpen(true);\n }, children: _jsx(Icon, { className: \"text-gray-600\", name: \"VerticalDots\" }) }) })) : null] }) }));\n}\n//# sourceMappingURL=folder-item.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useLayoutEffect, useRef, useState } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\nimport { useEventListener, useOnClickOutside } from \"usehooks-ts\";\nexport function NodeInput(props) {\n const { onSubmit, onCancel, defaultValue, className, minLength = 1, ...inputProps } = props;\n const [value, setValue] = useState(defaultValue ?? \"\");\n const ref = useRef(null);\n useOnClickOutside(ref, handleSubmit);\n useEventListener(\"keyup\", (e) => {\n if (e.key === \"Enter\") {\n handleSubmit();\n }\n if (e.key === \"Escape\") {\n onCancel();\n }\n });\n useLayoutEffect(() => {\n setTimeout(() => {\n ref.current?.focus();\n ref.current?.select();\n ref.current?.scroll({ left: 9999 });\n }, 100);\n }, []);\n function handleSubmit() {\n if (value.length >= minLength) {\n onSubmit(value);\n }\n }\n return (_jsx(\"input\", { ...inputProps, autoFocus: true, className: twMerge(\"bg-inherit text-inherit outline-none\", className), minLength: minLength, onChange: (e) => setValue(e.target.value), ref: ref, required: true, type: \"text\", value: value }));\n}\n//# sourceMappingURL=node-input.js.map","function memo(getDeps, fn, opts) {\n let deps = opts.initialDeps ?? [];\n let result;\n function memoizedFunction() {\n var _a, _b, _c, _d;\n let depTime;\n if (opts.key && ((_a = opts.debug) == null ? void 0 : _a.call(opts))) depTime = Date.now();\n const newDeps = getDeps();\n const depsChanged = newDeps.length !== deps.length || newDeps.some((dep, index) => deps[index] !== dep);\n if (!depsChanged) {\n return result;\n }\n deps = newDeps;\n let resultTime;\n if (opts.key && ((_b = opts.debug) == null ? void 0 : _b.call(opts))) resultTime = Date.now();\n result = fn(...newDeps);\n if (opts.key && ((_c = opts.debug) == null ? void 0 : _c.call(opts))) {\n const depEndTime = Math.round((Date.now() - depTime) * 100) / 100;\n const resultEndTime = Math.round((Date.now() - resultTime) * 100) / 100;\n const resultFpsPercentage = resultEndTime / 16;\n const pad = (str, num) => {\n str = String(str);\n while (str.length < num) {\n str = \" \" + str;\n }\n return str;\n };\n console.info(\n `%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`,\n `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(\n 0,\n Math.min(120 - 120 * resultFpsPercentage, 120)\n )}deg 100% 31%);`,\n opts == null ? void 0 : opts.key\n );\n }\n (_d = opts == null ? void 0 : opts.onChange) == null ? void 0 : _d.call(opts, result);\n return result;\n }\n memoizedFunction.updateDeps = (newDeps) => {\n deps = newDeps;\n };\n return memoizedFunction;\n}\nfunction notUndefined(value, msg) {\n if (value === void 0) {\n throw new Error(`Unexpected undefined${msg ? `: ${msg}` : \"\"}`);\n } else {\n return value;\n }\n}\nconst approxEqual = (a, b) => Math.abs(a - b) < 1.01;\nconst debounce = (targetWindow, fn, ms) => {\n let timeoutId;\n return function(...args) {\n targetWindow.clearTimeout(timeoutId);\n timeoutId = targetWindow.setTimeout(() => fn.apply(this, args), ms);\n };\n};\nexport {\n approxEqual,\n debounce,\n memo,\n notUndefined\n};\n//# sourceMappingURL=utils.js.map\n","import { debounce, memo, notUndefined, approxEqual } from \"./utils.js\";\nconst getRect = (element) => {\n const { offsetWidth, offsetHeight } = element;\n return { width: offsetWidth, height: offsetHeight };\n};\nconst defaultKeyExtractor = (index) => index;\nconst defaultRangeExtractor = (range) => {\n const start = Math.max(range.startIndex - range.overscan, 0);\n const end = Math.min(range.endIndex + range.overscan, range.count - 1);\n const arr = [];\n for (let i = start; i <= end; i++) {\n arr.push(i);\n }\n return arr;\n};\nconst observeElementRect = (instance, cb) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const targetWindow = instance.targetWindow;\n if (!targetWindow) {\n return;\n }\n const handler = (rect) => {\n const { width, height } = rect;\n cb({ width: Math.round(width), height: Math.round(height) });\n };\n handler(getRect(element));\n if (!targetWindow.ResizeObserver) {\n return () => {\n };\n }\n const observer = new targetWindow.ResizeObserver((entries) => {\n const run = () => {\n const entry = entries[0];\n if (entry == null ? void 0 : entry.borderBoxSize) {\n const box = entry.borderBoxSize[0];\n if (box) {\n handler({ width: box.inlineSize, height: box.blockSize });\n return;\n }\n }\n handler(getRect(element));\n };\n instance.options.useAnimationFrameWithResizeObserver ? requestAnimationFrame(run) : run();\n });\n observer.observe(element, { box: \"border-box\" });\n return () => {\n observer.unobserve(element);\n };\n};\nconst addEventListenerOptions = {\n passive: true\n};\nconst observeWindowRect = (instance, cb) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const handler = () => {\n cb({ width: element.innerWidth, height: element.innerHeight });\n };\n handler();\n element.addEventListener(\"resize\", handler, addEventListenerOptions);\n return () => {\n element.removeEventListener(\"resize\", handler);\n };\n};\nconst supportsScrollend = typeof window == \"undefined\" ? true : \"onscrollend\" in window;\nconst observeElementOffset = (instance, cb) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const targetWindow = instance.targetWindow;\n if (!targetWindow) {\n return;\n }\n let offset = 0;\n const fallback = instance.options.useScrollendEvent && supportsScrollend ? () => void 0 : debounce(\n targetWindow,\n () => {\n cb(offset, false);\n },\n instance.options.isScrollingResetDelay\n );\n const createHandler = (isScrolling) => () => {\n const { horizontal, isRtl } = instance.options;\n offset = horizontal ? element[\"scrollLeft\"] * (isRtl && -1 || 1) : element[\"scrollTop\"];\n fallback();\n cb(offset, isScrolling);\n };\n const handler = createHandler(true);\n const endHandler = createHandler(false);\n endHandler();\n element.addEventListener(\"scroll\", handler, addEventListenerOptions);\n const registerScrollendEvent = instance.options.useScrollendEvent && supportsScrollend;\n if (registerScrollendEvent) {\n element.addEventListener(\"scrollend\", endHandler, addEventListenerOptions);\n }\n return () => {\n element.removeEventListener(\"scroll\", handler);\n if (registerScrollendEvent) {\n element.removeEventListener(\"scrollend\", endHandler);\n }\n };\n};\nconst observeWindowOffset = (instance, cb) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const targetWindow = instance.targetWindow;\n if (!targetWindow) {\n return;\n }\n let offset = 0;\n const fallback = instance.options.useScrollendEvent && supportsScrollend ? () => void 0 : debounce(\n targetWindow,\n () => {\n cb(offset, false);\n },\n instance.options.isScrollingResetDelay\n );\n const createHandler = (isScrolling) => () => {\n offset = element[instance.options.horizontal ? \"scrollX\" : \"scrollY\"];\n fallback();\n cb(offset, isScrolling);\n };\n const handler = createHandler(true);\n const endHandler = createHandler(false);\n endHandler();\n element.addEventListener(\"scroll\", handler, addEventListenerOptions);\n const registerScrollendEvent = instance.options.useScrollendEvent && supportsScrollend;\n if (registerScrollendEvent) {\n element.addEventListener(\"scrollend\", endHandler, addEventListenerOptions);\n }\n return () => {\n element.removeEventListener(\"scroll\", handler);\n if (registerScrollendEvent) {\n element.removeEventListener(\"scrollend\", endHandler);\n }\n };\n};\nconst measureElement = (element, entry, instance) => {\n if (entry == null ? void 0 : entry.borderBoxSize) {\n const box = entry.borderBoxSize[0];\n if (box) {\n const size = Math.round(\n box[instance.options.horizontal ? \"inlineSize\" : \"blockSize\"]\n );\n return size;\n }\n }\n return element[instance.options.horizontal ? \"offsetWidth\" : \"offsetHeight\"];\n};\nconst windowScroll = (offset, {\n adjustments = 0,\n behavior\n}, instance) => {\n var _a, _b;\n const toOffset = offset + adjustments;\n (_b = (_a = instance.scrollElement) == null ? void 0 : _a.scrollTo) == null ? void 0 : _b.call(_a, {\n [instance.options.horizontal ? \"left\" : \"top\"]: toOffset,\n behavior\n });\n};\nconst elementScroll = (offset, {\n adjustments = 0,\n behavior\n}, instance) => {\n var _a, _b;\n const toOffset = offset + adjustments;\n (_b = (_a = instance.scrollElement) == null ? void 0 : _a.scrollTo) == null ? void 0 : _b.call(_a, {\n [instance.options.horizontal ? \"left\" : \"top\"]: toOffset,\n behavior\n });\n};\nclass Virtualizer {\n constructor(opts) {\n this.unsubs = [];\n this.scrollElement = null;\n this.targetWindow = null;\n this.isScrolling = false;\n this.measurementsCache = [];\n this.itemSizeCache = /* @__PURE__ */ new Map();\n this.pendingMeasuredCacheIndexes = [];\n this.scrollRect = null;\n this.scrollOffset = null;\n this.scrollDirection = null;\n this.scrollAdjustments = 0;\n this.elementsCache = /* @__PURE__ */ new Map();\n this.observer = /* @__PURE__ */ (() => {\n let _ro = null;\n const get = () => {\n if (_ro) {\n return _ro;\n }\n if (!this.targetWindow || !this.targetWindow.ResizeObserver) {\n return null;\n }\n return _ro = new this.targetWindow.ResizeObserver((entries) => {\n entries.forEach((entry) => {\n const run = () => {\n this._measureElement(entry.target, entry);\n };\n this.options.useAnimationFrameWithResizeObserver ? requestAnimationFrame(run) : run();\n });\n });\n };\n return {\n disconnect: () => {\n var _a;\n (_a = get()) == null ? void 0 : _a.disconnect();\n _ro = null;\n },\n observe: (target) => {\n var _a;\n return (_a = get()) == null ? void 0 : _a.observe(target, { box: \"border-box\" });\n },\n unobserve: (target) => {\n var _a;\n return (_a = get()) == null ? void 0 : _a.unobserve(target);\n }\n };\n })();\n this.range = null;\n this.setOptions = (opts2) => {\n Object.entries(opts2).forEach(([key, value]) => {\n if (typeof value === \"undefined\") delete opts2[key];\n });\n this.options = {\n debug: false,\n initialOffset: 0,\n overscan: 1,\n paddingStart: 0,\n paddingEnd: 0,\n scrollPaddingStart: 0,\n scrollPaddingEnd: 0,\n horizontal: false,\n getItemKey: defaultKeyExtractor,\n rangeExtractor: defaultRangeExtractor,\n onChange: () => {\n },\n measureElement,\n initialRect: { width: 0, height: 0 },\n scrollMargin: 0,\n gap: 0,\n indexAttribute: \"data-index\",\n initialMeasurementsCache: [],\n lanes: 1,\n isScrollingResetDelay: 150,\n enabled: true,\n isRtl: false,\n useScrollendEvent: false,\n useAnimationFrameWithResizeObserver: false,\n ...opts2\n };\n };\n this.notify = (sync) => {\n var _a, _b;\n (_b = (_a = this.options).onChange) == null ? void 0 : _b.call(_a, this, sync);\n };\n this.maybeNotify = memo(\n () => {\n this.calculateRange();\n return [\n this.isScrolling,\n this.range ? this.range.startIndex : null,\n this.range ? this.range.endIndex : null\n ];\n },\n (isScrolling) => {\n this.notify(isScrolling);\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"maybeNotify\",\n debug: () => this.options.debug,\n initialDeps: [\n this.isScrolling,\n this.range ? this.range.startIndex : null,\n this.range ? this.range.endIndex : null\n ]\n }\n );\n this.cleanup = () => {\n this.unsubs.filter(Boolean).forEach((d) => d());\n this.unsubs = [];\n this.observer.disconnect();\n this.scrollElement = null;\n this.targetWindow = null;\n };\n this._didMount = () => {\n return () => {\n this.cleanup();\n };\n };\n this._willUpdate = () => {\n var _a;\n const scrollElement = this.options.enabled ? this.options.getScrollElement() : null;\n if (this.scrollElement !== scrollElement) {\n this.cleanup();\n if (!scrollElement) {\n this.maybeNotify();\n return;\n }\n this.scrollElement = scrollElement;\n if (this.scrollElement && \"ownerDocument\" in this.scrollElement) {\n this.targetWindow = this.scrollElement.ownerDocument.defaultView;\n } else {\n this.targetWindow = ((_a = this.scrollElement) == null ? void 0 : _a.window) ?? null;\n }\n this.elementsCache.forEach((cached) => {\n this.observer.observe(cached);\n });\n this._scrollToOffset(this.getScrollOffset(), {\n adjustments: void 0,\n behavior: void 0\n });\n this.unsubs.push(\n this.options.observeElementRect(this, (rect) => {\n this.scrollRect = rect;\n this.maybeNotify();\n })\n );\n this.unsubs.push(\n this.options.observeElementOffset(this, (offset, isScrolling) => {\n this.scrollAdjustments = 0;\n this.scrollDirection = isScrolling ? this.getScrollOffset() < offset ? \"forward\" : \"backward\" : null;\n this.scrollOffset = offset;\n this.isScrolling = isScrolling;\n this.maybeNotify();\n })\n );\n }\n };\n this.getSize = () => {\n if (!this.options.enabled) {\n this.scrollRect = null;\n return 0;\n }\n this.scrollRect = this.scrollRect ?? this.options.initialRect;\n return this.scrollRect[this.options.horizontal ? \"width\" : \"height\"];\n };\n this.getScrollOffset = () => {\n if (!this.options.enabled) {\n this.scrollOffset = null;\n return 0;\n }\n this.scrollOffset = this.scrollOffset ?? (typeof this.options.initialOffset === \"function\" ? this.options.initialOffset() : this.options.initialOffset);\n return this.scrollOffset;\n };\n this.getFurthestMeasurement = (measurements, index) => {\n const furthestMeasurementsFound = /* @__PURE__ */ new Map();\n const furthestMeasurements = /* @__PURE__ */ new Map();\n for (let m = index - 1; m >= 0; m--) {\n const measurement = measurements[m];\n if (furthestMeasurementsFound.has(measurement.lane)) {\n continue;\n }\n const previousFurthestMeasurement = furthestMeasurements.get(\n measurement.lane\n );\n if (previousFurthestMeasurement == null || measurement.end > previousFurthestMeasurement.end) {\n furthestMeasurements.set(measurement.lane, measurement);\n } else if (measurement.end < previousFurthestMeasurement.end) {\n furthestMeasurementsFound.set(measurement.lane, true);\n }\n if (furthestMeasurementsFound.size === this.options.lanes) {\n break;\n }\n }\n return furthestMeasurements.size === this.options.lanes ? Array.from(furthestMeasurements.values()).sort((a, b) => {\n if (a.end === b.end) {\n return a.index - b.index;\n }\n return a.end - b.end;\n })[0] : void 0;\n };\n this.getMeasurementOptions = memo(\n () => [\n this.options.count,\n this.options.paddingStart,\n this.options.scrollMargin,\n this.options.getItemKey,\n this.options.enabled\n ],\n (count, paddingStart, scrollMargin, getItemKey, enabled) => {\n this.pendingMeasuredCacheIndexes = [];\n return {\n count,\n paddingStart,\n scrollMargin,\n getItemKey,\n enabled\n };\n },\n {\n key: false\n }\n );\n this.getMeasurements = memo(\n () => [this.getMeasurementOptions(), this.itemSizeCache],\n ({ count, paddingStart, scrollMargin, getItemKey, enabled }, itemSizeCache) => {\n if (!enabled) {\n this.measurementsCache = [];\n this.itemSizeCache.clear();\n return [];\n }\n if (this.measurementsCache.length === 0) {\n this.measurementsCache = this.options.initialMeasurementsCache;\n this.measurementsCache.forEach((item) => {\n this.itemSizeCache.set(item.key, item.size);\n });\n }\n const min = this.pendingMeasuredCacheIndexes.length > 0 ? Math.min(...this.pendingMeasuredCacheIndexes) : 0;\n this.pendingMeasuredCacheIndexes = [];\n const measurements = this.measurementsCache.slice(0, min);\n for (let i = min; i < count; i++) {\n const key = getItemKey(i);\n const furthestMeasurement = this.options.lanes === 1 ? measurements[i - 1] : this.getFurthestMeasurement(measurements, i);\n const start = furthestMeasurement ? furthestMeasurement.end + this.options.gap : paddingStart + scrollMargin;\n const measuredSize = itemSizeCache.get(key);\n const size = typeof measuredSize === \"number\" ? measuredSize : this.options.estimateSize(i);\n const end = start + size;\n const lane = furthestMeasurement ? furthestMeasurement.lane : i % this.options.lanes;\n measurements[i] = {\n index: i,\n start,\n size,\n end,\n key,\n lane\n };\n }\n this.measurementsCache = measurements;\n return measurements;\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"getMeasurements\",\n debug: () => this.options.debug\n }\n );\n this.calculateRange = memo(\n () => [\n this.getMeasurements(),\n this.getSize(),\n this.getScrollOffset(),\n this.options.lanes\n ],\n (measurements, outerSize, scrollOffset, lanes) => {\n return this.range = measurements.length > 0 && outerSize > 0 ? calculateRange({\n measurements,\n outerSize,\n scrollOffset,\n lanes\n }) : null;\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"calculateRange\",\n debug: () => this.options.debug\n }\n );\n this.getVirtualIndexes = memo(\n () => {\n let startIndex = null;\n let endIndex = null;\n const range = this.calculateRange();\n if (range) {\n startIndex = range.startIndex;\n endIndex = range.endIndex;\n }\n this.maybeNotify.updateDeps([this.isScrolling, startIndex, endIndex]);\n return [\n this.options.rangeExtractor,\n this.options.overscan,\n this.options.count,\n startIndex,\n endIndex\n ];\n },\n (rangeExtractor, overscan, count, startIndex, endIndex) => {\n return startIndex === null || endIndex === null ? [] : rangeExtractor({\n startIndex,\n endIndex,\n overscan,\n count\n });\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"getVirtualIndexes\",\n debug: () => this.options.debug\n }\n );\n this.indexFromElement = (node) => {\n const attributeName = this.options.indexAttribute;\n const indexStr = node.getAttribute(attributeName);\n if (!indexStr) {\n console.warn(\n `Missing attribute name '${attributeName}={index}' on measured element.`\n );\n return -1;\n }\n return parseInt(indexStr, 10);\n };\n this._measureElement = (node, entry) => {\n const index = this.indexFromElement(node);\n const item = this.measurementsCache[index];\n if (!item) {\n return;\n }\n const key = item.key;\n const prevNode = this.elementsCache.get(key);\n if (prevNode !== node) {\n if (prevNode) {\n this.observer.unobserve(prevNode);\n }\n this.observer.observe(node);\n this.elementsCache.set(key, node);\n }\n if (node.isConnected) {\n this.resizeItem(index, this.options.measureElement(node, entry, this));\n }\n };\n this.resizeItem = (index, size) => {\n const item = this.measurementsCache[index];\n if (!item) {\n return;\n }\n const itemSize = this.itemSizeCache.get(item.key) ?? item.size;\n const delta = size - itemSize;\n if (delta !== 0) {\n if (this.shouldAdjustScrollPositionOnItemSizeChange !== void 0 ? this.shouldAdjustScrollPositionOnItemSizeChange(item, delta, this) : item.start < this.getScrollOffset() + this.scrollAdjustments) {\n if (process.env.NODE_ENV !== \"production\" && this.options.debug) {\n console.info(\"correction\", delta);\n }\n this._scrollToOffset(this.getScrollOffset(), {\n adjustments: this.scrollAdjustments += delta,\n behavior: void 0\n });\n }\n this.pendingMeasuredCacheIndexes.push(item.index);\n this.itemSizeCache = new Map(this.itemSizeCache.set(item.key, size));\n this.notify(false);\n }\n };\n this.measureElement = (node) => {\n if (!node) {\n this.elementsCache.forEach((cached, key) => {\n if (!cached.isConnected) {\n this.observer.unobserve(cached);\n this.elementsCache.delete(key);\n }\n });\n return;\n }\n this._measureElement(node, void 0);\n };\n this.getVirtualItems = memo(\n () => [this.getVirtualIndexes(), this.getMeasurements()],\n (indexes, measurements) => {\n const virtualItems = [];\n for (let k = 0, len = indexes.length; k < len; k++) {\n const i = indexes[k];\n const measurement = measurements[i];\n virtualItems.push(measurement);\n }\n return virtualItems;\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"getVirtualItems\",\n debug: () => this.options.debug\n }\n );\n this.getVirtualItemForOffset = (offset) => {\n const measurements = this.getMeasurements();\n if (measurements.length === 0) {\n return void 0;\n }\n return notUndefined(\n measurements[findNearestBinarySearch(\n 0,\n measurements.length - 1,\n (index) => notUndefined(measurements[index]).start,\n offset\n )]\n );\n };\n this.getOffsetForAlignment = (toOffset, align, itemSize = 0) => {\n const size = this.getSize();\n const scrollOffset = this.getScrollOffset();\n if (align === \"auto\") {\n align = toOffset >= scrollOffset + size ? \"end\" : \"start\";\n }\n if (align === \"center\") {\n toOffset += (itemSize - size) / 2;\n } else if (align === \"end\") {\n toOffset -= size;\n }\n const maxOffset = this.getTotalSize() + this.options.scrollMargin - size;\n return Math.max(Math.min(maxOffset, toOffset), 0);\n };\n this.getOffsetForIndex = (index, align = \"auto\") => {\n index = Math.max(0, Math.min(index, this.options.count - 1));\n const item = this.measurementsCache[index];\n if (!item) {\n return void 0;\n }\n const size = this.getSize();\n const scrollOffset = this.getScrollOffset();\n if (align === \"auto\") {\n if (item.end >= scrollOffset + size - this.options.scrollPaddingEnd) {\n align = \"end\";\n } else if (item.start <= scrollOffset + this.options.scrollPaddingStart) {\n align = \"start\";\n } else {\n return [scrollOffset, align];\n }\n }\n const toOffset = align === \"end\" ? item.end + this.options.scrollPaddingEnd : item.start - this.options.scrollPaddingStart;\n return [\n this.getOffsetForAlignment(toOffset, align, item.size),\n align\n ];\n };\n this.isDynamicMode = () => this.elementsCache.size > 0;\n this.scrollToOffset = (toOffset, { align = \"start\", behavior } = {}) => {\n if (behavior === \"smooth\" && this.isDynamicMode()) {\n console.warn(\n \"The `smooth` scroll behavior is not fully supported with dynamic size.\"\n );\n }\n this._scrollToOffset(this.getOffsetForAlignment(toOffset, align), {\n adjustments: void 0,\n behavior\n });\n };\n this.scrollToIndex = (index, { align: initialAlign = \"auto\", behavior } = {}) => {\n if (behavior === \"smooth\" && this.isDynamicMode()) {\n console.warn(\n \"The `smooth` scroll behavior is not fully supported with dynamic size.\"\n );\n }\n index = Math.max(0, Math.min(index, this.options.count - 1));\n let attempts = 0;\n const maxAttempts = 10;\n const tryScroll = (currentAlign) => {\n if (!this.targetWindow) return;\n const offsetInfo = this.getOffsetForIndex(index, currentAlign);\n if (!offsetInfo) {\n console.warn(\"Failed to get offset for index:\", index);\n return;\n }\n const [offset, align] = offsetInfo;\n this._scrollToOffset(offset, { adjustments: void 0, behavior });\n this.targetWindow.requestAnimationFrame(() => {\n const currentOffset = this.getScrollOffset();\n const afterInfo = this.getOffsetForIndex(index, align);\n if (!afterInfo) {\n console.warn(\"Failed to get offset for index:\", index);\n return;\n }\n if (!approxEqual(afterInfo[0], currentOffset)) {\n scheduleRetry(align);\n }\n });\n };\n const scheduleRetry = (align) => {\n if (!this.targetWindow) return;\n attempts++;\n if (attempts < maxAttempts) {\n if (process.env.NODE_ENV !== \"production\" && this.options.debug) {\n console.info(\"Schedule retry\", attempts, maxAttempts);\n }\n this.targetWindow.requestAnimationFrame(() => tryScroll(align));\n } else {\n console.warn(\n `Failed to scroll to index ${index} after ${maxAttempts} attempts.`\n );\n }\n };\n tryScroll(initialAlign);\n };\n this.scrollBy = (delta, { behavior } = {}) => {\n if (behavior === \"smooth\" && this.isDynamicMode()) {\n console.warn(\n \"The `smooth` scroll behavior is not fully supported with dynamic size.\"\n );\n }\n this._scrollToOffset(this.getScrollOffset() + delta, {\n adjustments: void 0,\n behavior\n });\n };\n this.getTotalSize = () => {\n var _a;\n const measurements = this.getMeasurements();\n let end;\n if (measurements.length === 0) {\n end = this.options.paddingStart;\n } else if (this.options.lanes === 1) {\n end = ((_a = measurements[measurements.length - 1]) == null ? void 0 : _a.end) ?? 0;\n } else {\n const endByLane = Array(this.options.lanes).fill(null);\n let endIndex = measurements.length - 1;\n while (endIndex >= 0 && endByLane.some((val) => val === null)) {\n const item = measurements[endIndex];\n if (endByLane[item.lane] === null) {\n endByLane[item.lane] = item.end;\n }\n endIndex--;\n }\n end = Math.max(...endByLane.filter((val) => val !== null));\n }\n return Math.max(\n end - this.options.scrollMargin + this.options.paddingEnd,\n 0\n );\n };\n this._scrollToOffset = (offset, {\n adjustments,\n behavior\n }) => {\n this.options.scrollToFn(offset, { behavior, adjustments }, this);\n };\n this.measure = () => {\n this.itemSizeCache = /* @__PURE__ */ new Map();\n this.notify(false);\n };\n this.setOptions(opts);\n }\n}\nconst findNearestBinarySearch = (low, high, getCurrentValue, value) => {\n while (low <= high) {\n const middle = (low + high) / 2 | 0;\n const currentValue = getCurrentValue(middle);\n if (currentValue < value) {\n low = middle + 1;\n } else if (currentValue > value) {\n high = middle - 1;\n } else {\n return middle;\n }\n }\n if (low > 0) {\n return low - 1;\n } else {\n return 0;\n }\n};\nfunction calculateRange({\n measurements,\n outerSize,\n scrollOffset,\n lanes\n}) {\n const lastIndex = measurements.length - 1;\n const getOffset = (index) => measurements[index].start;\n if (measurements.length <= lanes) {\n return {\n startIndex: 0,\n endIndex: lastIndex\n };\n }\n let startIndex = findNearestBinarySearch(\n 0,\n lastIndex,\n getOffset,\n scrollOffset\n );\n let endIndex = startIndex;\n if (lanes === 1) {\n while (endIndex < lastIndex && measurements[endIndex].end < scrollOffset + outerSize) {\n endIndex++;\n }\n } else if (lanes > 1) {\n const endPerLane = Array(lanes).fill(0);\n while (endIndex < lastIndex && endPerLane.some((pos) => pos < scrollOffset + outerSize)) {\n const item = measurements[endIndex];\n endPerLane[item.lane] = item.end;\n endIndex++;\n }\n const startPerLane = Array(lanes).fill(scrollOffset + outerSize);\n while (startIndex >= 0 && startPerLane.some((pos) => pos >= scrollOffset)) {\n const item = measurements[startIndex];\n startPerLane[item.lane] = item.start;\n startIndex--;\n }\n startIndex = Math.max(0, startIndex - startIndex % lanes);\n endIndex = Math.min(lastIndex, endIndex + (lanes - 1 - endIndex % lanes));\n }\n return { startIndex, endIndex };\n}\nexport {\n Virtualizer,\n approxEqual,\n debounce,\n defaultKeyExtractor,\n defaultRangeExtractor,\n elementScroll,\n measureElement,\n memo,\n notUndefined,\n observeElementOffset,\n observeElementRect,\n observeWindowOffset,\n observeWindowRect,\n windowScroll\n};\n//# sourceMappingURL=index.js.map\n","import * as React from \"react\";\nimport { flushSync } from \"react-dom\";\nimport { Virtualizer, elementScroll, observeElementOffset, observeElementRect, windowScroll, observeWindowOffset, observeWindowRect } from \"@tanstack/virtual-core\";\nexport * from \"@tanstack/virtual-core\";\nconst useIsomorphicLayoutEffect = typeof document !== \"undefined\" ? React.useLayoutEffect : React.useEffect;\nfunction useVirtualizerBase(options) {\n const rerender = React.useReducer(() => ({}), {})[1];\n const resolvedOptions = {\n ...options,\n onChange: (instance2, sync) => {\n var _a;\n if (sync) {\n flushSync(rerender);\n } else {\n rerender();\n }\n (_a = options.onChange) == null ? void 0 : _a.call(options, instance2, sync);\n }\n };\n const [instance] = React.useState(\n () => new Virtualizer(resolvedOptions)\n );\n instance.setOptions(resolvedOptions);\n useIsomorphicLayoutEffect(() => {\n return instance._didMount();\n }, []);\n useIsomorphicLayoutEffect(() => {\n return instance._willUpdate();\n });\n return instance;\n}\nfunction useVirtualizer(options) {\n return useVirtualizerBase({\n observeElementRect,\n observeElementOffset,\n scrollToFn: elementScroll,\n ...options\n });\n}\nfunction useWindowVirtualizer(options) {\n return useVirtualizerBase({\n getScrollElement: () => typeof document !== \"undefined\" ? window : null,\n observeElementRect: observeWindowRect,\n observeElementOffset: observeWindowOffset,\n scrollToFn: windowScroll,\n initialOffset: () => typeof document !== \"undefined\" ? window.scrollY : 0,\n ...options\n });\n}\nexport {\n useVirtualizer,\n useWindowVirtualizer\n};\n//# sourceMappingURL=index.js.map\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { mergeClassNameProps } from \"#powerhouse\";\nexport const FilterItem = (props) => {\n const { item, ...containerProps } = props;\n return (_jsxs(\"div\", { ...mergeClassNameProps(containerProps, \"flex h-full flex-row items-center justify-between gap-x-4 px-2\"), children: [item.icon, _jsx(\"div\", { className: \"text-sm font-semibold text-slate-200\", children: item.label })] }));\n};\n//# sourceMappingURL=filter-item.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, Icon, } from \"#powerhouse\";\nimport { cn } from \"#ui\";\nimport { useMemo } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\nimport { FilterItem } from \"./filter-item.js\";\nexport const ConnectSearchBar = (props) => {\n const { value, onChange, placeholder, filterLabel, filterItems, selectedFilter, onFilterSelect = () => { }, className, } = props;\n const items = useMemo(() => filterItems?.map((item) => ({\n id: item.id,\n content: _jsx(FilterItem, { item: item }),\n })) ?? [], [filterItems]);\n const selectedItemFilter = filterItems?.find((item) => item.id === selectedFilter);\n const filterLabelContent = selectedItemFilter ? (_jsx(FilterItem, { className: \"gap-x-1\", item: selectedItemFilter })) : (filterLabel && (_jsx(\"div\", { className: \"mr-2 text-sm font-semibold text-slate-200\", children: filterLabel })));\n function handleChange(event) {\n onChange?.(event.target.value);\n }\n return (_jsxs(\"div\", { className: cn(\"flex items-center\", className), children: [_jsx(Icon, { className: \"mr-3\", name: \"Search\" }), _jsx(\"input\", { className: twMerge(\"flex h-[52px] min-w-0 flex-1 items-center rounded-xl border border-gray-200 bg-gray-50 px-4 text-sm text-slate-200 outline-none\"), onChange: handleChange, placeholder: placeholder, value: value }), _jsxs(DropdownMenu, { children: [_jsxs(DropdownMenuTrigger, { className: \"ml-3 flex h-full flex-row items-center outline-none\", children: [filterLabelContent, \" \", _jsx(Icon, { name: \"ChevronDown\" })] }), _jsx(DropdownMenuContent, { className: \"rounded-xl border border-gray-100 bg-gray-50 p-2\", children: items.map((item) => (_jsx(DropdownMenuItem, { className: \"h-10 cursor-pointer overflow-hidden rounded-lg hover:bg-gray-100\", id: item.id, onSelect: () => onFilterSelect(item.id), children: item.content }, item.id))) })] })] }));\n};\n//# sourceMappingURL=search-bar.js.map","export const BUDGET = \"powerhouse/budget-statement\";\nexport const DEFAULT = \"powerhouse/default\";\nexport const MAKERDAO_RWA_PORTFOLIO = \"makerdao/rwa-portfolio\";\nexport const documentTypes = [BUDGET, DEFAULT, MAKERDAO_RWA_PORTFOLIO];\n//# sourceMappingURL=documents.js.map","export default \"data:image/png;base64,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\"","export default \"__VITE_ASSET__D4y_BsAi__\"","export default \"data:image/png;base64,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\"","import { BUDGET, DEFAULT, MAKERDAO_RWA_PORTFOLIO } from \"#connect\";\nimport BudgetStatementImg from \"#assets/icons/budget.png\";\nimport MakerdaoRWAPortfolioImg from \"#assets/icons/rwa-report.png\";\nimport DefaultImg from \"#assets/icons/template.png\";\nexport const iconMap = {\n [BUDGET]: BudgetStatementImg,\n [DEFAULT]: DefaultImg,\n [MAKERDAO_RWA_PORTFOLIO]: MakerdaoRWAPortfolioImg,\n};\n//# sourceMappingURL=icons.js.map","export const DRIVE = \"DRIVE\";\nexport const FOLDER = \"FOLDER\";\nexport const FILE = \"FILE\";\nexport const CREATE = \"CREATE\";\nexport const WRITE = \"WRITE\";\nexport const READ = \"READ\";\nexport const UI_NODE = \"UI_NODE\";\n//# sourceMappingURL=nodes.js.map","export const SYNCING = \"SYNCING\";\nexport const SUCCESS = \"SUCCESS\";\nexport const CONFLICT = \"CONFLICT\";\nexport const MISSING = \"MISSING\";\nexport const ERROR = \"ERROR\";\nexport const INITIAL_SYNC = \"INITIAL_SYNC\";\nexport const syncStatuses = [\n INITIAL_SYNC,\n SYNCING,\n SUCCESS,\n CONFLICT,\n MISSING,\n ERROR,\n];\n//# sourceMappingURL=syncing.js.map","import { UI_NODE } from \"#connect\";\nimport { useCallback, useMemo, useState } from \"react\";\nexport function useDrag(props) {\n const { node } = props;\n const [isDragging, setIsDragging] = useState(false);\n const onDragStart = useCallback((event) => {\n event.dataTransfer.setData(UI_NODE, JSON.stringify(node));\n }, [node]);\n const onDragEnd = useCallback(() => {\n setIsDragging(false);\n }, []);\n return useMemo(() => {\n return {\n isDragging,\n dragProps: {\n draggable: true,\n onDragStart,\n onDragEnd,\n },\n };\n }, [isDragging, onDragEnd, onDragStart]);\n}\n//# sourceMappingURL=use-drag.js.map","import { DEFAULT, documentTypes, iconMap } from \"#connect\";\nexport function getDocumentIconSrc(documentType, customDocumentIconSrc) {\n if (customDocumentIconSrc) {\n return customDocumentIconSrc;\n }\n if (documentTypes.includes(documentType)) {\n return iconMap[documentType];\n }\n return iconMap[DEFAULT];\n}\n//# sourceMappingURL=get-document-icon-src.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Button } from \"@powerhousedao/design-system\";\nfunction getDocumentSpec(doc) {\n if (\"documentModelState\" in doc) {\n return doc.documentModelState;\n }\n return doc.documentModel;\n}\nexport const CreateDocument = ({ documentModels, createDocument, }) => {\n return (_jsxs(\"div\", { className: \"px-6\", children: [_jsx(\"h3\", { className: \"mb-3 mt-4 text-xl font-bold text-gray-600\", children: \"New document\" }), _jsx(\"div\", { className: \"flex w-full flex-wrap gap-4\", children: documentModels?.map((doc) => {\n const spec = getDocumentSpec(doc);\n return (_jsx(Button, { color: \"light\", title: spec.name, \"aria-description\": spec.description, onClick: () => createDocument(doc), children: _jsx(\"span\", { className: \"text-sm\", children: spec.name }) }, spec.id));\n }) })] }));\n};\n//# sourceMappingURL=create-document.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { FileItem, useWindowSize } from \"@powerhousedao/design-system\";\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport React, { useRef } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nconst GAP = 8;\nconst ITEM_WIDTH = 256;\nconst ITEM_HEIGHT = 48;\nconst USED_SPACE = 420;\nexport function FileContentView(props) {\n const parentRef = useRef(null);\n const { t } = useTranslation();\n const windowSize = useWindowSize();\n const { fileNodes } = props;\n const availableWidth = windowSize.innerWidth - USED_SPACE;\n const columnCount = Math.floor(availableWidth / (ITEM_WIDTH + GAP)) || 1;\n const rowCount = Math.ceil(fileNodes.length / columnCount);\n const rowVirtualizer = useVirtualizer({\n count: rowCount,\n getScrollElement: () => parentRef.current,\n estimateSize: (index) => {\n if (index > 0) {\n return ITEM_HEIGHT + GAP;\n }\n return ITEM_HEIGHT;\n },\n overscan: 5,\n });\n const columnVirtualizer = useVirtualizer({\n horizontal: true,\n count: columnCount,\n getScrollElement: () => parentRef.current,\n estimateSize: (index) => {\n if (index > 0) {\n return ITEM_WIDTH + GAP;\n }\n return ITEM_WIDTH;\n },\n overscan: 5,\n });\n const getItemIndex = (rowIndex, columnIndex) => rowIndex * columnCount + columnIndex;\n const getItem = (rowIndex, columnIndex) => {\n const index = getItemIndex(rowIndex, columnIndex);\n return fileNodes[index] || null;\n };\n if (fileNodes.length === 0) {\n return (_jsx(\"div\", { className: \"mb-8 text-sm text-gray-400\", children: t(\"folderView.sections.documents.empty\", {\n defaultValue: \"No documents or files 📄\",\n }) }));\n }\n const renderItem = (rowIndex, columnIndex) => {\n const fileNode = getItem(rowIndex, columnIndex);\n if (!fileNode) {\n return null;\n }\n return (_jsx(\"div\", { style: {\n marginLeft: columnIndex === 0 ? 0 : GAP,\n }, children: _jsx(FileItem, { fileNode: fileNode, ...props }, fileNode.id) }));\n };\n return (_jsx(\"div\", { ref: parentRef, style: {\n height: `400px`,\n width: `100%`,\n overflow: \"auto\",\n }, children: _jsx(\"div\", { style: {\n height: `${rowVirtualizer.getTotalSize()}px`,\n width: `${columnVirtualizer.getTotalSize()}px`,\n position: \"relative\",\n }, children: rowVirtualizer.getVirtualItems().map((virtualRow) => (_jsx(React.Fragment, { children: columnVirtualizer.getVirtualItems().map((virtualColumn) => (_jsx(\"div\", { style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n marginTop: virtualRow.index === 0 ? 0 : GAP,\n width: `${virtualColumn.size}px`,\n height: `${virtualRow.size}px`,\n transform: `translateX(${virtualColumn.start}px) translateY(${virtualRow.start}px)`,\n }, children: renderItem(virtualRow.index, virtualColumn.index) }, virtualColumn.key))) }, virtualRow.key))) }) }));\n}\nexport default FileContentView;\n//# sourceMappingURL=file-content-view.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { cn } from \"@powerhousedao/design-system\";\nexport function DriveLayout({ children, className, ...props }) {\n return (_jsx(DriveLayout.Container, { className: className, ...props, children: children }));\n}\nDriveLayout.Container = function DriveLayoutContainer({ children, className, containerProps, ...props }) {\n return (_jsx(\"div\", { className: cn(\"flex grow flex-col overflow-auto rounded-2xl bg-gray-50 p-2\", className), ...containerProps, ...props, children: children }));\n};\nDriveLayout.Header = function DriveLayoutHeader({ children, className, containerProps, ...props }) {\n return (_jsx(\"div\", { className: cn(\"flex-0\", className), ...containerProps, ...props, children: children }));\n};\nDriveLayout.Content = function DriveLayoutContent({ children, className, containerProps, ...props }) {\n return (_jsx(\"div\", { className: cn(\"mb-5 flex-1 px-4\", className), ...containerProps, ...props, children: children }));\n};\nDriveLayout.ContentSection = function DriveLayoutContentSection({ title, children, className, containerProps, ...props }) {\n return (_jsxs(\"div\", { className: cn(className), ...containerProps, ...props, children: [title && (_jsx(\"div\", { className: \"mb-4 text-base font-semibold text-gray-600\", children: title })), _jsx(\"div\", { className: \"flex flex-wrap gap-2\", children: children })] }));\n};\nDriveLayout.Footer = function DriveLayoutFooter({ children, className, containerProps, ...props }) {\n return (_jsx(\"div\", { className: cn(\"flex-0\", className), ...containerProps, ...props, children: children }));\n};\n//# sourceMappingURL=layout.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { FolderItem, useDrop } from \"@powerhousedao/design-system\";\nimport { useFileChildNodesForId, useFolderChildNodesForId, } from \"@powerhousedao/reactor-browser\";\nimport { useTranslation } from \"react-i18next\";\nimport { twMerge } from \"tailwind-merge\";\nimport FileContentView from \"./file-content-view.js\";\nimport { DriveLayout } from \"./layout.js\";\nexport function FolderView(props) {\n const { node, isAllowedToCreateDocuments, className, containerProps, sharingType, getSyncStatusSync, setSelectedNode, onAddFile, onCopyNode, onMoveNode, onRenameNode, onDuplicateNode, onAddFolder, onAddAndSelectNewFolder, showDeleteNodeModal, } = props;\n const { t } = useTranslation();\n const folderNodes = useFolderChildNodesForId(node?.id);\n const fileNodes = useFileChildNodesForId(node?.id);\n const { isDropTarget, dropProps } = useDrop({\n node,\n onAddFile,\n onCopyNode,\n onMoveNode,\n });\n return (_jsxs(\"div\", { className: twMerge(\"rounded-md border-2 border-transparent p-2\", isDropTarget && \"border-dashed border-blue-100\", className), ...containerProps, ...dropProps, children: [_jsx(DriveLayout.ContentSection, { title: t(\"folderView.sections.folders.title\", {\n defaultValue: \"Folders\",\n }), className: \"mb-4\", children: folderNodes.length > 0 ? (folderNodes.map((folderNode) => (_jsx(FolderItem, { folderNode: folderNode, isAllowedToCreateDocuments: isAllowedToCreateDocuments, sharingType: sharingType, getSyncStatusSync: getSyncStatusSync, setSelectedNode: setSelectedNode, onAddFile: onAddFile, onCopyNode: onCopyNode, onMoveNode: onMoveNode, onRenameNode: onRenameNode, onDuplicateNode: onDuplicateNode, onAddFolder: onAddFolder, onAddAndSelectNewFolder: onAddAndSelectNewFolder, showDeleteNodeModal: showDeleteNodeModal }, folderNode.id)))) : (_jsx(\"div\", { className: \"mb-8 text-sm text-gray-400\", children: t(\"folderView.sections.folders.empty\", {\n defaultValue: \"No documents or files 📄\",\n }) })) }), _jsx(DriveLayout.ContentSection, { title: t(\"folderView.sections.documents.title\", {\n defaultValue: \"Documents and files\",\n }), children: _jsx(\"div\", { className: twMerge(\"w-full\", fileNodes.length > 0 ? \"min-h-[400px]\" : \"min-h-14\"), children: _jsx(FileContentView, { fileNodes: fileNodes, isAllowedToCreateDocuments: isAllowedToCreateDocuments, sharingType: sharingType, getSyncStatusSync: getSyncStatusSync, setSelectedNode: setSelectedNode, showDeleteNodeModal: showDeleteNodeModal, onAddFile: onAddFile, onCopyNode: onCopyNode, onMoveNode: onMoveNode, onRenameNode: onRenameNode, onDuplicateNode: onDuplicateNode, onAddFolder: onAddFolder, onAddAndSelectNewFolder: onAddAndSelectNewFolder }) }) })] }));\n}\nexport default FolderView;\n//# sourceMappingURL=folder-view.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { ConnectSearchBar, Icon } from \"@powerhousedao/design-system\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nconst defaultFilterItems = [\n {\n id: \"project\",\n label: \".project\",\n icon: _jsx(Icon, { name: \"Project\", color: \"#FF6A55\", size: 16 }),\n },\n {\n id: \"budget\",\n label: \".budget\",\n icon: _jsx(Icon, { name: \"BarChart\", color: \"#8E55EA\", size: 16 }),\n },\n {\n id: \"profile\",\n label: \".profile\",\n icon: _jsx(Icon, { name: \"Person\", color: \"#3E90F0\", size: 16 }),\n },\n {\n id: \"legal\",\n label: \".legal\",\n icon: _jsx(Icon, { name: \"Briefcase\", color: \"#4BAB71\", size: 16 }),\n },\n {\n id: \"atlas\",\n label: \".Atlas\",\n icon: _jsx(Icon, { name: \"Globe\", color: \"#FF8A00\", size: 16 }),\n },\n];\nexport const SearchBar = () => {\n const { t } = useTranslation();\n const [value, setValue] = useState(\"\"); // TODO\n return (_jsx(ConnectSearchBar, { className: \"max-w-searchbar-width m-4 shrink-0 bg-gray-100\", placeholder: t(\"searchbar.placeholder\"), filterLabel: t(\"searchbar.filterLabel\"), filterItems: defaultFilterItems, value: value, onChange: setValue }));\n};\n//# sourceMappingURL=search-bar.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Breadcrumbs, useBreadcrumbs, useDrop, } from \"@powerhousedao/design-system\";\nimport { getSyncStatusSync, makeFolderNodeFromDrive, setSelectedNode, showCreateDocumentModal, showDeleteNodeModal, useDocumentModelModules, useNodeActions, useSelectedDriveDocument, useSelectedFolder, useSelectedNodePath, useShowSearchBar, useUserPermissions, } from \"@powerhousedao/reactor-browser\";\nimport { getDriveSharingType } from \"document-drive/server/utils\";\nimport { CreateDocument } from \"./components/create-document.js\";\nimport FolderView from \"./components/folder-view.js\";\nimport { DriveLayout } from \"./components/layout.js\";\nimport { SearchBar } from \"./components/search-bar.js\";\nexport function Editor(props) {\n const { className, children } = props;\n const [selectedDrive] = useSelectedDriveDocument();\n const { onRenameNode, onDuplicateNode, onAddFolder, onAddFile, onCopyNode, onMoveNode, } = useNodeActions();\n const selectedFolder = useSelectedFolder();\n const selectedDriveAsFolderNode = makeFolderNodeFromDrive(selectedDrive);\n const documentModels = useDocumentModelModules();\n const selectedNodePath = useSelectedNodePath();\n const { isAllowedToCreateDocuments } = useUserPermissions();\n const showSearchBar = useShowSearchBar();\n const onCreateDocument = (documentModel) => {\n showCreateDocumentModal(documentModel.documentModel.id);\n };\n const { isDropTarget, dropProps } = useDrop({\n node: selectedDriveAsFolderNode,\n onAddFile,\n onCopyNode,\n onMoveNode,\n });\n const { breadcrumbs, onBreadcrumbSelected } = useBreadcrumbs({\n selectedNodePath,\n setSelectedNode,\n });\n const sharingType = getDriveSharingType(selectedDrive);\n async function onAddAndSelectNewFolder(name) {\n await onAddFolder(name, selectedFolder);\n setSelectedNode(selectedFolder);\n }\n const showDocumentEditor = !!children;\n return (_jsxs(DriveLayout, { className: className, children: [!showDocumentEditor && (_jsxs(DriveLayout.Header, { children: [_jsx(Breadcrumbs, { breadcrumbs: breadcrumbs, createEnabled: isAllowedToCreateDocuments, onCreate: onAddAndSelectNewFolder, onBreadcrumbSelected: onBreadcrumbSelected }), showSearchBar && _jsx(SearchBar, {})] })), showDocumentEditor ? (children) : (_jsx(DriveLayout.Content, { ...dropProps, className: isDropTarget ? \"rounded-xl bg-blue-100\" : \"\", children: _jsx(FolderView, { node: selectedFolder ?? selectedDriveAsFolderNode, sharingType: sharingType, getSyncStatusSync: getSyncStatusSync, setSelectedNode: setSelectedNode, onRenameNode: onRenameNode, onDuplicateNode: onDuplicateNode, onAddFolder: onAddFolder, onAddFile: onAddFile, onCopyNode: onCopyNode, onMoveNode: onMoveNode, onAddAndSelectNewFolder: onAddAndSelectNewFolder, showDeleteNodeModal: (node) => showDeleteNodeModal(node.id), isAllowedToCreateDocuments: isAllowedToCreateDocuments }) })), !showDocumentEditor && (_jsx(DriveLayout.Footer, { children: isAllowedToCreateDocuments && (_jsx(CreateDocument, { documentModels: documentModels?.filter((module) => module.documentModel.id !== \"powerhouse/document-drive\"), createDocument: onCreateDocument })) }))] }));\n}\n//# sourceMappingURL=editor.js.map","import { Editor } from \"./editor.js\";\nexport const GenericDriveExplorer = {\n Component: Editor,\n documentTypes: [\"powerhouse/document-drive\"],\n config: {\n id: \"GenericDriveExplorer\",\n name: \"Drive Explorer App\",\n disableExternalControls: true,\n documentToolbarEnabled: true,\n showSwitchboardLink: true,\n },\n};\n//# sourceMappingURL=index.js.map"],"names":["useWindowSize","windowSize","setWindowSize","useState","useEffect","windowSizeHandler","Breadcrumbs","props","breadcrumbs","createEnabled","onBreadcrumbSelected","isCreating","setIsCreating","onCreate","onAddNew","onSubmit","useCallback","name","_a","onCancel","_jsxs","node","Fragment","_jsx","Breadcrumb","NodeInput","Icon","onClick","useBreadcrumbs","selectedNodePath","setSelectedNode","breadcrumb","useDrop","onAddFile","onCopyNode","onMoveNode","trackNestedDrag","acceptedFileExtensions","isDropTarget","setIsDropTarget","dragDepthRef","useRef","isValidDropContent","dataTransfer","UI_NODE","item","onDragOver","event","onDragEnter","onDragLeaveDepth","onDragLeaveSimple","onDrop","closestDropZone","dropZoneId","droppedFiles","getDroppedFiles","file","fileName","ext","altOrOptionKeyPressed","data","droppedNode","error","useMemo","baseProps","items","syncIcons","SyncStatusIcon","syncStatus","className","overrideSyncIcons","iconProps","icons","INITIAL_SYNC","twMerge","SYNCING","SUCCESS","CONFLICT","MISSING","ERROR","FileItem","fileNode","sharingType","customDocumentIconSrc","isAllowedToCreateDocuments","getSyncStatusSync","onRenameNode","onDuplicateNode","showDeleteNodeModal","mode","setMode","READ","isDropdownMenuOpen","setIsDropdownMenuOpen","dragProps","useDrag","isReadMode","dropdownMenuHandlers","DUPLICATE","RENAME","WRITE","DELETE","dropdownMenuOptions","nodeOptionsMap","id","option","defaultFileOptions","onDropdownMenuOptionClick","itemId","handler","iconSrc","getDocumentIconSrc","iconNode","containerStyles","content","ConnectDropdownMenu","e","FolderItem","folderNode","dropProps","defaultFolderOptions","defaultValue","minLength","inputProps","value","setValue","ref","useOnClickOutside","handleSubmit","useEventListener","useLayoutEffect","_b","_c","memo","getDeps","fn","opts","deps","result","memoizedFunction","_d","depTime","newDeps","dep","index","resultTime","depEndTime","resultEndTime","resultFpsPercentage","pad","str","num","notUndefined","msg","approxEqual","a","b","debounce","targetWindow","ms","timeoutId","args","getRect","element","offsetWidth","offsetHeight","defaultKeyExtractor","defaultRangeExtractor","range","start","end","arr","i","observeElementRect","instance","cb","rect","width","height","observer","entries","run","entry","box","addEventListenerOptions","supportsScrollend","observeElementOffset","offset","fallback","createHandler","isScrolling","horizontal","isRtl","endHandler","registerScrollendEvent","measureElement","elementScroll","adjustments","behavior","toOffset","Virtualizer","_ro","get","target","opts2","key","sync","d","scrollElement","cached","measurements","furthestMeasurementsFound","furthestMeasurements","m","measurement","previousFurthestMeasurement","count","paddingStart","scrollMargin","getItemKey","enabled","itemSizeCache","min","furthestMeasurement","measuredSize","size","lane","outerSize","scrollOffset","lanes","calculateRange","startIndex","endIndex","rangeExtractor","overscan","attributeName","indexStr","prevNode","itemSize","delta","indexes","virtualItems","k","len","findNearestBinarySearch","align","maxOffset","initialAlign","attempts","maxAttempts","tryScroll","currentAlign","offsetInfo","currentOffset","afterInfo","scheduleRetry","endByLane","val","low","high","getCurrentValue","middle","currentValue","lastIndex","getOffset","endPerLane","pos","startPerLane","useIsomorphicLayoutEffect","React","useVirtualizerBase","options","rerender","resolvedOptions","instance2","flushSync","useVirtualizer","FilterItem","containerProps","mergeClassNameProps","ConnectSearchBar","onChange","placeholder","filterLabel","filterItems","selectedFilter","onFilterSelect","selectedItemFilter","filterLabelContent","handleChange","cn","DropdownMenu","DropdownMenuTrigger","DropdownMenuContent","DropdownMenuItem","BUDGET","DEFAULT","MAKERDAO_RWA_PORTFOLIO","documentTypes","BudgetStatementImg","MakerdaoRWAPortfolioImg","DefaultImg","iconMap","isDragging","setIsDragging","onDragStart","onDragEnd","documentType","getDocumentSpec","doc","CreateDocument","documentModels","createDocument","spec","Button","GAP","ITEM_WIDTH","ITEM_HEIGHT","USED_SPACE","FileContentView","parentRef","t","useTranslation","fileNodes","availableWidth","columnCount","rowCount","rowVirtualizer","columnVirtualizer","getItemIndex","rowIndex","columnIndex","getItem","renderItem","virtualRow","virtualColumn","DriveLayout","children","title","FolderView","onAddFolder","onAddAndSelectNewFolder","folderNodes","useFolderChildNodesForId","useFileChildNodesForId","defaultFilterItems","SearchBar","Editor","selectedDrive","useSelectedDriveDocument","useNodeActions","selectedFolder","useSelectedFolder","selectedDriveAsFolderNode","makeFolderNodeFromDrive","useDocumentModelModules","useSelectedNodePath","useUserPermissions","showSearchBar","useShowSearchBar","onCreateDocument","documentModel","showCreateDocumentModal","getDriveSharingType","showDocumentEditor","module","GenericDriveExplorer"],"mappings":"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","x_google_ignoreList":[8,9,10]}
|
|
1
|
+
{"version":3,"file":"index.CXV2LGi6.js","sources":["../../../../packages/design-system/dist/src/powerhouse/hooks/useWindowSize.js","../../../../packages/design-system/dist/src/connect/components/breadcrumbs/breadcrumbs.js","../../../../packages/design-system/dist/src/connect/components/breadcrumbs/useBreadcrumbs.js","../../../../packages/design-system/dist/src/connect/hooks/drag-and-drop/use-drop.js","../../../../packages/design-system/dist/src/connect/components/status-icon/sync-status-icon.js","../../../../packages/design-system/dist/src/connect/components/file-item/file-item.js","../../../../packages/design-system/dist/src/connect/components/folder-item/folder-item.js","../../../../packages/design-system/dist/src/connect/components/node-input/node-input.js","../../../../node_modules/.pnpm/@tanstack+virtual-core@3.13.12/node_modules/@tanstack/virtual-core/dist/esm/utils.js","../../../../node_modules/.pnpm/@tanstack+virtual-core@3.13.12/node_modules/@tanstack/virtual-core/dist/esm/index.js","../../../../node_modules/.pnpm/@tanstack+react-virtual@3.13.12_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@tanstack/react-virtual/dist/esm/index.js","../../../../packages/design-system/dist/src/connect/components/search-bar/filter-item.js","../../../../packages/design-system/dist/src/connect/components/search-bar/search-bar.js","../../../../packages/design-system/dist/src/connect/constants/documents.js","../../../../packages/design-system/dist/src/assets/icons/budget.png","../../../../packages/design-system/dist/src/assets/icons/rwa-report.png","../../../../packages/design-system/dist/src/assets/icons/template.png","../../../../packages/design-system/dist/src/connect/constants/icons.js","../../../../packages/design-system/dist/src/connect/constants/nodes.js","../../../../packages/design-system/dist/src/connect/constants/syncing.js","../../../../packages/design-system/dist/src/connect/hooks/drag-and-drop/use-drag.js","../../../../packages/design-system/dist/src/connect/utils/get-document-icon-src.js","../../../../packages/common/dist/editors/generic-drive-explorer/components/create-document.js","../../../../packages/common/dist/editors/generic-drive-explorer/components/file-content-view.js","../../../../packages/common/dist/editors/generic-drive-explorer/components/layout.js","../../../../packages/common/dist/editors/generic-drive-explorer/components/folder-view.js","../../../../packages/common/dist/editors/generic-drive-explorer/components/search-bar.js","../../../../packages/common/dist/editors/generic-drive-explorer/editor.js","../../../../packages/common/dist/editors/generic-drive-explorer/index.js"],"sourcesContent":["import { useEffect, useState } from \"react\";\nexport const useWindowSize = () => {\n const [windowSize, setWindowSize] = useState({\n innerWidth: window.innerWidth,\n innerHeight: window.innerHeight,\n });\n useEffect(() => {\n const windowSizeHandler = () => {\n setWindowSize({\n innerWidth: window.innerWidth,\n innerHeight: window.innerHeight,\n });\n };\n window.addEventListener(\"resize\", windowSizeHandler);\n return () => {\n window.removeEventListener(\"resize\", windowSizeHandler);\n };\n }, []);\n return windowSize;\n};\n//# sourceMappingURL=useWindowSize.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { NodeInput } from \"#connect\";\nimport { Icon } from \"#powerhouse\";\nimport { Fragment, useCallback, useState } from \"react\";\nexport function Breadcrumbs(props) {\n const { breadcrumbs, createEnabled, onBreadcrumbSelected } = props;\n const [isCreating, setIsCreating] = useState(false);\n const onCreate = props.createEnabled ? props.onCreate : undefined;\n function onAddNew() {\n setIsCreating(true);\n }\n const onSubmit = useCallback((name) => {\n if (!createEnabled || !onCreate)\n return;\n onCreate(name, breadcrumbs.at(-1)?.id);\n setIsCreating(false);\n }, [breadcrumbs, createEnabled, onCreate]);\n const onCancel = useCallback(() => {\n setIsCreating(false);\n }, []);\n return (_jsxs(\"div\", { className: \"flex h-9 flex-row items-center gap-2 p-6 text-gray-500\", children: [breadcrumbs.map((node) => (_jsxs(Fragment, { children: [_jsx(Breadcrumb, { node: node, onClick: onBreadcrumbSelected }), _jsx(\"span\", { children: \"/\" })] }, node.id))), createEnabled &&\n (isCreating ? (_jsx(NodeInput, { className: \"text-gray-800\", defaultValue: \"New Folder\", onCancel: onCancel, onSubmit: onSubmit, placeholder: \"New Folder\" })) : (_jsxs(\"button\", { type: \"button\", className: \"ml-1 flex items-center justify-center gap-2 rounded-md bg-gray-50 px-2 py-1.5 transition-colors hover:bg-gray-200 hover:text-gray-800\", onClick: onAddNew, children: [_jsx(Icon, { name: \"Plus\", size: 14 }), \"Add new\"] })))] }));\n}\nexport function Breadcrumb(props) {\n const { node, onClick } = props;\n return (_jsx(\"div\", { className: \"transition-colors last-of-type:text-gray-800 hover:text-gray-800\", onClick: () => onClick(node), role: \"button\", children: node.name }));\n}\n//# sourceMappingURL=breadcrumbs.js.map","import { useCallback } from \"react\";\nexport function useBreadcrumbs({ selectedNodePath, setSelectedNode, }) {\n const onBreadcrumbSelected = useCallback((breadcrumb) => {\n setSelectedNode(breadcrumb);\n }, [setSelectedNode]);\n return {\n breadcrumbs: selectedNodePath,\n onBreadcrumbSelected,\n };\n}\n//# sourceMappingURL=useBreadcrumbs.js.map","import { UI_NODE } from \"#connect\";\nimport { useCallback, useMemo, useRef, useState } from \"react\";\nexport function useDrop(props) {\n const { node, onAddFile, onCopyNode, onMoveNode, trackNestedDrag = false, acceptedFileExtensions, } = props;\n const [isDropTarget, setIsDropTarget] = useState(false);\n const dragDepthRef = useRef(0);\n /**\n * Check if the dragged content is valid based on accepted file extensions\n */\n const isValidDropContent = useCallback((dataTransfer) => {\n if (!acceptedFileExtensions || acceptedFileExtensions.length === 0) {\n return true;\n }\n // Always allow internal node dragging\n if (dataTransfer.types.includes(UI_NODE)) {\n return true;\n }\n // Check if dragging files\n if (dataTransfer.types.includes(\"Files\")) {\n const items = Array.from(dataTransfer.items);\n return items.some((item) => {\n if (item.kind === \"file\") {\n // Check MIME types for zip files\n if (item.type === \"application/zip\" ||\n item.type === \"application/x-zip-compressed\") {\n return acceptedFileExtensions.includes(\".zip\");\n }\n // For custom extensions (.phd, .phdm), browsers might not report\n // a specific MIME type (they show as '' or 'application/octet-stream')\n // We allow these through and do stricter validation on drop\n if (item.type === \"\" || item.type === \"application/octet-stream\") {\n return true;\n }\n }\n return false;\n });\n }\n return false;\n }, [acceptedFileExtensions]);\n const onDragOver = useCallback((event) => {\n event.preventDefault();\n event.stopPropagation();\n const isValid = isValidDropContent(event.dataTransfer);\n if (isValid) {\n setIsDropTarget(true);\n }\n else {\n // Visual feedback that dropping is not allowed\n event.dataTransfer.dropEffect = \"none\";\n }\n }, [isValidDropContent]);\n const onDragEnter = useCallback((event) => {\n event.preventDefault();\n event.stopPropagation();\n const isValid = isValidDropContent(event.dataTransfer);\n if (isValid) {\n dragDepthRef.current += 1;\n setIsDropTarget(true);\n }\n }, [isValidDropContent]);\n const onDragLeaveDepth = useCallback((event) => {\n event.preventDefault();\n event.stopPropagation();\n dragDepthRef.current = Math.max(0, dragDepthRef.current - 1);\n if (dragDepthRef.current === 0) {\n setIsDropTarget(false);\n }\n }, []);\n const onDragLeaveSimple = useCallback(() => {\n setIsDropTarget(false);\n }, []);\n const onDrop = useCallback(async (event) => {\n event.preventDefault();\n const dropTarget = event.target;\n const closestDropZone = dropTarget.closest(\"[data-drop-zone]\");\n const dropZoneId = node?.id || \"root\";\n const closestDropZoneId = closestDropZone?.getAttribute(\"data-drop-zone\") || \"root\";\n if (closestDropZoneId !== dropZoneId) {\n setIsDropTarget(false);\n return;\n }\n try {\n let droppedFiles = getDroppedFiles(event.dataTransfer.items).filter(Boolean);\n // Filter files by accepted extensions if specified\n if (acceptedFileExtensions && acceptedFileExtensions.length > 0) {\n droppedFiles = droppedFiles.filter((file) => {\n if (!file)\n return false;\n const fileName = file.name.toLowerCase();\n return acceptedFileExtensions.some((ext) => fileName.endsWith(ext.toLowerCase()));\n });\n }\n if (droppedFiles.length) {\n for (const file of droppedFiles) {\n if (file) {\n await onAddFile(file, node);\n }\n }\n return;\n }\n const altOrOptionKeyPressed = event.getModifierState(\"Alt\");\n const data = event.dataTransfer.getData(UI_NODE);\n const droppedNode = JSON.parse(data);\n if (altOrOptionKeyPressed) {\n await onCopyNode(droppedNode, node);\n }\n else {\n await onMoveNode(droppedNode, node);\n }\n }\n catch (error) {\n console.error(error);\n }\n finally {\n if (trackNestedDrag)\n dragDepthRef.current = 0;\n setIsDropTarget(false);\n }\n }, [onAddFile, onCopyNode, onMoveNode, parent, node?.id, trackNestedDrag]);\n return useMemo(() => {\n const baseProps = {\n onDragOver,\n onDrop,\n \"data-drop-zone\": node?.id || \"root\",\n };\n if (trackNestedDrag) {\n baseProps.onDragEnter = onDragEnter;\n baseProps.onDragLeave = onDragLeaveDepth;\n }\n else {\n baseProps.onDragLeave = onDragLeaveSimple;\n }\n return {\n isDropTarget,\n dropProps: baseProps,\n };\n }, [\n isDropTarget,\n node?.id,\n onDragEnter,\n onDragLeaveDepth,\n onDragLeaveSimple,\n onDragOver,\n onDrop,\n trackNestedDrag,\n ]);\n}\nfunction getDroppedFiles(items) {\n const droppedFiles = Array.from(items)\n .map((item) => (item.kind === \"file\" ? item.getAsFile() : null))\n .filter(Boolean);\n return droppedFiles;\n}\n//# sourceMappingURL=use-drop.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { CONFLICT, ERROR, INITIAL_SYNC, MISSING, SUCCESS, SYNCING, } from \"#connect\";\nimport { Icon } from \"#powerhouse\";\nimport { twMerge } from \"tailwind-merge\";\nconst syncIcons = {\n SYNCING: \"Syncing\",\n SUCCESS: \"Synced\",\n CONFLICT: \"Error\",\n MISSING: \"Circle\",\n ERROR: \"Error\",\n INITIAL_SYNC: \"Syncing\",\n};\nexport function SyncStatusIcon(props) {\n const { syncStatus, className, overrideSyncIcons = {}, ...iconProps } = props;\n const icons = { ...syncIcons, ...overrideSyncIcons };\n const syncStatusIcons = {\n [INITIAL_SYNC]: (_jsx(Icon, { size: 16, ...iconProps, className: twMerge(\"text-blue-900\", className), name: icons[INITIAL_SYNC] })),\n [SYNCING]: (_jsx(Icon, { size: 16, ...iconProps, className: twMerge(\"text-blue-900\", className), name: icons[SYNCING] })),\n [SUCCESS]: (_jsx(Icon, { size: 16, ...iconProps, className: twMerge(\"text-green-900\", className), name: icons[SUCCESS] })),\n [CONFLICT]: (_jsx(Icon, { size: 16, ...iconProps, className: twMerge(\"text-orange-900\", className), name: icons[CONFLICT] })),\n [MISSING]: (_jsx(Icon, { size: 16, ...iconProps, className: twMerge(\"text-red-900\", className), name: icons[MISSING] })),\n [ERROR]: (_jsx(Icon, { size: 16, ...iconProps, className: twMerge(\"text-red-900\", className), name: icons[ERROR] })),\n };\n return syncStatusIcons[syncStatus];\n}\n//# sourceMappingURL=sync-status-icon.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { ConnectDropdownMenu, defaultFileOptions, DELETE, DUPLICATE, getDocumentIconSrc, NodeInput, nodeOptionsMap, READ, RENAME, useDrag, WRITE, } from \"#connect\";\nimport { Icon } from \"#powerhouse\";\nimport { useState } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\nimport { SyncStatusIcon } from \"../status-icon/index.js\";\nexport function FileItem(props) {\n const { fileNode, sharingType, className, customDocumentIconSrc, isAllowedToCreateDocuments, getSyncStatusSync, setSelectedNode, onRenameNode, onDuplicateNode, showDeleteNodeModal, } = props;\n const [mode, setMode] = useState(READ);\n const [isDropdownMenuOpen, setIsDropdownMenuOpen] = useState(false);\n const { dragProps } = useDrag({ node: fileNode });\n const isReadMode = mode === READ;\n const syncStatus = getSyncStatusSync(fileNode.id, sharingType);\n const dropdownMenuHandlers = {\n [DUPLICATE]: () => onDuplicateNode(fileNode),\n [RENAME]: () => setMode(WRITE),\n [DELETE]: () => showDeleteNodeModal(fileNode),\n };\n const dropdownMenuOptions = Object.entries(nodeOptionsMap)\n .map(([id, option]) => ({\n ...option,\n id: id,\n }))\n .filter((option) => defaultFileOptions.includes(option.id));\n function onSubmit(name) {\n onRenameNode(name, fileNode);\n setMode(READ);\n }\n function onCancel() {\n setMode(READ);\n }\n function onDropdownMenuOptionClick(itemId) {\n const handler = dropdownMenuHandlers[itemId];\n if (!handler) {\n console.error(`No handler found for dropdown menu item: ${itemId}`);\n return;\n }\n handler();\n setIsDropdownMenuOpen(false);\n }\n const iconSrc = getDocumentIconSrc(fileNode.documentType, customDocumentIconSrc);\n const iconNode = (_jsxs(\"div\", { className: \"relative\", children: [_jsx(\"img\", { alt: \"file icon\", className: \"max-w-none\", height: 34, src: iconSrc, width: 32 }), isReadMode && syncStatus && (_jsx(\"div\", { className: \"absolute bottom-[-2px] right-0 size-3 rounded-full bg-white\", children: _jsx(\"div\", { className: \"absolute left-[-2px] top-[-2px]\", children: _jsx(SyncStatusIcon, { overrideSyncIcons: { SUCCESS: \"CheckCircleFill\" }, syncStatus: syncStatus }) }) }))] }));\n const containerStyles = twMerge(\"group flex h-12 cursor-pointer select-none items-center rounded-lg bg-gray-200 px-2 text-gray-600 hover:text-gray-800\", className);\n const content = isReadMode ? (_jsxs(\"div\", { className: \"flex w-52 items-center justify-between\", children: [_jsxs(\"div\", { className: \"mr-2 truncate group-hover:mr-0\", children: [_jsx(\"div\", { className: \"max-h-6 truncate text-sm font-medium group-hover:text-gray-800\", children: fileNode.name }), _jsx(\"div\", { className: \"max-h-6 truncate text-xs font-medium text-gray-600 group-hover:text-gray-800\", children: fileNode.documentType })] }), isAllowedToCreateDocuments ? (_jsx(ConnectDropdownMenu, { items: dropdownMenuOptions, onItemClick: onDropdownMenuOptionClick, onOpenChange: setIsDropdownMenuOpen, open: isDropdownMenuOpen, children: _jsx(\"button\", { className: twMerge(\"hidden group-hover:block\", isDropdownMenuOpen && \"block\"), onClick: (e) => {\n e.stopPropagation();\n setIsDropdownMenuOpen(true);\n }, children: _jsx(Icon, { className: \"text-gray-600\", name: \"VerticalDots\" }) }) })) : null] })) : (_jsx(NodeInput, { className: \"ml-3 flex-1 font-medium\", defaultValue: fileNode.name, onCancel: onCancel, onSubmit: onSubmit }));\n return (_jsx(\"div\", { className: \"relative w-64\", onClick: () => setSelectedNode(fileNode), children: _jsx(\"div\", { ...dragProps, className: containerStyles, children: _jsxs(\"div\", { className: \"flex items-center\", children: [_jsx(\"div\", { className: \"mr-1.5\", children: iconNode }), content] }) }) }));\n}\n//# sourceMappingURL=file-item.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { ConnectDropdownMenu, defaultFolderOptions, DELETE, DUPLICATE, NodeInput, nodeOptionsMap, READ, RENAME, SyncStatusIcon, useDrag, useDrop, WRITE, } from \"#connect\";\nimport { Icon } from \"#powerhouse\";\nimport { useState } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\nexport function FolderItem(props) {\n const { folderNode, sharingType, isAllowedToCreateDocuments, className, setSelectedNode, getSyncStatusSync, onRenameNode, onDuplicateNode, showDeleteNodeModal, onAddFile, onCopyNode, onMoveNode, } = props;\n const [mode, setMode] = useState(READ);\n const [isDropdownMenuOpen, setIsDropdownMenuOpen] = useState(false);\n const { dragProps } = useDrag({ node: folderNode });\n const { isDropTarget, dropProps } = useDrop({\n node: folderNode,\n onAddFile,\n onCopyNode,\n onMoveNode,\n });\n const isReadMode = mode === READ;\n const syncStatus = getSyncStatusSync(folderNode.id, sharingType);\n function onCancel() {\n setMode(READ);\n }\n function onSubmit(name) {\n onRenameNode(name, folderNode);\n setMode(READ);\n }\n const dropdownMenuHandlers = {\n [DUPLICATE]: () => onDuplicateNode(folderNode),\n [RENAME]: () => setMode(WRITE),\n [DELETE]: () => showDeleteNodeModal(folderNode),\n };\n const dropdownMenuOptions = Object.entries(nodeOptionsMap)\n .map(([id, option]) => ({\n ...option,\n id: id,\n }))\n .filter((option) => defaultFolderOptions.includes(option.id));\n function onDropdownMenuOptionClick(itemId) {\n const handler = dropdownMenuHandlers[itemId];\n if (!handler) {\n console.error(`No handler found for dropdown menu item: ${itemId}`);\n return;\n }\n handler();\n setIsDropdownMenuOpen(false);\n }\n const content = isReadMode || !isAllowedToCreateDocuments ? (_jsx(\"div\", { className: \"ml-3 max-h-6 truncate font-medium text-gray-600 group-hover:text-gray-800\", children: folderNode.name })) : (_jsx(NodeInput, { className: \"ml-3 font-medium\", defaultValue: folderNode.name, onCancel: onCancel, onSubmit: onSubmit }));\n const containerStyles = twMerge(\"group flex h-12 cursor-pointer select-none items-center rounded-lg bg-gray-200 px-2\", className, isDropTarget && \"bg-blue-100\");\n return (_jsx(\"div\", { className: \"relative w-64\", onClick: () => setSelectedNode(folderNode), children: _jsxs(\"div\", { ...dragProps, ...dropProps, className: containerStyles, children: [_jsxs(\"div\", { className: \"flex items-center overflow-hidden\", children: [_jsx(\"div\", { className: \"p-1\", children: _jsxs(\"div\", { className: \"relative\", children: [_jsx(Icon, { name: \"FolderClose\", size: 24 }), isReadMode && syncStatus ? (_jsx(\"div\", { className: \"absolute bottom-[-3px] right-[-2px] size-3 rounded-full bg-white\", children: _jsx(\"div\", { className: \"absolute left-[-2px] top-[-2px]\", children: _jsx(SyncStatusIcon, { overrideSyncIcons: {\n SUCCESS: \"CheckCircleFill\",\n }, syncStatus: syncStatus }) }) })) : null] }) }), content] }), isReadMode && isAllowedToCreateDocuments ? (_jsx(ConnectDropdownMenu, { items: dropdownMenuOptions, onItemClick: onDropdownMenuOptionClick, onOpenChange: setIsDropdownMenuOpen, open: isDropdownMenuOpen, children: _jsx(\"button\", { className: twMerge(\"ml-auto hidden group-hover:block\", isDropdownMenuOpen && \"block\"), onClick: (e) => {\n e.stopPropagation();\n setIsDropdownMenuOpen(true);\n }, children: _jsx(Icon, { className: \"text-gray-600\", name: \"VerticalDots\" }) }) })) : null] }) }));\n}\n//# sourceMappingURL=folder-item.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useLayoutEffect, useRef, useState } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\nimport { useEventListener, useOnClickOutside } from \"usehooks-ts\";\nexport function NodeInput(props) {\n const { onSubmit, onCancel, defaultValue, className, minLength = 1, ...inputProps } = props;\n const [value, setValue] = useState(defaultValue ?? \"\");\n const ref = useRef(null);\n useOnClickOutside(ref, handleSubmit);\n useEventListener(\"keyup\", (e) => {\n if (e.key === \"Enter\") {\n handleSubmit();\n }\n if (e.key === \"Escape\") {\n onCancel();\n }\n });\n useLayoutEffect(() => {\n setTimeout(() => {\n ref.current?.focus();\n ref.current?.select();\n ref.current?.scroll({ left: 9999 });\n }, 100);\n }, []);\n function handleSubmit() {\n if (value.length >= minLength) {\n onSubmit(value);\n }\n }\n return (_jsx(\"input\", { ...inputProps, autoFocus: true, className: twMerge(\"bg-inherit text-inherit outline-none\", className), minLength: minLength, onChange: (e) => setValue(e.target.value), ref: ref, required: true, type: \"text\", value: value }));\n}\n//# sourceMappingURL=node-input.js.map","function memo(getDeps, fn, opts) {\n let deps = opts.initialDeps ?? [];\n let result;\n function memoizedFunction() {\n var _a, _b, _c, _d;\n let depTime;\n if (opts.key && ((_a = opts.debug) == null ? void 0 : _a.call(opts))) depTime = Date.now();\n const newDeps = getDeps();\n const depsChanged = newDeps.length !== deps.length || newDeps.some((dep, index) => deps[index] !== dep);\n if (!depsChanged) {\n return result;\n }\n deps = newDeps;\n let resultTime;\n if (opts.key && ((_b = opts.debug) == null ? void 0 : _b.call(opts))) resultTime = Date.now();\n result = fn(...newDeps);\n if (opts.key && ((_c = opts.debug) == null ? void 0 : _c.call(opts))) {\n const depEndTime = Math.round((Date.now() - depTime) * 100) / 100;\n const resultEndTime = Math.round((Date.now() - resultTime) * 100) / 100;\n const resultFpsPercentage = resultEndTime / 16;\n const pad = (str, num) => {\n str = String(str);\n while (str.length < num) {\n str = \" \" + str;\n }\n return str;\n };\n console.info(\n `%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`,\n `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(\n 0,\n Math.min(120 - 120 * resultFpsPercentage, 120)\n )}deg 100% 31%);`,\n opts == null ? void 0 : opts.key\n );\n }\n (_d = opts == null ? void 0 : opts.onChange) == null ? void 0 : _d.call(opts, result);\n return result;\n }\n memoizedFunction.updateDeps = (newDeps) => {\n deps = newDeps;\n };\n return memoizedFunction;\n}\nfunction notUndefined(value, msg) {\n if (value === void 0) {\n throw new Error(`Unexpected undefined${msg ? `: ${msg}` : \"\"}`);\n } else {\n return value;\n }\n}\nconst approxEqual = (a, b) => Math.abs(a - b) < 1.01;\nconst debounce = (targetWindow, fn, ms) => {\n let timeoutId;\n return function(...args) {\n targetWindow.clearTimeout(timeoutId);\n timeoutId = targetWindow.setTimeout(() => fn.apply(this, args), ms);\n };\n};\nexport {\n approxEqual,\n debounce,\n memo,\n notUndefined\n};\n//# sourceMappingURL=utils.js.map\n","import { debounce, memo, notUndefined, approxEqual } from \"./utils.js\";\nconst getRect = (element) => {\n const { offsetWidth, offsetHeight } = element;\n return { width: offsetWidth, height: offsetHeight };\n};\nconst defaultKeyExtractor = (index) => index;\nconst defaultRangeExtractor = (range) => {\n const start = Math.max(range.startIndex - range.overscan, 0);\n const end = Math.min(range.endIndex + range.overscan, range.count - 1);\n const arr = [];\n for (let i = start; i <= end; i++) {\n arr.push(i);\n }\n return arr;\n};\nconst observeElementRect = (instance, cb) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const targetWindow = instance.targetWindow;\n if (!targetWindow) {\n return;\n }\n const handler = (rect) => {\n const { width, height } = rect;\n cb({ width: Math.round(width), height: Math.round(height) });\n };\n handler(getRect(element));\n if (!targetWindow.ResizeObserver) {\n return () => {\n };\n }\n const observer = new targetWindow.ResizeObserver((entries) => {\n const run = () => {\n const entry = entries[0];\n if (entry == null ? void 0 : entry.borderBoxSize) {\n const box = entry.borderBoxSize[0];\n if (box) {\n handler({ width: box.inlineSize, height: box.blockSize });\n return;\n }\n }\n handler(getRect(element));\n };\n instance.options.useAnimationFrameWithResizeObserver ? requestAnimationFrame(run) : run();\n });\n observer.observe(element, { box: \"border-box\" });\n return () => {\n observer.unobserve(element);\n };\n};\nconst addEventListenerOptions = {\n passive: true\n};\nconst observeWindowRect = (instance, cb) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const handler = () => {\n cb({ width: element.innerWidth, height: element.innerHeight });\n };\n handler();\n element.addEventListener(\"resize\", handler, addEventListenerOptions);\n return () => {\n element.removeEventListener(\"resize\", handler);\n };\n};\nconst supportsScrollend = typeof window == \"undefined\" ? true : \"onscrollend\" in window;\nconst observeElementOffset = (instance, cb) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const targetWindow = instance.targetWindow;\n if (!targetWindow) {\n return;\n }\n let offset = 0;\n const fallback = instance.options.useScrollendEvent && supportsScrollend ? () => void 0 : debounce(\n targetWindow,\n () => {\n cb(offset, false);\n },\n instance.options.isScrollingResetDelay\n );\n const createHandler = (isScrolling) => () => {\n const { horizontal, isRtl } = instance.options;\n offset = horizontal ? element[\"scrollLeft\"] * (isRtl && -1 || 1) : element[\"scrollTop\"];\n fallback();\n cb(offset, isScrolling);\n };\n const handler = createHandler(true);\n const endHandler = createHandler(false);\n endHandler();\n element.addEventListener(\"scroll\", handler, addEventListenerOptions);\n const registerScrollendEvent = instance.options.useScrollendEvent && supportsScrollend;\n if (registerScrollendEvent) {\n element.addEventListener(\"scrollend\", endHandler, addEventListenerOptions);\n }\n return () => {\n element.removeEventListener(\"scroll\", handler);\n if (registerScrollendEvent) {\n element.removeEventListener(\"scrollend\", endHandler);\n }\n };\n};\nconst observeWindowOffset = (instance, cb) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const targetWindow = instance.targetWindow;\n if (!targetWindow) {\n return;\n }\n let offset = 0;\n const fallback = instance.options.useScrollendEvent && supportsScrollend ? () => void 0 : debounce(\n targetWindow,\n () => {\n cb(offset, false);\n },\n instance.options.isScrollingResetDelay\n );\n const createHandler = (isScrolling) => () => {\n offset = element[instance.options.horizontal ? \"scrollX\" : \"scrollY\"];\n fallback();\n cb(offset, isScrolling);\n };\n const handler = createHandler(true);\n const endHandler = createHandler(false);\n endHandler();\n element.addEventListener(\"scroll\", handler, addEventListenerOptions);\n const registerScrollendEvent = instance.options.useScrollendEvent && supportsScrollend;\n if (registerScrollendEvent) {\n element.addEventListener(\"scrollend\", endHandler, addEventListenerOptions);\n }\n return () => {\n element.removeEventListener(\"scroll\", handler);\n if (registerScrollendEvent) {\n element.removeEventListener(\"scrollend\", endHandler);\n }\n };\n};\nconst measureElement = (element, entry, instance) => {\n if (entry == null ? void 0 : entry.borderBoxSize) {\n const box = entry.borderBoxSize[0];\n if (box) {\n const size = Math.round(\n box[instance.options.horizontal ? \"inlineSize\" : \"blockSize\"]\n );\n return size;\n }\n }\n return element[instance.options.horizontal ? \"offsetWidth\" : \"offsetHeight\"];\n};\nconst windowScroll = (offset, {\n adjustments = 0,\n behavior\n}, instance) => {\n var _a, _b;\n const toOffset = offset + adjustments;\n (_b = (_a = instance.scrollElement) == null ? void 0 : _a.scrollTo) == null ? void 0 : _b.call(_a, {\n [instance.options.horizontal ? \"left\" : \"top\"]: toOffset,\n behavior\n });\n};\nconst elementScroll = (offset, {\n adjustments = 0,\n behavior\n}, instance) => {\n var _a, _b;\n const toOffset = offset + adjustments;\n (_b = (_a = instance.scrollElement) == null ? void 0 : _a.scrollTo) == null ? void 0 : _b.call(_a, {\n [instance.options.horizontal ? \"left\" : \"top\"]: toOffset,\n behavior\n });\n};\nclass Virtualizer {\n constructor(opts) {\n this.unsubs = [];\n this.scrollElement = null;\n this.targetWindow = null;\n this.isScrolling = false;\n this.measurementsCache = [];\n this.itemSizeCache = /* @__PURE__ */ new Map();\n this.pendingMeasuredCacheIndexes = [];\n this.scrollRect = null;\n this.scrollOffset = null;\n this.scrollDirection = null;\n this.scrollAdjustments = 0;\n this.elementsCache = /* @__PURE__ */ new Map();\n this.observer = /* @__PURE__ */ (() => {\n let _ro = null;\n const get = () => {\n if (_ro) {\n return _ro;\n }\n if (!this.targetWindow || !this.targetWindow.ResizeObserver) {\n return null;\n }\n return _ro = new this.targetWindow.ResizeObserver((entries) => {\n entries.forEach((entry) => {\n const run = () => {\n this._measureElement(entry.target, entry);\n };\n this.options.useAnimationFrameWithResizeObserver ? requestAnimationFrame(run) : run();\n });\n });\n };\n return {\n disconnect: () => {\n var _a;\n (_a = get()) == null ? void 0 : _a.disconnect();\n _ro = null;\n },\n observe: (target) => {\n var _a;\n return (_a = get()) == null ? void 0 : _a.observe(target, { box: \"border-box\" });\n },\n unobserve: (target) => {\n var _a;\n return (_a = get()) == null ? void 0 : _a.unobserve(target);\n }\n };\n })();\n this.range = null;\n this.setOptions = (opts2) => {\n Object.entries(opts2).forEach(([key, value]) => {\n if (typeof value === \"undefined\") delete opts2[key];\n });\n this.options = {\n debug: false,\n initialOffset: 0,\n overscan: 1,\n paddingStart: 0,\n paddingEnd: 0,\n scrollPaddingStart: 0,\n scrollPaddingEnd: 0,\n horizontal: false,\n getItemKey: defaultKeyExtractor,\n rangeExtractor: defaultRangeExtractor,\n onChange: () => {\n },\n measureElement,\n initialRect: { width: 0, height: 0 },\n scrollMargin: 0,\n gap: 0,\n indexAttribute: \"data-index\",\n initialMeasurementsCache: [],\n lanes: 1,\n isScrollingResetDelay: 150,\n enabled: true,\n isRtl: false,\n useScrollendEvent: false,\n useAnimationFrameWithResizeObserver: false,\n ...opts2\n };\n };\n this.notify = (sync) => {\n var _a, _b;\n (_b = (_a = this.options).onChange) == null ? void 0 : _b.call(_a, this, sync);\n };\n this.maybeNotify = memo(\n () => {\n this.calculateRange();\n return [\n this.isScrolling,\n this.range ? this.range.startIndex : null,\n this.range ? this.range.endIndex : null\n ];\n },\n (isScrolling) => {\n this.notify(isScrolling);\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"maybeNotify\",\n debug: () => this.options.debug,\n initialDeps: [\n this.isScrolling,\n this.range ? this.range.startIndex : null,\n this.range ? this.range.endIndex : null\n ]\n }\n );\n this.cleanup = () => {\n this.unsubs.filter(Boolean).forEach((d) => d());\n this.unsubs = [];\n this.observer.disconnect();\n this.scrollElement = null;\n this.targetWindow = null;\n };\n this._didMount = () => {\n return () => {\n this.cleanup();\n };\n };\n this._willUpdate = () => {\n var _a;\n const scrollElement = this.options.enabled ? this.options.getScrollElement() : null;\n if (this.scrollElement !== scrollElement) {\n this.cleanup();\n if (!scrollElement) {\n this.maybeNotify();\n return;\n }\n this.scrollElement = scrollElement;\n if (this.scrollElement && \"ownerDocument\" in this.scrollElement) {\n this.targetWindow = this.scrollElement.ownerDocument.defaultView;\n } else {\n this.targetWindow = ((_a = this.scrollElement) == null ? void 0 : _a.window) ?? null;\n }\n this.elementsCache.forEach((cached) => {\n this.observer.observe(cached);\n });\n this._scrollToOffset(this.getScrollOffset(), {\n adjustments: void 0,\n behavior: void 0\n });\n this.unsubs.push(\n this.options.observeElementRect(this, (rect) => {\n this.scrollRect = rect;\n this.maybeNotify();\n })\n );\n this.unsubs.push(\n this.options.observeElementOffset(this, (offset, isScrolling) => {\n this.scrollAdjustments = 0;\n this.scrollDirection = isScrolling ? this.getScrollOffset() < offset ? \"forward\" : \"backward\" : null;\n this.scrollOffset = offset;\n this.isScrolling = isScrolling;\n this.maybeNotify();\n })\n );\n }\n };\n this.getSize = () => {\n if (!this.options.enabled) {\n this.scrollRect = null;\n return 0;\n }\n this.scrollRect = this.scrollRect ?? this.options.initialRect;\n return this.scrollRect[this.options.horizontal ? \"width\" : \"height\"];\n };\n this.getScrollOffset = () => {\n if (!this.options.enabled) {\n this.scrollOffset = null;\n return 0;\n }\n this.scrollOffset = this.scrollOffset ?? (typeof this.options.initialOffset === \"function\" ? this.options.initialOffset() : this.options.initialOffset);\n return this.scrollOffset;\n };\n this.getFurthestMeasurement = (measurements, index) => {\n const furthestMeasurementsFound = /* @__PURE__ */ new Map();\n const furthestMeasurements = /* @__PURE__ */ new Map();\n for (let m = index - 1; m >= 0; m--) {\n const measurement = measurements[m];\n if (furthestMeasurementsFound.has(measurement.lane)) {\n continue;\n }\n const previousFurthestMeasurement = furthestMeasurements.get(\n measurement.lane\n );\n if (previousFurthestMeasurement == null || measurement.end > previousFurthestMeasurement.end) {\n furthestMeasurements.set(measurement.lane, measurement);\n } else if (measurement.end < previousFurthestMeasurement.end) {\n furthestMeasurementsFound.set(measurement.lane, true);\n }\n if (furthestMeasurementsFound.size === this.options.lanes) {\n break;\n }\n }\n return furthestMeasurements.size === this.options.lanes ? Array.from(furthestMeasurements.values()).sort((a, b) => {\n if (a.end === b.end) {\n return a.index - b.index;\n }\n return a.end - b.end;\n })[0] : void 0;\n };\n this.getMeasurementOptions = memo(\n () => [\n this.options.count,\n this.options.paddingStart,\n this.options.scrollMargin,\n this.options.getItemKey,\n this.options.enabled\n ],\n (count, paddingStart, scrollMargin, getItemKey, enabled) => {\n this.pendingMeasuredCacheIndexes = [];\n return {\n count,\n paddingStart,\n scrollMargin,\n getItemKey,\n enabled\n };\n },\n {\n key: false\n }\n );\n this.getMeasurements = memo(\n () => [this.getMeasurementOptions(), this.itemSizeCache],\n ({ count, paddingStart, scrollMargin, getItemKey, enabled }, itemSizeCache) => {\n if (!enabled) {\n this.measurementsCache = [];\n this.itemSizeCache.clear();\n return [];\n }\n if (this.measurementsCache.length === 0) {\n this.measurementsCache = this.options.initialMeasurementsCache;\n this.measurementsCache.forEach((item) => {\n this.itemSizeCache.set(item.key, item.size);\n });\n }\n const min = this.pendingMeasuredCacheIndexes.length > 0 ? Math.min(...this.pendingMeasuredCacheIndexes) : 0;\n this.pendingMeasuredCacheIndexes = [];\n const measurements = this.measurementsCache.slice(0, min);\n for (let i = min; i < count; i++) {\n const key = getItemKey(i);\n const furthestMeasurement = this.options.lanes === 1 ? measurements[i - 1] : this.getFurthestMeasurement(measurements, i);\n const start = furthestMeasurement ? furthestMeasurement.end + this.options.gap : paddingStart + scrollMargin;\n const measuredSize = itemSizeCache.get(key);\n const size = typeof measuredSize === \"number\" ? measuredSize : this.options.estimateSize(i);\n const end = start + size;\n const lane = furthestMeasurement ? furthestMeasurement.lane : i % this.options.lanes;\n measurements[i] = {\n index: i,\n start,\n size,\n end,\n key,\n lane\n };\n }\n this.measurementsCache = measurements;\n return measurements;\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"getMeasurements\",\n debug: () => this.options.debug\n }\n );\n this.calculateRange = memo(\n () => [\n this.getMeasurements(),\n this.getSize(),\n this.getScrollOffset(),\n this.options.lanes\n ],\n (measurements, outerSize, scrollOffset, lanes) => {\n return this.range = measurements.length > 0 && outerSize > 0 ? calculateRange({\n measurements,\n outerSize,\n scrollOffset,\n lanes\n }) : null;\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"calculateRange\",\n debug: () => this.options.debug\n }\n );\n this.getVirtualIndexes = memo(\n () => {\n let startIndex = null;\n let endIndex = null;\n const range = this.calculateRange();\n if (range) {\n startIndex = range.startIndex;\n endIndex = range.endIndex;\n }\n this.maybeNotify.updateDeps([this.isScrolling, startIndex, endIndex]);\n return [\n this.options.rangeExtractor,\n this.options.overscan,\n this.options.count,\n startIndex,\n endIndex\n ];\n },\n (rangeExtractor, overscan, count, startIndex, endIndex) => {\n return startIndex === null || endIndex === null ? [] : rangeExtractor({\n startIndex,\n endIndex,\n overscan,\n count\n });\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"getVirtualIndexes\",\n debug: () => this.options.debug\n }\n );\n this.indexFromElement = (node) => {\n const attributeName = this.options.indexAttribute;\n const indexStr = node.getAttribute(attributeName);\n if (!indexStr) {\n console.warn(\n `Missing attribute name '${attributeName}={index}' on measured element.`\n );\n return -1;\n }\n return parseInt(indexStr, 10);\n };\n this._measureElement = (node, entry) => {\n const index = this.indexFromElement(node);\n const item = this.measurementsCache[index];\n if (!item) {\n return;\n }\n const key = item.key;\n const prevNode = this.elementsCache.get(key);\n if (prevNode !== node) {\n if (prevNode) {\n this.observer.unobserve(prevNode);\n }\n this.observer.observe(node);\n this.elementsCache.set(key, node);\n }\n if (node.isConnected) {\n this.resizeItem(index, this.options.measureElement(node, entry, this));\n }\n };\n this.resizeItem = (index, size) => {\n const item = this.measurementsCache[index];\n if (!item) {\n return;\n }\n const itemSize = this.itemSizeCache.get(item.key) ?? item.size;\n const delta = size - itemSize;\n if (delta !== 0) {\n if (this.shouldAdjustScrollPositionOnItemSizeChange !== void 0 ? this.shouldAdjustScrollPositionOnItemSizeChange(item, delta, this) : item.start < this.getScrollOffset() + this.scrollAdjustments) {\n if (process.env.NODE_ENV !== \"production\" && this.options.debug) {\n console.info(\"correction\", delta);\n }\n this._scrollToOffset(this.getScrollOffset(), {\n adjustments: this.scrollAdjustments += delta,\n behavior: void 0\n });\n }\n this.pendingMeasuredCacheIndexes.push(item.index);\n this.itemSizeCache = new Map(this.itemSizeCache.set(item.key, size));\n this.notify(false);\n }\n };\n this.measureElement = (node) => {\n if (!node) {\n this.elementsCache.forEach((cached, key) => {\n if (!cached.isConnected) {\n this.observer.unobserve(cached);\n this.elementsCache.delete(key);\n }\n });\n return;\n }\n this._measureElement(node, void 0);\n };\n this.getVirtualItems = memo(\n () => [this.getVirtualIndexes(), this.getMeasurements()],\n (indexes, measurements) => {\n const virtualItems = [];\n for (let k = 0, len = indexes.length; k < len; k++) {\n const i = indexes[k];\n const measurement = measurements[i];\n virtualItems.push(measurement);\n }\n return virtualItems;\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"getVirtualItems\",\n debug: () => this.options.debug\n }\n );\n this.getVirtualItemForOffset = (offset) => {\n const measurements = this.getMeasurements();\n if (measurements.length === 0) {\n return void 0;\n }\n return notUndefined(\n measurements[findNearestBinarySearch(\n 0,\n measurements.length - 1,\n (index) => notUndefined(measurements[index]).start,\n offset\n )]\n );\n };\n this.getOffsetForAlignment = (toOffset, align, itemSize = 0) => {\n const size = this.getSize();\n const scrollOffset = this.getScrollOffset();\n if (align === \"auto\") {\n align = toOffset >= scrollOffset + size ? \"end\" : \"start\";\n }\n if (align === \"center\") {\n toOffset += (itemSize - size) / 2;\n } else if (align === \"end\") {\n toOffset -= size;\n }\n const maxOffset = this.getTotalSize() + this.options.scrollMargin - size;\n return Math.max(Math.min(maxOffset, toOffset), 0);\n };\n this.getOffsetForIndex = (index, align = \"auto\") => {\n index = Math.max(0, Math.min(index, this.options.count - 1));\n const item = this.measurementsCache[index];\n if (!item) {\n return void 0;\n }\n const size = this.getSize();\n const scrollOffset = this.getScrollOffset();\n if (align === \"auto\") {\n if (item.end >= scrollOffset + size - this.options.scrollPaddingEnd) {\n align = \"end\";\n } else if (item.start <= scrollOffset + this.options.scrollPaddingStart) {\n align = \"start\";\n } else {\n return [scrollOffset, align];\n }\n }\n const toOffset = align === \"end\" ? item.end + this.options.scrollPaddingEnd : item.start - this.options.scrollPaddingStart;\n return [\n this.getOffsetForAlignment(toOffset, align, item.size),\n align\n ];\n };\n this.isDynamicMode = () => this.elementsCache.size > 0;\n this.scrollToOffset = (toOffset, { align = \"start\", behavior } = {}) => {\n if (behavior === \"smooth\" && this.isDynamicMode()) {\n console.warn(\n \"The `smooth` scroll behavior is not fully supported with dynamic size.\"\n );\n }\n this._scrollToOffset(this.getOffsetForAlignment(toOffset, align), {\n adjustments: void 0,\n behavior\n });\n };\n this.scrollToIndex = (index, { align: initialAlign = \"auto\", behavior } = {}) => {\n if (behavior === \"smooth\" && this.isDynamicMode()) {\n console.warn(\n \"The `smooth` scroll behavior is not fully supported with dynamic size.\"\n );\n }\n index = Math.max(0, Math.min(index, this.options.count - 1));\n let attempts = 0;\n const maxAttempts = 10;\n const tryScroll = (currentAlign) => {\n if (!this.targetWindow) return;\n const offsetInfo = this.getOffsetForIndex(index, currentAlign);\n if (!offsetInfo) {\n console.warn(\"Failed to get offset for index:\", index);\n return;\n }\n const [offset, align] = offsetInfo;\n this._scrollToOffset(offset, { adjustments: void 0, behavior });\n this.targetWindow.requestAnimationFrame(() => {\n const currentOffset = this.getScrollOffset();\n const afterInfo = this.getOffsetForIndex(index, align);\n if (!afterInfo) {\n console.warn(\"Failed to get offset for index:\", index);\n return;\n }\n if (!approxEqual(afterInfo[0], currentOffset)) {\n scheduleRetry(align);\n }\n });\n };\n const scheduleRetry = (align) => {\n if (!this.targetWindow) return;\n attempts++;\n if (attempts < maxAttempts) {\n if (process.env.NODE_ENV !== \"production\" && this.options.debug) {\n console.info(\"Schedule retry\", attempts, maxAttempts);\n }\n this.targetWindow.requestAnimationFrame(() => tryScroll(align));\n } else {\n console.warn(\n `Failed to scroll to index ${index} after ${maxAttempts} attempts.`\n );\n }\n };\n tryScroll(initialAlign);\n };\n this.scrollBy = (delta, { behavior } = {}) => {\n if (behavior === \"smooth\" && this.isDynamicMode()) {\n console.warn(\n \"The `smooth` scroll behavior is not fully supported with dynamic size.\"\n );\n }\n this._scrollToOffset(this.getScrollOffset() + delta, {\n adjustments: void 0,\n behavior\n });\n };\n this.getTotalSize = () => {\n var _a;\n const measurements = this.getMeasurements();\n let end;\n if (measurements.length === 0) {\n end = this.options.paddingStart;\n } else if (this.options.lanes === 1) {\n end = ((_a = measurements[measurements.length - 1]) == null ? void 0 : _a.end) ?? 0;\n } else {\n const endByLane = Array(this.options.lanes).fill(null);\n let endIndex = measurements.length - 1;\n while (endIndex >= 0 && endByLane.some((val) => val === null)) {\n const item = measurements[endIndex];\n if (endByLane[item.lane] === null) {\n endByLane[item.lane] = item.end;\n }\n endIndex--;\n }\n end = Math.max(...endByLane.filter((val) => val !== null));\n }\n return Math.max(\n end - this.options.scrollMargin + this.options.paddingEnd,\n 0\n );\n };\n this._scrollToOffset = (offset, {\n adjustments,\n behavior\n }) => {\n this.options.scrollToFn(offset, { behavior, adjustments }, this);\n };\n this.measure = () => {\n this.itemSizeCache = /* @__PURE__ */ new Map();\n this.notify(false);\n };\n this.setOptions(opts);\n }\n}\nconst findNearestBinarySearch = (low, high, getCurrentValue, value) => {\n while (low <= high) {\n const middle = (low + high) / 2 | 0;\n const currentValue = getCurrentValue(middle);\n if (currentValue < value) {\n low = middle + 1;\n } else if (currentValue > value) {\n high = middle - 1;\n } else {\n return middle;\n }\n }\n if (low > 0) {\n return low - 1;\n } else {\n return 0;\n }\n};\nfunction calculateRange({\n measurements,\n outerSize,\n scrollOffset,\n lanes\n}) {\n const lastIndex = measurements.length - 1;\n const getOffset = (index) => measurements[index].start;\n if (measurements.length <= lanes) {\n return {\n startIndex: 0,\n endIndex: lastIndex\n };\n }\n let startIndex = findNearestBinarySearch(\n 0,\n lastIndex,\n getOffset,\n scrollOffset\n );\n let endIndex = startIndex;\n if (lanes === 1) {\n while (endIndex < lastIndex && measurements[endIndex].end < scrollOffset + outerSize) {\n endIndex++;\n }\n } else if (lanes > 1) {\n const endPerLane = Array(lanes).fill(0);\n while (endIndex < lastIndex && endPerLane.some((pos) => pos < scrollOffset + outerSize)) {\n const item = measurements[endIndex];\n endPerLane[item.lane] = item.end;\n endIndex++;\n }\n const startPerLane = Array(lanes).fill(scrollOffset + outerSize);\n while (startIndex >= 0 && startPerLane.some((pos) => pos >= scrollOffset)) {\n const item = measurements[startIndex];\n startPerLane[item.lane] = item.start;\n startIndex--;\n }\n startIndex = Math.max(0, startIndex - startIndex % lanes);\n endIndex = Math.min(lastIndex, endIndex + (lanes - 1 - endIndex % lanes));\n }\n return { startIndex, endIndex };\n}\nexport {\n Virtualizer,\n approxEqual,\n debounce,\n defaultKeyExtractor,\n defaultRangeExtractor,\n elementScroll,\n measureElement,\n memo,\n notUndefined,\n observeElementOffset,\n observeElementRect,\n observeWindowOffset,\n observeWindowRect,\n windowScroll\n};\n//# sourceMappingURL=index.js.map\n","import * as React from \"react\";\nimport { flushSync } from \"react-dom\";\nimport { Virtualizer, elementScroll, observeElementOffset, observeElementRect, windowScroll, observeWindowOffset, observeWindowRect } from \"@tanstack/virtual-core\";\nexport * from \"@tanstack/virtual-core\";\nconst useIsomorphicLayoutEffect = typeof document !== \"undefined\" ? React.useLayoutEffect : React.useEffect;\nfunction useVirtualizerBase(options) {\n const rerender = React.useReducer(() => ({}), {})[1];\n const resolvedOptions = {\n ...options,\n onChange: (instance2, sync) => {\n var _a;\n if (sync) {\n flushSync(rerender);\n } else {\n rerender();\n }\n (_a = options.onChange) == null ? void 0 : _a.call(options, instance2, sync);\n }\n };\n const [instance] = React.useState(\n () => new Virtualizer(resolvedOptions)\n );\n instance.setOptions(resolvedOptions);\n useIsomorphicLayoutEffect(() => {\n return instance._didMount();\n }, []);\n useIsomorphicLayoutEffect(() => {\n return instance._willUpdate();\n });\n return instance;\n}\nfunction useVirtualizer(options) {\n return useVirtualizerBase({\n observeElementRect,\n observeElementOffset,\n scrollToFn: elementScroll,\n ...options\n });\n}\nfunction useWindowVirtualizer(options) {\n return useVirtualizerBase({\n getScrollElement: () => typeof document !== \"undefined\" ? window : null,\n observeElementRect: observeWindowRect,\n observeElementOffset: observeWindowOffset,\n scrollToFn: windowScroll,\n initialOffset: () => typeof document !== \"undefined\" ? window.scrollY : 0,\n ...options\n });\n}\nexport {\n useVirtualizer,\n useWindowVirtualizer\n};\n//# sourceMappingURL=index.js.map\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { mergeClassNameProps } from \"#powerhouse\";\nexport const FilterItem = (props) => {\n const { item, ...containerProps } = props;\n return (_jsxs(\"div\", { ...mergeClassNameProps(containerProps, \"flex h-full flex-row items-center justify-between gap-x-4 px-2\"), children: [item.icon, _jsx(\"div\", { className: \"text-sm font-semibold text-slate-200\", children: item.label })] }));\n};\n//# sourceMappingURL=filter-item.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, Icon, } from \"#powerhouse\";\nimport { cn } from \"#ui\";\nimport { useMemo } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\nimport { FilterItem } from \"./filter-item.js\";\nexport const ConnectSearchBar = (props) => {\n const { value, onChange, placeholder, filterLabel, filterItems, selectedFilter, onFilterSelect = () => { }, className, } = props;\n const items = useMemo(() => filterItems?.map((item) => ({\n id: item.id,\n content: _jsx(FilterItem, { item: item }),\n })) ?? [], [filterItems]);\n const selectedItemFilter = filterItems?.find((item) => item.id === selectedFilter);\n const filterLabelContent = selectedItemFilter ? (_jsx(FilterItem, { className: \"gap-x-1\", item: selectedItemFilter })) : (filterLabel && (_jsx(\"div\", { className: \"mr-2 text-sm font-semibold text-slate-200\", children: filterLabel })));\n function handleChange(event) {\n onChange?.(event.target.value);\n }\n return (_jsxs(\"div\", { className: cn(\"flex items-center\", className), children: [_jsx(Icon, { className: \"mr-3\", name: \"Search\" }), _jsx(\"input\", { className: twMerge(\"flex h-[52px] min-w-0 flex-1 items-center rounded-xl border border-gray-200 bg-gray-50 px-4 text-sm text-slate-200 outline-none\"), onChange: handleChange, placeholder: placeholder, value: value }), _jsxs(DropdownMenu, { children: [_jsxs(DropdownMenuTrigger, { className: \"ml-3 flex h-full flex-row items-center outline-none\", children: [filterLabelContent, \" \", _jsx(Icon, { name: \"ChevronDown\" })] }), _jsx(DropdownMenuContent, { className: \"rounded-xl border border-gray-100 bg-gray-50 p-2\", children: items.map((item) => (_jsx(DropdownMenuItem, { className: \"h-10 cursor-pointer overflow-hidden rounded-lg hover:bg-gray-100\", id: item.id, onSelect: () => onFilterSelect(item.id), children: item.content }, item.id))) })] })] }));\n};\n//# sourceMappingURL=search-bar.js.map","export const BUDGET = \"powerhouse/budget-statement\";\nexport const DEFAULT = \"powerhouse/default\";\nexport const MAKERDAO_RWA_PORTFOLIO = \"makerdao/rwa-portfolio\";\nexport const documentTypes = [BUDGET, DEFAULT, MAKERDAO_RWA_PORTFOLIO];\n//# sourceMappingURL=documents.js.map","export default \"data:image/png;base64,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\"","export default \"__VITE_ASSET__D4y_BsAi__\"","export default \"data:image/png;base64,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\"","import { BUDGET, DEFAULT, MAKERDAO_RWA_PORTFOLIO } from \"#connect\";\nimport BudgetStatementImg from \"#assets/icons/budget.png\";\nimport MakerdaoRWAPortfolioImg from \"#assets/icons/rwa-report.png\";\nimport DefaultImg from \"#assets/icons/template.png\";\nexport const iconMap = {\n [BUDGET]: BudgetStatementImg,\n [DEFAULT]: DefaultImg,\n [MAKERDAO_RWA_PORTFOLIO]: MakerdaoRWAPortfolioImg,\n};\n//# sourceMappingURL=icons.js.map","export const DRIVE = \"DRIVE\";\nexport const FOLDER = \"FOLDER\";\nexport const FILE = \"FILE\";\nexport const CREATE = \"CREATE\";\nexport const WRITE = \"WRITE\";\nexport const READ = \"READ\";\nexport const UI_NODE = \"UI_NODE\";\n//# sourceMappingURL=nodes.js.map","export const SYNCING = \"SYNCING\";\nexport const SUCCESS = \"SUCCESS\";\nexport const CONFLICT = \"CONFLICT\";\nexport const MISSING = \"MISSING\";\nexport const ERROR = \"ERROR\";\nexport const INITIAL_SYNC = \"INITIAL_SYNC\";\nexport const syncStatuses = [\n INITIAL_SYNC,\n SYNCING,\n SUCCESS,\n CONFLICT,\n MISSING,\n ERROR,\n];\n//# sourceMappingURL=syncing.js.map","import { UI_NODE } from \"#connect\";\nimport { useCallback, useMemo, useState } from \"react\";\nexport function useDrag(props) {\n const { node } = props;\n const [isDragging, setIsDragging] = useState(false);\n const onDragStart = useCallback((event) => {\n event.dataTransfer.setData(UI_NODE, JSON.stringify(node));\n }, [node]);\n const onDragEnd = useCallback(() => {\n setIsDragging(false);\n }, []);\n return useMemo(() => {\n return {\n isDragging,\n dragProps: {\n draggable: true,\n onDragStart,\n onDragEnd,\n },\n };\n }, [isDragging, onDragEnd, onDragStart]);\n}\n//# sourceMappingURL=use-drag.js.map","import { DEFAULT, documentTypes, iconMap } from \"#connect\";\nexport function getDocumentIconSrc(documentType, customDocumentIconSrc) {\n if (customDocumentIconSrc) {\n return customDocumentIconSrc;\n }\n if (documentTypes.includes(documentType)) {\n return iconMap[documentType];\n }\n return iconMap[DEFAULT];\n}\n//# sourceMappingURL=get-document-icon-src.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Button } from \"@powerhousedao/design-system\";\nfunction getDocumentSpec(doc) {\n if (\"documentModelState\" in doc) {\n return doc.documentModelState;\n }\n return doc.documentModel;\n}\nexport const CreateDocument = ({ documentModels, createDocument, }) => {\n return (_jsxs(\"div\", { className: \"px-6\", children: [_jsx(\"h3\", { className: \"mb-3 mt-4 text-xl font-bold text-gray-600\", children: \"New document\" }), _jsx(\"div\", { className: \"flex w-full flex-wrap gap-4\", children: documentModels?.map((doc) => {\n const spec = getDocumentSpec(doc);\n return (_jsx(Button, { color: \"light\", title: spec.name, \"aria-description\": spec.description, onClick: () => createDocument(doc), children: _jsx(\"span\", { className: \"text-sm\", children: spec.name }) }, spec.id));\n }) })] }));\n};\n//# sourceMappingURL=create-document.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { FileItem, useWindowSize } from \"@powerhousedao/design-system\";\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport React, { useRef } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nconst GAP = 8;\nconst ITEM_WIDTH = 256;\nconst ITEM_HEIGHT = 48;\nconst USED_SPACE = 420;\nexport function FileContentView(props) {\n const parentRef = useRef(null);\n const { t } = useTranslation();\n const windowSize = useWindowSize();\n const { fileNodes } = props;\n const availableWidth = windowSize.innerWidth - USED_SPACE;\n const columnCount = Math.floor(availableWidth / (ITEM_WIDTH + GAP)) || 1;\n const rowCount = Math.ceil(fileNodes.length / columnCount);\n const rowVirtualizer = useVirtualizer({\n count: rowCount,\n getScrollElement: () => parentRef.current,\n estimateSize: (index) => {\n if (index > 0) {\n return ITEM_HEIGHT + GAP;\n }\n return ITEM_HEIGHT;\n },\n overscan: 5,\n });\n const columnVirtualizer = useVirtualizer({\n horizontal: true,\n count: columnCount,\n getScrollElement: () => parentRef.current,\n estimateSize: (index) => {\n if (index > 0) {\n return ITEM_WIDTH + GAP;\n }\n return ITEM_WIDTH;\n },\n overscan: 5,\n });\n const getItemIndex = (rowIndex, columnIndex) => rowIndex * columnCount + columnIndex;\n const getItem = (rowIndex, columnIndex) => {\n const index = getItemIndex(rowIndex, columnIndex);\n return fileNodes[index] || null;\n };\n if (fileNodes.length === 0) {\n return (_jsx(\"div\", { className: \"mb-8 text-sm text-gray-400\", children: t(\"folderView.sections.documents.empty\", {\n defaultValue: \"No documents or files 📄\",\n }) }));\n }\n const renderItem = (rowIndex, columnIndex) => {\n const fileNode = getItem(rowIndex, columnIndex);\n if (!fileNode) {\n return null;\n }\n return (_jsx(\"div\", { style: {\n marginLeft: columnIndex === 0 ? 0 : GAP,\n }, children: _jsx(FileItem, { fileNode: fileNode, ...props }, fileNode.id) }));\n };\n return (_jsx(\"div\", { ref: parentRef, style: {\n height: `400px`,\n width: `100%`,\n overflow: \"auto\",\n }, children: _jsx(\"div\", { style: {\n height: `${rowVirtualizer.getTotalSize()}px`,\n width: `${columnVirtualizer.getTotalSize()}px`,\n position: \"relative\",\n }, children: rowVirtualizer.getVirtualItems().map((virtualRow) => (_jsx(React.Fragment, { children: columnVirtualizer.getVirtualItems().map((virtualColumn) => (_jsx(\"div\", { style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n marginTop: virtualRow.index === 0 ? 0 : GAP,\n width: `${virtualColumn.size}px`,\n height: `${virtualRow.size}px`,\n transform: `translateX(${virtualColumn.start}px) translateY(${virtualRow.start}px)`,\n }, children: renderItem(virtualRow.index, virtualColumn.index) }, virtualColumn.key))) }, virtualRow.key))) }) }));\n}\nexport default FileContentView;\n//# sourceMappingURL=file-content-view.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { cn } from \"@powerhousedao/design-system\";\nexport function DriveLayout({ children, className, ...props }) {\n return (_jsx(DriveLayout.Container, { className: className, ...props, children: children }));\n}\nDriveLayout.Container = function DriveLayoutContainer({ children, className, containerProps, ...props }) {\n return (_jsx(\"div\", { className: cn(\"flex grow flex-col overflow-auto rounded-2xl bg-gray-50 p-2\", className), ...containerProps, ...props, children: children }));\n};\nDriveLayout.Header = function DriveLayoutHeader({ children, className, containerProps, ...props }) {\n return (_jsx(\"div\", { className: cn(\"flex-0\", className), ...containerProps, ...props, children: children }));\n};\nDriveLayout.Content = function DriveLayoutContent({ children, className, containerProps, ...props }) {\n return (_jsx(\"div\", { className: cn(\"mb-5 flex-1 px-4\", className), ...containerProps, ...props, children: children }));\n};\nDriveLayout.ContentSection = function DriveLayoutContentSection({ title, children, className, containerProps, ...props }) {\n return (_jsxs(\"div\", { className: cn(className), ...containerProps, ...props, children: [title && (_jsx(\"div\", { className: \"mb-4 text-base font-semibold text-gray-600\", children: title })), _jsx(\"div\", { className: \"flex flex-wrap gap-2\", children: children })] }));\n};\nDriveLayout.Footer = function DriveLayoutFooter({ children, className, containerProps, ...props }) {\n return (_jsx(\"div\", { className: cn(\"flex-0\", className), ...containerProps, ...props, children: children }));\n};\n//# sourceMappingURL=layout.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { FolderItem, useDrop } from \"@powerhousedao/design-system\";\nimport { useFileChildNodesForId, useFolderChildNodesForId, } from \"@powerhousedao/reactor-browser\";\nimport { useTranslation } from \"react-i18next\";\nimport { twMerge } from \"tailwind-merge\";\nimport FileContentView from \"./file-content-view.js\";\nimport { DriveLayout } from \"./layout.js\";\nexport function FolderView(props) {\n const { node, isAllowedToCreateDocuments, className, containerProps, sharingType, getSyncStatusSync, setSelectedNode, onAddFile, onCopyNode, onMoveNode, onRenameNode, onDuplicateNode, onAddFolder, onAddAndSelectNewFolder, showDeleteNodeModal, } = props;\n const { t } = useTranslation();\n const folderNodes = useFolderChildNodesForId(node?.id);\n const fileNodes = useFileChildNodesForId(node?.id);\n const { isDropTarget, dropProps } = useDrop({\n node,\n onAddFile,\n onCopyNode,\n onMoveNode,\n });\n return (_jsxs(\"div\", { className: twMerge(\"rounded-md border-2 border-transparent p-2\", isDropTarget && \"border-dashed border-blue-100\", className), ...containerProps, ...dropProps, children: [_jsx(DriveLayout.ContentSection, { title: t(\"folderView.sections.folders.title\", {\n defaultValue: \"Folders\",\n }), className: \"mb-4\", children: folderNodes.length > 0 ? (folderNodes.map((folderNode) => (_jsx(FolderItem, { folderNode: folderNode, isAllowedToCreateDocuments: isAllowedToCreateDocuments, sharingType: sharingType, getSyncStatusSync: getSyncStatusSync, setSelectedNode: setSelectedNode, onAddFile: onAddFile, onCopyNode: onCopyNode, onMoveNode: onMoveNode, onRenameNode: onRenameNode, onDuplicateNode: onDuplicateNode, onAddFolder: onAddFolder, onAddAndSelectNewFolder: onAddAndSelectNewFolder, showDeleteNodeModal: showDeleteNodeModal }, folderNode.id)))) : (_jsx(\"div\", { className: \"mb-8 text-sm text-gray-400\", children: t(\"folderView.sections.folders.empty\", {\n defaultValue: \"No documents or files 📄\",\n }) })) }), _jsx(DriveLayout.ContentSection, { title: t(\"folderView.sections.documents.title\", {\n defaultValue: \"Documents and files\",\n }), children: _jsx(\"div\", { className: twMerge(\"w-full\", fileNodes.length > 0 ? \"min-h-[400px]\" : \"min-h-14\"), children: _jsx(FileContentView, { fileNodes: fileNodes, isAllowedToCreateDocuments: isAllowedToCreateDocuments, sharingType: sharingType, getSyncStatusSync: getSyncStatusSync, setSelectedNode: setSelectedNode, showDeleteNodeModal: showDeleteNodeModal, onAddFile: onAddFile, onCopyNode: onCopyNode, onMoveNode: onMoveNode, onRenameNode: onRenameNode, onDuplicateNode: onDuplicateNode, onAddFolder: onAddFolder, onAddAndSelectNewFolder: onAddAndSelectNewFolder }) }) })] }));\n}\nexport default FolderView;\n//# sourceMappingURL=folder-view.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { ConnectSearchBar, Icon } from \"@powerhousedao/design-system\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nconst defaultFilterItems = [\n {\n id: \"project\",\n label: \".project\",\n icon: _jsx(Icon, { name: \"Project\", color: \"#FF6A55\", size: 16 }),\n },\n {\n id: \"budget\",\n label: \".budget\",\n icon: _jsx(Icon, { name: \"BarChart\", color: \"#8E55EA\", size: 16 }),\n },\n {\n id: \"profile\",\n label: \".profile\",\n icon: _jsx(Icon, { name: \"Person\", color: \"#3E90F0\", size: 16 }),\n },\n {\n id: \"legal\",\n label: \".legal\",\n icon: _jsx(Icon, { name: \"Briefcase\", color: \"#4BAB71\", size: 16 }),\n },\n {\n id: \"atlas\",\n label: \".Atlas\",\n icon: _jsx(Icon, { name: \"Globe\", color: \"#FF8A00\", size: 16 }),\n },\n];\nexport const SearchBar = () => {\n const { t } = useTranslation();\n const [value, setValue] = useState(\"\"); // TODO\n return (_jsx(ConnectSearchBar, { className: \"max-w-searchbar-width m-4 shrink-0 bg-gray-100\", placeholder: t(\"searchbar.placeholder\"), filterLabel: t(\"searchbar.filterLabel\"), filterItems: defaultFilterItems, value: value, onChange: setValue }));\n};\n//# sourceMappingURL=search-bar.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Breadcrumbs, useBreadcrumbs, useDrop, } from \"@powerhousedao/design-system\";\nimport { getSyncStatusSync, makeFolderNodeFromDrive, setSelectedNode, showCreateDocumentModal, showDeleteNodeModal, useDocumentModelModules, useNodeActions, useSelectedDriveDocument, useSelectedFolder, useSelectedNodePath, useShowSearchBar, useUserPermissions, } from \"@powerhousedao/reactor-browser\";\nimport { getDriveSharingType } from \"document-drive/server/utils\";\nimport { CreateDocument } from \"./components/create-document.js\";\nimport FolderView from \"./components/folder-view.js\";\nimport { DriveLayout } from \"./components/layout.js\";\nimport { SearchBar } from \"./components/search-bar.js\";\nexport function Editor(props) {\n const { className, children } = props;\n const [selectedDrive] = useSelectedDriveDocument();\n const { onRenameNode, onDuplicateNode, onAddFolder, onAddFile, onCopyNode, onMoveNode, } = useNodeActions();\n const selectedFolder = useSelectedFolder();\n const selectedDriveAsFolderNode = makeFolderNodeFromDrive(selectedDrive);\n const documentModels = useDocumentModelModules();\n const selectedNodePath = useSelectedNodePath();\n const { isAllowedToCreateDocuments } = useUserPermissions();\n const showSearchBar = useShowSearchBar();\n const onCreateDocument = (documentModel) => {\n showCreateDocumentModal(documentModel.documentModel.id);\n };\n const { isDropTarget, dropProps } = useDrop({\n node: selectedDriveAsFolderNode,\n onAddFile,\n onCopyNode,\n onMoveNode,\n });\n const { breadcrumbs, onBreadcrumbSelected } = useBreadcrumbs({\n selectedNodePath,\n setSelectedNode,\n });\n const sharingType = getDriveSharingType(selectedDrive);\n async function onAddAndSelectNewFolder(name) {\n await onAddFolder(name, selectedFolder);\n setSelectedNode(selectedFolder);\n }\n const showDocumentEditor = !!children;\n return (_jsxs(DriveLayout, { className: className, children: [!showDocumentEditor && (_jsxs(DriveLayout.Header, { children: [_jsx(Breadcrumbs, { breadcrumbs: breadcrumbs, createEnabled: isAllowedToCreateDocuments, onCreate: onAddAndSelectNewFolder, onBreadcrumbSelected: onBreadcrumbSelected }), showSearchBar && _jsx(SearchBar, {})] })), showDocumentEditor ? (children) : (_jsx(DriveLayout.Content, { ...dropProps, className: isDropTarget ? \"rounded-xl bg-blue-100\" : \"\", children: _jsx(FolderView, { node: selectedFolder ?? selectedDriveAsFolderNode, sharingType: sharingType, getSyncStatusSync: getSyncStatusSync, setSelectedNode: setSelectedNode, onRenameNode: onRenameNode, onDuplicateNode: onDuplicateNode, onAddFolder: onAddFolder, onAddFile: onAddFile, onCopyNode: onCopyNode, onMoveNode: onMoveNode, onAddAndSelectNewFolder: onAddAndSelectNewFolder, showDeleteNodeModal: (node) => showDeleteNodeModal(node.id), isAllowedToCreateDocuments: isAllowedToCreateDocuments }) })), !showDocumentEditor && (_jsx(DriveLayout.Footer, { children: isAllowedToCreateDocuments && (_jsx(CreateDocument, { documentModels: documentModels?.filter((module) => module.documentModel.id !== \"powerhouse/document-drive\"), createDocument: onCreateDocument })) }))] }));\n}\n//# sourceMappingURL=editor.js.map","import { Editor } from \"./editor.js\";\nexport const GenericDriveExplorer = {\n Component: Editor,\n documentTypes: [\"powerhouse/document-drive\"],\n config: {\n id: \"GenericDriveExplorer\",\n name: \"Drive Explorer App\",\n disableExternalControls: true,\n documentToolbarEnabled: true,\n showSwitchboardLink: true,\n },\n};\n//# sourceMappingURL=index.js.map"],"names":["useWindowSize","windowSize","setWindowSize","useState","useEffect","windowSizeHandler","Breadcrumbs","props","breadcrumbs","createEnabled","onBreadcrumbSelected","isCreating","setIsCreating","onCreate","onAddNew","onSubmit","useCallback","name","_a","onCancel","_jsxs","node","Fragment","_jsx","Breadcrumb","NodeInput","Icon","onClick","useBreadcrumbs","selectedNodePath","setSelectedNode","breadcrumb","useDrop","onAddFile","onCopyNode","onMoveNode","trackNestedDrag","acceptedFileExtensions","isDropTarget","setIsDropTarget","dragDepthRef","useRef","isValidDropContent","dataTransfer","UI_NODE","item","onDragOver","event","onDragEnter","onDragLeaveDepth","onDragLeaveSimple","onDrop","closestDropZone","dropZoneId","droppedFiles","getDroppedFiles","file","fileName","ext","altOrOptionKeyPressed","data","droppedNode","error","useMemo","baseProps","items","syncIcons","SyncStatusIcon","syncStatus","className","overrideSyncIcons","iconProps","icons","INITIAL_SYNC","twMerge","SYNCING","SUCCESS","CONFLICT","MISSING","ERROR","FileItem","fileNode","sharingType","customDocumentIconSrc","isAllowedToCreateDocuments","getSyncStatusSync","onRenameNode","onDuplicateNode","showDeleteNodeModal","mode","setMode","READ","isDropdownMenuOpen","setIsDropdownMenuOpen","dragProps","useDrag","isReadMode","dropdownMenuHandlers","DUPLICATE","RENAME","WRITE","DELETE","dropdownMenuOptions","nodeOptionsMap","id","option","defaultFileOptions","onDropdownMenuOptionClick","itemId","handler","iconSrc","getDocumentIconSrc","iconNode","containerStyles","content","ConnectDropdownMenu","e","FolderItem","folderNode","dropProps","defaultFolderOptions","defaultValue","minLength","inputProps","value","setValue","ref","useOnClickOutside","handleSubmit","useEventListener","useLayoutEffect","_b","_c","memo","getDeps","fn","opts","deps","result","memoizedFunction","_d","depTime","newDeps","dep","index","resultTime","depEndTime","resultEndTime","resultFpsPercentage","pad","str","num","notUndefined","msg","approxEqual","a","b","debounce","targetWindow","ms","timeoutId","args","getRect","element","offsetWidth","offsetHeight","defaultKeyExtractor","defaultRangeExtractor","range","start","end","arr","i","observeElementRect","instance","cb","rect","width","height","observer","entries","run","entry","box","addEventListenerOptions","supportsScrollend","observeElementOffset","offset","fallback","createHandler","isScrolling","horizontal","isRtl","endHandler","registerScrollendEvent","measureElement","elementScroll","adjustments","behavior","toOffset","Virtualizer","_ro","get","target","opts2","key","sync","d","scrollElement","cached","measurements","furthestMeasurementsFound","furthestMeasurements","m","measurement","previousFurthestMeasurement","count","paddingStart","scrollMargin","getItemKey","enabled","itemSizeCache","min","furthestMeasurement","measuredSize","size","lane","outerSize","scrollOffset","lanes","calculateRange","startIndex","endIndex","rangeExtractor","overscan","attributeName","indexStr","prevNode","itemSize","delta","indexes","virtualItems","k","len","findNearestBinarySearch","align","maxOffset","initialAlign","attempts","maxAttempts","tryScroll","currentAlign","offsetInfo","currentOffset","afterInfo","scheduleRetry","endByLane","val","low","high","getCurrentValue","middle","currentValue","lastIndex","getOffset","endPerLane","pos","startPerLane","useIsomorphicLayoutEffect","React","useVirtualizerBase","options","rerender","resolvedOptions","instance2","flushSync","useVirtualizer","FilterItem","containerProps","mergeClassNameProps","ConnectSearchBar","onChange","placeholder","filterLabel","filterItems","selectedFilter","onFilterSelect","selectedItemFilter","filterLabelContent","handleChange","cn","DropdownMenu","DropdownMenuTrigger","DropdownMenuContent","DropdownMenuItem","BUDGET","DEFAULT","MAKERDAO_RWA_PORTFOLIO","documentTypes","BudgetStatementImg","MakerdaoRWAPortfolioImg","DefaultImg","iconMap","isDragging","setIsDragging","onDragStart","onDragEnd","documentType","getDocumentSpec","doc","CreateDocument","documentModels","createDocument","spec","Button","GAP","ITEM_WIDTH","ITEM_HEIGHT","USED_SPACE","FileContentView","parentRef","t","useTranslation","fileNodes","availableWidth","columnCount","rowCount","rowVirtualizer","columnVirtualizer","getItemIndex","rowIndex","columnIndex","getItem","renderItem","virtualRow","virtualColumn","DriveLayout","children","title","FolderView","onAddFolder","onAddAndSelectNewFolder","folderNodes","useFolderChildNodesForId","useFileChildNodesForId","defaultFilterItems","SearchBar","Editor","selectedDrive","useSelectedDriveDocument","useNodeActions","selectedFolder","useSelectedFolder","selectedDriveAsFolderNode","makeFolderNodeFromDrive","useDocumentModelModules","useSelectedNodePath","useUserPermissions","showSearchBar","useShowSearchBar","onCreateDocument","documentModel","showCreateDocumentModal","getDriveSharingType","showDocumentEditor","module","GenericDriveExplorer"],"mappings":"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","x_google_ignoreList":[8,9,10]}
|