@k2b/ui 0.1.0-rc.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/LICENSE +661 -0
- package/README.md +343 -0
- package/dist/.build-complete +0 -0
- package/dist/browser/actions/Button.js +236 -0
- package/dist/browser/actions/Button.js.map +1 -0
- package/dist/browser/actions/ContextMenu.js +199 -0
- package/dist/browser/actions/ContextMenu.js.map +1 -0
- package/dist/browser/actions/CopyButton.js +97 -0
- package/dist/browser/actions/CopyButton.js.map +1 -0
- package/dist/browser/actions/Disclosure.js +83 -0
- package/dist/browser/actions/Disclosure.js.map +1 -0
- package/dist/browser/actions/Dropdown.js +669 -0
- package/dist/browser/actions/Dropdown.js.map +1 -0
- package/dist/browser/actions/FilterChip.js +149 -0
- package/dist/browser/actions/FilterChip.js.map +1 -0
- package/dist/browser/actions/RemoveButton.js +47 -0
- package/dist/browser/actions/RemoveButton.js.map +1 -0
- package/dist/browser/actions/SegmentedControl.js +138 -0
- package/dist/browser/actions/SegmentedControl.js.map +1 -0
- package/dist/browser/actions/SplitButton.js +76 -0
- package/dist/browser/actions/SplitButton.js.map +1 -0
- package/dist/browser/actions/SpotlightSearch.js +87 -0
- package/dist/browser/actions/SpotlightSearch.js.map +1 -0
- package/dist/browser/actions/Tabs.js +185 -0
- package/dist/browser/actions/Tabs.js.map +1 -0
- package/dist/browser/actions/Toolbar.js +87 -0
- package/dist/browser/actions/Toolbar.js.map +1 -0
- package/dist/browser/actions/index.js +13 -0
- package/dist/browser/actions/index.js.map +1 -0
- package/dist/browser/chat/ChatComposer.js +760 -0
- package/dist/browser/chat/ChatComposer.js.map +1 -0
- package/dist/browser/chat/ChatPrimitives.js +688 -0
- package/dist/browser/chat/ChatPrimitives.js.map +1 -0
- package/dist/browser/chat/ChatRoot.js +27 -0
- package/dist/browser/chat/ChatRoot.js.map +1 -0
- package/dist/browser/chat/ChatTimeline.js +404 -0
- package/dist/browser/chat/ChatTimeline.js.map +1 -0
- package/dist/browser/chat/chat-behavior.js +53 -0
- package/dist/browser/chat/chat-behavior.js.map +1 -0
- package/dist/browser/chat/index.js +17 -0
- package/dist/browser/chat/index.js.map +1 -0
- package/dist/browser/chat/types.js +2 -0
- package/dist/browser/chat/types.js.map +1 -0
- package/dist/browser/content/Calendar.js +2168 -0
- package/dist/browser/content/Calendar.js.map +1 -0
- package/dist/browser/content/Chart.js +680 -0
- package/dist/browser/content/Chart.js.map +1 -0
- package/dist/browser/content/CodeDisplay.js +104 -0
- package/dist/browser/content/CodeDisplay.js.map +1 -0
- package/dist/browser/content/DataTable.js +724 -0
- package/dist/browser/content/DataTable.js.map +1 -0
- package/dist/browser/content/Docs.js +227 -0
- package/dist/browser/content/Docs.js.map +1 -0
- package/dist/browser/content/FileBrowser.js +462 -0
- package/dist/browser/content/FileBrowser.js.map +1 -0
- package/dist/browser/content/FileTree.js +453 -0
- package/dist/browser/content/FileTree.js.map +1 -0
- package/dist/browser/content/FileView.js +842 -0
- package/dist/browser/content/FileView.js.map +1 -0
- package/dist/browser/content/Lightbox.js +285 -0
- package/dist/browser/content/Lightbox.js.map +1 -0
- package/dist/browser/content/LogEntriesTable.js +139 -0
- package/dist/browser/content/LogEntriesTable.js.map +1 -0
- package/dist/browser/content/MarkdownView.js +138 -0
- package/dist/browser/content/MarkdownView.js.map +1 -0
- package/dist/browser/content/Pagination.js +182 -0
- package/dist/browser/content/Pagination.js.map +1 -0
- package/dist/browser/content/PdfPreview.js +204 -0
- package/dist/browser/content/PdfPreview.js.map +1 -0
- package/dist/browser/content/RangePicker.js +83 -0
- package/dist/browser/content/RangePicker.js.map +1 -0
- package/dist/browser/content/StructuredDataPreview.js +194 -0
- package/dist/browser/content/StructuredDataPreview.js.map +1 -0
- package/dist/browser/content/calendar-event-layout.js +92 -0
- package/dist/browser/content/calendar-event-layout.js.map +1 -0
- package/dist/browser/content/calendar-pointer.js +114 -0
- package/dist/browser/content/calendar-pointer.js.map +1 -0
- package/dist/browser/content/chart-map-viewport.js +33 -0
- package/dist/browser/content/chart-map-viewport.js.map +1 -0
- package/dist/browser/content/chart-state-timeline.js +124 -0
- package/dist/browser/content/chart-state-timeline.js.map +1 -0
- package/dist/browser/content/code-highlight.js +144 -0
- package/dist/browser/content/code-highlight.js.map +1 -0
- package/dist/browser/content/file-tree.js +93 -0
- package/dist/browser/content/file-tree.js.map +1 -0
- package/dist/browser/content/file-view-preview.js +112 -0
- package/dist/browser/content/file-view-preview.js.map +1 -0
- package/dist/browser/content/index.js +16 -0
- package/dist/browser/content/index.js.map +1 -0
- package/dist/browser/feedback/InlineGuidance.js +46 -0
- package/dist/browser/feedback/InlineGuidance.js.map +1 -0
- package/dist/browser/feedback/Tooltip.js +189 -0
- package/dist/browser/feedback/Tooltip.js.map +1 -0
- package/dist/browser/feedback/dialog-core.js +207 -0
- package/dist/browser/feedback/dialog-core.js.map +1 -0
- package/dist/browser/feedback/index.js +6 -0
- package/dist/browser/feedback/index.js.map +1 -0
- package/dist/browser/feedback/prompts.js +991 -0
- package/dist/browser/feedback/prompts.js.map +1 -0
- package/dist/browser/feedback/toast.js +271 -0
- package/dist/browser/feedback/toast.js.map +1 -0
- package/dist/browser/feedback/tooltip-position.js +25 -0
- package/dist/browser/feedback/tooltip-position.js.map +1 -0
- package/dist/browser/index.js +11 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/inputs/AutocompleteEditor.js +610 -0
- package/dist/browser/inputs/AutocompleteEditor.js.map +1 -0
- package/dist/browser/inputs/AutocompleteSelect.js +632 -0
- package/dist/browser/inputs/AutocompleteSelect.js.map +1 -0
- package/dist/browser/inputs/Checkbox.js +137 -0
- package/dist/browser/inputs/Checkbox.js.map +1 -0
- package/dist/browser/inputs/CheckboxCard.js +130 -0
- package/dist/browser/inputs/CheckboxCard.js.map +1 -0
- package/dist/browser/inputs/ChoiceGroups.js +174 -0
- package/dist/browser/inputs/ChoiceGroups.js.map +1 -0
- package/dist/browser/inputs/ChoiceInputs.js +400 -0
- package/dist/browser/inputs/ChoiceInputs.js.map +1 -0
- package/dist/browser/inputs/Combobox.js +274 -0
- package/dist/browser/inputs/Combobox.js.map +1 -0
- package/dist/browser/inputs/DatePicker.js +923 -0
- package/dist/browser/inputs/DatePicker.js.map +1 -0
- package/dist/browser/inputs/FileInputs.js +736 -0
- package/dist/browser/inputs/FileInputs.js.map +1 -0
- package/dist/browser/inputs/MultiSelectInput.js +565 -0
- package/dist/browser/inputs/MultiSelectInput.js.map +1 -0
- package/dist/browser/inputs/NumberInput.js +288 -0
- package/dist/browser/inputs/NumberInput.js.map +1 -0
- package/dist/browser/inputs/Select.js +507 -0
- package/dist/browser/inputs/Select.js.map +1 -0
- package/dist/browser/inputs/SelectChip.js +151 -0
- package/dist/browser/inputs/SelectChip.js.map +1 -0
- package/dist/browser/inputs/SpecialInputs.js +117 -0
- package/dist/browser/inputs/SpecialInputs.js.map +1 -0
- package/dist/browser/inputs/Switch.js +117 -0
- package/dist/browser/inputs/Switch.js.map +1 -0
- package/dist/browser/inputs/TagEditor.js +358 -0
- package/dist/browser/inputs/TagEditor.js.map +1 -0
- package/dist/browser/inputs/TagsInput.js +195 -0
- package/dist/browser/inputs/TagsInput.js.map +1 -0
- package/dist/browser/inputs/TemplateEditor.js +190 -0
- package/dist/browser/inputs/TemplateEditor.js.map +1 -0
- package/dist/browser/inputs/TextInput.js +318 -0
- package/dist/browser/inputs/TextInput.js.map +1 -0
- package/dist/browser/inputs/choice.js +188 -0
- package/dist/browser/inputs/choice.js.map +1 -0
- package/dist/browser/inputs/completion/behaviors.js +108 -0
- package/dist/browser/inputs/completion/behaviors.js.map +1 -0
- package/dist/browser/inputs/completion/engine.js +103 -0
- package/dist/browser/inputs/completion/engine.js.map +1 -0
- package/dist/browser/inputs/completion/index.js +4 -0
- package/dist/browser/inputs/completion/index.js.map +1 -0
- package/dist/browser/inputs/completion/overlay.js +25 -0
- package/dist/browser/inputs/completion/overlay.js.map +1 -0
- package/dist/browser/inputs/date-picker.js +123 -0
- package/dist/browser/inputs/date-picker.js.map +1 -0
- package/dist/browser/inputs/editor-dom.js +26 -0
- package/dist/browser/inputs/editor-dom.js.map +1 -0
- package/dist/browser/inputs/field-contract.js +9 -0
- package/dist/browser/inputs/field-contract.js.map +1 -0
- package/dist/browser/inputs/icon-options.js +46 -0
- package/dist/browser/inputs/icon-options.js.map +1 -0
- package/dist/browser/inputs/image-crop.js +145 -0
- package/dist/browser/inputs/image-crop.js.map +1 -0
- package/dist/browser/inputs/index.js +23 -0
- package/dist/browser/inputs/index.js.map +1 -0
- package/dist/browser/inputs/markdown/MarkdownEditor.js +725 -0
- package/dist/browser/inputs/markdown/MarkdownEditor.js.map +1 -0
- package/dist/browser/inputs/markdown/Toolbar.js +172 -0
- package/dist/browser/inputs/markdown/Toolbar.js.map +1 -0
- package/dist/browser/inputs/markdown/actions.js +140 -0
- package/dist/browser/inputs/markdown/actions.js.map +1 -0
- package/dist/browser/inputs/markdown/active-formats.js +36 -0
- package/dist/browser/inputs/markdown/active-formats.js.map +1 -0
- package/dist/browser/inputs/markdown/behaviors.js +63 -0
- package/dist/browser/inputs/markdown/behaviors.js.map +1 -0
- package/dist/browser/inputs/markdown/code-zone.js +8 -0
- package/dist/browser/inputs/markdown/code-zone.js.map +1 -0
- package/dist/browser/internal/color.js +18 -0
- package/dist/browser/internal/color.js.map +1 -0
- package/dist/browser/internal/field.js +158 -0
- package/dist/browser/internal/field.js.map +1 -0
- package/dist/browser/internal/portal.js +17 -0
- package/dist/browser/internal/portal.js.map +1 -0
- package/dist/browser/intl/Format.js +273 -0
- package/dist/browser/intl/Format.js.map +1 -0
- package/dist/browser/intl/index.js +3 -0
- package/dist/browser/intl/index.js.map +1 -0
- package/dist/browser/intl/locale.js +63 -0
- package/dist/browser/intl/locale.js.map +1 -0
- package/dist/browser/intl/messages.js +753 -0
- package/dist/browser/intl/messages.js.map +1 -0
- package/dist/browser/layout/AppOverview.js +151 -0
- package/dist/browser/layout/AppOverview.js.map +1 -0
- package/dist/browser/layout/AppWorkspace.js +1502 -0
- package/dist/browser/layout/AppWorkspace.js.map +1 -0
- package/dist/browser/layout/DataPanel.js +122 -0
- package/dist/browser/layout/DataPanel.js.map +1 -0
- package/dist/browser/layout/DetailPanel.js +484 -0
- package/dist/browser/layout/DetailPanel.js.map +1 -0
- package/dist/browser/layout/Discussion.js +511 -0
- package/dist/browser/layout/Discussion.js.map +1 -0
- package/dist/browser/layout/FloatingWindow.js +332 -0
- package/dist/browser/layout/FloatingWindow.js.map +1 -0
- package/dist/browser/layout/PanelDialog.js +236 -0
- package/dist/browser/layout/PanelDialog.js.map +1 -0
- package/dist/browser/layout/PanelHeader.js +91 -0
- package/dist/browser/layout/PanelHeader.js.map +1 -0
- package/dist/browser/layout/Panes.js +978 -0
- package/dist/browser/layout/Panes.js.map +1 -0
- package/dist/browser/layout/ScrollArea.js +29 -0
- package/dist/browser/layout/ScrollArea.js.map +1 -0
- package/dist/browser/layout/Settings.js +381 -0
- package/dist/browser/layout/Settings.js.map +1 -0
- package/dist/browser/layout/SettingsCollection.js +212 -0
- package/dist/browser/layout/SettingsCollection.js.map +1 -0
- package/dist/browser/layout/SettingsModal.js +281 -0
- package/dist/browser/layout/SettingsModal.js.map +1 -0
- package/dist/browser/layout/app-workspace-controller.js +419 -0
- package/dist/browser/layout/app-workspace-controller.js.map +1 -0
- package/dist/browser/layout/app-workspace-state.js +125 -0
- package/dist/browser/layout/app-workspace-state.js.map +1 -0
- package/dist/browser/layout/floating-window-geometry.js +15 -0
- package/dist/browser/layout/floating-window-geometry.js.map +1 -0
- package/dist/browser/layout/index.js +17 -0
- package/dist/browser/layout/index.js.map +1 -0
- package/dist/browser/layout/panes-layout.js +436 -0
- package/dist/browser/layout/panes-layout.js.map +1 -0
- package/dist/browser/layout/stable-id.js +17 -0
- package/dist/browser/layout/stable-id.js.map +1 -0
- package/dist/browser/semantics.js +2 -0
- package/dist/browser/semantics.js.map +1 -0
- package/dist/browser/surfaces/Avatar.js +97 -0
- package/dist/browser/surfaces/Avatar.js.map +1 -0
- package/dist/browser/surfaces/DescriptionList.js +66 -0
- package/dist/browser/surfaces/DescriptionList.js.map +1 -0
- package/dist/browser/surfaces/LinkCard.js +40 -0
- package/dist/browser/surfaces/LinkCard.js.map +1 -0
- package/dist/browser/surfaces/NotFoundState.js +85 -0
- package/dist/browser/surfaces/NotFoundState.js.map +1 -0
- package/dist/browser/surfaces/NoticeCard.js +145 -0
- package/dist/browser/surfaces/NoticeCard.js.map +1 -0
- package/dist/browser/surfaces/Paper.js +33 -0
- package/dist/browser/surfaces/Paper.js.map +1 -0
- package/dist/browser/surfaces/Placeholder.js +90 -0
- package/dist/browser/surfaces/Placeholder.js.map +1 -0
- package/dist/browser/surfaces/ProgressBar.js +58 -0
- package/dist/browser/surfaces/ProgressBar.js.map +1 -0
- package/dist/browser/surfaces/StatCell.js +172 -0
- package/dist/browser/surfaces/StatCell.js.map +1 -0
- package/dist/browser/surfaces/StatGrid.js +80 -0
- package/dist/browser/surfaces/StatGrid.js.map +1 -0
- package/dist/browser/surfaces/StatusBadge.js +70 -0
- package/dist/browser/surfaces/StatusBadge.js.map +1 -0
- package/dist/browser/surfaces/Tag.js +94 -0
- package/dist/browser/surfaces/Tag.js.map +1 -0
- package/dist/browser/surfaces/index.js +13 -0
- package/dist/browser/surfaces/index.js.map +1 -0
- package/dist/browser/widgets/Widget.js +89 -0
- package/dist/browser/widgets/Widget.js.map +1 -0
- package/dist/browser/widgets/WidgetHero.js +47 -0
- package/dist/browser/widgets/WidgetHero.js.map +1 -0
- package/dist/browser/widgets/WidgetList.js +125 -0
- package/dist/browser/widgets/WidgetList.js.map +1 -0
- package/dist/browser/widgets/WidgetPills.js +78 -0
- package/dist/browser/widgets/WidgetPills.js.map +1 -0
- package/dist/browser/widgets/WidgetStat.js +114 -0
- package/dist/browser/widgets/WidgetStat.js.map +1 -0
- package/dist/browser/widgets/WidgetStatus.js +54 -0
- package/dist/browser/widgets/WidgetStatus.js.map +1 -0
- package/dist/browser/widgets/index.js +7 -0
- package/dist/browser/widgets/index.js.map +1 -0
- package/dist/global.css +3 -0
- package/dist/licenses/ibm-plex-mono.txt +93 -0
- package/dist/licenses/ibm-plex-sans.txt +93 -0
- package/dist/licenses/tabler-icons.txt +21 -0
- package/dist/plex.css +1 -0
- package/dist/ssr/actions/Button.js +203 -0
- package/dist/ssr/actions/Button.js.map +1 -0
- package/dist/ssr/actions/ContextMenu.js +128 -0
- package/dist/ssr/actions/ContextMenu.js.map +1 -0
- package/dist/ssr/actions/CopyButton.js +79 -0
- package/dist/ssr/actions/CopyButton.js.map +1 -0
- package/dist/ssr/actions/Disclosure.js +26 -0
- package/dist/ssr/actions/Disclosure.js.map +1 -0
- package/dist/ssr/actions/Dropdown.js +443 -0
- package/dist/ssr/actions/Dropdown.js.map +1 -0
- package/dist/ssr/actions/FilterChip.js +132 -0
- package/dist/ssr/actions/FilterChip.js.map +1 -0
- package/dist/ssr/actions/RemoveButton.js +45 -0
- package/dist/ssr/actions/RemoveButton.js.map +1 -0
- package/dist/ssr/actions/SegmentedControl.js +57 -0
- package/dist/ssr/actions/SegmentedControl.js.map +1 -0
- package/dist/ssr/actions/SplitButton.js +74 -0
- package/dist/ssr/actions/SplitButton.js.map +1 -0
- package/dist/ssr/actions/SpotlightSearch.js +38 -0
- package/dist/ssr/actions/SpotlightSearch.js.map +1 -0
- package/dist/ssr/actions/Tabs.js +91 -0
- package/dist/ssr/actions/Tabs.js.map +1 -0
- package/dist/ssr/actions/Toolbar.js +33 -0
- package/dist/ssr/actions/Toolbar.js.map +1 -0
- package/dist/ssr/actions/index.js +13 -0
- package/dist/ssr/actions/index.js.map +1 -0
- package/dist/ssr/chat/ChatComposer.js +392 -0
- package/dist/ssr/chat/ChatComposer.js.map +1 -0
- package/dist/ssr/chat/ChatPrimitives.js +377 -0
- package/dist/ssr/chat/ChatPrimitives.js.map +1 -0
- package/dist/ssr/chat/ChatRoot.js +10 -0
- package/dist/ssr/chat/ChatRoot.js.map +1 -0
- package/dist/ssr/chat/ChatTimeline.js +301 -0
- package/dist/ssr/chat/ChatTimeline.js.map +1 -0
- package/dist/ssr/chat/chat-behavior.js +53 -0
- package/dist/ssr/chat/chat-behavior.js.map +1 -0
- package/dist/ssr/chat/index.js +17 -0
- package/dist/ssr/chat/index.js.map +1 -0
- package/dist/ssr/chat/types.js +2 -0
- package/dist/ssr/chat/types.js.map +1 -0
- package/dist/ssr/content/Calendar.js +1542 -0
- package/dist/ssr/content/Calendar.js.map +1 -0
- package/dist/ssr/content/Chart.js +552 -0
- package/dist/ssr/content/Chart.js.map +1 -0
- package/dist/ssr/content/CodeDisplay.js +55 -0
- package/dist/ssr/content/CodeDisplay.js.map +1 -0
- package/dist/ssr/content/DataTable.js +470 -0
- package/dist/ssr/content/DataTable.js.map +1 -0
- package/dist/ssr/content/Docs.js +108 -0
- package/dist/ssr/content/Docs.js.map +1 -0
- package/dist/ssr/content/FileBrowser.js +422 -0
- package/dist/ssr/content/FileBrowser.js.map +1 -0
- package/dist/ssr/content/FileTree.js +299 -0
- package/dist/ssr/content/FileTree.js.map +1 -0
- package/dist/ssr/content/FileView.js +612 -0
- package/dist/ssr/content/FileView.js.map +1 -0
- package/dist/ssr/content/Lightbox.js +164 -0
- package/dist/ssr/content/Lightbox.js.map +1 -0
- package/dist/ssr/content/LogEntriesTable.js +106 -0
- package/dist/ssr/content/LogEntriesTable.js.map +1 -0
- package/dist/ssr/content/MarkdownView.js +119 -0
- package/dist/ssr/content/MarkdownView.js.map +1 -0
- package/dist/ssr/content/Pagination.js +141 -0
- package/dist/ssr/content/Pagination.js.map +1 -0
- package/dist/ssr/content/PdfPreview.js +126 -0
- package/dist/ssr/content/PdfPreview.js.map +1 -0
- package/dist/ssr/content/RangePicker.js +35 -0
- package/dist/ssr/content/RangePicker.js.map +1 -0
- package/dist/ssr/content/StructuredDataPreview.js +127 -0
- package/dist/ssr/content/StructuredDataPreview.js.map +1 -0
- package/dist/ssr/content/calendar-event-layout.js +92 -0
- package/dist/ssr/content/calendar-event-layout.js.map +1 -0
- package/dist/ssr/content/calendar-pointer.js +114 -0
- package/dist/ssr/content/calendar-pointer.js.map +1 -0
- package/dist/ssr/content/chart-map-viewport.js +33 -0
- package/dist/ssr/content/chart-map-viewport.js.map +1 -0
- package/dist/ssr/content/chart-state-timeline.js +124 -0
- package/dist/ssr/content/chart-state-timeline.js.map +1 -0
- package/dist/ssr/content/code-highlight.js +144 -0
- package/dist/ssr/content/code-highlight.js.map +1 -0
- package/dist/ssr/content/file-tree.js +93 -0
- package/dist/ssr/content/file-tree.js.map +1 -0
- package/dist/ssr/content/file-view-preview.js +112 -0
- package/dist/ssr/content/file-view-preview.js.map +1 -0
- package/dist/ssr/content/index.js +16 -0
- package/dist/ssr/content/index.js.map +1 -0
- package/dist/ssr/feedback/InlineGuidance.js +26 -0
- package/dist/ssr/feedback/InlineGuidance.js.map +1 -0
- package/dist/ssr/feedback/Tooltip.js +156 -0
- package/dist/ssr/feedback/Tooltip.js.map +1 -0
- package/dist/ssr/feedback/dialog-core.js +207 -0
- package/dist/ssr/feedback/dialog-core.js.map +1 -0
- package/dist/ssr/feedback/index.js +6 -0
- package/dist/ssr/feedback/index.js.map +1 -0
- package/dist/ssr/feedback/prompts.js +703 -0
- package/dist/ssr/feedback/prompts.js.map +1 -0
- package/dist/ssr/feedback/toast.js +271 -0
- package/dist/ssr/feedback/toast.js.map +1 -0
- package/dist/ssr/feedback/tooltip-position.js +25 -0
- package/dist/ssr/feedback/tooltip-position.js.map +1 -0
- package/dist/ssr/index.js +11 -0
- package/dist/ssr/index.js.map +1 -0
- package/dist/ssr/inputs/AutocompleteEditor.js +463 -0
- package/dist/ssr/inputs/AutocompleteEditor.js.map +1 -0
- package/dist/ssr/inputs/AutocompleteSelect.js +420 -0
- package/dist/ssr/inputs/AutocompleteSelect.js.map +1 -0
- package/dist/ssr/inputs/Checkbox.js +75 -0
- package/dist/ssr/inputs/Checkbox.js.map +1 -0
- package/dist/ssr/inputs/CheckboxCard.js +69 -0
- package/dist/ssr/inputs/CheckboxCard.js.map +1 -0
- package/dist/ssr/inputs/ChoiceGroups.js +101 -0
- package/dist/ssr/inputs/ChoiceGroups.js.map +1 -0
- package/dist/ssr/inputs/ChoiceInputs.js +250 -0
- package/dist/ssr/inputs/ChoiceInputs.js.map +1 -0
- package/dist/ssr/inputs/Combobox.js +177 -0
- package/dist/ssr/inputs/Combobox.js.map +1 -0
- package/dist/ssr/inputs/DatePicker.js +629 -0
- package/dist/ssr/inputs/DatePicker.js.map +1 -0
- package/dist/ssr/inputs/FileInputs.js +543 -0
- package/dist/ssr/inputs/FileInputs.js.map +1 -0
- package/dist/ssr/inputs/MultiSelectInput.js +347 -0
- package/dist/ssr/inputs/MultiSelectInput.js.map +1 -0
- package/dist/ssr/inputs/NumberInput.js +177 -0
- package/dist/ssr/inputs/NumberInput.js.map +1 -0
- package/dist/ssr/inputs/Select.js +308 -0
- package/dist/ssr/inputs/Select.js.map +1 -0
- package/dist/ssr/inputs/SelectChip.js +129 -0
- package/dist/ssr/inputs/SelectChip.js.map +1 -0
- package/dist/ssr/inputs/SpecialInputs.js +116 -0
- package/dist/ssr/inputs/SpecialInputs.js.map +1 -0
- package/dist/ssr/inputs/Switch.js +62 -0
- package/dist/ssr/inputs/Switch.js.map +1 -0
- package/dist/ssr/inputs/TagEditor.js +280 -0
- package/dist/ssr/inputs/TagEditor.js.map +1 -0
- package/dist/ssr/inputs/TagsInput.js +122 -0
- package/dist/ssr/inputs/TagsInput.js.map +1 -0
- package/dist/ssr/inputs/TemplateEditor.js +164 -0
- package/dist/ssr/inputs/TemplateEditor.js.map +1 -0
- package/dist/ssr/inputs/TextInput.js +211 -0
- package/dist/ssr/inputs/TextInput.js.map +1 -0
- package/dist/ssr/inputs/choice.js +188 -0
- package/dist/ssr/inputs/choice.js.map +1 -0
- package/dist/ssr/inputs/completion/behaviors.js +108 -0
- package/dist/ssr/inputs/completion/behaviors.js.map +1 -0
- package/dist/ssr/inputs/completion/engine.js +103 -0
- package/dist/ssr/inputs/completion/engine.js.map +1 -0
- package/dist/ssr/inputs/completion/index.js +4 -0
- package/dist/ssr/inputs/completion/index.js.map +1 -0
- package/dist/ssr/inputs/completion/overlay.js +25 -0
- package/dist/ssr/inputs/completion/overlay.js.map +1 -0
- package/dist/ssr/inputs/date-picker.js +123 -0
- package/dist/ssr/inputs/date-picker.js.map +1 -0
- package/dist/ssr/inputs/editor-dom.js +26 -0
- package/dist/ssr/inputs/editor-dom.js.map +1 -0
- package/dist/ssr/inputs/field-contract.js +9 -0
- package/dist/ssr/inputs/field-contract.js.map +1 -0
- package/dist/ssr/inputs/icon-options.js +46 -0
- package/dist/ssr/inputs/icon-options.js.map +1 -0
- package/dist/ssr/inputs/image-crop.js +145 -0
- package/dist/ssr/inputs/image-crop.js.map +1 -0
- package/dist/ssr/inputs/index.js +23 -0
- package/dist/ssr/inputs/index.js.map +1 -0
- package/dist/ssr/inputs/markdown/MarkdownEditor.js +516 -0
- package/dist/ssr/inputs/markdown/MarkdownEditor.js.map +1 -0
- package/dist/ssr/inputs/markdown/Toolbar.js +115 -0
- package/dist/ssr/inputs/markdown/Toolbar.js.map +1 -0
- package/dist/ssr/inputs/markdown/actions.js +140 -0
- package/dist/ssr/inputs/markdown/actions.js.map +1 -0
- package/dist/ssr/inputs/markdown/active-formats.js +36 -0
- package/dist/ssr/inputs/markdown/active-formats.js.map +1 -0
- package/dist/ssr/inputs/markdown/behaviors.js +63 -0
- package/dist/ssr/inputs/markdown/behaviors.js.map +1 -0
- package/dist/ssr/inputs/markdown/code-zone.js +8 -0
- package/dist/ssr/inputs/markdown/code-zone.js.map +1 -0
- package/dist/ssr/internal/color.js +18 -0
- package/dist/ssr/internal/color.js.map +1 -0
- package/dist/ssr/internal/field.js +90 -0
- package/dist/ssr/internal/field.js.map +1 -0
- package/dist/ssr/internal/portal.js +17 -0
- package/dist/ssr/internal/portal.js.map +1 -0
- package/dist/ssr/intl/Format.js +192 -0
- package/dist/ssr/intl/Format.js.map +1 -0
- package/dist/ssr/intl/index.js +3 -0
- package/dist/ssr/intl/index.js.map +1 -0
- package/dist/ssr/intl/locale.js +63 -0
- package/dist/ssr/intl/locale.js.map +1 -0
- package/dist/ssr/intl/messages.js +753 -0
- package/dist/ssr/intl/messages.js.map +1 -0
- package/dist/ssr/layout/AppOverview.js +85 -0
- package/dist/ssr/layout/AppOverview.js.map +1 -0
- package/dist/ssr/layout/AppWorkspace.js +976 -0
- package/dist/ssr/layout/AppWorkspace.js.map +1 -0
- package/dist/ssr/layout/DataPanel.js +101 -0
- package/dist/ssr/layout/DataPanel.js.map +1 -0
- package/dist/ssr/layout/DetailPanel.js +284 -0
- package/dist/ssr/layout/DetailPanel.js.map +1 -0
- package/dist/ssr/layout/Discussion.js +319 -0
- package/dist/ssr/layout/Discussion.js.map +1 -0
- package/dist/ssr/layout/FloatingWindow.js +259 -0
- package/dist/ssr/layout/FloatingWindow.js.map +1 -0
- package/dist/ssr/layout/PanelDialog.js +136 -0
- package/dist/ssr/layout/PanelDialog.js.map +1 -0
- package/dist/ssr/layout/PanelHeader.js +45 -0
- package/dist/ssr/layout/PanelHeader.js.map +1 -0
- package/dist/ssr/layout/Panes.js +678 -0
- package/dist/ssr/layout/Panes.js.map +1 -0
- package/dist/ssr/layout/ScrollArea.js +18 -0
- package/dist/ssr/layout/ScrollArea.js.map +1 -0
- package/dist/ssr/layout/Settings.js +219 -0
- package/dist/ssr/layout/Settings.js.map +1 -0
- package/dist/ssr/layout/SettingsCollection.js +150 -0
- package/dist/ssr/layout/SettingsCollection.js.map +1 -0
- package/dist/ssr/layout/SettingsModal.js +156 -0
- package/dist/ssr/layout/SettingsModal.js.map +1 -0
- package/dist/ssr/layout/app-workspace-controller.js +419 -0
- package/dist/ssr/layout/app-workspace-controller.js.map +1 -0
- package/dist/ssr/layout/app-workspace-state.js +125 -0
- package/dist/ssr/layout/app-workspace-state.js.map +1 -0
- package/dist/ssr/layout/floating-window-geometry.js +15 -0
- package/dist/ssr/layout/floating-window-geometry.js.map +1 -0
- package/dist/ssr/layout/index.js +17 -0
- package/dist/ssr/layout/index.js.map +1 -0
- package/dist/ssr/layout/panes-layout.js +436 -0
- package/dist/ssr/layout/panes-layout.js.map +1 -0
- package/dist/ssr/layout/stable-id.js +17 -0
- package/dist/ssr/layout/stable-id.js.map +1 -0
- package/dist/ssr/semantics.js +2 -0
- package/dist/ssr/semantics.js.map +1 -0
- package/dist/ssr/surfaces/Avatar.js +43 -0
- package/dist/ssr/surfaces/Avatar.js.map +1 -0
- package/dist/ssr/surfaces/DescriptionList.js +25 -0
- package/dist/ssr/surfaces/DescriptionList.js.map +1 -0
- package/dist/ssr/surfaces/LinkCard.js +25 -0
- package/dist/ssr/surfaces/LinkCard.js.map +1 -0
- package/dist/ssr/surfaces/NotFoundState.js +38 -0
- package/dist/ssr/surfaces/NotFoundState.js.map +1 -0
- package/dist/ssr/surfaces/NoticeCard.js +83 -0
- package/dist/ssr/surfaces/NoticeCard.js.map +1 -0
- package/dist/ssr/surfaces/Paper.js +32 -0
- package/dist/ssr/surfaces/Paper.js.map +1 -0
- package/dist/ssr/surfaces/Placeholder.js +76 -0
- package/dist/ssr/surfaces/Placeholder.js.map +1 -0
- package/dist/ssr/surfaces/ProgressBar.js +13 -0
- package/dist/ssr/surfaces/ProgressBar.js.map +1 -0
- package/dist/ssr/surfaces/StatCell.js +80 -0
- package/dist/ssr/surfaces/StatCell.js.map +1 -0
- package/dist/ssr/surfaces/StatGrid.js +62 -0
- package/dist/ssr/surfaces/StatGrid.js.map +1 -0
- package/dist/ssr/surfaces/StatusBadge.js +38 -0
- package/dist/ssr/surfaces/StatusBadge.js.map +1 -0
- package/dist/ssr/surfaces/Tag.js +32 -0
- package/dist/ssr/surfaces/Tag.js.map +1 -0
- package/dist/ssr/surfaces/index.js +13 -0
- package/dist/ssr/surfaces/index.js.map +1 -0
- package/dist/ssr/widgets/Widget.js +54 -0
- package/dist/ssr/widgets/Widget.js.map +1 -0
- package/dist/ssr/widgets/WidgetHero.js +23 -0
- package/dist/ssr/widgets/WidgetHero.js.map +1 -0
- package/dist/ssr/widgets/WidgetList.js +73 -0
- package/dist/ssr/widgets/WidgetList.js.map +1 -0
- package/dist/ssr/widgets/WidgetPills.js +40 -0
- package/dist/ssr/widgets/WidgetPills.js.map +1 -0
- package/dist/ssr/widgets/WidgetStat.js +45 -0
- package/dist/ssr/widgets/WidgetStat.js.map +1 -0
- package/dist/ssr/widgets/WidgetStatus.js +23 -0
- package/dist/ssr/widgets/WidgetStatus.js.map +1 -0
- package/dist/ssr/widgets/index.js +7 -0
- package/dist/ssr/widgets/index.js.map +1 -0
- package/dist/styles.css +1 -0
- package/dist/tabler-icons-q30jt7jk.woff2 +0 -0
- package/dist/tabler.css +4 -0
- package/package.json +77 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["dnd","createEffect","createMemo","createSignal","createUniqueId","For","onCleanup","onMount","Show","useUiMessages","activatePanesItem","applyPanesIntent","getPanesDropTargets","PANES_MAX_ID_LENGTH","PANES_MIN_RATIO","parsePanesLayout","resizePanesSplit","samePanesIntent","assertUniqueStableUiIds","PANES_RESIZE_SNAP_DISTANCE","PANES_RESIZE_UNSNAP_DISTANCE","PANES_RESIZE_NEIGHBOR_GAP","intervalGap","left","right","crossEnd","crossStart","resolvePanesResizeSnap","coordinate","source","candidates","options","neighbors","filter","candidate","gap","activeCoordinate","active","undefined","find","Math","abs","snappedTo","previous","previousCoordinate","winner","winnerDistance","Number","POSITIVE_INFINITY","distanceToRange","min","max","distanceToCoordinate","indexPanesDropTargets","targets","mutable","Map","target","indexed","get","targetItemId","tabs","body","set","kind","beforeItemId","push","iconClass","icon","value","trim","startsWith","collectLayoutItemIds","node","ids","type","items","first","second","nearestDroppable","entries","reduce","entry","distance","pointerHitsPanesDropTarget","pointer","hitElement","element","contains","side","meta","containsPointer","x","rect","y","top","width","corner","height","panesCollisionDetector","context","mode","document","droppables","ownerDocument","elementFromPoint","id","createItemMap","map","item","requireItem","Error","Panes","props","messages","instanceId","layout","root","canMove","movable","canResize","resizable","split","draggedItemId","setDraggedItemId","dragMode","setDragMode","dropTargets","itemId","dropTargetIndex","paneDnd","create","collisionDetector","buildIntent","over","intent","isSameIntent","onDragStart","announcements","dragStart","label","dragOver","drop","cancel","onDrop","current","next","onLayoutChange","queueMicrotask","getElementById","focus","onCancel","activate","requestAdd","onAddItem","_$ssr","_tmpl$","_$escape","class","_$ssrAttribute","ariaLabel","paneWorkspace","_$createComponent","when","fallback","_tmpl$3","children","_tmpl$2","addPane","PanesNodeRenderer","path","itemById","addItem","canAdd","onActivate","group","PanesSplitRenderer","_$mergeProps","PanesGroupRenderer","container","separatorElement","stopResize","finishResize","stopActiveResize","finishActiveResize","commitRatio","ratio","resizeGeometry","separator","direction","containerRect","getBoundingClientRect","separatorRect","extent","separatorExtent","availableExtent","geometry","bottom","panes","closest","Array","from","querySelectorAll","origin","coordinateForRatio","ratioForCoordinate","startResize","event","preventDefault","pointerId","captureTarget","currentTarget","start","clientX","clientY","startRatio","startCoordinate","frame","pendingRatio","flush","cancelAnimationFrame","onMove","move","snapped","requestAnimationFrame","onEnd","end","window","removeEventListener","hasPointerCapture","releasePointerCapture","setPointerCapture","addEventListener","onResizeKeyDown","step","shiftKey","key","_tmpl$4","_$ssrStyleProperty","round","resizePanes","ActivePane","render","tabsElement","scrollbarDragOffset","stopTabPress","suppressedPointerClick","clearSuppressedPointerClick","dndInstanceId","draggableId","itemIds","groupTargets","index","targetBefore","targetAtEnd","bodyTargets","startTabPress","button","isPrimary","ownerWindow","stop","onPointerUp","onPointerCancel","up","releasedInside","shouldActivate","isDragging","clearTimeout","setTimeout","scrollbar","setScrollbar","overflow","syncScrollbar","clientWidth","scrollLeft","scrollWidth","scrollFromPointer","track","available","thumbLeft","startScrollbarDrag","observer","ResizeObserver","observe","disconnect","length","tabId","panelId","focusTab","onTabKeyDown","activeId","onClose","count","targetLabel","targetItem","addToNamed","name","title","before","insertBeforeNamed","insertAtEnd","addPaneSide","_tmpl$8","paneTabs","each","_tmpl$0","PanesDropTargetView","placement","_tmpl$9","closeNamed","_tmpl$5","_tmpl$6","keyed","_tmpl$7","_tmpl$10","overId","_tmpl$11","_tmpl$1"],"sources":["layout/Panes.tsx"],"sourcesContent":["import { type DndCollisionContext, type DndController, type DndDroppableSnapshot, dnd } from \"@k2b/stdlib/solid\";\nimport { createEffect, createMemo, createSignal, createUniqueId, For, type JSX, onCleanup, onMount, Show } from \"solid-js\";\nimport { useUiMessages } from \"../intl/messages\";\nimport {\n activatePanesItem,\n applyPanesIntent,\n getPanesDropTargets,\n PANES_MAX_ID_LENGTH,\n PANES_MIN_RATIO,\n type PanesDropTarget,\n type PanesGroup,\n type PanesIntent,\n type PanesLayout,\n type PanesNode,\n type PanesPath,\n type PanesSplit,\n parsePanesLayout,\n resizePanesSplit,\n samePanesIntent,\n} from \"./panes-layout\";\nimport { assertUniqueStableUiIds } from \"./stable-id\";\n\nexport type PanesItem = {\n id: string;\n title: string;\n icon?: string;\n render: () => JSX.Element;\n onClose?: () => void;\n};\n\nexport type PanesProps = {\n layout: PanesLayout;\n onLayoutChange: (layout: PanesLayout) => void;\n items: readonly PanesItem[];\n movable?: boolean;\n resizable?: boolean;\n split?: false | \"horizontal\" | \"vertical\" | \"both\";\n onAddItem?: (targetItemId: string | null) => void;\n ariaLabel?: string;\n class?: string;\n};\n\ntype DragMeta = { itemId: string; label: string };\ntype DropMeta = { target: PanesDropTarget; label: string };\ntype PaneDnd = DndController<DragMeta, DropMeta, PanesIntent>;\n\ntype IndexedPanesDropTargets = {\n tabs: ReadonlyMap<string | null, PanesDropTarget>;\n body: readonly PanesDropTarget[];\n};\n\ntype PanesSeparatorGeometry = {\n coordinate: number;\n crossStart: number;\n crossEnd: number;\n};\n\nconst PANES_RESIZE_SNAP_DISTANCE = 8;\nconst PANES_RESIZE_UNSNAP_DISTANCE = 12;\nconst PANES_RESIZE_NEIGHBOR_GAP = 16;\n\nconst intervalGap = (left: PanesSeparatorGeometry, right: PanesSeparatorGeometry): number =>\n left.crossEnd < right.crossStart\n ? right.crossStart - left.crossEnd\n : right.crossEnd < left.crossStart\n ? left.crossStart - right.crossEnd\n : 0;\n\nexport const resolvePanesResizeSnap = (\n coordinate: number,\n source: PanesSeparatorGeometry,\n candidates: readonly PanesSeparatorGeometry[],\n options: { activeCoordinate?: number | null; previousCoordinate?: number } = {},\n): { coordinate: number; snappedTo: number | null } => {\n const neighbors = candidates.filter((candidate) => {\n const gap = intervalGap(source, candidate);\n return gap > 0 && gap <= PANES_RESIZE_NEIGHBOR_GAP;\n });\n const activeCoordinate = options.activeCoordinate;\n const active =\n activeCoordinate === null || activeCoordinate === undefined\n ? null\n : neighbors.find((candidate) => Math.abs(candidate.coordinate - activeCoordinate) < 0.5);\n if (active && Math.abs(coordinate - active.coordinate) <= PANES_RESIZE_UNSNAP_DISTANCE) {\n return { coordinate: active.coordinate, snappedTo: active.coordinate };\n }\n\n const previous = options.previousCoordinate;\n let winner: PanesSeparatorGeometry | null = null;\n let winnerDistance = Number.POSITIVE_INFINITY;\n for (const candidate of neighbors) {\n if (previous !== undefined && Math.abs(candidate.coordinate - previous) < 0.5) continue;\n const distanceToRange =\n previous === undefined ||\n candidate.coordinate < Math.min(previous, coordinate) ||\n candidate.coordinate > Math.max(previous, coordinate)\n ? Math.abs(candidate.coordinate - coordinate)\n : 0;\n const distanceToCoordinate = Math.abs(candidate.coordinate - coordinate);\n if (distanceToRange <= PANES_RESIZE_SNAP_DISTANCE && distanceToCoordinate < winnerDistance) {\n winner = candidate;\n winnerDistance = distanceToCoordinate;\n }\n }\n return winner ? { coordinate: winner.coordinate, snappedTo: winner.coordinate } : { coordinate, snappedTo: null };\n};\n\nexport const indexPanesDropTargets = (targets: readonly PanesDropTarget[]): ReadonlyMap<string, IndexedPanesDropTargets> => {\n const mutable = new Map<string, { tabs: Map<string | null, PanesDropTarget>; body: PanesDropTarget[] }>();\n for (const target of targets) {\n let indexed = mutable.get(target.targetItemId);\n if (!indexed) {\n indexed = { tabs: new Map(), body: [] };\n mutable.set(target.targetItemId, indexed);\n }\n if (target.kind === \"tab\") indexed.tabs.set(target.beforeItemId ?? null, target);\n else indexed.body.push(target);\n }\n return mutable;\n};\n\nconst iconClass = (icon: string | undefined): string => {\n const value = icon?.trim() || \"ti-layout-sidebar-right\";\n return value.startsWith(\"ti \") ? value : `ti ${value}`;\n};\n\nconst collectLayoutItemIds = (node: PanesNode | null, ids: string[] = []): string[] => {\n if (!node) return ids;\n if (node.type === \"group\") ids.push(...node.items);\n else {\n collectLayoutItemIds(node.first, ids);\n collectLayoutItemIds(node.second, ids);\n }\n return ids;\n};\n\nconst nearestDroppable = (entries: DndDroppableSnapshot<DropMeta>[]): DndDroppableSnapshot<DropMeta> | null =>\n entries.reduce<DndDroppableSnapshot<DropMeta> | null>(\n (winner, entry) => (!winner || entry.distance < winner.distance ? entry : winner),\n null,\n );\n\nexport const pointerHitsPanesDropTarget = (\n entry: Pick<DndDroppableSnapshot<DropMeta>, \"containsPointer\" | \"meta\" | \"rect\"> &\n Partial<Pick<DndDroppableSnapshot<DropMeta>, \"element\">>,\n pointer: { x: number; y: number },\n hitElement?: Element | null,\n): boolean => {\n if (hitElement !== undefined && !entry.element?.contains(hitElement)) return false;\n const side = entry.meta.target.side;\n if (entry.meta.target.kind !== \"split\" || !side) return entry.containsPointer;\n if (!entry.containsPointer) return false;\n const x = pointer.x - entry.rect.left;\n const y = pointer.y - entry.rect.top;\n if (side === \"top\") return x >= y && x <= entry.rect.width - y;\n if (side === \"bottom\") {\n const corner = entry.rect.height - y;\n return x >= corner && x <= entry.rect.width - corner;\n }\n if (side === \"left\") return y >= x && y <= entry.rect.height - x;\n const corner = entry.rect.width - x;\n return y >= corner && y <= entry.rect.height - corner;\n};\n\nconst panesCollisionDetector = (\n context: DndCollisionContext<DragMeta, DropMeta, PanesIntent>,\n mode: \"pointer\" | \"keyboard\" | null,\n): string | null => {\n const document = mode === \"pointer\" ? context.droppables[0]?.element.ownerDocument : undefined;\n const hitElement = document?.elementFromPoint(context.pointer.x, context.pointer.y) ?? undefined;\n return nearestDroppable(context.droppables.filter((entry) => pointerHitsPanesDropTarget(entry, context.pointer, hitElement)))?.id ?? null;\n};\n\nconst createItemMap = (items: readonly PanesItem[]): Map<string, PanesItem> => {\n assertUniqueStableUiIds(\n items.map((item) => item.id),\n \"Panes item id\",\n PANES_MAX_ID_LENGTH,\n );\n return new Map(items.map((item) => [item.id, item]));\n};\n\nconst requireItem = (items: Map<string, PanesItem>, id: string): PanesItem => {\n const item = items.get(id);\n if (!item) throw new Error(`Panes layout references missing item \"${id}\".`);\n return item;\n};\n\nexport default function Panes(props: PanesProps): JSX.Element {\n const messages = useUiMessages();\n const instanceId = `k2b-panes-${createUniqueId()}`;\n const items = createMemo(() => createItemMap(props.items));\n const layout = createMemo(() => {\n if (!parsePanesLayout(props.layout)) throw new Error(\"Panes layout must be a valid version 2 layout.\");\n for (const id of collectLayoutItemIds(props.layout.root)) requireItem(items(), id);\n return props.layout;\n });\n const canMove = () => props.movable ?? true;\n const canResize = () => props.resizable ?? true;\n const split = () => props.split ?? \"both\";\n const [draggedItemId, setDraggedItemId] = createSignal<string | null>(null);\n const [dragMode, setDragMode] = createSignal<\"pointer\" | \"keyboard\" | null>(null);\n const dropTargets = createMemo(() => {\n const itemId = draggedItemId();\n return itemId ? getPanesDropTargets(layout(), itemId, { movable: canMove(), split: split() }) : [];\n });\n const dropTargetIndex = createMemo(() => indexPanesDropTargets(dropTargets()));\n const paneDnd = dnd.create<DragMeta, DropMeta, PanesIntent>({\n collisionDetector: (context) => panesCollisionDetector(context, dragMode()),\n buildIntent: ({ over }) => over?.meta.target.intent ?? null,\n isSameIntent: samePanesIntent,\n onDragStart: ({ active, mode }) => {\n setDragMode(mode);\n setDraggedItemId(active.meta.itemId);\n },\n announcements: {\n dragStart: (active) => `Picked up ${active.meta.label}.`,\n dragOver: (active, over) => (over ? `Move ${active.meta.label} to ${over.meta.label}.` : `${active.meta.label} is not over a pane.`),\n drop: (active, over) => (over ? `Moved ${active.meta.label} to ${over.meta.label}.` : `Did not move ${active.meta.label}.`),\n cancel: (active) => `Cancelled moving ${active.meta.label}.`,\n },\n onDrop: ({ intent, mode }) => {\n setDragMode(null);\n setDraggedItemId(null);\n if (!intent) return;\n const current = layout();\n const next = applyPanesIntent(current, intent);\n if (next === current) return;\n props.onLayoutChange(next);\n if (mode === \"keyboard\") queueMicrotask(() => document.getElementById(`${instanceId}-${intent.itemId}-tab`)?.focus());\n },\n onCancel: () => {\n setDragMode(null);\n setDraggedItemId(null);\n },\n });\n const activate = (itemId: string) => {\n const current = layout();\n const next = activatePanesItem(current, itemId);\n if (next !== current) props.onLayoutChange(next);\n };\n const requestAdd = (targetItemId: string | null) => props.onAddItem?.(targetItemId);\n\n return (\n <div class={`k2b-panes ${props.class ?? \"\"}`} data-k2b-panes role=\"group\" aria-label={props.ariaLabel ?? messages().paneWorkspace}>\n <Show\n when={layout().root}\n fallback={\n <div class=\"k2b-panes__empty\">\n <Show when={props.onAddItem !== undefined}>\n <button type=\"button\" class=\"k2b-panes__add\" onClick={() => requestAdd(null)} aria-label={messages().addPane}>\n <i class=\"ti ti-plus\" aria-hidden=\"true\" />\n <span>{messages().addPane}</span>\n </button>\n </Show>\n </div>\n }\n >\n {(root) => (\n <PanesNodeRenderer\n node={root}\n path={[]}\n layout={layout}\n itemById={items}\n dnd={paneDnd}\n dropTargetIndex={dropTargetIndex}\n instanceId={instanceId}\n canMove={canMove}\n canResize={canResize}\n addItem={requestAdd}\n canAdd={() => props.onAddItem !== undefined}\n onActivate={activate}\n onLayoutChange={props.onLayoutChange}\n />\n )}\n </Show>\n </div>\n );\n}\n\ntype RendererProps = {\n node: () => PanesNode;\n path: PanesPath;\n layout: () => PanesLayout;\n itemById: () => Map<string, PanesItem>;\n dnd: PaneDnd;\n dropTargetIndex: () => ReadonlyMap<string, IndexedPanesDropTargets>;\n instanceId: string;\n canMove: () => boolean;\n canResize: () => boolean;\n addItem: (targetItemId: string | null) => void;\n canAdd: () => boolean;\n onActivate: (itemId: string) => void;\n onLayoutChange: (layout: PanesLayout) => void;\n};\n\nfunction PanesNodeRenderer(props: RendererProps): JSX.Element {\n const split = createMemo(() => {\n const node = props.node();\n return node.type === \"split\" ? node : null;\n });\n const group = createMemo(() => {\n const node = props.node();\n return node.type === \"group\" ? node : null;\n });\n return (\n <>\n <Show when={split()}>{(node) => <PanesSplitRenderer {...props} node={node} />}</Show>\n <Show when={group()}>{(node) => <PanesGroupRenderer {...props} node={node} />}</Show>\n </>\n );\n}\n\nfunction PanesSplitRenderer(props: Omit<RendererProps, \"node\"> & { node: () => PanesSplit }): JSX.Element {\n const messages = useUiMessages();\n let container: HTMLDivElement | undefined;\n let separatorElement: HTMLButtonElement | undefined;\n let stopResize: (() => void) | undefined;\n let finishResize: (() => void) | undefined;\n const stopActiveResize = () => {\n stopResize?.();\n stopResize = undefined;\n finishResize = undefined;\n };\n const finishActiveResize = () => {\n finishResize?.();\n stopResize = undefined;\n finishResize = undefined;\n };\n onCleanup(stopActiveResize);\n const commitRatio = (ratio: number) => {\n const current = props.layout();\n const next = resizePanesSplit(current, props.path, ratio);\n if (next !== current) props.onLayoutChange(next);\n };\n const resizeGeometry = (separator: HTMLElement | undefined) => {\n if (!separator) return null;\n const direction = props.node().direction;\n const containerRect = container?.getBoundingClientRect();\n const separatorRect = separator.getBoundingClientRect();\n const extent = direction === \"horizontal\" ? (containerRect?.width ?? 0) : (containerRect?.height ?? 0);\n const separatorExtent = direction === \"horizontal\" ? separatorRect.width : separatorRect.height;\n const availableExtent = extent - separatorExtent;\n if (!containerRect || availableExtent <= 0 || separatorRect.width <= 0 || separatorRect.height <= 0) return null;\n const geometry = (rect: DOMRect): PanesSeparatorGeometry =>\n direction === \"horizontal\"\n ? { coordinate: rect.left + rect.width / 2, crossStart: rect.top, crossEnd: rect.bottom }\n : { coordinate: rect.top + rect.height / 2, crossStart: rect.left, crossEnd: rect.right };\n const panes = separator.closest<HTMLElement>(\"[data-k2b-panes]\");\n const candidates = panes\n ? Array.from(panes.querySelectorAll<HTMLElement>(`.k2b-panes__separator[data-direction=\"${direction}\"]`))\n .filter((candidate) => candidate !== separator && candidate.closest(\"[data-k2b-panes]\") === panes)\n .map((candidate) => candidate.getBoundingClientRect())\n .filter((rect) => rect.width > 0 && rect.height > 0)\n .map(geometry)\n : [];\n const origin = direction === \"horizontal\" ? containerRect.left + separatorExtent / 2 : containerRect.top + separatorExtent / 2;\n return {\n source: geometry(separatorRect),\n candidates,\n coordinateForRatio: (ratio: number) => origin + availableExtent * ratio,\n ratioForCoordinate: (coordinate: number) => (coordinate - origin) / availableExtent,\n };\n };\n const startResize = (event: PointerEvent) => {\n if (!props.canResize()) return;\n event.preventDefault();\n stopActiveResize();\n const pointerId = event.pointerId;\n const captureTarget = (event.currentTarget as HTMLElement | null) ?? separatorElement;\n if (!captureTarget) return;\n const start = props.node().direction === \"horizontal\" ? event.clientX : event.clientY;\n const geometry = resizeGeometry(captureTarget);\n const startRatio = props.node().ratio;\n const startCoordinate = geometry?.source.coordinate;\n const rect = container?.getBoundingClientRect();\n const extent = Math.max(1, props.node().direction === \"horizontal\" ? (rect?.width ?? 1) : (rect?.height ?? 1));\n let snappedTo: number | null = null;\n let frame: number | undefined;\n let pendingRatio: number | undefined;\n const flush = () => {\n if (frame !== undefined) cancelAnimationFrame(frame);\n frame = undefined;\n if (pendingRatio === undefined) return;\n const ratio = pendingRatio;\n pendingRatio = undefined;\n commitRatio(ratio);\n };\n const onMove = (move: PointerEvent) => {\n if (move.pointerId !== pointerId) return;\n const current = props.node().direction === \"horizontal\" ? move.clientX : move.clientY;\n if (geometry && startCoordinate !== undefined) {\n const snapped = resolvePanesResizeSnap(startCoordinate + current - start, geometry.source, geometry.candidates, {\n activeCoordinate: snappedTo,\n });\n snappedTo = snapped.snappedTo;\n pendingRatio = geometry.ratioForCoordinate(snapped.coordinate);\n } else {\n pendingRatio = startRatio + (current - start) / extent;\n }\n if (frame === undefined) frame = requestAnimationFrame(flush);\n };\n const onEnd = (end: PointerEvent) => {\n if (end.pointerId === pointerId) finishActiveResize();\n };\n stopResize = () => {\n if (frame !== undefined) cancelAnimationFrame(frame);\n frame = undefined;\n pendingRatio = undefined;\n window.removeEventListener(\"pointermove\", onMove);\n window.removeEventListener(\"pointerup\", onEnd);\n window.removeEventListener(\"pointercancel\", onEnd);\n window.removeEventListener(\"blur\", finishActiveResize);\n if (captureTarget.hasPointerCapture?.(pointerId)) captureTarget.releasePointerCapture(pointerId);\n };\n finishResize = () => {\n flush();\n stopResize?.();\n };\n captureTarget.setPointerCapture?.(pointerId);\n window.addEventListener(\"pointermove\", onMove);\n window.addEventListener(\"pointerup\", onEnd);\n window.addEventListener(\"pointercancel\", onEnd);\n window.addEventListener(\"blur\", finishActiveResize);\n };\n const onResizeKeyDown = (event: KeyboardEvent) => {\n if (!props.canResize()) return;\n const step = event.shiftKey ? 0.08 : 0.02;\n let ratio: number | null = null;\n if (event.key === \"Home\") ratio = PANES_MIN_RATIO;\n if (event.key === \"End\") ratio = 1 - PANES_MIN_RATIO;\n if (props.node().direction === \"horizontal\" && event.key === \"ArrowLeft\") ratio = props.node().ratio - step;\n if (props.node().direction === \"horizontal\" && event.key === \"ArrowRight\") ratio = props.node().ratio + step;\n if (props.node().direction === \"vertical\" && event.key === \"ArrowUp\") ratio = props.node().ratio - step;\n if (props.node().direction === \"vertical\" && event.key === \"ArrowDown\") ratio = props.node().ratio + step;\n if (ratio === null) return;\n event.preventDefault();\n const geometry = resizeGeometry((event.currentTarget as HTMLElement | null) ?? separatorElement);\n if (geometry) {\n const snapped = resolvePanesResizeSnap(geometry.coordinateForRatio(ratio), geometry.source, geometry.candidates, {\n previousCoordinate: geometry.source.coordinate,\n });\n ratio = geometry.ratioForCoordinate(snapped.coordinate);\n }\n commitRatio(ratio);\n };\n return (\n <div ref={container} class=\"k2b-panes__split\" data-direction={props.node().direction}>\n <div class=\"k2b-panes__split-child\" style={{ flex: `${props.node().ratio} 1 0` }}>\n <PanesNodeRenderer {...props} node={() => props.node().first} path={[...props.path, \"first\"]} />\n </div>\n <button\n ref={separatorElement}\n type=\"button\"\n role=\"separator\"\n aria-orientation={props.node().direction === \"horizontal\" ? \"vertical\" : \"horizontal\"}\n aria-valuemin={Math.round(PANES_MIN_RATIO * 100)}\n aria-valuemax={Math.round((1 - PANES_MIN_RATIO) * 100)}\n aria-valuenow={Math.round(props.node().ratio * 100)}\n aria-disabled={!props.canResize()}\n tabIndex={props.canResize() ? 0 : -1}\n class=\"k2b-panes__separator\"\n data-direction={props.node().direction}\n aria-label={messages().resizePanes}\n onPointerDown={startResize}\n onKeyDown={onResizeKeyDown}\n >\n <span aria-hidden=\"true\" />\n </button>\n <div class=\"k2b-panes__split-child\" style={{ flex: `${1 - props.node().ratio} 1 0` }}>\n <PanesNodeRenderer {...props} node={() => props.node().second} path={[...props.path, \"second\"]} />\n </div>\n </div>\n );\n}\n\nfunction ActivePane(props: { itemId: string; itemById: () => Map<string, PanesItem> }): JSX.Element {\n return requireItem(props.itemById(), props.itemId).render();\n}\n\nfunction PanesGroupRenderer(props: Omit<RendererProps, \"node\"> & { node: () => PanesGroup }): JSX.Element {\n const messages = useUiMessages();\n let tabsElement: HTMLDivElement | undefined;\n let scrollbarDragOffset = 0;\n let stopTabPress: (() => void) | undefined;\n let suppressedPointerClick: string | null = null;\n let clearSuppressedPointerClick: number | undefined;\n const dndInstanceId = createUniqueId();\n const draggableId = (id: string) => `panes-item:${dndInstanceId}:${id}`;\n const itemIds = createMemo(() => props.node().items);\n const groupTargets = createMemo<IndexedPanesDropTargets | null>(() => {\n const index = props.dropTargetIndex();\n for (const itemId of itemIds()) {\n const indexed = index.get(itemId);\n if (indexed) return indexed;\n }\n return null;\n });\n const targetBefore = (itemId: string) => groupTargets()?.tabs.get(itemId);\n const targetAtEnd = () => groupTargets()?.tabs.get(null);\n const bodyTargets = () => groupTargets()?.body ?? [];\n const startTabPress = (event: PointerEvent & { currentTarget: HTMLButtonElement }, itemId: string) => {\n if (event.button !== 0 || event.isPrimary === false) return;\n stopTabPress?.();\n const pointerId = event.pointerId;\n const button = event.currentTarget;\n const ownerWindow = window;\n const stop = () => {\n ownerWindow.removeEventListener(\"pointerup\", onPointerUp, true);\n ownerWindow.removeEventListener(\"pointercancel\", onPointerCancel, true);\n if (stopTabPress === stop) stopTabPress = undefined;\n };\n const onPointerUp = (up: PointerEvent) => {\n if (up.pointerId !== pointerId) return;\n const rect = button.getBoundingClientRect();\n const releasedInside = up.clientX >= rect.left && up.clientX <= rect.right && up.clientY >= rect.top && up.clientY <= rect.bottom;\n const shouldActivate = releasedInside && !props.dnd.isDragging();\n stop();\n if (!shouldActivate) return;\n suppressedPointerClick = itemId;\n if (clearSuppressedPointerClick !== undefined) ownerWindow.clearTimeout(clearSuppressedPointerClick);\n clearSuppressedPointerClick = ownerWindow.setTimeout(() => {\n if (suppressedPointerClick === itemId) suppressedPointerClick = null;\n clearSuppressedPointerClick = undefined;\n }, 0);\n props.onActivate(itemId);\n };\n const onPointerCancel = (cancel: PointerEvent) => {\n if (cancel.pointerId === pointerId) stop();\n };\n stopTabPress = stop;\n ownerWindow.addEventListener(\"pointerup\", onPointerUp, true);\n ownerWindow.addEventListener(\"pointercancel\", onPointerCancel, true);\n };\n onCleanup(() => {\n stopTabPress?.();\n if (clearSuppressedPointerClick !== undefined) window.clearTimeout(clearSuppressedPointerClick);\n });\n const [scrollbar, setScrollbar] = createSignal({ overflow: false, left: 0, width: 0 });\n const syncScrollbar = () => {\n if (!tabsElement) return;\n const { clientWidth, scrollLeft, scrollWidth } = tabsElement;\n if (scrollWidth <= clientWidth || clientWidth <= 0) {\n setScrollbar({ overflow: false, left: 0, width: 0 });\n return;\n }\n const width = Math.min(clientWidth, Math.max(24, (clientWidth * clientWidth) / scrollWidth));\n const left = (scrollLeft / (scrollWidth - clientWidth)) * (clientWidth - width);\n setScrollbar({ overflow: true, left, width });\n };\n const scrollFromPointer = (event: PointerEvent & { currentTarget: HTMLDivElement }) => {\n if (!tabsElement) return;\n const track = event.currentTarget;\n const { left, width } = scrollbar();\n const rect = track.getBoundingClientRect();\n const available = Math.max(1, rect.width - width);\n const thumbLeft = Math.min(available, Math.max(0, event.clientX - rect.left - scrollbarDragOffset));\n tabsElement.scrollLeft = (thumbLeft / available) * (tabsElement.scrollWidth - tabsElement.clientWidth);\n syncScrollbar();\n };\n const startScrollbarDrag = (event: PointerEvent & { currentTarget: HTMLDivElement }) => {\n event.preventDefault();\n const track = event.currentTarget;\n const current = scrollbar();\n scrollbarDragOffset =\n event.target === track\n ? current.width / 2\n : Math.min(current.width, Math.max(0, event.clientX - track.getBoundingClientRect().left - current.left));\n track.setPointerCapture(event.pointerId);\n scrollFromPointer(event);\n };\n onMount(() => {\n syncScrollbar();\n const observer = typeof ResizeObserver === \"undefined\" ? null : new ResizeObserver(syncScrollbar);\n if (tabsElement) observer?.observe(tabsElement);\n onCleanup(() => observer?.disconnect());\n });\n createEffect(() => {\n itemIds().length;\n props.itemById();\n groupTargets();\n props.canAdd();\n queueMicrotask(syncScrollbar);\n });\n const tabId = (itemId: string) => `${props.instanceId}-${itemId}-tab`;\n const panelId = (itemId: string) => `${props.instanceId}-${itemId}-panel`;\n const focusTab = (index: number) => {\n const itemId = itemIds()[index];\n if (!itemId) return;\n props.onActivate(itemId);\n queueMicrotask(() => document.getElementById(tabId(itemId))?.focus());\n };\n const onTabKeyDown = (event: KeyboardEvent, index: number, itemId: string) => {\n if (props.dnd.activeId() === draggableId(itemId)) return;\n const item = requireItem(props.itemById(), itemId);\n if ((event.key === \"Delete\" || event.key === \"Backspace\") && item.onClose) {\n event.preventDefault();\n item.onClose();\n return;\n }\n const count = itemIds().length;\n let next: number | null = null;\n if (event.key === \"ArrowLeft\") next = (index - 1 + count) % count;\n if (event.key === \"ArrowRight\") next = (index + 1) % count;\n if (event.key === \"Home\") next = 0;\n if (event.key === \"End\") next = count - 1;\n if (next === null) return;\n event.preventDefault();\n focusTab(next);\n };\n const targetLabel = (target: PanesDropTarget): string => {\n const targetItem = requireItem(props.itemById(), target.targetItemId);\n if (target.kind === \"group\") return messages().addToNamed({ name: targetItem.title });\n if (target.kind === \"tab\") {\n const before = target.beforeItemId ? requireItem(props.itemById(), target.beforeItemId) : null;\n return before ? messages().insertBeforeNamed({ name: before.title }) : messages().insertAtEnd;\n }\n return target.side\n ? messages().addPaneSide({ side: target.side, name: targetItem.title })\n : messages().addToNamed({ name: targetItem.title });\n };\n return (\n <section class=\"k2b-panes__group\">\n <div\n ref={tabsElement}\n class=\"k2b-panes__tabs\"\n role=\"tablist\"\n aria-label={messages().paneTabs}\n aria-orientation=\"horizontal\"\n onScroll={syncScrollbar}\n >\n <For each={itemIds()}>\n {(itemId, index) => {\n const item = () => requireItem(props.itemById(), itemId);\n const active = () => props.node().active === itemId;\n return (\n <div\n ref={(surface) =>\n props.dnd.draggable(surface, () => ({\n id: draggableId(itemId),\n meta: { itemId, label: item().title },\n disabled: !props.canMove(),\n focusable: false,\n keyboard: true,\n handleSelector: \".k2b-panes__tab-button\",\n }))\n }\n class=\"k2b-panes__tab\"\n data-active={active() ? \"true\" : undefined}\n data-closable={item().onClose !== undefined ? \"true\" : undefined}\n data-movable={props.canMove() ? \"true\" : undefined}\n data-dnd-active={props.dnd.activeId() === draggableId(itemId) ? \"true\" : undefined}\n >\n <Show when={targetBefore(itemId)}>\n {(target) => <PanesDropTargetView target={target()} label={targetLabel(target())} dnd={props.dnd} placement=\"tab\" />}\n </Show>\n <button\n id={tabId(itemId)}\n type=\"button\"\n class=\"k2b-panes__tab-button\"\n role=\"tab\"\n aria-label={item().title}\n aria-selected={active()}\n aria-controls={active() ? panelId(itemId) : undefined}\n aria-posinset={index() + 1}\n aria-setsize={itemIds().length}\n aria-keyshortcuts={item().onClose ? \"Delete Backspace\" : undefined}\n tabIndex={active() ? 0 : -1}\n title={item().title}\n onPointerDown={(event) => startTabPress(event, itemId)}\n onClick={(event) => {\n if (event?.detail > 0 && suppressedPointerClick === itemId) {\n suppressedPointerClick = null;\n if (clearSuppressedPointerClick !== undefined) {\n window.clearTimeout(clearSuppressedPointerClick);\n clearSuppressedPointerClick = undefined;\n }\n return;\n }\n props.onActivate(itemId);\n }}\n onKeyDown={(event) => onTabKeyDown(event, index(), itemId)}\n >\n <span class=\"k2b-ui k2b-panes__drag-surface k2b-panes__drag-preview\" data-dnd-preview>\n <i class={`${iconClass(item().icon)} k2b-panes__icon`} aria-hidden=\"true\" />\n <span>{item().title}</span>\n </span>\n </button>\n <Show when={item().onClose !== undefined}>\n <button\n type=\"button\"\n class=\"k2b-panes__close\"\n title={messages().closeNamed({ name: item().title })}\n aria-label={messages().closeNamed({ name: item().title })}\n onPointerDown={(event) => event.stopPropagation()}\n onClick={(event) => {\n event.stopPropagation();\n item().onClose?.();\n }}\n >\n <i class=\"ti ti-x\" aria-hidden=\"true\" />\n </button>\n </Show>\n </div>\n );\n }}\n </For>\n <Show when={targetAtEnd()}>\n {(target) => <PanesDropTargetView target={target()} label={targetLabel(target())} dnd={props.dnd} placement=\"tab-end\" />}\n </Show>\n <Show when={props.canAdd()}>\n <button\n type=\"button\"\n class=\"k2b-panes__add k2b-panes__add--tab\"\n aria-label={messages().addPane}\n title={messages().addPane}\n onClick={() => props.addItem(props.node().active)}\n >\n <i class=\"ti ti-plus\" aria-hidden=\"true\" />\n </button>\n </Show>\n </div>\n <Show when={scrollbar().overflow}>\n <div\n class=\"k2b-panes__tabs-scrollbar\"\n aria-hidden=\"true\"\n onPointerDown={startScrollbarDrag}\n onPointerMove={(event) => {\n if (event.currentTarget.hasPointerCapture(event.pointerId)) scrollFromPointer(event);\n }}\n onPointerUp={(event) => event.currentTarget.releasePointerCapture(event.pointerId)}\n onPointerCancel={(event) => event.currentTarget.releasePointerCapture(event.pointerId)}\n >\n <span\n style={{\n \"--k2b-panes-scroll-left\": `${scrollbar().left}px`,\n \"--k2b-panes-scroll-width\": `${scrollbar().width}px`,\n }}\n />\n </div>\n </Show>\n <div class=\"k2b-panes__body\">\n <div id={panelId(props.node().active)} class=\"k2b-panes__panel\" role=\"tabpanel\" aria-labelledby={tabId(props.node().active)}>\n <Show when={props.node().active} keyed>\n {(itemId) => <ActivePane itemId={itemId} itemById={props.itemById} />}\n </Show>\n </div>\n </div>\n <Show when={bodyTargets().length > 0}>\n <div class=\"k2b-panes__drop-targets\" aria-hidden=\"true\">\n <For each={bodyTargets()}>\n {(target) => <PanesDropTargetView target={target} label={targetLabel(target)} dnd={props.dnd} placement=\"body\" />}\n </For>\n </div>\n </Show>\n </section>\n );\n}\n\nfunction PanesDropTargetView(props: {\n target: PanesDropTarget;\n label: string;\n dnd: PaneDnd;\n placement: \"tab\" | \"tab-end\" | \"body\";\n}): JSX.Element {\n const icon = () => {\n if (props.target.kind === \"group\") return \"ti ti-plus\";\n if (props.target.kind === \"tab\") return props.placement === \"tab\" ? \"ti ti-spacing-horizontal\" : null;\n if (props.target.side === \"top\") return \"ti ti-row-insert-top\";\n if (props.target.side === \"bottom\") return \"ti ti-row-insert-bottom\";\n if (props.target.side === \"left\") return \"ti ti-column-insert-left\";\n return \"ti ti-column-insert-right\";\n };\n return (\n <div\n ref={(element) =>\n props.dnd.droppable(element, () => ({\n id: `panes-target:${props.target.id}`,\n meta: { target: props.target, label: props.label },\n }))\n }\n class=\"k2b-panes__drop-target\"\n data-kind={props.target.kind}\n data-placement={props.placement}\n data-zone={props.target.side}\n data-active={props.dnd.overId() === `panes-target:${props.target.id}` ? \"true\" : undefined}\n title={props.label}\n aria-hidden=\"true\"\n >\n <Show when={icon()} keyed>\n {(iconClass) => <i class={iconClass} aria-hidden=\"true\" />}\n </Show>\n <Show when={props.target.kind === \"split\"}>\n <span>{props.label}</span>\n </Show>\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ssrElement as _$ssrElement } from "solid-js/web";
|
|
2
|
+
import { mergeProps as _$mergeProps } from "solid-js/web";
|
|
3
|
+
import { escape as _$escape } from "solid-js/web";
|
|
4
|
+
import { splitProps } from "solid-js";
|
|
5
|
+
export function ScrollArea(props) {
|
|
6
|
+
const [local, elementProps] = splitProps(props, ["children", "scrollPreserveKey", "class"]);
|
|
7
|
+
const className = () => local.class?.trim();
|
|
8
|
+
return _$ssrElement("div", _$mergeProps(elementProps, {
|
|
9
|
+
get ["class"]() {
|
|
10
|
+
return className() ? `k2b-scroll-area ${className()}` : "k2b-scroll-area";
|
|
11
|
+
},
|
|
12
|
+
get ["data-scroll-preserve"]() {
|
|
13
|
+
return local.scrollPreserveKey || undefined;
|
|
14
|
+
}
|
|
15
|
+
}), _$escape(local.children), false);
|
|
16
|
+
}
|
|
17
|
+
export default ScrollArea;
|
|
18
|
+
//# sourceMappingURL=ScrollArea.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["splitProps","ScrollArea","props","local","elementProps","className","class","trim","_$ssrElement","_$mergeProps","data-scroll-preserve","scrollPreserveKey","undefined","_$escape","children"],"sources":["layout/ScrollArea.tsx"],"sourcesContent":["import { type JSX, splitProps } from \"solid-js\";\n\nexport type ScrollAreaProps = Omit<JSX.HTMLAttributes<HTMLDivElement>, \"children\" | \"class\"> & {\n children: JSX.Element;\n scrollPreserveKey?: string | false;\n class?: string;\n};\n\nexport function ScrollArea(props: ScrollAreaProps): JSX.Element {\n const [local, elementProps] = splitProps(props, [\"children\", \"scrollPreserveKey\", \"class\"]);\n const className = () => local.class?.trim();\n\n return (\n <div\n {...elementProps}\n class={className() ? `k2b-scroll-area ${className()}` : \"k2b-scroll-area\"}\n data-scroll-preserve={local.scrollPreserveKey || undefined}\n >\n {local.children}\n </div>\n );\n}\n\nexport default ScrollArea;\n"],"mappings":";;;AAAA,SAAmBA,UAAU,QAAQ,UAAU;AAQ/C,OAAO,SAASC,UAAUA,CAACC,KAAsB,EAAe;EAC9D,MAAM,CAACC,KAAK,EAAEC,YAAY,CAAC,GAAGJ,UAAU,CAACE,KAAK,EAAE,CAAC,UAAU,EAAE,mBAAmB,EAAE,OAAO,CAAC,CAAC;EAC3F,MAAMG,SAAS,GAAGA,CAAA,KAAMF,KAAK,CAACG,KAAK,EAAEC,IAAI,CAAC,CAAC;EAE3C,OAAAC,YAAA,QAAAC,YAAA,CAEQL,YAAY;IAAA,aAAAE,CAAA;MAAA,OACTD,SAAS,CAAC,CAAC,GAAG,mBAAmBA,SAAS,CAAC,CAAC,EAAE,GAAG,iBAAiB;IAAA;IAAA,4BAAAK,CAAA;MAAA,OACnDP,KAAK,CAACQ,iBAAiB,IAAIC,SAAS;IAAA;EAAA,IAAAC,QAAA,CAEzDV,KAAK,CAACW,QAAQ;AAGrB;AAEA,eAAeb,UAAU","ignoreList":[]}
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import { mergeProps as _$mergeProps } from "solid-js/web";
|
|
2
|
+
import { ssrAttribute as _$ssrAttribute } from "solid-js/web";
|
|
3
|
+
import { ssr as _$ssr } from "solid-js/web";
|
|
4
|
+
import { createComponent as _$createComponent } from "solid-js/web";
|
|
5
|
+
import { ssrStyle as _$ssrStyle } from "solid-js/web";
|
|
6
|
+
import { escape as _$escape } from "solid-js/web";
|
|
7
|
+
var _tmpl$ = ["<p>", "</p>"],
|
|
8
|
+
_tmpl$2 = ["<div class=\"k2b-settings-page__actions\">", "</div>"],
|
|
9
|
+
_tmpl$3 = ["<footer class=\"k2b-settings-page__footer\">", "</footer>"],
|
|
10
|
+
_tmpl$4 = ["<section class=\"", "\" style=\"", "\"><header class=\"k2b-settings-page__header\">", "<div class=\"k2b-settings-page__heading\"><h1>", "</h1>", "</div>", "</header><div class=\"k2b-settings-page__body\"", ">", "</div>", "</section>"],
|
|
11
|
+
_tmpl$5 = ["<i", " aria-hidden=\"true\"></i>"],
|
|
12
|
+
_tmpl$6 = ["<div class=\"k2b-settings-section__actions\">", "</div>"],
|
|
13
|
+
_tmpl$7 = ["<section class=\"", "\"", "><header class=\"k2b-settings-section__header\">", "<div class=\"k2b-settings-section__heading\"><h2", ">", "</h2>", "</div>", "</header><div class=\"k2b-settings-section__body\">", "</div></section>"],
|
|
14
|
+
_tmpl$8 = ["<section class=\"", "\"", "><header class=\"k2b-settings-group__header\"><div class=\"k2b-settings-group__heading\"><h3", ">", "</h3>", "</div>", "</header><div class=\"k2b-settings-group__body\">", "</div></section>"],
|
|
15
|
+
_tmpl$9 = ["<div class=\"k2b-settings-group__action\">", "</div>"],
|
|
16
|
+
_tmpl$0 = ["<span>", "</span>"],
|
|
17
|
+
_tmpl$1 = ["<div class=\"", "\"><div class=\"k2b-settings-field__copy\"><div class=\"k2b-settings-field__heading\"><strong>", "</strong>", "</div><p", ">", "</p></div>", "", "</div>"],
|
|
18
|
+
_tmpl$10 = ["<p", " class=\"k2b-settings-field__error\" role=\"alert\"><i class=\"ti ti-alert-circle\" aria-hidden=\"true\"></i> ", "</p>"],
|
|
19
|
+
_tmpl$11 = "<i class=\"ti ti-device-floppy\" aria-hidden=\"true\"></i>",
|
|
20
|
+
_tmpl$12 = ["<div class=\"k2b-settings-actions\">", "", "</div>"],
|
|
21
|
+
_tmpl$13 = ["<div class=\"", "\"><p role=\"status\" aria-live=\"polite\"><strong>", "</strong> ", "</p>", "</div>"],
|
|
22
|
+
_tmpl$14 = ["<strong>", "</strong>"],
|
|
23
|
+
_tmpl$15 = ["<p class=\"k2b-settings-panel-footer__status\" role=\"status\" aria-live=\"polite\">", "</p>"];
|
|
24
|
+
import { children, createMemo, createUniqueId, Show } from "solid-js";
|
|
25
|
+
import { Button } from "../actions/Button";
|
|
26
|
+
import { useUiMessages } from "../intl/messages";
|
|
27
|
+
const read = value => typeof value === "function" ? value() : value;
|
|
28
|
+
export function SettingsPage(props) {
|
|
29
|
+
return _$ssr(_tmpl$4, `k2b-settings-page${props.class ? ` ${_$escape(props.class, true)}` : ""}`, _$ssrStyle(props.style), _$escape(_$createComponent(Show, {
|
|
30
|
+
get when() {
|
|
31
|
+
return props.icon;
|
|
32
|
+
},
|
|
33
|
+
children: icon => _$ssr(_tmpl$5, _$ssrAttribute("class", _$escape(icon(), true), false))
|
|
34
|
+
})), _$escape(props.title), _$escape(_$createComponent(Show, {
|
|
35
|
+
get when() {
|
|
36
|
+
return props.subtitle;
|
|
37
|
+
},
|
|
38
|
+
get children() {
|
|
39
|
+
return _$ssr(_tmpl$, _$escape(props.subtitle));
|
|
40
|
+
}
|
|
41
|
+
})), _$escape(_$createComponent(Show, {
|
|
42
|
+
get when() {
|
|
43
|
+
return props.actions;
|
|
44
|
+
},
|
|
45
|
+
get children() {
|
|
46
|
+
return _$ssr(_tmpl$2, _$escape(props.actions));
|
|
47
|
+
}
|
|
48
|
+
})), _$ssrAttribute("data-scroll-preserve", _$escape(props.scrollPreserveKey, true), false), _$escape(props.children), _$escape(_$createComponent(Show, {
|
|
49
|
+
get when() {
|
|
50
|
+
return props.footer;
|
|
51
|
+
},
|
|
52
|
+
get children() {
|
|
53
|
+
return _$ssr(_tmpl$3, _$escape(props.footer));
|
|
54
|
+
}
|
|
55
|
+
})));
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* A full-page settings group. Dialogs keep using PanelDialog.Section; this
|
|
59
|
+
* component owns the quieter, observability-style paper used on admin pages.
|
|
60
|
+
*/
|
|
61
|
+
export function SettingsSection(props) {
|
|
62
|
+
const headingId = `k2b-settings-section-${createUniqueId()}`;
|
|
63
|
+
return _$ssr(_tmpl$7, `k2b-settings-section${props.class ? ` ${_$escape(props.class, true)}` : ""}`, _$ssrAttribute("aria-labelledby", _$escape(headingId, true), false), _$escape(_$createComponent(Show, {
|
|
64
|
+
get when() {
|
|
65
|
+
return props.icon;
|
|
66
|
+
},
|
|
67
|
+
children: icon => _$ssr(_tmpl$5, _$ssrAttribute("class", _$escape(icon(), true), false))
|
|
68
|
+
})), _$ssrAttribute("id", _$escape(headingId, true), false), _$escape(props.title), _$escape(_$createComponent(Show, {
|
|
69
|
+
get when() {
|
|
70
|
+
return props.subtitle;
|
|
71
|
+
},
|
|
72
|
+
get children() {
|
|
73
|
+
return _$ssr(_tmpl$, _$escape(props.subtitle));
|
|
74
|
+
}
|
|
75
|
+
})), _$escape(_$createComponent(Show, {
|
|
76
|
+
get when() {
|
|
77
|
+
return props.actions;
|
|
78
|
+
},
|
|
79
|
+
get children() {
|
|
80
|
+
return _$ssr(_tmpl$6, _$escape(props.actions));
|
|
81
|
+
}
|
|
82
|
+
})), _$escape(props.children));
|
|
83
|
+
}
|
|
84
|
+
const SETTINGS_GROUP_ACTION = Symbol("SettingsGroup.Action");
|
|
85
|
+
const SettingsGroupAction = props => ({
|
|
86
|
+
kind: SETTINGS_GROUP_ACTION,
|
|
87
|
+
props
|
|
88
|
+
});
|
|
89
|
+
const collectSettingsGroupActions = value => {
|
|
90
|
+
if (Array.isArray(value)) return value.flatMap(collectSettingsGroupActions);
|
|
91
|
+
return value && typeof value === "object" && value.kind === SETTINGS_GROUP_ACTION ? [value] : [];
|
|
92
|
+
};
|
|
93
|
+
const collectSettingsGroupContent = value => {
|
|
94
|
+
if (Array.isArray(value)) return value.flatMap(collectSettingsGroupContent);
|
|
95
|
+
return value && typeof value === "object" && value.kind === SETTINGS_GROUP_ACTION ? [] : [value];
|
|
96
|
+
};
|
|
97
|
+
export const SettingsGroup = props => {
|
|
98
|
+
const resolved = children(() => props.children);
|
|
99
|
+
const action = createMemo(() => collectSettingsGroupActions(resolved())[0]);
|
|
100
|
+
const content = createMemo(() => collectSettingsGroupContent(resolved()));
|
|
101
|
+
const headingId = `k2b-settings-group-${createUniqueId()}`;
|
|
102
|
+
return _$ssr(_tmpl$8, `k2b-settings-group${props.class ? ` ${_$escape(props.class, true)}` : ""}`, _$ssrAttribute("aria-labelledby", _$escape(headingId, true), false), _$ssrAttribute("id", _$escape(headingId, true), false), _$escape(props.title), _$escape(_$createComponent(Show, {
|
|
103
|
+
get when() {
|
|
104
|
+
return props.description;
|
|
105
|
+
},
|
|
106
|
+
get children() {
|
|
107
|
+
return _$ssr(_tmpl$, _$escape(props.description));
|
|
108
|
+
}
|
|
109
|
+
})), _$escape(_$createComponent(Show, {
|
|
110
|
+
get when() {
|
|
111
|
+
return action();
|
|
112
|
+
},
|
|
113
|
+
children: slot => _$ssr(_tmpl$9, _$escape(slot().props.children))
|
|
114
|
+
})), _$escape(content()));
|
|
115
|
+
};
|
|
116
|
+
SettingsGroup.Action = SettingsGroupAction;
|
|
117
|
+
export const sameSettingValue = (left, right) => JSON.stringify(left) === JSON.stringify(right);
|
|
118
|
+
export const readSettingsError = async (response, fallback) => {
|
|
119
|
+
const data = await response.json().catch(() => null);
|
|
120
|
+
return {
|
|
121
|
+
message: data?.message ?? fallback,
|
|
122
|
+
fields: data?.errors ?? {}
|
|
123
|
+
};
|
|
124
|
+
};
|
|
125
|
+
export function SettingsField(props) {
|
|
126
|
+
const messages = useUiMessages();
|
|
127
|
+
const id = createUniqueId();
|
|
128
|
+
const descriptionId = `k2b-settings-field-${id}-description`;
|
|
129
|
+
const errorId = `k2b-settings-field-${id}-error`;
|
|
130
|
+
const describedBy = () => read(props.error) ? `${descriptionId} ${errorId}` : descriptionId;
|
|
131
|
+
const control = () => typeof props.children === "function" ? props.children({
|
|
132
|
+
describedBy
|
|
133
|
+
}) : props.children;
|
|
134
|
+
return _$ssr(_tmpl$1, `k2b-settings-field ${_$escape(props.class ?? "", true)}`, _$escape(props.label), _$escape(_$createComponent(Show, {
|
|
135
|
+
get when() {
|
|
136
|
+
return props.changed !== undefined && read(props.changed);
|
|
137
|
+
},
|
|
138
|
+
get children() {
|
|
139
|
+
return _$ssr(_tmpl$0, _$escape(messages().unsaved));
|
|
140
|
+
}
|
|
141
|
+
})), _$ssrAttribute("id", _$escape(descriptionId, true), false), _$escape(props.description), _$escape(control()), _$escape(_$createComponent(Show, {
|
|
142
|
+
get when() {
|
|
143
|
+
return read(props.error);
|
|
144
|
+
},
|
|
145
|
+
children: error => _$ssr(_tmpl$10, _$ssrAttribute("id", _$escape(errorId, true), false), _$escape(error()))
|
|
146
|
+
})));
|
|
147
|
+
}
|
|
148
|
+
const SettingsActions = props => {
|
|
149
|
+
const messages = useUiMessages();
|
|
150
|
+
const changeCount = () => read(props.changeCount);
|
|
151
|
+
const loading = () => read(props.loading);
|
|
152
|
+
const disabled = () => loading() || Boolean(props.disableWithoutChanges && changeCount() === 0);
|
|
153
|
+
const saveDisabled = () => disabled() || Boolean(props.saveDisabled !== undefined && read(props.saveDisabled));
|
|
154
|
+
return _$ssr(_tmpl$12, _$escape(_$createComponent(Button, {
|
|
155
|
+
variant: "secondary",
|
|
156
|
+
get disabled() {
|
|
157
|
+
return disabled();
|
|
158
|
+
},
|
|
159
|
+
get onClick() {
|
|
160
|
+
return props.onDiscard;
|
|
161
|
+
},
|
|
162
|
+
get children() {
|
|
163
|
+
return messages().discard;
|
|
164
|
+
}
|
|
165
|
+
})), _$escape(_$createComponent(Button, {
|
|
166
|
+
get variant() {
|
|
167
|
+
return props.saveVariant ?? "primary";
|
|
168
|
+
},
|
|
169
|
+
get loading() {
|
|
170
|
+
return loading();
|
|
171
|
+
},
|
|
172
|
+
get loadingLabel() {
|
|
173
|
+
return messages().saving;
|
|
174
|
+
},
|
|
175
|
+
get disabled() {
|
|
176
|
+
return saveDisabled();
|
|
177
|
+
},
|
|
178
|
+
get onClick() {
|
|
179
|
+
return props.onSave;
|
|
180
|
+
},
|
|
181
|
+
get children() {
|
|
182
|
+
return [_$ssr(_tmpl$11), props.saveLabel ?? messages().saveChanges];
|
|
183
|
+
}
|
|
184
|
+
})));
|
|
185
|
+
};
|
|
186
|
+
export function SettingsSaveBar(props) {
|
|
187
|
+
const messages = useUiMessages();
|
|
188
|
+
const changeCount = () => read(props.changeCount);
|
|
189
|
+
return _$createComponent(Show, {
|
|
190
|
+
get when() {
|
|
191
|
+
return changeCount() > 0;
|
|
192
|
+
},
|
|
193
|
+
get children() {
|
|
194
|
+
return _$ssr(_tmpl$13, `k2b-settings-save-bar ${_$escape(props.class ?? "", true)}`, _$escape(changeCount()), _$escape(messages().unsavedChangeLabel({
|
|
195
|
+
count: changeCount()
|
|
196
|
+
})), _$escape(_$createComponent(SettingsActions, props)));
|
|
197
|
+
}
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
export function SettingsPanelFooter(props) {
|
|
201
|
+
const messages = useUiMessages();
|
|
202
|
+
const changeCount = () => read(props.changeCount);
|
|
203
|
+
return [_$ssr(_tmpl$15, _$escape(_$createComponent(Show, {
|
|
204
|
+
get when() {
|
|
205
|
+
return changeCount() > 0;
|
|
206
|
+
},
|
|
207
|
+
get fallback() {
|
|
208
|
+
return messages().noUnsavedChanges;
|
|
209
|
+
},
|
|
210
|
+
get children() {
|
|
211
|
+
return [_$ssr(_tmpl$14, _$escape(changeCount())), " ", messages().unsavedChangeLabel({
|
|
212
|
+
count: changeCount()
|
|
213
|
+
})];
|
|
214
|
+
}
|
|
215
|
+
}))), _$createComponent(SettingsActions, _$mergeProps(props, {
|
|
216
|
+
disableWithoutChanges: true
|
|
217
|
+
}))];
|
|
218
|
+
}
|
|
219
|
+
//# sourceMappingURL=Settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["children","createMemo","createUniqueId","Show","Button","useUiMessages","read","value","SettingsPage","props","_$ssr","_tmpl$4","class","_$escape","_$ssrStyle","style","_$createComponent","when","icon","_tmpl$5","_$ssrAttribute","title","subtitle","_tmpl$","actions","_tmpl$2","scrollPreserveKey","footer","_tmpl$3","SettingsSection","headingId","_tmpl$7","_tmpl$6","SETTINGS_GROUP_ACTION","Symbol","SettingsGroupAction","kind","collectSettingsGroupActions","Array","isArray","flatMap","collectSettingsGroupContent","SettingsGroup","resolved","action","content","_tmpl$8","description","slot","_tmpl$9","Action","sameSettingValue","left","right","JSON","stringify","readSettingsError","response","fallback","data","json","catch","message","fields","errors","SettingsField","messages","id","descriptionId","errorId","describedBy","error","control","_tmpl$1","label","changed","undefined","_tmpl$0","unsaved","_tmpl$10","SettingsActions","changeCount","loading","disabled","Boolean","disableWithoutChanges","saveDisabled","_tmpl$12","variant","onClick","onDiscard","discard","saveVariant","loadingLabel","saving","onSave","_tmpl$11","saveLabel","saveChanges","SettingsSaveBar","_tmpl$13","unsavedChangeLabel","count","SettingsPanelFooter","_tmpl$15","noUnsavedChanges","_tmpl$14","_$mergeProps"],"sources":["layout/Settings.tsx"],"sourcesContent":["import { children, createMemo, createUniqueId, type JSX, Show } from \"solid-js\";\nimport { Button, type ButtonVariant } from \"../actions/Button\";\nimport type { MaybeAccessor } from \"../inputs/field-contract\";\nimport { useUiMessages } from \"../intl/messages\";\n\nconst read = <T,>(value: MaybeAccessor<T>): T => (typeof value === \"function\" ? (value as () => T)() : value);\n\nexport type SettingsPageProps = {\n title: JSX.Element;\n subtitle?: JSX.Element;\n icon?: string;\n actions?: JSX.Element;\n children: JSX.Element;\n footer?: JSX.Element;\n scrollPreserveKey?: string;\n class?: string;\n style?: JSX.CSSProperties | string;\n};\n\nexport function SettingsPage(props: SettingsPageProps): JSX.Element {\n return (\n <section class={`k2b-settings-page${props.class ? ` ${props.class}` : \"\"}`} style={props.style}>\n <header class=\"k2b-settings-page__header\">\n <Show when={props.icon}>{(icon) => <i class={icon()} aria-hidden=\"true\" />}</Show>\n <div class=\"k2b-settings-page__heading\">\n <h1>{props.title}</h1>\n <Show when={props.subtitle}>\n <p>{props.subtitle}</p>\n </Show>\n </div>\n <Show when={props.actions}>\n <div class=\"k2b-settings-page__actions\">{props.actions}</div>\n </Show>\n </header>\n <div class=\"k2b-settings-page__body\" data-scroll-preserve={props.scrollPreserveKey}>\n {props.children}\n </div>\n <Show when={props.footer}>\n <footer class=\"k2b-settings-page__footer\">{props.footer}</footer>\n </Show>\n </section>\n );\n}\n\nexport type SettingsSectionProps = {\n title: JSX.Element;\n subtitle?: JSX.Element;\n icon?: string;\n actions?: JSX.Element;\n children: JSX.Element;\n class?: string;\n};\n\n/**\n * A full-page settings group. Dialogs keep using PanelDialog.Section; this\n * component owns the quieter, observability-style paper used on admin pages.\n */\nexport function SettingsSection(props: SettingsSectionProps): JSX.Element {\n const headingId = `k2b-settings-section-${createUniqueId()}`;\n return (\n <section class={`k2b-settings-section${props.class ? ` ${props.class}` : \"\"}`} aria-labelledby={headingId}>\n <header class=\"k2b-settings-section__header\">\n <Show when={props.icon}>{(icon) => <i class={icon()} aria-hidden=\"true\" />}</Show>\n <div class=\"k2b-settings-section__heading\">\n <h2 id={headingId}>{props.title}</h2>\n <Show when={props.subtitle}>\n <p>{props.subtitle}</p>\n </Show>\n </div>\n <Show when={props.actions}>\n <div class=\"k2b-settings-section__actions\">{props.actions}</div>\n </Show>\n </header>\n <div class=\"k2b-settings-section__body\">{props.children}</div>\n </section>\n );\n}\n\nconst SETTINGS_GROUP_ACTION = Symbol(\"SettingsGroup.Action\");\n\nexport type SettingsGroupProps = {\n title: JSX.Element;\n description?: JSX.Element;\n children: JSX.Element;\n class?: string;\n};\n\nexport type SettingsGroupActionProps = {\n children: JSX.Element;\n};\n\ntype SettingsGroupActionDefinition = {\n readonly kind: typeof SETTINGS_GROUP_ACTION;\n readonly props: SettingsGroupActionProps;\n};\n\ntype SettingsGroupComponent = ((props: SettingsGroupProps) => JSX.Element) & {\n Action: (props: SettingsGroupActionProps) => JSX.Element;\n};\n\nconst SettingsGroupAction = (props: SettingsGroupActionProps): JSX.Element =>\n ({ kind: SETTINGS_GROUP_ACTION, props }) satisfies SettingsGroupActionDefinition as unknown as JSX.Element;\n\nconst collectSettingsGroupActions = (value: unknown): SettingsGroupActionDefinition[] => {\n if (Array.isArray(value)) return value.flatMap(collectSettingsGroupActions);\n return value && typeof value === \"object\" && (value as { kind?: unknown }).kind === SETTINGS_GROUP_ACTION\n ? [value as SettingsGroupActionDefinition]\n : [];\n};\n\nconst collectSettingsGroupContent = (value: unknown): JSX.Element[] => {\n if (Array.isArray(value)) return value.flatMap(collectSettingsGroupContent);\n return value && typeof value === \"object\" && (value as { kind?: unknown }).kind === SETTINGS_GROUP_ACTION ? [] : [value as JSX.Element];\n};\n\nexport const SettingsGroup = ((props: SettingsGroupProps): JSX.Element => {\n const resolved = children(() => props.children);\n const action = createMemo(() => collectSettingsGroupActions(resolved())[0]);\n const content = createMemo(() => collectSettingsGroupContent(resolved()));\n const headingId = `k2b-settings-group-${createUniqueId()}`;\n return (\n <section class={`k2b-settings-group${props.class ? ` ${props.class}` : \"\"}`} aria-labelledby={headingId}>\n <header class=\"k2b-settings-group__header\">\n <div class=\"k2b-settings-group__heading\">\n <h3 id={headingId}>{props.title}</h3>\n <Show when={props.description}>\n <p>{props.description}</p>\n </Show>\n </div>\n <Show when={action()}>{(slot) => <div class=\"k2b-settings-group__action\">{slot().props.children}</div>}</Show>\n </header>\n <div class=\"k2b-settings-group__body\">{content()}</div>\n </section>\n );\n}) as SettingsGroupComponent;\n\nSettingsGroup.Action = SettingsGroupAction;\n\nexport const sameSettingValue = (left: unknown, right: unknown): boolean => JSON.stringify(left) === JSON.stringify(right);\n\nexport const readSettingsError = async (\n response: Response,\n fallback: string,\n): Promise<{ message: string; fields: Record<string, string> }> => {\n const data = (await response.json().catch(() => null)) as {\n message?: string;\n errors?: Record<string, string>;\n } | null;\n return { message: data?.message ?? fallback, fields: data?.errors ?? {} };\n};\n\nexport type SettingsFieldProps = {\n label: string;\n description: string;\n error: MaybeAccessor<string | undefined>;\n changed?: MaybeAccessor<boolean>;\n children: JSX.Element | ((control: SettingsFieldControlProps) => JSX.Element);\n class?: string;\n};\n\nexport type SettingsFieldControlProps = {\n describedBy: () => string;\n};\n\nexport function SettingsField(props: SettingsFieldProps): JSX.Element {\n const messages = useUiMessages();\n const id = createUniqueId();\n const descriptionId = `k2b-settings-field-${id}-description`;\n const errorId = `k2b-settings-field-${id}-error`;\n const describedBy = () => (read(props.error) ? `${descriptionId} ${errorId}` : descriptionId);\n const control = () =>\n typeof props.children === \"function\"\n ? (props.children as (control: SettingsFieldControlProps) => JSX.Element)({ describedBy })\n : props.children;\n return (\n <div class={`k2b-settings-field ${props.class ?? \"\"}`}>\n <div class=\"k2b-settings-field__copy\">\n <div class=\"k2b-settings-field__heading\">\n <strong>{props.label}</strong>\n <Show when={props.changed !== undefined && read(props.changed)}>\n <span>{messages().unsaved}</span>\n </Show>\n </div>\n <p id={descriptionId}>{props.description}</p>\n </div>\n {control()}\n <Show when={read(props.error)}>\n {(error) => (\n <p id={errorId} class=\"k2b-settings-field__error\" role=\"alert\">\n <i class=\"ti ti-alert-circle\" aria-hidden=\"true\" /> {error()}\n </p>\n )}\n </Show>\n </div>\n );\n}\n\nexport type SettingsSaveBarProps = {\n changeCount: MaybeAccessor<number>;\n loading: MaybeAccessor<boolean>;\n saveDisabled?: MaybeAccessor<boolean>;\n onDiscard: () => void;\n onSave: () => void;\n saveLabel?: string;\n saveVariant?: ButtonVariant;\n class?: string;\n};\n\nconst SettingsActions = (\n props: SettingsSaveBarProps & {\n disableWithoutChanges?: boolean;\n },\n): JSX.Element => {\n const messages = useUiMessages();\n const changeCount = () => read(props.changeCount);\n const loading = () => read(props.loading);\n const disabled = () => loading() || Boolean(props.disableWithoutChanges && changeCount() === 0);\n const saveDisabled = () => disabled() || Boolean(props.saveDisabled !== undefined && read(props.saveDisabled));\n return (\n <div class=\"k2b-settings-actions\">\n <Button variant=\"secondary\" disabled={disabled()} onClick={props.onDiscard}>\n {messages().discard}\n </Button>\n <Button\n variant={props.saveVariant ?? \"primary\"}\n loading={loading()}\n loadingLabel={messages().saving}\n disabled={saveDisabled()}\n onClick={props.onSave}\n >\n <i class=\"ti ti-device-floppy\" aria-hidden=\"true\" />\n {props.saveLabel ?? messages().saveChanges}\n </Button>\n </div>\n );\n};\n\nexport function SettingsSaveBar(props: SettingsSaveBarProps): JSX.Element {\n const messages = useUiMessages();\n const changeCount = () => read(props.changeCount);\n return (\n <Show when={changeCount() > 0}>\n <div class={`k2b-settings-save-bar ${props.class ?? \"\"}`}>\n <p role=\"status\" aria-live=\"polite\">\n <strong>{changeCount()}</strong> {messages().unsavedChangeLabel({ count: changeCount() })}\n </p>\n <SettingsActions {...props} />\n </div>\n </Show>\n );\n}\n\nexport type SettingsPanelFooterProps = SettingsSaveBarProps;\n\nexport function SettingsPanelFooter(props: SettingsPanelFooterProps): JSX.Element {\n const messages = useUiMessages();\n const changeCount = () => read(props.changeCount);\n return (\n <>\n <p class=\"k2b-settings-panel-footer__status\" role=\"status\" aria-live=\"polite\">\n <Show when={changeCount() > 0} fallback={messages().noUnsavedChanges}>\n <strong>{changeCount()}</strong> {messages().unsavedChangeLabel({ count: changeCount() })}\n </Show>\n </p>\n <SettingsActions {...props} disableWithoutChanges />\n </>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { ssrAttribute as _$ssrAttribute } from "solid-js/web";
|
|
2
|
+
import { escape as _$escape } from "solid-js/web";
|
|
3
|
+
import { createComponent as _$createComponent } from "solid-js/web";
|
|
4
|
+
import { ssr as _$ssr } from "solid-js/web";
|
|
5
|
+
var _tmpl$ = "<i class=\"ti ti-arrow-up\" aria-hidden=\"true\"></i>",
|
|
6
|
+
_tmpl$2 = "<i class=\"ti ti-arrow-down\" aria-hidden=\"true\"></i>",
|
|
7
|
+
_tmpl$3 = ["<p>", "</p>"],
|
|
8
|
+
_tmpl$4 = ["<ul class=\"k2b-settings-collection__list\">", "</ul>"],
|
|
9
|
+
_tmpl$5 = ["<section class=\"", "\"", "><header class=\"k2b-settings-collection__header\"><div class=\"k2b-settings-collection__heading\"><h3", ">", "</h3>", "</div>", "</header>", "</section>"],
|
|
10
|
+
_tmpl$6 = ["<div class=\"k2b-settings-collection__action\">", "</div>"],
|
|
11
|
+
_tmpl$7 = ["<span class=\"k2b-settings-collection__item-icon\">", "</span>"],
|
|
12
|
+
_tmpl$8 = ["<li class=\"k2b-settings-collection__item\">", "<div class=\"k2b-settings-collection__item-copy\"><h4>", "</h4>", "</div>", "", "</li>"],
|
|
13
|
+
_tmpl$9 = ["<div class=\"k2b-settings-collection__item-status\">", "</div>"],
|
|
14
|
+
_tmpl$0 = ["<div class=\"k2b-settings-collection__item-actions\">", "</div>"];
|
|
15
|
+
import { children, createMemo, createUniqueId, For, Show } from "solid-js";
|
|
16
|
+
import { IconButton } from "../actions/Button";
|
|
17
|
+
import { useUiMessages } from "../intl/messages";
|
|
18
|
+
import Placeholder from "../surfaces/Placeholder";
|
|
19
|
+
const SETTINGS_COLLECTION_ACTION = Symbol("SettingsCollection.Action");
|
|
20
|
+
const SETTINGS_COLLECTION_ITEM = Symbol("SettingsCollection.Item");
|
|
21
|
+
const SETTINGS_COLLECTION_ITEM_STATUS = Symbol("SettingsCollection.Item.Status");
|
|
22
|
+
const SETTINGS_COLLECTION_ITEM_ACTIONS = Symbol("SettingsCollection.Item.Actions");
|
|
23
|
+
const definition = (kind, props) => ({
|
|
24
|
+
kind,
|
|
25
|
+
props
|
|
26
|
+
});
|
|
27
|
+
const isDefinition = (value, kind) => Boolean(value && typeof value === "object" && value.kind === kind);
|
|
28
|
+
const collect = (value, match) => {
|
|
29
|
+
if (Array.isArray(value)) return value.flatMap(entry => collect(entry, match));
|
|
30
|
+
return match(value) ? [value] : [];
|
|
31
|
+
};
|
|
32
|
+
const SettingsCollectionAction = props => definition(SETTINGS_COLLECTION_ACTION, props);
|
|
33
|
+
const SettingsCollectionItemStatus = props => definition(SETTINGS_COLLECTION_ITEM_STATUS, props);
|
|
34
|
+
const SettingsCollectionItemActions = props => definition(SETTINGS_COLLECTION_ITEM_ACTIONS, props);
|
|
35
|
+
const SettingsCollectionItemReorder = props => {
|
|
36
|
+
const messages = useUiMessages();
|
|
37
|
+
return [_$createComponent(IconButton, {
|
|
38
|
+
get label() {
|
|
39
|
+
return messages().moveNamedUp({
|
|
40
|
+
label: props.label
|
|
41
|
+
});
|
|
42
|
+
},
|
|
43
|
+
size: "sm",
|
|
44
|
+
get title() {
|
|
45
|
+
return messages().moveUp;
|
|
46
|
+
},
|
|
47
|
+
get disabled() {
|
|
48
|
+
return props.disabled || props.index <= 0;
|
|
49
|
+
},
|
|
50
|
+
onClick: () => props.onMove(-1),
|
|
51
|
+
get children() {
|
|
52
|
+
return _$ssr(_tmpl$);
|
|
53
|
+
}
|
|
54
|
+
}), _$createComponent(IconButton, {
|
|
55
|
+
get label() {
|
|
56
|
+
return messages().moveNamedDown({
|
|
57
|
+
label: props.label
|
|
58
|
+
});
|
|
59
|
+
},
|
|
60
|
+
size: "sm",
|
|
61
|
+
get title() {
|
|
62
|
+
return messages().moveDown;
|
|
63
|
+
},
|
|
64
|
+
get disabled() {
|
|
65
|
+
return props.disabled || props.index >= props.count - 1;
|
|
66
|
+
},
|
|
67
|
+
onClick: () => props.onMove(1),
|
|
68
|
+
get children() {
|
|
69
|
+
return _$ssr(_tmpl$2);
|
|
70
|
+
}
|
|
71
|
+
})];
|
|
72
|
+
};
|
|
73
|
+
const SettingsCollectionItem = props => definition(SETTINGS_COLLECTION_ITEM, props);
|
|
74
|
+
SettingsCollectionItem.Status = SettingsCollectionItemStatus;
|
|
75
|
+
SettingsCollectionItem.Actions = SettingsCollectionItemActions;
|
|
76
|
+
SettingsCollectionItem.Reorder = SettingsCollectionItemReorder;
|
|
77
|
+
const SettingsCollection = props => {
|
|
78
|
+
const messages = useUiMessages();
|
|
79
|
+
const resolved = children(() => props.children);
|
|
80
|
+
const items = createMemo(() => collect(resolved(), entry => isDefinition(entry, SETTINGS_COLLECTION_ITEM)));
|
|
81
|
+
const action = createMemo(() => collect(resolved(), entry => isDefinition(entry, SETTINGS_COLLECTION_ACTION))[0]);
|
|
82
|
+
const headingId = `k2b-settings-collection-${createUniqueId()}`;
|
|
83
|
+
return _$ssr(_tmpl$5, `k2b-settings-collection${props.class ? ` ${_$escape(props.class, true)}` : ""}`, _$ssrAttribute("aria-labelledby", _$escape(headingId, true), false), _$ssrAttribute("id", _$escape(headingId, true), false), _$escape(props.title), _$escape(_$createComponent(Show, {
|
|
84
|
+
get when() {
|
|
85
|
+
return props.description;
|
|
86
|
+
},
|
|
87
|
+
get children() {
|
|
88
|
+
return _$ssr(_tmpl$3, _$escape(props.description));
|
|
89
|
+
}
|
|
90
|
+
})), _$escape(_$createComponent(Show, {
|
|
91
|
+
get when() {
|
|
92
|
+
return action();
|
|
93
|
+
},
|
|
94
|
+
children: slot => _$ssr(_tmpl$6, _$escape(slot().props.children))
|
|
95
|
+
})), _$escape(_$createComponent(Show, {
|
|
96
|
+
get when() {
|
|
97
|
+
return items().length > 0;
|
|
98
|
+
},
|
|
99
|
+
get fallback() {
|
|
100
|
+
return _$createComponent(Placeholder, {
|
|
101
|
+
variant: "compact",
|
|
102
|
+
align: "left",
|
|
103
|
+
get description() {
|
|
104
|
+
return props.empty ?? messages().nothingHere;
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
},
|
|
108
|
+
get children() {
|
|
109
|
+
return _$ssr(_tmpl$4, _$escape(_$createComponent(For, {
|
|
110
|
+
get each() {
|
|
111
|
+
return items();
|
|
112
|
+
},
|
|
113
|
+
children: item => {
|
|
114
|
+
const resolvedItem = children(() => item.props.children);
|
|
115
|
+
const status = () => collect(resolvedItem(), entry => isDefinition(entry, SETTINGS_COLLECTION_ITEM_STATUS))[0];
|
|
116
|
+
const actions = () => collect(resolvedItem(), entry => isDefinition(entry, SETTINGS_COLLECTION_ITEM_ACTIONS))[0];
|
|
117
|
+
return _$ssr(_tmpl$8, _$escape(_$createComponent(Show, {
|
|
118
|
+
get when() {
|
|
119
|
+
return item.props.icon;
|
|
120
|
+
},
|
|
121
|
+
get children() {
|
|
122
|
+
return _$ssr(_tmpl$7, _$escape(item.props.icon));
|
|
123
|
+
}
|
|
124
|
+
})), _$escape(item.props.title), _$escape(_$createComponent(Show, {
|
|
125
|
+
get when() {
|
|
126
|
+
return item.props.description;
|
|
127
|
+
},
|
|
128
|
+
get children() {
|
|
129
|
+
return _$ssr(_tmpl$3, _$escape(item.props.description));
|
|
130
|
+
}
|
|
131
|
+
})), _$escape(_$createComponent(Show, {
|
|
132
|
+
get when() {
|
|
133
|
+
return status();
|
|
134
|
+
},
|
|
135
|
+
children: slot => _$ssr(_tmpl$9, _$escape(slot().props.children))
|
|
136
|
+
})), _$escape(_$createComponent(Show, {
|
|
137
|
+
get when() {
|
|
138
|
+
return actions();
|
|
139
|
+
},
|
|
140
|
+
children: slot => _$ssr(_tmpl$0, _$escape(slot().props.children))
|
|
141
|
+
})));
|
|
142
|
+
}
|
|
143
|
+
})));
|
|
144
|
+
}
|
|
145
|
+
})));
|
|
146
|
+
};
|
|
147
|
+
SettingsCollection.Action = SettingsCollectionAction;
|
|
148
|
+
SettingsCollection.Item = SettingsCollectionItem;
|
|
149
|
+
export default SettingsCollection;
|
|
150
|
+
//# sourceMappingURL=SettingsCollection.js.map
|