entasis 0.11.0 → 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 +256 -30
- package/dist/components/Form/Field/Field.svelte.d.ts +9 -0
- 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 +64 -8
- 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 +109 -3
- package/dist/components/Form/Field/field.state.svelte.js +508 -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 +47 -14
- 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 +40 -2
- package/dist/components/Form/Form/FormInputRenderer.svelte +7 -0
- package/dist/components/Form/Form/form.d.ts +35 -6
- package/dist/components/Form/Form/form.mcp.d.ts +1 -1
- package/dist/components/Form/Form/form.mcp.js +113 -13
- package/dist/components/Form/Form/form.props.d.ts +32 -1
- package/dist/components/Form/Form/form.registry.d.ts +2 -2
- package/dist/components/Form/Form/form.registry.js +1 -4
- package/dist/components/Form/Form/form.state.svelte.d.ts +1138 -413
- package/dist/components/Form/Form/form.state.svelte.js +319 -26
- package/dist/components/Form/Form/index.d.ts +3 -1
- package/dist/components/Form/Form/visibility.d.ts +3096 -1831
- 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 +1022 -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 +225 -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,38 @@
|
|
|
1
|
+
import type { Attachment } from 'svelte/attachments';
|
|
2
|
+
/** Milliseconds between the press and the first repeat. */
|
|
3
|
+
export declare const PRESS_AND_HOLD_DELAY = 400;
|
|
4
|
+
/** Milliseconds between repeats. */
|
|
5
|
+
export declare const PRESS_AND_HOLD_INTERVAL = 60;
|
|
6
|
+
export type PressAndHoldOptions = {
|
|
7
|
+
/**
|
|
8
|
+
* One step. Runs on the press and then on every repeat; return `false` to stop repeating, for
|
|
9
|
+
* example when the value reached a bound. Receives the event that started the hold.
|
|
10
|
+
*/
|
|
11
|
+
onStep: (event: Event) => boolean | void;
|
|
12
|
+
/**
|
|
13
|
+
* Checked before every step. While it returns true no hold starts, and a running one stops as
|
|
14
|
+
* soon as it does (disabled or read-only mid-hold).
|
|
15
|
+
*/
|
|
16
|
+
disabled?: () => boolean;
|
|
17
|
+
/** Milliseconds between the press and the first repeat. Default `PRESS_AND_HOLD_DELAY`. */
|
|
18
|
+
delay?: number;
|
|
19
|
+
/** Milliseconds between repeats. Default `PRESS_AND_HOLD_INTERVAL`. */
|
|
20
|
+
interval?: number;
|
|
21
|
+
/** Touch travel in px that turns the press into a scroll and stops it. Default 8. */
|
|
22
|
+
scrollDistance?: number;
|
|
23
|
+
/** The press ended: the pointer was released or cancelled. */
|
|
24
|
+
onStop?: () => void;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Press-and-hold repetition for stepper buttons. A mouse or pen press steps at once, then repeats
|
|
28
|
+
* after `delay` every `interval` until the pointer is released or cancelled, the step returns
|
|
29
|
+
* `false` or `disabled` turns true; moving off the button pauses it and coming back resumes. A
|
|
30
|
+
* touch press waits briefly so a scroll that starts on the button never steps, and a quick tap is
|
|
31
|
+
* left to the button's click. Pair the attachment with `shouldSkipClick` in the click handler so
|
|
32
|
+
* the click after a press does not step twice while keyboard activation still steps once.
|
|
33
|
+
*/
|
|
34
|
+
export declare const usePressAndHold: (options: PressAndHoldOptions) => {
|
|
35
|
+
attachment: Attachment<HTMLElement>;
|
|
36
|
+
shouldSkipClick: (event: MouseEvent) => boolean;
|
|
37
|
+
stop: () => void;
|
|
38
|
+
};
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import { onDestroy, untrack } from 'svelte';
|
|
2
|
+
import { on } from 'svelte/events';
|
|
3
|
+
/** Milliseconds between the press and the first repeat. */
|
|
4
|
+
export const PRESS_AND_HOLD_DELAY = 400;
|
|
5
|
+
/** Milliseconds between repeats. */
|
|
6
|
+
export const PRESS_AND_HOLD_INTERVAL = 60;
|
|
7
|
+
/** Touch travel in px that turns a press into a scroll. */
|
|
8
|
+
const SCROLL_DISTANCE = 8;
|
|
9
|
+
/** A touch press waits this long before it counts as a hold rather than the start of a scroll. */
|
|
10
|
+
const TOUCH_INTENT_MS = 50;
|
|
11
|
+
/** More touch moves than this during the intent wait read as a scroll or a pinch. */
|
|
12
|
+
const MAX_TOUCH_INTENT_MOVES = 3;
|
|
13
|
+
/**
|
|
14
|
+
* Press-and-hold repetition for stepper buttons. A mouse or pen press steps at once, then repeats
|
|
15
|
+
* after `delay` every `interval` until the pointer is released or cancelled, the step returns
|
|
16
|
+
* `false` or `disabled` turns true; moving off the button pauses it and coming back resumes. A
|
|
17
|
+
* touch press waits briefly so a scroll that starts on the button never steps, and a quick tap is
|
|
18
|
+
* left to the button's click. Pair the attachment with `shouldSkipClick` in the click handler so
|
|
19
|
+
* the click after a press does not step twice while keyboard activation still steps once.
|
|
20
|
+
*/
|
|
21
|
+
export const usePressAndHold = (options) => {
|
|
22
|
+
let pressed = false;
|
|
23
|
+
let pointerType = '';
|
|
24
|
+
let ignoreClick = false;
|
|
25
|
+
let downX = 0;
|
|
26
|
+
let downY = 0;
|
|
27
|
+
let touchMoves = 0;
|
|
28
|
+
let intentTimer = null;
|
|
29
|
+
/** The pending step: the first repeat after `delay`, then each one after `interval`. */
|
|
30
|
+
let stepTimer = null;
|
|
31
|
+
let offContextMenu = null;
|
|
32
|
+
let offRelease = null;
|
|
33
|
+
const isTouch = (type) => type === 'touch';
|
|
34
|
+
const isDisabled = () => options.disabled?.() === true;
|
|
35
|
+
/** Stops stepping; a pressed pointer can still resume it by coming back onto the button. */
|
|
36
|
+
const stopRepeating = () => {
|
|
37
|
+
if (stepTimer !== null)
|
|
38
|
+
clearTimeout(stepTimer);
|
|
39
|
+
stepTimer = null;
|
|
40
|
+
offContextMenu?.();
|
|
41
|
+
offContextMenu = null;
|
|
42
|
+
};
|
|
43
|
+
const clearIntent = () => {
|
|
44
|
+
if (intentTimer !== null)
|
|
45
|
+
clearTimeout(intentTimer);
|
|
46
|
+
intentTimer = null;
|
|
47
|
+
touchMoves = 0;
|
|
48
|
+
};
|
|
49
|
+
const start = (event) => {
|
|
50
|
+
stopRepeating();
|
|
51
|
+
if (isDisabled())
|
|
52
|
+
return;
|
|
53
|
+
// A long touch press would otherwise open the browser's context menu over the button.
|
|
54
|
+
offContextMenu = on(window, 'contextmenu', (contextEvent) => contextEvent.preventDefault());
|
|
55
|
+
if (options.onStep(event) === false) {
|
|
56
|
+
stopRepeating();
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
const interval = options.interval ?? PRESS_AND_HOLD_INTERVAL;
|
|
60
|
+
const repeat = () => {
|
|
61
|
+
stepTimer = null;
|
|
62
|
+
if (isDisabled() || options.onStep(event) === false) {
|
|
63
|
+
stopRepeating();
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
stepTimer = setTimeout(repeat, interval);
|
|
67
|
+
};
|
|
68
|
+
// Repeating starts once the delay has passed: its first step lands an interval later.
|
|
69
|
+
stepTimer = setTimeout(() => {
|
|
70
|
+
stepTimer = setTimeout(repeat, interval);
|
|
71
|
+
}, options.delay ?? PRESS_AND_HOLD_DELAY);
|
|
72
|
+
};
|
|
73
|
+
const release = () => {
|
|
74
|
+
if (!pressed && offRelease === null)
|
|
75
|
+
return;
|
|
76
|
+
pressed = false;
|
|
77
|
+
clearIntent();
|
|
78
|
+
stopRepeating();
|
|
79
|
+
offRelease?.();
|
|
80
|
+
offRelease = null;
|
|
81
|
+
options.onStop?.();
|
|
82
|
+
};
|
|
83
|
+
/** Stops a running hold now, as a release would. */
|
|
84
|
+
const stop = () => release();
|
|
85
|
+
const down = (event) => {
|
|
86
|
+
if (event.defaultPrevented || event.button !== 0 || isDisabled())
|
|
87
|
+
return;
|
|
88
|
+
release();
|
|
89
|
+
pressed = true;
|
|
90
|
+
pointerType = event.pointerType;
|
|
91
|
+
ignoreClick = false;
|
|
92
|
+
downX = event.clientX;
|
|
93
|
+
downY = event.clientY;
|
|
94
|
+
// The release can land anywhere; an ancestor stopping it is covered by the node's own listener.
|
|
95
|
+
const offUp = on(window, 'pointerup', release);
|
|
96
|
+
const offCancel = on(window, 'pointercancel', release);
|
|
97
|
+
offRelease = () => {
|
|
98
|
+
offUp();
|
|
99
|
+
offCancel();
|
|
100
|
+
};
|
|
101
|
+
if (!isTouch(event.pointerType)) {
|
|
102
|
+
// Mouse and pen: step now, and keep the press from selecting text.
|
|
103
|
+
event.preventDefault();
|
|
104
|
+
start(event);
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
clearIntent();
|
|
108
|
+
intentTimer = setTimeout(() => {
|
|
109
|
+
const moves = touchMoves;
|
|
110
|
+
clearIntent();
|
|
111
|
+
if (!pressed || moves > MAX_TOUCH_INTENT_MOVES)
|
|
112
|
+
return;
|
|
113
|
+
start(event);
|
|
114
|
+
// The click a touch hold ends with must not step once more.
|
|
115
|
+
ignoreClick = true;
|
|
116
|
+
}, TOUCH_INTENT_MS);
|
|
117
|
+
};
|
|
118
|
+
const move = (event) => {
|
|
119
|
+
if (!pressed || !isTouch(event.pointerType))
|
|
120
|
+
return;
|
|
121
|
+
touchMoves += 1;
|
|
122
|
+
const distance = Math.hypot(event.clientX - downX, event.clientY - downY);
|
|
123
|
+
if (distance > (options.scrollDistance ?? SCROLL_DISTANCE)) {
|
|
124
|
+
clearIntent();
|
|
125
|
+
stopRepeating();
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
// Mouse and pen only: a touch has no hover, its pointer leaves when it lifts.
|
|
129
|
+
const pause = (event) => {
|
|
130
|
+
if (pressed && !isTouch(event.pointerType))
|
|
131
|
+
stopRepeating();
|
|
132
|
+
};
|
|
133
|
+
const resume = (event) => {
|
|
134
|
+
if (!pressed || isTouch(event.pointerType) || isTouch(pointerType))
|
|
135
|
+
return;
|
|
136
|
+
// The button came up where no pointerup reached us (outside the window, over an iframe):
|
|
137
|
+
// coming back onto the button without it held ends the press instead of repeating it.
|
|
138
|
+
if ((event.buttons & 1) === 0) {
|
|
139
|
+
release();
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
start(event);
|
|
143
|
+
};
|
|
144
|
+
$effect(() => {
|
|
145
|
+
if (isDisabled())
|
|
146
|
+
untrack(stopRepeating);
|
|
147
|
+
});
|
|
148
|
+
onDestroy(() => {
|
|
149
|
+
clearIntent();
|
|
150
|
+
stopRepeating();
|
|
151
|
+
offRelease?.();
|
|
152
|
+
offRelease = null;
|
|
153
|
+
pressed = false;
|
|
154
|
+
});
|
|
155
|
+
const attachment = (node) => untrack(() => {
|
|
156
|
+
const offs = [
|
|
157
|
+
on(node, 'pointerdown', down),
|
|
158
|
+
on(node, 'pointermove', move),
|
|
159
|
+
on(node, 'pointerup', release),
|
|
160
|
+
on(node, 'pointerleave', pause),
|
|
161
|
+
on(node, 'pointerenter', resume)
|
|
162
|
+
];
|
|
163
|
+
return () => {
|
|
164
|
+
offs.forEach((off) => off());
|
|
165
|
+
clearIntent();
|
|
166
|
+
stopRepeating();
|
|
167
|
+
offRelease?.();
|
|
168
|
+
offRelease = null;
|
|
169
|
+
pressed = false;
|
|
170
|
+
};
|
|
171
|
+
});
|
|
172
|
+
/**
|
|
173
|
+
* For the button's click handler: true when the click must not step. A mouse or pen press
|
|
174
|
+
* already stepped on pointerdown, and a touch hold already repeated; a keyboard activation
|
|
175
|
+
* (`detail` 0) and a quick touch tap still step through the click.
|
|
176
|
+
*/
|
|
177
|
+
const shouldSkipClick = (event) => {
|
|
178
|
+
if (event.defaultPrevented)
|
|
179
|
+
return true;
|
|
180
|
+
// Keyboard and assistive-tech activations always step, whatever pointer pressed last.
|
|
181
|
+
if (event.detail === 0)
|
|
182
|
+
return false;
|
|
183
|
+
if (!isTouch(pointerType))
|
|
184
|
+
return true;
|
|
185
|
+
// The click a touch hold ends with is skipped once; a later one is a tap of its own.
|
|
186
|
+
const skip = ignoreClick;
|
|
187
|
+
ignoreClick = false;
|
|
188
|
+
return skip;
|
|
189
|
+
};
|
|
190
|
+
return { attachment, shouldSkipClick, stop };
|
|
191
|
+
};
|
|
@@ -2,7 +2,26 @@ type ScrollLockOptions = {
|
|
|
2
2
|
isActive: () => boolean;
|
|
3
3
|
scroller?: HTMLElement;
|
|
4
4
|
};
|
|
5
|
-
/**
|
|
5
|
+
/** The attribute a locked scroller carries. */
|
|
6
|
+
export declare const SCROLL_LOCK_ATTRIBUTE = "data-entasis-scroll-lock";
|
|
7
|
+
/**
|
|
8
|
+
* Value of `data-entasis-scroll-lock` when there is nothing to compensate: the page already
|
|
9
|
+
* reserves its scrollbar gutter (`scrollbar-gutter: stable`) or shows no classic scrollbar.
|
|
10
|
+
* Otherwise the value is empty and the plugin rule keeps the scrollbar's room.
|
|
11
|
+
*/
|
|
12
|
+
export declare const SCROLL_LOCK_UNCOMPENSATED = "uncompensated";
|
|
13
|
+
/**
|
|
14
|
+
* Value of `data-entasis-scroll-lock` when `scrollbar-gutter: stable` did not keep the hidden
|
|
15
|
+
* scrollbar's room (the property is unsupported, or the scroller has a custom scrollbar): the
|
|
16
|
+
* plugin rule pads the scroller by the scrollbar's width instead.
|
|
17
|
+
*/
|
|
18
|
+
export declare const SCROLL_LOCK_PADDED = "padding";
|
|
19
|
+
/**
|
|
20
|
+
* Custom property set on a locked scroller: the width in px of the scrollbar the lock hides,
|
|
21
|
+
* `0px` with overlay scrollbars. Use it to keep `position: fixed` bars from jumping sideways.
|
|
22
|
+
*/
|
|
23
|
+
export declare const SCROLLBAR_WIDTH_VARIABLE = "--entasis-scrollbar-width";
|
|
24
|
+
/** Locks `scroller` (default the page, `<html>`) and returns a release function. */
|
|
6
25
|
export declare const lockScroll: (scroller?: HTMLElement) => () => void;
|
|
7
26
|
export declare const useScrollLock: (opts: ScrollLockOptions) => void;
|
|
8
27
|
export {};
|
|
@@ -1,22 +1,63 @@
|
|
|
1
|
+
/** The attribute a locked scroller carries. */
|
|
2
|
+
export const SCROLL_LOCK_ATTRIBUTE = 'data-entasis-scroll-lock';
|
|
3
|
+
/**
|
|
4
|
+
* Value of `data-entasis-scroll-lock` when there is nothing to compensate: the page already
|
|
5
|
+
* reserves its scrollbar gutter (`scrollbar-gutter: stable`) or shows no classic scrollbar.
|
|
6
|
+
* Otherwise the value is empty and the plugin rule keeps the scrollbar's room.
|
|
7
|
+
*/
|
|
8
|
+
export const SCROLL_LOCK_UNCOMPENSATED = 'uncompensated';
|
|
9
|
+
/**
|
|
10
|
+
* Value of `data-entasis-scroll-lock` when `scrollbar-gutter: stable` did not keep the hidden
|
|
11
|
+
* scrollbar's room (the property is unsupported, or the scroller has a custom scrollbar): the
|
|
12
|
+
* plugin rule pads the scroller by the scrollbar's width instead.
|
|
13
|
+
*/
|
|
14
|
+
export const SCROLL_LOCK_PADDED = 'padding';
|
|
15
|
+
/**
|
|
16
|
+
* Custom property set on a locked scroller: the width in px of the scrollbar the lock hides,
|
|
17
|
+
* `0px` with overlay scrollbars. Use it to keep `position: fixed` bars from jumping sideways.
|
|
18
|
+
*/
|
|
19
|
+
export const SCROLLBAR_WIDTH_VARIABLE = '--entasis-scrollbar-width';
|
|
1
20
|
// WeakMap (not Map): purely imperative refcount bookkeeping keyed by element, read and
|
|
2
21
|
// written from inside effects — a reactive Map here would re-trigger its own effect.
|
|
3
22
|
const locks = new WeakMap();
|
|
4
|
-
/**
|
|
5
|
-
|
|
23
|
+
/** Whether `scrollbar-gutter: stable` already keeps room for the scrollbar on `scroller`. */
|
|
24
|
+
const reservesGutter = (scroller) => {
|
|
25
|
+
const document = scroller.ownerDocument;
|
|
26
|
+
// The root element's value (or the body's, when its overflow propagates) styles the viewport.
|
|
27
|
+
const targets = scroller === document.documentElement ? [scroller, document.body] : [scroller];
|
|
28
|
+
return targets.some((target) => document.defaultView?.getComputedStyle(target).scrollbarGutter?.startsWith('stable'));
|
|
29
|
+
};
|
|
30
|
+
/** The width of the scrollbar `scroller` shows now, `0` when it has none or an overlay one. */
|
|
31
|
+
const measureScrollbarWidth = (scroller) => {
|
|
32
|
+
const document = scroller.ownerDocument;
|
|
33
|
+
if (scroller === document.documentElement) {
|
|
34
|
+
return Math.max(0, (document.defaultView?.innerWidth ?? 0) - scroller.clientWidth);
|
|
35
|
+
}
|
|
36
|
+
return Math.max(0, scroller.offsetWidth - scroller.clientWidth);
|
|
37
|
+
};
|
|
38
|
+
/** Locks `scroller` (default the page, `<html>`) and returns a release function. */
|
|
39
|
+
export const lockScroll = (scroller = document.documentElement) => {
|
|
6
40
|
const entry = locks.get(scroller);
|
|
7
41
|
if (entry) {
|
|
8
42
|
entry.count += 1;
|
|
9
43
|
}
|
|
10
44
|
else {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
45
|
+
locks.set(scroller, { count: 1 });
|
|
46
|
+
// Measured before the attribute hides the scrollbar.
|
|
47
|
+
const width = measureScrollbarWidth(scroller);
|
|
48
|
+
const before = scroller.clientWidth;
|
|
49
|
+
scroller.style.setProperty(SCROLLBAR_WIDTH_VARIABLE, `${width}px`);
|
|
50
|
+
if (width === 0 || reservesGutter(scroller)) {
|
|
51
|
+
scroller.setAttribute(SCROLL_LOCK_ATTRIBUTE, SCROLL_LOCK_UNCOMPENSATED);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
scroller.setAttribute(SCROLL_LOCK_ATTRIBUTE, '');
|
|
55
|
+
// `scrollbar-gutter` is not honoured everywhere (older engines, custom scrollbars on the
|
|
56
|
+
// viewport). When the content still widened into the hidden scrollbar's room, pad it back.
|
|
57
|
+
if (scroller.clientWidth - before >= width / 2) {
|
|
58
|
+
scroller.setAttribute(SCROLL_LOCK_ATTRIBUTE, SCROLL_LOCK_PADDED);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
20
61
|
}
|
|
21
62
|
let released = false;
|
|
22
63
|
return () => {
|
|
@@ -29,8 +70,8 @@ export const lockScroll = (scroller = document.body) => {
|
|
|
29
70
|
current.count -= 1;
|
|
30
71
|
if (current.count > 0)
|
|
31
72
|
return;
|
|
32
|
-
scroller.
|
|
33
|
-
scroller.style.
|
|
73
|
+
scroller.removeAttribute(SCROLL_LOCK_ATTRIBUTE);
|
|
74
|
+
scroller.style.removeProperty(SCROLLBAR_WIDTH_VARIABLE);
|
|
34
75
|
locks.delete(scroller);
|
|
35
76
|
};
|
|
36
77
|
};
|
|
@@ -9,5 +9,7 @@ export declare const useSlidingIndicator: (options: SlidingIndicatorOptions) =>
|
|
|
9
9
|
readonly style: string;
|
|
10
10
|
readonly isHydrated: boolean;
|
|
11
11
|
readonly isReady: boolean;
|
|
12
|
+
/** True while the indicator sits on an active item; false when no item is active. */
|
|
13
|
+
readonly isVisible: boolean;
|
|
12
14
|
};
|
|
13
15
|
export {};
|
|
@@ -7,8 +7,17 @@ export const useSlidingIndicator = (options) => {
|
|
|
7
7
|
let style = $state('');
|
|
8
8
|
let isHydrated = $state(false);
|
|
9
9
|
let isReady = $state(false);
|
|
10
|
+
let isVisible = $state(false);
|
|
11
|
+
const cancelFrames = () => {
|
|
12
|
+
if (firstFrame !== undefined)
|
|
13
|
+
cancelAnimationFrame(firstFrame);
|
|
14
|
+
if (secondFrame !== undefined)
|
|
15
|
+
cancelAnimationFrame(secondFrame);
|
|
16
|
+
firstFrame = undefined;
|
|
17
|
+
secondFrame = undefined;
|
|
18
|
+
};
|
|
10
19
|
const enableTransition = () => {
|
|
11
|
-
if (isReady || firstFrame !== undefined)
|
|
20
|
+
if (isReady || firstFrame !== undefined || secondFrame !== undefined)
|
|
12
21
|
return;
|
|
13
22
|
firstFrame = requestAnimationFrame(() => {
|
|
14
23
|
firstFrame = undefined;
|
|
@@ -18,11 +27,23 @@ export const useSlidingIndicator = (options) => {
|
|
|
18
27
|
});
|
|
19
28
|
});
|
|
20
29
|
};
|
|
30
|
+
// No active item: drop the last position instead of leaving the indicator on a tab that is
|
|
31
|
+
// no longer selected, and let the next placement snap into place before transitions resume.
|
|
32
|
+
const hideIndicator = () => {
|
|
33
|
+
style = '';
|
|
34
|
+
isVisible = false;
|
|
35
|
+
isReady = false;
|
|
36
|
+
cancelFrames();
|
|
37
|
+
};
|
|
21
38
|
const placeIndicator = (index = options.activeIndex()) => {
|
|
39
|
+
if (index < 0)
|
|
40
|
+
return hideIndicator();
|
|
41
|
+
// An item that is not attached yet places the indicator from its own `itemReference`.
|
|
22
42
|
const element = itemElements[index];
|
|
23
43
|
if (!element)
|
|
24
44
|
return;
|
|
25
45
|
style = options.getStyle(element);
|
|
46
|
+
isVisible = true;
|
|
26
47
|
isHydrated = true;
|
|
27
48
|
enableTransition();
|
|
28
49
|
};
|
|
@@ -51,10 +72,7 @@ export const useSlidingIndicator = (options) => {
|
|
|
51
72
|
return () => {
|
|
52
73
|
resizeObserver?.disconnect();
|
|
53
74
|
resizeObserver = undefined;
|
|
54
|
-
|
|
55
|
-
cancelAnimationFrame(firstFrame);
|
|
56
|
-
if (secondFrame !== undefined)
|
|
57
|
-
cancelAnimationFrame(secondFrame);
|
|
75
|
+
cancelFrames();
|
|
58
76
|
};
|
|
59
77
|
});
|
|
60
78
|
};
|
|
@@ -69,6 +87,10 @@ export const useSlidingIndicator = (options) => {
|
|
|
69
87
|
},
|
|
70
88
|
get isReady() {
|
|
71
89
|
return isReady;
|
|
90
|
+
},
|
|
91
|
+
/** True while the indicator sits on an active item; false when no item is active. */
|
|
92
|
+
get isVisible() {
|
|
93
|
+
return isVisible;
|
|
72
94
|
}
|
|
73
95
|
};
|
|
74
96
|
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface TabBridgeOptions {
|
|
2
|
+
/** The bridge is live: the panel is open, placed and nothing above it owns Tab. */
|
|
3
|
+
isActive: () => boolean;
|
|
4
|
+
/** The element that has focus while the panel is open; `null` turns the bridge off. */
|
|
5
|
+
anchor: () => HTMLElement | null;
|
|
6
|
+
/** The panel element. */
|
|
7
|
+
panel: () => HTMLElement | null;
|
|
8
|
+
/** Limits where "after the trigger" is looked for, for a trigger inside another panel. */
|
|
9
|
+
boundary?: () => HTMLElement | undefined;
|
|
10
|
+
/** Tab went past the panel's last control and focus moved on; close the panel. */
|
|
11
|
+
onLeave: (event: KeyboardEvent) => void;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Bridges Tab between a trigger and its portaled panel. Call during component initialisation
|
|
15
|
+
* (it registers an effect). Returns whether a key press was handled, for tests and owners that
|
|
16
|
+
* want to chain their own handling.
|
|
17
|
+
*/
|
|
18
|
+
export declare function useTabBridge(options: TabBridgeOptions): {
|
|
19
|
+
handleKey: (event: KeyboardEvent) => void;
|
|
20
|
+
};
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
// Tab order for a panel rendered somewhere else in the document (a popover portaled to the end of
|
|
2
|
+
// <body>). The panel is not next to its trigger in the page, so the engine's own Tab skips it:
|
|
3
|
+
//
|
|
4
|
+
// - Tab on the open trigger enters the panel.
|
|
5
|
+
// - Tab past the panel's last control continues after the trigger and closes the panel.
|
|
6
|
+
// - Shift+Tab on the panel's first control returns to the trigger.
|
|
7
|
+
// - When nothing follows the trigger, the engine's Tab is left alone: sending focus back to the
|
|
8
|
+
// start of the panel would loop for ever. Inside a modal scope (the trigger is the last control
|
|
9
|
+
// of a dialog) it wraps to the scope's first control instead, as the scope's own Tab would.
|
|
10
|
+
//
|
|
11
|
+
// The listeners sit on the trigger and on the panel, not on the document, so they run before a
|
|
12
|
+
// surrounding modal scope's document-level Tab handling and after a control's own key handling.
|
|
13
|
+
import { on } from 'svelte/events';
|
|
14
|
+
import { composedContains, getDeepActiveElement, getTabbableAfter, getTabbableElements } from './focus.js';
|
|
15
|
+
import { findTrappingScope } from './useFocusScope.svelte.js';
|
|
16
|
+
const FOCUS_VISIBLE = { preventScroll: true, focusVisible: true };
|
|
17
|
+
/**
|
|
18
|
+
* Bridges Tab between a trigger and its portaled panel. Call during component initialisation
|
|
19
|
+
* (it registers an effect). Returns whether a key press was handled, for tests and owners that
|
|
20
|
+
* want to chain their own handling.
|
|
21
|
+
*/
|
|
22
|
+
export function useTabBridge(options) {
|
|
23
|
+
const enterPanel = (event, panel) => {
|
|
24
|
+
const first = getTabbableElements(panel)[0];
|
|
25
|
+
if (!first)
|
|
26
|
+
return;
|
|
27
|
+
event.preventDefault();
|
|
28
|
+
first.focus(FOCUS_VISIBLE);
|
|
29
|
+
};
|
|
30
|
+
const leavePanel = (event, panel, anchor) => {
|
|
31
|
+
const next = getTabbableAfter(anchor, {
|
|
32
|
+
exclude: panel,
|
|
33
|
+
boundary: options.boundary ? options.boundary() : undefined
|
|
34
|
+
});
|
|
35
|
+
let target = next;
|
|
36
|
+
if (!target) {
|
|
37
|
+
// Nothing follows. In a modal scope the page behind is inert, so the engine would leave
|
|
38
|
+
// the scope: wrap to its first control. Anywhere else the engine moves on, so Tab cannot
|
|
39
|
+
// cycle between the trigger and the panel.
|
|
40
|
+
const scope = findTrappingScope(anchor);
|
|
41
|
+
if (!scope)
|
|
42
|
+
return;
|
|
43
|
+
target =
|
|
44
|
+
getTabbableElements(scope).find((element) => !composedContains(panel, element)) ?? null;
|
|
45
|
+
if (!target)
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
event.preventDefault();
|
|
49
|
+
target.focus(FOCUS_VISIBLE);
|
|
50
|
+
options.onLeave(event);
|
|
51
|
+
};
|
|
52
|
+
const handleKey = (event) => {
|
|
53
|
+
if (event.key !== 'Tab' || event.defaultPrevented)
|
|
54
|
+
return;
|
|
55
|
+
if (event.ctrlKey || event.metaKey)
|
|
56
|
+
return;
|
|
57
|
+
if (!options.isActive())
|
|
58
|
+
return;
|
|
59
|
+
const anchor = options.anchor();
|
|
60
|
+
const panel = options.panel();
|
|
61
|
+
if (!anchor || !panel || !anchor.isConnected)
|
|
62
|
+
return;
|
|
63
|
+
const active = getDeepActiveElement(anchor.ownerDocument);
|
|
64
|
+
if (!active)
|
|
65
|
+
return;
|
|
66
|
+
if (active === anchor) {
|
|
67
|
+
if (!event.shiftKey)
|
|
68
|
+
enterPanel(event, panel);
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
if (!composedContains(panel, active))
|
|
72
|
+
return;
|
|
73
|
+
const tabbable = getTabbableElements(panel);
|
|
74
|
+
const index = active instanceof HTMLElement ? tabbable.indexOf(active) : -1;
|
|
75
|
+
if (event.shiftKey) {
|
|
76
|
+
// Back from the first control, or from the panel itself when it holds focus. Anything
|
|
77
|
+
// else is the engine's to move: an item the list does not know has a control before it.
|
|
78
|
+
if (index === 0 || active === panel) {
|
|
79
|
+
event.preventDefault();
|
|
80
|
+
anchor.focus(FOCUS_VISIBLE);
|
|
81
|
+
}
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
if (active === panel) {
|
|
85
|
+
if (tabbable.length > 0)
|
|
86
|
+
enterPanel(event, panel);
|
|
87
|
+
else
|
|
88
|
+
leavePanel(event, panel, anchor);
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
if (index >= 0 && index === tabbable.length - 1)
|
|
92
|
+
leavePanel(event, panel, anchor);
|
|
93
|
+
};
|
|
94
|
+
$effect(() => {
|
|
95
|
+
if (!options.isActive())
|
|
96
|
+
return;
|
|
97
|
+
const anchor = options.anchor();
|
|
98
|
+
const panel = options.panel();
|
|
99
|
+
if (!anchor || !panel)
|
|
100
|
+
return;
|
|
101
|
+
const offAnchor = on(anchor, 'keydown', handleKey);
|
|
102
|
+
const offPanel = on(panel, 'keydown', handleKey);
|
|
103
|
+
return () => {
|
|
104
|
+
offAnchor();
|
|
105
|
+
offPanel();
|
|
106
|
+
};
|
|
107
|
+
});
|
|
108
|
+
return { handleKey };
|
|
109
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether a value holds nothing a user entered: `null`, `undefined`, `''`, an empty array, or an
|
|
3
|
+
* array of empty slots (a date range with neither end chosen).
|
|
4
|
+
*/
|
|
5
|
+
export declare const isEmptyValue: (value: unknown) => boolean;
|
|
6
|
+
/**
|
|
7
|
+
* Structural equality: Dates by time, arrays item by item, plain objects key by key; everything
|
|
8
|
+
* else (files, blobs, class instances, primitives) by identity, with `NaN` equal to itself.
|
|
9
|
+
*/
|
|
10
|
+
export declare const deepEqual: (left: unknown, right: unknown) => boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Field value equality: two empty values are equal whatever their shape (`null`, `''`, `[]`), so
|
|
13
|
+
* clearing a field back to nothing is not a change; otherwise the values must be `deepEqual`.
|
|
14
|
+
*/
|
|
15
|
+
export declare const valuesEqual: (left: unknown, right: unknown) => boolean;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// Value equality and emptiness shared by fields, Form and registered input types. A field's
|
|
2
|
+
// "empty" is what a user sees as nothing entered: no text, no selection, no file. Equality
|
|
3
|
+
// compares what a value means rather than its identity, so a Form that writes a value back as a
|
|
4
|
+
// new array, or a parent that resets a date to an equal Date, does not read as an edit.
|
|
5
|
+
const isPlainObject = (value) => {
|
|
6
|
+
if (value === null || typeof value !== 'object')
|
|
7
|
+
return false;
|
|
8
|
+
const prototype = Object.getPrototypeOf(value);
|
|
9
|
+
return prototype === Object.prototype || prototype === null;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Whether a value holds nothing a user entered: `null`, `undefined`, `''`, an empty array, or an
|
|
13
|
+
* array of empty slots (a date range with neither end chosen).
|
|
14
|
+
*/
|
|
15
|
+
export const isEmptyValue = (value) => {
|
|
16
|
+
if (value === null || value === undefined || value === '')
|
|
17
|
+
return true;
|
|
18
|
+
if (Array.isArray(value))
|
|
19
|
+
return value.every((item) => item === null || item === undefined);
|
|
20
|
+
return false;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Structural equality: Dates by time, arrays item by item, plain objects key by key; everything
|
|
24
|
+
* else (files, blobs, class instances, primitives) by identity, with `NaN` equal to itself.
|
|
25
|
+
*/
|
|
26
|
+
export const deepEqual = (left, right) => {
|
|
27
|
+
if (Object.is(left, right))
|
|
28
|
+
return true;
|
|
29
|
+
if (left instanceof Date || right instanceof Date) {
|
|
30
|
+
return (left instanceof Date && right instanceof Date && Object.is(left.getTime(), right.getTime()));
|
|
31
|
+
}
|
|
32
|
+
if (Array.isArray(left) || Array.isArray(right)) {
|
|
33
|
+
if (!Array.isArray(left) || !Array.isArray(right) || left.length !== right.length)
|
|
34
|
+
return false;
|
|
35
|
+
return left.every((item, index) => deepEqual(item, right[index]));
|
|
36
|
+
}
|
|
37
|
+
if (isPlainObject(left) && isPlainObject(right)) {
|
|
38
|
+
const leftKeys = Object.keys(left);
|
|
39
|
+
if (leftKeys.length !== Object.keys(right).length)
|
|
40
|
+
return false;
|
|
41
|
+
return leftKeys.every((key) => Object.hasOwn(right, key) && deepEqual(left[key], right[key]));
|
|
42
|
+
}
|
|
43
|
+
return false;
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Field value equality: two empty values are equal whatever their shape (`null`, `''`, `[]`), so
|
|
47
|
+
* clearing a field back to nothing is not a change; otherwise the values must be `deepEqual`.
|
|
48
|
+
*/
|
|
49
|
+
export const valuesEqual = (left, right) => (isEmptyValue(left) && isEmptyValue(right)) || deepEqual(left, right);
|