@selvajs/ui 6.5.1-beta.0 → 6.6.0-beta.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/ConfirmDialog.svelte +2 -10
- package/dist/components/ErrorScreen.svelte +21 -27
- package/dist/components/compute/AppLayout.svelte +286 -116
- package/dist/components/compute/AppLayout.svelte.d.ts +22 -0
- package/dist/components/compute/ComputeApp.svelte +45 -24
- package/dist/components/compute/ComputeApp.svelte.d.ts +19 -2
- package/dist/components/compute/ComputeMessagesDialog.svelte +47 -83
- package/dist/components/compute/ParameterPresetManager.svelte +37 -130
- package/dist/components/compute/ParameterPresetManager.svelte.d.ts +4 -5
- package/dist/components/compute/SolveMessages.svelte +131 -77
- package/dist/components/compute/SolveMessages.svelte.d.ts +7 -12
- package/dist/components/layout/AppShell.svelte +10 -6
- package/dist/components/layout/PageFooter.svelte +23 -11
- package/dist/components/layout/PageHeader.svelte +11 -7
- package/dist/components/layout/Pagination.svelte +2 -4
- package/dist/components/layout/SectionHeader.svelte +4 -2
- package/dist/components/layout/SideNav.svelte +56 -7
- package/dist/components/preview/ChartOutput.svelte +35 -25
- package/dist/components/preview/Group.svelte +92 -103
- package/dist/components/preview/Group.svelte.d.ts +1 -1
- package/dist/components/preview/HelpButton.svelte +36 -0
- package/dist/components/preview/HelpButton.svelte.d.ts +8 -0
- package/dist/components/preview/ImageOutput.svelte +430 -71
- package/dist/components/preview/InputControl.svelte +163 -90
- package/dist/components/preview/InputControl.svelte.d.ts +5 -1
- package/dist/components/preview/OutputDisplay.svelte +28 -33
- package/dist/components/preview/TabBar.svelte +106 -22
- package/dist/components/preview/TabBar.svelte.d.ts +1 -0
- package/dist/components/preview/TabContent.svelte +63 -57
- package/dist/components/preview/TabContent.svelte.d.ts +5 -1
- package/dist/components/preview/TabLayout.svelte +27 -5
- package/dist/components/preview/TabLayout.svelte.d.ts +5 -0
- package/dist/components/preview/inputs/CheckboxInput.svelte +7 -7
- package/dist/components/preview/inputs/CheckboxInput.svelte.d.ts +3 -0
- package/dist/components/preview/inputs/ChecklistInput.svelte +7 -2
- package/dist/components/preview/inputs/ChecklistInput.svelte.d.ts +2 -1
- package/dist/components/preview/inputs/ColorInput.svelte +4 -2
- package/dist/components/preview/inputs/ColorInput.svelte.d.ts +1 -0
- package/dist/components/preview/inputs/DropdownInput.svelte +19 -4
- package/dist/components/preview/inputs/DropdownInput.svelte.d.ts +2 -1
- package/dist/components/preview/inputs/FileInput.svelte +112 -108
- package/dist/components/preview/inputs/GeometryInput.svelte +128 -0
- package/dist/components/preview/inputs/GeometryInput.svelte.d.ts +21 -0
- package/dist/components/preview/inputs/NumberInput.svelte +123 -61
- package/dist/components/preview/inputs/NumberInput.svelte.d.ts +2 -0
- package/dist/components/preview/inputs/OptionGlyph.svelte +29 -0
- package/dist/components/preview/inputs/OptionGlyph.svelte.d.ts +8 -0
- package/dist/components/preview/inputs/SegmentedInput.svelte +44 -0
- package/dist/components/preview/inputs/SegmentedInput.svelte.d.ts +12 -0
- package/dist/components/preview/inputs/TextInput.svelte +8 -4
- package/dist/components/preview/inputs/TileInput.svelte +80 -0
- package/dist/components/preview/inputs/TileInput.svelte.d.ts +12 -0
- package/dist/components/preview/inputs/index.d.ts +3 -0
- package/dist/components/preview/inputs/index.js +3 -0
- package/dist/components/primitives/CalculateButton.svelte +56 -24
- package/dist/components/primitives/CalculateButton.svelte.d.ts +3 -0
- package/dist/components/primitives/Callout.svelte +11 -18
- package/dist/components/primitives/DataTable.svelte +38 -5
- package/dist/components/primitives/DataTable.svelte.d.ts +2 -0
- package/dist/components/primitives/FilterableDropdown.svelte +42 -129
- package/dist/components/primitives/FilterableDropdown.svelte.d.ts +1 -1
- package/dist/components/primitives/IssueList.svelte +56 -0
- package/dist/components/primitives/IssueList.svelte.d.ts +20 -0
- package/dist/components/primitives/SeverityIcon.svelte +15 -0
- package/dist/components/primitives/SeverityIcon.svelte.d.ts +8 -0
- package/dist/components/primitives/SolvingIndicator.svelte +43 -42
- package/dist/components/primitives/SolvingIndicator.svelte.d.ts +6 -0
- package/dist/components/primitives/StateDisplay.svelte +19 -79
- package/dist/components/primitives/ViewToggle.svelte +18 -33
- package/dist/components/primitives/alert-dialog/alert-dialog-action.svelte +9 -3
- package/dist/components/primitives/alert-dialog/alert-dialog-action.svelte.d.ts +6 -1
- package/dist/components/primitives/alert-dialog/alert-dialog-content.svelte +1 -1
- package/dist/components/primitives/alert-dialog/alert-dialog-overlay.svelte +1 -1
- package/dist/components/primitives/badge/badge.svelte +2 -2
- package/dist/components/primitives/badge/badge.svelte.d.ts +4 -4
- package/dist/components/primitives/button/button.svelte +6 -2
- package/dist/components/primitives/button/button.svelte.d.ts +10 -4
- package/dist/components/primitives/card/card-header.svelte +1 -1
- package/dist/components/primitives/card/card.svelte +21 -5
- package/dist/components/primitives/card/card.svelte.d.ts +25 -1
- package/dist/components/primitives/card/index.d.ts +1 -2
- package/dist/components/primitives/card/index.js +2 -3
- package/dist/components/primitives/checkbox/checkbox.svelte +1 -1
- package/dist/components/primitives/command/command-dialog.svelte +42 -0
- package/dist/components/primitives/command/command-dialog.svelte.d.ts +14 -0
- package/dist/components/primitives/command/command-empty.svelte +17 -0
- package/dist/components/primitives/command/command-empty.svelte.d.ts +4 -0
- package/dist/components/primitives/command/command-group.svelte +33 -0
- package/dist/components/primitives/command/command-group.svelte.d.ts +7 -0
- package/dist/components/primitives/command/command-input.svelte +36 -0
- package/dist/components/primitives/command/command-input.svelte.d.ts +4 -0
- package/dist/components/primitives/command/command-item.svelte +28 -0
- package/dist/components/primitives/command/command-item.svelte.d.ts +4 -0
- package/dist/components/primitives/command/command-link-item.svelte +21 -0
- package/dist/components/primitives/command/command-link-item.svelte.d.ts +4 -0
- package/dist/components/primitives/command/command-list.svelte +20 -0
- package/dist/components/primitives/command/command-list.svelte.d.ts +4 -0
- package/dist/components/primitives/command/command-loading.svelte +7 -0
- package/dist/components/primitives/command/command-loading.svelte.d.ts +4 -0
- package/dist/components/primitives/command/command-separator.svelte +17 -0
- package/dist/components/primitives/command/command-separator.svelte.d.ts +4 -0
- package/dist/components/primitives/command/command-shortcut.svelte +23 -0
- package/dist/components/primitives/command/command-shortcut.svelte.d.ts +5 -0
- package/dist/components/primitives/command/command.svelte +28 -0
- package/dist/components/primitives/command/command.svelte.d.ts +8 -0
- package/dist/components/primitives/command/index.d.ts +12 -0
- package/dist/components/primitives/command/index.js +14 -0
- package/dist/components/primitives/context-menu/context-menu-content.svelte +1 -1
- package/dist/components/primitives/context-menu/context-menu-sub-content.svelte +1 -1
- package/dist/components/primitives/dialog/dialog-content.svelte +11 -3
- package/dist/components/primitives/dialog/dialog-content.svelte.d.ts +2 -0
- package/dist/components/primitives/dialog/dialog-overlay.svelte +1 -1
- package/dist/components/primitives/dialog/dialog-title.svelte +6 -2
- package/dist/components/primitives/dialog/dialog-title.svelte.d.ts +5 -1
- package/dist/components/primitives/drawer/Drawer.svelte +2 -2
- package/dist/components/primitives/dropdown-menu/dropdown-menu-checkbox-group.svelte +16 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-checkbox-group.svelte.d.ts +4 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-checkbox-item.svelte +46 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-checkbox-item.svelte.d.ts +9 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-content.svelte +31 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-content.svelte.d.ts +10 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-group-heading.svelte +22 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-group-heading.svelte.d.ts +8 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-group.svelte +7 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-group.svelte.d.ts +4 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-item.svelte +27 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-item.svelte.d.ts +8 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-label.svelte +24 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-label.svelte.d.ts +8 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-portal.svelte +7 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-portal.svelte.d.ts +3 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-radio-group.svelte +16 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-radio-group.svelte.d.ts +4 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-radio-item.svelte +36 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-radio-item.svelte.d.ts +4 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-separator.svelte +17 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-separator.svelte.d.ts +4 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-shortcut.svelte +23 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-shortcut.svelte.d.ts +5 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-sub-content.svelte +31 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-sub-content.svelte.d.ts +10 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-sub-trigger.svelte +29 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-sub-trigger.svelte.d.ts +7 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-sub.svelte +7 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-sub.svelte.d.ts +3 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-trigger.svelte +7 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-trigger.svelte.d.ts +4 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu.svelte +7 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu.svelte.d.ts +3 -0
- package/dist/components/primitives/dropdown-menu/index.d.ts +18 -0
- package/dist/components/primitives/dropdown-menu/index.js +18 -0
- package/dist/components/primitives/{alert/alert-description.svelte → empty/empty-content.svelte} +3 -3
- package/dist/components/primitives/empty/empty-content.svelte.d.ts +5 -0
- package/dist/components/primitives/empty/empty-description.svelte +23 -0
- package/dist/components/primitives/{alert/alert-description.svelte.d.ts → empty/empty-description.svelte.d.ts} +4 -4
- package/dist/components/primitives/{alert/alert-title.svelte → empty/empty-header.svelte} +3 -3
- package/dist/components/primitives/empty/empty-header.svelte.d.ts +5 -0
- package/dist/components/primitives/empty/empty-media.svelte +41 -0
- package/dist/components/primitives/empty/empty-media.svelte.d.ts +26 -0
- package/dist/components/primitives/{card/card-action.svelte → empty/empty-title.svelte} +2 -2
- package/dist/components/primitives/{card/card-action.svelte.d.ts → empty/empty-title.svelte.d.ts} +3 -3
- package/dist/components/primitives/empty/empty.svelte +23 -0
- package/dist/components/primitives/empty/empty.svelte.d.ts +5 -0
- package/dist/components/primitives/empty/index.d.ts +7 -0
- package/dist/components/primitives/empty/index.js +9 -0
- package/dist/components/primitives/index.d.ts +10 -1
- package/dist/components/primitives/index.js +10 -1
- package/dist/components/primitives/input/input.svelte +4 -4
- package/dist/components/primitives/input-group/index.d.ts +7 -0
- package/dist/components/primitives/input-group/index.js +9 -0
- package/dist/components/primitives/input-group/input-group-addon.svelte +53 -0
- package/dist/components/primitives/input-group/input-group-addon.svelte.d.ts +32 -0
- package/dist/components/primitives/input-group/input-group-button.svelte +49 -0
- package/dist/components/primitives/input-group/input-group-button.svelte.d.ts +32 -0
- package/dist/components/primitives/input-group/input-group-input.svelte +25 -0
- package/dist/components/primitives/input-group/input-group-input.svelte.d.ts +11 -0
- package/dist/components/primitives/input-group/input-group-text.svelte +22 -0
- package/dist/components/primitives/input-group/input-group-text.svelte.d.ts +5 -0
- package/dist/components/primitives/input-group/input-group-textarea.svelte +23 -0
- package/dist/components/primitives/input-group/input-group-textarea.svelte.d.ts +3 -0
- package/dist/components/primitives/input-group/input-group.svelte +24 -0
- package/dist/components/primitives/{alert/alert-title.svelte.d.ts → input-group/input-group.svelte.d.ts} +4 -4
- package/dist/components/primitives/mode-toggle/mode-toggle.svelte +6 -7
- package/dist/components/primitives/popover/index.d.ts +9 -0
- package/dist/components/primitives/popover/index.js +11 -0
- package/dist/components/primitives/popover/popover-close.svelte +7 -0
- package/dist/components/primitives/popover/popover-close.svelte.d.ts +4 -0
- package/dist/components/primitives/popover/popover-content.svelte +31 -0
- package/dist/components/primitives/popover/popover-content.svelte.d.ts +10 -0
- package/dist/components/primitives/popover/popover-description.svelte +20 -0
- package/dist/components/primitives/popover/popover-description.svelte.d.ts +5 -0
- package/dist/components/primitives/popover/popover-header.svelte +20 -0
- package/dist/components/primitives/popover/popover-header.svelte.d.ts +5 -0
- package/dist/components/primitives/popover/popover-portal.svelte +7 -0
- package/dist/components/primitives/popover/popover-portal.svelte.d.ts +3 -0
- package/dist/components/primitives/popover/popover-title.svelte +15 -0
- package/dist/components/primitives/popover/popover-title.svelte.d.ts +5 -0
- package/dist/components/primitives/popover/popover-trigger.svelte +17 -0
- package/dist/components/primitives/popover/popover-trigger.svelte.d.ts +4 -0
- package/dist/components/primitives/popover/popover.svelte +7 -0
- package/dist/components/primitives/popover/popover.svelte.d.ts +3 -0
- package/dist/components/primitives/resizable/resizable-handle.svelte +6 -2
- package/dist/components/primitives/resizable/resizable-handle.svelte.d.ts +2 -0
- package/dist/components/primitives/resizable/resizable-pane-group.svelte +1 -4
- package/dist/components/primitives/scroll-area/scroll-area.svelte +1 -1
- package/dist/components/primitives/search/search.svelte +3 -3
- package/dist/components/primitives/select/select-content.svelte +1 -1
- package/dist/components/primitives/select/select-trigger.svelte +1 -1
- package/dist/components/primitives/severity.d.ts +7 -0
- package/dist/components/primitives/severity.js +19 -0
- package/dist/components/primitives/slider/slider.svelte +8 -3
- package/dist/components/primitives/slider/slider.svelte.d.ts +5 -1
- package/dist/components/primitives/sonner/sonner.svelte +1 -1
- package/dist/components/primitives/spinner/index.d.ts +1 -0
- package/dist/components/primitives/spinner/index.js +1 -0
- package/dist/components/primitives/spinner/spinner.svelte +29 -0
- package/dist/components/primitives/spinner/spinner.svelte.d.ts +4 -0
- package/dist/components/primitives/switch/switch.svelte +2 -2
- package/dist/components/primitives/tabs/tabs-list.svelte +27 -5
- package/dist/components/primitives/tabs/tabs-list.svelte.d.ts +22 -1
- package/dist/components/primitives/tabs/tabs-trigger.svelte +23 -5
- package/dist/components/primitives/tabs/tabs-trigger.svelte.d.ts +22 -1
- package/dist/components/primitives/tabs/tabs.svelte +6 -2
- package/dist/components/primitives/tabs/tabs.svelte.d.ts +5 -1
- package/dist/components/primitives/textarea/textarea.svelte +1 -1
- package/dist/components/primitives/theme-switcher/ThemeSwitcher.svelte +1 -1
- package/dist/components/primitives/toggle/index.d.ts +3 -0
- package/dist/components/primitives/toggle/index.js +5 -0
- package/dist/components/primitives/toggle/toggle.svelte +54 -0
- package/dist/components/primitives/toggle/toggle.svelte.d.ts +46 -0
- package/dist/components/primitives/toggle-group/index.d.ts +3 -0
- package/dist/components/primitives/toggle-group/index.js +5 -0
- package/dist/components/primitives/toggle-group/toggle-group-item.svelte +35 -0
- package/dist/components/primitives/toggle-group/toggle-group-item.svelte.d.ts +6 -0
- package/dist/components/primitives/toggle-group/toggle-group.svelte +75 -0
- package/dist/components/primitives/toggle-group/toggle-group.svelte.d.ts +17 -0
- package/dist/components/viewer/MeshMetadataPanel.svelte +119 -0
- package/dist/components/viewer/MeshMetadataPanel.svelte.d.ts +9 -0
- package/dist/components/viewer/SceneManager.svelte +14 -5
- package/dist/components/viewer/Viewer.svelte +243 -221
- package/dist/components/viewer/Viewer.svelte.d.ts +3 -0
- package/dist/compute/run-panel-action.d.ts +8 -0
- package/dist/compute/run-panel-action.js +12 -0
- package/dist/compute/solving.svelte.d.ts +11 -7
- package/dist/compute/solving.svelte.js +64 -45
- package/dist/compute/useSolveSession.svelte.js +3 -0
- package/dist/constants.d.ts +6 -8
- package/dist/constants.js +7 -9
- package/dist/contexts/hostContext.svelte.d.ts +39 -0
- package/dist/contexts/hostContext.svelte.js +9 -0
- package/dist/i18n/localeContext.svelte.d.ts +10 -3
- package/dist/i18n/localeContext.svelte.js +27 -5
- package/dist/i18n/messages.d.ts +150 -2
- package/dist/i18n/messages.js +261 -11
- package/dist/index.d.ts +4 -1
- package/dist/index.js +3 -0
- package/dist/public.d.ts +1 -1
- package/dist/schema/host-support.d.ts +29 -0
- package/dist/schema/host-support.js +97 -0
- package/dist/schema/option-display.d.ts +12 -0
- package/dist/schema/option-display.js +29 -0
- package/dist/schema/param-exporter.d.ts +4 -1
- package/dist/schema/param-exporter.js +10 -6
- package/dist/schema/visibility-rules.js +21 -0
- package/dist/styles/base.css +80 -10
- package/dist/types/actionButton.d.ts +17 -3
- package/dist/types/presetLabels.d.ts +3 -2
- package/dist/types/presetLabels.js +9 -8
- package/dist/utils/file-download.js +10 -22
- package/dist/utils/host-files.d.ts +12 -0
- package/dist/utils/host-files.js +46 -0
- package/dist/utils/loadScript.d.ts +2 -0
- package/dist/utils/loadScript.js +2 -0
- package/dist/utils/webp-to-png.d.ts +10 -0
- package/dist/utils/webp-to-png.js +41 -0
- package/package.json +15 -15
- package/src/lib/components/ConfirmDialog.svelte +2 -10
- package/src/lib/components/ErrorScreen.svelte +21 -27
- package/src/lib/components/compute/AppLayout.svelte +286 -116
- package/src/lib/components/compute/ComputeApp.svelte +45 -24
- package/src/lib/components/compute/ComputeMessagesDialog.svelte +47 -83
- package/src/lib/components/compute/ParameterPresetManager.svelte +37 -130
- package/src/lib/components/compute/SolveMessages.svelte +131 -77
- package/src/lib/components/layout/AppShell.svelte +10 -6
- package/src/lib/components/layout/PageFooter.svelte +23 -11
- package/src/lib/components/layout/PageHeader.svelte +11 -7
- package/src/lib/components/layout/Pagination.svelte +2 -4
- package/src/lib/components/layout/SectionHeader.svelte +4 -2
- package/src/lib/components/layout/SideNav.svelte +56 -7
- package/src/lib/components/preview/ChartOutput.svelte +35 -25
- package/src/lib/components/preview/Group.svelte +92 -103
- package/src/lib/components/preview/HelpButton.svelte +36 -0
- package/src/lib/components/preview/ImageOutput.svelte +430 -71
- package/src/lib/components/preview/InputControl.svelte +163 -90
- package/src/lib/components/preview/OutputDisplay.svelte +28 -33
- package/src/lib/components/preview/TabBar.svelte +106 -22
- package/src/lib/components/preview/TabContent.svelte +63 -57
- package/src/lib/components/preview/TabLayout.svelte +27 -5
- package/src/lib/components/preview/inputs/CheckboxInput.svelte +7 -7
- package/src/lib/components/preview/inputs/ChecklistInput.svelte +7 -2
- package/src/lib/components/preview/inputs/ColorInput.svelte +4 -2
- package/src/lib/components/preview/inputs/DropdownInput.svelte +19 -4
- package/src/lib/components/preview/inputs/FileInput.svelte +112 -108
- package/src/lib/components/preview/inputs/GeometryInput.svelte +128 -0
- package/src/lib/components/preview/inputs/NumberInput.svelte +123 -61
- package/src/lib/components/preview/inputs/OptionGlyph.svelte +29 -0
- package/src/lib/components/preview/inputs/SegmentedInput.svelte +44 -0
- package/src/lib/components/preview/inputs/TextInput.svelte +8 -4
- package/src/lib/components/preview/inputs/TileInput.svelte +80 -0
- package/src/lib/components/preview/inputs/index.ts +3 -0
- package/src/lib/components/primitives/CalculateButton.svelte +56 -24
- package/src/lib/components/primitives/Callout.svelte +11 -18
- package/src/lib/components/primitives/DataTable.svelte +38 -5
- package/src/lib/components/primitives/FilterableDropdown.svelte +42 -129
- package/src/lib/components/primitives/IssueList.svelte +56 -0
- package/src/lib/components/primitives/SeverityIcon.svelte +15 -0
- package/src/lib/components/primitives/SolvingIndicator.svelte +43 -42
- package/src/lib/components/primitives/StateDisplay.svelte +19 -79
- package/src/lib/components/primitives/ViewToggle.svelte +18 -33
- package/src/lib/components/primitives/alert-dialog/alert-dialog-action.svelte +9 -3
- package/src/lib/components/primitives/alert-dialog/alert-dialog-content.svelte +1 -1
- package/src/lib/components/primitives/alert-dialog/alert-dialog-overlay.svelte +1 -1
- package/src/lib/components/primitives/badge/badge.svelte +2 -2
- package/src/lib/components/primitives/button/button.svelte +6 -2
- package/src/lib/components/primitives/card/card-header.svelte +1 -1
- package/src/lib/components/primitives/card/card.svelte +21 -5
- package/src/lib/components/primitives/card/index.ts +1 -4
- package/src/lib/components/primitives/checkbox/checkbox.svelte +1 -1
- package/src/lib/components/primitives/command/command-dialog.svelte +42 -0
- package/src/lib/components/primitives/command/command-empty.svelte +17 -0
- package/src/lib/components/primitives/command/command-group.svelte +33 -0
- package/src/lib/components/primitives/command/command-input.svelte +36 -0
- package/src/lib/components/primitives/command/command-item.svelte +28 -0
- package/src/lib/components/primitives/command/command-link-item.svelte +21 -0
- package/src/lib/components/primitives/command/command-list.svelte +20 -0
- package/src/lib/components/primitives/command/command-loading.svelte +7 -0
- package/src/lib/components/primitives/command/command-separator.svelte +17 -0
- package/src/lib/components/primitives/command/command-shortcut.svelte +23 -0
- package/src/lib/components/primitives/command/command.svelte +28 -0
- package/src/lib/components/primitives/command/index.ts +37 -0
- package/src/lib/components/primitives/context-menu/context-menu-content.svelte +1 -1
- package/src/lib/components/primitives/context-menu/context-menu-sub-content.svelte +1 -1
- package/src/lib/components/primitives/dialog/dialog-content.svelte +11 -3
- package/src/lib/components/primitives/dialog/dialog-overlay.svelte +1 -1
- package/src/lib/components/primitives/dialog/dialog-title.svelte +6 -2
- package/src/lib/components/primitives/drawer/Drawer.svelte +2 -2
- package/src/lib/components/primitives/dropdown-menu/dropdown-menu-checkbox-group.svelte +16 -0
- package/src/lib/components/primitives/dropdown-menu/dropdown-menu-checkbox-item.svelte +46 -0
- package/src/lib/components/primitives/dropdown-menu/dropdown-menu-content.svelte +31 -0
- package/src/lib/components/primitives/dropdown-menu/dropdown-menu-group-heading.svelte +22 -0
- package/src/lib/components/primitives/dropdown-menu/dropdown-menu-group.svelte +7 -0
- package/src/lib/components/primitives/dropdown-menu/dropdown-menu-item.svelte +27 -0
- package/src/lib/components/primitives/dropdown-menu/dropdown-menu-label.svelte +24 -0
- package/src/lib/components/primitives/dropdown-menu/dropdown-menu-portal.svelte +7 -0
- package/src/lib/components/primitives/dropdown-menu/dropdown-menu-radio-group.svelte +16 -0
- package/src/lib/components/primitives/dropdown-menu/dropdown-menu-radio-item.svelte +36 -0
- package/src/lib/components/primitives/dropdown-menu/dropdown-menu-separator.svelte +17 -0
- package/src/lib/components/primitives/dropdown-menu/dropdown-menu-shortcut.svelte +23 -0
- package/src/lib/components/primitives/dropdown-menu/dropdown-menu-sub-content.svelte +31 -0
- package/src/lib/components/primitives/dropdown-menu/dropdown-menu-sub-trigger.svelte +29 -0
- package/src/lib/components/primitives/dropdown-menu/dropdown-menu-sub.svelte +7 -0
- package/src/lib/components/primitives/dropdown-menu/dropdown-menu-trigger.svelte +7 -0
- package/src/lib/components/primitives/dropdown-menu/dropdown-menu.svelte +7 -0
- package/src/lib/components/primitives/dropdown-menu/index.ts +54 -0
- package/src/lib/components/primitives/{alert/alert-description.svelte → empty/empty-content.svelte} +3 -3
- package/src/lib/components/primitives/empty/empty-description.svelte +23 -0
- package/src/lib/components/primitives/{alert/alert-title.svelte → empty/empty-header.svelte} +3 -3
- package/src/lib/components/primitives/empty/empty-media.svelte +41 -0
- package/src/lib/components/primitives/{card/card-action.svelte → empty/empty-title.svelte} +2 -2
- package/src/lib/components/primitives/empty/empty.svelte +23 -0
- package/src/lib/components/primitives/empty/index.ts +22 -0
- package/src/lib/components/primitives/index.ts +10 -1
- package/src/lib/components/primitives/input/input.svelte +4 -4
- package/src/lib/components/primitives/input-group/index.ts +22 -0
- package/src/lib/components/primitives/input-group/input-group-addon.svelte +53 -0
- package/src/lib/components/primitives/input-group/input-group-button.svelte +49 -0
- package/src/lib/components/primitives/input-group/input-group-input.svelte +25 -0
- package/src/lib/components/primitives/input-group/input-group-text.svelte +22 -0
- package/src/lib/components/primitives/input-group/input-group-textarea.svelte +23 -0
- package/src/lib/components/primitives/input-group/input-group.svelte +24 -0
- package/src/lib/components/primitives/mode-toggle/mode-toggle.svelte +6 -7
- package/src/lib/components/primitives/popover/index.ts +28 -0
- package/src/lib/components/primitives/popover/popover-close.svelte +7 -0
- package/src/lib/components/primitives/popover/popover-content.svelte +31 -0
- package/src/lib/components/primitives/popover/popover-description.svelte +20 -0
- package/src/lib/components/primitives/popover/popover-header.svelte +20 -0
- package/src/lib/components/primitives/popover/popover-portal.svelte +7 -0
- package/src/lib/components/primitives/popover/popover-title.svelte +15 -0
- package/src/lib/components/primitives/popover/popover-trigger.svelte +17 -0
- package/src/lib/components/primitives/popover/popover.svelte +7 -0
- package/src/lib/components/primitives/resizable/resizable-handle.svelte +6 -2
- package/src/lib/components/primitives/resizable/resizable-pane-group.svelte +1 -4
- package/src/lib/components/primitives/scroll-area/scroll-area.svelte +1 -1
- package/src/lib/components/primitives/search/search.svelte +3 -3
- package/src/lib/components/primitives/select/select-content.svelte +1 -1
- package/src/lib/components/primitives/select/select-trigger.svelte +1 -1
- package/src/lib/components/primitives/severity.ts +26 -0
- package/src/lib/components/primitives/slider/slider.svelte +8 -3
- package/src/lib/components/primitives/sonner/sonner.svelte +1 -1
- package/src/lib/components/primitives/spinner/index.ts +1 -0
- package/src/lib/components/primitives/spinner/spinner.svelte +29 -0
- package/src/lib/components/primitives/switch/switch.svelte +2 -2
- package/src/lib/components/primitives/tabs/tabs-list.svelte +27 -5
- package/src/lib/components/primitives/tabs/tabs-trigger.svelte +23 -5
- package/src/lib/components/primitives/tabs/tabs.svelte +6 -2
- package/src/lib/components/primitives/textarea/textarea.svelte +1 -1
- package/src/lib/components/primitives/theme-switcher/ThemeSwitcher.svelte +1 -1
- package/src/lib/components/primitives/toggle/index.ts +13 -0
- package/src/lib/components/primitives/toggle/toggle.svelte +54 -0
- package/src/lib/components/primitives/toggle-group/index.ts +10 -0
- package/src/lib/components/primitives/toggle-group/toggle-group-item.svelte +35 -0
- package/src/lib/components/primitives/toggle-group/toggle-group.svelte +75 -0
- package/src/lib/components/viewer/MeshMetadataPanel.svelte +119 -0
- package/src/lib/components/viewer/SceneManager.svelte +14 -5
- package/src/lib/components/viewer/Viewer.svelte +243 -221
- package/src/lib/compute/run-panel-action.ts +16 -0
- package/src/lib/compute/solving.svelte.ts +66 -50
- package/src/lib/compute/useSolveSession.svelte.ts +3 -0
- package/src/lib/constants.ts +7 -9
- package/src/lib/contexts/hostContext.svelte.ts +51 -0
- package/src/lib/i18n/localeContext.svelte.ts +40 -5
- package/src/lib/i18n/messages.ts +453 -13
- package/src/lib/index.ts +21 -0
- package/src/lib/public.ts +1 -0
- package/src/lib/schema/host-support.ts +129 -0
- package/src/lib/schema/option-display.ts +44 -0
- package/src/lib/schema/param-exporter.ts +10 -7
- package/src/lib/schema/visibility-rules.ts +23 -0
- package/src/lib/styles/base.css +80 -10
- package/src/lib/types/actionButton.ts +16 -3
- package/src/lib/types/presetLabels.ts +13 -11
- package/src/lib/utils/file-download.ts +11 -21
- package/src/lib/utils/host-files.ts +61 -0
- package/src/lib/utils/loadScript.ts +3 -0
- package/src/lib/utils/webp-to-png.ts +48 -0
- package/dist/components/primitives/alert/alert.svelte +0 -44
- package/dist/components/primitives/alert/alert.svelte.d.ts +0 -26
- package/dist/components/primitives/alert/index.d.ts +0 -5
- package/dist/components/primitives/alert/index.js +0 -7
- package/dist/components/viewer/MeshMetadataDialog.svelte +0 -126
- package/dist/components/viewer/MeshMetadataDialog.svelte.d.ts +0 -10
- package/src/lib/components/primitives/alert/alert.svelte +0 -44
- package/src/lib/components/primitives/alert/index.ts +0 -14
- package/src/lib/components/viewer/MeshMetadataDialog.svelte +0 -126
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// Grasshopper's PDF export can't read WebP: the plugin's PDF library has no WebP decoder, and
|
|
2
|
+
// nothing on Windows or Rhino.Compute decodes it reliably. The browser can, so a WebP picked for
|
|
3
|
+
// an input that also takes PNG is re-encoded here. PNG rather than JPEG keeps transparency.
|
|
4
|
+
|
|
5
|
+
/** True when a WebP should go out as PNG: the input takes PNG, so a PNG is a valid value. */
|
|
6
|
+
export function shouldConvertWebp(fileEnding: string, acceptedFormats: readonly string[]): boolean {
|
|
7
|
+
return fileEnding === '.webp' && acceptedFormats.includes('.png');
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
/** Whether the input takes a file with this ending, counting a WebP it would get as PNG. */
|
|
11
|
+
export function acceptsFileEnding(fileEnding: string, acceptedFormats: readonly string[]): boolean {
|
|
12
|
+
const ending = fileEnding.toLowerCase();
|
|
13
|
+
if (acceptedFormats.length === 0 || acceptedFormats.includes(ending)) return true;
|
|
14
|
+
return shouldConvertWebp(ending, acceptedFormats);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const ascii = (bytes: Uint8Array, start: number, end: number) =>
|
|
18
|
+
String.fromCharCode(...bytes.subarray(start, end));
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* By content, not name: image CDNs serve WebP from URLs with no extension or one naming another
|
|
22
|
+
* format. A WebP file starts `RIFF`, a 4-byte size, then `WEBP`.
|
|
23
|
+
*/
|
|
24
|
+
export async function isWebp(blob: Blob): Promise<boolean> {
|
|
25
|
+
if (blob.type === 'image/webp') return true;
|
|
26
|
+
const head = new Uint8Array(await blob.slice(0, 12).arrayBuffer());
|
|
27
|
+
return head.length === 12 && ascii(head, 0, 4) === 'RIFF' && ascii(head, 8, 12) === 'WEBP';
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export async function webpToPng(blob: Blob): Promise<Blob> {
|
|
31
|
+
const bitmap = await createImageBitmap(blob);
|
|
32
|
+
try {
|
|
33
|
+
const canvas = document.createElement('canvas');
|
|
34
|
+
canvas.width = bitmap.width;
|
|
35
|
+
canvas.height = bitmap.height;
|
|
36
|
+
const context = canvas.getContext('2d');
|
|
37
|
+
if (!context) throw new Error('Canvas 2D context unavailable');
|
|
38
|
+
context.drawImage(bitmap, 0, 0);
|
|
39
|
+
return await new Promise<Blob>((resolve, reject) =>
|
|
40
|
+
canvas.toBlob(
|
|
41
|
+
(png) => (png ? resolve(png) : reject(new Error('PNG encoding failed'))),
|
|
42
|
+
'image/png'
|
|
43
|
+
)
|
|
44
|
+
);
|
|
45
|
+
} finally {
|
|
46
|
+
bitmap.close();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
<script lang="ts" module>
|
|
2
|
-
import { type VariantProps, tv } from 'tailwind-variants';
|
|
3
|
-
|
|
4
|
-
export const alertVariants = tv({
|
|
5
|
-
base: 'relative grid w-full grid-cols-[0_1fr] items-start gap-y-0.5 rounded-lg border px-4 py-3 text-sm has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] has-[>svg]:gap-x-3 [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current',
|
|
6
|
-
variants: {
|
|
7
|
-
variant: {
|
|
8
|
-
default: 'bg-card text-card-foreground',
|
|
9
|
-
destructive:
|
|
10
|
-
'text-destructive bg-card *:data-[slot=alert-description]:text-destructive/90 [&>svg]:text-current'
|
|
11
|
-
}
|
|
12
|
-
},
|
|
13
|
-
defaultVariants: {
|
|
14
|
-
variant: 'default'
|
|
15
|
-
}
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
export type AlertVariant = VariantProps<typeof alertVariants>['variant'];
|
|
19
|
-
</script>
|
|
20
|
-
|
|
21
|
-
<script lang="ts">
|
|
22
|
-
import type { HTMLAttributes } from 'svelte/elements';
|
|
23
|
-
import { cn, type WithElementRef } from '../../../utils.js';
|
|
24
|
-
|
|
25
|
-
let {
|
|
26
|
-
ref = $bindable(null),
|
|
27
|
-
class: className,
|
|
28
|
-
variant = 'default',
|
|
29
|
-
children,
|
|
30
|
-
...restProps
|
|
31
|
-
}: WithElementRef<HTMLAttributes<HTMLDivElement>> & {
|
|
32
|
-
variant?: AlertVariant;
|
|
33
|
-
} = $props();
|
|
34
|
-
</script>
|
|
35
|
-
|
|
36
|
-
<div
|
|
37
|
-
bind:this={ref}
|
|
38
|
-
data-slot="alert"
|
|
39
|
-
class={cn(alertVariants({ variant }), className)}
|
|
40
|
-
{...restProps}
|
|
41
|
-
role="alert"
|
|
42
|
-
>
|
|
43
|
-
{@render children?.()}
|
|
44
|
-
</div>
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { type VariantProps } from 'tailwind-variants';
|
|
2
|
-
export declare const alertVariants: import("tailwind-variants").TVReturnType<{
|
|
3
|
-
variant: {
|
|
4
|
-
default: "bg-card text-card-foreground";
|
|
5
|
-
destructive: "text-destructive bg-card *:data-[slot=alert-description]:text-destructive/90 [&>svg]:text-current";
|
|
6
|
-
};
|
|
7
|
-
}, undefined, "relative grid w-full grid-cols-[0_1fr] items-start gap-y-0.5 rounded-lg border px-4 py-3 text-sm has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] has-[>svg]:gap-x-3 [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current", {
|
|
8
|
-
variant: {
|
|
9
|
-
default: "bg-card text-card-foreground";
|
|
10
|
-
destructive: "text-destructive bg-card *:data-[slot=alert-description]:text-destructive/90 [&>svg]:text-current";
|
|
11
|
-
};
|
|
12
|
-
}, undefined, import("tailwind-variants").TVReturnTypeLike<{
|
|
13
|
-
variant: {
|
|
14
|
-
default: "bg-card text-card-foreground";
|
|
15
|
-
destructive: "text-destructive bg-card *:data-[slot=alert-description]:text-destructive/90 [&>svg]:text-current";
|
|
16
|
-
};
|
|
17
|
-
}, undefined>>;
|
|
18
|
-
export type AlertVariant = VariantProps<typeof alertVariants>['variant'];
|
|
19
|
-
import type { HTMLAttributes } from 'svelte/elements';
|
|
20
|
-
import { type WithElementRef } from '../../../utils.js';
|
|
21
|
-
type $$ComponentProps = WithElementRef<HTMLAttributes<HTMLDivElement>> & {
|
|
22
|
-
variant?: AlertVariant;
|
|
23
|
-
};
|
|
24
|
-
declare const Alert: import("svelte").Component<$$ComponentProps, {}, "ref">;
|
|
25
|
-
type Alert = ReturnType<typeof Alert>;
|
|
26
|
-
export default Alert;
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import Root from './alert.svelte';
|
|
2
|
-
import Description from './alert-description.svelte';
|
|
3
|
-
import Title from './alert-title.svelte';
|
|
4
|
-
export { alertVariants, type AlertVariant } from './alert.svelte';
|
|
5
|
-
export { Root, Description, Title, Root as Alert, Description as AlertDescription, Title as AlertTitle };
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import Root from './alert.svelte';
|
|
2
|
-
import Description from './alert-description.svelte';
|
|
3
|
-
import Title from './alert-title.svelte';
|
|
4
|
-
export { alertVariants } from './alert.svelte';
|
|
5
|
-
export { Root, Description, Title,
|
|
6
|
-
//
|
|
7
|
-
Root as Alert, Description as AlertDescription, Title as AlertTitle };
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import * as Dialog from '../primitives/dialog/index.js';
|
|
3
|
-
import { getLocaleContext } from '../../i18n/localeContext.svelte';
|
|
4
|
-
|
|
5
|
-
const locale = getLocaleContext();
|
|
6
|
-
const t = $derived(locale.messages);
|
|
7
|
-
|
|
8
|
-
interface Props {
|
|
9
|
-
open: boolean;
|
|
10
|
-
metadata: Record<string, any> | null;
|
|
11
|
-
meshName: string | null;
|
|
12
|
-
onOpenChange: (open: boolean) => void;
|
|
13
|
-
isFullscreen?: boolean;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
const EXCLUDED_KEYS = new Set(['name', 'layer', 'id']);
|
|
17
|
-
|
|
18
|
-
let {
|
|
19
|
-
open = $bindable(),
|
|
20
|
-
metadata,
|
|
21
|
-
meshName,
|
|
22
|
-
onOpenChange,
|
|
23
|
-
isFullscreen = false
|
|
24
|
-
}: Props = $props();
|
|
25
|
-
|
|
26
|
-
$effect(() => {
|
|
27
|
-
document.body.toggleAttribute('data-viewer-fullscreen', isFullscreen);
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
const getFilteredMetadata = () => {
|
|
31
|
-
if (!metadata) return {};
|
|
32
|
-
const entries = Object.entries(metadata).filter(([key]) => !EXCLUDED_KEYS.has(key));
|
|
33
|
-
const result: Record<string, unknown> = {};
|
|
34
|
-
for (const [key, value] of entries) {
|
|
35
|
-
if (
|
|
36
|
-
key === 'metadata' &&
|
|
37
|
-
typeof value === 'object' &&
|
|
38
|
-
value !== null &&
|
|
39
|
-
!Array.isArray(value)
|
|
40
|
-
) {
|
|
41
|
-
Object.assign(result, value);
|
|
42
|
-
} else {
|
|
43
|
-
result[key] = value;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
return result;
|
|
47
|
-
};
|
|
48
|
-
</script>
|
|
49
|
-
|
|
50
|
-
<Dialog.Root bind:open {onOpenChange}>
|
|
51
|
-
<Dialog.Content class="min-w-60 max-w-xs p-0 gap-0 w-auto overflow-hidden">
|
|
52
|
-
{#if meshName}
|
|
53
|
-
<div class="px-4 pt-3 pb-2 border-b">
|
|
54
|
-
<Dialog.Title class="text-sm font-semibold">{meshName}</Dialog.Title>
|
|
55
|
-
</div>
|
|
56
|
-
{:else}
|
|
57
|
-
<Dialog.Title class="sr-only">{t.objectFallbackName}</Dialog.Title>
|
|
58
|
-
{/if}
|
|
59
|
-
|
|
60
|
-
<div class="max-h-80 overflow-y-auto">
|
|
61
|
-
{#if !metadata || Object.keys(getFilteredMetadata()).length === 0}
|
|
62
|
-
<p class="px-4 py-3 text-xs text-muted-foreground">{t.noMetadata}</p>
|
|
63
|
-
{:else}
|
|
64
|
-
<table class="text-xs w-full border-collapse">
|
|
65
|
-
<tbody>
|
|
66
|
-
{#each Object.entries(getFilteredMetadata()) as [key, value] (key)}
|
|
67
|
-
<tr class="border-b border-border/60 transition-colors hover:bg-muted/40">
|
|
68
|
-
<th
|
|
69
|
-
scope="row"
|
|
70
|
-
class="px-4 py-2 font-normal text-left align-top whitespace-nowrap text-muted-foreground"
|
|
71
|
-
>{key}</th
|
|
72
|
-
>
|
|
73
|
-
<td class="px-4 py-2 text-right align-top text-foreground">
|
|
74
|
-
{#if typeof value === 'object' && value !== null}
|
|
75
|
-
{#if Array.isArray(value)}
|
|
76
|
-
<div class="space-y-1 text-left">
|
|
77
|
-
{#each value as item, index (index)}
|
|
78
|
-
{#if typeof item === 'object'}
|
|
79
|
-
<div class="space-y-0.5">
|
|
80
|
-
{#each Object.entries(item) as [k, v] (k)}
|
|
81
|
-
<div class="gap-2 flex">
|
|
82
|
-
<span class="shrink-0 text-muted-foreground">{k}:</span>
|
|
83
|
-
<span>{v}</span>
|
|
84
|
-
</div>
|
|
85
|
-
{/each}
|
|
86
|
-
</div>
|
|
87
|
-
{:else}
|
|
88
|
-
<div>{item}</div>
|
|
89
|
-
{/if}
|
|
90
|
-
{/each}
|
|
91
|
-
</div>
|
|
92
|
-
{:else}
|
|
93
|
-
<div class="space-y-0.5 text-left">
|
|
94
|
-
{#each Object.entries(value) as [k, v] (k)}
|
|
95
|
-
<div class="gap-2 flex">
|
|
96
|
-
<span class="shrink-0 text-muted-foreground">{k}:</span>
|
|
97
|
-
<span>{v}</span>
|
|
98
|
-
</div>
|
|
99
|
-
{/each}
|
|
100
|
-
</div>
|
|
101
|
-
{/if}
|
|
102
|
-
{:else if typeof value === 'number'}
|
|
103
|
-
<span class="font-mono">{value}</span>
|
|
104
|
-
{:else if typeof value === 'boolean'}
|
|
105
|
-
<span class={value ? 'text-green-500' : 'text-muted-foreground'}
|
|
106
|
-
>{value ? 'true' : 'false'}</span
|
|
107
|
-
>
|
|
108
|
-
{:else}
|
|
109
|
-
<span class="break-all">{value}</span>
|
|
110
|
-
{/if}
|
|
111
|
-
</td>
|
|
112
|
-
</tr>
|
|
113
|
-
{/each}
|
|
114
|
-
</tbody>
|
|
115
|
-
</table>
|
|
116
|
-
{/if}
|
|
117
|
-
</div>
|
|
118
|
-
</Dialog.Content>
|
|
119
|
-
</Dialog.Root>
|
|
120
|
-
|
|
121
|
-
<style>
|
|
122
|
-
:global([data-viewer-fullscreen] [data-slot='dialog-content']),
|
|
123
|
-
:global([data-viewer-fullscreen] [data-slot='dialog-overlay']) {
|
|
124
|
-
z-index: 10001;
|
|
125
|
-
}
|
|
126
|
-
</style>
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
interface Props {
|
|
2
|
-
open: boolean;
|
|
3
|
-
metadata: Record<string, any> | null;
|
|
4
|
-
meshName: string | null;
|
|
5
|
-
onOpenChange: (open: boolean) => void;
|
|
6
|
-
isFullscreen?: boolean;
|
|
7
|
-
}
|
|
8
|
-
declare const MeshMetadataDialog: import("svelte").Component<Props, {}, "open">;
|
|
9
|
-
type MeshMetadataDialog = ReturnType<typeof MeshMetadataDialog>;
|
|
10
|
-
export default MeshMetadataDialog;
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
<script lang="ts" module>
|
|
2
|
-
import { type VariantProps, tv } from 'tailwind-variants';
|
|
3
|
-
|
|
4
|
-
export const alertVariants = tv({
|
|
5
|
-
base: 'relative grid w-full grid-cols-[0_1fr] items-start gap-y-0.5 rounded-lg border px-4 py-3 text-sm has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] has-[>svg]:gap-x-3 [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current',
|
|
6
|
-
variants: {
|
|
7
|
-
variant: {
|
|
8
|
-
default: 'bg-card text-card-foreground',
|
|
9
|
-
destructive:
|
|
10
|
-
'text-destructive bg-card *:data-[slot=alert-description]:text-destructive/90 [&>svg]:text-current'
|
|
11
|
-
}
|
|
12
|
-
},
|
|
13
|
-
defaultVariants: {
|
|
14
|
-
variant: 'default'
|
|
15
|
-
}
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
export type AlertVariant = VariantProps<typeof alertVariants>['variant'];
|
|
19
|
-
</script>
|
|
20
|
-
|
|
21
|
-
<script lang="ts">
|
|
22
|
-
import type { HTMLAttributes } from 'svelte/elements';
|
|
23
|
-
import { cn, type WithElementRef } from '$lib/utils.js';
|
|
24
|
-
|
|
25
|
-
let {
|
|
26
|
-
ref = $bindable(null),
|
|
27
|
-
class: className,
|
|
28
|
-
variant = 'default',
|
|
29
|
-
children,
|
|
30
|
-
...restProps
|
|
31
|
-
}: WithElementRef<HTMLAttributes<HTMLDivElement>> & {
|
|
32
|
-
variant?: AlertVariant;
|
|
33
|
-
} = $props();
|
|
34
|
-
</script>
|
|
35
|
-
|
|
36
|
-
<div
|
|
37
|
-
bind:this={ref}
|
|
38
|
-
data-slot="alert"
|
|
39
|
-
class={cn(alertVariants({ variant }), className)}
|
|
40
|
-
{...restProps}
|
|
41
|
-
role="alert"
|
|
42
|
-
>
|
|
43
|
-
{@render children?.()}
|
|
44
|
-
</div>
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import Root from './alert.svelte';
|
|
2
|
-
import Description from './alert-description.svelte';
|
|
3
|
-
import Title from './alert-title.svelte';
|
|
4
|
-
export { alertVariants, type AlertVariant } from './alert.svelte';
|
|
5
|
-
|
|
6
|
-
export {
|
|
7
|
-
Root,
|
|
8
|
-
Description,
|
|
9
|
-
Title,
|
|
10
|
-
//
|
|
11
|
-
Root as Alert,
|
|
12
|
-
Description as AlertDescription,
|
|
13
|
-
Title as AlertTitle
|
|
14
|
-
};
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import * as Dialog from '../primitives/dialog/index.js';
|
|
3
|
-
import { getLocaleContext } from '$lib/i18n/localeContext.svelte';
|
|
4
|
-
|
|
5
|
-
const locale = getLocaleContext();
|
|
6
|
-
const t = $derived(locale.messages);
|
|
7
|
-
|
|
8
|
-
interface Props {
|
|
9
|
-
open: boolean;
|
|
10
|
-
metadata: Record<string, any> | null;
|
|
11
|
-
meshName: string | null;
|
|
12
|
-
onOpenChange: (open: boolean) => void;
|
|
13
|
-
isFullscreen?: boolean;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
const EXCLUDED_KEYS = new Set(['name', 'layer', 'id']);
|
|
17
|
-
|
|
18
|
-
let {
|
|
19
|
-
open = $bindable(),
|
|
20
|
-
metadata,
|
|
21
|
-
meshName,
|
|
22
|
-
onOpenChange,
|
|
23
|
-
isFullscreen = false
|
|
24
|
-
}: Props = $props();
|
|
25
|
-
|
|
26
|
-
$effect(() => {
|
|
27
|
-
document.body.toggleAttribute('data-viewer-fullscreen', isFullscreen);
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
const getFilteredMetadata = () => {
|
|
31
|
-
if (!metadata) return {};
|
|
32
|
-
const entries = Object.entries(metadata).filter(([key]) => !EXCLUDED_KEYS.has(key));
|
|
33
|
-
const result: Record<string, unknown> = {};
|
|
34
|
-
for (const [key, value] of entries) {
|
|
35
|
-
if (
|
|
36
|
-
key === 'metadata' &&
|
|
37
|
-
typeof value === 'object' &&
|
|
38
|
-
value !== null &&
|
|
39
|
-
!Array.isArray(value)
|
|
40
|
-
) {
|
|
41
|
-
Object.assign(result, value);
|
|
42
|
-
} else {
|
|
43
|
-
result[key] = value;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
return result;
|
|
47
|
-
};
|
|
48
|
-
</script>
|
|
49
|
-
|
|
50
|
-
<Dialog.Root bind:open {onOpenChange}>
|
|
51
|
-
<Dialog.Content class="min-w-60 max-w-xs p-0 gap-0 w-auto overflow-hidden">
|
|
52
|
-
{#if meshName}
|
|
53
|
-
<div class="px-4 pt-3 pb-2 border-b">
|
|
54
|
-
<Dialog.Title class="text-sm font-semibold">{meshName}</Dialog.Title>
|
|
55
|
-
</div>
|
|
56
|
-
{:else}
|
|
57
|
-
<Dialog.Title class="sr-only">{t.objectFallbackName}</Dialog.Title>
|
|
58
|
-
{/if}
|
|
59
|
-
|
|
60
|
-
<div class="max-h-80 overflow-y-auto">
|
|
61
|
-
{#if !metadata || Object.keys(getFilteredMetadata()).length === 0}
|
|
62
|
-
<p class="px-4 py-3 text-xs text-muted-foreground">{t.noMetadata}</p>
|
|
63
|
-
{:else}
|
|
64
|
-
<table class="text-xs w-full border-collapse">
|
|
65
|
-
<tbody>
|
|
66
|
-
{#each Object.entries(getFilteredMetadata()) as [key, value] (key)}
|
|
67
|
-
<tr class="border-b border-border/60 transition-colors hover:bg-muted/40">
|
|
68
|
-
<th
|
|
69
|
-
scope="row"
|
|
70
|
-
class="px-4 py-2 font-normal text-left align-top whitespace-nowrap text-muted-foreground"
|
|
71
|
-
>{key}</th
|
|
72
|
-
>
|
|
73
|
-
<td class="px-4 py-2 text-right align-top text-foreground">
|
|
74
|
-
{#if typeof value === 'object' && value !== null}
|
|
75
|
-
{#if Array.isArray(value)}
|
|
76
|
-
<div class="space-y-1 text-left">
|
|
77
|
-
{#each value as item, index (index)}
|
|
78
|
-
{#if typeof item === 'object'}
|
|
79
|
-
<div class="space-y-0.5">
|
|
80
|
-
{#each Object.entries(item) as [k, v] (k)}
|
|
81
|
-
<div class="gap-2 flex">
|
|
82
|
-
<span class="shrink-0 text-muted-foreground">{k}:</span>
|
|
83
|
-
<span>{v}</span>
|
|
84
|
-
</div>
|
|
85
|
-
{/each}
|
|
86
|
-
</div>
|
|
87
|
-
{:else}
|
|
88
|
-
<div>{item}</div>
|
|
89
|
-
{/if}
|
|
90
|
-
{/each}
|
|
91
|
-
</div>
|
|
92
|
-
{:else}
|
|
93
|
-
<div class="space-y-0.5 text-left">
|
|
94
|
-
{#each Object.entries(value) as [k, v] (k)}
|
|
95
|
-
<div class="gap-2 flex">
|
|
96
|
-
<span class="shrink-0 text-muted-foreground">{k}:</span>
|
|
97
|
-
<span>{v}</span>
|
|
98
|
-
</div>
|
|
99
|
-
{/each}
|
|
100
|
-
</div>
|
|
101
|
-
{/if}
|
|
102
|
-
{:else if typeof value === 'number'}
|
|
103
|
-
<span class="font-mono">{value}</span>
|
|
104
|
-
{:else if typeof value === 'boolean'}
|
|
105
|
-
<span class={value ? 'text-green-500' : 'text-muted-foreground'}
|
|
106
|
-
>{value ? 'true' : 'false'}</span
|
|
107
|
-
>
|
|
108
|
-
{:else}
|
|
109
|
-
<span class="break-all">{value}</span>
|
|
110
|
-
{/if}
|
|
111
|
-
</td>
|
|
112
|
-
</tr>
|
|
113
|
-
{/each}
|
|
114
|
-
</tbody>
|
|
115
|
-
</table>
|
|
116
|
-
{/if}
|
|
117
|
-
</div>
|
|
118
|
-
</Dialog.Content>
|
|
119
|
-
</Dialog.Root>
|
|
120
|
-
|
|
121
|
-
<style>
|
|
122
|
-
:global([data-viewer-fullscreen] [data-slot='dialog-content']),
|
|
123
|
-
:global([data-viewer-fullscreen] [data-slot='dialog-overlay']) {
|
|
124
|
-
z-index: 10001;
|
|
125
|
-
}
|
|
126
|
-
</style>
|