entasis 0.10.2 → 0.12.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 +1 -1
- package/dist/attachments/disclosurePanel.svelte.d.ts +84 -0
- package/dist/attachments/disclosurePanel.svelte.js +277 -0
- package/dist/attachments/portal.d.ts +17 -1
- package/dist/attachments/portal.js +39 -2
- package/dist/attachments/spinnerOverlay.svelte.js +12 -0
- package/dist/attachments/transitionSize.d.ts +6 -0
- package/dist/attachments/transitionSize.js +30 -0
- package/dist/components/AIAskUserQuestion/AIAskUserQuestion.svelte +131 -17
- package/dist/components/AIAskUserQuestion/AIAskUserQuestionFileStep.svelte +26 -6
- package/dist/components/AIAskUserQuestion/AIAskUserQuestionFileStep.svelte.d.ts +6 -0
- package/dist/components/AIAskUserQuestion/AIAskUserQuestionFooter.svelte +27 -53
- package/dist/components/AIAskUserQuestion/AIAskUserQuestionFooter.svelte.d.ts +3 -4
- package/dist/components/AIAskUserQuestion/AIAskUserQuestionHeader.svelte +19 -16
- package/dist/components/AIAskUserQuestion/AIAskUserQuestionStep.svelte +180 -21
- package/dist/components/AIAskUserQuestion/AIAskUserQuestionStep.svelte.d.ts +9 -1
- package/dist/components/AIAskUserQuestion/AIAskUserQuestionSummary.svelte +56 -0
- package/dist/components/AIAskUserQuestion/AIAskUserQuestionSummary.svelte.d.ts +4 -0
- package/dist/components/AIAskUserQuestion/aiAskUserQuestion.mcp.d.ts +1 -1
- package/dist/components/AIAskUserQuestion/aiAskUserQuestion.mcp.js +26 -8
- package/dist/components/AIAskUserQuestion/aiAskUserQuestion.props.d.ts +62 -5
- package/dist/components/AIAskUserQuestion/aiAskUserQuestion.theme.d.ts +42 -0
- package/dist/components/AIAskUserQuestion/aiAskUserQuestion.theme.js +53 -12
- package/dist/components/AIAskUserQuestion/aiAskUserQuestionAnswers.d.ts +17 -1
- package/dist/components/AIAskUserQuestion/aiAskUserQuestionAnswers.js +56 -8
- package/dist/components/AIAskUserQuestion/index.d.ts +3 -1
- package/dist/components/AIAskUserQuestion/index.js +2 -0
- package/dist/components/AIAskUserQuestion/schemas.d.ts +44 -0
- package/dist/components/AIAskUserQuestion/schemas.js +10 -3
- package/dist/components/AIChat/AIChat.svelte +10 -0
- package/dist/components/AIChat/AIChat.svelte.d.ts +2 -2
- package/dist/components/AIChat/AIChatComposerSurface.svelte +23 -5
- package/dist/components/AIChat/AIChatComposerSurface.svelte.d.ts +5 -0
- package/dist/components/AIChat/AIChatSkeleton.svelte +29 -37
- package/dist/components/AIChat/AIChatSurface.svelte +30 -2
- package/dist/components/AIChat/AIChatSurface.svelte.d.ts +1 -1
- package/dist/components/AIChat/AIChatThreadSurface.svelte +11 -1
- package/dist/components/AIChat/AIChatThreadSurface.svelte.d.ts +3 -1
- package/dist/components/AIChat/aiChat.mcp.d.ts +1 -1
- package/dist/components/AIChat/aiChat.mcp.js +31 -15
- package/dist/components/AIChat/aiChat.props.d.ts +36 -10
- package/dist/components/AIChat/aiChat.theme.d.ts +9 -0
- package/dist/components/AIChat/aiChat.theme.js +21 -4
- package/dist/components/AIChat/aiChatSkeleton.props.d.ts +5 -0
- package/dist/components/AIChat/index.d.ts +1 -1
- package/dist/components/AIComposer/AIComposer.svelte +102 -5
- package/dist/components/AIComposer/AIComposer.svelte.d.ts +1 -0
- package/dist/components/AIComposer/AIComposerFooter.svelte +54 -12
- package/dist/components/AIComposer/AIComposerFooter.svelte.d.ts +2 -0
- package/dist/components/AIComposer/AIComposerQueue.svelte +8 -3
- package/dist/components/AIComposer/aiComposer.editor.theme.js +13 -2
- package/dist/components/AIComposer/aiComposer.mcp.d.ts +1 -1
- package/dist/components/AIComposer/aiComposer.mcp.js +15 -7
- package/dist/components/AIComposer/aiComposer.props.d.ts +27 -7
- package/dist/components/AIComposer/aiComposer.theme.d.ts +42 -3
- package/dist/components/AIComposer/aiComposer.theme.js +37 -5
- package/dist/components/AIComposer/aiComposerFileController.svelte.d.ts +20 -0
- package/dist/components/AIComposer/aiComposerFileController.svelte.js +75 -9
- package/dist/components/AIComposer/aiComposerSourceAdapter.js +22 -4
- package/dist/components/AIComposer/aiComposerSubmitController.svelte.d.ts +12 -0
- package/dist/components/AIComposer/aiComposerSubmitController.svelte.js +16 -6
- package/dist/components/AIContext/AIContext.svelte +7 -3
- package/dist/components/AIContext/aiContext.mcp.d.ts +1 -1
- package/dist/components/AIContext/aiContext.mcp.js +1 -1
- package/dist/components/AIContext/aiContext.props.d.ts +4 -1
- package/dist/components/AIContext/aiContext.theme.d.ts +3 -0
- package/dist/components/AIContext/aiContext.theme.js +7 -2
- package/dist/components/AIConversation/AIConversation.svelte.d.ts +2 -2
- package/dist/components/AIFilePreview/aiFilePreview.theme.js +1 -1
- package/dist/components/AIMarker/AIMarker.svelte +2 -0
- package/dist/components/AIMarker/aiMarker.mcp.d.ts +1 -1
- package/dist/components/AIMarker/aiMarker.mcp.js +2 -0
- package/dist/components/AIMarker/aiMarker.props.d.ts +3 -0
- package/dist/components/AIMarker/aiMarker.theme.js +2 -2
- package/dist/components/AIMessage/AIMessage.svelte +38 -16
- package/dist/components/AIMessage/aiMessage.mcp.d.ts +1 -1
- package/dist/components/AIMessage/aiMessage.mcp.js +20 -6
- package/dist/components/AIMessage/aiMessage.props.d.ts +18 -2
- package/dist/components/AIMessage/aiMessage.theme.d.ts +51 -6
- package/dist/components/AIMessage/aiMessage.theme.js +91 -32
- package/dist/components/AIMessageActions/AIMessageActions.svelte +19 -9
- package/dist/components/AIMessageActions/aiMessageActions.mcp.d.ts +1 -1
- package/dist/components/AIMessageActions/aiMessageActions.mcp.js +11 -3
- package/dist/components/AIMessageActions/aiMessageActions.theme.js +36 -9
- package/dist/components/AIModelSelector/AIModelSelector.svelte +25 -10
- package/dist/components/AIModelSelector/aiModelSelector.mcp.d.ts +1 -1
- package/dist/components/AIModelSelector/aiModelSelector.mcp.js +1 -1
- package/dist/components/AIModelSelector/aiModelSelector.theme.d.ts +3 -0
- package/dist/components/AIModelSelector/aiModelSelector.theme.js +7 -3
- package/dist/components/AIReasoning/AIReasoning.svelte +135 -38
- package/dist/components/AIReasoning/aiReasoning.mcp.d.ts +1 -1
- package/dist/components/AIReasoning/aiReasoning.mcp.js +11 -5
- package/dist/components/AIReasoning/aiReasoning.props.d.ts +15 -4
- package/dist/components/AIReasoning/aiReasoning.theme.d.ts +45 -0
- package/dist/components/AIReasoning/aiReasoning.theme.js +47 -7
- package/dist/components/AISuggestion/AISuggestion.svelte +2 -1
- package/dist/components/AISuggestion/AISuggestions.svelte +2 -1
- package/dist/components/AISuggestion/aiSuggestion.mcp.d.ts +1 -1
- package/dist/components/AISuggestion/aiSuggestion.mcp.js +8 -1
- package/dist/components/AISuggestion/aiSuggestion.props.d.ts +4 -1
- package/dist/components/AISuggestion/aiSuggestion.theme.js +1 -1
- package/dist/components/AISuggestion/aiSuggestions.props.d.ts +7 -0
- package/dist/components/AIThread/AIThread.svelte +378 -95
- package/dist/components/AIThread/AIThreadAskUserQuestion.svelte +1 -0
- package/dist/components/AIThread/AIThreadItems.svelte +266 -64
- package/dist/components/AIThread/AIThreadItems.svelte.d.ts +7 -3
- package/dist/components/AIThread/AIThreadMarker.svelte +8 -1
- package/dist/components/AIThread/AIThreadMarker.svelte.d.ts +1 -0
- package/dist/components/AIThread/aiThread.mcp.d.ts +1 -1
- package/dist/components/AIThread/aiThread.mcp.js +34 -20
- package/dist/components/AIThread/aiThread.props.d.ts +73 -8
- package/dist/components/AIThread/aiThread.theme.d.ts +78 -0
- package/dist/components/AIThread/aiThread.theme.js +108 -9
- package/dist/components/AIThread/index.d.ts +1 -1
- package/dist/components/AIThread/threadAskUserQuestion.d.ts +4 -1
- package/dist/components/AIThread/threadAskUserQuestion.js +8 -4
- package/dist/components/AIThread/threadRenderItems.d.ts +74 -3
- package/dist/components/AIThread/threadRenderItems.js +265 -77
- package/dist/components/AIThread/threadScrollController.d.ts +0 -8
- package/dist/components/AIThread/threadScrollController.js +2 -39
- package/dist/components/AIThread/threadTools.d.ts +11 -0
- package/dist/components/AIThread/threadTools.js +79 -0
- package/dist/components/AIThreadToc/AIThreadToc.svelte +188 -18
- package/dist/components/AIThreadToc/AIThreadTocPreview.svelte +25 -2
- package/dist/components/AIThreadToc/AIThreadTocPreview.svelte.d.ts +3 -0
- package/dist/components/AIThreadToc/aiThreadToc.d.ts +4 -2
- package/dist/components/AIThreadToc/aiThreadToc.js +17 -5
- package/dist/components/AIThreadToc/aiThreadToc.mcp.d.ts +1 -1
- package/dist/components/AIThreadToc/aiThreadToc.mcp.js +13 -3
- package/dist/components/AIThreadToc/aiThreadToc.props.d.ts +11 -0
- package/dist/components/AIThreadToc/aiThreadToc.theme.d.ts +3 -0
- package/dist/components/AIThreadToc/aiThreadToc.theme.js +15 -6
- package/dist/components/AITool/AITool.svelte +56 -21
- package/dist/components/AITool/AIToolCallList.svelte +79 -29
- package/dist/components/AITool/AIToolCallList.svelte.d.ts +6 -2
- package/dist/components/AITool/AIToolStatusMark.svelte +52 -0
- package/dist/components/AITool/AIToolStatusMark.svelte.d.ts +14 -0
- package/dist/components/AITool/AIToolValueSection.svelte +126 -28
- package/dist/components/AITool/AIToolValueSection.svelte.d.ts +6 -2
- package/dist/components/AITool/AIToolValueTree.svelte +11 -16
- package/dist/components/AITool/AIToolValueTree.svelte.d.ts +2 -3
- package/dist/components/AITool/aiTool.mcp.d.ts +1 -1
- package/dist/components/AITool/aiTool.mcp.js +36 -8
- package/dist/components/AITool/aiTool.props.d.ts +52 -6
- package/dist/components/AITool/aiTool.theme.d.ts +117 -39
- package/dist/components/AITool/aiTool.theme.js +144 -140
- package/dist/components/AITool/aiToolClock.svelte.d.ts +18 -0
- package/dist/components/AITool/aiToolClock.svelte.js +62 -0
- package/dist/components/AITool/aiToolPrimitiveThemes.d.ts +0 -2
- package/dist/components/AITool/aiToolPrimitiveThemes.js +0 -10
- package/dist/components/AITool/index.d.ts +2 -1
- package/dist/components/AITool/index.js +1 -0
- package/dist/components/AITool/toolRendering.d.ts +33 -1
- package/dist/components/AITool/toolRendering.js +179 -15
- package/dist/components/AITool/toolValueTree.d.ts +14 -1
- package/dist/components/AITool/toolValueTree.js +126 -27
- package/dist/components/Accordion/Accordion.svelte +109 -109
- package/dist/components/Accordion/Accordion.svelte.d.ts +0 -1
- package/dist/components/Accordion/AccordionPanel.svelte +64 -0
- package/dist/components/Accordion/AccordionPanel.svelte.d.ts +20 -0
- package/dist/components/Accordion/accordion.attributes.d.ts +24 -0
- package/dist/components/Accordion/accordion.attributes.js +20 -0
- package/dist/components/Accordion/accordion.mcp.d.ts +1 -1
- package/dist/components/Accordion/accordion.mcp.js +78 -22
- package/dist/components/Accordion/accordion.props.d.ts +54 -10
- package/dist/components/Accordion/accordion.theme.d.ts +3 -0
- package/dist/components/Accordion/accordion.theme.js +4 -0
- package/dist/components/Accordion/index.d.ts +1 -0
- package/dist/components/Accordion/index.js +1 -0
- package/dist/components/AudioPlayer/audioPlayerVolumeControl.slider.theme.d.ts +31 -1
- package/dist/components/Avatar/Avatar.svelte +60 -10
- package/dist/components/Avatar/AvatarGroup.svelte +9 -0
- package/dist/components/Avatar/avatar.mcp.d.ts +1 -1
- package/dist/components/Avatar/avatar.mcp.js +13 -5
- package/dist/components/Avatar/avatar.props.d.ts +28 -1
- package/dist/components/Avatar/avatar.theme.js +3 -3
- package/dist/components/Avatar/index.d.ts +1 -1
- package/dist/components/Breadcrumbs/breadcrumbs.mcp.d.ts +1 -1
- package/dist/components/Breadcrumbs/breadcrumbs.mcp.js +1 -1
- package/dist/components/Button/Button.svelte +35 -15
- package/dist/components/Button/button.mcp.d.ts +1 -1
- package/dist/components/Button/button.mcp.js +8 -4
- package/dist/components/Button/button.props.d.ts +23 -8
- package/dist/components/Button/button.theme.d.ts +12 -0
- package/dist/components/Button/button.theme.js +17 -4
- package/dist/components/ButtonGroup/buttonGroup.mcp.d.ts +1 -1
- package/dist/components/ButtonGroup/buttonGroup.mcp.js +1 -1
- package/dist/components/ButtonGroup/buttonGroup.props.d.ts +4 -1
- package/dist/components/Collapsible/Collapsible.svelte +125 -19
- package/dist/components/Collapsible/collapsible.attributes.d.ts +21 -0
- package/dist/components/Collapsible/collapsible.attributes.js +17 -0
- package/dist/components/Collapsible/collapsible.mcp.d.ts +1 -1
- package/dist/components/Collapsible/collapsible.mcp.js +62 -12
- package/dist/components/Collapsible/collapsible.props.d.ts +39 -8
- package/dist/components/Collapsible/collapsible.theme.js +3 -1
- package/dist/components/Collapsible/index.d.ts +1 -0
- package/dist/components/Collapsible/index.js +1 -0
- package/dist/components/Command/Command.svelte +56 -14
- package/dist/components/Command/command.mcp.d.ts +1 -1
- package/dist/components/Command/command.mcp.js +12 -6
- package/dist/components/Command/command.props.d.ts +39 -6
- package/dist/components/Command/command.state.svelte.d.ts +40 -11
- package/dist/components/Command/command.state.svelte.js +75 -28
- package/dist/components/Command/command.theme.js +4 -3
- package/dist/components/Confirmation/Confirmation.svelte +72 -31
- package/dist/components/Confirmation/confirmation.mcp.d.ts +1 -1
- package/dist/components/Confirmation/confirmation.mcp.js +5 -4
- package/dist/components/ContextMenu/ContextMenu.svelte +126 -16
- package/dist/components/ContextMenu/contextMenu.mcp.d.ts +1 -1
- package/dist/components/ContextMenu/contextMenu.mcp.js +10 -7
- package/dist/components/ContextMenu/contextMenu.props.d.ts +13 -4
- package/dist/components/ContextMenu/contextMenu.theme.d.ts +3 -3
- package/dist/components/ContextMenu/contextMenu.theme.js +3 -2
- package/dist/components/DataTable/DataTable.svelte +4 -9
- package/dist/components/DataTable/DataTableEditor.svelte +5 -0
- package/dist/components/DataTable/DataTableFilter.svelte +1 -0
- package/dist/components/DataTable/DataTableToolbar.svelte +1 -0
- package/dist/components/DataTable/dataTable.mcp.d.ts +1 -1
- package/dist/components/DataTable/dataTable.mcp.js +4 -2
- package/dist/components/DataTable/dataTable.theme.d.ts +0 -3
- package/dist/components/DataTable/dataTable.theme.js +9 -6
- package/dist/components/Dialog/Dialog.svelte +120 -35
- package/dist/components/Dialog/Dialog.svelte.d.ts +1 -1
- package/dist/components/Dialog/DialogBackdrop.svelte +21 -1
- package/dist/components/Dialog/dialog.api.d.ts +65 -0
- package/dist/components/Dialog/dialog.api.js +1 -0
- package/dist/components/Dialog/dialog.attributes.d.ts +23 -0
- package/dist/components/Dialog/dialog.attributes.js +19 -0
- package/dist/components/Dialog/dialog.indent.d.ts +6 -0
- package/dist/components/Dialog/dialog.indent.js +16 -0
- package/dist/components/Dialog/dialog.mcp.d.ts +1 -1
- package/dist/components/Dialog/dialog.mcp.js +195 -22
- package/dist/components/Dialog/dialog.props.d.ts +102 -19
- package/dist/components/Dialog/dialog.snap.d.ts +40 -0
- package/dist/components/Dialog/dialog.snap.js +78 -0
- package/dist/components/Dialog/dialog.state.svelte.d.ts +122 -10
- package/dist/components/Dialog/dialog.state.svelte.js +525 -66
- package/dist/components/Dialog/dialog.theme.d.ts +48 -0
- package/dist/components/Dialog/dialog.theme.js +32 -9
- package/dist/components/Dialog/index.d.ts +4 -1
- package/dist/components/Dialog/index.js +1 -0
- package/dist/components/DocumentViewer/DocumentSearchControl.svelte +5 -3
- package/dist/components/DocumentViewer/documentOutput.js +2 -1
- package/dist/components/FloatingWindow/FloatingWindow.svelte +20 -32
- package/dist/components/FloatingWindow/FloatingWindow.svelte.d.ts +1 -1
- package/dist/components/FloatingWindow/floatingWindow.mcp.d.ts +1 -1
- package/dist/components/FloatingWindow/floatingWindow.mcp.js +3 -3
- package/dist/components/FloatingWindow/floatingWindow.props.d.ts +9 -4
- package/dist/components/FloatingWindow/floatingWindow.state.svelte.d.ts +8 -2
- package/dist/components/FloatingWindow/floatingWindow.state.svelte.js +18 -7
- package/dist/components/Form/Ask/Ask.svelte +9 -13
- package/dist/components/Form/Ask/ask.mcp.d.ts +1 -1
- package/dist/components/Form/Ask/ask.mcp.js +1 -1
- package/dist/components/Form/Ask/ask.props.d.ts +1 -1
- package/dist/components/Form/Autocomplete/Autocomplete.svelte +418 -0
- package/dist/components/Form/Autocomplete/Autocomplete.svelte.d.ts +4 -0
- package/dist/components/Form/Autocomplete/autocomplete.items.d.ts +30 -0
- package/dist/components/Form/Autocomplete/autocomplete.items.js +64 -0
- package/dist/components/Form/Autocomplete/autocomplete.mcp.d.ts +1 -0
- package/dist/components/Form/Autocomplete/autocomplete.mcp.js +134 -0
- package/dist/components/Form/Autocomplete/autocomplete.props.d.ts +146 -0
- package/dist/components/Form/Autocomplete/autocomplete.props.js +1 -0
- package/dist/components/Form/Autocomplete/autocomplete.theme.d.ts +213 -0
- package/dist/components/Form/Autocomplete/autocomplete.theme.js +119 -0
- package/dist/components/Form/Autocomplete/index.d.ts +3 -0
- package/dist/components/Form/Autocomplete/index.js +2 -0
- package/dist/components/Form/Calendar/CalendarInput.svelte +9 -0
- package/dist/components/Form/Calendar/CalendarMonthYearPicker.svelte +3 -0
- package/dist/components/Form/Calendar/CalendarPrimitive.svelte +5 -0
- package/dist/components/Form/Calendar/calendar.mcp.d.ts +1 -1
- package/dist/components/Form/Calendar/calendar.mcp.js +2 -1
- package/dist/components/Form/Calendar/calendarInput.props.d.ts +2 -0
- package/dist/components/Form/Calendar/useCalendar.svelte.d.ts +3 -0
- package/dist/components/Form/Calendar/useCalendar.svelte.js +3 -0
- package/dist/components/Form/Checkbox/Checkbox.svelte +17 -2
- package/dist/components/Form/Checkbox/checkbox.mcp.d.ts +1 -1
- package/dist/components/Form/Checkbox/checkbox.mcp.js +11 -1
- package/dist/components/Form/Checkbox/checkbox.props.d.ts +12 -1
- package/dist/components/Form/CheckboxesInput/CheckboxLine.svelte +69 -32
- package/dist/components/Form/CheckboxesInput/CheckboxLine.svelte.d.ts +10 -2
- package/dist/components/Form/CheckboxesInput/CheckboxesInput.svelte +123 -74
- package/dist/components/Form/CheckboxesInput/CheckboxesInput.svelte.d.ts +12 -12
- package/dist/components/Form/CheckboxesInput/checkboxesInput.mcp.d.ts +1 -1
- package/dist/components/Form/CheckboxesInput/checkboxesInput.mcp.js +11 -7
- package/dist/components/Form/CheckboxesInput/checkboxesInput.props.d.ts +25 -9
- package/dist/components/Form/CheckboxesInput/checkboxesInput.theme.d.ts +12 -0
- package/dist/components/Form/CheckboxesInput/checkboxesInput.theme.js +9 -4
- package/dist/components/Form/CheckboxesInput/choiceEnter.d.ts +11 -0
- package/dist/components/Form/CheckboxesInput/choiceEnter.js +27 -0
- package/dist/components/Form/ColorInput/ColorInput.svelte +12 -3
- package/dist/components/Form/ColorInput/colorInput.mcp.d.ts +1 -1
- package/dist/components/Form/ColorInput/colorInput.mcp.js +1 -0
- package/dist/components/Form/ColorPicker/ColorPicker.svelte +11 -2
- package/dist/components/Form/ColorPicker/ColorPickerInput.svelte +9 -0
- package/dist/components/Form/ColorPicker/colorPicker.mcp.d.ts +1 -1
- package/dist/components/Form/ColorPicker/colorPicker.mcp.js +1 -0
- package/dist/components/Form/ColorPicker/colorPicker.props.d.ts +2 -0
- package/dist/components/Form/ColorPicker/colorPicker.state.svelte.d.ts +4 -0
- package/dist/components/Form/ColorPicker/colorPicker.state.svelte.js +12 -8
- package/dist/components/Form/Combobox/Combobox.svelte +145 -185
- package/dist/components/Form/Combobox/Combobox.svelte.d.ts +1 -1
- package/dist/components/Form/Combobox/ComboboxPopup.svelte +128 -0
- package/dist/components/Form/Combobox/ComboboxPopup.svelte.d.ts +28 -0
- package/dist/components/Form/Combobox/combobox.attributes.d.ts +34 -0
- package/dist/components/Form/Combobox/combobox.attributes.js +25 -0
- package/dist/components/Form/Combobox/combobox.items.d.ts +28 -0
- package/dist/components/Form/Combobox/combobox.items.js +68 -0
- package/dist/components/Form/Combobox/combobox.mcp.d.ts +1 -1
- package/dist/components/Form/Combobox/combobox.mcp.js +104 -13
- package/dist/components/Form/Combobox/combobox.props.d.ts +113 -19
- package/dist/components/Form/Combobox/combobox.state.svelte.d.ts +137 -0
- package/dist/components/Form/Combobox/combobox.state.svelte.js +375 -0
- package/dist/components/Form/Combobox/combobox.theme.d.ts +63 -0
- package/dist/components/Form/Combobox/combobox.theme.js +37 -1
- package/dist/components/Form/Combobox/index.d.ts +2 -1
- package/dist/components/Form/Combobox/index.js +1 -0
- package/dist/components/Form/DateInput/DateInput.svelte +11 -3
- package/dist/components/Form/DateInput/dateInput.mcp.d.ts +1 -1
- package/dist/components/Form/DateInput/dateInput.mcp.js +5 -0
- package/dist/components/Form/DateSelector/DateSelector.svelte +5 -2
- package/dist/components/Form/DateSelector/DateSelectorInput.svelte +9 -0
- package/dist/components/Form/DateSelector/dateSelector.mcp.d.ts +1 -1
- package/dist/components/Form/DateSelector/dateSelector.mcp.js +2 -2
- package/dist/components/Form/DateSelector/dateSelector.props.d.ts +2 -0
- package/dist/components/Form/Field/Field.svelte +258 -32
- package/dist/components/Form/Field/Field.svelte.d.ts +15 -6
- package/dist/components/Form/Field/FieldGroup.svelte +29 -0
- package/dist/components/Form/Field/FieldGroup.svelte.d.ts +11 -0
- package/dist/components/Form/Field/FieldHiddenInputs.svelte +187 -0
- package/dist/components/Form/Field/FieldHiddenInputs.svelte.d.ts +26 -0
- package/dist/components/Form/Field/field.d.ts +75 -10
- package/dist/components/Form/Field/field.mcp.d.ts +1 -1
- package/dist/components/Form/Field/field.mcp.js +158 -18
- package/dist/components/Form/Field/field.messages.d.ts +47 -0
- package/dist/components/Form/Field/field.messages.js +64 -0
- package/dist/components/Form/Field/field.state.svelte.d.ts +117 -40
- package/dist/components/Form/Field/field.state.svelte.js +525 -16
- package/dist/components/Form/Field/field.theme.d.ts +46 -0
- package/dist/components/Form/Field/field.theme.js +33 -0
- package/dist/components/Form/Field/fieldHiddenInputs.props.d.ts +61 -0
- package/dist/components/Form/Field/fieldHiddenInputs.props.js +1 -0
- package/dist/components/Form/Field/fieldNativeForm.svelte.d.ts +14 -0
- package/dist/components/Form/Field/fieldNativeForm.svelte.js +113 -0
- package/dist/components/Form/Field/index.d.ts +5 -2
- package/dist/components/Form/Field/index.js +1 -0
- package/dist/components/Form/Field/schemas.js +7 -2
- package/dist/components/Form/File/FileInput.svelte +24 -3
- package/dist/components/Form/File/fileInput.mcp.d.ts +1 -1
- package/dist/components/Form/File/fileInput.mcp.js +1 -0
- package/dist/components/Form/Form/Form.svelte +49 -15
- package/dist/components/Form/Form/FormActions.svelte +3 -1
- package/dist/components/Form/Form/FormActions.svelte.d.ts +42 -2
- package/dist/components/Form/Form/FormFieldRenderer.svelte +96 -12
- package/dist/components/Form/Form/FormFieldRenderer.svelte.d.ts +3 -2
- package/dist/components/Form/Form/FormInputRenderer.svelte +7 -0
- package/dist/components/Form/Form/form.d.ts +84 -11
- package/dist/components/Form/Form/form.mcp.d.ts +1 -1
- package/dist/components/Form/Form/form.mcp.js +178 -12
- package/dist/components/Form/Form/form.props.d.ts +32 -1
- package/dist/components/Form/Form/form.registry.d.ts +28 -0
- package/dist/components/Form/Form/form.registry.js +59 -0
- package/dist/components/Form/Form/form.state.svelte.d.ts +1186 -420
- package/dist/components/Form/Form/form.state.svelte.js +322 -28
- package/dist/components/Form/Form/index.d.ts +4 -1
- package/dist/components/Form/Form/index.js +1 -0
- package/dist/components/Form/Form/visibility.d.ts +3130 -1863
- package/dist/components/Form/KeyValueInput/KeyValueInput.svelte +22 -10
- package/dist/components/Form/KeyValueInput/keyValueInput.mcp.d.ts +1 -1
- package/dist/components/Form/KeyValueInput/keyValueInput.mcp.js +1 -0
- package/dist/components/Form/MultiStepForm/MultiStepForm.svelte +12 -5
- package/dist/components/Form/MultiStepForm/multiStepForm.mcp.d.ts +1 -1
- package/dist/components/Form/MultiStepForm/multiStepForm.mcp.js +5 -3
- package/dist/components/Form/MultiStepForm/multiStepForm.props.d.ts +5 -0
- package/dist/components/Form/MultiStepForm/multiStepForm.state.svelte.d.ts +1050 -408
- package/dist/components/Form/MultiStepForm/multiStepForm.state.svelte.js +48 -24
- package/dist/components/Form/NumberInput/NumberInput.svelte +365 -46
- package/dist/components/Form/NumberInput/index.d.ts +1 -1
- package/dist/components/Form/NumberInput/numberInput.mcp.d.ts +1 -1
- package/dist/components/Form/NumberInput/numberInput.mcp.js +55 -30
- package/dist/components/Form/NumberInput/numberInput.props.d.ts +64 -4
- package/dist/components/Form/PasswordInput/Password.svelte +28 -1
- package/dist/components/Form/PasswordInput/index.d.ts +1 -1
- package/dist/components/Form/PasswordInput/passwordInput.mcp.d.ts +1 -1
- package/dist/components/Form/PasswordInput/passwordInput.mcp.js +20 -2
- package/dist/components/Form/PasswordInput/passwordInput.props.d.ts +23 -0
- package/dist/components/Form/PhoneInput/PhoneInput.svelte +11 -4
- package/dist/components/Form/PhoneInput/PhoneInputCountryPicker.svelte +47 -21
- package/dist/components/Form/PhoneInput/phoneInput-cdn.js +2 -1
- package/dist/components/Form/PhoneInput/phoneInput.mcp.d.ts +1 -1
- package/dist/components/Form/PhoneInput/phoneInput.mcp.js +6 -2
- package/dist/components/Form/PhoneInput/phoneInputCountry.d.ts +9 -3
- package/dist/components/Form/PhoneInput/phoneInputCountry.js +34 -24
- package/dist/components/Form/PinInput/PinInput.svelte +44 -9
- package/dist/components/Form/PinInput/PinInputCells.svelte +22 -1
- package/dist/components/Form/PinInput/PinInputCells.svelte.d.ts +1 -0
- package/dist/components/Form/PinInput/index.d.ts +1 -1
- package/dist/components/Form/PinInput/pinInput.mcp.d.ts +1 -1
- package/dist/components/Form/PinInput/pinInput.mcp.js +29 -6
- package/dist/components/Form/PinInput/pinInput.props.d.ts +38 -4
- package/dist/components/Form/PinInput/pinInput.state.svelte.d.ts +41 -0
- package/dist/components/Form/PinInput/pinInput.state.svelte.js +227 -24
- package/dist/components/Form/PinInput/pinInput.theme.d.ts +39 -3
- package/dist/components/Form/PinInput/pinInput.theme.js +27 -1
- package/dist/components/Form/RadioInput/RadioInput.svelte +94 -32
- package/dist/components/Form/RadioInput/RadioInput.svelte.d.ts +12 -12
- package/dist/components/Form/RadioInput/radioInput.mcp.d.ts +1 -1
- package/dist/components/Form/RadioInput/radioInput.mcp.js +12 -9
- package/dist/components/Form/RadioInput/radioInput.props.d.ts +22 -6
- package/dist/components/Form/RadioInput/radioInput.theme.d.ts +12 -0
- package/dist/components/Form/RadioInput/radioInput.theme.js +10 -5
- package/dist/components/Form/RatingInput/RatingInput.svelte +13 -4
- package/dist/components/Form/RatingInput/ratingInput.mcp.d.ts +1 -1
- package/dist/components/Form/RatingInput/ratingInput.mcp.js +3 -3
- package/dist/components/Form/RatingInput/ratingInput.props.d.ts +1 -1
- package/dist/components/Form/Select/Select.svelte +186 -48
- package/dist/components/Form/Select/Select.svelte.d.ts +23 -2
- package/dist/components/Form/Select/SelectOptionRow.svelte +69 -0
- package/dist/components/Form/Select/SelectOptionRow.svelte.d.ts +18 -0
- package/dist/components/Form/Select/index.d.ts +2 -1
- package/dist/components/Form/Select/index.js +1 -0
- package/dist/components/Form/Select/select.align.d.ts +5 -0
- package/dist/components/Form/Select/select.align.js +19 -5
- package/dist/components/Form/Select/select.attributes.d.ts +36 -0
- package/dist/components/Form/Select/select.attributes.js +27 -0
- package/dist/components/Form/Select/select.mcp.d.ts +1 -1
- package/dist/components/Form/Select/select.mcp.js +103 -18
- package/dist/components/Form/Select/select.props.d.ts +87 -10
- package/dist/components/Form/Select/select.state.svelte.d.ts +108 -17
- package/dist/components/Form/Select/select.state.svelte.js +354 -59
- package/dist/components/Form/Select/select.theme.d.ts +21 -0
- package/dist/components/Form/Select/select.theme.js +22 -0
- package/dist/components/Form/Slider/Slider.svelte +54 -14
- package/dist/components/Form/Slider/SliderMarks.svelte +1 -1
- package/dist/components/Form/Slider/SliderThumb.svelte +49 -19
- package/dist/components/Form/Slider/SliderThumb.svelte.d.ts +8 -2
- package/dist/components/Form/Slider/SliderTrack.svelte +33 -12
- package/dist/components/Form/Slider/SliderTrack.svelte.d.ts +6 -2
- package/dist/components/Form/Slider/index.d.ts +1 -1
- package/dist/components/Form/Slider/slider.mcp.d.ts +1 -1
- package/dist/components/Form/Slider/slider.mcp.js +55 -11
- package/dist/components/Form/Slider/slider.props.d.ts +35 -2
- package/dist/components/Form/Slider/slider.state.svelte.d.ts +66 -5
- package/dist/components/Form/Slider/slider.state.svelte.js +273 -49
- package/dist/components/Form/Slider/slider.theme.d.ts +36 -0
- package/dist/components/Form/Slider/slider.theme.js +35 -17
- package/dist/components/Form/Switch/Switch.svelte +61 -38
- package/dist/components/Form/Switch/switch.mcp.d.ts +1 -1
- package/dist/components/Form/Switch/switch.mcp.js +25 -5
- package/dist/components/Form/Switch/switch.props.d.ts +14 -1
- package/dist/components/Form/Switch/switch.theme.d.ts +12 -0
- package/dist/components/Form/Switch/switch.theme.js +8 -3
- package/dist/components/Form/TagGroup/TagGroup.svelte +8 -0
- package/dist/components/Form/TagGroup/tagGroup.mcp.d.ts +1 -1
- package/dist/components/Form/TagGroup/tagGroup.mcp.js +1 -0
- package/dist/components/Form/TagsInput/TagsInput.svelte +277 -275
- package/dist/components/Form/TagsInput/TagsInput.svelte.d.ts +1 -1
- package/dist/components/Form/TagsInput/tagsInput.mcp.d.ts +1 -1
- package/dist/components/Form/TagsInput/tagsInput.mcp.js +31 -11
- package/dist/components/Form/TagsInput/tagsInput.props.d.ts +6 -26
- package/dist/components/Form/TagsInput/tagsInput.theme.d.ts +63 -0
- package/dist/components/Form/TagsInput/tagsInput.theme.js +37 -1
- package/dist/components/Form/TextArea/TextArea.svelte +8 -0
- package/dist/components/Form/TextArea/textArea.mcp.d.ts +1 -1
- package/dist/components/Form/TextArea/textArea.mcp.js +1 -0
- package/dist/components/Form/TextInput/TextInput.svelte +8 -1
- package/dist/components/Form/TextInput/textInput.mcp.d.ts +1 -1
- package/dist/components/Form/TextInput/textInput.mcp.js +5 -0
- package/dist/components/Form/TimeInput/TimeInput.svelte +9 -1
- package/dist/components/Form/TimeInput/timeInput.mcp.d.ts +1 -1
- package/dist/components/Form/TimeInput/timeInput.mcp.js +31 -0
- package/dist/components/Form/VoiceInput/VoiceInput.svelte +10 -2
- package/dist/components/Form/VoiceInput/voiceInput.mcp.d.ts +1 -1
- package/dist/components/Form/VoiceInput/voiceInput.mcp.js +1 -0
- package/dist/components/GanttChart/GanttDependencyControl.svelte +4 -4
- package/dist/components/HoverCard/HoverCard.svelte +100 -10
- package/dist/components/HoverCard/hoverCard.attributes.d.ts +33 -0
- package/dist/components/HoverCard/hoverCard.attributes.js +24 -0
- package/dist/components/HoverCard/hoverCard.mcp.d.ts +1 -1
- package/dist/components/HoverCard/hoverCard.mcp.js +61 -2
- package/dist/components/HoverCard/hoverCard.props.d.ts +19 -0
- package/dist/components/HoverCard/hoverCard.theme.d.ts +12 -0
- package/dist/components/HoverCard/hoverCard.theme.js +9 -2
- package/dist/components/HoverCard/index.d.ts +1 -0
- package/dist/components/HoverCard/index.js +1 -0
- package/dist/components/ImageGallery/imageGallery.state.svelte.d.ts +1 -1
- package/dist/components/ImageZoom/imageZoom.lightbox.js +40 -6
- package/dist/components/ImageZoom/imageZoom.mcp.d.ts +1 -1
- package/dist/components/ImageZoom/imageZoom.mcp.js +3 -3
- package/dist/components/ImageZoom/imageZoom.props.d.ts +10 -4
- package/dist/components/ImageZoom/imageZoom.state.svelte.d.ts +16 -4
- package/dist/components/ImageZoom/imageZoom.state.svelte.js +38 -9
- package/dist/components/Kanban/kanban.theme.js +7 -3
- package/dist/components/Layout/layoutSpacing.d.ts +2 -2
- package/dist/components/LinkPreview/LinkPreview.svelte +7 -1
- package/dist/components/LinkPreview/linkPreview.mcp.d.ts +1 -1
- package/dist/components/LinkPreview/linkPreview.mcp.js +4 -1
- package/dist/components/LinkPreview/linkPreview.props.d.ts +15 -0
- package/dist/components/LinkPreview/linkPreview.theme.d.ts +12 -0
- package/dist/components/LinkPreview/linkPreview.theme.js +9 -2
- package/dist/components/Map/maplibre-cdn.js +3 -2
- package/dist/components/Markdown/markdown.mcp.d.ts +1 -1
- package/dist/components/Markdown/markdown.mcp.js +2 -1
- package/dist/components/Markdown/markdown.theme.js +18 -9
- package/dist/components/MediaVolume/MediaVolumeControl.svelte +4 -3
- package/dist/components/Menu/Menu.svelte +3 -3
- package/dist/components/Menu/Menu.svelte.d.ts +1 -1
- package/dist/components/Menu/MenuCheckboxItem.svelte +87 -0
- package/dist/components/Menu/MenuCheckboxItem.svelte.d.ts +16 -0
- package/dist/components/Menu/MenuFloating.svelte +421 -74
- package/dist/components/Menu/MenuFloating.svelte.d.ts +1 -1
- package/dist/components/Menu/MenuMirroredIcon.svelte +9 -0
- package/dist/components/Menu/MenuMirroredIcon.svelte.d.ts +7 -0
- package/dist/components/Menu/MenuRadioGroup.svelte +102 -0
- package/dist/components/Menu/MenuRadioGroup.svelte.d.ts +18 -0
- package/dist/components/Menu/MenuSearchField.svelte +54 -0
- package/dist/components/Menu/MenuSearchField.svelte.d.ts +20 -0
- package/dist/components/Menu/MenuStacked.svelte +404 -158
- package/dist/components/Menu/MenuStacked.svelte.d.ts +1 -1
- package/dist/components/Menu/MenuStackedBackHeader.svelte +6 -1
- package/dist/components/Menu/index.d.ts +2 -1
- package/dist/components/Menu/index.js +1 -0
- package/dist/components/Menu/menu.attributes.d.ts +37 -0
- package/dist/components/Menu/menu.attributes.js +28 -0
- package/dist/components/Menu/menu.filter.svelte.d.ts +52 -0
- package/dist/components/Menu/menu.filter.svelte.js +143 -0
- package/dist/components/Menu/menu.mcp.d.ts +1 -1
- package/dist/components/Menu/menu.mcp.js +227 -17
- package/dist/components/Menu/menu.platform.d.ts +5 -0
- package/dist/components/Menu/menu.platform.js +11 -0
- package/dist/components/Menu/menu.props.d.ts +172 -9
- package/dist/components/Menu/menu.theme.d.ts +147 -0
- package/dist/components/Menu/menu.theme.js +101 -0
- package/dist/components/Menu/menuTree.d.ts +35 -1
- package/dist/components/Menu/menuTree.js +158 -1
- package/dist/components/MenuBar/menuBar.mcp.d.ts +1 -1
- package/dist/components/MenuBar/menuBar.mcp.js +4 -2
- package/dist/components/MenuBar/menuBar.state.svelte.js +28 -10
- package/dist/components/MenuOption/MenuOption.svelte +5 -1
- package/dist/components/MenuOption/menuOption.mcp.d.ts +1 -1
- package/dist/components/MenuOption/menuOption.mcp.js +8 -0
- package/dist/components/MenuOption/menuOption.props.d.ts +12 -0
- package/dist/components/MenuOption/menuOption.theme.d.ts +18 -0
- package/dist/components/MenuOption/menuOption.theme.js +24 -4
- package/dist/components/Mermaid/mermaid.mcp.d.ts +1 -1
- package/dist/components/Mermaid/mermaid.mcp.js +8 -8
- package/dist/components/Mermaid/mermaid.props.d.ts +3 -4
- package/dist/components/Mermaid/mermaid.state.svelte.d.ts +20 -19
- package/dist/components/Mermaid/mermaid.state.svelte.js +80 -243
- package/dist/components/Mermaid/mermaid.theme.js +26 -1
- package/dist/components/MetadataList/MetadataList.svelte.d.ts +1 -1
- package/dist/components/Meter/Meter.svelte +110 -24
- package/dist/components/Meter/Meter.svelte.d.ts +12 -12
- package/dist/components/Meter/meter.mcp.d.ts +1 -1
- package/dist/components/Meter/meter.mcp.js +23 -37
- package/dist/components/Meter/meter.props.d.ts +36 -44
- package/dist/components/NavigationMenu/NavigationMenu.svelte +181 -0
- package/dist/components/NavigationMenu/NavigationMenu.svelte.d.ts +25 -0
- package/dist/components/NavigationMenu/NavigationMenuContent.svelte +141 -0
- package/dist/components/NavigationMenu/NavigationMenuContent.svelte.d.ts +13 -0
- package/dist/components/NavigationMenu/NavigationMenuTrigger.svelte +75 -0
- package/dist/components/NavigationMenu/NavigationMenuTrigger.svelte.d.ts +13 -0
- package/dist/components/NavigationMenu/index.d.ts +4 -0
- package/dist/components/NavigationMenu/index.js +3 -0
- package/dist/components/NavigationMenu/navigationMenu.attributes.d.ts +24 -0
- package/dist/components/NavigationMenu/navigationMenu.attributes.js +21 -0
- package/dist/components/NavigationMenu/navigationMenu.mcp.d.ts +1 -0
- package/dist/components/NavigationMenu/navigationMenu.mcp.js +138 -0
- package/dist/components/NavigationMenu/navigationMenu.props.d.ts +129 -0
- package/dist/components/NavigationMenu/navigationMenu.props.js +1 -0
- package/dist/components/NavigationMenu/navigationMenu.state.svelte.d.ts +163 -0
- package/dist/components/NavigationMenu/navigationMenu.state.svelte.js +721 -0
- package/dist/components/NavigationMenu/navigationMenu.theme.d.ts +326 -0
- package/dist/components/NavigationMenu/navigationMenu.theme.js +239 -0
- package/dist/components/Overlay/Overlay.svelte +19 -30
- package/dist/components/Overlay/index.d.ts +1 -0
- package/dist/components/Overlay/index.js +1 -0
- package/dist/components/Overlay/overlay.attributes.d.ts +16 -0
- package/dist/components/Overlay/overlay.attributes.js +14 -0
- package/dist/components/Overlay/overlay.mcp.d.ts +1 -1
- package/dist/components/Overlay/overlay.mcp.js +21 -3
- package/dist/components/Overlay/overlay.props.d.ts +8 -4
- package/dist/components/Popover/Popover.svelte +163 -52
- package/dist/components/Popover/Popover.svelte.d.ts +23 -2
- package/dist/components/Popover/PopoverSession.svelte +12 -0
- package/dist/components/Popover/PopoverSession.svelte.d.ts +7 -0
- package/dist/components/Popover/index.d.ts +10 -2
- package/dist/components/Popover/index.js +4 -1
- package/dist/components/Popover/popover.api.d.ts +83 -0
- package/dist/components/Popover/popover.api.js +1 -0
- package/dist/components/Popover/popover.attributes.d.ts +32 -0
- package/dist/components/Popover/popover.attributes.js +28 -0
- package/dist/components/Popover/popover.claims.d.ts +19 -0
- package/dist/components/Popover/popover.claims.js +45 -0
- package/dist/components/Popover/popover.mcp.d.ts +1 -1
- package/dist/components/Popover/popover.mcp.js +163 -31
- package/dist/components/Popover/popover.position.d.ts +226 -0
- package/dist/components/Popover/popover.position.js +402 -0
- package/dist/components/Popover/popover.props.d.ts +179 -24
- package/dist/components/Popover/popover.state.svelte.d.ts +169 -37
- package/dist/components/Popover/popover.state.svelte.js +1034 -194
- package/dist/components/Popover/popover.theme.d.ts +15 -0
- package/dist/components/Popover/popover.theme.js +27 -2
- package/dist/components/PopupMenu/PopupMenu.svelte +193 -22
- package/dist/components/PopupMenu/PopupMenu.svelte.d.ts +2 -2
- package/dist/components/PopupMenu/popupMenu.context.d.ts +42 -0
- package/dist/components/PopupMenu/popupMenu.context.js +52 -0
- package/dist/components/PopupMenu/popupMenu.mcp.d.ts +1 -1
- package/dist/components/PopupMenu/popupMenu.mcp.js +46 -6
- package/dist/components/PopupMenu/popupMenu.props.d.ts +29 -2
- package/dist/components/Progress/Progress.svelte +160 -0
- package/dist/components/Progress/Progress.svelte.d.ts +4 -0
- package/dist/components/Progress/index.d.ts +3 -0
- package/dist/components/Progress/index.js +2 -0
- package/dist/components/Progress/progress.mcp.d.ts +1 -0
- package/dist/components/Progress/progress.mcp.js +101 -0
- package/dist/components/Progress/progress.props.d.ts +79 -0
- package/dist/components/Progress/progress.props.js +1 -0
- package/dist/components/Progress/progress.theme.d.ts +129 -0
- package/dist/components/Progress/progress.theme.js +83 -0
- package/dist/components/ProgressCircle/ProgressCircle.svelte +51 -6
- package/dist/components/ProgressCircle/progressCircle.mcp.d.ts +1 -1
- package/dist/components/ProgressCircle/progressCircle.mcp.js +18 -4
- package/dist/components/ProgressCircle/progressCircle.props.d.ts +32 -2
- package/dist/components/ProgressCircle/progressCircle.theme.d.ts +15 -3
- package/dist/components/ProgressCircle/progressCircle.theme.js +7 -2
- package/dist/components/RichTextInput/RichTextInput.svelte +19 -1
- package/dist/components/RichTextInput/RichTextInputChrome.svelte +5 -1
- package/dist/components/RichTextInput/RichTextInputChrome.svelte.d.ts +2 -0
- package/dist/components/RichTextInput/RichTextInputViewport.svelte +3 -1
- package/dist/components/RichTextInput/RichTextInputViewport.svelte.d.ts +1 -0
- package/dist/components/RichTextInput/richTextInput.mcp.d.ts +1 -1
- package/dist/components/RichTextInput/richTextInput.mcp.js +1 -0
- package/dist/components/RichTextInput/suggestions.js +2 -0
- package/dist/components/ScrollArea/ScrollArea.svelte +166 -27
- package/dist/components/ScrollArea/index.d.ts +2 -1
- package/dist/components/ScrollArea/index.js +1 -0
- package/dist/components/ScrollArea/scrollArea.attributes.d.ts +25 -0
- package/dist/components/ScrollArea/scrollArea.attributes.js +21 -0
- package/dist/components/ScrollArea/scrollArea.mcp.d.ts +1 -1
- package/dist/components/ScrollArea/scrollArea.mcp.js +47 -3
- package/dist/components/ScrollArea/scrollArea.props.d.ts +33 -6
- package/dist/components/ScrollArea/scrollArea.svelte.d.ts +56 -12
- package/dist/components/ScrollArea/scrollArea.svelte.js +281 -71
- package/dist/components/ScrollArea/scrollArea.theme.js +5 -2
- package/dist/components/SegmentedControl/SegmentedControl.svelte +4 -3
- package/dist/components/SegmentedControl/segmentedControl.mcp.d.ts +1 -1
- package/dist/components/SegmentedControl/segmentedControl.mcp.js +3 -2
- package/dist/components/SelectionMenu/SelectionMenu.svelte +4 -2
- package/dist/components/Sidebar/SidebarAction.svelte +13 -3
- package/dist/components/Sidebar/SidebarAction.svelte.d.ts +2 -1
- package/dist/components/Sidebar/SidebarActivityBar.svelte +14 -7
- package/dist/components/Sidebar/SidebarFlyout.svelte +97 -0
- package/dist/components/Sidebar/SidebarFlyout.svelte.d.ts +32 -0
- package/dist/components/Sidebar/SidebarGroup.svelte +39 -15
- package/dist/components/Sidebar/SidebarMenuButton.svelte +6 -3
- package/dist/components/Sidebar/SidebarMenuItem.svelte +134 -31
- package/dist/components/Sidebar/SidebarMenuSubItem.svelte +30 -14
- package/dist/components/Sidebar/SidebarTreeNode.svelte +41 -61
- package/dist/components/Sidebar/index.d.ts +1 -0
- package/dist/components/Sidebar/index.js +1 -0
- package/dist/components/Sidebar/sidebar-position.d.ts +37 -2
- package/dist/components/Sidebar/sidebar-position.js +31 -2
- package/dist/components/Sidebar/sidebar.attributes.d.ts +33 -0
- package/dist/components/Sidebar/sidebar.attributes.js +29 -0
- package/dist/components/Sidebar/sidebar.mcp.d.ts +1 -1
- package/dist/components/Sidebar/sidebar.mcp.js +45 -10
- package/dist/components/Sidebar/sidebar.props.d.ts +28 -7
- package/dist/components/Sidebar/sidebar.theme.d.ts +51 -21
- package/dist/components/Sidebar/sidebar.theme.js +113 -62
- package/dist/components/Sidebar/sidebar.views.svelte.js +11 -18
- package/dist/components/Stepper/Stepper.svelte +2 -0
- package/dist/components/Stepper/stepper.mcp.d.ts +1 -1
- package/dist/components/Stepper/stepper.mcp.js +1 -0
- package/dist/components/Stepper/stepper.props.d.ts +5 -0
- package/dist/components/Stepper/stepper.state.svelte.d.ts +2 -0
- package/dist/components/Stepper/stepper.state.svelte.js +31 -12
- package/dist/components/Tabbar/Tabbar.svelte +55 -16
- package/dist/components/Tabbar/index.d.ts +1 -1
- package/dist/components/Tabbar/tabbar.mcp.d.ts +1 -1
- package/dist/components/Tabbar/tabbar.mcp.js +26 -9
- package/dist/components/Tabbar/tabbar.props.d.ts +34 -5
- package/dist/components/Tabbar/tabbar.selection.svelte.d.ts +79 -0
- package/dist/components/Tabbar/tabbar.selection.svelte.js +99 -0
- package/dist/components/TableOfContents/tableOfContents.state.svelte.js +9 -7
- package/dist/components/Tabs/Tabs.svelte +73 -16
- package/dist/components/Tabs/index.d.ts +2 -1
- package/dist/components/Tabs/tabs.direction.svelte.d.ts +25 -0
- package/dist/components/Tabs/tabs.direction.svelte.js +40 -0
- package/dist/components/Tabs/tabs.mcp.d.ts +1 -1
- package/dist/components/Tabs/tabs.mcp.js +22 -4
- package/dist/components/Tabs/tabs.props.d.ts +39 -12
- package/dist/components/Tabs/tabs.theme.js +3 -1
- package/dist/components/Theme/Theme.svelte +44 -27
- package/dist/components/Theme/helper.d.ts +16 -2
- package/dist/components/Theme/helper.js +46 -4
- package/dist/components/Theme/theme.mcp.d.ts +1 -1
- package/dist/components/Theme/theme.mcp.js +103 -0
- package/dist/components/Theme/theme.props.d.ts +16 -0
- package/dist/components/Theme/theme.state.svelte.d.ts +14 -1
- package/dist/components/Theme/theme.state.svelte.js +18 -1
- package/dist/components/Toast/Toast.svelte +184 -39
- package/dist/components/Toast/Toaster.svelte +14 -10
- package/dist/components/Toast/index.d.ts +1 -0
- package/dist/components/Toast/toast.mcp.d.ts +1 -1
- package/dist/components/Toast/toast.mcp.js +47 -6
- package/dist/components/Toast/toast.state.svelte.d.ts +172 -6
- package/dist/components/Toast/toast.state.svelte.js +513 -68
- package/dist/components/Toast/toast.theme.js +1 -1
- package/dist/components/ToggleButton/ToggleButton.svelte +23 -1
- package/dist/components/ToggleButton/toggleButton.mcp.d.ts +1 -1
- package/dist/components/ToggleButton/toggleButton.mcp.js +3 -1
- package/dist/components/ToggleButton/toggleButton.props.d.ts +13 -1
- package/dist/components/ToggleButton/toggleButton.theme.d.ts +12 -0
- package/dist/components/ToggleButton/toggleButton.theme.js +15 -3
- package/dist/components/ToggleButtonGroup/ToggleButtonGroup.svelte +29 -9
- package/dist/components/ToggleButtonGroup/index.d.ts +1 -1
- package/dist/components/ToggleButtonGroup/toggleButtonGroup.mcp.d.ts +1 -1
- package/dist/components/ToggleButtonGroup/toggleButtonGroup.mcp.js +5 -2
- package/dist/components/ToggleButtonGroup/toggleButtonGroup.props.d.ts +19 -1
- package/dist/components/ToggleButtonGroup/toggleButtonGroup.theme.d.ts +12 -0
- package/dist/components/ToggleButtonGroup/toggleButtonGroup.theme.js +21 -2
- package/dist/components/ToggleMenu/ToggleMenu.svelte +57 -43
- package/dist/components/ToggleMenu/ToggleMenuGroup.svelte +1 -0
- package/dist/components/ToggleMenu/ToggleMenuMenu.svelte +9 -3
- package/dist/components/ToggleMenu/ToggleMenuRadioGroup.svelte +7 -2
- package/dist/components/ToggleMenu/toggleMenu.mcp.d.ts +1 -1
- package/dist/components/ToggleMenu/toggleMenu.mcp.js +3 -2
- package/dist/components/ToggleMenu/toggleMenu.props.d.ts +4 -1
- package/dist/components/Tooltip/Tooltip.svelte +4 -12
- package/dist/components/Tooltip/TooltipHost.svelte +136 -15
- package/dist/components/Tooltip/index.d.ts +1 -0
- package/dist/components/Tooltip/index.js +1 -0
- package/dist/components/Tooltip/tooltip.attachment.svelte.d.ts +5 -0
- package/dist/components/Tooltip/tooltip.attachment.svelte.js +215 -33
- package/dist/components/Tooltip/tooltip.attributes.d.ts +32 -0
- package/dist/components/Tooltip/tooltip.attributes.js +28 -0
- package/dist/components/Tooltip/tooltip.mcp.d.ts +1 -1
- package/dist/components/Tooltip/tooltip.mcp.js +111 -10
- package/dist/components/Tooltip/tooltip.props.d.ts +33 -2
- package/dist/components/Tooltip/tooltip.surface.d.ts +24 -0
- package/dist/components/Tooltip/tooltip.surface.js +42 -0
- package/dist/components/Tree/TreeContextMenuSurface.svelte +16 -3
- package/dist/components/Utils/BeforeHydratation.svelte +14 -3
- package/dist/components/Utils/BeforeHydratation.svelte.d.ts +2 -0
- package/dist/components/VideoPlayer/VideoPlayer.svelte.d.ts +1 -1
- package/dist/components/VideoPlayer/VideoPlayerSettings.svelte +2 -0
- package/dist/generated/componentAliases.d.ts +3 -0
- package/dist/generated/componentAliases.js +3 -0
- package/dist/generated/componentContract.d.ts +79 -34
- package/dist/generated/componentContract.js +231 -6
- package/dist/generated/componentMcpRegistry.js +6 -0
- package/dist/i18n/ar.js +107 -3
- package/dist/i18n/context.svelte.d.ts +6 -0
- package/dist/i18n/context.svelte.js +12 -0
- package/dist/i18n/de.js +101 -3
- package/dist/i18n/en.d.ts +91 -2
- package/dist/i18n/en.js +101 -3
- package/dist/i18n/es.js +101 -3
- package/dist/i18n/fr.js +101 -3
- package/dist/i18n/ja.js +101 -3
- package/dist/i18n/pt.js +101 -3
- package/dist/i18n/zh.js +101 -3
- package/dist/tailwind/geometry.js +7 -0
- package/dist/tailwind/global.js +31 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/types.mcp.d.ts +1 -1
- package/dist/types/types.mcp.js +23 -0
- package/dist/utils/cspNonce.d.ts +16 -0
- package/dist/utils/cspNonce.js +39 -0
- package/dist/utils/cva/merge.d.ts +5 -1
- package/dist/utils/cva/merge.js +6 -4
- package/dist/utils/focus.d.ts +34 -0
- package/dist/utils/focus.js +93 -0
- package/dist/utils/focusHistory.d.ts +21 -0
- package/dist/utils/focusHistory.js +99 -0
- package/dist/utils/handlers.d.ts +7 -0
- package/dist/utils/handlers.js +14 -0
- package/dist/utils/hoverIntent.d.ts +42 -0
- package/dist/utils/hoverIntent.js +57 -0
- package/dist/utils/id.d.ts +7 -0
- package/dist/utils/id.js +15 -0
- package/dist/utils/layers.svelte.d.ts +32 -4
- package/dist/utils/layers.svelte.js +214 -21
- package/dist/utils/listFilter.d.ts +44 -0
- package/dist/utils/listFilter.js +130 -0
- package/dist/utils/match.d.ts +35 -0
- package/dist/utils/match.js +36 -0
- package/dist/utils/number.d.ts +126 -0
- package/dist/utils/number.js +401 -0
- package/dist/utils/openChange.d.ts +88 -0
- package/dist/utils/openChange.js +71 -0
- package/dist/utils/openLifecycle.svelte.d.ts +41 -0
- package/dist/utils/openLifecycle.svelte.js +134 -0
- package/dist/utils/pointerDrag.d.ts +10 -0
- package/dist/utils/pointerDrag.js +37 -2
- package/dist/utils/pragmaticDragAndDrop.d.ts +2 -1
- package/dist/utils/pragmaticDragAndDrop.js +8 -3
- package/dist/utils/range.d.ts +62 -0
- package/dist/utils/range.js +70 -0
- package/dist/utils/requestNativeSubmit.d.ts +17 -0
- package/dist/utils/requestNativeSubmit.js +47 -0
- package/dist/utils/safeArea.svelte.d.ts +10 -1
- package/dist/utils/safeArea.svelte.js +19 -11
- package/dist/utils/stateAttributes.d.ts +108 -0
- package/dist/utils/stateAttributes.js +78 -0
- package/dist/utils/swipeVelocity.d.ts +32 -0
- package/dist/utils/swipeVelocity.js +59 -0
- package/dist/utils/timer.svelte.d.ts +65 -2
- package/dist/utils/timer.svelte.js +159 -25
- package/dist/utils/trigger.d.ts +41 -0
- package/dist/utils/trigger.js +103 -0
- package/dist/utils/typeahead.d.ts +9 -0
- package/dist/utils/typeahead.js +21 -9
- package/dist/utils/useDndList.svelte.d.ts +1 -1
- package/dist/utils/useDndList.svelte.js +6 -23
- package/dist/utils/useFocusScope.svelte.d.ts +29 -0
- package/dist/utils/useFocusScope.svelte.js +189 -27
- package/dist/utils/useHoverAction.svelte.d.ts +44 -4
- package/dist/utils/useHoverAction.svelte.js +161 -51
- package/dist/utils/useKeyDown.svelte.d.ts +19 -2
- package/dist/utils/useKeyDown.svelte.js +19 -12
- package/dist/utils/useListNavigation.svelte.d.ts +94 -13
- package/dist/utils/useListNavigation.svelte.js +261 -35
- package/dist/utils/useLiveAnnouncer.svelte.d.ts +77 -2
- package/dist/utils/useLiveAnnouncer.svelte.js +119 -2
- package/dist/utils/useNavigation.svelte.d.ts +36 -3
- package/dist/utils/useNavigation.svelte.js +699 -332
- package/dist/utils/usePressAndHold.svelte.d.ts +38 -0
- package/dist/utils/usePressAndHold.svelte.js +191 -0
- package/dist/utils/useScrollLock.svelte.d.ts +20 -1
- package/dist/utils/useScrollLock.svelte.js +54 -13
- package/dist/utils/useSlidingIndicator.svelte.d.ts +2 -0
- package/dist/utils/useSlidingIndicator.svelte.js +27 -5
- package/dist/utils/useTabBridge.svelte.d.ts +20 -0
- package/dist/utils/useTabBridge.svelte.js +109 -0
- package/dist/utils/values.d.ts +15 -0
- package/dist/utils/values.js +49 -0
- package/package.json +31 -2
- package/dist/generated/componentMcpRegistry.d.ts +0 -142
- package/dist/utils/useDrag.svelte.d.ts +0 -11
- package/dist/utils/useDrag.svelte.js +0 -55
|
@@ -0,0 +1,401 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Locale-aware number text: digit normalization, parsing, formatting and commit rounding.
|
|
3
|
+
*
|
|
4
|
+
* Number entry (NumberInput, PinInput), range displays (Meter, Progress) and charts share these so
|
|
5
|
+
* a value typed as `1 234,5`, `١٢٣٫٤` or `123` reads the same everywhere. Every function is pure
|
|
6
|
+
* and SSR-safe; `Intl.NumberFormat` instances are cached by locale and options because building
|
|
7
|
+
* one is far more expensive than formatting with it.
|
|
8
|
+
*/
|
|
9
|
+
const FORMATTER_CACHE_LIMIT = 256;
|
|
10
|
+
const formatterCache = new Map();
|
|
11
|
+
const localeKey = (locale) => {
|
|
12
|
+
if (locale === undefined)
|
|
13
|
+
return '';
|
|
14
|
+
return Array.isArray(locale) ? locale.map(String).join(',') : String(locale);
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* A cached `Intl.NumberFormat` for `locale` and `options`. The cache is keyed by the locale string
|
|
18
|
+
* and the serialized options, and keeps the most recent entries only.
|
|
19
|
+
*/
|
|
20
|
+
export const getNumberFormatter = (locale, options) => {
|
|
21
|
+
const key = `${localeKey(locale)}|${options ? JSON.stringify(options) : ''}`;
|
|
22
|
+
const cached = formatterCache.get(key);
|
|
23
|
+
if (cached)
|
|
24
|
+
return cached;
|
|
25
|
+
const formatter = new Intl.NumberFormat(locale, options);
|
|
26
|
+
if (formatterCache.size >= FORMATTER_CACHE_LIMIT) {
|
|
27
|
+
formatterCache.delete(formatterCache.keys().next().value);
|
|
28
|
+
}
|
|
29
|
+
formatterCache.set(key, formatter);
|
|
30
|
+
return formatter;
|
|
31
|
+
};
|
|
32
|
+
/** Formats `value` with the cached formatter; `null` and `undefined` format as `''`. */
|
|
33
|
+
export const formatNumber = (value, locale, options) => (value == null ? '' : getNumberFormatter(locale, options).format(value));
|
|
34
|
+
// Zero code points of the decimal digit systems that are normalized, each followed by its nine
|
|
35
|
+
// other digits: Arabic-Indic, Extended Arabic-Indic (Persian, Urdu), Devanagari, Bengali, Thai
|
|
36
|
+
// and full-width.
|
|
37
|
+
const DIGIT_ZEROS = [0x0660, 0x06f0, 0x0966, 0x09e6, 0x0e50, 0xff10];
|
|
38
|
+
// Han numerals in digit order; `零` is the formal zero.
|
|
39
|
+
const HAN_DIGITS = '〇一二三四五六七八九';
|
|
40
|
+
const HAN_ZERO = '零';
|
|
41
|
+
const digitRanges = DIGIT_ZEROS.map((zero) => `\\u${zero.toString(16).padStart(4, '0')}-\\u${(zero + 9).toString(16).padStart(4, '0')}`).join('');
|
|
42
|
+
const NON_ASCII_DIGIT_RE = new RegExp(`[${digitRanges}${HAN_DIGITS}${HAN_ZERO}]`, 'gu');
|
|
43
|
+
const DIGIT_RE = new RegExp(`^[0-9${digitRanges}${HAN_DIGITS}${HAN_ZERO}]$`, 'u');
|
|
44
|
+
const ARABIC_SCRIPT_DIGIT_RE = /[\u0660-\u0669\u06f0-\u06f9]/u;
|
|
45
|
+
const HAN_DIGIT_RE = new RegExp(`[${HAN_DIGITS}${HAN_ZERO}]`, 'u');
|
|
46
|
+
const digitValue = (char) => {
|
|
47
|
+
if (char === HAN_ZERO)
|
|
48
|
+
return '0';
|
|
49
|
+
const han = HAN_DIGITS.indexOf(char);
|
|
50
|
+
if (han !== -1)
|
|
51
|
+
return String(han);
|
|
52
|
+
const code = char.charCodeAt(0);
|
|
53
|
+
const zero = DIGIT_ZEROS.find((start) => code >= start && code <= start + 9);
|
|
54
|
+
return zero === undefined ? char : String(code - zero);
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Replaces Arabic-Indic, Persian, Devanagari, Bengali, Thai, full-width and Han digits with ASCII
|
|
58
|
+
* digits (`١٢٣` → `123`, `123` → `123`, `二〇二六` → `2026`). Han numerals are read digit by
|
|
59
|
+
* digit, so positional characters such as `十` are left as they are.
|
|
60
|
+
*/
|
|
61
|
+
export const normalizeDigits = (text) => text.replace(NON_ASCII_DIGIT_RE, digitValue);
|
|
62
|
+
/** Whether `char` is a single digit in ASCII or any numeral system `normalizeDigits` reads. */
|
|
63
|
+
export const isDigitCharacter = (char) => DIGIT_RE.test(char);
|
|
64
|
+
const FORMAT_CONTROL_RE = /\p{Cf}/gu;
|
|
65
|
+
const FORMAT_CONTROL_CHAR_RE = /^\p{Cf}$/u;
|
|
66
|
+
/**
|
|
67
|
+
* Removes Unicode format controls (`\p{Cf}`): the left-to-right and right-to-left marks, the
|
|
68
|
+
* Arabic letter mark and the isolates that right-to-left locales put around signs, currencies
|
|
69
|
+
* and exponents, plus zero-width joiners.
|
|
70
|
+
*/
|
|
71
|
+
export const stripBidiMarks = (text) => text.replace(FORMAT_CONTROL_RE, '');
|
|
72
|
+
/** Minus signs a user may type or paste: hyphen-minus, minus, full-width, dashes. */
|
|
73
|
+
export const MINUS_SIGNS = [
|
|
74
|
+
'-',
|
|
75
|
+
'\u2212',
|
|
76
|
+
'\uff0d',
|
|
77
|
+
'\u2012',
|
|
78
|
+
'\u2013',
|
|
79
|
+
'\u2014',
|
|
80
|
+
'\ufe63'
|
|
81
|
+
];
|
|
82
|
+
/** Plus signs a user may type or paste. */
|
|
83
|
+
export const PLUS_SIGNS = ['+', '\uff0b', '\ufe62'];
|
|
84
|
+
/** Percent signs: ASCII, Arabic, full-width and small. */
|
|
85
|
+
export const PERCENT_SIGNS = ['%', '\u066a', '\uff05', '\ufe6a'];
|
|
86
|
+
/** Per-mille signs: ASCII and Arabic. */
|
|
87
|
+
export const PERMILLE_SIGNS = ['\u2030', '\u0609'];
|
|
88
|
+
// Separators every locale tolerates: ASCII and full-width period and comma, Arabic decimal and
|
|
89
|
+
// thousands separators.
|
|
90
|
+
const COMMON_SEPARATORS = ['.', ',', '\uff0e', '\uff0c', '\u066b', '\u066c'];
|
|
91
|
+
const escapeRegExp = (text) => text.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
92
|
+
const charClass = (chars) => new RegExp(`[${chars.map(escapeRegExp).join('')}]`, 'gu');
|
|
93
|
+
const MINUS_RE = charClass(MINUS_SIGNS);
|
|
94
|
+
const PLUS_RE = charClass(PLUS_SIGNS);
|
|
95
|
+
const PERCENT_RE = charClass(PERCENT_SIGNS);
|
|
96
|
+
const PERMILLE_RE = charClass(PERMILLE_SIGNS);
|
|
97
|
+
// Non-global twins for `.test()`, which would otherwise carry `lastIndex` between calls.
|
|
98
|
+
const PERCENT_TEST_RE = new RegExp(PERCENT_RE.source, 'u');
|
|
99
|
+
const PERMILLE_TEST_RE = new RegExp(PERMILLE_RE.source, 'u');
|
|
100
|
+
const SPACE_RE = /\p{Zs}/gu;
|
|
101
|
+
const SPACE_CHAR_RE = /^\p{Zs}$/u;
|
|
102
|
+
// Every space separator (`\p{Zs}`). The parser drops them all, so where a format renders a space
|
|
103
|
+
// the user may type or paste any of them: plain, no-break, narrow no-break, thin, figure…
|
|
104
|
+
const SPACE_SEPARATORS = [
|
|
105
|
+
...' \u00a0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000'
|
|
106
|
+
];
|
|
107
|
+
// Both apostrophes group digits in Swiss locales; the parser reads either one.
|
|
108
|
+
const APOSTROPHES = ["'", '\u2019'];
|
|
109
|
+
const SAMPLE_VALUE = -11111.1;
|
|
110
|
+
// One value in each plural category of every CLDR locale (zero, one, two, few, many and other,
|
|
111
|
+
// with and without fraction digits), so every plural form of a unit label or currency name is
|
|
112
|
+
// read: `1 day` and `2 days`, `1 litre` and `1,5 litre`, Arabic's dual and plural forms.
|
|
113
|
+
const PLURAL_SAMPLES = [0, 1, 2, 3, 5, 6, 7, 11, 21, 100, 1_000_000, 0.5, 1.5];
|
|
114
|
+
const formatSamples = (values, locale, options) => {
|
|
115
|
+
const formatter = getNumberFormatter(locale, options);
|
|
116
|
+
return values.flatMap((value) => formatter.formatToParts(value));
|
|
117
|
+
};
|
|
118
|
+
const addOnce = (list, value) => {
|
|
119
|
+
if (value !== '' && !list.includes(value))
|
|
120
|
+
list.push(value);
|
|
121
|
+
};
|
|
122
|
+
// How a whole text is compared with `spelledValues`: without bidi marks, with plain spaces.
|
|
123
|
+
const spelledKey = (text) => stripBidiMarks(text).replace(SPACE_RE, ' ').trim();
|
|
124
|
+
const symbolsCache = new Map();
|
|
125
|
+
/**
|
|
126
|
+
* The separators and decorations `locale` renders with `options`, read from `formatToParts`.
|
|
127
|
+
* Cached like the formatters.
|
|
128
|
+
*/
|
|
129
|
+
export const getNumberSymbols = (locale, options) => {
|
|
130
|
+
const key = `${localeKey(locale)}|${options ? JSON.stringify(options) : ''}`;
|
|
131
|
+
const cached = symbolsCache.get(key);
|
|
132
|
+
if (cached)
|
|
133
|
+
return cached;
|
|
134
|
+
const spelledValues = new Map();
|
|
135
|
+
const formatter = getNumberFormatter(locale, options);
|
|
136
|
+
const parts = [
|
|
137
|
+
...[SAMPLE_VALUE, ...PLURAL_SAMPLES].flatMap((value) => {
|
|
138
|
+
const valueParts = formatter.formatToParts(value);
|
|
139
|
+
const text = spelledKey(valueParts.map((part) => part.value).join(''));
|
|
140
|
+
if (!valueParts.some((part) => part.type === 'integer') && !spelledValues.has(text)) {
|
|
141
|
+
spelledValues.set(text, value);
|
|
142
|
+
}
|
|
143
|
+
return valueParts;
|
|
144
|
+
}),
|
|
145
|
+
...formatSamples([-SAMPLE_VALUE], locale, { ...options, signDisplay: 'always' })
|
|
146
|
+
];
|
|
147
|
+
const symbols = {
|
|
148
|
+
decimal: '.',
|
|
149
|
+
currencies: [],
|
|
150
|
+
units: [],
|
|
151
|
+
literals: [],
|
|
152
|
+
spelledValues
|
|
153
|
+
};
|
|
154
|
+
for (const part of parts) {
|
|
155
|
+
// Parsed text loses its bidi marks first, so the decorations it is matched against do too.
|
|
156
|
+
const value = stripBidiMarks(part.value);
|
|
157
|
+
if (part.type === 'group')
|
|
158
|
+
symbols.group = part.value;
|
|
159
|
+
else if (part.type === 'currency')
|
|
160
|
+
addOnce(symbols.currencies, value);
|
|
161
|
+
else if (part.type === 'unit')
|
|
162
|
+
addOnce(symbols.units, value);
|
|
163
|
+
else if (part.type === 'exponentSeparator')
|
|
164
|
+
symbols.exponentSeparator = part.value;
|
|
165
|
+
else if (part.type === 'percentSign')
|
|
166
|
+
symbols.percentSign = part.value;
|
|
167
|
+
else if (part.type === 'literal')
|
|
168
|
+
addOnce(symbols.literals, value);
|
|
169
|
+
}
|
|
170
|
+
// Integer formats render no decimal separator, but the locale still has one to type.
|
|
171
|
+
for (const part of getNumberFormatter(locale).formatToParts(0.1)) {
|
|
172
|
+
if (part.type === 'decimal')
|
|
173
|
+
symbols.decimal = part.value;
|
|
174
|
+
}
|
|
175
|
+
if (symbolsCache.size >= FORMATTER_CACHE_LIMIT) {
|
|
176
|
+
symbolsCache.delete(symbolsCache.keys().next().value);
|
|
177
|
+
}
|
|
178
|
+
symbolsCache.set(key, symbols);
|
|
179
|
+
return symbols;
|
|
180
|
+
};
|
|
181
|
+
// Moves the decimal point without the binary error of multiplying or dividing by a power of ten.
|
|
182
|
+
const shiftDecimal = (value, exponentDelta) => {
|
|
183
|
+
const [coefficient, exponent = '0'] = String(value).split('e');
|
|
184
|
+
return Number(`${coefficient}e${Number(exponent) + exponentDelta}`);
|
|
185
|
+
};
|
|
186
|
+
const NUMBER_BODY_RE = /^(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?$/;
|
|
187
|
+
/**
|
|
188
|
+
* Parses number text written in `locale` with `options`, or returns `null` when the text is not a
|
|
189
|
+
* complete number (`''`, `-`, `1e`, `abc`, `Infinity`).
|
|
190
|
+
*
|
|
191
|
+
* - Bidi marks are stripped and every supported numeral system reads as ASCII digits.
|
|
192
|
+
* - Group separators are dropped; for space-grouping locales any space counts, so `1 234,5`
|
|
193
|
+
* typed with a plain space parses in `fr`.
|
|
194
|
+
* - The locale's decimal separator, the full-width period and the Arabic decimal separator read as
|
|
195
|
+
* the decimal point. When several points remain, the last one is the decimal point.
|
|
196
|
+
* - Currency symbols, unit labels (in every plural form) and literals of the format are ignored;
|
|
197
|
+
* Unicode minus signs, a trailing minus (`5-`) and accounting parentheses (`(5)`) read as
|
|
198
|
+
* negative. A plural form the format writes without digits (Arabic `يومان`, two days) reads as
|
|
199
|
+
* the value it spells out.
|
|
200
|
+
* - Percent text (a percent sign, or `style: 'percent'`) is divided by 100, per-mille by 1000.
|
|
201
|
+
*
|
|
202
|
+
* Without a `locale`, Arabic-script digits read with `ar` separators and Han digits with `zh`.
|
|
203
|
+
*/
|
|
204
|
+
export const parseNumber = (text, locale, options) => {
|
|
205
|
+
if (text == null)
|
|
206
|
+
return null;
|
|
207
|
+
let input = stripBidiMarks(String(text)).trim();
|
|
208
|
+
if (input === '' || /^[-+]?infinity$/i.test(input) || input.includes('∞'))
|
|
209
|
+
return null;
|
|
210
|
+
let negative = false;
|
|
211
|
+
const accounting = /^\((.*)\)$/u.exec(input);
|
|
212
|
+
if (accounting) {
|
|
213
|
+
negative = true;
|
|
214
|
+
input = accounting[1];
|
|
215
|
+
}
|
|
216
|
+
let computedLocale = locale;
|
|
217
|
+
if (computedLocale === undefined) {
|
|
218
|
+
if (ARABIC_SCRIPT_DIGIT_RE.test(input))
|
|
219
|
+
computedLocale = 'ar';
|
|
220
|
+
else if (HAN_DIGIT_RE.test(input))
|
|
221
|
+
computedLocale = 'zh';
|
|
222
|
+
}
|
|
223
|
+
const symbols = getNumberSymbols(computedLocale, options);
|
|
224
|
+
const spelled = symbols.spelledValues.get(spelledKey(input));
|
|
225
|
+
if (spelled !== undefined)
|
|
226
|
+
return negative ? -spelled : spelled;
|
|
227
|
+
const hasPercent = PERCENT_TEST_RE.test(input);
|
|
228
|
+
const hasPermille = PERMILLE_TEST_RE.test(input);
|
|
229
|
+
// Decorations go first, so a currency symbol made of letters never reaches the number body.
|
|
230
|
+
// Longest first, so `US dollars` goes whole rather than leaving the `s` of `US dollar`.
|
|
231
|
+
const labels = [...symbols.currencies, ...symbols.units].sort((a, b) => b.length - a.length);
|
|
232
|
+
for (const label of labels)
|
|
233
|
+
input = input.split(label).join('');
|
|
234
|
+
input = input.replace(PERCENT_RE, '').replace(PERMILLE_RE, '');
|
|
235
|
+
for (const literal of symbols.literals) {
|
|
236
|
+
if (/^[\p{Zs}()]*$/u.test(literal))
|
|
237
|
+
continue;
|
|
238
|
+
input = input.split(literal).join('');
|
|
239
|
+
}
|
|
240
|
+
const group = symbols.group;
|
|
241
|
+
if (group && !SPACE_CHAR_RE.test(group)) {
|
|
242
|
+
const groupRe = group === "'" || group === '\u2019' ? /['\u2019]/g : new RegExp(escapeRegExp(group), 'g');
|
|
243
|
+
input = input.replace(groupRe, '');
|
|
244
|
+
}
|
|
245
|
+
input = input.replace(SPACE_RE, '');
|
|
246
|
+
if (symbols.decimal !== '.')
|
|
247
|
+
input = input.split(symbols.decimal).join('.');
|
|
248
|
+
input = input.replace(/[\uff0e\u066b]/g, '.').replace(/[\uff0c\u066c]/g, '');
|
|
249
|
+
if (symbols.exponentSeparator) {
|
|
250
|
+
input = input.split(symbols.exponentSeparator).join('e');
|
|
251
|
+
}
|
|
252
|
+
input = normalizeDigits(input).replace(/E/g, 'e').replace(MINUS_RE, '-').replace(PLUS_RE, '+');
|
|
253
|
+
// One sign, leading or trailing.
|
|
254
|
+
const sign = /^([+-])|([+-])$/.exec(input);
|
|
255
|
+
if (sign) {
|
|
256
|
+
if ((sign[1] ?? sign[2]) === '-')
|
|
257
|
+
negative = !negative;
|
|
258
|
+
input = sign[1] ? input.slice(1) : input.slice(0, -1);
|
|
259
|
+
}
|
|
260
|
+
const lastPoint = input.lastIndexOf('.');
|
|
261
|
+
if (lastPoint !== -1) {
|
|
262
|
+
input = `${input.slice(0, lastPoint).replace(/\./g, '')}.${input.slice(lastPoint + 1)}`;
|
|
263
|
+
}
|
|
264
|
+
if (!NUMBER_BODY_RE.test(input))
|
|
265
|
+
return null;
|
|
266
|
+
let value = Number(input);
|
|
267
|
+
if (negative)
|
|
268
|
+
value = -value;
|
|
269
|
+
const style = options?.style;
|
|
270
|
+
const unitPercent = style === 'unit' && options?.unit === 'percent';
|
|
271
|
+
if (hasPermille)
|
|
272
|
+
value = shiftDecimal(value, -3);
|
|
273
|
+
else if (!unitPercent && (hasPercent || style === 'percent'))
|
|
274
|
+
value = shiftDecimal(value, -2);
|
|
275
|
+
if (!Number.isFinite(value))
|
|
276
|
+
return null;
|
|
277
|
+
// `-0` would format as "-0".
|
|
278
|
+
return value === 0 ? 0 : value;
|
|
279
|
+
};
|
|
280
|
+
const allowedCache = new Map();
|
|
281
|
+
/**
|
|
282
|
+
* The non-digit characters number text in `locale` and `options` may contain, read per character
|
|
283
|
+
* from `formatToParts` of positive, negative and plural sample values: separators, currency and
|
|
284
|
+
* unit characters in every plural form, signs, accounting parentheses, percent and per-mille
|
|
285
|
+
* variants, every space separator when the format renders a space, and both apostrophes when it
|
|
286
|
+
* groups with one. Digits of every supported numeral system are accepted separately by
|
|
287
|
+
* `isNumberText`.
|
|
288
|
+
*/
|
|
289
|
+
export const getNumberCharacters = (locale, options, { allowNegative = true } = {}) => {
|
|
290
|
+
const key = `${localeKey(locale)}|${options ? JSON.stringify(options) : ''}|${allowNegative}`;
|
|
291
|
+
const cached = allowedCache.get(key);
|
|
292
|
+
if (cached)
|
|
293
|
+
return cached;
|
|
294
|
+
const characters = new Set(COMMON_SEPARATORS);
|
|
295
|
+
// The negative sample brings what only negative text renders, such as accounting parentheses.
|
|
296
|
+
const samples = [-SAMPLE_VALUE, ...PLURAL_SAMPLES, ...(allowNegative ? [SAMPLE_VALUE] : [])];
|
|
297
|
+
for (const part of formatSamples(samples, locale, options)) {
|
|
298
|
+
// Compact suffixes (`K`, `M`) cannot be parsed back, so they stay out.
|
|
299
|
+
if (['integer', 'fraction', 'exponentInteger', 'compact', 'minusSign'].includes(part.type)) {
|
|
300
|
+
continue;
|
|
301
|
+
}
|
|
302
|
+
for (const char of part.value) {
|
|
303
|
+
characters.add(char);
|
|
304
|
+
if (SPACE_CHAR_RE.test(char))
|
|
305
|
+
SPACE_SEPARATORS.forEach((space) => characters.add(space));
|
|
306
|
+
if (APOSTROPHES.includes(char))
|
|
307
|
+
APOSTROPHES.forEach((mark) => characters.add(mark));
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
characters.add(getNumberSymbols(locale, options).decimal);
|
|
311
|
+
const style = options?.style;
|
|
312
|
+
if (style === 'percent' || (style === 'unit' && options?.unit === 'percent')) {
|
|
313
|
+
PERCENT_SIGNS.forEach((char) => characters.add(char));
|
|
314
|
+
}
|
|
315
|
+
if (style === 'percent' || (style === 'unit' && options?.unit === 'permille')) {
|
|
316
|
+
PERMILLE_SIGNS.forEach((char) => characters.add(char));
|
|
317
|
+
}
|
|
318
|
+
PLUS_SIGNS.forEach((char) => characters.add(char));
|
|
319
|
+
if (allowNegative)
|
|
320
|
+
MINUS_SIGNS.forEach((char) => characters.add(char));
|
|
321
|
+
else
|
|
322
|
+
MINUS_SIGNS.forEach((char) => characters.delete(char));
|
|
323
|
+
if (allowedCache.size >= FORMATTER_CACHE_LIMIT) {
|
|
324
|
+
allowedCache.delete(allowedCache.keys().next().value);
|
|
325
|
+
}
|
|
326
|
+
allowedCache.set(key, characters);
|
|
327
|
+
return characters;
|
|
328
|
+
};
|
|
329
|
+
/**
|
|
330
|
+
* Whether every character of `text` can belong to number text in `locale`: a digit of a supported
|
|
331
|
+
* numeral system, a character from `getNumberCharacters`, or a format control. Use it to reject a
|
|
332
|
+
* keystroke or paste before parsing; partial text such as `-` or `1,` passes.
|
|
333
|
+
*/
|
|
334
|
+
export const isNumberText = (text, locale, options, characterOptions) => {
|
|
335
|
+
const allowed = getNumberCharacters(locale, options, characterOptions);
|
|
336
|
+
for (const char of text) {
|
|
337
|
+
if (!isDigitCharacter(char) && !allowed.has(char) && !FORMAT_CONTROL_CHAR_RE.test(char)) {
|
|
338
|
+
return false;
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
return true;
|
|
342
|
+
};
|
|
343
|
+
/** Whether `options` set any Intl rounding option. */
|
|
344
|
+
export const hasRoundingOptions = (options) => options?.maximumFractionDigits != null ||
|
|
345
|
+
options?.minimumFractionDigits != null ||
|
|
346
|
+
options?.maximumSignificantDigits != null ||
|
|
347
|
+
options?.minimumSignificantDigits != null ||
|
|
348
|
+
options?.roundingIncrement != null ||
|
|
349
|
+
options?.roundingMode != null ||
|
|
350
|
+
options?.roundingPriority != null;
|
|
351
|
+
const MAX_FLOATING_POINT_CLEANUP = 1e-10;
|
|
352
|
+
/**
|
|
353
|
+
* Removes binary floating-point noise from arithmetic results (`0.1 + 0.2` → `0.3`) without
|
|
354
|
+
* discarding real precision: the value moves by at most one ulp-scaled epsilon, capped at 1e-10.
|
|
355
|
+
*/
|
|
356
|
+
export const cleanFloatingPoint = (value) => {
|
|
357
|
+
if (!Number.isFinite(value))
|
|
358
|
+
return value;
|
|
359
|
+
const rounded = parseFloat(value.toPrecision(15));
|
|
360
|
+
const tolerance = Math.min(Number.EPSILON * Math.max(1, Math.abs(value)), MAX_FLOATING_POINT_CLEANUP);
|
|
361
|
+
return Math.abs(rounded - value) <= tolerance ? rounded : value;
|
|
362
|
+
};
|
|
363
|
+
/**
|
|
364
|
+
* The value to commit for `value` displayed with `options`: rounded exactly as Intl rounds it for
|
|
365
|
+
* display (`maximumFractionDigits`, significant digits, increments, rounding mode), so the committed
|
|
366
|
+
* number matches the text the user sees after blur. Without rounding options the value is returned
|
|
367
|
+
* as it is, keeping its full precision.
|
|
368
|
+
*/
|
|
369
|
+
export const roundToFormat = (value, options) => {
|
|
370
|
+
if (!Number.isFinite(value) || !hasRoundingOptions(options))
|
|
371
|
+
return value;
|
|
372
|
+
// Decorations that don't change the rounded number are neutralized, and the rounded digits are
|
|
373
|
+
// read from the parts, so no unit label, currency name or sign style has to be parsed back.
|
|
374
|
+
const formatter = getNumberFormatter('en-US', {
|
|
375
|
+
...options,
|
|
376
|
+
signDisplay: 'auto',
|
|
377
|
+
currencySign: 'standard',
|
|
378
|
+
notation: options?.notation === 'compact' ? 'standard' : options?.notation,
|
|
379
|
+
numberingSystem: 'latn',
|
|
380
|
+
useGrouping: false
|
|
381
|
+
});
|
|
382
|
+
let text = '';
|
|
383
|
+
for (const part of formatter.formatToParts(value)) {
|
|
384
|
+
if (part.type === 'integer' || part.type === 'fraction' || part.type === 'exponentInteger') {
|
|
385
|
+
text += part.value;
|
|
386
|
+
}
|
|
387
|
+
else if (part.type === 'decimal')
|
|
388
|
+
text += '.';
|
|
389
|
+
else if (part.type === 'minusSign' || part.type === 'exponentMinusSign')
|
|
390
|
+
text += '-';
|
|
391
|
+
else if (part.type === 'exponentSeparator')
|
|
392
|
+
text += 'e';
|
|
393
|
+
}
|
|
394
|
+
let rounded = Number(text);
|
|
395
|
+
if (options?.style === 'percent')
|
|
396
|
+
rounded = shiftDecimal(rounded, -2);
|
|
397
|
+
if (text === '' || !Number.isFinite(rounded))
|
|
398
|
+
return value;
|
|
399
|
+
// `-0` would format as "-0".
|
|
400
|
+
return rounded === 0 ? 0 : rounded;
|
|
401
|
+
};
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/** Why an overlay asked to open or close. One shared list for every component. */
|
|
2
|
+
export type OpenChangeReason =
|
|
3
|
+
/** A press (click, tap, Enter or Space) on the trigger. */
|
|
4
|
+
'trigger-press'
|
|
5
|
+
/** The pointer entered the trigger, or left the trigger and popup (hover close). */
|
|
6
|
+
| 'trigger-hover'
|
|
7
|
+
/** Focus moved onto the trigger. */
|
|
8
|
+
| 'trigger-focus'
|
|
9
|
+
/** A press outside the overlay. */
|
|
10
|
+
| 'outside-press'
|
|
11
|
+
/** The Escape key. */
|
|
12
|
+
| 'escape-key'
|
|
13
|
+
/**
|
|
14
|
+
* A platform close request such as the Android Back gesture (a `CloseWatcher`). Reported with
|
|
15
|
+
* `interaction: 'touch'`: the event it fires carries no input modality of its own.
|
|
16
|
+
*/
|
|
17
|
+
| 'close-watcher'
|
|
18
|
+
/** A close button inside the overlay. */
|
|
19
|
+
| 'close-press'
|
|
20
|
+
/** An item inside the overlay was chosen (a menu item). */
|
|
21
|
+
| 'item-press'
|
|
22
|
+
/** Arrow-key navigation opened or closed it (a submenu, a listbox). */
|
|
23
|
+
| 'list-navigation'
|
|
24
|
+
/** Typing in the input of a combobox opened or closed its list. */
|
|
25
|
+
| 'input-change'
|
|
26
|
+
/** Focus left the overlay. */
|
|
27
|
+
| 'focus-out'
|
|
28
|
+
/** A swipe gesture dismissed it. */
|
|
29
|
+
| 'swipe'
|
|
30
|
+
/** The trigger it was anchored to left the document. */
|
|
31
|
+
| 'trigger-unmount'
|
|
32
|
+
/** The browser's find-in-page, a text fragment or a `#id` link reached content a disclosure hides. */
|
|
33
|
+
| 'find-in-page'
|
|
34
|
+
/** Code called `open()`, `close()`, `toggle()` or `setOpen()` with no user event behind it. */
|
|
35
|
+
| 'imperative-action';
|
|
36
|
+
/** The input modality behind a change; `programmatic` when no user input caused it. */
|
|
37
|
+
export type OpenChangeInteraction = 'mouse' | 'touch' | 'pen' | 'keyboard' | 'programmatic';
|
|
38
|
+
/** The second argument of every `onOpenChange`. */
|
|
39
|
+
export interface OpenChangeDetails {
|
|
40
|
+
/** Why the change was requested. */
|
|
41
|
+
readonly reason: OpenChangeReason;
|
|
42
|
+
/** The DOM event that caused it, when there is one. */
|
|
43
|
+
readonly event?: Event;
|
|
44
|
+
/** The trigger element involved, when a trigger caused it. */
|
|
45
|
+
readonly trigger?: HTMLElement;
|
|
46
|
+
/** The input modality behind the change. */
|
|
47
|
+
readonly interaction: OpenChangeInteraction;
|
|
48
|
+
/**
|
|
49
|
+
* Keeps the overlay as it was: the state does not change and the originating event is left
|
|
50
|
+
* untouched (a cancelled Escape is not `defaultPrevented`). Has no effect when the platform
|
|
51
|
+
* does not allow the request to be refused (a repeated Android Back gesture).
|
|
52
|
+
*/
|
|
53
|
+
cancel(): void;
|
|
54
|
+
/** Whether `cancel()` took effect. */
|
|
55
|
+
readonly isCanceled: boolean;
|
|
56
|
+
}
|
|
57
|
+
/** `onOpenChange` as every overlay declares it. */
|
|
58
|
+
export type OpenChangeHandler = (open: boolean, details: OpenChangeDetails) => void;
|
|
59
|
+
/** What a caller knows about a change; the rest is inferred. */
|
|
60
|
+
export interface OpenChangeInit {
|
|
61
|
+
reason?: OpenChangeReason;
|
|
62
|
+
event?: Event;
|
|
63
|
+
trigger?: HTMLElement;
|
|
64
|
+
interaction?: OpenChangeInteraction;
|
|
65
|
+
/** `false` when the request cannot be refused: `cancel()` then does nothing. Default `true`. */
|
|
66
|
+
cancelable?: boolean;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* The modality behind an event. A click with `detail === 0` and no pointer type is a virtual
|
|
70
|
+
* click: Enter or Space on a control, or a screen reader's activation. `pointerType` is the type
|
|
71
|
+
* of the press that preceded a click, for browsers whose click event does not carry one (Safari).
|
|
72
|
+
*/
|
|
73
|
+
export declare function getInteractionType(event?: Event | null, pointerType?: string | null): OpenChangeInteraction;
|
|
74
|
+
/** Builds the details object an owner passes to `onOpenChange`. */
|
|
75
|
+
export declare function createOpenChangeDetails(init?: OpenChangeInit): OpenChangeDetails;
|
|
76
|
+
/** Whether `value` is a details object built by `createOpenChangeDetails`. */
|
|
77
|
+
export declare const isOpenChangeDetails: (value: unknown) => value is OpenChangeDetails;
|
|
78
|
+
/**
|
|
79
|
+
* Normalises what `open()`, `close()`, `toggle()` and `setOpen()` receive: existing details pass
|
|
80
|
+
* through unchanged (so a nested owner shares the caller's `cancel()`), an `Event` (from
|
|
81
|
+
* `onclick={popover.toggle}`) becomes its `event`, and anything else is an `OpenChangeInit`.
|
|
82
|
+
*/
|
|
83
|
+
export declare function resolveOpenChangeDetails(init?: OpenChangeDetails | OpenChangeInit | Event | null, fallback?: OpenChangeInit): OpenChangeDetails;
|
|
84
|
+
/**
|
|
85
|
+
* Runs `onOpenChange` before a change and reports whether the owner may apply it. Call it with
|
|
86
|
+
* the details the change was requested with; it returns `false` when the callback cancelled.
|
|
87
|
+
*/
|
|
88
|
+
export declare function requestOpenChange(onOpenChange: OpenChangeHandler | undefined, open: boolean, details: OpenChangeDetails): boolean;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
// One vocabulary for why an overlay opens or closes. Every owner of open state calls
|
|
2
|
+
// `onOpenChange(open, details)` *before* it changes that state; `details.cancel()` leaves the
|
|
3
|
+
// overlay as it was and the originating event untouched (Base UI's change-event details).
|
|
4
|
+
const BRAND = Symbol('entasis:open-change-details');
|
|
5
|
+
const isPointerKind = (value) => value === 'mouse' || value === 'touch' || value === 'pen';
|
|
6
|
+
/**
|
|
7
|
+
* The modality behind an event. A click with `detail === 0` and no pointer type is a virtual
|
|
8
|
+
* click: Enter or Space on a control, or a screen reader's activation. `pointerType` is the type
|
|
9
|
+
* of the press that preceded a click, for browsers whose click event does not carry one (Safari).
|
|
10
|
+
*/
|
|
11
|
+
export function getInteractionType(event, pointerType) {
|
|
12
|
+
if (!event)
|
|
13
|
+
return 'programmatic';
|
|
14
|
+
if (typeof KeyboardEvent !== 'undefined' && event instanceof KeyboardEvent)
|
|
15
|
+
return 'keyboard';
|
|
16
|
+
if (typeof MouseEvent !== 'undefined' && event instanceof MouseEvent) {
|
|
17
|
+
const own = event.pointerType;
|
|
18
|
+
if (isPointerKind(own))
|
|
19
|
+
return own;
|
|
20
|
+
if (event.type === 'click' && event.detail === 0)
|
|
21
|
+
return 'keyboard';
|
|
22
|
+
return isPointerKind(pointerType) ? pointerType : 'mouse';
|
|
23
|
+
}
|
|
24
|
+
if (typeof TouchEvent !== 'undefined' && event instanceof TouchEvent)
|
|
25
|
+
return 'touch';
|
|
26
|
+
if (typeof FocusEvent !== 'undefined' && event instanceof FocusEvent)
|
|
27
|
+
return 'keyboard';
|
|
28
|
+
return 'programmatic';
|
|
29
|
+
}
|
|
30
|
+
/** Builds the details object an owner passes to `onOpenChange`. */
|
|
31
|
+
export function createOpenChangeDetails(init = {}) {
|
|
32
|
+
let canceled = false;
|
|
33
|
+
const cancelable = init.cancelable ?? true;
|
|
34
|
+
return {
|
|
35
|
+
[BRAND]: true,
|
|
36
|
+
reason: init.reason ?? 'imperative-action',
|
|
37
|
+
event: init.event,
|
|
38
|
+
trigger: init.trigger,
|
|
39
|
+
interaction: init.interaction ?? getInteractionType(init.event),
|
|
40
|
+
cancel() {
|
|
41
|
+
if (cancelable)
|
|
42
|
+
canceled = true;
|
|
43
|
+
},
|
|
44
|
+
get isCanceled() {
|
|
45
|
+
return canceled;
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
/** Whether `value` is a details object built by `createOpenChangeDetails`. */
|
|
50
|
+
export const isOpenChangeDetails = (value) => typeof value === 'object' && value !== null && BRAND in value;
|
|
51
|
+
/**
|
|
52
|
+
* Normalises what `open()`, `close()`, `toggle()` and `setOpen()` receive: existing details pass
|
|
53
|
+
* through unchanged (so a nested owner shares the caller's `cancel()`), an `Event` (from
|
|
54
|
+
* `onclick={popover.toggle}`) becomes its `event`, and anything else is an `OpenChangeInit`.
|
|
55
|
+
*/
|
|
56
|
+
export function resolveOpenChangeDetails(init, fallback) {
|
|
57
|
+
if (isOpenChangeDetails(init))
|
|
58
|
+
return init;
|
|
59
|
+
if (typeof Event !== 'undefined' && init instanceof Event) {
|
|
60
|
+
return createOpenChangeDetails({ ...fallback, event: init });
|
|
61
|
+
}
|
|
62
|
+
return createOpenChangeDetails({ ...fallback, ...(init ?? {}) });
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Runs `onOpenChange` before a change and reports whether the owner may apply it. Call it with
|
|
66
|
+
* the details the change was requested with; it returns `false` when the callback cancelled.
|
|
67
|
+
*/
|
|
68
|
+
export function requestOpenChange(onOpenChange, open, details) {
|
|
69
|
+
onOpenChange?.(open, details);
|
|
70
|
+
return !details.isCanceled;
|
|
71
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { OpenTransitionStatus } from './stateAttributes.js';
|
|
2
|
+
export interface OpenLifecycleOptions {
|
|
3
|
+
/** The owner's open state. */
|
|
4
|
+
isOpen: () => boolean;
|
|
5
|
+
/** Runs once the opening transition has finished, or right away when none plays. */
|
|
6
|
+
onAfterOpen?: () => void;
|
|
7
|
+
/** Runs once the closing transition has finished, or right away when none plays. */
|
|
8
|
+
onAfterClose?: () => void;
|
|
9
|
+
/**
|
|
10
|
+
* Another component renders and animates the surface (a Popover's mobile sheet is a Dialog)
|
|
11
|
+
* and reports through `introEnd` / `outroEnd`; the lifecycle then never completes on its own.
|
|
12
|
+
*/
|
|
13
|
+
external?: () => boolean;
|
|
14
|
+
/**
|
|
15
|
+
* The element a CSS-animated surface (no Svelte transition) animates: when no transition
|
|
16
|
+
* function ran, completion waits for its running animations and transitions.
|
|
17
|
+
*/
|
|
18
|
+
animated?: () => Element | null | undefined;
|
|
19
|
+
}
|
|
20
|
+
/** Any Svelte transition function: `(node, params, { direction })`. */
|
|
21
|
+
type TransitionFunction = (...args: never[]) => unknown;
|
|
22
|
+
export interface OpenLifecycle {
|
|
23
|
+
/** Where the surface is in its lifecycle; feeds `data-entering` / `data-exiting`. */
|
|
24
|
+
readonly status: OpenTransitionStatus;
|
|
25
|
+
/**
|
|
26
|
+
* Wraps the transition function of the element that animates in and out, so the lifecycle
|
|
27
|
+
* knows a transition is playing: `in:panelTransition={…} out:panelTransition={…}`.
|
|
28
|
+
*/
|
|
29
|
+
transition<Fn extends TransitionFunction>(fn: Fn): Fn;
|
|
30
|
+
/** Call from the animated element's `onintroend` (or an external surface's after-open). */
|
|
31
|
+
introEnd(): void;
|
|
32
|
+
/** Call from the animated element's `onoutroend` (or an external surface's after-close). */
|
|
33
|
+
outroEnd(): void;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Tracks one surface's lifecycle. Call during component initialisation (it installs effects).
|
|
37
|
+
* A close during the opening transition cancels the pending `onAfterOpen`, and a reopen during the
|
|
38
|
+
* closing one cancels the pending `onAfterClose`; each phase that completes reports once.
|
|
39
|
+
*/
|
|
40
|
+
export declare function useOpenLifecycle(options: OpenLifecycleOptions): OpenLifecycle;
|
|
41
|
+
export {};
|