@k2b/ui 0.2.0 → 0.4.0
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/browser/actions/Button.js +11 -2
- package/dist/browser/actions/Button.js.map +1 -1
- package/dist/browser/actions/Disclosure.js +11 -8
- package/dist/browser/actions/Disclosure.js.map +1 -1
- package/dist/browser/actions/Dropdown.js +4 -1
- package/dist/browser/actions/Dropdown.js.map +1 -1
- package/dist/browser/actions/FilterChip.js +16 -2
- package/dist/browser/actions/FilterChip.js.map +1 -1
- package/dist/browser/actions/SplitButton.js +69 -22
- package/dist/browser/actions/SplitButton.js.map +1 -1
- package/dist/browser/actions/SpotlightSearch.js +3 -7
- package/dist/browser/actions/SpotlightSearch.js.map +1 -1
- package/dist/browser/actions/Tabs.js +132 -47
- package/dist/browser/actions/Tabs.js.map +1 -1
- package/dist/browser/actions/index.js +2 -2
- package/dist/browser/actions/index.js.map +1 -1
- package/dist/browser/chat/ChatComposer.js +751 -423
- package/dist/browser/chat/ChatComposer.js.map +1 -1
- package/dist/browser/chat/ChatContextPopup.js +123 -0
- package/dist/browser/chat/ChatContextPopup.js.map +1 -0
- package/dist/browser/chat/ChatPrimitives.js +141 -78
- package/dist/browser/chat/ChatPrimitives.js.map +1 -1
- package/dist/browser/chat/ChatTasks.js +112 -0
- package/dist/browser/chat/ChatTasks.js.map +1 -0
- package/dist/browser/chat/ChatTimeline.js +31 -14
- package/dist/browser/chat/ChatTimeline.js.map +1 -1
- package/dist/browser/chat/chat-behavior.js +0 -5
- package/dist/browser/chat/chat-behavior.js.map +1 -1
- package/dist/browser/chat/composer-document.js +55 -0
- package/dist/browser/chat/composer-document.js.map +1 -0
- package/dist/browser/chat/index.js +6 -1
- package/dist/browser/chat/index.js.map +1 -1
- package/dist/browser/chat/types.js.map +1 -1
- package/dist/browser/content/Chart.js +148 -239
- package/dist/browser/content/Chart.js.map +1 -1
- package/dist/browser/content/ChartExplorer.js +324 -0
- package/dist/browser/content/ChartExplorer.js.map +1 -0
- package/dist/browser/content/ChartExplorerControls.js +153 -0
- package/dist/browser/content/ChartExplorerControls.js.map +1 -0
- package/dist/browser/content/ChartFilterControls.js +200 -0
- package/dist/browser/content/ChartFilterControls.js.map +1 -0
- package/dist/browser/content/ChartSnapshotView.js +114 -0
- package/dist/browser/content/ChartSnapshotView.js.map +1 -0
- package/dist/browser/content/DataTable.js +48 -32
- package/dist/browser/content/DataTable.js.map +1 -1
- package/dist/browser/content/FileBrowser.js +3 -0
- package/dist/browser/content/FileBrowser.js.map +1 -1
- package/dist/browser/content/FileGrid.js +93 -0
- package/dist/browser/content/FileGrid.js.map +1 -0
- package/dist/browser/content/FileTree.js +2 -2
- package/dist/browser/content/FileTree.js.map +1 -1
- package/dist/browser/content/FileView.js +511 -162
- package/dist/browser/content/FileView.js.map +1 -1
- package/dist/browser/content/MarkdownView.js +6 -0
- package/dist/browser/content/MarkdownView.js.map +1 -1
- package/dist/browser/content/Pagination.js.map +1 -1
- package/dist/browser/content/PdfPreview.js +107 -90
- package/dist/browser/content/PdfPreview.js.map +1 -1
- package/dist/browser/content/chart-cursor.js +33 -0
- package/dist/browser/content/chart-cursor.js.map +1 -0
- package/dist/browser/content/chart-explorer.js +147 -0
- package/dist/browser/content/chart-explorer.js.map +1 -0
- package/dist/browser/content/chart-inspection.js +447 -0
- package/dist/browser/content/chart-inspection.js.map +1 -0
- package/dist/browser/content/chart-line-gaps.js +53 -0
- package/dist/browser/content/chart-line-gaps.js.map +1 -0
- package/dist/browser/content/chart-map-viewport.js +5 -1
- package/dist/browser/content/chart-map-viewport.js.map +1 -1
- package/dist/browser/content/chart-snapshot.js +63 -0
- package/dist/browser/content/chart-snapshot.js.map +1 -0
- package/dist/browser/content/chart-state-timeline.js +32 -4
- package/dist/browser/content/chart-state-timeline.js.map +1 -1
- package/dist/browser/content/chart-svg.js +54 -0
- package/dist/browser/content/chart-svg.js.map +1 -0
- package/dist/browser/content/collection-selection.js +109 -0
- package/dist/browser/content/collection-selection.js.map +1 -0
- package/dist/browser/content/delimited-preferences.js +21 -0
- package/dist/browser/content/delimited-preferences.js.map +1 -0
- package/dist/browser/content/file-tree.js.map +1 -1
- package/dist/browser/content/file-view-preview.js +11 -7
- package/dist/browser/content/file-view-preview.js.map +1 -1
- package/dist/browser/content/index.js +9 -0
- package/dist/browser/content/index.js.map +1 -1
- package/dist/browser/feedback/InlineGuidance.js +17 -3
- package/dist/browser/feedback/InlineGuidance.js.map +1 -1
- package/dist/browser/feedback/dialog-core.js +81 -7
- package/dist/browser/feedback/dialog-core.js.map +1 -1
- package/dist/browser/feedback/prompts.js +6 -0
- package/dist/browser/feedback/prompts.js.map +1 -1
- package/dist/browser/feedback/toast.js +29 -6
- package/dist/browser/feedback/toast.js.map +1 -1
- package/dist/browser/inputs/ChoiceGroups.js.map +1 -1
- package/dist/browser/inputs/Select.js.map +1 -1
- package/dist/browser/inputs/SelectChip.js +3 -2
- package/dist/browser/inputs/SelectChip.js.map +1 -1
- package/dist/browser/inputs/TextInput.js +7 -1
- package/dist/browser/inputs/TextInput.js.map +1 -1
- package/dist/browser/inputs/markdown/MarkdownEditor.js +61 -37
- package/dist/browser/inputs/markdown/MarkdownEditor.js.map +1 -1
- package/dist/browser/inputs/markdown/behaviors.js +1 -1
- package/dist/browser/inputs/markdown/behaviors.js.map +1 -1
- package/dist/browser/intl/Format.js +89 -16
- package/dist/browser/intl/Format.js.map +1 -1
- package/dist/browser/intl/index.js.map +1 -1
- package/dist/browser/intl/messages.js +130 -2
- package/dist/browser/intl/messages.js.map +1 -1
- package/dist/browser/layout/AppWorkspace.js +712 -624
- package/dist/browser/layout/AppWorkspace.js.map +1 -1
- package/dist/browser/layout/BottomSheet.js +95 -0
- package/dist/browser/layout/BottomSheet.js.map +1 -0
- package/dist/browser/layout/DetailPanel.js +56 -44
- package/dist/browser/layout/DetailPanel.js.map +1 -1
- package/dist/browser/layout/Navigation.js +278 -0
- package/dist/browser/layout/Navigation.js.map +1 -0
- package/dist/browser/layout/PanelDialog.js +219 -71
- package/dist/browser/layout/PanelDialog.js.map +1 -1
- package/dist/browser/layout/ScrollArea.js +21 -1
- package/dist/browser/layout/ScrollArea.js.map +1 -1
- package/dist/browser/layout/Settings.js.map +1 -1
- package/dist/browser/layout/SidebarItemPreview.js +183 -0
- package/dist/browser/layout/SidebarItemPreview.js.map +1 -0
- package/dist/browser/layout/app-workspace-controller.js +3 -0
- package/dist/browser/layout/app-workspace-controller.js.map +1 -1
- package/dist/browser/layout/app-workspace-state.js.map +1 -1
- package/dist/browser/layout/index.js +3 -0
- package/dist/browser/layout/index.js.map +1 -1
- package/dist/browser/layout/navigation-model.js +23 -0
- package/dist/browser/layout/navigation-model.js.map +1 -0
- package/dist/browser/layout/scroll-fade.js +100 -0
- package/dist/browser/layout/scroll-fade.js.map +1 -0
- package/dist/browser/surfaces/DescriptionList.js.map +1 -1
- package/dist/browser/surfaces/StatusBadge.js +2 -1
- package/dist/browser/surfaces/StatusBadge.js.map +1 -1
- package/dist/fonts/ibm-plex-mono-cyrillic-400-italic-4aded3f2f2a7d27d.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-cyrillic-400-normal-7635422bd10ddbbc.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-cyrillic-500-normal-1d89462e86cb8e87.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-cyrillic-600-normal-2b05a8695c7f9f4a.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-cyrillic-ext-400-italic-a0b3b8cbe5a516e7.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-cyrillic-ext-400-normal-f8c22ec1804bd696.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-cyrillic-ext-500-normal-3febe5c7f22e4b07.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-cyrillic-ext-600-normal-83109cdd4f8665b4.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-400-italic-0840095faae86403.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-400-normal-08949f728dc52d52.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-500-normal-01d285447409c8a5.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-600-normal-0d1f0b8d0722224e.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-ext-400-italic-1b07eee6df7d26b3.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-ext-400-normal-6bc0f226a5b7884a.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-ext-500-normal-6bb06407c97584b0.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-ext-600-normal-32057cf50dd14bdb.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-vietnamese-400-italic-a6bab38af4f9c761.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-vietnamese-400-normal-62632b6375305e70.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-vietnamese-500-normal-781633d95de88040.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-vietnamese-600-normal-51b74d53e106ba8a.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-cyrillic-400-italic-e8731a7e2b00fc4f.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-cyrillic-400-normal-69afad88a0740b6e.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-cyrillic-500-normal-200be3a2a6b1789f.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-cyrillic-600-normal-730becc6f005c18c.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-cyrillic-700-normal-40540598b4c9eb2c.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-cyrillic-ext-400-italic-4ffb25726a7ce4cc.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-cyrillic-ext-400-normal-e2580ad78906551e.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-cyrillic-ext-500-normal-08578d906af6d986.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-cyrillic-ext-600-normal-d60d3d0b182753d5.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-cyrillic-ext-700-normal-d07dd53642480097.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-greek-400-italic-1bc10b01688ba9fa.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-greek-400-normal-02296067bc904d2a.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-greek-500-normal-8cb6e20b4dbbaa5f.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-greek-600-normal-0a9ebd9019415ee9.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-greek-700-normal-c949641d10a3bebc.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-latin-400-italic-6de912e531b6c980.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-latin-400-normal-3b646991d30055a9.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-latin-500-normal-0717336fb31fcdcd.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-latin-600-normal-8960851d691c054e.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-latin-700-normal-42e7b0c143c19df9.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-latin-ext-400-italic-c5c00e8a32022dfe.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-latin-ext-400-normal-c93d2a12aaa280f6.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-latin-ext-500-normal-2846035d85100f84.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-latin-ext-600-normal-b25dfd4f979e442a.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-latin-ext-700-normal-92f0392bd74fa395.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-vietnamese-400-italic-675d4bace127bffb.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-vietnamese-400-normal-771538f7f26551bd.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-vietnamese-500-normal-85ba3d9c2488a813.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-vietnamese-600-normal-5d34b803637befe3.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-vietnamese-700-normal-b79d0c4b68b85007.woff2 +0 -0
- package/dist/plex.css +1 -1
- package/dist/ssr/actions/Button.js +11 -2
- package/dist/ssr/actions/Button.js.map +1 -1
- package/dist/ssr/actions/Disclosure.js +2 -2
- package/dist/ssr/actions/Disclosure.js.map +1 -1
- package/dist/ssr/actions/Dropdown.js +4 -1
- package/dist/ssr/actions/Dropdown.js.map +1 -1
- package/dist/ssr/actions/FilterChip.js +16 -2
- package/dist/ssr/actions/FilterChip.js.map +1 -1
- package/dist/ssr/actions/SplitButton.js +69 -22
- package/dist/ssr/actions/SplitButton.js.map +1 -1
- package/dist/ssr/actions/SpotlightSearch.js +3 -7
- package/dist/ssr/actions/SpotlightSearch.js.map +1 -1
- package/dist/ssr/actions/Tabs.js +58 -11
- package/dist/ssr/actions/Tabs.js.map +1 -1
- package/dist/ssr/actions/index.js +2 -2
- package/dist/ssr/actions/index.js.map +1 -1
- package/dist/ssr/chat/ChatComposer.js +366 -134
- package/dist/ssr/chat/ChatComposer.js.map +1 -1
- package/dist/ssr/chat/ChatContextPopup.js +86 -0
- package/dist/ssr/chat/ChatContextPopup.js.map +1 -0
- package/dist/ssr/chat/ChatPrimitives.js +49 -11
- package/dist/ssr/chat/ChatPrimitives.js.map +1 -1
- package/dist/ssr/chat/ChatTasks.js +48 -0
- package/dist/ssr/chat/ChatTasks.js.map +1 -0
- package/dist/ssr/chat/ChatTimeline.js +14 -4
- package/dist/ssr/chat/ChatTimeline.js.map +1 -1
- package/dist/ssr/chat/chat-behavior.js +0 -5
- package/dist/ssr/chat/chat-behavior.js.map +1 -1
- package/dist/ssr/chat/composer-document.js +55 -0
- package/dist/ssr/chat/composer-document.js.map +1 -0
- package/dist/ssr/chat/index.js +6 -1
- package/dist/ssr/chat/index.js.map +1 -1
- package/dist/ssr/chat/types.js.map +1 -1
- package/dist/ssr/content/Chart.js +121 -219
- package/dist/ssr/content/Chart.js.map +1 -1
- package/dist/ssr/content/ChartExplorer.js +257 -0
- package/dist/ssr/content/ChartExplorer.js.map +1 -0
- package/dist/ssr/content/ChartExplorerControls.js +105 -0
- package/dist/ssr/content/ChartExplorerControls.js.map +1 -0
- package/dist/ssr/content/ChartFilterControls.js +139 -0
- package/dist/ssr/content/ChartFilterControls.js.map +1 -0
- package/dist/ssr/content/ChartSnapshotView.js +58 -0
- package/dist/ssr/content/ChartSnapshotView.js.map +1 -0
- package/dist/ssr/content/DataTable.js +13 -9
- package/dist/ssr/content/DataTable.js.map +1 -1
- package/dist/ssr/content/FileBrowser.js +3 -0
- package/dist/ssr/content/FileBrowser.js.map +1 -1
- package/dist/ssr/content/FileGrid.js +38 -0
- package/dist/ssr/content/FileGrid.js.map +1 -0
- package/dist/ssr/content/FileTree.js +2 -2
- package/dist/ssr/content/FileTree.js.map +1 -1
- package/dist/ssr/content/FileView.js +356 -75
- package/dist/ssr/content/FileView.js.map +1 -1
- package/dist/ssr/content/MarkdownView.js +6 -0
- package/dist/ssr/content/MarkdownView.js.map +1 -1
- package/dist/ssr/content/Pagination.js.map +1 -1
- package/dist/ssr/content/PdfPreview.js +37 -24
- package/dist/ssr/content/PdfPreview.js.map +1 -1
- package/dist/ssr/content/chart-cursor.js +33 -0
- package/dist/ssr/content/chart-cursor.js.map +1 -0
- package/dist/ssr/content/chart-explorer.js +147 -0
- package/dist/ssr/content/chart-explorer.js.map +1 -0
- package/dist/ssr/content/chart-inspection.js +447 -0
- package/dist/ssr/content/chart-inspection.js.map +1 -0
- package/dist/ssr/content/chart-line-gaps.js +53 -0
- package/dist/ssr/content/chart-line-gaps.js.map +1 -0
- package/dist/ssr/content/chart-map-viewport.js +5 -1
- package/dist/ssr/content/chart-map-viewport.js.map +1 -1
- package/dist/ssr/content/chart-snapshot.js +63 -0
- package/dist/ssr/content/chart-snapshot.js.map +1 -0
- package/dist/ssr/content/chart-state-timeline.js +32 -4
- package/dist/ssr/content/chart-state-timeline.js.map +1 -1
- package/dist/ssr/content/chart-svg.js +54 -0
- package/dist/ssr/content/chart-svg.js.map +1 -0
- package/dist/ssr/content/collection-selection.js +109 -0
- package/dist/ssr/content/collection-selection.js.map +1 -0
- package/dist/ssr/content/delimited-preferences.js +21 -0
- package/dist/ssr/content/delimited-preferences.js.map +1 -0
- package/dist/ssr/content/file-tree.js.map +1 -1
- package/dist/ssr/content/file-view-preview.js +11 -7
- package/dist/ssr/content/file-view-preview.js.map +1 -1
- package/dist/ssr/content/index.js +9 -0
- package/dist/ssr/content/index.js.map +1 -1
- package/dist/ssr/feedback/InlineGuidance.js +17 -3
- package/dist/ssr/feedback/InlineGuidance.js.map +1 -1
- package/dist/ssr/feedback/dialog-core.js +81 -7
- package/dist/ssr/feedback/dialog-core.js.map +1 -1
- package/dist/ssr/feedback/prompts.js +6 -0
- package/dist/ssr/feedback/prompts.js.map +1 -1
- package/dist/ssr/feedback/toast.js +29 -6
- package/dist/ssr/feedback/toast.js.map +1 -1
- package/dist/ssr/inputs/ChoiceGroups.js.map +1 -1
- package/dist/ssr/inputs/Select.js.map +1 -1
- package/dist/ssr/inputs/SelectChip.js +3 -3
- package/dist/ssr/inputs/SelectChip.js.map +1 -1
- package/dist/ssr/inputs/TextInput.js.map +1 -1
- package/dist/ssr/inputs/markdown/MarkdownEditor.js +19 -11
- package/dist/ssr/inputs/markdown/MarkdownEditor.js.map +1 -1
- package/dist/ssr/inputs/markdown/behaviors.js +1 -1
- package/dist/ssr/inputs/markdown/behaviors.js.map +1 -1
- package/dist/ssr/intl/Format.js +61 -0
- package/dist/ssr/intl/Format.js.map +1 -1
- package/dist/ssr/intl/index.js.map +1 -1
- package/dist/ssr/intl/messages.js +130 -2
- package/dist/ssr/intl/messages.js.map +1 -1
- package/dist/ssr/layout/AppWorkspace.js +368 -275
- package/dist/ssr/layout/AppWorkspace.js.map +1 -1
- package/dist/ssr/layout/BottomSheet.js +43 -0
- package/dist/ssr/layout/BottomSheet.js.map +1 -0
- package/dist/ssr/layout/DetailPanel.js +11 -4
- package/dist/ssr/layout/DetailPanel.js.map +1 -1
- package/dist/ssr/layout/Navigation.js +181 -0
- package/dist/ssr/layout/Navigation.js.map +1 -0
- package/dist/ssr/layout/PanelDialog.js +111 -26
- package/dist/ssr/layout/PanelDialog.js.map +1 -1
- package/dist/ssr/layout/ScrollArea.js +16 -1
- package/dist/ssr/layout/ScrollArea.js.map +1 -1
- package/dist/ssr/layout/Settings.js.map +1 -1
- package/dist/ssr/layout/SidebarItemPreview.js +133 -0
- package/dist/ssr/layout/SidebarItemPreview.js.map +1 -0
- package/dist/ssr/layout/app-workspace-controller.js +3 -0
- package/dist/ssr/layout/app-workspace-controller.js.map +1 -1
- package/dist/ssr/layout/app-workspace-state.js.map +1 -1
- package/dist/ssr/layout/index.js +3 -0
- package/dist/ssr/layout/index.js.map +1 -1
- package/dist/ssr/layout/navigation-model.js +23 -0
- package/dist/ssr/layout/navigation-model.js.map +1 -0
- package/dist/ssr/layout/scroll-fade.js +100 -0
- package/dist/ssr/layout/scroll-fade.js.map +1 -0
- package/dist/ssr/surfaces/DescriptionList.js.map +1 -1
- package/dist/ssr/surfaces/StatusBadge.js +2 -1
- package/dist/ssr/surfaces/StatusBadge.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/tabler.css +1 -1
- package/dist/types/actions/Button.d.ts +4 -0
- package/dist/types/actions/Disclosure.d.ts +1 -0
- package/dist/types/actions/FilterChip.d.ts +4 -0
- package/dist/types/actions/SplitButton.d.ts +6 -0
- package/dist/types/actions/SpotlightSearch.d.ts +0 -4
- package/dist/types/actions/Tabs.d.ts +4 -0
- package/dist/types/actions/index.d.ts +4 -4
- package/dist/types/chat/ChatComposer.d.ts +20 -2
- package/dist/types/chat/ChatContextPopup.d.ts +6 -0
- package/dist/types/chat/ChatPrimitives.d.ts +4 -0
- package/dist/types/chat/ChatTasks.d.ts +15 -0
- package/dist/types/chat/ChatTimeline.d.ts +2 -0
- package/dist/types/chat/chat-behavior.d.ts +0 -3
- package/dist/types/chat/composer-document.d.ts +14 -0
- package/dist/types/chat/index.d.ts +8 -1
- package/dist/types/chat/types.d.ts +7 -0
- package/dist/types/content/Chart.d.ts +42 -23
- package/dist/types/content/ChartExplorer.d.ts +34 -0
- package/dist/types/content/ChartExplorerControls.d.ts +10 -0
- package/dist/types/content/ChartFilterControls.d.ts +21 -0
- package/dist/types/content/ChartSnapshotView.d.ts +11 -0
- package/dist/types/content/DataTable.d.ts +4 -0
- package/dist/types/content/FileBrowser.d.ts +1 -0
- package/dist/types/content/FileGrid.d.ts +21 -0
- package/dist/types/content/FileView.d.ts +20 -0
- package/dist/types/content/PdfPreview.d.ts +8 -1
- package/dist/types/content/chart-cursor.d.ts +15 -0
- package/dist/types/content/chart-explorer.d.ts +48 -0
- package/dist/types/content/chart-inspection.d.ts +40 -0
- package/dist/types/content/chart-line-gaps.d.ts +5 -0
- package/dist/types/content/chart-map-viewport.d.ts +1 -1
- package/dist/types/content/chart-snapshot.d.ts +26 -0
- package/dist/types/content/chart-svg.d.ts +21 -0
- package/dist/types/content/collection-selection.d.ts +24 -0
- package/dist/types/content/delimited-preferences.d.ts +11 -0
- package/dist/types/content/file-tree.d.ts +2 -0
- package/dist/types/content/file-view-preview.d.ts +4 -1
- package/dist/types/content/index.d.ts +16 -2
- package/dist/types/feedback/InlineGuidance.d.ts +1 -0
- package/dist/types/feedback/dialog-core.d.ts +11 -0
- package/dist/types/feedback/prompts.d.ts +2 -0
- package/dist/types/feedback/toast.d.ts +7 -1
- package/dist/types/inputs/markdown/MarkdownEditor.d.ts +5 -1
- package/dist/types/intl/Format.d.ts +9 -0
- package/dist/types/intl/index.d.ts +1 -1
- package/dist/types/intl/messages.d.ts +31 -1
- package/dist/types/layout/AppWorkspace.d.ts +35 -18
- package/dist/types/layout/BottomSheet.d.ts +23 -0
- package/dist/types/layout/DetailPanel.d.ts +1 -0
- package/dist/types/layout/Navigation.d.ts +8 -0
- package/dist/types/layout/PanelDialog.d.ts +14 -1
- package/dist/types/layout/ScrollArea.d.ts +4 -0
- package/dist/types/layout/Settings.d.ts +1 -1
- package/dist/types/layout/SidebarItemPreview.d.ts +11 -0
- package/dist/types/layout/index.d.ts +4 -1
- package/dist/types/layout/navigation-model.d.ts +48 -0
- package/dist/types/layout/scroll-fade.d.ts +3 -0
- package/dist/types/surfaces/DescriptionList.d.ts +1 -1
- package/dist/types/surfaces/StatusBadge.d.ts +1 -1
- package/package.json +5 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createZip","downloadFileFromContent","mutation","createEffect","createMemo","createResource","createSignal","Match","onCleanup","Show","Switch","untrack","Dropdown","dialogCore","prompts","resolveUiMessages","useUiMessages","PanelDialog","panelDialogOptions","Placeholder","FileTree","FileView","parentOf","path","index","lastIndexOf","slice","FileBrowserPanel","props","messages","entries","refetch","source","list","selectedPath","setSelectedPath","initialPath","selectedDirty","setSelectedDirty","pendingFolders","setPendingFolders","uploadInputRef","uploadDir","previousRefreshKey","refreshKey","refreshPreview","undefined","registerRefresh","unregister","Promise","all","next","onSelectedPathChange","Object","is","allEntries","loaded","real","Set","map","entry","filter","has","kind","selectedEntry","find","fileMutation","create","work","onSuccess","onError","error","message","pathMutable","loading","readOnly","isReadOnly","pathWritable","Boolean","write","run","mutate","canLeaveCurrent","nextPath","current","confirmed","confirmDiscard","confirm","discardUnsavedFile","title","discardChanges","variant","selectPath","removeFile","remove","folders","candidate","startsWith","selected","renameFile","nextName","target","rename","createFile","dirPath","name","prompt","newFileName","newFile","trim","includes","createFolder","newFolderName","newFolder","pickUpload","click","onUploadPicked","input","files","Array","from","value","length","upload","baseName","filesBehind","some","prefix","moveEntry","targetDir","destBase","file","contentBytes","content","read","encoding","TextEncoder","encode","Uint8Array","atob","char","charCodeAt","downloadEntry","isFolder","href","downloadHref","anchor","document","createElement","download","mediaType","Error","folderEmpty","zipEntries","filename","downloadFailed","treeActions","dir","move","addMenuItems","icon","label","action","uploadFiles","_el$","_$getNextElement","_tmpl$3","_el$2","firstChild","_el$3","_el$4","_el$7","nextSibling","_el$8","_co$","_$getNextMarker","_el$0","_el$1","_co$2","_el$9","_el$10","_el$11","_co$3","_$insert","_$createComponent","when","children","Root","position","items","addFileFolderUpload","Trigger","appearance","add","_tmpl$","_el$6","_tmpl$2","_$memo","loadingFiles","failedLoadFiles","description","String","onSelect","actions","noFiles","spaceEmpty","addEventListener","event","currentTarget","_ref$","_$use","fallback","selectFile","pickFileFromTree","folderSelected","chooseFileToPreview","size","load","revision","refresh","renderers","onDirtyChange","save","_$effect","_p$","_v$","class","_v$2","e","_$className","t","_$setAttribute","openFileBrowser","options","open","close","Header","subtitle","Body"],"sources":["content/FileBrowser.tsx"],"sourcesContent":["/**\n * FileBrowser — FileTree + FileView over a FileSource adapter. One dialog\n * serves every file surface (conversation VFS, skills, later the Files app):\n * the source decides the capabilities, optional methods enable the matching\n * UI (write → edit/save, remove → delete, rename → rename, upload → upload).\n * Fixed-height IDE-style layout: both panes scroll, the shell never jumps.\n */\nimport { createZip, downloadFileFromContent } from \"@k2b/stdlib/browser\";\nimport { mutation } from \"@k2b/stdlib/solid\";\nimport { createEffect, createMemo, createResource, createSignal, Match, onCleanup, Show, Switch, untrack } from \"solid-js\";\nimport Dropdown from \"../actions/Dropdown\";\nimport { dialogCore } from \"../feedback/dialog-core\";\nimport { prompts } from \"../feedback/prompts\";\nimport { resolveUiMessages, useUiMessages } from \"../intl/messages\";\nimport PanelDialog, { panelDialogOptions } from \"../layout/PanelDialog\";\nimport Placeholder from \"../surfaces/Placeholder\";\nimport FileTree, { type FileTreeEntry } from \"./FileTree\";\nimport FileView, { type FileViewContent, type FileViewRenderer } from \"./FileView\";\n\nexport type FileSource = {\n list(): Promise<FileTreeEntry[]>;\n read(path: string): Promise<FileViewContent>;\n write?(path: string, content: string, encoding?: \"utf8\" | \"base64\"): Promise<void>;\n remove?(path: string): Promise<void>;\n rename?(from: string, to: string): Promise<void>;\n upload?(dirPath: string, files: File[]): Promise<void>;\n downloadHref?(path: string): string | null;\n /** Paths matching this predicate stay read-only even when the source can write (e.g. /input). */\n isReadOnly?(path: string): boolean;\n};\n\nexport type FileBrowserPanelProps = {\n source: FileSource;\n /** Hide every mutating affordance while retaining file selection and downloads. */\n readOnly?: boolean;\n /** Refetch entries when this host-controlled value changes. */\n refreshKey?: unknown;\n /** Preselect a file once entries are loaded. */\n initialPath?: string;\n /** Mirrors file selection into route state when the host needs durable navigation. */\n onSelectedPathChange?: (path: string | null) => void;\n /** Per-instance preview extensions forwarded to FileView. */\n renderers?: readonly FileViewRenderer[];\n /** Optional host copy/policy for leaving an unsaved file. */\n confirmDiscard?: (path: string, nextPath: string | null) => boolean | Promise<boolean>;\n /** Fixed shell height — the panes scroll inside it. */\n class?: string;\n /** Optional imperative refresh used by realtime owners that must await the visible update. */\n registerRefresh?: (refresh: () => Promise<void>) => void | (() => void);\n};\n\nconst parentOf = (path: string): string => {\n const index = path.lastIndexOf(\"/\");\n return index <= 0 ? \"/\" : path.slice(0, index);\n};\n\nexport function FileBrowserPanel(props: FileBrowserPanelProps) {\n const messages = useUiMessages();\n // FileSource is an imperative adapter. Its methods may read host signals,\n // but refreshes stay owned by this component (`refetch` / `refreshKey`);\n // tracking those implementation details can otherwise feed a write back\n // into its own list request indefinitely.\n const [entries, { refetch }] = createResource(async () => untrack(() => props.source.list()));\n const [selectedPath, setSelectedPath] = createSignal<string | null>(props.initialPath ?? null);\n const [selectedDirty, setSelectedDirty] = createSignal(false);\n // Folders exist implicitly through file paths — freshly created (still empty)\n // ones live here until their first file makes them real.\n const [pendingFolders, setPendingFolders] = createSignal<string[]>([]);\n let uploadInputRef: HTMLInputElement | undefined;\n let uploadDir = \"/\";\n let previousRefreshKey = props.refreshKey;\n let refreshPreview = async (): Promise<void> => undefined;\n\n createEffect(() => {\n if (!props.registerRefresh) return;\n const unregister = props.registerRefresh(async () => {\n await Promise.all([refetch(), refreshPreview()]);\n });\n if (unregister) onCleanup(unregister);\n });\n\n createEffect(() => {\n const next = props.initialPath ?? null;\n if (!selectedDirty() && next !== selectedPath()) setSelectedPath(next);\n });\n createEffect(() => props.onSelectedPathChange?.(selectedPath()));\n createEffect(() => {\n const refreshKey = props.refreshKey;\n if (Object.is(refreshKey, previousRefreshKey)) return;\n previousRefreshKey = refreshKey;\n void refetch();\n });\n\n const allEntries = createMemo<FileTreeEntry[]>(() => {\n const loaded = entries() ?? [];\n const real = new Set(loaded.map((entry) => entry.path));\n return [\n ...loaded,\n ...pendingFolders()\n .filter((path) => !real.has(path))\n .map((path) => ({ path, kind: \"folder\" as const })),\n ];\n });\n const selectedEntry = createMemo(() => allEntries().find((entry) => entry.path === selectedPath()) ?? null);\n const fileMutation = mutation.create<void, () => Promise<void>>({\n mutation: (work) => work(),\n onSuccess: () => void refetch(),\n onError: (error) => void prompts.error(error.message),\n });\n const pathMutable = (path: string) => !fileMutation.loading() && !props.readOnly && !props.source.isReadOnly?.(path);\n const pathWritable = (path: string) => pathMutable(path) && Boolean(props.source.write);\n const run = (work: () => Promise<void>) => void fileMutation.mutate(work);\n const canLeaveCurrent = async (nextPath: string | null): Promise<boolean> => {\n const current = selectedPath();\n if (nextPath === current || !selectedDirty() || !current) return true;\n if (selectedDirty() && current) {\n const confirmed = props.confirmDiscard\n ? await props.confirmDiscard(current, nextPath)\n : await prompts.confirm(messages().discardUnsavedFile, {\n title: messages().discardChanges,\n variant: \"danger\",\n });\n if (!confirmed) return false;\n }\n return true;\n };\n const selectPath = async (nextPath: string | null) => {\n if (!(await canLeaveCurrent(nextPath))) return;\n setSelectedDirty(false);\n setSelectedPath(nextPath);\n };\n\n const removeFile = (path: string) =>\n run(async () => {\n const confirmed = await prompts.confirm(`Delete ${path}?`, { title: \"Delete file\", variant: \"danger\" });\n if (!confirmed) return;\n await props.source.remove!(path);\n setPendingFolders((folders) => folders.filter((candidate) => candidate !== path && !candidate.startsWith(`${path}/`)));\n const selected = selectedPath();\n if (selected === path || selected?.startsWith(`${path}/`)) setSelectedPath(null);\n });\n\n const renameFile = (path: string, nextName: string) =>\n run(async () => {\n const target = `${parentOf(path) === \"/\" ? \"\" : parentOf(path)}/${nextName}`;\n await props.source.rename!(path, target);\n if (selectedPath() === path) setSelectedPath(target);\n });\n\n const createFile = (dirPath: string) =>\n run(async () => {\n const name = await prompts.prompt(messages().newFileName, \"\", { title: messages().newFile });\n if (!name || typeof name !== \"string\" || !name.trim() || name.includes(\"/\")) return;\n const path = `${dirPath === \"/\" ? \"\" : dirPath}/${name.trim()}`;\n if (!(await canLeaveCurrent(path))) return;\n await props.source.write!(path, \"\");\n setSelectedDirty(false);\n setSelectedPath(path);\n });\n\n const createFolder = (dirPath: string) =>\n void (async () => {\n const name = await prompts.prompt(messages().newFolderName, \"\", { title: messages().newFolder });\n if (!name || typeof name !== \"string\" || !name.trim() || name.includes(\"/\")) return;\n const path = `${dirPath === \"/\" ? \"\" : dirPath}/${name.trim()}`;\n setPendingFolders((folders) => [...folders, path]);\n })();\n\n const pickUpload = (dirPath: string) => {\n uploadDir = dirPath;\n uploadInputRef?.click();\n };\n\n const onUploadPicked = (input: HTMLInputElement) => {\n const files = Array.from(input.files ?? []);\n input.value = \"\";\n if (files.length > 0) run(() => props.source.upload!(uploadDir, files));\n };\n\n const baseName = (path: string) => path.slice(path.lastIndexOf(\"/\") + 1);\n\n /** Concrete file paths behind an entry: the file itself, or everything under a folder. */\n const filesBehind = (path: string): string[] => {\n const list = entries() ?? [];\n if (list.some((entry) => entry.path === path && entry.kind !== \"folder\")) return [path];\n const prefix = `${path}/`;\n return list.filter((entry) => entry.path.startsWith(prefix) && entry.kind !== \"folder\").map((entry) => entry.path);\n };\n\n /** Move a file OR a whole folder subtree (per-file renames preserve the structure). */\n const moveEntry = (path: string, targetDir: string) =>\n run(async () => {\n const destBase = `${targetDir === \"/\" ? \"\" : targetDir}/${baseName(path)}`;\n const files = filesBehind(path);\n if (files.length === 0) {\n // Still-empty pending folder — relocating it is a purely local affair.\n setPendingFolders((folders) => folders.map((candidate) => (candidate === path ? destBase : candidate)));\n return;\n }\n for (const file of files) {\n await props.source.rename!(file, `${destBase}${file.slice(path.length)}`);\n }\n const selected = selectedPath();\n if (selected && (selected === path || selected.startsWith(`${path}/`))) {\n setSelectedPath(`${destBase}${selected.slice(path.length)}`);\n }\n });\n\n const contentBytes = async (path: string): Promise<Uint8Array> => {\n const content = await props.source.read(path);\n return content.encoding === \"utf8\"\n ? new TextEncoder().encode(content.content)\n : Uint8Array.from(atob(content.content), (char) => char.charCodeAt(0));\n };\n\n const downloadEntry = (path: string, isFolder: boolean) =>\n void (async () => {\n try {\n if (!isFolder) {\n const href = props.source.downloadHref?.(path);\n if (href) {\n const anchor = document.createElement(\"a\");\n anchor.href = href;\n anchor.download = baseName(path);\n anchor.click();\n return;\n }\n const content = await props.source.read(path);\n downloadFileFromContent(await contentBytes(path), baseName(path), content.mediaType || \"application/octet-stream\");\n return;\n }\n const files = filesBehind(path);\n if (files.length === 0) throw new Error(messages().folderEmpty);\n const zipEntries = await Promise.all(\n files.map(async (file) => ({ filename: file.slice(path.length + 1), source: await contentBytes(file) })),\n );\n downloadFileFromContent(await createZip(zipEntries), `${baseName(path) || \"files\"}.zip`, \"application/zip\");\n } catch (error) {\n void prompts.error(error instanceof Error ? error.message : messages().downloadFailed);\n }\n })();\n\n const treeActions = () => ({\n ...(!props.readOnly && props.source.rename\n ? { rename: (path: string, next: string) => (pathMutable(path) ? renameFile(path, next) : undefined) }\n : {}),\n ...(!props.readOnly && props.source.remove ? { remove: (path: string) => (pathMutable(path) ? removeFile(path) : undefined) } : {}),\n ...(!props.readOnly && props.source.write ? { createFile: (dir: string) => (pathWritable(dir) ? createFile(dir) : undefined) } : {}),\n ...(!props.readOnly && props.source.write\n ? { createFolder: (dir: string) => (pathWritable(dir) ? createFolder(dir) : undefined) }\n : {}),\n ...(!props.readOnly && props.source.rename\n ? { move: (path: string, dir: string) => (pathMutable(path) && pathMutable(dir) ? moveEntry(path, dir) : undefined) }\n : {}),\n download: (path: string, isFolder: boolean) => downloadEntry(path, isFolder),\n });\n\n const addMenuItems = () => [\n ...(pathWritable(\"/\") ? [{ icon: \"ti ti-file-plus\", label: messages().newFile, action: () => createFile(\"/\") }] : []),\n ...(pathWritable(\"/\") ? [{ icon: \"ti ti-folder-plus\", label: messages().newFolder, action: () => createFolder(\"/\") }] : []),\n ...(pathMutable(\"/\") && props.source.upload\n ? [{ icon: \"ti ti-upload\", label: messages().uploadFiles, action: () => pickUpload(\"/\") }]\n : []),\n ];\n\n return (\n <div class={`k2b-content-file-browser ${props.class ?? \"\"}`} data-default-height={props.class ? undefined : \"true\"}>\n <div class=\"k2b-content-file-browser__sidebar\">\n <div class=\"k2b-content-file-browser__header\">\n <p class=\"k2b-content-file-browser__title\">{messages().files}</p>\n <Show when={addMenuItems().length > 0}>\n <Dropdown.Root position=\"bottom-left\" items={addMenuItems()} label={messages().addFileFolderUpload}>\n <Dropdown.Trigger\n appearance=\"plain\"\n class=\"k2b-content-file-browser__add\"\n label={messages().addFileFolderUpload}\n title={messages().add}\n >\n <i class=\"ti ti-plus\" aria-hidden=\"true\" />\n <span class=\"k2b-sr-only\">{messages().addFileFolderUpload}</span>\n </Dropdown.Trigger>\n </Dropdown.Root>\n </Show>\n </div>\n <Switch>\n <Match when={entries.loading && entries() === undefined}>\n <Placeholder icon=\"ti ti-loader-2\" title={messages().loadingFiles} />\n </Match>\n <Match when={entries.error}>\n <Placeholder\n icon=\"ti ti-alert-circle\"\n title={messages().failedLoadFiles}\n description={String(entries.error?.message ?? entries.error ?? \"\")}\n />\n </Match>\n <Match when={allEntries().length > 0}>\n <FileTree\n class=\"k2b-content-file-browser__tree\"\n entries={allEntries()}\n selectedPath={selectedPath()}\n onSelect={(entry) => void selectPath(entry.path)}\n actions={treeActions()}\n />\n </Match>\n <Match when={true}>\n <Placeholder icon=\"ti ti-folder-open\" title={messages().noFiles} description={messages().spaceEmpty} />\n </Match>\n </Switch>\n <input\n ref={uploadInputRef}\n type=\"file\"\n multiple\n class=\"k2b-content-file-browser__upload\"\n onChange={(event) => onUploadPicked(event.currentTarget)}\n />\n </div>\n\n <Switch fallback={<Placeholder icon=\"ti ti-file\" title={messages().selectFile} description={messages().pickFileFromTree} />}>\n <Match when={selectedEntry()?.kind === \"folder\"}>\n <Placeholder icon=\"ti ti-folder\" title={messages().folderSelected} description={messages().chooseFileToPreview} />\n </Match>\n <Match when={selectedEntry()}>\n {(entry) => (\n <FileView\n file={{ path: entry().path, mediaType: entry().mediaType, size: entry().size }}\n load={() => props.source.read(entry().path)}\n revision={props.refreshKey}\n registerRefresh={(refresh) => {\n refreshPreview = refresh;\n return () => {\n refreshPreview = async () => undefined;\n };\n }}\n renderers={props.renderers}\n onDirtyChange={setSelectedDirty}\n save={\n pathWritable(entry().path)\n ? async (content) => {\n await props.source.write!(entry().path, content);\n await refetch();\n }\n : undefined\n }\n downloadHref={props.source.downloadHref?.(entry().path) ?? null}\n />\n )}\n </Match>\n </Switch>\n </div>\n );\n}\n\n/** Open the file browser as a dialog. Returns when the dialog closes. */\nexport const openFileBrowser = (options: { source: FileSource; title?: string; subtitle?: string; icon?: string }): Promise<void> => {\n const messages = resolveUiMessages();\n return dialogCore.open<void>(\n (close) => (\n <PanelDialog>\n <PanelDialog.Header\n title={options.title ?? messages.files}\n subtitle={options.subtitle}\n icon={options.icon ?? \"ti ti-folder\"}\n close={() => close()}\n />\n <PanelDialog.Body>\n <FileBrowserPanel source={options.source} />\n </PanelDialog.Body>\n </PanelDialog>\n ),\n panelDialogOptions,\n );\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["createZip","downloadFileFromContent","mutation","createEffect","createMemo","createResource","createSignal","Match","onCleanup","Show","Switch","untrack","Dropdown","dialogCore","prompts","resolveUiMessages","useUiMessages","PanelDialog","panelDialogOptions","Placeholder","FileTree","FileView","parentOf","path","index","lastIndexOf","slice","FileBrowserPanel","props","messages","entries","refetch","source","list","selectedPath","setSelectedPath","initialPath","selectedDirty","setSelectedDirty","pendingFolders","setPendingFolders","uploadInputRef","uploadDir","previousRefreshKey","refreshKey","refreshPreview","undefined","registerRefresh","unregister","Promise","all","next","onSelectedPathChange","Object","is","allEntries","loaded","real","Set","map","entry","filter","has","kind","selectedEntry","find","fileMutation","create","work","onSuccess","onError","error","message","pathMutable","loading","readOnly","isReadOnly","pathWritable","Boolean","write","run","mutate","canLeaveCurrent","nextPath","current","confirmed","confirmDiscard","confirm","discardUnsavedFile","title","discardChanges","variant","selectPath","removeFile","remove","folders","candidate","startsWith","selected","renameFile","nextName","target","rename","createFile","dirPath","name","prompt","newFileName","newFile","trim","includes","createFolder","newFolderName","newFolder","pickUpload","click","onUploadPicked","input","files","Array","from","value","length","upload","baseName","filesBehind","some","prefix","moveEntry","targetDir","destBase","file","contentBytes","content","read","encoding","TextEncoder","encode","Uint8Array","atob","char","charCodeAt","downloadEntry","isFolder","href","downloadHref","anchor","document","createElement","download","mediaType","Error","folderEmpty","zipEntries","filename","downloadFailed","treeActions","dir","move","addMenuItems","icon","label","action","uploadFiles","_el$","_$getNextElement","_tmpl$3","_el$2","firstChild","_el$3","_el$4","_el$7","nextSibling","_el$8","_co$","_$getNextMarker","_el$0","_el$1","_co$2","_el$9","_el$10","_el$11","_co$3","_$insert","_$createComponent","when","children","Root","position","items","addFileFolderUpload","Trigger","appearance","add","_tmpl$","_el$6","_tmpl$2","_$memo","loadingFiles","failedLoadFiles","description","String","onSelect","actions","noFiles","spaceEmpty","addEventListener","event","currentTarget","_ref$","_$use","fallback","selectFile","pickFileFromTree","folderSelected","chooseFileToPreview","previewPreferencesKey","size","load","revision","refresh","renderers","onDirtyChange","save","_$effect","_p$","_v$","class","_v$2","e","_$className","t","_$setAttribute","openFileBrowser","options","open","close","Header","subtitle","Body"],"sources":["content/FileBrowser.tsx"],"sourcesContent":["/**\n * FileBrowser — FileTree + FileView over a FileSource adapter. One dialog\n * serves every file surface (conversation VFS, skills, later the Files app):\n * the source decides the capabilities, optional methods enable the matching\n * UI (write → edit/save, remove → delete, rename → rename, upload → upload).\n * Fixed-height IDE-style layout: both panes scroll, the shell never jumps.\n */\nimport { createZip, downloadFileFromContent } from \"@k2b/stdlib/browser\";\nimport { mutation } from \"@k2b/stdlib/solid\";\nimport { createEffect, createMemo, createResource, createSignal, Match, onCleanup, Show, Switch, untrack } from \"solid-js\";\nimport Dropdown from \"../actions/Dropdown\";\nimport { dialogCore } from \"../feedback/dialog-core\";\nimport { prompts } from \"../feedback/prompts\";\nimport { resolveUiMessages, useUiMessages } from \"../intl/messages\";\nimport PanelDialog, { panelDialogOptions } from \"../layout/PanelDialog\";\nimport Placeholder from \"../surfaces/Placeholder\";\nimport FileTree, { type FileTreeEntry } from \"./FileTree\";\nimport FileView, { type FileViewContent, type FileViewRenderer } from \"./FileView\";\n\nexport type FileSource = {\n previewPreferencesKey?: string;\n list(): Promise<FileTreeEntry[]>;\n read(path: string): Promise<FileViewContent>;\n write?(path: string, content: string, encoding?: \"utf8\" | \"base64\"): Promise<void>;\n remove?(path: string): Promise<void>;\n rename?(from: string, to: string): Promise<void>;\n upload?(dirPath: string, files: File[]): Promise<void>;\n downloadHref?(path: string): string | null;\n /** Paths matching this predicate stay read-only even when the source can write (e.g. /input). */\n isReadOnly?(path: string): boolean;\n};\n\nexport type FileBrowserPanelProps = {\n source: FileSource;\n /** Hide every mutating affordance while retaining file selection and downloads. */\n readOnly?: boolean;\n /** Refetch entries when this host-controlled value changes. */\n refreshKey?: unknown;\n /** Preselect a file once entries are loaded. */\n initialPath?: string;\n /** Mirrors file selection into route state when the host needs durable navigation. */\n onSelectedPathChange?: (path: string | null) => void;\n /** Per-instance preview extensions forwarded to FileView. */\n renderers?: readonly FileViewRenderer[];\n /** Optional host copy/policy for leaving an unsaved file. */\n confirmDiscard?: (path: string, nextPath: string | null) => boolean | Promise<boolean>;\n /** Fixed shell height — the panes scroll inside it. */\n class?: string;\n /** Optional imperative refresh used by realtime owners that must await the visible update. */\n registerRefresh?: (refresh: () => Promise<void>) => void | (() => void);\n};\n\nconst parentOf = (path: string): string => {\n const index = path.lastIndexOf(\"/\");\n return index <= 0 ? \"/\" : path.slice(0, index);\n};\n\nexport function FileBrowserPanel(props: FileBrowserPanelProps) {\n const messages = useUiMessages();\n // FileSource is an imperative adapter. Its methods may read host signals,\n // but refreshes stay owned by this component (`refetch` / `refreshKey`);\n // tracking those implementation details can otherwise feed a write back\n // into its own list request indefinitely.\n const [entries, { refetch }] = createResource(async () => untrack(() => props.source.list()));\n const [selectedPath, setSelectedPath] = createSignal<string | null>(props.initialPath ?? null);\n const [selectedDirty, setSelectedDirty] = createSignal(false);\n // Folders exist implicitly through file paths — freshly created (still empty)\n // ones live here until their first file makes them real.\n const [pendingFolders, setPendingFolders] = createSignal<string[]>([]);\n let uploadInputRef: HTMLInputElement | undefined;\n let uploadDir = \"/\";\n let previousRefreshKey = props.refreshKey;\n let refreshPreview = async (): Promise<void> => undefined;\n\n createEffect(() => {\n if (!props.registerRefresh) return;\n const unregister = props.registerRefresh(async () => {\n await Promise.all([refetch(), refreshPreview()]);\n });\n if (unregister) onCleanup(unregister);\n });\n\n createEffect(() => {\n const next = props.initialPath ?? null;\n if (!selectedDirty() && next !== selectedPath()) setSelectedPath(next);\n });\n createEffect(() => props.onSelectedPathChange?.(selectedPath()));\n createEffect(() => {\n const refreshKey = props.refreshKey;\n if (Object.is(refreshKey, previousRefreshKey)) return;\n previousRefreshKey = refreshKey;\n void refetch();\n });\n\n const allEntries = createMemo<FileTreeEntry[]>(() => {\n const loaded = entries() ?? [];\n const real = new Set(loaded.map((entry) => entry.path));\n return [\n ...loaded,\n ...pendingFolders()\n .filter((path) => !real.has(path))\n .map((path) => ({ path, kind: \"folder\" as const })),\n ];\n });\n const selectedEntry = createMemo(() => allEntries().find((entry) => entry.path === selectedPath()) ?? null);\n const fileMutation = mutation.create<void, () => Promise<void>>({\n mutation: (work) => work(),\n onSuccess: () => void refetch(),\n onError: (error) => void prompts.error(error.message),\n });\n const pathMutable = (path: string) => !fileMutation.loading() && !props.readOnly && !props.source.isReadOnly?.(path);\n const pathWritable = (path: string) => pathMutable(path) && Boolean(props.source.write);\n const run = (work: () => Promise<void>) => void fileMutation.mutate(work);\n const canLeaveCurrent = async (nextPath: string | null): Promise<boolean> => {\n const current = selectedPath();\n if (nextPath === current || !selectedDirty() || !current) return true;\n if (selectedDirty() && current) {\n const confirmed = props.confirmDiscard\n ? await props.confirmDiscard(current, nextPath)\n : await prompts.confirm(messages().discardUnsavedFile, {\n title: messages().discardChanges,\n variant: \"danger\",\n });\n if (!confirmed) return false;\n }\n return true;\n };\n const selectPath = async (nextPath: string | null) => {\n if (!(await canLeaveCurrent(nextPath))) return;\n setSelectedDirty(false);\n setSelectedPath(nextPath);\n };\n\n const removeFile = (path: string) =>\n run(async () => {\n const confirmed = await prompts.confirm(`Delete ${path}?`, { title: \"Delete file\", variant: \"danger\" });\n if (!confirmed) return;\n await props.source.remove!(path);\n setPendingFolders((folders) => folders.filter((candidate) => candidate !== path && !candidate.startsWith(`${path}/`)));\n const selected = selectedPath();\n if (selected === path || selected?.startsWith(`${path}/`)) setSelectedPath(null);\n });\n\n const renameFile = (path: string, nextName: string) =>\n run(async () => {\n const target = `${parentOf(path) === \"/\" ? \"\" : parentOf(path)}/${nextName}`;\n await props.source.rename!(path, target);\n if (selectedPath() === path) setSelectedPath(target);\n });\n\n const createFile = (dirPath: string) =>\n run(async () => {\n const name = await prompts.prompt(messages().newFileName, \"\", { title: messages().newFile });\n if (!name || typeof name !== \"string\" || !name.trim() || name.includes(\"/\")) return;\n const path = `${dirPath === \"/\" ? \"\" : dirPath}/${name.trim()}`;\n if (!(await canLeaveCurrent(path))) return;\n await props.source.write!(path, \"\");\n setSelectedDirty(false);\n setSelectedPath(path);\n });\n\n const createFolder = (dirPath: string) =>\n void (async () => {\n const name = await prompts.prompt(messages().newFolderName, \"\", { title: messages().newFolder });\n if (!name || typeof name !== \"string\" || !name.trim() || name.includes(\"/\")) return;\n const path = `${dirPath === \"/\" ? \"\" : dirPath}/${name.trim()}`;\n setPendingFolders((folders) => [...folders, path]);\n })();\n\n const pickUpload = (dirPath: string) => {\n uploadDir = dirPath;\n uploadInputRef?.click();\n };\n\n const onUploadPicked = (input: HTMLInputElement) => {\n const files = Array.from(input.files ?? []);\n input.value = \"\";\n if (files.length > 0) run(() => props.source.upload!(uploadDir, files));\n };\n\n const baseName = (path: string) => path.slice(path.lastIndexOf(\"/\") + 1);\n\n /** Concrete file paths behind an entry: the file itself, or everything under a folder. */\n const filesBehind = (path: string): string[] => {\n const list = entries() ?? [];\n if (list.some((entry) => entry.path === path && entry.kind !== \"folder\")) return [path];\n const prefix = `${path}/`;\n return list.filter((entry) => entry.path.startsWith(prefix) && entry.kind !== \"folder\").map((entry) => entry.path);\n };\n\n /** Move a file OR a whole folder subtree (per-file renames preserve the structure). */\n const moveEntry = (path: string, targetDir: string) =>\n run(async () => {\n const destBase = `${targetDir === \"/\" ? \"\" : targetDir}/${baseName(path)}`;\n const files = filesBehind(path);\n if (files.length === 0) {\n // Still-empty pending folder — relocating it is a purely local affair.\n setPendingFolders((folders) => folders.map((candidate) => (candidate === path ? destBase : candidate)));\n return;\n }\n for (const file of files) {\n await props.source.rename!(file, `${destBase}${file.slice(path.length)}`);\n }\n const selected = selectedPath();\n if (selected && (selected === path || selected.startsWith(`${path}/`))) {\n setSelectedPath(`${destBase}${selected.slice(path.length)}`);\n }\n });\n\n const contentBytes = async (path: string): Promise<Uint8Array> => {\n const content = await props.source.read(path);\n return content.encoding === \"utf8\"\n ? new TextEncoder().encode(content.content)\n : Uint8Array.from(atob(content.content), (char) => char.charCodeAt(0));\n };\n\n const downloadEntry = (path: string, isFolder: boolean) =>\n void (async () => {\n try {\n if (!isFolder) {\n const href = props.source.downloadHref?.(path);\n if (href) {\n const anchor = document.createElement(\"a\");\n anchor.href = href;\n anchor.download = baseName(path);\n anchor.click();\n return;\n }\n const content = await props.source.read(path);\n downloadFileFromContent(await contentBytes(path), baseName(path), content.mediaType || \"application/octet-stream\");\n return;\n }\n const files = filesBehind(path);\n if (files.length === 0) throw new Error(messages().folderEmpty);\n const zipEntries = await Promise.all(\n files.map(async (file) => ({ filename: file.slice(path.length + 1), source: await contentBytes(file) })),\n );\n downloadFileFromContent(await createZip(zipEntries), `${baseName(path) || \"files\"}.zip`, \"application/zip\");\n } catch (error) {\n void prompts.error(error instanceof Error ? error.message : messages().downloadFailed);\n }\n })();\n\n const treeActions = () => ({\n ...(!props.readOnly && props.source.rename\n ? { rename: (path: string, next: string) => (pathMutable(path) ? renameFile(path, next) : undefined) }\n : {}),\n ...(!props.readOnly && props.source.remove ? { remove: (path: string) => (pathMutable(path) ? removeFile(path) : undefined) } : {}),\n ...(!props.readOnly && props.source.write ? { createFile: (dir: string) => (pathWritable(dir) ? createFile(dir) : undefined) } : {}),\n ...(!props.readOnly && props.source.write\n ? { createFolder: (dir: string) => (pathWritable(dir) ? createFolder(dir) : undefined) }\n : {}),\n ...(!props.readOnly && props.source.rename\n ? { move: (path: string, dir: string) => (pathMutable(path) && pathMutable(dir) ? moveEntry(path, dir) : undefined) }\n : {}),\n download: (path: string, isFolder: boolean) => downloadEntry(path, isFolder),\n });\n\n const addMenuItems = () => [\n ...(pathWritable(\"/\") ? [{ icon: \"ti ti-file-plus\", label: messages().newFile, action: () => createFile(\"/\") }] : []),\n ...(pathWritable(\"/\") ? [{ icon: \"ti ti-folder-plus\", label: messages().newFolder, action: () => createFolder(\"/\") }] : []),\n ...(pathMutable(\"/\") && props.source.upload\n ? [{ icon: \"ti ti-upload\", label: messages().uploadFiles, action: () => pickUpload(\"/\") }]\n : []),\n ];\n\n return (\n <div class={`k2b-content-file-browser ${props.class ?? \"\"}`} data-default-height={props.class ? undefined : \"true\"}>\n <div class=\"k2b-content-file-browser__sidebar\">\n <div class=\"k2b-content-file-browser__header\">\n <p class=\"k2b-content-file-browser__title\">{messages().files}</p>\n <Show when={addMenuItems().length > 0}>\n <Dropdown.Root position=\"bottom-left\" items={addMenuItems()} label={messages().addFileFolderUpload}>\n <Dropdown.Trigger\n appearance=\"plain\"\n class=\"k2b-content-file-browser__add\"\n label={messages().addFileFolderUpload}\n title={messages().add}\n >\n <i class=\"ti ti-plus\" aria-hidden=\"true\" />\n <span class=\"k2b-sr-only\">{messages().addFileFolderUpload}</span>\n </Dropdown.Trigger>\n </Dropdown.Root>\n </Show>\n </div>\n <Switch>\n <Match when={entries.loading && entries() === undefined}>\n <Placeholder icon=\"ti ti-loader-2\" title={messages().loadingFiles} />\n </Match>\n <Match when={entries.error}>\n <Placeholder\n icon=\"ti ti-alert-circle\"\n title={messages().failedLoadFiles}\n description={String(entries.error?.message ?? entries.error ?? \"\")}\n />\n </Match>\n <Match when={allEntries().length > 0}>\n <FileTree\n class=\"k2b-content-file-browser__tree\"\n entries={allEntries()}\n selectedPath={selectedPath()}\n onSelect={(entry) => void selectPath(entry.path)}\n actions={treeActions()}\n />\n </Match>\n <Match when={true}>\n <Placeholder icon=\"ti ti-folder-open\" title={messages().noFiles} description={messages().spaceEmpty} />\n </Match>\n </Switch>\n <input\n ref={uploadInputRef}\n type=\"file\"\n multiple\n class=\"k2b-content-file-browser__upload\"\n onChange={(event) => onUploadPicked(event.currentTarget)}\n />\n </div>\n\n <Switch fallback={<Placeholder icon=\"ti ti-file\" title={messages().selectFile} description={messages().pickFileFromTree} />}>\n <Match when={selectedEntry()?.kind === \"folder\"}>\n <Placeholder icon=\"ti ti-folder\" title={messages().folderSelected} description={messages().chooseFileToPreview} />\n </Match>\n <Match when={selectedEntry()}>\n {(entry) => (\n <FileView\n previewPreferencesKey={props.source.previewPreferencesKey}\n file={{ path: entry().path, mediaType: entry().mediaType, size: entry().size }}\n load={() => props.source.read(entry().path)}\n revision={props.refreshKey}\n registerRefresh={(refresh) => {\n refreshPreview = refresh;\n return () => {\n refreshPreview = async () => undefined;\n };\n }}\n renderers={props.renderers}\n onDirtyChange={setSelectedDirty}\n save={\n pathWritable(entry().path)\n ? async (content) => {\n await props.source.write!(entry().path, content);\n await refetch();\n }\n : undefined\n }\n downloadHref={props.source.downloadHref?.(entry().path) ?? null}\n />\n )}\n </Match>\n </Switch>\n </div>\n );\n}\n\n/** Open the file browser as a dialog. Returns when the dialog closes. */\nexport const openFileBrowser = (options: { source: FileSource; title?: string; subtitle?: string; icon?: string }): Promise<void> => {\n const messages = resolveUiMessages();\n return dialogCore.open<void>(\n (close) => (\n <PanelDialog>\n <PanelDialog.Header\n title={options.title ?? messages.files}\n subtitle={options.subtitle}\n icon={options.icon ?? \"ti ti-folder\"}\n close={() => close()}\n />\n <PanelDialog.Body>\n <FileBrowserPanel source={options.source} />\n </PanelDialog.Body>\n </PanelDialog>\n ),\n panelDialogOptions,\n );\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { template as _$template } from "solid-js/web";
|
|
2
|
+
import { runHydrationEvents as _$runHydrationEvents } from "solid-js/web";
|
|
3
|
+
import { spread as _$spread } from "solid-js/web";
|
|
4
|
+
import { mergeProps as _$mergeProps } from "solid-js/web";
|
|
5
|
+
import { memo as _$memo } from "solid-js/web";
|
|
6
|
+
import { setAttribute as _$setAttribute } from "solid-js/web";
|
|
7
|
+
import { className as _$className } from "solid-js/web";
|
|
8
|
+
import { effect as _$effect } from "solid-js/web";
|
|
9
|
+
import { getNextElement as _$getNextElement } from "solid-js/web";
|
|
10
|
+
import { insert as _$insert } from "solid-js/web";
|
|
11
|
+
import { createComponent as _$createComponent } from "solid-js/web";
|
|
12
|
+
import { use as _$use } from "solid-js/web";
|
|
13
|
+
var _tmpl$ = /*#__PURE__*/_$template(`<div role=grid aria-multiselectable=true>`),
|
|
14
|
+
_tmpl$2 = /*#__PURE__*/_$template(`<div role=row class=k2b-file-grid__row><div><div class=k2b-file-grid__preview></div><div class=k2b-file-grid__name></div><div class=k2b-file-grid__meta></div><div class=k2b-file-grid__actions>`);
|
|
15
|
+
import { For } from "solid-js";
|
|
16
|
+
/** File presentation only; the host owns data, menus, leases and permissions. */
|
|
17
|
+
export function FileGrid(props) {
|
|
18
|
+
let grid;
|
|
19
|
+
const columns = () => grid ? Math.max(1, getComputedStyle(grid).gridTemplateColumns.split(" ").length) : 1;
|
|
20
|
+
const nested = event => event.target instanceof Element && !!event.target.closest("button,a,input,label,select,textarea,summary,[contenteditable],[role=button],[role=menu]");
|
|
21
|
+
return (() => {
|
|
22
|
+
var _el$ = _$getNextElement(_tmpl$);
|
|
23
|
+
var _ref$ = grid;
|
|
24
|
+
typeof _ref$ === "function" ? _$use(_ref$, _el$) : grid = _el$;
|
|
25
|
+
_$insert(_el$, _$createComponent(For, {
|
|
26
|
+
get each() {
|
|
27
|
+
return props.rows;
|
|
28
|
+
},
|
|
29
|
+
children: row => {
|
|
30
|
+
const id = () => props.getRowId(row);
|
|
31
|
+
return (() => {
|
|
32
|
+
var _el$2 = _$getNextElement(_tmpl$2),
|
|
33
|
+
_el$3 = _el$2.firstChild,
|
|
34
|
+
_el$4 = _el$3.firstChild,
|
|
35
|
+
_el$5 = _el$4.nextSibling,
|
|
36
|
+
_el$6 = _el$5.nextSibling,
|
|
37
|
+
_el$7 = _el$6.nextSibling;
|
|
38
|
+
_$use(element => props.selection.register(id(), element), _el$3);
|
|
39
|
+
_$spread(_el$3, _$mergeProps(() => props.itemProps?.(row), {
|
|
40
|
+
"role": "gridcell",
|
|
41
|
+
"class": "k2b-file-grid__item",
|
|
42
|
+
get ["aria-selected"]() {
|
|
43
|
+
return props.selection.selected().has(id());
|
|
44
|
+
},
|
|
45
|
+
get tabIndex() {
|
|
46
|
+
return props.selection.focused() === id() ? 0 : -1;
|
|
47
|
+
},
|
|
48
|
+
"onFocus": () => props.selection.markFocused(id()),
|
|
49
|
+
"onClick": event => {
|
|
50
|
+
if (!nested(event)) {
|
|
51
|
+
props.selection.select(id(), event);
|
|
52
|
+
props.onRowClick?.(row);
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
"onDblClick": event => {
|
|
56
|
+
if (!nested(event)) props.onOpen(row);
|
|
57
|
+
},
|
|
58
|
+
"onContextMenu": () => props.onContextMenu?.(row),
|
|
59
|
+
"onKeyDown": event => {
|
|
60
|
+
if (nested(event)) return;
|
|
61
|
+
if (props.selection.keyDown(event, id(), columns())) return;
|
|
62
|
+
if (event.key === "Enter") {
|
|
63
|
+
event.preventDefault();
|
|
64
|
+
props.onOpen(row);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}), false, true);
|
|
68
|
+
_$insert(_el$4, () => props.renderPreview(row));
|
|
69
|
+
_$insert(_el$5, () => props.renderLabel(row));
|
|
70
|
+
_$insert(_el$6, () => props.renderMeta?.(row));
|
|
71
|
+
_$insert(_el$7, () => props.renderActions?.(row));
|
|
72
|
+
_$runHydrationEvents();
|
|
73
|
+
return _el$2;
|
|
74
|
+
})();
|
|
75
|
+
}
|
|
76
|
+
}));
|
|
77
|
+
_$effect(_p$ => {
|
|
78
|
+
var _v$ = `k2b-file-grid ${props.class ?? ""}`,
|
|
79
|
+
_v$2 = props.size ?? "md",
|
|
80
|
+
_v$3 = props.label;
|
|
81
|
+
_v$ !== _p$.e && _$className(_el$, _p$.e = _v$);
|
|
82
|
+
_v$2 !== _p$.t && _$setAttribute(_el$, "data-size", _p$.t = _v$2);
|
|
83
|
+
_v$3 !== _p$.a && _$setAttribute(_el$, "aria-label", _p$.a = _v$3);
|
|
84
|
+
return _p$;
|
|
85
|
+
}, {
|
|
86
|
+
e: undefined,
|
|
87
|
+
t: undefined,
|
|
88
|
+
a: undefined
|
|
89
|
+
});
|
|
90
|
+
return _el$;
|
|
91
|
+
})();
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=FileGrid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["For","FileGrid","props","grid","columns","Math","max","getComputedStyle","gridTemplateColumns","split","length","nested","event","target","Element","closest","_el$","_$getNextElement","_tmpl$","_ref$","_$use","_$insert","_$createComponent","each","rows","children","row","id","getRowId","_el$2","_tmpl$2","_el$3","firstChild","_el$4","_el$5","nextSibling","_el$6","_el$7","element","selection","register","_$spread","_$mergeProps","itemProps","aria-selected","selected","has","tabIndex","focused","onFocus","markFocused","select","onRowClick","onOpen","onContextMenu","keyDown","key","preventDefault","renderPreview","renderLabel","renderMeta","renderActions","_$runHydrationEvents","_$effect","_p$","_v$","class","_v$2","size","_v$3","label","e","_$className","t","_$setAttribute","a","undefined"],"sources":["content/FileGrid.tsx"],"sourcesContent":["import { For, type JSX } from \"solid-js\";\nimport type { CollectionSelection } from \"./collection-selection\";\n\nexport type FileGridProps<T> = {\n rows: readonly T[];\n getRowId: (row: T) => string;\n selection: CollectionSelection;\n label: string;\n size?: \"sm\" | \"md\" | \"lg\";\n renderPreview: (row: T) => JSX.Element;\n renderLabel: (row: T) => JSX.Element;\n renderMeta?: (row: T) => JSX.Element;\n renderActions?: (row: T) => JSX.Element;\n onRowClick?: (row: T) => void;\n onOpen: (row: T) => void;\n onContextMenu?: (row: T) => void;\n /** Extra attributes for one tile, for example drag-and-drop handlers or data attributes the host styles. */\n itemProps?: (row: T) => JSX.HTMLAttributes<HTMLDivElement>;\n class?: string;\n};\n\n/** File presentation only; the host owns data, menus, leases and permissions. */\nexport function FileGrid<T>(props: FileGridProps<T>) {\n let grid: HTMLDivElement | undefined;\n const columns = () => (grid ? Math.max(1, getComputedStyle(grid).gridTemplateColumns.split(\" \").length) : 1);\n const nested = (event: Event) =>\n event.target instanceof Element &&\n !!event.target.closest(\"button,a,input,label,select,textarea,summary,[contenteditable],[role=button],[role=menu]\");\n return (\n <div\n ref={grid}\n class={`k2b-file-grid ${props.class ?? \"\"}`}\n data-size={props.size ?? \"md\"}\n role=\"grid\"\n aria-label={props.label}\n aria-multiselectable=\"true\"\n >\n <For each={props.rows}>\n {(row) => {\n const id = () => props.getRowId(row);\n return (\n <div role=\"row\" class=\"k2b-file-grid__row\">\n <div\n {...props.itemProps?.(row)}\n role=\"gridcell\"\n class=\"k2b-file-grid__item\"\n aria-selected={props.selection.selected().has(id())}\n ref={(element) => props.selection.register(id(), element)}\n tabIndex={props.selection.focused() === id() ? 0 : -1}\n onFocus={() => props.selection.markFocused(id())}\n onClick={(event) => {\n if (!nested(event)) {\n props.selection.select(id(), event);\n props.onRowClick?.(row);\n }\n }}\n onDblClick={(event) => {\n if (!nested(event)) props.onOpen(row);\n }}\n onContextMenu={() => props.onContextMenu?.(row)}\n onKeyDown={(event) => {\n if (nested(event)) return;\n if (props.selection.keyDown(event, id(), columns())) return;\n if (event.key === \"Enter\") {\n event.preventDefault();\n props.onOpen(row);\n }\n }}\n >\n <div class=\"k2b-file-grid__preview\">{props.renderPreview(row)}</div>\n <div class=\"k2b-file-grid__name\">{props.renderLabel(row)}</div>\n <div class=\"k2b-file-grid__meta\">{props.renderMeta?.(row)}</div>\n <div class=\"k2b-file-grid__actions\">{props.renderActions?.(row)}</div>\n </div>\n </div>\n );\n }}\n </For>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;AAAA,SAASA,GAAG,QAAkB,UAAU;AAqBxC;AACA,OAAO,SAASC,QAAQA,CAAIC,KAAuB,EAAE;EACnD,IAAIC,IAAgC;EACpC,MAAMC,OAAO,GAAGA,CAAA,KAAOD,IAAI,GAAGE,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEC,gBAAgB,CAACJ,IAAI,CAAC,CAACK,mBAAmB,CAACC,KAAK,CAAC,GAAG,CAAC,CAACC,MAAM,CAAC,GAAG,CAAE;EAC5G,MAAMC,MAAM,GAAIC,KAAY,IAC1BA,KAAK,CAACC,MAAM,YAAYC,OAAO,IAC/B,CAAC,CAACF,KAAK,CAACC,MAAM,CAACE,OAAO,CAAC,0FAA0F,CAAC;EACpH;IAAA,IAAAC,IAAA,GAAAC,gBAAA,CAAAC,MAAA;IAAA,IAAAC,KAAA,GAEShB,IAAI;IAAA,OAAAgB,KAAA,kBAAAC,KAAA,CAAAD,KAAA,EAAAH,IAAA,IAAJb,IAAI,GAAAa,IAAA;IAAAK,QAAA,CAAAL,IAAA,EAAAM,iBAAA,CAORtB,GAAG;MAAA,IAACuB,IAAIA,CAAA;QAAA,OAAErB,KAAK,CAACsB,IAAI;MAAA;MAAAC,QAAA,EACjBC,GAAG,IAAK;QACR,MAAMC,EAAE,GAAGA,CAAA,KAAMzB,KAAK,CAAC0B,QAAQ,CAACF,GAAG,CAAC;QACpC;UAAA,IAAAG,KAAA,GAAAZ,gBAAA,CAAAa,OAAA;YAAAC,KAAA,GAAAF,KAAA,CAAAG,UAAA;YAAAC,KAAA,GAAAF,KAAA,CAAAC,UAAA;YAAAE,KAAA,GAAAD,KAAA,CAAAE,WAAA;YAAAC,KAAA,GAAAF,KAAA,CAAAC,WAAA;YAAAE,KAAA,GAAAD,KAAA,CAAAD,WAAA;UAAAf,KAAA,CAOYkB,OAAO,IAAKpC,KAAK,CAACqC,SAAS,CAACC,QAAQ,CAACb,EAAE,CAAC,CAAC,EAAEW,OAAO,CAAC,EAAAP,KAAA;UAAAU,QAAA,CAAAV,KAAA,EAAAW,YAAA,OAJrDxC,KAAK,CAACyC,SAAS,GAAGjB,GAAG,CAAC;YAAA,QACrB,UAAU;YAAA,SACT,qBAAqB;YAAA,qBAAAkB,CAAA;cAAA,OACZ1C,KAAK,CAACqC,SAAS,CAACM,QAAQ,CAAC,CAAC,CAACC,GAAG,CAACnB,EAAE,CAAC,CAAC,CAAC;YAAA;YAAA,IAEnDoB,QAAQA,CAAA;cAAA,OAAE7C,KAAK,CAACqC,SAAS,CAACS,OAAO,CAAC,CAAC,KAAKrB,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAAA;YAAA,WAC5CsB,CAAA,KAAM/C,KAAK,CAACqC,SAAS,CAACW,WAAW,CAACvB,EAAE,CAAC,CAAC,CAAC;YAAA,WACtCf,KAAK,IAAK;cAClB,IAAI,CAACD,MAAM,CAACC,KAAK,CAAC,EAAE;gBAClBV,KAAK,CAACqC,SAAS,CAACY,MAAM,CAACxB,EAAE,CAAC,CAAC,EAAEf,KAAK,CAAC;gBACnCV,KAAK,CAACkD,UAAU,GAAG1B,GAAG,CAAC;cACzB;YACF,CAAC;YAAA,cACYd,KAAK,IAAK;cACrB,IAAI,CAACD,MAAM,CAACC,KAAK,CAAC,EAAEV,KAAK,CAACmD,MAAM,CAAC3B,GAAG,CAAC;YACvC,CAAC;YAAA,iBACc4B,CAAA,KAAMpD,KAAK,CAACoD,aAAa,GAAG5B,GAAG,CAAC;YAAA,aACnCd,KAAK,IAAK;cACpB,IAAID,MAAM,CAACC,KAAK,CAAC,EAAE;cACnB,IAAIV,KAAK,CAACqC,SAAS,CAACgB,OAAO,CAAC3C,KAAK,EAAEe,EAAE,CAAC,CAAC,EAAEvB,OAAO,CAAC,CAAC,CAAC,EAAE;cACrD,IAAIQ,KAAK,CAAC4C,GAAG,KAAK,OAAO,EAAE;gBACzB5C,KAAK,CAAC6C,cAAc,CAAC,CAAC;gBACtBvD,KAAK,CAACmD,MAAM,CAAC3B,GAAG,CAAC;cACnB;YACF;UAAC;UAAAL,QAAA,CAAAY,KAAA,QAEoC/B,KAAK,CAACwD,aAAa,CAAChC,GAAG,CAAC;UAAAL,QAAA,CAAAa,KAAA,QAC3BhC,KAAK,CAACyD,WAAW,CAACjC,GAAG,CAAC;UAAAL,QAAA,CAAAe,KAAA,QACtBlC,KAAK,CAAC0D,UAAU,GAAGlC,GAAG,CAAC;UAAAL,QAAA,CAAAgB,KAAA,QACpBnC,KAAK,CAAC2D,aAAa,GAAGnC,GAAG,CAAC;UAAAoC,oBAAA;UAAA,OAAAjC,KAAA;QAAA;MAIvE;IAAC;IAAAkC,QAAA,CAAAC,GAAA;MAAA,IAAAC,GAAA,GA7CI,iBAAiB/D,KAAK,CAACgE,KAAK,IAAI,EAAE,EAAE;QAAAC,IAAA,GAChCjE,KAAK,CAACkE,IAAI,IAAI,IAAI;QAAAC,IAAA,GAEjBnE,KAAK,CAACoE,KAAK;MAAAL,GAAA,KAAAD,GAAA,CAAAO,CAAA,IAAAC,WAAA,CAAAxD,IAAA,EAAAgD,GAAA,CAAAO,CAAA,GAAAN,GAAA;MAAAE,IAAA,KAAAH,GAAA,CAAAS,CAAA,IAAAC,cAAA,CAAA1D,IAAA,eAAAgD,GAAA,CAAAS,CAAA,GAAAN,IAAA;MAAAE,IAAA,KAAAL,GAAA,CAAAW,CAAA,IAAAD,cAAA,CAAA1D,IAAA,gBAAAgD,GAAA,CAAAW,CAAA,GAAAN,IAAA;MAAA,OAAAL,GAAA;IAAA;MAAAO,CAAA,EAAAK,SAAA;MAAAH,CAAA,EAAAG,SAAA;MAAAD,CAAA,EAAAC;IAAA;IAAA,OAAA5D,IAAA;EAAA;AA8C7B","ignoreList":[]}
|
|
@@ -301,7 +301,7 @@ export default function FileTree(props) {
|
|
|
301
301
|
setDropTarget(node.entry.path);
|
|
302
302
|
});
|
|
303
303
|
_el$5.addEventListener("dragstart", event => event.dataTransfer?.setData(DRAG_MIME, node.entry.path));
|
|
304
|
-
_$insert(_el$7, () => currentNode().name);
|
|
304
|
+
_$insert(_el$7, () => currentNode().entry.displayName ?? currentNode().name);
|
|
305
305
|
_$insert(_el$5, _$createComponent(Show, {
|
|
306
306
|
get when() {
|
|
307
307
|
return currentNode().entry.badge;
|
|
@@ -404,7 +404,7 @@ export default function FileTree(props) {
|
|
|
404
404
|
}));
|
|
405
405
|
_$effect(_p$ => {
|
|
406
406
|
var _v$6 = renamingPath() === node.entry.path ? -1 : focusedPath() === node.entry.path ? 0 : -1,
|
|
407
|
-
_v$7 = currentNode().name,
|
|
407
|
+
_v$7 = currentNode().entry.displayName ?? currentNode().name,
|
|
408
408
|
_v$8 = currentNode().depth + 1,
|
|
409
409
|
_v$9 = isSelected(),
|
|
410
410
|
_v$0 = currentNode().isFolder ? expanded().has(currentNode().entry.path) : undefined,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["fileIcons","createEffect","createMemo","createSignal","For","Show","ContextMenu","Dropdown","useUiMessages","allFolderPaths","buildTree","flattenVisible","parentOf","glyphOnly","icon","split","filter","token","startsWith","join","FileTree","props","messages","previousTree","tree","entries","internalExpanded","setInternalExpanded","Set","equals","previous","current","added","path","has","length","expandedPaths","expanded","setExpanded","next","onExpandedChange","toggleFolder","delete","add","visible","renamingPath","setRenamingPath","renameDraft","setRenameDraft","focusedPath","setFocusedPath","selectedPath","pendingFocusPath","setPendingFocusPath","contextPath","setContextPath","contextMenuOpen","setContextMenuOpen","rowRefs","Map","dropTarget","setDropTarget","focusRow","restoreDomFocus","row","get","isConnected","focus","queueMicrotask","rows","paths","map","node","entry","keys","pending","some","selected","find","DRAG_MIME","canDrop","event","actions","move","dataTransfer","types","includes","handleDrop","targetDir","preventDefault","stopPropagation","getData","select","isFolder","onSelect","commitRename","value","nextName","trim","name","parent","rename","cancelRename","beginRename","menuItems","items","contextMenu","createFile","push","label","newFile","action","createFolder","newFolder","download","downloadAsZip","remove","variant","contextNode","contextItems","onKeyDown","target","Element","index","findIndex","key","shiftKey","Math","min","max","depth","undefined","_$createComponent","tabIndex","_$memo","actionsFor","fileActions","disabled","onOpen","onClose","children","_el$","_$getNextElement","_tmpl$","addEventListener","currentTarget","_$insert","each","currentNode","isSelected","isDropTarget","getFileIcon","type","mimeType","mediaType","hasItems","_el$2","_tmpl$3","$$contextmenu","$$keydown","_$use","element","set","when","fallback","_el$4","_tmpl$7","_el$5","firstChild","_el$6","_el$7","nextSibling","_el$9","_el$0","_co$","_$getNextMarker","_el$14","_el$15","_co$3","$$click","closest","setData","badge","_el$8","_tmpl$4","Root","position","Trigger","appearance","title","_tmpl$5","_el$10","_tmpl$6","_el$11","_el$12","_el$13","_co$2","_$effect","_p$","_v$11","_v$12","_v$13","_v$14","Boolean","_v$15","e","_$setAttribute","t","_$setStyleProperty","a","o","i","_$className","_$runHydrationEvents","_el$3","_tmpl$2","$$input","requestAnimationFrame","_v$4","_v$5","_$setProperty","_v$6","_v$7","_v$8","_v$9","_v$0","_v$1","_v$10","n","s","_v$","class","_v$2","_v$3","files","_$delegateEvents"],"sources":["content/FileTree.tsx"],"sourcesContent":["/**\n * FileTree — path-first tree over a flat entry list (folders derived from\n * paths, explicit folder entries allowed for empty dirs). Capabilities are\n * enabled by the presence of action callbacks; without them the tree is a\n * pure read-only browser. Context menus render through the platform\n * ContextMenu. Minimal look: text rows, bevel on selection, no hover motion.\n */\nimport { fileIcons } from \"@k2b/stdlib\";\nimport { createEffect, createMemo, createSignal, For, Show } from \"solid-js\";\nimport ContextMenu from \"../actions/ContextMenu\";\nimport Dropdown, { type DropdownItem } from \"../actions/Dropdown\";\nimport { useUiMessages } from \"../intl/messages\";\nimport { allFolderPaths, buildTree, type FileTreeEntry, flattenVisible, parentOf, type TreeNode } from \"./file-tree\";\n\nexport type { FileTreeEntry } from \"./file-tree\";\n\n/**\n * `fileIcons` (and app-supplied entry icons) may carry Tailwind colour classes.\n * @k2b/ui ships no Tailwind utilities, so only the `ti-*` glyph is kept — the\n * row owns the icon colour.\n */\nconst glyphOnly = (icon: string): string =>\n icon\n .split(/\\s+/)\n .filter((token) => token.startsWith(\"ti-\"))\n .join(\" \");\n\n/** Presence of a callback enables the matching UI affordance. */\nexport type FileTreeActions = {\n rename?: (path: string, nextName: string) => void | Promise<void>;\n remove?: (path: string) => void | Promise<void>;\n createFile?: (dirPath: string) => void | Promise<void>;\n createFolder?: (dirPath: string) => void | Promise<void>;\n /** Enables drag & drop of files and folders onto folders (and the tree root). */\n move?: (path: string, targetDir: string) => void | Promise<void>;\n /** Download menu entry — folders arrive as \"Download as ZIP\". */\n download?: (path: string, isFolder: boolean) => void | Promise<void>;\n};\n\nexport type FileTreeProps = {\n entries: FileTreeEntry[];\n selectedPath?: string | null;\n onSelect?: (entry: FileTreeEntry) => void;\n /** Controlled expansion; omit for internal state (folders start expanded). */\n expandedPaths?: Set<string>;\n onExpandedChange?: (expanded: Set<string>) => void;\n /** Extra context-menu items per entry, merged above the built-in actions. */\n contextMenu?: (entry: FileTreeEntry) => DropdownItem[];\n actions?: FileTreeActions;\n /** Accessible name for the tree. */\n label?: string;\n class?: string;\n};\n\nexport default function FileTree(props: FileTreeProps) {\n const messages = useUiMessages();\n let previousTree: TreeNode[] = [];\n const tree = createMemo(() => (previousTree = buildTree(props.entries, previousTree)));\n\n const [internalExpanded, setInternalExpanded] = createSignal<Set<string>>(new Set(allFolderPaths(tree())), { equals: false });\n // Newly appearing folders start expanded in uncontrolled mode.\n createEffect((previous: Set<string>) => {\n const current = new Set(allFolderPaths(tree()));\n const added = [...current].filter((path) => !previous.has(path));\n if (added.length > 0 && !props.expandedPaths) setInternalExpanded((expanded) => new Set([...expanded, ...added]));\n return current;\n }, new Set<string>());\n\n const expanded = () => props.expandedPaths ?? internalExpanded();\n const setExpanded = (next: Set<string>) => {\n if (props.onExpandedChange) props.onExpandedChange(next);\n if (!props.expandedPaths) setInternalExpanded(next);\n };\n const toggleFolder = (path: string) => {\n const next = new Set(expanded());\n if (next.has(path)) next.delete(path);\n else next.add(path);\n setExpanded(next);\n };\n\n const visible = createMemo(() => flattenVisible(tree(), expanded()));\n const [renamingPath, setRenamingPath] = createSignal<string | null>(null);\n const [renameDraft, setRenameDraft] = createSignal(\"\");\n const [focusedPath, setFocusedPath] = createSignal(props.selectedPath ?? \"\");\n const [pendingFocusPath, setPendingFocusPath] = createSignal<string | null>(null);\n const [contextPath, setContextPath] = createSignal<string | null>(props.selectedPath ?? null);\n const [contextMenuOpen, setContextMenuOpen] = createSignal(false);\n const rowRefs = new Map<string, HTMLLIElement>();\n /** Folder currently hovered by a drag (\"/\" = tree root). */\n const [dropTarget, setDropTarget] = createSignal<string | null>(null);\n\n const focusRow = (path: string, restoreDomFocus = true) => {\n setFocusedPath(path);\n if (!restoreDomFocus) return;\n const row = rowRefs.get(path);\n if (row?.isConnected) row.focus();\n else queueMicrotask(() => rowRefs.get(path)?.focus());\n };\n\n createEffect(() => {\n const rows = visible();\n const paths = new Set(rows.map((node) => node.entry.path));\n for (const path of rowRefs.keys()) if (!paths.has(path)) rowRefs.delete(path);\n const pending = pendingFocusPath();\n if (pending && rows.some((node) => node.entry.path === pending)) {\n setPendingFocusPath(null);\n focusRow(pending);\n return;\n }\n if (rows.some((node) => node.entry.path === focusedPath())) return;\n const selected = rows.find((node) => node.entry.path === props.selectedPath);\n setFocusedPath(selected?.entry.path ?? rows[0]?.entry.path ?? \"\");\n });\n\n const DRAG_MIME = \"application/x-filetree-path\";\n const canDrop = (event: DragEvent) => props.actions?.move && event.dataTransfer?.types.includes(DRAG_MIME);\n const handleDrop = (event: DragEvent, targetDir: string) => {\n event.preventDefault();\n event.stopPropagation();\n setDropTarget(null);\n const path = event.dataTransfer?.getData(DRAG_MIME);\n if (!path || parentOf(path) === targetDir || path === targetDir || targetDir.startsWith(`${path}/`)) return;\n void props.actions?.move?.(path, targetDir);\n };\n\n const select = (node: TreeNode) => {\n if (node.isFolder) toggleFolder(node.entry.path);\n else props.onSelect?.(node.entry);\n };\n\n const commitRename = async (node: TreeNode, value: string) => {\n if (renamingPath() !== node.entry.path) return;\n setRenamingPath(null);\n const nextName = value.trim();\n focusRow(node.entry.path);\n if (!nextName || nextName === node.name || nextName.includes(\"/\")) return;\n const parent = parentOf(node.entry.path);\n setPendingFocusPath(`${parent === \"/\" ? \"\" : parent}/${nextName}`);\n await props.actions?.rename?.(node.entry.path, nextName);\n };\n\n const cancelRename = (node: TreeNode) => {\n setRenamingPath(null);\n focusRow(node.entry.path);\n };\n\n const beginRename = (node: TreeNode) => {\n setRenameDraft(node.name);\n setRenamingPath(node.entry.path);\n };\n\n const menuItems = (node: TreeNode): DropdownItem[] => {\n tree();\n const items: DropdownItem[] = [...(props.contextMenu?.(node.entry) ?? [])];\n if (node.isFolder && props.actions?.createFile) {\n items.push({ icon: \"ti ti-file-plus\", label: messages().newFile, action: () => void props.actions?.createFile?.(node.entry.path) });\n }\n if (node.isFolder && props.actions?.createFolder) {\n items.push({\n icon: \"ti ti-folder-plus\",\n label: messages().newFolder,\n action: () => void props.actions?.createFolder?.(node.entry.path),\n });\n }\n if (props.actions?.download) {\n items.push({\n icon: node.isFolder ? \"ti ti-file-zip\" : \"ti ti-download\",\n label: node.isFolder ? messages().downloadAsZip : messages().download,\n action: () => void props.actions?.download?.(node.entry.path, node.isFolder),\n });\n }\n if (!node.isFolder && props.actions?.rename) {\n items.push({ icon: \"ti ti-cursor-text\", label: messages().rename, action: () => beginRename(node) });\n }\n if (props.actions?.remove) {\n items.push({\n icon: \"ti ti-trash\",\n label: messages().delete,\n variant: \"danger\",\n action: () => void props.actions?.remove?.(node.entry.path),\n });\n }\n return items;\n };\n\n const contextNode = createMemo(() => visible().find((node) => node.entry.path === contextPath()));\n const contextItems = createMemo(() => {\n const node = contextNode();\n return node ? menuItems(node) : [];\n });\n\n const onKeyDown = (event: KeyboardEvent, node: TreeNode) => {\n if (renamingPath()) return;\n const target = event.target;\n if (target instanceof Element && target !== rowRefs.get(node.entry.path)) return;\n const rows = visible();\n const index = rows.findIndex((row) => row.entry.path === node.entry.path);\n const focus = (next: TreeNode | undefined) => {\n if (!next) return;\n focusRow(next.entry.path);\n };\n if (event.key === \"ContextMenu\" || (event.shiftKey && event.key === \"F10\")) {\n setContextPath(node.entry.path);\n return;\n }\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n focus(rows[Math.min(index + 1, rows.length - 1)] ?? rows[0]);\n } else if (event.key === \"ArrowUp\") {\n event.preventDefault();\n focus(rows[Math.max(index - 1, 0)] ?? rows[0]);\n } else if (event.key === \"Home\" || event.key === \"End\") {\n event.preventDefault();\n focus(rows[event.key === \"Home\" ? 0 : rows.length - 1]);\n } else if (event.key === \"ArrowRight\" && node.isFolder) {\n event.preventDefault();\n if (!expanded().has(node.entry.path)) toggleFolder(node.entry.path);\n else focus(rows[index + 1]?.depth === node.depth + 1 ? rows[index + 1] : undefined);\n } else if (event.key === \"ArrowLeft\" && node.isFolder && expanded().has(node.entry.path)) {\n event.preventDefault();\n toggleFolder(node.entry.path);\n } else if (event.key === \"ArrowLeft\") {\n event.preventDefault();\n const parent = parentOf(node.entry.path);\n focus(rows.find((row) => row.entry.path === parent));\n } else if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n select(node);\n } else if (event.key === \"F2\" && !node.isFolder && props.actions?.rename) {\n event.preventDefault();\n beginRename(node);\n }\n };\n\n return (\n <ContextMenu\n class=\"k2b-content-file-tree__context-host\"\n tabIndex={-1}\n label={contextNode() ? messages().actionsFor({ name: contextNode()!.name }) : messages().fileActions}\n items={contextItems()}\n disabled={contextItems().length === 0}\n onOpen={() => setContextMenuOpen(true)}\n onClose={() => {\n setContextMenuOpen(false);\n const path = contextPath();\n if (path) focusRow(path);\n }}\n >\n <ul\n class={`k2b-content-file-tree ${props.class ?? \"\"}`}\n data-drop-root={dropTarget() === \"/\" ? \"true\" : undefined}\n role=\"tree\"\n aria-label={props.label ?? messages().files}\n onDragOver={(event) => {\n if (!canDrop(event)) return;\n event.preventDefault();\n if (dropTarget() === null) setDropTarget(\"/\");\n }}\n onDragLeave={(event) => {\n if (event.currentTarget === event.target) setDropTarget(null);\n }}\n onDrop={(event) => handleDrop(event, \"/\")}\n >\n <For each={visible()}>\n {(node) => {\n const currentNode = () => {\n tree();\n return node;\n };\n const isSelected = () => props.selectedPath === currentNode().entry.path;\n const isDropTarget = () => currentNode().isFolder && dropTarget() === currentNode().entry.path;\n const icon = () =>\n currentNode().isFolder\n ? expanded().has(currentNode().entry.path)\n ? \"ti-folder-open\"\n : \"ti-folder\"\n : glyphOnly(\n currentNode().entry.icon ??\n fileIcons.getFileIcon({\n name: currentNode().name,\n type: \"file\",\n mimeType: currentNode().entry.mediaType ?? \"text/plain\",\n }),\n );\n const hasItems = () => menuItems(node).length > 0;\n return (\n <li\n ref={(element) => {\n rowRefs.set(node.entry.path, element);\n }}\n class=\"k2b-content-file-tree__item\"\n role=\"treeitem\"\n tabIndex={renamingPath() === node.entry.path ? -1 : focusedPath() === node.entry.path ? 0 : -1}\n aria-label={currentNode().name}\n aria-level={currentNode().depth + 1}\n aria-selected={isSelected()}\n aria-expanded={currentNode().isFolder ? expanded().has(currentNode().entry.path) : undefined}\n aria-haspopup={hasItems() ? \"menu\" : undefined}\n data-context-open={contextMenuOpen() && contextPath() === node.entry.path ? \"true\" : undefined}\n onFocus={() => {\n setFocusedPath(node.entry.path);\n setContextPath(node.entry.path);\n }}\n onKeyDown={(event) => onKeyDown(event, node)}\n onContextMenu={() => setContextPath(node.entry.path)}\n >\n <Show\n when={renamingPath() === node.entry.path}\n fallback={\n <div\n data-state={isSelected() ? \"selected\" : isDropTarget() ? \"drop-target\" : \"idle\"}\n class=\"k2b-content-file-tree__row\"\n >\n <button\n type=\"button\"\n tabIndex={-1}\n class=\"k2b-content-file-tree__select\"\n style={{ \"padding-left\": `${6 + currentNode().depth * 14}px` }}\n title={currentNode().entry.path}\n draggable={Boolean(props.actions?.move)}\n onDragStart={(event) => event.dataTransfer?.setData(DRAG_MIME, node.entry.path)}\n onDragOver={(event) => {\n if (!node.isFolder || !canDrop(event)) return;\n event.preventDefault();\n event.stopPropagation();\n setDropTarget(node.entry.path);\n }}\n onDragLeave={() => {\n if (isDropTarget()) setDropTarget(null);\n }}\n onDrop={(event) => node.isFolder && handleDrop(event, node.entry.path)}\n onClick={(event) => {\n event.currentTarget.closest<HTMLElement>('[role=\"treeitem\"]')?.focus();\n select(node);\n }}\n >\n <i class={`ti ${icon()} k2b-content-file-tree__icon`} aria-hidden=\"true\" />\n <span class=\"k2b-content-file-tree__name\">{currentNode().name}</span>\n <Show when={currentNode().entry.badge}>\n <span class=\"k2b-content-file-tree__badge\">{currentNode().entry.badge}</span>\n </Show>\n </button>\n <Show when={hasItems()}>\n <Dropdown.Root position=\"bottom-left\" items={menuItems(node)} label={`Actions for ${currentNode().name}`}>\n <Dropdown.Trigger\n appearance=\"plain\"\n tabIndex={-1}\n class=\"k2b-content-file-tree__actions\"\n label={`Actions for ${currentNode().name}`}\n title={messages().actions}\n >\n <i class=\"ti ti-dots\" aria-hidden=\"true\" />\n <span class=\"k2b-sr-only\">Actions for {currentNode().name}</span>\n </Dropdown.Trigger>\n </Dropdown.Root>\n </Show>\n </div>\n }\n >\n <input\n class=\"k2b-content-file-tree__rename\"\n style={{\n \"margin-left\": `${6 + currentNode().depth * 14}px`,\n width: `calc(100% - ${6 + currentNode().depth * 14}px)`,\n }}\n value={renameDraft()}\n ref={(element) =>\n requestAnimationFrame(() => {\n element.focus();\n element.select();\n })\n }\n onInput={(event) => setRenameDraft(event.currentTarget.value)}\n onKeyDown={(event) => {\n event.stopPropagation();\n if (event.key === \"Enter\") void commitRename(node, event.currentTarget.value);\n if (event.key === \"Escape\") cancelRename(node);\n }}\n onBlur={(event) => void commitRename(node, event.currentTarget.value)}\n />\n </Show>\n </li>\n );\n }}\n </For>\n </ul>\n </ContextMenu>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["fileIcons","createEffect","createMemo","createSignal","For","Show","ContextMenu","Dropdown","useUiMessages","allFolderPaths","buildTree","flattenVisible","parentOf","glyphOnly","icon","split","filter","token","startsWith","join","FileTree","props","messages","previousTree","tree","entries","internalExpanded","setInternalExpanded","Set","equals","previous","current","added","path","has","length","expandedPaths","expanded","setExpanded","next","onExpandedChange","toggleFolder","delete","add","visible","renamingPath","setRenamingPath","renameDraft","setRenameDraft","focusedPath","setFocusedPath","selectedPath","pendingFocusPath","setPendingFocusPath","contextPath","setContextPath","contextMenuOpen","setContextMenuOpen","rowRefs","Map","dropTarget","setDropTarget","focusRow","restoreDomFocus","row","get","isConnected","focus","queueMicrotask","rows","paths","map","node","entry","keys","pending","some","selected","find","DRAG_MIME","canDrop","event","actions","move","dataTransfer","types","includes","handleDrop","targetDir","preventDefault","stopPropagation","getData","select","isFolder","onSelect","commitRename","value","nextName","trim","name","parent","rename","cancelRename","beginRename","menuItems","items","contextMenu","createFile","push","label","newFile","action","createFolder","newFolder","download","downloadAsZip","remove","variant","contextNode","contextItems","onKeyDown","target","Element","index","findIndex","key","shiftKey","Math","min","max","depth","undefined","_$createComponent","tabIndex","_$memo","actionsFor","fileActions","disabled","onOpen","onClose","children","_el$","_$getNextElement","_tmpl$","addEventListener","currentTarget","_$insert","each","currentNode","isSelected","isDropTarget","getFileIcon","type","mimeType","mediaType","hasItems","_el$2","_tmpl$3","$$contextmenu","$$keydown","_$use","element","set","when","fallback","_el$4","_tmpl$7","_el$5","firstChild","_el$6","_el$7","nextSibling","_el$9","_el$0","_co$","_$getNextMarker","_el$14","_el$15","_co$3","$$click","closest","setData","displayName","badge","_el$8","_tmpl$4","Root","position","Trigger","appearance","title","_tmpl$5","_el$10","_tmpl$6","_el$11","_el$12","_el$13","_co$2","_$effect","_p$","_v$11","_v$12","_v$13","_v$14","Boolean","_v$15","e","_$setAttribute","t","_$setStyleProperty","a","o","i","_$className","_$runHydrationEvents","_el$3","_tmpl$2","$$input","requestAnimationFrame","_v$4","_v$5","_$setProperty","_v$6","_v$7","_v$8","_v$9","_v$0","_v$1","_v$10","n","s","_v$","class","_v$2","_v$3","files","_$delegateEvents"],"sources":["content/FileTree.tsx"],"sourcesContent":["/**\n * FileTree — path-first tree over a flat entry list (folders derived from\n * paths, explicit folder entries allowed for empty dirs). Capabilities are\n * enabled by the presence of action callbacks; without them the tree is a\n * pure read-only browser. Context menus render through the platform\n * ContextMenu. Minimal look: text rows, bevel on selection, no hover motion.\n */\nimport { fileIcons } from \"@k2b/stdlib\";\nimport { createEffect, createMemo, createSignal, For, Show } from \"solid-js\";\nimport ContextMenu from \"../actions/ContextMenu\";\nimport Dropdown, { type DropdownItem } from \"../actions/Dropdown\";\nimport { useUiMessages } from \"../intl/messages\";\nimport { allFolderPaths, buildTree, type FileTreeEntry, flattenVisible, parentOf, type TreeNode } from \"./file-tree\";\n\nexport type { FileTreeEntry } from \"./file-tree\";\n\n/**\n * `fileIcons` (and app-supplied entry icons) may carry Tailwind colour classes.\n * @k2b/ui ships no Tailwind utilities, so only the `ti-*` glyph is kept — the\n * row owns the icon colour.\n */\nconst glyphOnly = (icon: string): string =>\n icon\n .split(/\\s+/)\n .filter((token) => token.startsWith(\"ti-\"))\n .join(\" \");\n\n/** Presence of a callback enables the matching UI affordance. */\nexport type FileTreeActions = {\n rename?: (path: string, nextName: string) => void | Promise<void>;\n remove?: (path: string) => void | Promise<void>;\n createFile?: (dirPath: string) => void | Promise<void>;\n createFolder?: (dirPath: string) => void | Promise<void>;\n /** Enables drag & drop of files and folders onto folders (and the tree root). */\n move?: (path: string, targetDir: string) => void | Promise<void>;\n /** Download menu entry — folders arrive as \"Download as ZIP\". */\n download?: (path: string, isFolder: boolean) => void | Promise<void>;\n};\n\nexport type FileTreeProps = {\n entries: FileTreeEntry[];\n selectedPath?: string | null;\n onSelect?: (entry: FileTreeEntry) => void;\n /** Controlled expansion; omit for internal state (folders start expanded). */\n expandedPaths?: Set<string>;\n onExpandedChange?: (expanded: Set<string>) => void;\n /** Extra context-menu items per entry, merged above the built-in actions. */\n contextMenu?: (entry: FileTreeEntry) => DropdownItem[];\n actions?: FileTreeActions;\n /** Accessible name for the tree. */\n label?: string;\n class?: string;\n};\n\nexport default function FileTree(props: FileTreeProps) {\n const messages = useUiMessages();\n let previousTree: TreeNode[] = [];\n const tree = createMemo(() => (previousTree = buildTree(props.entries, previousTree)));\n\n const [internalExpanded, setInternalExpanded] = createSignal<Set<string>>(new Set(allFolderPaths(tree())), { equals: false });\n // Newly appearing folders start expanded in uncontrolled mode.\n createEffect((previous: Set<string>) => {\n const current = new Set(allFolderPaths(tree()));\n const added = [...current].filter((path) => !previous.has(path));\n if (added.length > 0 && !props.expandedPaths) setInternalExpanded((expanded) => new Set([...expanded, ...added]));\n return current;\n }, new Set<string>());\n\n const expanded = () => props.expandedPaths ?? internalExpanded();\n const setExpanded = (next: Set<string>) => {\n if (props.onExpandedChange) props.onExpandedChange(next);\n if (!props.expandedPaths) setInternalExpanded(next);\n };\n const toggleFolder = (path: string) => {\n const next = new Set(expanded());\n if (next.has(path)) next.delete(path);\n else next.add(path);\n setExpanded(next);\n };\n\n const visible = createMemo(() => flattenVisible(tree(), expanded()));\n const [renamingPath, setRenamingPath] = createSignal<string | null>(null);\n const [renameDraft, setRenameDraft] = createSignal(\"\");\n const [focusedPath, setFocusedPath] = createSignal(props.selectedPath ?? \"\");\n const [pendingFocusPath, setPendingFocusPath] = createSignal<string | null>(null);\n const [contextPath, setContextPath] = createSignal<string | null>(props.selectedPath ?? null);\n const [contextMenuOpen, setContextMenuOpen] = createSignal(false);\n const rowRefs = new Map<string, HTMLLIElement>();\n /** Folder currently hovered by a drag (\"/\" = tree root). */\n const [dropTarget, setDropTarget] = createSignal<string | null>(null);\n\n const focusRow = (path: string, restoreDomFocus = true) => {\n setFocusedPath(path);\n if (!restoreDomFocus) return;\n const row = rowRefs.get(path);\n if (row?.isConnected) row.focus();\n else queueMicrotask(() => rowRefs.get(path)?.focus());\n };\n\n createEffect(() => {\n const rows = visible();\n const paths = new Set(rows.map((node) => node.entry.path));\n for (const path of rowRefs.keys()) if (!paths.has(path)) rowRefs.delete(path);\n const pending = pendingFocusPath();\n if (pending && rows.some((node) => node.entry.path === pending)) {\n setPendingFocusPath(null);\n focusRow(pending);\n return;\n }\n if (rows.some((node) => node.entry.path === focusedPath())) return;\n const selected = rows.find((node) => node.entry.path === props.selectedPath);\n setFocusedPath(selected?.entry.path ?? rows[0]?.entry.path ?? \"\");\n });\n\n const DRAG_MIME = \"application/x-filetree-path\";\n const canDrop = (event: DragEvent) => props.actions?.move && event.dataTransfer?.types.includes(DRAG_MIME);\n const handleDrop = (event: DragEvent, targetDir: string) => {\n event.preventDefault();\n event.stopPropagation();\n setDropTarget(null);\n const path = event.dataTransfer?.getData(DRAG_MIME);\n if (!path || parentOf(path) === targetDir || path === targetDir || targetDir.startsWith(`${path}/`)) return;\n void props.actions?.move?.(path, targetDir);\n };\n\n const select = (node: TreeNode) => {\n if (node.isFolder) toggleFolder(node.entry.path);\n else props.onSelect?.(node.entry);\n };\n\n const commitRename = async (node: TreeNode, value: string) => {\n if (renamingPath() !== node.entry.path) return;\n setRenamingPath(null);\n const nextName = value.trim();\n focusRow(node.entry.path);\n if (!nextName || nextName === node.name || nextName.includes(\"/\")) return;\n const parent = parentOf(node.entry.path);\n setPendingFocusPath(`${parent === \"/\" ? \"\" : parent}/${nextName}`);\n await props.actions?.rename?.(node.entry.path, nextName);\n };\n\n const cancelRename = (node: TreeNode) => {\n setRenamingPath(null);\n focusRow(node.entry.path);\n };\n\n const beginRename = (node: TreeNode) => {\n setRenameDraft(node.name);\n setRenamingPath(node.entry.path);\n };\n\n const menuItems = (node: TreeNode): DropdownItem[] => {\n tree();\n const items: DropdownItem[] = [...(props.contextMenu?.(node.entry) ?? [])];\n if (node.isFolder && props.actions?.createFile) {\n items.push({ icon: \"ti ti-file-plus\", label: messages().newFile, action: () => void props.actions?.createFile?.(node.entry.path) });\n }\n if (node.isFolder && props.actions?.createFolder) {\n items.push({\n icon: \"ti ti-folder-plus\",\n label: messages().newFolder,\n action: () => void props.actions?.createFolder?.(node.entry.path),\n });\n }\n if (props.actions?.download) {\n items.push({\n icon: node.isFolder ? \"ti ti-file-zip\" : \"ti ti-download\",\n label: node.isFolder ? messages().downloadAsZip : messages().download,\n action: () => void props.actions?.download?.(node.entry.path, node.isFolder),\n });\n }\n if (!node.isFolder && props.actions?.rename) {\n items.push({ icon: \"ti ti-cursor-text\", label: messages().rename, action: () => beginRename(node) });\n }\n if (props.actions?.remove) {\n items.push({\n icon: \"ti ti-trash\",\n label: messages().delete,\n variant: \"danger\",\n action: () => void props.actions?.remove?.(node.entry.path),\n });\n }\n return items;\n };\n\n const contextNode = createMemo(() => visible().find((node) => node.entry.path === contextPath()));\n const contextItems = createMemo(() => {\n const node = contextNode();\n return node ? menuItems(node) : [];\n });\n\n const onKeyDown = (event: KeyboardEvent, node: TreeNode) => {\n if (renamingPath()) return;\n const target = event.target;\n if (target instanceof Element && target !== rowRefs.get(node.entry.path)) return;\n const rows = visible();\n const index = rows.findIndex((row) => row.entry.path === node.entry.path);\n const focus = (next: TreeNode | undefined) => {\n if (!next) return;\n focusRow(next.entry.path);\n };\n if (event.key === \"ContextMenu\" || (event.shiftKey && event.key === \"F10\")) {\n setContextPath(node.entry.path);\n return;\n }\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n focus(rows[Math.min(index + 1, rows.length - 1)] ?? rows[0]);\n } else if (event.key === \"ArrowUp\") {\n event.preventDefault();\n focus(rows[Math.max(index - 1, 0)] ?? rows[0]);\n } else if (event.key === \"Home\" || event.key === \"End\") {\n event.preventDefault();\n focus(rows[event.key === \"Home\" ? 0 : rows.length - 1]);\n } else if (event.key === \"ArrowRight\" && node.isFolder) {\n event.preventDefault();\n if (!expanded().has(node.entry.path)) toggleFolder(node.entry.path);\n else focus(rows[index + 1]?.depth === node.depth + 1 ? rows[index + 1] : undefined);\n } else if (event.key === \"ArrowLeft\" && node.isFolder && expanded().has(node.entry.path)) {\n event.preventDefault();\n toggleFolder(node.entry.path);\n } else if (event.key === \"ArrowLeft\") {\n event.preventDefault();\n const parent = parentOf(node.entry.path);\n focus(rows.find((row) => row.entry.path === parent));\n } else if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n select(node);\n } else if (event.key === \"F2\" && !node.isFolder && props.actions?.rename) {\n event.preventDefault();\n beginRename(node);\n }\n };\n\n return (\n <ContextMenu\n class=\"k2b-content-file-tree__context-host\"\n tabIndex={-1}\n label={contextNode() ? messages().actionsFor({ name: contextNode()!.name }) : messages().fileActions}\n items={contextItems()}\n disabled={contextItems().length === 0}\n onOpen={() => setContextMenuOpen(true)}\n onClose={() => {\n setContextMenuOpen(false);\n const path = contextPath();\n if (path) focusRow(path);\n }}\n >\n <ul\n class={`k2b-content-file-tree ${props.class ?? \"\"}`}\n data-drop-root={dropTarget() === \"/\" ? \"true\" : undefined}\n role=\"tree\"\n aria-label={props.label ?? messages().files}\n onDragOver={(event) => {\n if (!canDrop(event)) return;\n event.preventDefault();\n if (dropTarget() === null) setDropTarget(\"/\");\n }}\n onDragLeave={(event) => {\n if (event.currentTarget === event.target) setDropTarget(null);\n }}\n onDrop={(event) => handleDrop(event, \"/\")}\n >\n <For each={visible()}>\n {(node) => {\n const currentNode = () => {\n tree();\n return node;\n };\n const isSelected = () => props.selectedPath === currentNode().entry.path;\n const isDropTarget = () => currentNode().isFolder && dropTarget() === currentNode().entry.path;\n const icon = () =>\n currentNode().isFolder\n ? expanded().has(currentNode().entry.path)\n ? \"ti-folder-open\"\n : \"ti-folder\"\n : glyphOnly(\n currentNode().entry.icon ??\n fileIcons.getFileIcon({\n name: currentNode().name,\n type: \"file\",\n mimeType: currentNode().entry.mediaType ?? \"text/plain\",\n }),\n );\n const hasItems = () => menuItems(node).length > 0;\n return (\n <li\n ref={(element) => {\n rowRefs.set(node.entry.path, element);\n }}\n class=\"k2b-content-file-tree__item\"\n role=\"treeitem\"\n tabIndex={renamingPath() === node.entry.path ? -1 : focusedPath() === node.entry.path ? 0 : -1}\n aria-label={currentNode().entry.displayName ?? currentNode().name}\n aria-level={currentNode().depth + 1}\n aria-selected={isSelected()}\n aria-expanded={currentNode().isFolder ? expanded().has(currentNode().entry.path) : undefined}\n aria-haspopup={hasItems() ? \"menu\" : undefined}\n data-context-open={contextMenuOpen() && contextPath() === node.entry.path ? \"true\" : undefined}\n onFocus={() => {\n setFocusedPath(node.entry.path);\n setContextPath(node.entry.path);\n }}\n onKeyDown={(event) => onKeyDown(event, node)}\n onContextMenu={() => setContextPath(node.entry.path)}\n >\n <Show\n when={renamingPath() === node.entry.path}\n fallback={\n <div\n data-state={isSelected() ? \"selected\" : isDropTarget() ? \"drop-target\" : \"idle\"}\n class=\"k2b-content-file-tree__row\"\n >\n <button\n type=\"button\"\n tabIndex={-1}\n class=\"k2b-content-file-tree__select\"\n style={{ \"padding-left\": `${6 + currentNode().depth * 14}px` }}\n title={currentNode().entry.path}\n draggable={Boolean(props.actions?.move)}\n onDragStart={(event) => event.dataTransfer?.setData(DRAG_MIME, node.entry.path)}\n onDragOver={(event) => {\n if (!node.isFolder || !canDrop(event)) return;\n event.preventDefault();\n event.stopPropagation();\n setDropTarget(node.entry.path);\n }}\n onDragLeave={() => {\n if (isDropTarget()) setDropTarget(null);\n }}\n onDrop={(event) => node.isFolder && handleDrop(event, node.entry.path)}\n onClick={(event) => {\n event.currentTarget.closest<HTMLElement>('[role=\"treeitem\"]')?.focus();\n select(node);\n }}\n >\n <i class={`ti ${icon()} k2b-content-file-tree__icon`} aria-hidden=\"true\" />\n <span class=\"k2b-content-file-tree__name\">{currentNode().entry.displayName ?? currentNode().name}</span>\n <Show when={currentNode().entry.badge}>\n <span class=\"k2b-content-file-tree__badge\">{currentNode().entry.badge}</span>\n </Show>\n </button>\n <Show when={hasItems()}>\n <Dropdown.Root position=\"bottom-left\" items={menuItems(node)} label={`Actions for ${currentNode().name}`}>\n <Dropdown.Trigger\n appearance=\"plain\"\n tabIndex={-1}\n class=\"k2b-content-file-tree__actions\"\n label={`Actions for ${currentNode().name}`}\n title={messages().actions}\n >\n <i class=\"ti ti-dots\" aria-hidden=\"true\" />\n <span class=\"k2b-sr-only\">Actions for {currentNode().name}</span>\n </Dropdown.Trigger>\n </Dropdown.Root>\n </Show>\n </div>\n }\n >\n <input\n class=\"k2b-content-file-tree__rename\"\n style={{\n \"margin-left\": `${6 + currentNode().depth * 14}px`,\n width: `calc(100% - ${6 + currentNode().depth * 14}px)`,\n }}\n value={renameDraft()}\n ref={(element) =>\n requestAnimationFrame(() => {\n element.focus();\n element.select();\n })\n }\n onInput={(event) => setRenameDraft(event.currentTarget.value)}\n onKeyDown={(event) => {\n event.stopPropagation();\n if (event.key === \"Enter\") void commitRename(node, event.currentTarget.value);\n if (event.key === \"Escape\") cancelRename(node);\n }}\n onBlur={(event) => void commitRename(node, event.currentTarget.value)}\n />\n </Show>\n </li>\n );\n }}\n </For>\n </ul>\n </ContextMenu>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|