@selvajs/ui 6.6.0-beta.2 → 6.6.0-beta.20
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/README.md +0 -3
- package/dist/components/ErrorScreen.svelte +7 -3
- package/dist/components/compute/AppLayout.svelte +307 -123
- package/dist/components/compute/AppLayout.svelte.d.ts +28 -0
- package/dist/components/compute/CollapsedPanelStrip.svelte +4 -2
- package/dist/components/compute/ComputeApp.svelte +46 -22
- package/dist/components/compute/ComputeApp.svelte.d.ts +20 -3
- package/dist/components/compute/ComputeMessagesDialog.svelte +31 -41
- package/dist/components/compute/ParameterPresetManager.svelte +16 -65
- package/dist/components/compute/ParameterPresetManager.svelte.d.ts +4 -5
- package/dist/components/compute/SolveMessages.svelte +128 -121
- package/dist/components/compute/SolveMessages.svelte.d.ts +12 -12
- package/dist/components/layout/AppShell.svelte +10 -6
- package/dist/components/layout/FooterItemRenderer.svelte +2 -2
- package/dist/components/layout/FooterItemRenderer.svelte.d.ts +1 -1
- package/dist/components/layout/PageContent.svelte +3 -2
- package/dist/components/layout/PageFooter.svelte +26 -14
- package/dist/components/layout/PageHeader.svelte +14 -10
- package/dist/components/layout/SectionHeader.svelte +4 -2
- package/dist/components/layout/SideNav.svelte +57 -8
- package/dist/components/layout/SubNav.svelte +2 -2
- package/dist/components/preview/ChartOutput.svelte +131 -65
- package/dist/components/preview/Group.svelte +42 -22
- package/dist/components/preview/HelpButton.svelte +5 -3
- package/dist/components/preview/ImageOutput.svelte +435 -71
- package/dist/components/preview/InputControl.svelte +125 -51
- package/dist/components/preview/InputControl.svelte.d.ts +5 -1
- package/dist/components/preview/OutputDisplay.svelte +42 -28
- package/dist/components/preview/TabBar.svelte +8 -6
- package/dist/components/preview/TabBar.svelte.d.ts +2 -0
- package/dist/components/preview/TabContent.svelte +66 -31
- package/dist/components/preview/TabContent.svelte.d.ts +5 -1
- package/dist/components/preview/TabLayout.svelte +29 -8
- package/dist/components/preview/TabLayout.svelte.d.ts +5 -0
- package/dist/components/preview/inputs/CheckboxInput.svelte +1 -1
- package/dist/components/preview/inputs/ChecklistInput.svelte +11 -6
- package/dist/components/preview/inputs/ChecklistInput.svelte.d.ts +2 -1
- package/dist/components/preview/inputs/ColorInput.svelte +357 -13
- package/dist/components/preview/inputs/ColorInput.svelte.d.ts +2 -0
- package/dist/components/preview/inputs/DropdownInput.svelte +20 -5
- package/dist/components/preview/inputs/DropdownInput.svelte.d.ts +2 -1
- package/dist/components/preview/inputs/FileInput.svelte +115 -103
- 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 +98 -16
- 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 +45 -0
- package/dist/components/preview/inputs/SegmentedInput.svelte.d.ts +12 -0
- package/dist/components/preview/inputs/TextInput.svelte +11 -6
- package/dist/components/preview/inputs/TileInput.svelte +83 -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 +8 -6
- package/dist/components/primitives/Callout.svelte.d.ts +4 -4
- package/dist/components/primitives/DataTable.svelte +38 -4
- package/dist/components/primitives/DataTable.svelte.d.ts +2 -0
- package/dist/components/primitives/FilterableDropdown.svelte +13 -1
- package/dist/components/primitives/FilterableDropdown.svelte.d.ts +5 -0
- package/dist/components/primitives/ImageUploadField.svelte +1 -1
- package/dist/components/primitives/SolvingIndicator.svelte +245 -15
- package/dist/components/primitives/SolvingIndicator.svelte.d.ts +15 -0
- package/dist/components/primitives/alert-dialog/alert-dialog-content.svelte +1 -1
- package/dist/components/primitives/badge/badge.svelte +4 -4
- package/dist/components/primitives/badge/badge.svelte.d.ts +10 -10
- package/dist/components/primitives/button/button.svelte +10 -8
- package/dist/components/primitives/button/button.svelte.d.ts +20 -17
- package/dist/components/primitives/card/card.svelte +1 -1
- package/dist/components/primitives/card/card.svelte.d.ts +1 -1
- package/dist/components/primitives/checkbox/checkbox.svelte +1 -1
- package/dist/components/primitives/command/command-input.svelte +1 -1
- package/dist/components/primitives/command/command-item.svelte +1 -1
- package/dist/components/primitives/command/command-link-item.svelte +1 -1
- package/dist/components/primitives/command/command.svelte +1 -1
- package/dist/components/primitives/context-menu/context-menu-checkbox-item.svelte +1 -1
- package/dist/components/primitives/context-menu/context-menu-content.svelte +1 -1
- package/dist/components/primitives/context-menu/context-menu-item.svelte +1 -1
- package/dist/components/primitives/context-menu/context-menu-radio-item.svelte +1 -1
- package/dist/components/primitives/context-menu/context-menu-sub-content.svelte +1 -1
- package/dist/components/primitives/context-menu/context-menu-sub-trigger.svelte +1 -1
- package/dist/components/primitives/dialog/dialog-content.svelte +7 -3
- package/dist/components/primitives/drawer/Drawer.svelte +1 -1
- package/dist/components/primitives/dropdown-menu/dropdown-menu-checkbox-item.svelte +31 -11
- package/dist/components/primitives/dropdown-menu/dropdown-menu-checkbox-item.svelte.d.ts +2 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-content.svelte +5 -1
- package/dist/components/primitives/dropdown-menu/dropdown-menu-content.svelte.d.ts +2 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-item.svelte +4 -2
- package/dist/components/primitives/dropdown-menu/dropdown-menu-item.svelte.d.ts +2 -1
- package/dist/components/primitives/dropdown-menu/dropdown-menu-radio-item.svelte +1 -1
- package/dist/components/primitives/dropdown-menu/dropdown-menu-shortcut.svelte +1 -1
- package/dist/components/primitives/dropdown-menu/dropdown-menu-sub-content.svelte +1 -1
- package/dist/components/primitives/dropdown-menu/dropdown-menu-sub-trigger.svelte +1 -1
- package/dist/components/primitives/index.d.ts +1 -1
- package/dist/components/primitives/index.js +1 -1
- package/dist/components/primitives/input/input.svelte +4 -4
- package/dist/components/primitives/input-group/input-group-input.svelte.d.ts +1 -1
- package/dist/components/primitives/input-group/input-group.svelte +1 -1
- package/dist/components/primitives/mode-toggle/mode-toggle.svelte +5 -2
- package/dist/components/primitives/popover/popover-content.svelte +1 -1
- package/dist/components/primitives/resizable/resizable-handle.svelte +2 -2
- package/dist/components/primitives/scroll-area/scroll-area.svelte +1 -1
- package/dist/components/primitives/search/search.svelte +2 -2
- package/dist/components/primitives/select/select-content.svelte +1 -1
- package/dist/components/primitives/select/select-item.svelte +1 -1
- package/dist/components/primitives/select/select-trigger.svelte +1 -1
- package/dist/components/primitives/slider/slider.svelte +8 -3
- package/dist/components/primitives/slider/slider.svelte.d.ts +5 -1
- package/dist/components/primitives/switch/switch.svelte +1 -1
- package/dist/components/primitives/tabs/tabs-list.svelte +2 -2
- package/dist/components/primitives/tabs/tabs-list.svelte.d.ts +6 -6
- package/dist/components/primitives/tabs/tabs-trigger.svelte +3 -3
- package/dist/components/primitives/tabs/tabs-trigger.svelte.d.ts +7 -7
- package/dist/components/primitives/textarea/textarea.svelte +1 -1
- package/dist/components/primitives/toggle/toggle.svelte +11 -3
- package/dist/components/primitives/toggle/toggle.svelte.d.ts +13 -4
- package/dist/components/primitives/toggle-group/toggle-group-item.svelte +1 -1
- package/dist/components/primitives/toggle-group/toggle-group.svelte +1 -1
- package/dist/components/primitives/tooltip/index.d.ts +6 -0
- package/dist/components/primitives/tooltip/index.js +8 -0
- package/dist/components/primitives/tooltip/tooltip-content.svelte +34 -0
- package/dist/components/primitives/tooltip/tooltip-content.svelte.d.ts +10 -0
- package/dist/components/primitives/tooltip/tooltip-portal.svelte +7 -0
- package/dist/components/primitives/tooltip/tooltip-portal.svelte.d.ts +4 -0
- package/dist/components/primitives/tooltip/tooltip-provider.svelte +7 -0
- package/dist/components/primitives/tooltip/tooltip-provider.svelte.d.ts +4 -0
- package/dist/components/primitives/tooltip/tooltip-trigger.svelte +7 -0
- package/dist/components/primitives/tooltip/tooltip-trigger.svelte.d.ts +4 -0
- package/dist/components/primitives/tooltip/tooltip.svelte +7 -0
- package/dist/components/primitives/tooltip/tooltip.svelte.d.ts +4 -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 +32 -21
- package/dist/components/viewer/SceneManager.svelte.d.ts +3 -1
- package/dist/components/viewer/Viewer.svelte +195 -207
- package/dist/components/viewer/Viewer.svelte.d.ts +7 -2
- package/dist/components/viewer/ViewerDock.svelte +404 -0
- package/dist/components/viewer/ViewerDock.svelte.d.ts +42 -0
- package/dist/composables/useFooterItem.svelte.d.ts +1 -1
- package/dist/composables/useFooterItem.svelte.js +1 -1
- package/dist/compute/liveProgress.svelte.d.ts +16 -0
- package/dist/compute/liveProgress.svelte.js +90 -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 +8 -11
- package/dist/contexts/hostContext.svelte.d.ts +39 -0
- package/dist/contexts/hostContext.svelte.js +9 -0
- package/dist/features/chart/plotly-compat.d.ts +15 -0
- package/dist/features/chart/plotly-compat.js +124 -0
- package/dist/i18n/localeContext.svelte.d.ts +10 -3
- package/dist/i18n/localeContext.svelte.js +27 -5
- package/dist/i18n/messages.d.ts +164 -2
- package/dist/i18n/messages.js +281 -11
- package/dist/index.d.ts +6 -1
- package/dist/index.js +5 -0
- package/dist/public.d.ts +2 -1
- package/dist/public.js +1 -0
- 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.d.ts +7 -1
- package/dist/schema/visibility-rules.js +38 -0
- package/dist/styles/base.css +116 -83
- 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/color-space.d.ts +21 -0
- package/dist/utils/color-space.js +90 -0
- 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 +30 -22
- package/src/lib/components/ErrorScreen.svelte +7 -3
- package/src/lib/components/compute/AppLayout.svelte +307 -123
- package/src/lib/components/compute/CollapsedPanelStrip.svelte +4 -2
- package/src/lib/components/compute/ComputeApp.svelte +46 -22
- package/src/lib/components/compute/ComputeMessagesDialog.svelte +32 -42
- package/src/lib/components/compute/ParameterPresetManager.svelte +16 -65
- package/src/lib/components/compute/SolveMessages.svelte +130 -123
- package/src/lib/components/layout/AppShell.svelte +10 -6
- package/src/lib/components/layout/FooterItemRenderer.svelte +2 -2
- package/src/lib/components/layout/PageContent.svelte +3 -2
- package/src/lib/components/layout/PageFooter.svelte +26 -14
- package/src/lib/components/layout/PageHeader.svelte +14 -10
- package/src/lib/components/layout/SectionHeader.svelte +4 -2
- package/src/lib/components/layout/SideNav.svelte +57 -8
- package/src/lib/components/layout/SubNav.svelte +2 -2
- package/src/lib/components/preview/ChartOutput.svelte +131 -65
- package/src/lib/components/preview/Group.svelte +42 -22
- package/src/lib/components/preview/HelpButton.svelte +5 -3
- package/src/lib/components/preview/ImageOutput.svelte +435 -71
- package/src/lib/components/preview/InputControl.svelte +125 -51
- package/src/lib/components/preview/OutputDisplay.svelte +42 -28
- package/src/lib/components/preview/TabBar.svelte +8 -6
- package/src/lib/components/preview/TabContent.svelte +66 -31
- package/src/lib/components/preview/TabLayout.svelte +29 -8
- package/src/lib/components/preview/inputs/CheckboxInput.svelte +1 -1
- package/src/lib/components/preview/inputs/ChecklistInput.svelte +11 -6
- package/src/lib/components/preview/inputs/ColorInput.svelte +357 -13
- package/src/lib/components/preview/inputs/DropdownInput.svelte +20 -5
- package/src/lib/components/preview/inputs/FileInput.svelte +115 -103
- package/src/lib/components/preview/inputs/GeometryInput.svelte +128 -0
- package/src/lib/components/preview/inputs/NumberInput.svelte +98 -16
- package/src/lib/components/preview/inputs/OptionGlyph.svelte +29 -0
- package/src/lib/components/preview/inputs/SegmentedInput.svelte +45 -0
- package/src/lib/components/preview/inputs/TextInput.svelte +11 -6
- package/src/lib/components/preview/inputs/TileInput.svelte +83 -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 +9 -7
- package/src/lib/components/primitives/DataTable.svelte +38 -4
- package/src/lib/components/primitives/FilterableDropdown.svelte +14 -2
- package/src/lib/components/primitives/ImageUploadField.svelte +1 -1
- package/src/lib/components/primitives/IssueList.svelte +1 -1
- package/src/lib/components/primitives/SeverityIcon.svelte +1 -1
- package/src/lib/components/primitives/SolvingIndicator.svelte +245 -15
- package/src/lib/components/primitives/StateDisplay.svelte +1 -1
- package/src/lib/components/primitives/alert-dialog/alert-dialog-action.svelte +2 -2
- package/src/lib/components/primitives/alert-dialog/alert-dialog-cancel.svelte +2 -2
- package/src/lib/components/primitives/alert-dialog/alert-dialog-content.svelte +2 -2
- package/src/lib/components/primitives/alert-dialog/alert-dialog-description.svelte +1 -1
- package/src/lib/components/primitives/alert-dialog/alert-dialog-footer.svelte +1 -1
- package/src/lib/components/primitives/alert-dialog/alert-dialog-header.svelte +1 -1
- package/src/lib/components/primitives/alert-dialog/alert-dialog-overlay.svelte +1 -1
- package/src/lib/components/primitives/alert-dialog/alert-dialog-title.svelte +1 -1
- package/src/lib/components/primitives/badge/badge.svelte +5 -5
- package/src/lib/components/primitives/button/button.svelte +10 -8
- package/src/lib/components/primitives/button-group/button-group-separator.svelte +2 -2
- package/src/lib/components/primitives/button-group/button-group-text.svelte +1 -1
- package/src/lib/components/primitives/button-group/button-group.svelte +1 -1
- package/src/lib/components/primitives/card/card-content.svelte +1 -1
- package/src/lib/components/primitives/card/card-description.svelte +1 -1
- package/src/lib/components/primitives/card/card-footer.svelte +1 -1
- package/src/lib/components/primitives/card/card-header.svelte +1 -1
- package/src/lib/components/primitives/card/card-title.svelte +1 -1
- package/src/lib/components/primitives/card/card.svelte +2 -2
- package/src/lib/components/primitives/checkbox/checkbox.svelte +2 -2
- package/src/lib/components/primitives/command/command-dialog.svelte +2 -2
- package/src/lib/components/primitives/command/command-empty.svelte +1 -1
- package/src/lib/components/primitives/command/command-group.svelte +1 -1
- package/src/lib/components/primitives/command/command-input.svelte +3 -3
- package/src/lib/components/primitives/command/command-item.svelte +2 -2
- package/src/lib/components/primitives/command/command-link-item.svelte +2 -2
- package/src/lib/components/primitives/command/command-list.svelte +1 -1
- package/src/lib/components/primitives/command/command-separator.svelte +1 -1
- package/src/lib/components/primitives/command/command-shortcut.svelte +1 -1
- package/src/lib/components/primitives/command/command.svelte +2 -2
- package/src/lib/components/primitives/context-menu/context-menu-checkbox-item.svelte +2 -2
- package/src/lib/components/primitives/context-menu/context-menu-content.svelte +2 -2
- package/src/lib/components/primitives/context-menu/context-menu-group-heading.svelte +1 -1
- package/src/lib/components/primitives/context-menu/context-menu-item.svelte +2 -2
- package/src/lib/components/primitives/context-menu/context-menu-label.svelte +1 -1
- package/src/lib/components/primitives/context-menu/context-menu-radio-item.svelte +2 -2
- package/src/lib/components/primitives/context-menu/context-menu-separator.svelte +1 -1
- package/src/lib/components/primitives/context-menu/context-menu-shortcut.svelte +1 -1
- package/src/lib/components/primitives/context-menu/context-menu-sub-content.svelte +2 -2
- package/src/lib/components/primitives/context-menu/context-menu-sub-trigger.svelte +2 -2
- package/src/lib/components/primitives/dialog/dialog-content.svelte +8 -4
- package/src/lib/components/primitives/dialog/dialog-description.svelte +1 -1
- package/src/lib/components/primitives/dialog/dialog-footer.svelte +1 -1
- package/src/lib/components/primitives/dialog/dialog-header.svelte +1 -1
- package/src/lib/components/primitives/dialog/dialog-overlay.svelte +1 -1
- package/src/lib/components/primitives/dialog/dialog-title.svelte +1 -1
- package/src/lib/components/primitives/drawer/Drawer.svelte +1 -1
- package/src/lib/components/primitives/dropdown-menu/dropdown-menu-checkbox-item.svelte +32 -12
- package/src/lib/components/primitives/dropdown-menu/dropdown-menu-content.svelte +6 -2
- package/src/lib/components/primitives/dropdown-menu/dropdown-menu-group-heading.svelte +1 -1
- package/src/lib/components/primitives/dropdown-menu/dropdown-menu-item.svelte +5 -3
- package/src/lib/components/primitives/dropdown-menu/dropdown-menu-label.svelte +1 -1
- package/src/lib/components/primitives/dropdown-menu/dropdown-menu-radio-item.svelte +2 -2
- package/src/lib/components/primitives/dropdown-menu/dropdown-menu-separator.svelte +1 -1
- package/src/lib/components/primitives/dropdown-menu/dropdown-menu-shortcut.svelte +2 -2
- package/src/lib/components/primitives/dropdown-menu/dropdown-menu-sub-content.svelte +2 -2
- package/src/lib/components/primitives/dropdown-menu/dropdown-menu-sub-trigger.svelte +2 -2
- package/src/lib/components/primitives/empty/empty-content.svelte +1 -1
- package/src/lib/components/primitives/empty/empty-description.svelte +1 -1
- package/src/lib/components/primitives/empty/empty-header.svelte +1 -1
- package/src/lib/components/primitives/empty/empty-media.svelte +1 -1
- package/src/lib/components/primitives/empty/empty-title.svelte +1 -1
- package/src/lib/components/primitives/empty/empty.svelte +1 -1
- package/src/lib/components/primitives/field/field-content.svelte +1 -1
- package/src/lib/components/primitives/field/field-description.svelte +1 -1
- package/src/lib/components/primitives/field/field-error.svelte +1 -1
- package/src/lib/components/primitives/field/field-group.svelte +1 -1
- package/src/lib/components/primitives/field/field-label.svelte +2 -2
- package/src/lib/components/primitives/field/field-legend.svelte +1 -1
- package/src/lib/components/primitives/field/field-separator.svelte +2 -2
- package/src/lib/components/primitives/field/field-set.svelte +1 -1
- package/src/lib/components/primitives/field/field-title.svelte +1 -1
- package/src/lib/components/primitives/field/field.svelte +1 -1
- package/src/lib/components/primitives/index.ts +1 -1
- package/src/lib/components/primitives/input/input.svelte +5 -5
- package/src/lib/components/primitives/input-group/input-group-addon.svelte +1 -1
- package/src/lib/components/primitives/input-group/input-group-button.svelte +2 -2
- package/src/lib/components/primitives/input-group/input-group-input.svelte +2 -2
- package/src/lib/components/primitives/input-group/input-group-text.svelte +1 -1
- package/src/lib/components/primitives/input-group/input-group-textarea.svelte +2 -2
- package/src/lib/components/primitives/input-group/input-group.svelte +2 -2
- package/src/lib/components/primitives/label/label.svelte +1 -1
- package/src/lib/components/primitives/mode-toggle/mode-toggle.svelte +5 -2
- package/src/lib/components/primitives/popover/popover-content.svelte +2 -2
- package/src/lib/components/primitives/popover/popover-description.svelte +1 -1
- package/src/lib/components/primitives/popover/popover-header.svelte +1 -1
- package/src/lib/components/primitives/popover/popover-title.svelte +1 -1
- package/src/lib/components/primitives/popover/popover-trigger.svelte +1 -1
- package/src/lib/components/primitives/resizable/resizable-handle.svelte +3 -3
- package/src/lib/components/primitives/resizable/resizable-pane-group.svelte +1 -1
- package/src/lib/components/primitives/scroll-area/scroll-area-scrollbar.svelte +1 -1
- package/src/lib/components/primitives/scroll-area/scroll-area.svelte +2 -2
- package/src/lib/components/primitives/search/search.svelte +3 -3
- package/src/lib/components/primitives/select/select-content.svelte +2 -2
- package/src/lib/components/primitives/select/select-group-heading.svelte +1 -1
- package/src/lib/components/primitives/select/select-item.svelte +2 -2
- package/src/lib/components/primitives/select/select-label.svelte +1 -1
- package/src/lib/components/primitives/select/select-scroll-down-button.svelte +1 -1
- package/src/lib/components/primitives/select/select-scroll-up-button.svelte +1 -1
- package/src/lib/components/primitives/select/select-separator.svelte +2 -2
- package/src/lib/components/primitives/select/select-trigger.svelte +2 -2
- package/src/lib/components/primitives/separator/separator.svelte +1 -1
- package/src/lib/components/primitives/slider/slider.svelte +9 -4
- package/src/lib/components/primitives/spinner/spinner.svelte +1 -1
- package/src/lib/components/primitives/switch/switch.svelte +2 -2
- package/src/lib/components/primitives/tabs/tabs-content.svelte +1 -1
- package/src/lib/components/primitives/tabs/tabs-list.svelte +3 -3
- package/src/lib/components/primitives/tabs/tabs-trigger.svelte +4 -4
- package/src/lib/components/primitives/tabs/tabs.svelte +1 -1
- package/src/lib/components/primitives/textarea/textarea.svelte +2 -2
- package/src/lib/components/primitives/toggle/toggle.svelte +12 -4
- package/src/lib/components/primitives/toggle-group/toggle-group-item.svelte +3 -3
- package/src/lib/components/primitives/toggle-group/toggle-group.svelte +3 -3
- package/src/lib/components/primitives/tooltip/index.ts +19 -0
- package/src/lib/components/primitives/tooltip/tooltip-content.svelte +34 -0
- package/src/lib/components/primitives/tooltip/tooltip-portal.svelte +7 -0
- package/src/lib/components/primitives/tooltip/tooltip-provider.svelte +7 -0
- package/src/lib/components/primitives/tooltip/tooltip-trigger.svelte +7 -0
- package/src/lib/components/primitives/tooltip/tooltip.svelte +7 -0
- package/src/lib/components/viewer/MeshMetadataPanel.svelte +119 -0
- package/src/lib/components/viewer/SceneManager.svelte +32 -21
- package/src/lib/components/viewer/Viewer.svelte +196 -208
- package/src/lib/components/viewer/ViewerDock.svelte +404 -0
- package/src/lib/composables/useFooterItem.svelte.ts +1 -1
- package/src/lib/compute/liveProgress.svelte.ts +103 -0
- 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 +8 -11
- package/src/lib/contexts/hostContext.svelte.ts +51 -0
- package/src/lib/features/chart/plotly-compat.ts +141 -0
- package/src/lib/i18n/localeContext.svelte.ts +40 -5
- package/src/lib/i18n/messages.ts +487 -13
- package/src/lib/index.ts +23 -0
- package/src/lib/public.ts +2 -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 +50 -1
- package/src/lib/styles/base.css +116 -83
- package/src/lib/types/actionButton.ts +16 -3
- package/src/lib/types/presetLabels.ts +13 -11
- package/src/lib/utils/color-space.ts +107 -0
- 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/theme-switcher/ThemeSwitcher.svelte +0 -39
- package/dist/components/primitives/theme-switcher/ThemeSwitcher.svelte.d.ts +0 -3
- package/dist/components/primitives/theme-switcher/index.d.ts +0 -1
- package/dist/components/primitives/theme-switcher/index.js +0 -1
- package/dist/components/viewer/MeshMetadataDialog.svelte +0 -126
- package/dist/components/viewer/MeshMetadataDialog.svelte.d.ts +0 -10
- package/dist/styles/themes/cyberpunk.css +0 -98
- package/dist/styles/themes/neutral.css +0 -72
- package/dist/styles/themes/ocean.css +0 -75
- package/dist/styles/themes/selva.css +0 -105
- package/dist/theme/themeStore.svelte.d.ts +0 -12
- package/dist/theme/themeStore.svelte.js +0 -40
- package/dist/theme/themes.d.ts +0 -5
- package/dist/theme/themes.js +0 -13
- package/src/lib/components/primitives/theme-switcher/ThemeSwitcher.svelte +0 -39
- package/src/lib/components/primitives/theme-switcher/index.ts +0 -1
- package/src/lib/components/viewer/MeshMetadataDialog.svelte +0 -126
- package/src/lib/styles/themes/cyberpunk.css +0 -98
- package/src/lib/styles/themes/neutral.css +0 -72
- package/src/lib/styles/themes/ocean.css +0 -75
- package/src/lib/styles/themes/selva.css +0 -105
- package/src/lib/theme/themeStore.svelte.ts +0 -50
- package/src/lib/theme/themes.ts +0 -18
package/src/lib/constants.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
export const APP_DEFAULTS = {
|
|
2
2
|
// File upload limits
|
|
3
3
|
// TEMP (dev): raised 150 MB → 300 MB so large dev file-widget inputs aren't
|
|
4
|
-
// blocked client-side. The server request cap
|
|
5
|
-
// still defaults to 256 MB, and base64 inflates a raw file by ~4/3, so
|
|
4
|
+
// blocked client-side. The server request cap is 256 MB, and base64 inflates a raw file by ~4/3, so
|
|
6
5
|
// anything over ~192 MB is rejected with a 413 after the client accepts it.
|
|
7
6
|
// Revert to 150 before release.
|
|
8
7
|
FILE_UPLOAD: {
|
|
@@ -18,16 +17,14 @@ export const APP_DEFAULTS = {
|
|
|
18
17
|
DRAWER_ANIMATION_MS: 350
|
|
19
18
|
},
|
|
20
19
|
|
|
21
|
-
//
|
|
20
|
+
// See createSolvingIndicator.
|
|
22
21
|
SOLVING_INDICATOR: {
|
|
23
|
-
/**
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
|
|
29
|
-
/** Number of solve durations to keep in history for averaging */
|
|
30
|
-
HISTORY_SIZE: 3
|
|
22
|
+
/** A solve that ends sooner shows no indicator (ms) */
|
|
23
|
+
SHOW_AFTER_MS: 400,
|
|
24
|
+
/** Once shown, the indicator stays at least this long (ms) */
|
|
25
|
+
MIN_VISIBLE_MS: 500,
|
|
26
|
+
/** Past this a solve counts as slow and the viewer dims its stale result (ms) */
|
|
27
|
+
SLOW_AFTER_MS: 2000
|
|
31
28
|
},
|
|
32
29
|
|
|
33
30
|
// File size formatting
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { getContext, setContext } from 'svelte';
|
|
2
|
+
import type { GeometryKind } from '@selvajs/schemas';
|
|
3
|
+
import type { UIHost } from '#lib/schema/host-support.js';
|
|
4
|
+
|
|
5
|
+
// Tells InputControl which host it renders in and how to reach the host's own actions, without
|
|
6
|
+
// threading a prop through every layout layer. Without a provider the host is Selva.
|
|
7
|
+
|
|
8
|
+
export type GeometryPickResult =
|
|
9
|
+
| { outcome: 'picked'; summary: string }
|
|
10
|
+
| { outcome: 'cancelled' }
|
|
11
|
+
| { outcome: 'failed'; error: string };
|
|
12
|
+
|
|
13
|
+
/** What a pick button can ask for: a Get Geometry filter's kinds, or Get Point/Line/Plane's own. */
|
|
14
|
+
export type PickKind = GeometryKind | 'line' | 'plane';
|
|
15
|
+
|
|
16
|
+
/** What a geometry input lets the user pick, as the host discovered it on the canvas. */
|
|
17
|
+
export interface GeometryPickTarget {
|
|
18
|
+
/** The kinds its filter allows; absent when it takes anything. */
|
|
19
|
+
kinds?: readonly GeometryKind[];
|
|
20
|
+
/** 1 picks a single object. */
|
|
21
|
+
atMost?: number;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export interface HostActions {
|
|
25
|
+
host: UIHost;
|
|
26
|
+
/** Prompts in the Rhino viewport for a geometry input. The picked geometry stays in Grasshopper. */
|
|
27
|
+
pickGeometry?: (paramId: string) => Promise<GeometryPickResult>;
|
|
28
|
+
/** Empties a geometry input again, back to the definition's own value. */
|
|
29
|
+
clearGeometry?: (paramId: string) => void;
|
|
30
|
+
/**
|
|
31
|
+
* Reports what the param holds after every pick or clear, including those another page asked
|
|
32
|
+
* for; null when nothing is picked into it. Returns an unsubscribe.
|
|
33
|
+
*/
|
|
34
|
+
onGeometrySummary?: (paramId: string, listener: (summary: string | null) => void) => () => void;
|
|
35
|
+
describeGeometry?: (paramId: string) => GeometryPickTarget | undefined;
|
|
36
|
+
/** Presses a button input: one solve with `true`, then it goes back to `false`. */
|
|
37
|
+
trigger?: (paramId: string) => void;
|
|
38
|
+
/** Grasshopper refuses a press while it solves, so the button waits it out disabled. */
|
|
39
|
+
isSolving?: () => boolean;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const SELVA_HOST: HostActions = { host: 'selva' };
|
|
43
|
+
const HOST_CONTEXT_KEY = Symbol('host-context');
|
|
44
|
+
|
|
45
|
+
export function setHostContext(actions: HostActions): void {
|
|
46
|
+
setContext(HOST_CONTEXT_KEY, actions);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export function getHostContext(): HostActions {
|
|
50
|
+
return getContext<HostActions | undefined>(HOST_CONTEXT_KEY) ?? SELVA_HOST;
|
|
51
|
+
}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { hsvToRgb } from '#lib/utils/color-space.js';
|
|
2
|
+
|
|
3
|
+
// ============================================================================
|
|
4
|
+
// Plotly 3 → 4 figure compatibility
|
|
5
|
+
// ============================================================================
|
|
6
|
+
//
|
|
7
|
+
// Chart outputs come from whatever plugin version solved them, often one written against
|
|
8
|
+
// Plotly 3. This rewrites the parts Plotly 4 draws differently or rejects, so those figures
|
|
9
|
+
// keep their look. Figures that are already compatible pass through unchanged.
|
|
10
|
+
|
|
11
|
+
type Json = Record<string, unknown>;
|
|
12
|
+
|
|
13
|
+
export interface PlotlyFigure {
|
|
14
|
+
data: Json[];
|
|
15
|
+
layout?: Json;
|
|
16
|
+
config?: Json;
|
|
17
|
+
frames?: Json[];
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const REMOVED_MAP_TRACES: Record<string, string> = {
|
|
21
|
+
scattermapbox: 'scattermap',
|
|
22
|
+
choroplethmapbox: 'choroplethmap',
|
|
23
|
+
densitymapbox: 'densitymap'
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
const MAPBOX_SUBPLOT = /^mapbox(\d*)$/;
|
|
27
|
+
const BARE_HEX = /^(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i;
|
|
28
|
+
const HSV_FUNCTION =
|
|
29
|
+
/^hsva?[\s(]+([-+\d.]+)%?[\s,]+([\d.]+)(%?)[\s,]+([\d.]+)(%?)(?:[\s,/]+([\d.]+)(%?))?[\s)]*$/i;
|
|
30
|
+
|
|
31
|
+
const isObject = (v: unknown): v is Json =>
|
|
32
|
+
typeof v === 'object' && v !== null && !Array.isArray(v);
|
|
33
|
+
|
|
34
|
+
/** Returns a rewritten copy; the input is not modified. */
|
|
35
|
+
export function upgradePlotlyFigure(figure: PlotlyFigure): PlotlyFigure {
|
|
36
|
+
const out = structuredClone(figure);
|
|
37
|
+
const layout = out.layout ?? {};
|
|
38
|
+
normalizeColors(layout);
|
|
39
|
+
|
|
40
|
+
let migratedMaps = false;
|
|
41
|
+
for (const trace of out.data ?? []) {
|
|
42
|
+
if (!isObject(trace)) continue;
|
|
43
|
+
normalizeColors(trace);
|
|
44
|
+
|
|
45
|
+
const replacement = REMOVED_MAP_TRACES[trace.type as string];
|
|
46
|
+
if (replacement) {
|
|
47
|
+
trace.type = replacement;
|
|
48
|
+
if (typeof trace.subplot === 'string')
|
|
49
|
+
trace.subplot = trace.subplot.replace(MAPBOX_SUBPLOT, 'map$1');
|
|
50
|
+
migratedMaps = true;
|
|
51
|
+
} else if (trace.type === 'splom') {
|
|
52
|
+
keepSplomAxesUnlinked(trace);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
if (migratedMaps) migrateMapLayout(layout);
|
|
57
|
+
// Frame data replaces trace data during playback, so it needs the same colour fixes.
|
|
58
|
+
for (const frame of out.frames ?? []) if (isObject(frame)) normalizeColors(frame);
|
|
59
|
+
return { ...out, layout };
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// Plotly 4 links each dimension's x and y axes by default.
|
|
63
|
+
function keepSplomAxesUnlinked(trace: Json) {
|
|
64
|
+
if (!Array.isArray(trace.dimensions)) return;
|
|
65
|
+
for (const dim of trace.dimensions) {
|
|
66
|
+
if (!isObject(dim)) continue;
|
|
67
|
+
const axis = isObject(dim.axis) ? dim.axis : (dim.axis = {});
|
|
68
|
+
if (!('matches' in axis)) axis.matches = false;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
function migrateMapLayout(layout: Json) {
|
|
73
|
+
for (const key of Object.keys(layout)) {
|
|
74
|
+
const match = MAPBOX_SUBPLOT.exec(key);
|
|
75
|
+
if (!match) continue;
|
|
76
|
+
|
|
77
|
+
const map = layout[key];
|
|
78
|
+
delete layout[key];
|
|
79
|
+
const newKey = `map${match[1]}`;
|
|
80
|
+
if (newKey in layout || !isObject(map)) continue;
|
|
81
|
+
|
|
82
|
+
delete map.accesstoken;
|
|
83
|
+
// Stamen and mapbox:// styles have no map equivalent.
|
|
84
|
+
if (typeof map.style === 'string' && /^(stamen|mapbox:\/\/)/.test(map.style))
|
|
85
|
+
map.style = 'open-street-map';
|
|
86
|
+
layout[newKey] = map;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// Plotly attributes that hold colours: *color, colorway, colorscale and pie's marker.colors.
|
|
91
|
+
const isColorKey = (key: string) =>
|
|
92
|
+
key.toLowerCase().endsWith('color') ||
|
|
93
|
+
key === 'colors' ||
|
|
94
|
+
key === 'colorway' ||
|
|
95
|
+
key === 'colorscale';
|
|
96
|
+
|
|
97
|
+
function normalizeColors(props: Json) {
|
|
98
|
+
for (const [key, value] of Object.entries(props)) {
|
|
99
|
+
if (isColorKey(key)) props[key] = normalizeColorValue(value, false);
|
|
100
|
+
else if (isObject(value)) normalizeColors(value);
|
|
101
|
+
else if (Array.isArray(value))
|
|
102
|
+
for (const item of value) if (isObject(item)) normalizeColors(item);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// Covers a single colour, a per-point list and colorscale stops ([[0, "ff0000"], ...]).
|
|
107
|
+
function normalizeColorValue(value: unknown, inList: boolean): unknown {
|
|
108
|
+
if (Array.isArray(value)) return value.map((v) => normalizeColorValue(v, true));
|
|
109
|
+
if (typeof value !== 'string') return value;
|
|
110
|
+
// Plotly reads numeric strings in a per-point list as numbers for the colorscale.
|
|
111
|
+
if (inList && /^\s*\d+\s*$/.test(value)) return value;
|
|
112
|
+
return normalizePlotlyColor(value);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Rewrites colour spellings Plotly 3 accepted but Plotly 4 rejects (hex without `#`, `hsv()`)
|
|
117
|
+
* into valid CSS. Anything else is returned unchanged.
|
|
118
|
+
*/
|
|
119
|
+
export function normalizePlotlyColor(color: string): string {
|
|
120
|
+
const value = color.trim();
|
|
121
|
+
if (BARE_HEX.test(value)) return `#${value}`;
|
|
122
|
+
|
|
123
|
+
const hsv = HSV_FUNCTION.exec(value);
|
|
124
|
+
if (!hsv) return color;
|
|
125
|
+
|
|
126
|
+
const { r, g, b } = hsvToRgb({
|
|
127
|
+
h: Number(hsv[1]),
|
|
128
|
+
s: unit(hsv[2], hsv[3] === '%'),
|
|
129
|
+
v: unit(hsv[4], hsv[5] === '%')
|
|
130
|
+
});
|
|
131
|
+
const rgb = `${Math.round(r)},${Math.round(g)},${Math.round(b)}`;
|
|
132
|
+
if (hsv[6] === undefined) return `rgb(${rgb})`;
|
|
133
|
+
return `rgba(${rgb},${+unit(hsv[6], hsv[7] === '%').toFixed(3)})`;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// Plotly 3 (TinyColor) read 0..1 as a fraction and anything above 1 as a percentage.
|
|
137
|
+
function unit(s: string, percent: boolean): number {
|
|
138
|
+
let x = Number(s);
|
|
139
|
+
if (percent || x > 1) x /= 100;
|
|
140
|
+
return Math.min(1, Math.max(0, x));
|
|
141
|
+
}
|
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
import { getContext, setContext } from 'svelte';
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
type Locale,
|
|
4
|
+
type ViewerMessages,
|
|
5
|
+
messagesFor,
|
|
6
|
+
withOverrides,
|
|
7
|
+
DEFAULT_LOCALE
|
|
8
|
+
} from './messages';
|
|
3
9
|
|
|
4
10
|
// Carries the UI locale down to the viewer and its panels without threading a
|
|
5
11
|
// `lang` prop through every layer.
|
|
6
12
|
//
|
|
7
13
|
// Resolution order for any consuming component:
|
|
8
14
|
// explicit `lang` prop → nearest locale context → English default
|
|
15
|
+
// and the strings are that locale's catalog with any `messages` overrides on top.
|
|
9
16
|
//
|
|
10
17
|
// Two ways to provide it:
|
|
11
18
|
// - Standalone: <Viewer lang="de" /> — Viewer provides the context itself.
|
|
@@ -20,22 +27,50 @@ export interface LocaleContext {
|
|
|
20
27
|
}
|
|
21
28
|
|
|
22
29
|
/**
|
|
23
|
-
* Provide the locale to descendants. Pass
|
|
30
|
+
* Provide the locale to descendants. Pass getters, not values: they are re-read on every
|
|
24
31
|
* consumer render, so a reactive source (a `$state`, the app's Paraglide locale) switches
|
|
25
|
-
* the language live.
|
|
32
|
+
* the language live. `getOverrides` replaces individual strings of the resolved catalog.
|
|
26
33
|
*/
|
|
27
|
-
export function setLocaleContext(
|
|
34
|
+
export function setLocaleContext(
|
|
35
|
+
getLocale: () => Locale | undefined,
|
|
36
|
+
getOverrides?: () => Partial<ViewerMessages> | undefined
|
|
37
|
+
): void {
|
|
28
38
|
const ctx: LocaleContext = {
|
|
29
39
|
get locale() {
|
|
30
40
|
return getLocale() ?? DEFAULT_LOCALE;
|
|
31
41
|
},
|
|
32
42
|
get messages() {
|
|
33
|
-
return messagesFor(getLocale());
|
|
43
|
+
return withOverrides(messagesFor(getLocale()), getOverrides?.());
|
|
34
44
|
}
|
|
35
45
|
};
|
|
36
46
|
setContext(LOCALE_CONTEXT_KEY, ctx);
|
|
37
47
|
}
|
|
38
48
|
|
|
49
|
+
/**
|
|
50
|
+
* Re-provides the nearest context for a component that takes its own `lang`/`messages` props.
|
|
51
|
+
* Without `lang`, or with the inherited locale, the subtree keeps the overrides an outer provider
|
|
52
|
+
* applied; a different `lang` starts from that locale's catalog, since those overrides were
|
|
53
|
+
* written for another language.
|
|
54
|
+
*/
|
|
55
|
+
export function layerLocaleContext(
|
|
56
|
+
getLang: () => Locale | undefined,
|
|
57
|
+
getOverrides?: () => Partial<ViewerMessages> | undefined
|
|
58
|
+
): LocaleContext {
|
|
59
|
+
const outer = getLocaleContext();
|
|
60
|
+
const ctx: LocaleContext = {
|
|
61
|
+
get locale() {
|
|
62
|
+
return getLang() ?? outer.locale;
|
|
63
|
+
},
|
|
64
|
+
get messages() {
|
|
65
|
+
const lang = getLang();
|
|
66
|
+
const base = lang === undefined || lang === outer.locale ? outer.messages : messagesFor(lang);
|
|
67
|
+
return withOverrides(base, getOverrides?.());
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
setContext(LOCALE_CONTEXT_KEY, ctx);
|
|
71
|
+
return ctx;
|
|
72
|
+
}
|
|
73
|
+
|
|
39
74
|
/**
|
|
40
75
|
* Falls back to an English-only context when no provider exists (a primitive used in
|
|
41
76
|
* isolation), so consumers never need a null check.
|