@selvajs/ui 6.6.0-beta.8 → 7.0.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/README.md +0 -3
- package/dist/components/ErrorScreen.svelte +1 -1
- package/dist/components/compute/AppLayout.svelte +95 -37
- package/dist/components/compute/AppLayout.svelte.d.ts +18 -1
- package/dist/components/compute/CollapsedPanelStrip.svelte +4 -2
- package/dist/components/compute/ComputeApp.svelte +6 -2
- package/dist/components/compute/ComputeApp.svelte.d.ts +1 -1
- package/dist/components/compute/ComputeMessagesDialog.svelte +3 -3
- package/dist/components/compute/ParameterPresetManager.svelte +9 -21
- package/dist/components/compute/SolveMessages.svelte +101 -87
- package/dist/components/compute/SolveMessages.svelte.d.ts +12 -0
- package/dist/components/layout/AppShell.svelte +2 -2
- 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 +8 -6
- package/dist/components/layout/PageHeader.svelte +3 -3
- package/dist/components/layout/SideNav.svelte +56 -15
- package/dist/components/layout/SubNav.svelte +2 -2
- package/dist/components/preview/ChartOutput.svelte +158 -62
- package/dist/components/preview/Group.svelte +14 -9
- package/dist/components/preview/HelpButton.svelte +1 -1
- package/dist/components/preview/ImageOutput.svelte +16 -11
- package/dist/components/preview/InputControl.svelte +115 -50
- package/dist/components/preview/InputControl.svelte.d.ts +5 -1
- package/dist/components/preview/OutputDisplay.svelte +26 -17
- package/dist/components/preview/TabBar.svelte +8 -6
- package/dist/components/preview/TabBar.svelte.d.ts +2 -0
- package/dist/components/preview/TabContent.svelte +65 -33
- 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 +356 -14
- package/dist/components/preview/inputs/ColorInput.svelte.d.ts +1 -0
- package/dist/components/preview/inputs/DropdownInput.svelte +18 -6
- package/dist/components/preview/inputs/DropdownInput.svelte.d.ts +2 -1
- package/dist/components/preview/inputs/FileInput.svelte +71 -75
- 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 +8 -8
- 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 +5 -5
- 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 +10 -4
- package/dist/components/primitives/Callout.svelte +8 -6
- package/dist/components/primitives/Callout.svelte.d.ts +4 -4
- package/dist/components/primitives/DataTable.svelte +1 -1
- 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 -19
- 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 +2 -2
- package/dist/components/primitives/badge/badge.svelte.d.ts +6 -6
- package/dist/components/primitives/button/button.svelte +9 -7
- package/dist/components/primitives/button/button.svelte.d.ts +19 -16
- 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 +3 -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 +2 -2
- 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 +2 -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/search/search.svelte +1 -1
- 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 +1 -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 +2 -2
- package/dist/components/primitives/tabs/tabs-trigger.svelte.d.ts +6 -6
- 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 +2 -2
- package/dist/components/viewer/SceneManager.svelte +32 -21
- package/dist/components/viewer/SceneManager.svelte.d.ts +3 -1
- package/dist/components/viewer/Viewer.svelte +135 -185
- 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/solving.svelte.d.ts +11 -7
- package/dist/compute/solving.svelte.js +64 -45
- 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/messages.d.ts +50 -0
- package/dist/i18n/messages.js +84 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +5 -0
- package/dist/public.d.ts +1 -0
- 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 +17 -0
- package/dist/styles/base.css +94 -84
- package/dist/utils/color-space.d.ts +21 -0
- package/dist/utils/color-space.js +90 -0
- package/dist/utils/file-download.js +6 -10
- package/dist/utils/host-files.d.ts +12 -0
- package/dist/utils/host-files.js +46 -0
- package/dist/utils/webp-to-png.d.ts +10 -0
- package/dist/utils/webp-to-png.js +41 -0
- package/package.json +31 -23
- package/src/lib/components/ErrorScreen.svelte +1 -1
- package/src/lib/components/compute/AppLayout.svelte +96 -38
- package/src/lib/components/compute/CollapsedPanelStrip.svelte +4 -2
- package/src/lib/components/compute/ComputeApp.svelte +6 -2
- package/src/lib/components/compute/ComputeMessagesDialog.svelte +4 -4
- package/src/lib/components/compute/ParameterPresetManager.svelte +9 -21
- package/src/lib/components/compute/SolveMessages.svelte +103 -89
- package/src/lib/components/layout/AppShell.svelte +2 -2
- 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 +8 -6
- package/src/lib/components/layout/PageHeader.svelte +3 -3
- package/src/lib/components/layout/SideNav.svelte +56 -15
- package/src/lib/components/layout/SubNav.svelte +2 -2
- package/src/lib/components/preview/ChartOutput.svelte +158 -62
- package/src/lib/components/preview/Group.svelte +14 -9
- package/src/lib/components/preview/HelpButton.svelte +1 -1
- package/src/lib/components/preview/ImageOutput.svelte +16 -11
- package/src/lib/components/preview/InputControl.svelte +115 -50
- package/src/lib/components/preview/OutputDisplay.svelte +26 -17
- package/src/lib/components/preview/TabBar.svelte +8 -6
- package/src/lib/components/preview/TabContent.svelte +65 -33
- 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 +356 -14
- package/src/lib/components/preview/inputs/DropdownInput.svelte +18 -6
- package/src/lib/components/preview/inputs/FileInput.svelte +71 -75
- package/src/lib/components/preview/inputs/GeometryInput.svelte +128 -0
- package/src/lib/components/preview/inputs/NumberInput.svelte +8 -8
- 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 +5 -5
- 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 +10 -4
- package/src/lib/components/primitives/Callout.svelte +9 -7
- package/src/lib/components/primitives/DataTable.svelte +1 -1
- 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 -19
- 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 +3 -3
- package/src/lib/components/primitives/button/button.svelte +9 -7
- 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 +4 -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 +3 -3
- 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 +2 -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 +1 -1
- package/src/lib/components/primitives/search/search.svelte +2 -2
- 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 +2 -2
- 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 +3 -3
- 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 +2 -2
- package/src/lib/components/viewer/SceneManager.svelte +32 -21
- package/src/lib/components/viewer/Viewer.svelte +136 -186
- 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/solving.svelte.ts +66 -50
- 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/messages.ts +139 -0
- package/src/lib/index.ts +22 -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 +27 -1
- package/src/lib/styles/base.css +94 -84
- package/src/lib/utils/color-space.ts +107 -0
- package/src/lib/utils/file-download.ts +7 -11
- package/src/lib/utils/host-files.ts +61 -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/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/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
|
@@ -1,68 +1,87 @@
|
|
|
1
1
|
import { untrack } from 'svelte';
|
|
2
2
|
import { APP_DEFAULTS } from '../constants';
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* When to show that a solve is running. A solve that ends within `SHOW_AFTER_MS` shows nothing:
|
|
5
|
+
* the result updating is feedback enough, and a spinner that flashes for a frame reads as jank.
|
|
6
|
+
* Once shown, the indicator stays `MIN_VISIBLE_MS` for the same reason. `slow` turns on past
|
|
7
|
+
* `SLOW_AFTER_MS`, the case of a Rhino.Compute round trip or a heavy definition.
|
|
6
8
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* - First solve: shown immediately, there is no history yet
|
|
9
|
+
* `freezesDuringSolve` is for a host that can't paint while it solves (an embedded WebView on
|
|
10
|
+
* the solver's thread). A delay can't run there, so the indicator shows on every solve, before
|
|
11
|
+
* the solve takes the thread: it is the only place that host can say Esc aborts.
|
|
11
12
|
*/
|
|
12
|
-
export function createSolvingIndicator(isSolving) {
|
|
13
|
-
const {
|
|
13
|
+
export function createSolvingIndicator(isSolving, options = {}) {
|
|
14
|
+
const { SHOW_AFTER_MS, MIN_VISIBLE_MS, SLOW_AFTER_MS } = APP_DEFAULTS.SOLVING_INDICATOR;
|
|
15
|
+
if (options.freezesDuringSolve) {
|
|
16
|
+
return {
|
|
17
|
+
// Read straight from `isSolving`, not through an effect: an effect would run a tick
|
|
18
|
+
// later, after the solve has already frozen the page.
|
|
19
|
+
get show() {
|
|
20
|
+
return isSolving();
|
|
21
|
+
},
|
|
22
|
+
slow: false
|
|
23
|
+
};
|
|
24
|
+
}
|
|
14
25
|
let show = $state(false);
|
|
15
|
-
let
|
|
16
|
-
let
|
|
17
|
-
|
|
26
|
+
let slow = $state(false);
|
|
27
|
+
let shownAt = 0;
|
|
28
|
+
let showTimer = null;
|
|
29
|
+
let slowTimer = null;
|
|
30
|
+
let hideTimer = null;
|
|
31
|
+
function clear(timer) {
|
|
32
|
+
if (timer)
|
|
33
|
+
clearTimeout(timer);
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
function hide() {
|
|
37
|
+
hideTimer = null;
|
|
38
|
+
show = false;
|
|
39
|
+
slow = false;
|
|
40
|
+
}
|
|
18
41
|
$effect(() => {
|
|
19
42
|
const solving = isSolving();
|
|
20
43
|
untrack(() => {
|
|
21
44
|
if (solving) {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
return;
|
|
28
|
-
const delay = avg === Infinity || avg >= SLOW_THRESHOLD_MS
|
|
29
|
-
? 0
|
|
30
|
-
: ((avg - FAST_THRESHOLD_MS) / (SLOW_THRESHOLD_MS - FAST_THRESHOLD_MS)) *
|
|
31
|
-
ANIMATION_DELAY;
|
|
32
|
-
if (!timeout) {
|
|
33
|
-
if (delay === 0) {
|
|
45
|
+
// A solve that starts while the last one's indicator is held keeps it up.
|
|
46
|
+
hideTimer = clear(hideTimer);
|
|
47
|
+
if (!show) {
|
|
48
|
+
showTimer ??= setTimeout(() => {
|
|
49
|
+
showTimer = null;
|
|
34
50
|
show = true;
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
timeout = setTimeout(() => {
|
|
38
|
-
show = true;
|
|
39
|
-
timeout = null;
|
|
40
|
-
}, delay);
|
|
41
|
-
}
|
|
51
|
+
shownAt = performance.now();
|
|
52
|
+
}, SHOW_AFTER_MS);
|
|
42
53
|
}
|
|
54
|
+
slowTimer ??= setTimeout(() => {
|
|
55
|
+
slowTimer = null;
|
|
56
|
+
slow = true;
|
|
57
|
+
}, SLOW_AFTER_MS);
|
|
43
58
|
}
|
|
44
59
|
else {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
}
|
|
55
|
-
show = false;
|
|
60
|
+
showTimer = clear(showTimer);
|
|
61
|
+
slowTimer = clear(slowTimer);
|
|
62
|
+
if (!show)
|
|
63
|
+
return;
|
|
64
|
+
const remaining = MIN_VISIBLE_MS - (performance.now() - shownAt);
|
|
65
|
+
if (remaining > 0)
|
|
66
|
+
hideTimer ??= setTimeout(hide, remaining);
|
|
67
|
+
else
|
|
68
|
+
hide();
|
|
56
69
|
}
|
|
57
70
|
});
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
71
|
+
});
|
|
72
|
+
// Separate from the effect above: a cleanup there would run on every `isSolving` flip and
|
|
73
|
+
// cancel the timers it just set.
|
|
74
|
+
$effect(() => () => {
|
|
75
|
+
clear(showTimer);
|
|
76
|
+
clear(slowTimer);
|
|
77
|
+
clear(hideTimer);
|
|
62
78
|
});
|
|
63
79
|
return {
|
|
64
80
|
get show() {
|
|
65
81
|
return show;
|
|
82
|
+
},
|
|
83
|
+
get slow() {
|
|
84
|
+
return slow;
|
|
66
85
|
}
|
|
67
86
|
};
|
|
68
87
|
}
|
package/dist/constants.d.ts
CHANGED
|
@@ -10,14 +10,12 @@ export declare const APP_DEFAULTS: {
|
|
|
10
10
|
DRAWER_ANIMATION_MS: number;
|
|
11
11
|
};
|
|
12
12
|
SOLVING_INDICATOR: {
|
|
13
|
-
/**
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
|
|
19
|
-
/** Number of solve durations to keep in history for averaging */
|
|
20
|
-
HISTORY_SIZE: number;
|
|
13
|
+
/** A solve that ends sooner shows no indicator (ms) */
|
|
14
|
+
SHOW_AFTER_MS: number;
|
|
15
|
+
/** Once shown, the indicator stays at least this long (ms) */
|
|
16
|
+
MIN_VISIBLE_MS: number;
|
|
17
|
+
/** Past this a solve counts as slow and the viewer dims its stale result (ms) */
|
|
18
|
+
SLOW_AFTER_MS: number;
|
|
21
19
|
};
|
|
22
20
|
FILE_SIZE: {
|
|
23
21
|
/** Bytes per kilobyte */
|
package/dist/constants.js
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: {
|
|
@@ -16,16 +15,14 @@ export const APP_DEFAULTS = {
|
|
|
16
15
|
/** Drawer open/close animation duration (ms) — matches the CSS transition. */
|
|
17
16
|
DRAWER_ANIMATION_MS: 350
|
|
18
17
|
},
|
|
19
|
-
//
|
|
18
|
+
// See createSolvingIndicator.
|
|
20
19
|
SOLVING_INDICATOR: {
|
|
21
|
-
/**
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
|
|
27
|
-
/** Number of solve durations to keep in history for averaging */
|
|
28
|
-
HISTORY_SIZE: 3
|
|
20
|
+
/** A solve that ends sooner shows no indicator (ms) */
|
|
21
|
+
SHOW_AFTER_MS: 400,
|
|
22
|
+
/** Once shown, the indicator stays at least this long (ms) */
|
|
23
|
+
MIN_VISIBLE_MS: 500,
|
|
24
|
+
/** Past this a solve counts as slow and the viewer dims its stale result (ms) */
|
|
25
|
+
SLOW_AFTER_MS: 2000
|
|
29
26
|
},
|
|
30
27
|
// File size formatting
|
|
31
28
|
FILE_SIZE: {
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { GeometryKind } from '@selvajs/schemas';
|
|
2
|
+
import type { UIHost } from '../schema/host-support.js';
|
|
3
|
+
export type GeometryPickResult = {
|
|
4
|
+
outcome: 'picked';
|
|
5
|
+
summary: string;
|
|
6
|
+
} | {
|
|
7
|
+
outcome: 'cancelled';
|
|
8
|
+
} | {
|
|
9
|
+
outcome: 'failed';
|
|
10
|
+
error: string;
|
|
11
|
+
};
|
|
12
|
+
/** What a pick button can ask for: a Get Geometry filter's kinds, or Get Point/Line/Plane's own. */
|
|
13
|
+
export type PickKind = GeometryKind | 'line' | 'plane';
|
|
14
|
+
/** What a geometry input lets the user pick, as the host discovered it on the canvas. */
|
|
15
|
+
export interface GeometryPickTarget {
|
|
16
|
+
/** The kinds its filter allows; absent when it takes anything. */
|
|
17
|
+
kinds?: readonly GeometryKind[];
|
|
18
|
+
/** 1 picks a single object. */
|
|
19
|
+
atMost?: number;
|
|
20
|
+
}
|
|
21
|
+
export interface HostActions {
|
|
22
|
+
host: UIHost;
|
|
23
|
+
/** Prompts in the Rhino viewport for a geometry input. The picked geometry stays in Grasshopper. */
|
|
24
|
+
pickGeometry?: (paramId: string) => Promise<GeometryPickResult>;
|
|
25
|
+
/** Empties a geometry input again, back to the definition's own value. */
|
|
26
|
+
clearGeometry?: (paramId: string) => void;
|
|
27
|
+
/**
|
|
28
|
+
* Reports what the param holds after every pick or clear, including those another page asked
|
|
29
|
+
* for; null when nothing is picked into it. Returns an unsubscribe.
|
|
30
|
+
*/
|
|
31
|
+
onGeometrySummary?: (paramId: string, listener: (summary: string | null) => void) => () => void;
|
|
32
|
+
describeGeometry?: (paramId: string) => GeometryPickTarget | undefined;
|
|
33
|
+
/** Presses a button input: one solve with `true`, then it goes back to `false`. */
|
|
34
|
+
trigger?: (paramId: string) => void;
|
|
35
|
+
/** Grasshopper refuses a press while it solves, so the button waits it out disabled. */
|
|
36
|
+
isSolving?: () => boolean;
|
|
37
|
+
}
|
|
38
|
+
export declare function setHostContext(actions: HostActions): void;
|
|
39
|
+
export declare function getHostContext(): HostActions;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { getContext, setContext } from 'svelte';
|
|
2
|
+
const SELVA_HOST = { host: 'selva' };
|
|
3
|
+
const HOST_CONTEXT_KEY = Symbol('host-context');
|
|
4
|
+
export function setHostContext(actions) {
|
|
5
|
+
setContext(HOST_CONTEXT_KEY, actions);
|
|
6
|
+
}
|
|
7
|
+
export function getHostContext() {
|
|
8
|
+
return getContext(HOST_CONTEXT_KEY) ?? SELVA_HOST;
|
|
9
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
type Json = Record<string, unknown>;
|
|
2
|
+
export interface PlotlyFigure {
|
|
3
|
+
data: Json[];
|
|
4
|
+
layout?: Json;
|
|
5
|
+
config?: Json;
|
|
6
|
+
frames?: Json[];
|
|
7
|
+
}
|
|
8
|
+
/** Returns a rewritten copy; the input is not modified. */
|
|
9
|
+
export declare function upgradePlotlyFigure(figure: PlotlyFigure): PlotlyFigure;
|
|
10
|
+
/**
|
|
11
|
+
* Rewrites colour spellings Plotly 3 accepted but Plotly 4 rejects (hex without `#`, `hsv()`)
|
|
12
|
+
* into valid CSS. Anything else is returned unchanged.
|
|
13
|
+
*/
|
|
14
|
+
export declare function normalizePlotlyColor(color: string): string;
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { hsvToRgb } from '../../utils/color-space.js';
|
|
2
|
+
const REMOVED_MAP_TRACES = {
|
|
3
|
+
scattermapbox: 'scattermap',
|
|
4
|
+
choroplethmapbox: 'choroplethmap',
|
|
5
|
+
densitymapbox: 'densitymap'
|
|
6
|
+
};
|
|
7
|
+
const MAPBOX_SUBPLOT = /^mapbox(\d*)$/;
|
|
8
|
+
const BARE_HEX = /^(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i;
|
|
9
|
+
const HSV_FUNCTION = /^hsva?[\s(]+([-+\d.]+)%?[\s,]+([\d.]+)(%?)[\s,]+([\d.]+)(%?)(?:[\s,/]+([\d.]+)(%?))?[\s)]*$/i;
|
|
10
|
+
const isObject = (v) => typeof v === 'object' && v !== null && !Array.isArray(v);
|
|
11
|
+
/** Returns a rewritten copy; the input is not modified. */
|
|
12
|
+
export function upgradePlotlyFigure(figure) {
|
|
13
|
+
const out = structuredClone(figure);
|
|
14
|
+
const layout = out.layout ?? {};
|
|
15
|
+
normalizeColors(layout);
|
|
16
|
+
let migratedMaps = false;
|
|
17
|
+
for (const trace of out.data ?? []) {
|
|
18
|
+
if (!isObject(trace))
|
|
19
|
+
continue;
|
|
20
|
+
normalizeColors(trace);
|
|
21
|
+
const replacement = REMOVED_MAP_TRACES[trace.type];
|
|
22
|
+
if (replacement) {
|
|
23
|
+
trace.type = replacement;
|
|
24
|
+
if (typeof trace.subplot === 'string')
|
|
25
|
+
trace.subplot = trace.subplot.replace(MAPBOX_SUBPLOT, 'map$1');
|
|
26
|
+
migratedMaps = true;
|
|
27
|
+
}
|
|
28
|
+
else if (trace.type === 'splom') {
|
|
29
|
+
keepSplomAxesUnlinked(trace);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (migratedMaps)
|
|
33
|
+
migrateMapLayout(layout);
|
|
34
|
+
// Frame data replaces trace data during playback, so it needs the same colour fixes.
|
|
35
|
+
for (const frame of out.frames ?? [])
|
|
36
|
+
if (isObject(frame))
|
|
37
|
+
normalizeColors(frame);
|
|
38
|
+
return { ...out, layout };
|
|
39
|
+
}
|
|
40
|
+
// Plotly 4 links each dimension's x and y axes by default.
|
|
41
|
+
function keepSplomAxesUnlinked(trace) {
|
|
42
|
+
if (!Array.isArray(trace.dimensions))
|
|
43
|
+
return;
|
|
44
|
+
for (const dim of trace.dimensions) {
|
|
45
|
+
if (!isObject(dim))
|
|
46
|
+
continue;
|
|
47
|
+
const axis = isObject(dim.axis) ? dim.axis : (dim.axis = {});
|
|
48
|
+
if (!('matches' in axis))
|
|
49
|
+
axis.matches = false;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
function migrateMapLayout(layout) {
|
|
53
|
+
for (const key of Object.keys(layout)) {
|
|
54
|
+
const match = MAPBOX_SUBPLOT.exec(key);
|
|
55
|
+
if (!match)
|
|
56
|
+
continue;
|
|
57
|
+
const map = layout[key];
|
|
58
|
+
delete layout[key];
|
|
59
|
+
const newKey = `map${match[1]}`;
|
|
60
|
+
if (newKey in layout || !isObject(map))
|
|
61
|
+
continue;
|
|
62
|
+
delete map.accesstoken;
|
|
63
|
+
// Stamen and mapbox:// styles have no map equivalent.
|
|
64
|
+
if (typeof map.style === 'string' && /^(stamen|mapbox:\/\/)/.test(map.style))
|
|
65
|
+
map.style = 'open-street-map';
|
|
66
|
+
layout[newKey] = map;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
// Plotly attributes that hold colours: *color, colorway, colorscale and pie's marker.colors.
|
|
70
|
+
const isColorKey = (key) => key.toLowerCase().endsWith('color') ||
|
|
71
|
+
key === 'colors' ||
|
|
72
|
+
key === 'colorway' ||
|
|
73
|
+
key === 'colorscale';
|
|
74
|
+
function normalizeColors(props) {
|
|
75
|
+
for (const [key, value] of Object.entries(props)) {
|
|
76
|
+
if (isColorKey(key))
|
|
77
|
+
props[key] = normalizeColorValue(value, false);
|
|
78
|
+
else if (isObject(value))
|
|
79
|
+
normalizeColors(value);
|
|
80
|
+
else if (Array.isArray(value))
|
|
81
|
+
for (const item of value)
|
|
82
|
+
if (isObject(item))
|
|
83
|
+
normalizeColors(item);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
// Covers a single colour, a per-point list and colorscale stops ([[0, "ff0000"], ...]).
|
|
87
|
+
function normalizeColorValue(value, inList) {
|
|
88
|
+
if (Array.isArray(value))
|
|
89
|
+
return value.map((v) => normalizeColorValue(v, true));
|
|
90
|
+
if (typeof value !== 'string')
|
|
91
|
+
return value;
|
|
92
|
+
// Plotly reads numeric strings in a per-point list as numbers for the colorscale.
|
|
93
|
+
if (inList && /^\s*\d+\s*$/.test(value))
|
|
94
|
+
return value;
|
|
95
|
+
return normalizePlotlyColor(value);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Rewrites colour spellings Plotly 3 accepted but Plotly 4 rejects (hex without `#`, `hsv()`)
|
|
99
|
+
* into valid CSS. Anything else is returned unchanged.
|
|
100
|
+
*/
|
|
101
|
+
export function normalizePlotlyColor(color) {
|
|
102
|
+
const value = color.trim();
|
|
103
|
+
if (BARE_HEX.test(value))
|
|
104
|
+
return `#${value}`;
|
|
105
|
+
const hsv = HSV_FUNCTION.exec(value);
|
|
106
|
+
if (!hsv)
|
|
107
|
+
return color;
|
|
108
|
+
const { r, g, b } = hsvToRgb({
|
|
109
|
+
h: Number(hsv[1]),
|
|
110
|
+
s: unit(hsv[2], hsv[3] === '%'),
|
|
111
|
+
v: unit(hsv[4], hsv[5] === '%')
|
|
112
|
+
});
|
|
113
|
+
const rgb = `${Math.round(r)},${Math.round(g)},${Math.round(b)}`;
|
|
114
|
+
if (hsv[6] === undefined)
|
|
115
|
+
return `rgb(${rgb})`;
|
|
116
|
+
return `rgba(${rgb},${+unit(hsv[6], hsv[7] === '%').toFixed(3)})`;
|
|
117
|
+
}
|
|
118
|
+
// Plotly 3 (TinyColor) read 0..1 as a fraction and anything above 1 as a percentage.
|
|
119
|
+
function unit(s, percent) {
|
|
120
|
+
let x = Number(s);
|
|
121
|
+
if (percent || x > 1)
|
|
122
|
+
x /= 100;
|
|
123
|
+
return Math.min(1, Math.max(0, x));
|
|
124
|
+
}
|
package/dist/i18n/messages.d.ts
CHANGED
|
@@ -23,6 +23,8 @@ export interface ViewerMessages {
|
|
|
23
23
|
lookTechnical: string;
|
|
24
24
|
lookStudio: string;
|
|
25
25
|
lookShowcase: string;
|
|
26
|
+
lookNight: string;
|
|
27
|
+
nightMode: string;
|
|
26
28
|
lookArctic: string;
|
|
27
29
|
lookXray: string;
|
|
28
30
|
lookLineart: string;
|
|
@@ -50,8 +52,14 @@ export interface ViewerMessages {
|
|
|
50
52
|
solveMessagesConfirm: string;
|
|
51
53
|
solveMessagesDiscard: string;
|
|
52
54
|
solveMessagesAbort: string;
|
|
55
|
+
/** Stands in for Abort where the page can't take a click mid-solve. */
|
|
56
|
+
solveMessagesEscHint: string;
|
|
53
57
|
solveMessagesDismiss: string;
|
|
54
58
|
solveSolving: string;
|
|
59
|
+
/** A visible solve has landed; followed by how long it took. */
|
|
60
|
+
solveDone: string;
|
|
61
|
+
/** A visible solve was aborted; the previous result stays. */
|
|
62
|
+
solveStopped: string;
|
|
55
63
|
parametersTab: string;
|
|
56
64
|
moreTab: string;
|
|
57
65
|
scrollTabsBack: string;
|
|
@@ -100,7 +108,48 @@ export interface ViewerMessages {
|
|
|
100
108
|
/** `{max}` is replaced with the field's character limit. */
|
|
101
109
|
maxLength: string;
|
|
102
110
|
invalidFormat: string;
|
|
111
|
+
/** Trigger label; `{color}` is the current hex value. */
|
|
112
|
+
colorPick: string;
|
|
113
|
+
colorArea: string;
|
|
114
|
+
/** `{s}` and `{v}` are percentages. */
|
|
115
|
+
colorAreaValue: string;
|
|
116
|
+
colorHue: string;
|
|
117
|
+
colorHex: string;
|
|
118
|
+
colorHexInvalid: string;
|
|
119
|
+
colorPresets: string;
|
|
120
|
+
colorEyedropper: string;
|
|
103
121
|
invalidPattern: string;
|
|
122
|
+
/** The pick button when the input takes several kinds of object. */
|
|
123
|
+
geometryPickAnyOne: string;
|
|
124
|
+
geometryPickAnyOther: string;
|
|
125
|
+
/** Shown while Rhino's viewport prompt for a pick is open. */
|
|
126
|
+
geometryPicking: string;
|
|
127
|
+
/** Where this page may not pick, such as a browser tab beside the Rhino panel. */
|
|
128
|
+
geometryPickInPanel: string;
|
|
129
|
+
geometryPickAgain: string;
|
|
130
|
+
geometryClear: string;
|
|
131
|
+
geometryPickPointOne: string;
|
|
132
|
+
geometryPickPointOther: string;
|
|
133
|
+
geometryPickPointCloudOne: string;
|
|
134
|
+
geometryPickPointCloudOther: string;
|
|
135
|
+
geometryPickCurveOne: string;
|
|
136
|
+
geometryPickCurveOther: string;
|
|
137
|
+
geometryPickLineOne: string;
|
|
138
|
+
geometryPickLineOther: string;
|
|
139
|
+
geometryPickPlaneOne: string;
|
|
140
|
+
geometryPickPlaneOther: string;
|
|
141
|
+
geometryPickSurfaceOne: string;
|
|
142
|
+
geometryPickSurfaceOther: string;
|
|
143
|
+
geometryPickPolysurfaceOne: string;
|
|
144
|
+
geometryPickPolysurfaceOther: string;
|
|
145
|
+
geometryPickExtrusionOne: string;
|
|
146
|
+
geometryPickExtrusionOther: string;
|
|
147
|
+
geometryPickMeshOne: string;
|
|
148
|
+
geometryPickMeshOther: string;
|
|
149
|
+
geometryPickSubdOne: string;
|
|
150
|
+
geometryPickSubdOther: string;
|
|
151
|
+
geometryPickBlockOne: string;
|
|
152
|
+
geometryPickBlockOther: string;
|
|
104
153
|
fileModeUpload: string;
|
|
105
154
|
fileModeUrl: string;
|
|
106
155
|
fileUrlLabel: string;
|
|
@@ -150,6 +199,7 @@ export interface ViewerMessages {
|
|
|
150
199
|
copied: string;
|
|
151
200
|
chartReceiving: string;
|
|
152
201
|
chartRenderFailed: string;
|
|
202
|
+
downloadChartImage: string;
|
|
153
203
|
/** `{error}` is replaced with the browser's reason. */
|
|
154
204
|
fullscreenUnavailable: string;
|
|
155
205
|
/** `{error}` is replaced with the browser's reason. */
|
package/dist/i18n/messages.js
CHANGED
|
@@ -32,6 +32,8 @@ const en = {
|
|
|
32
32
|
lookTechnical: 'Technical',
|
|
33
33
|
lookStudio: 'Studio',
|
|
34
34
|
lookShowcase: 'Showcase',
|
|
35
|
+
lookNight: 'Night',
|
|
36
|
+
nightMode: 'Night mode',
|
|
35
37
|
lookArctic: 'Arctic',
|
|
36
38
|
lookXray: 'X-Ray',
|
|
37
39
|
lookLineart: 'Line Art',
|
|
@@ -58,8 +60,11 @@ const en = {
|
|
|
58
60
|
solveMessagesConfirm: 'Continue',
|
|
59
61
|
solveMessagesDiscard: 'Discard',
|
|
60
62
|
solveMessagesAbort: 'Abort',
|
|
63
|
+
solveMessagesEscHint: 'Esc aborts the solve',
|
|
61
64
|
solveMessagesDismiss: 'Dismiss',
|
|
62
65
|
solveSolving: 'Solving…',
|
|
66
|
+
solveDone: 'Done',
|
|
67
|
+
solveStopped: 'Stopped',
|
|
63
68
|
parametersTab: 'Parameters',
|
|
64
69
|
moreTab: 'More',
|
|
65
70
|
scrollTabsBack: 'Previous tabs',
|
|
@@ -97,7 +102,43 @@ const en = {
|
|
|
97
102
|
fineDragHint: 'Hold Shift to drag finely',
|
|
98
103
|
maxLength: 'Maximum {max} characters allowed',
|
|
99
104
|
invalidFormat: 'Invalid format',
|
|
105
|
+
colorPick: 'Choose color, currently {color}',
|
|
106
|
+
colorArea: 'Saturation and brightness',
|
|
107
|
+
colorAreaValue: 'Saturation {s}%, brightness {v}%',
|
|
108
|
+
colorHue: 'Hue',
|
|
109
|
+
colorHex: 'Hex color',
|
|
110
|
+
colorHexInvalid: 'Enter a hex color such as #2f6fd6',
|
|
111
|
+
colorPresets: 'Presets',
|
|
112
|
+
colorEyedropper: 'Pick a color from the screen',
|
|
100
113
|
invalidPattern: 'Invalid validation pattern configured',
|
|
114
|
+
geometryPickAnyOne: 'Pick an object',
|
|
115
|
+
geometryPickAnyOther: 'Pick objects',
|
|
116
|
+
geometryPicking: 'Pick in the viewport, Esc to cancel',
|
|
117
|
+
geometryPickInPanel: 'Pick in the Rhino panel',
|
|
118
|
+
geometryPickAgain: 'Pick again',
|
|
119
|
+
geometryClear: 'Clear',
|
|
120
|
+
geometryPickPointOne: 'Pick a point',
|
|
121
|
+
geometryPickPointOther: 'Pick points',
|
|
122
|
+
geometryPickPointCloudOne: 'Pick a point cloud',
|
|
123
|
+
geometryPickPointCloudOther: 'Pick point clouds',
|
|
124
|
+
geometryPickCurveOne: 'Pick a curve',
|
|
125
|
+
geometryPickCurveOther: 'Pick curves',
|
|
126
|
+
geometryPickLineOne: 'Pick a line',
|
|
127
|
+
geometryPickLineOther: 'Pick lines',
|
|
128
|
+
geometryPickPlaneOne: 'Pick a plane',
|
|
129
|
+
geometryPickPlaneOther: 'Pick planes',
|
|
130
|
+
geometryPickSurfaceOne: 'Pick a surface',
|
|
131
|
+
geometryPickSurfaceOther: 'Pick surfaces',
|
|
132
|
+
geometryPickPolysurfaceOne: 'Pick a polysurface',
|
|
133
|
+
geometryPickPolysurfaceOther: 'Pick polysurfaces',
|
|
134
|
+
geometryPickExtrusionOne: 'Pick an extrusion',
|
|
135
|
+
geometryPickExtrusionOther: 'Pick extrusions',
|
|
136
|
+
geometryPickMeshOne: 'Pick a mesh',
|
|
137
|
+
geometryPickMeshOther: 'Pick meshes',
|
|
138
|
+
geometryPickSubdOne: 'Pick a SubD',
|
|
139
|
+
geometryPickSubdOther: 'Pick SubDs',
|
|
140
|
+
geometryPickBlockOne: 'Pick a block',
|
|
141
|
+
geometryPickBlockOther: 'Pick blocks',
|
|
101
142
|
fileModeUpload: 'Upload',
|
|
102
143
|
fileModeUrl: 'URL',
|
|
103
144
|
fileUrlLabel: 'File URL',
|
|
@@ -137,6 +178,7 @@ const en = {
|
|
|
137
178
|
copied: 'Copied!',
|
|
138
179
|
chartReceiving: 'Receiving chart data...',
|
|
139
180
|
chartRenderFailed: 'Failed to render chart',
|
|
181
|
+
downloadChartImage: 'Download plot as image',
|
|
140
182
|
fullscreenUnavailable: 'Fullscreen unavailable: {error}',
|
|
141
183
|
exitFullscreenFailed: 'Exit fullscreen failed: {error}',
|
|
142
184
|
imageViewer: 'image viewer',
|
|
@@ -177,6 +219,8 @@ const de = {
|
|
|
177
219
|
lookTechnical: 'Technisch',
|
|
178
220
|
lookStudio: 'Studio',
|
|
179
221
|
lookShowcase: 'Präsentation',
|
|
222
|
+
lookNight: 'Nacht',
|
|
223
|
+
nightMode: 'Nachtmodus',
|
|
180
224
|
lookArctic: 'Arktis',
|
|
181
225
|
lookXray: 'Röntgen',
|
|
182
226
|
lookLineart: 'Strichzeichnung',
|
|
@@ -203,8 +247,11 @@ const de = {
|
|
|
203
247
|
solveMessagesConfirm: 'Weiter',
|
|
204
248
|
solveMessagesDiscard: 'Verwerfen',
|
|
205
249
|
solveMessagesAbort: 'Abbrechen',
|
|
250
|
+
solveMessagesEscHint: 'Esc bricht die Berechnung ab',
|
|
206
251
|
solveMessagesDismiss: 'Schliessen',
|
|
207
252
|
solveSolving: 'Berechnung läuft…',
|
|
253
|
+
solveDone: 'Fertig',
|
|
254
|
+
solveStopped: 'Abgebrochen',
|
|
208
255
|
parametersTab: 'Parameter',
|
|
209
256
|
moreTab: 'Mehr',
|
|
210
257
|
scrollTabsBack: 'Vorherige Tabs',
|
|
@@ -242,7 +289,43 @@ const de = {
|
|
|
242
289
|
fineDragHint: 'Umschalttaste halten für feine Schritte',
|
|
243
290
|
maxLength: 'Höchstens {max} Zeichen erlaubt',
|
|
244
291
|
invalidFormat: 'Ungültiges Format',
|
|
292
|
+
colorPick: 'Farbe wählen, aktuell {color}',
|
|
293
|
+
colorArea: 'Sättigung und Helligkeit',
|
|
294
|
+
colorAreaValue: 'Sättigung {s} %, Helligkeit {v} %',
|
|
295
|
+
colorHue: 'Farbton',
|
|
296
|
+
colorHex: 'Hex-Farbe',
|
|
297
|
+
colorHexInvalid: 'Hex-Farbe eingeben, z. B. #2f6fd6',
|
|
298
|
+
colorPresets: 'Vorgaben',
|
|
299
|
+
colorEyedropper: 'Farbe vom Bildschirm aufnehmen',
|
|
245
300
|
invalidPattern: 'Ungültiges Prüfmuster hinterlegt',
|
|
301
|
+
geometryPickAnyOne: 'Objekt wählen',
|
|
302
|
+
geometryPickAnyOther: 'Objekte wählen',
|
|
303
|
+
geometryPicking: 'Im Ansichtsfenster wählen, Esc bricht ab',
|
|
304
|
+
geometryPickInPanel: 'Im Rhino-Panel wählen',
|
|
305
|
+
geometryPickAgain: 'Neu wählen',
|
|
306
|
+
geometryClear: 'Leeren',
|
|
307
|
+
geometryPickPointOne: 'Punkt wählen',
|
|
308
|
+
geometryPickPointOther: 'Punkte wählen',
|
|
309
|
+
geometryPickPointCloudOne: 'Punktwolke wählen',
|
|
310
|
+
geometryPickPointCloudOther: 'Punktwolken wählen',
|
|
311
|
+
geometryPickCurveOne: 'Kurve wählen',
|
|
312
|
+
geometryPickCurveOther: 'Kurven wählen',
|
|
313
|
+
geometryPickLineOne: 'Linie wählen',
|
|
314
|
+
geometryPickLineOther: 'Linien wählen',
|
|
315
|
+
geometryPickPlaneOne: 'Ebene wählen',
|
|
316
|
+
geometryPickPlaneOther: 'Ebenen wählen',
|
|
317
|
+
geometryPickSurfaceOne: 'Fläche wählen',
|
|
318
|
+
geometryPickSurfaceOther: 'Flächen wählen',
|
|
319
|
+
geometryPickPolysurfaceOne: 'Flächenverband wählen',
|
|
320
|
+
geometryPickPolysurfaceOther: 'Flächenverbände wählen',
|
|
321
|
+
geometryPickExtrusionOne: 'Extrusion wählen',
|
|
322
|
+
geometryPickExtrusionOther: 'Extrusionen wählen',
|
|
323
|
+
geometryPickMeshOne: 'Netz wählen',
|
|
324
|
+
geometryPickMeshOther: 'Netze wählen',
|
|
325
|
+
geometryPickSubdOne: 'SubD wählen',
|
|
326
|
+
geometryPickSubdOther: 'SubDs wählen',
|
|
327
|
+
geometryPickBlockOne: 'Block wählen',
|
|
328
|
+
geometryPickBlockOther: 'Blöcke wählen',
|
|
246
329
|
fileModeUpload: 'Hochladen',
|
|
247
330
|
fileModeUrl: 'URL',
|
|
248
331
|
fileUrlLabel: 'Datei-URL',
|
|
@@ -282,6 +365,7 @@ const de = {
|
|
|
282
365
|
copied: 'Kopiert!',
|
|
283
366
|
chartReceiving: 'Diagrammdaten werden empfangen…',
|
|
284
367
|
chartRenderFailed: 'Diagramm konnte nicht dargestellt werden',
|
|
368
|
+
downloadChartImage: 'Diagramm als Bild herunterladen',
|
|
285
369
|
fullscreenUnavailable: 'Vollbild nicht verfügbar: {error}',
|
|
286
370
|
exitFullscreenFailed: 'Vollbild konnte nicht beendet werden: {error}',
|
|
287
371
|
imageViewer: 'Bildbetrachter',
|
package/dist/index.d.ts
CHANGED
|
@@ -5,19 +5,24 @@ export { default as SolveMessages } from './components/compute/SolveMessages.sve
|
|
|
5
5
|
export { default as ErrorScreen } from './components/ErrorScreen.svelte';
|
|
6
6
|
export * from './components/primitives';
|
|
7
7
|
export { default as StateDisplay } from './components/primitives/StateDisplay.svelte';
|
|
8
|
+
export { default as ColorInput } from './components/preview/inputs/ColorInput.svelte';
|
|
8
9
|
export { default as Viewer } from './components/viewer/Viewer.svelte';
|
|
9
10
|
export * from './schema/defaults';
|
|
10
11
|
export * from './schema/dynamic-value-list';
|
|
11
12
|
export * from './schema/traversal';
|
|
13
|
+
export { visibleInputItems } from './schema/visibility-rules';
|
|
14
|
+
export { type UIHost, type ElementKind, HOST_LABELS, isGeometryParamType, layoutItemKind, hostsFor, isSupportedOn, valuelessInputIds, unsupportedItems } from './schema/host-support';
|
|
12
15
|
export * from './compute/solving.svelte';
|
|
13
16
|
export { useSolveSession } from './compute/useSolveSession.svelte';
|
|
14
17
|
export { createSolveSession, createRequestResponseDriver, type SolveSession, type SolveSessionArgs, type SolveSettlement, type SolveDriver, type SolveReporter, type LiveSolveState, type SolvePhase, EMPTY_LIVE_SOLVE, decodeOutcome, finalizeResult, type SolveOutcome } from '@selvajs/solve/client';
|
|
15
18
|
export { writeExternalValue, readExternalValue, clearExternalValue, getExternalInputs, type ExternalValueRef, type ExternalInput } from '@selvajs/solve/client';
|
|
16
19
|
export * from './contexts/footerContext.svelte';
|
|
17
20
|
export * from './contexts/clientSlotContext.svelte';
|
|
21
|
+
export * from './contexts/hostContext.svelte';
|
|
18
22
|
export * from './composables/useFooterItem.svelte';
|
|
19
23
|
export * from './utils';
|
|
20
24
|
export { randomId } from './utils/randomId';
|
|
25
|
+
export { saveBlob, pickFile, setBlobSaver, setFilePicker, type BlobSaver, type FilePicker } from './utils/host-files';
|
|
21
26
|
export type { ActionButton } from './types/actionButton';
|
|
22
27
|
export type { SolveFn, SolveResult, SolveDiagnostic } from '@selvajs/solve/shared';
|
|
23
28
|
export { DEFAULT_PRESET_LABELS, type PresetLabels } from './types/presetLabels';
|
package/dist/index.js
CHANGED
|
@@ -9,10 +9,13 @@ export { default as ErrorScreen } from './components/ErrorScreen.svelte';
|
|
|
9
9
|
// Design-system primitives (shadcn-svelte + custom)
|
|
10
10
|
export * from './components/primitives';
|
|
11
11
|
export { default as StateDisplay } from './components/primitives/StateDisplay.svelte';
|
|
12
|
+
export { default as ColorInput } from './components/preview/inputs/ColorInput.svelte';
|
|
12
13
|
export { default as Viewer } from './components/viewer/Viewer.svelte';
|
|
13
14
|
export * from './schema/defaults';
|
|
14
15
|
export * from './schema/dynamic-value-list';
|
|
15
16
|
export * from './schema/traversal';
|
|
17
|
+
export { visibleInputItems } from './schema/visibility-rules';
|
|
18
|
+
export { HOST_LABELS, isGeometryParamType, layoutItemKind, hostsFor, isSupportedOn, valuelessInputIds, unsupportedItems } from './schema/host-support';
|
|
16
19
|
export * from './compute/solving.svelte';
|
|
17
20
|
// Solve Session seam. Re-exported so transports outside this package — e.g.
|
|
18
21
|
// plugin-ui's WebSocket driver — can satisfy SolveDriver and drive a session.
|
|
@@ -25,7 +28,9 @@ EMPTY_LIVE_SOLVE, decodeOutcome, finalizeResult } from '@selvajs/solve/client';
|
|
|
25
28
|
export { writeExternalValue, readExternalValue, clearExternalValue, getExternalInputs } from '@selvajs/solve/client';
|
|
26
29
|
export * from './contexts/footerContext.svelte';
|
|
27
30
|
export * from './contexts/clientSlotContext.svelte';
|
|
31
|
+
export * from './contexts/hostContext.svelte';
|
|
28
32
|
export * from './composables/useFooterItem.svelte';
|
|
29
33
|
export * from './utils';
|
|
30
34
|
export { randomId } from './utils/randomId';
|
|
35
|
+
export { saveBlob, pickFile, setBlobSaver, setFilePicker } from './utils/host-files';
|
|
31
36
|
export { DEFAULT_PRESET_LABELS } from './types/presetLabels';
|