@ryuzaki13/react-foundation-ui 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/advanced-search/index.d.ts +3 -0
- package/dist/advanced-search/index.d.ts.map +1 -0
- package/dist/advanced-search/index.js +361 -0
- package/dist/advanced-search/index.js.map +1 -0
- package/dist/advanced-search/lib/index.d.ts +2 -0
- package/dist/advanced-search/lib/index.d.ts.map +1 -0
- package/dist/advanced-search/lib/searchParts.d.ts +3 -0
- package/dist/advanced-search/lib/searchParts.d.ts.map +1 -0
- package/dist/advanced-search/model/index.d.ts +5 -0
- package/dist/advanced-search/model/index.d.ts.map +1 -0
- package/dist/advanced-search/model/types.d.ts +55 -0
- package/dist/advanced-search/model/types.d.ts.map +1 -0
- package/dist/advanced-search/model/useAdvancedSearch.d.ts +11 -0
- package/dist/advanced-search/model/useAdvancedSearch.d.ts.map +1 -0
- package/dist/advanced-search/model/useAdvancedSearchInitialSelected.d.ts +6 -0
- package/dist/advanced-search/model/useAdvancedSearchInitialSelected.d.ts.map +1 -0
- package/dist/advanced-search/model/useAdvancedSearchSelection.d.ts +13 -0
- package/dist/advanced-search/model/useAdvancedSearchSelection.d.ts.map +1 -0
- package/dist/advanced-search/ui/AdvancedSearchModal.d.ts +13 -0
- package/dist/advanced-search/ui/AdvancedSearchModal.d.ts.map +1 -0
- package/dist/advanced-search/ui/AdvancedSearchSelect.d.ts +8 -0
- package/dist/advanced-search/ui/AdvancedSearchSelect.d.ts.map +1 -0
- package/dist/advanced-search/ui/AdvancedSearchSelectUI.d.ts +9 -0
- package/dist/advanced-search/ui/AdvancedSearchSelectUI.d.ts.map +1 -0
- package/dist/advanced-search/ui/index.d.ts +2 -0
- package/dist/advanced-search/ui/index.d.ts.map +1 -0
- package/dist/badge/Badge.d.ts.map +1 -1
- package/dist/badge/index.js +1 -1
- package/dist/badge/stories/Badge.stories.js +22 -22
- package/dist/base-table/index.js +2 -2
- package/dist/base-table/lib/columnPinning.d.ts.map +1 -1
- package/dist/base-table/model/useTableColumnOrder.d.ts +1 -1
- package/dist/base-table/model/useTableColumnOrder.d.ts.map +1 -1
- package/dist/base-table/model/useTableColumnSizing.d.ts +1 -1
- package/dist/base-table/model/useTableColumnSizing.d.ts.map +1 -1
- package/dist/base-table/ui/BaseTable.d.ts +2 -2
- package/dist/base-table/ui/BaseTable.d.ts.map +1 -1
- package/dist/base-table/ui/BaseTableHeaderCell.d.ts.map +1 -1
- package/dist/base-table/ui/FormattedTableCell.d.ts.map +1 -1
- package/dist/button/index.js +7 -7
- package/dist/button/stories/Button.stories.js +1 -1
- package/dist/check-box/CheckBox.d.ts.map +1 -1
- package/dist/check-box/index.js +1 -1
- package/dist/check-box/stories/CheckBox.stories.js +25 -25
- package/dist/chunks/{BadgeList-DHW_Ktr3.js → BadgeList-DYgun2rf.js} +16 -16
- package/dist/chunks/BadgeList-DYgun2rf.js.map +1 -0
- package/dist/chunks/{Button-BZ_b-Kin.js → Button-CCWuggdA.js} +16 -16
- package/dist/chunks/{Button-BZ_b-Kin.js.map → Button-CCWuggdA.js.map} +1 -1
- package/dist/chunks/{CalendarView-B75faWIU.js → CalendarView-DjeTJkTT.js} +149 -149
- package/dist/chunks/{CalendarView-B75faWIU.js.map → CalendarView-DjeTJkTT.js.map} +1 -1
- package/dist/chunks/{CheckBox-Cck5w1Ud.js → CheckBox-BowNqqd3.js} +13 -13
- package/dist/chunks/CheckBox-BowNqqd3.js.map +1 -0
- package/dist/chunks/{DateInput-CINDYueM.js → DateInput--tfofQ2x.js} +68 -68
- package/dist/chunks/DateInput--tfofQ2x.js.map +1 -0
- package/dist/chunks/{DateRangePresetSelect-CyzGMvVp.js → DateRangePresetSelect-UgsfaOeM.js} +22 -22
- package/dist/chunks/{DateRangePresetSelect-CyzGMvVp.js.map → DateRangePresetSelect-UgsfaOeM.js.map} +1 -1
- package/dist/chunks/Detail-DHDMsg8q.js +80 -0
- package/dist/chunks/{Detail-DKolHye4.js.map → Detail-DHDMsg8q.js.map} +1 -1
- package/dist/chunks/{Dialog-BPS4BeWZ.js → Dialog-CFIvGxER.js} +8 -8
- package/dist/chunks/Dialog-CFIvGxER.js.map +1 -0
- package/dist/chunks/{DisclosureGroup-0BtaXO54.js → DisclosureGroup-CfRTkl6Z.js} +11 -11
- package/dist/chunks/DisclosureGroup-CfRTkl6Z.js.map +1 -0
- package/dist/chunks/{DropZone-hf7Em__0.js → DropZone-kJfbZU5g.js} +22 -22
- package/dist/chunks/DropZone-kJfbZU5g.js.map +1 -0
- package/dist/chunks/{DropdownMenu-Ds-trH4M.js → DropdownMenu-DQeR3y7M.js} +138 -138
- package/dist/chunks/DropdownMenu-DQeR3y7M.js.map +1 -0
- package/dist/chunks/{Flex-DbBdq336.js → Flex-DUYSL5TE.js} +16 -16
- package/dist/chunks/{Flex-DbBdq336.js.map → Flex-DUYSL5TE.js.map} +1 -1
- package/dist/chunks/Grid-ByIIytjh.js.map +1 -1
- package/dist/chunks/{Input-Ce2HXBUc.js → Input-BmjlpA09.js} +76 -76
- package/dist/chunks/Input-BmjlpA09.js.map +1 -0
- package/dist/chunks/{InputDateTime-DPtY_4Od.js → InputDateTime-CxfAFe2L.js} +56 -56
- package/dist/chunks/{InputDateTime-DPtY_4Od.js.map → InputDateTime-CxfAFe2L.js.map} +1 -1
- package/dist/chunks/{InputFile-ga5yJmdZ.js → InputFile-CyZu__B_.js} +17 -17
- package/dist/chunks/InputFile-CyZu__B_.js.map +1 -0
- package/dist/chunks/{InputFiles-Or2Nvfgk.js → InputFiles-CrTJV27R.js} +36 -36
- package/dist/chunks/InputFiles-CrTJV27R.js.map +1 -0
- package/dist/chunks/{InputImage-BeA5WJz1.js → InputImage-Cw8rPYQu.js} +18 -18
- package/dist/chunks/{InputImage-BeA5WJz1.js.map → InputImage-Cw8rPYQu.js.map} +1 -1
- package/dist/chunks/{LabeledExpandableActionPanel-Bx-DWmYz.js → LabeledExpandableActionPanel-D3kUvmFH.js} +25 -25
- package/dist/chunks/LabeledExpandableActionPanel-D3kUvmFH.js.map +1 -0
- package/dist/chunks/Listbox-BZlp5qHz.js +81 -0
- package/dist/chunks/Listbox-BZlp5qHz.js.map +1 -0
- package/dist/chunks/{MultiSelect-CBqTylqO.js → MultiSelect-D1XYuwH1.js} +113 -113
- package/dist/chunks/{MultiSelect-CBqTylqO.js.map → MultiSelect-D1XYuwH1.js.map} +1 -1
- package/dist/chunks/{NotificationsHost-BQc-zOr2.js → NotificationsHost-_icJx4xR.js} +34 -34
- package/dist/chunks/NotificationsHost-_icJx4xR.js.map +1 -0
- package/dist/chunks/{PresetRangeDateInput-YBQm_4Fb.js → PresetRangeDateInput-CapirptQ.js} +11 -11
- package/dist/chunks/{PresetRangeDateInput-YBQm_4Fb.js.map → PresetRangeDateInput-CapirptQ.js.map} +1 -1
- package/dist/chunks/{RadioButton-DJp31HFR.js → RadioButton-D0uA0rX_.js} +13 -13
- package/dist/chunks/RadioButton-D0uA0rX_.js.map +1 -0
- package/dist/chunks/RadioGroup-B9XjkcOy.js +121 -0
- package/dist/chunks/{RadioGroup-BAhN1d1X.js.map → RadioGroup-B9XjkcOy.js.map} +1 -1
- package/dist/chunks/{Select-B7k_8_Lf.js → Select-CXeVjVKA.js} +11 -11
- package/dist/chunks/Select-CXeVjVKA.js.map +1 -0
- package/dist/chunks/{SerializableSelect-53uNCqdE.js → SerializableSelect-DkYeJtAO.js} +2 -2
- package/dist/chunks/{SerializableSelect-53uNCqdE.js.map → SerializableSelect-DkYeJtAO.js.map} +1 -1
- package/dist/chunks/{SingleDateTimeInput-CwvIbwje.js → SingleDateTimeInput-BmeuVGQT.js} +86 -86
- package/dist/chunks/SingleDateTimeInput-BmeuVGQT.js.map +1 -0
- package/dist/chunks/{Splitter-NjNFuEq4.js → Splitter-BFkVGVRb.js} +32 -32
- package/dist/chunks/{Splitter-NjNFuEq4.js.map → Splitter-BFkVGVRb.js.map} +1 -1
- package/dist/chunks/StateSelect-1jH3uLz9.js +78 -0
- package/dist/chunks/{StateSelect-D0wuUdT9.js.map → StateSelect-1jH3uLz9.js.map} +1 -1
- package/dist/chunks/{Switch-B476FBUD.js → Switch-B57Qmy1z.js} +19 -19
- package/dist/chunks/Switch-B57Qmy1z.js.map +1 -0
- package/dist/chunks/{TextEditorLexicalClient-DcixYuo4.js → TextEditorLexicalClient-DRhAswpP.js} +204 -204
- package/dist/chunks/{TextEditorLexicalClient-DcixYuo4.js.map → TextEditorLexicalClient-DRhAswpP.js.map} +1 -1
- package/dist/chunks/{Textarea-DeJJjjkI.js → Textarea-C9UdUueF.js} +2 -2
- package/dist/chunks/{Textarea-DeJJjjkI.js.map → Textarea-C9UdUueF.js.map} +1 -1
- package/dist/chunks/{TimePanel-_kF2RtHk.js → TimePanel-b4saqoUY.js} +27 -27
- package/dist/chunks/TimePanel-b4saqoUY.js.map +1 -0
- package/dist/chunks/{Toggle-C_fE-bkM.js → Toggle-DVqOQXmt.js} +18 -18
- package/dist/chunks/{Toggle-C_fE-bkM.js.map → Toggle-DVqOQXmt.js.map} +1 -1
- package/dist/chunks/{TreeMultiSelect-DRYNx7u5.js → TreeMultiSelect-CfQhlfnC.js} +6 -6
- package/dist/chunks/{TreeMultiSelect-DRYNx7u5.js.map → TreeMultiSelect-CfQhlfnC.js.map} +1 -1
- package/dist/chunks/{TreePickerBase-DYzTsSBQ.js → TreePickerBase-BBUOWsSu.js} +154 -154
- package/dist/chunks/TreePickerBase-BBUOWsSu.js.map +1 -0
- package/dist/chunks/{TreeSelect-DGLDu6qc.js → TreeSelect-2wUXs90E.js} +6 -6
- package/dist/chunks/{TreeSelect-DGLDu6qc.js.map → TreeSelect-2wUXs90E.js.map} +1 -1
- package/dist/chunks/base-table-CoQlKABk.js +514 -0
- package/dist/chunks/base-table-CoQlKABk.js.map +1 -0
- package/dist/chunks/{floating-arrow-CdRV69sg.js → floating-arrow-BE-z4QkE.js} +7 -7
- package/dist/chunks/{floating-arrow-CdRV69sg.js.map → floating-arrow-BE-z4QkE.js.map} +1 -1
- package/dist/chunks/input-search-Dw4rnJBq.js +30 -0
- package/dist/chunks/input-search-Dw4rnJBq.js.map +1 -0
- package/dist/chunks/{layout-picker-BA9vA8JI.js → layout-picker-MWaImn3L.js} +34 -34
- package/dist/chunks/layout-picker-MWaImn3L.js.map +1 -0
- package/dist/chunks/{misc-DrmMj8GO.js → misc-DoqZBMof.js} +100 -100
- package/dist/chunks/misc-DoqZBMof.js.map +1 -0
- package/dist/chunks/{modal-DqVcZws_.js → modal-B3HY3laL.js} +40 -40
- package/dist/chunks/modal-B3HY3laL.js.map +1 -0
- package/dist/chunks/multi-select-BzYIviCU.js +1305 -0
- package/dist/chunks/multi-select-BzYIviCU.js.map +1 -0
- package/dist/chunks/{picker-Cj4RnJh6.js → picker-Dg55Ss-B.js} +73 -73
- package/dist/chunks/picker-Dg55Ss-B.js.map +1 -0
- package/dist/chunks/{popover-C79P5bm2.js → popover-xJJqy1v6.js} +52 -52
- package/dist/chunks/popover-xJJqy1v6.js.map +1 -0
- package/dist/chunks/{separator-CIqnk2z9.js → separator-B72Aq-6a.js} +2 -2
- package/dist/chunks/{separator-CIqnk2z9.js.map → separator-B72Aq-6a.js.map} +1 -1
- package/dist/chunks/{slider-34wxzKkG.js → slider-CFKsfxFp.js} +83 -83
- package/dist/chunks/slider-CFKsfxFp.js.map +1 -0
- package/dist/chunks/sortable-DcTIAbjD.js +185 -0
- package/dist/chunks/sortable-DcTIAbjD.js.map +1 -0
- package/dist/chunks/{table-BYA0hCj7.js → table-Dc3AqMzP.js} +21 -21
- package/dist/chunks/table-Dc3AqMzP.js.map +1 -0
- package/dist/chunks/{table-column-interactions-DPyJDD7P.js → table-column-interactions-6RGjmiI5.js} +24 -24
- package/dist/chunks/{table-column-interactions-DPyJDD7P.js.map → table-column-interactions-6RGjmiI5.js.map} +1 -1
- package/dist/chunks/{tabs-CjU2KCgs.js → tabs-DlnVVMJl.js} +96 -96
- package/dist/chunks/{tabs-CjU2KCgs.js.map → tabs-DlnVVMJl.js.map} +1 -1
- package/dist/chunks/{toolbar-C-Ziw_Uh.js → toolbar-BCZNdRXM.js} +2 -2
- package/dist/chunks/{toolbar-C-Ziw_Uh.js.map → toolbar-BCZNdRXM.js.map} +1 -1
- package/dist/chunks/{wheel-picker-DUHGy7wE.js → wheel-picker-FS58cRsQ.js} +23 -23
- package/dist/chunks/{wheel-picker-DUHGy7wE.js.map → wheel-picker-FS58cRsQ.js.map} +1 -1
- package/dist/context-menu/components/MenuContent.d.ts.map +1 -1
- package/dist/context-menu/components/MenuContext.d.ts.map +1 -1
- package/dist/context-menu/components/MenuRoot.d.ts.map +1 -1
- package/dist/context-menu/components/RadialMenuContent.d.ts.map +1 -1
- package/dist/context-menu/index.js +1 -1
- package/dist/context-menu/stories/ContextMenu.stories.js +45 -45
- package/dist/date-input/index.js +2 -2
- package/dist/date-input/lib/types.d.ts.map +1 -1
- package/dist/date-input/stories/DateInput.stories.js +2 -2
- package/dist/date-input/ui/CalendarView.d.ts.map +1 -1
- package/dist/date-input/ui/DateInput.d.ts.map +1 -1
- package/dist/date-range-preset-select/index.js +1 -1
- package/dist/date-range-preset-select/stories/DateRangePresetSelect.stories.js +8 -8
- package/dist/date-time-input/index.js +1 -1
- package/dist/date-time-input/lib/dateTimeValue.d.ts.map +1 -1
- package/dist/date-time-input/stories/SingleDateTimeInput.stories.js +38 -38
- package/dist/date-time-input/stories/TimePanel.stories.js +9 -9
- package/dist/date-time-input/ui/SingleDateTimeInput.d.ts.map +1 -1
- package/dist/detail/index.js +1 -1
- package/dist/detail/stories/Detail.stories.js +1 -1
- package/dist/dialog/Dialog.d.ts.map +1 -1
- package/dist/dialog/index.js +1 -1
- package/dist/dialog/stories/Dialog.stories.js +16 -16
- package/dist/disclosure/Disclosure.d.ts.map +1 -1
- package/dist/disclosure/index.js +1 -1
- package/dist/disclosure/stories/Disclosure.stories.js +1 -1
- package/dist/drop-zone/DropZone.d.ts.map +1 -1
- package/dist/drop-zone/index.js +1 -1
- package/dist/drop-zone/stories/DropZone.stories.d.ts.map +1 -1
- package/dist/drop-zone/stories/DropZone.stories.js +14 -14
- package/dist/drop-zone/stories/DropZone.stories.js.map +1 -1
- package/dist/errors/ErrorDisplay.d.ts.map +1 -1
- package/dist/errors/index.js +47 -47
- package/dist/errors/index.js.map +1 -1
- package/dist/expandable-action-panel/ExpandableActionPanel.d.ts.map +1 -1
- package/dist/expandable-action-panel/index.js +1 -1
- package/dist/expandable-action-panel/stories/ExpandableActionPanel.stories.js +28 -28
- package/dist/flex/index.js +2 -2
- package/dist/flex/stories/Flex.stories.js +2 -2
- package/dist/floating-arrow/index.js +1 -1
- package/dist/fullscreen-portal/index.js +6 -6
- package/dist/grid/stories/Grid.stories.js +1 -1
- package/dist/image/index.js +123 -123
- package/dist/image/index.js.map +1 -1
- package/dist/image/ui/ImageSelection.d.ts.map +1 -1
- package/dist/input/Input.d.ts.map +1 -1
- package/dist/input/index.js +1 -1
- package/dist/input/stories/Input.stories.js +11 -11
- package/dist/input-date-time/index.js +1 -1
- package/dist/input-date-time/stories/InputDateTime.stories.js +11 -11
- package/dist/input-file/InputFile.d.ts.map +1 -1
- package/dist/input-file/index.js +1 -1
- package/dist/input-file/stories/InputFile.stories.d.ts.map +1 -1
- package/dist/input-file/stories/InputFile.stories.js +9 -9
- package/dist/input-file/stories/InputFile.stories.js.map +1 -1
- package/dist/input-files/InputFilesList.d.ts.map +1 -1
- package/dist/input-files/index.js +1 -1
- package/dist/input-files/stories/InputFiles.stories.d.ts +1 -1
- package/dist/input-files/stories/InputFiles.stories.d.ts.map +1 -1
- package/dist/input-files/stories/InputFiles.stories.js +9 -9
- package/dist/input-files/stories/InputFiles.stories.js.map +1 -1
- package/dist/input-image/index.js +1 -1
- package/dist/input-image/stories/InputImage.stories.d.ts.map +1 -1
- package/dist/input-image/stories/InputImage.stories.js +15 -15
- package/dist/input-image/stories/InputImage.stories.js.map +1 -1
- package/dist/input-search/index.js +2 -30
- package/dist/layout-picker/index.js +1 -1
- package/dist/layout-picker/stories/LayoutPicker.stories.js +52 -52
- package/dist/layout-picker/ui/LayoutPicker.d.ts.map +1 -1
- package/dist/list/List.d.ts.map +1 -1
- package/dist/list/index.js +30 -30
- package/dist/list/index.js.map +1 -1
- package/dist/listbox/Listbox.d.ts.map +1 -1
- package/dist/listbox/index.js +1 -1
- package/dist/listbox/stories/Listbox.stories.js +19 -19
- package/dist/misc/CopyTextWrapper.d.ts.map +1 -1
- package/dist/misc/OneStepScroller.d.ts.map +1 -1
- package/dist/misc/StateIcon.d.ts.map +1 -1
- package/dist/misc/index.js +1 -1
- package/dist/modal/Modal.d.ts +5 -1
- package/dist/modal/Modal.d.ts.map +1 -1
- package/dist/modal/index.js +1 -1
- package/dist/modal/stories/Modal.stories.js +55 -55
- package/dist/multi-select/index.js +3 -35
- package/dist/multi-select/model/useODataMultiSelect.d.ts +23 -0
- package/dist/multi-select/model/useODataMultiSelect.d.ts.map +1 -0
- package/dist/multi-select/ui/MultiSelect.d.ts +1 -1
- package/dist/multi-select/ui/MultiSelect.d.ts.map +1 -1
- package/dist/multi-select/ui/ODataDependentMultiSelect.d.ts +20 -0
- package/dist/multi-select/ui/ODataDependentMultiSelect.d.ts.map +1 -0
- package/dist/multi-select/ui/ODataDependentSegmentMultiSelect.d.ts +21 -0
- package/dist/multi-select/ui/ODataDependentSegmentMultiSelect.d.ts.map +1 -0
- package/dist/multi-select/ui/ODataMultiSelect.d.ts +7 -0
- package/dist/multi-select/ui/ODataMultiSelect.d.ts.map +1 -0
- package/dist/multi-select/ui/SerializableMultiSelect.d.ts.map +1 -1
- package/dist/multi-select/ui/index.d.ts +3 -0
- package/dist/multi-select/ui/index.d.ts.map +1 -1
- package/dist/multi-select/ui/stories/MultiSelect.stories.js +17 -17
- package/dist/multi-select/ui/stories/ODataMultiSelect.stories.d.ts +44 -0
- package/dist/multi-select/ui/stories/ODataMultiSelect.stories.d.ts.map +1 -0
- package/dist/notifications/index.js +1 -1
- package/dist/notifications/model/NotificationsProvider.d.ts.map +1 -1
- package/dist/notifications/ui/NotificationsHost.d.ts.map +1 -1
- package/dist/notifications/ui/stories/NotificationsHost.stories.js +59 -59
- package/dist/period-select/PeriodSelect.d.ts +1 -1
- package/dist/period-select/PeriodSelect.d.ts.map +1 -1
- package/dist/period-select/index.js +20 -20
- package/dist/period-select/index.js.map +1 -1
- package/dist/period-select/lib/periodSelect.d.ts.map +1 -1
- package/dist/period-select/stories/PeriodSelect.stories.d.ts.map +1 -1
- package/dist/period-select/stories/PeriodSelect.stories.js +17 -17
- package/dist/period-select/stories/PeriodSelect.stories.js.map +1 -1
- package/dist/picker/PickerPopup.d.ts.map +1 -1
- package/dist/picker/PickerTriggerActions.d.ts.map +1 -1
- package/dist/picker/index.js +1 -1
- package/dist/picker/model/usePickerFloatingListbox.d.ts.map +1 -1
- package/dist/popover/FloatingPopover.d.ts.map +1 -1
- package/dist/popover/components/PopoverContent.d.ts.map +1 -1
- package/dist/popover/components/PopoverContext.d.ts.map +1 -1
- package/dist/popover/index.js +1 -1
- package/dist/popover/stories/Popover.stories.js +16 -16
- package/dist/preset-range-date-input/index.js +1 -1
- package/dist/preset-range-date-input/ui/stories/PresetRangeDateInput.stories.js +9 -9
- package/dist/preset-select/index.js +1 -1
- package/dist/radio-button/RadioButton.d.ts.map +1 -1
- package/dist/radio-button/index.js +1 -1
- package/dist/radio-button/stories/RadioButton.stories.js +11 -11
- package/dist/radio-group/index.js +1 -1
- package/dist/radio-group/stories/RadioGroup.stories.js +21 -21
- package/dist/select/ODataSelect.d.ts +9 -0
- package/dist/select/ODataSelect.d.ts.map +1 -0
- package/dist/select/Select.d.ts.map +1 -1
- package/dist/select/index.js +2 -2
- package/dist/select/model/useODataSelect.d.ts +25 -0
- package/dist/select/model/useODataSelect.d.ts.map +1 -0
- package/dist/select/model/useODataSelectBase.d.ts +24 -0
- package/dist/select/model/useODataSelectBase.d.ts.map +1 -0
- package/dist/select/stories/ODataSelect.stories.d.ts +46 -0
- package/dist/select/stories/ODataSelect.stories.d.ts.map +1 -0
- package/dist/select/stories/Select.stories.js +23 -23
- package/dist/select/stories/SerializableSelect.stories.js +22 -22
- package/dist/select/stories/odataStoryFixtures.d.ts +35 -0
- package/dist/select/stories/odataStoryFixtures.d.ts.map +1 -0
- package/dist/separator/index.js +1 -1
- package/dist/simple-table/index.js +5 -5
- package/dist/simple-table/index.js.map +1 -1
- package/dist/slider/Slider.d.ts.map +1 -1
- package/dist/slider/index.js +1 -1
- package/dist/slider/stories/Slider.stories.js +32 -32
- package/dist/slider/stories/SliderInput.stories.js +39 -39
- package/dist/sortable/Sortable.d.ts.map +1 -1
- package/dist/sortable/SortableDragHandle.d.ts.map +1 -1
- package/dist/sortable/index.js +1 -1
- package/dist/sortable/stories/Sortable.stories.js +23 -23
- package/dist/splitter/index.js +1 -1
- package/dist/splitter/stories/Splitter.stories.js +1 -1
- package/dist/state-select/index.js +1 -1
- package/dist/state-select/stories/StateSelect.stories.d.ts.map +1 -1
- package/dist/state-select/stories/StateSelect.stories.js +23 -23
- package/dist/state-select/stories/StateSelect.stories.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/switch/Switch.d.ts.map +1 -1
- package/dist/switch/index.js +1 -1
- package/dist/switch/stories/Switch.stories.js +11 -11
- package/dist/table/Table.d.ts +1 -1
- package/dist/table/Table.d.ts.map +1 -1
- package/dist/table/index.js +1 -1
- package/dist/table/stories/Table.stories.d.ts +155 -0
- package/dist/table/stories/Table.stories.d.ts.map +1 -0
- package/dist/table-column-interactions/TableHeaderInteractionCell.d.ts.map +1 -1
- package/dist/table-column-interactions/index.js +1 -1
- package/dist/table-sorting/index.js +1 -1
- package/dist/tabs/index.js +1 -1
- package/dist/tabs/stories/Tabs.stories.d.ts.map +1 -1
- package/dist/tabs/stories/Tabs.stories.js +39 -39
- package/dist/tabs/stories/Tabs.stories.js.map +1 -1
- package/dist/text/TextOverflow.d.ts.map +1 -1
- package/dist/text/index.js +20 -20
- package/dist/text/index.js.map +1 -1
- package/dist/text-editor/TextEditorLexicalClient.d.ts.map +1 -1
- package/dist/text-editor/index.js +3 -3
- package/dist/text-editor/toolbar/index.js +1 -1
- package/dist/textarea/index.js +1 -1
- package/dist/textarea/stories/Textarea.stories.js +8 -8
- package/dist/three-scene/index.js +7 -7
- package/dist/toggle/index.js +1 -1
- package/dist/toggle/stories/Toggle.stories.js +7 -7
- package/dist/toolbar/index.js +16 -16
- package/dist/tree/index.js +24 -24
- package/dist/tree-select/ODataTreeMultiSelect.d.ts +12 -0
- package/dist/tree-select/ODataTreeMultiSelect.d.ts.map +1 -0
- package/dist/tree-select/ODataTreeSelect.d.ts +13 -0
- package/dist/tree-select/ODataTreeSelect.d.ts.map +1 -0
- package/dist/tree-select/TreeNodeContent.d.ts.map +1 -1
- package/dist/tree-select/TreePickerBase.d.ts.map +1 -1
- package/dist/tree-select/index.js +2 -2
- package/dist/tree-select/model/buildODataTreeNodes.d.ts +12 -0
- package/dist/tree-select/model/buildODataTreeNodes.d.ts.map +1 -0
- package/dist/tree-select/model/resolveOrderedTreeSegmentItems.d.ts +4 -0
- package/dist/tree-select/model/resolveOrderedTreeSegmentItems.d.ts.map +1 -0
- package/dist/tree-select/model/useODataTreeData.d.ts +11 -0
- package/dist/tree-select/model/useODataTreeData.d.ts.map +1 -0
- package/dist/tree-select/stories/ODataTreeMultiSelect.stories.d.ts +55 -0
- package/dist/tree-select/stories/ODataTreeMultiSelect.stories.d.ts.map +1 -0
- package/dist/tree-select/stories/ODataTreeSelect.stories.d.ts +54 -0
- package/dist/tree-select/stories/ODataTreeSelect.stories.d.ts.map +1 -0
- package/dist/tree-select/stories/TreeMultiSelect.stories.js +9 -9
- package/dist/tree-select/stories/TreeSelect.stories.js +9 -9
- package/dist/tree-table/TreeTable.d.ts +1 -1
- package/dist/tree-table/TreeTable.d.ts.map +1 -1
- package/dist/tree-table/index.js +32 -32
- package/dist/tree-table/index.js.map +1 -1
- package/dist/tree-table/stories/TreeTable.stories.d.ts +158 -0
- package/dist/tree-table/stories/TreeTable.stories.d.ts.map +1 -0
- package/dist/wheel-picker/index.js +1 -1
- package/package.json +15 -4
- package/dist/chunks/BadgeList-DHW_Ktr3.js.map +0 -1
- package/dist/chunks/CheckBox-Cck5w1Ud.js.map +0 -1
- package/dist/chunks/DateInput-CINDYueM.js.map +0 -1
- package/dist/chunks/Detail-DKolHye4.js +0 -80
- package/dist/chunks/Dialog-BPS4BeWZ.js.map +0 -1
- package/dist/chunks/DisclosureGroup-0BtaXO54.js.map +0 -1
- package/dist/chunks/DropZone-hf7Em__0.js.map +0 -1
- package/dist/chunks/DropdownMenu-Ds-trH4M.js.map +0 -1
- package/dist/chunks/Input-Ce2HXBUc.js.map +0 -1
- package/dist/chunks/InputFile-ga5yJmdZ.js.map +0 -1
- package/dist/chunks/InputFiles-Or2Nvfgk.js.map +0 -1
- package/dist/chunks/LabeledExpandableActionPanel-Bx-DWmYz.js.map +0 -1
- package/dist/chunks/Listbox-CY1wQOCP.js +0 -81
- package/dist/chunks/Listbox-CY1wQOCP.js.map +0 -1
- package/dist/chunks/NotificationsHost-BQc-zOr2.js.map +0 -1
- package/dist/chunks/RadioButton-DJp31HFR.js.map +0 -1
- package/dist/chunks/RadioGroup-BAhN1d1X.js +0 -121
- package/dist/chunks/Select-B7k_8_Lf.js.map +0 -1
- package/dist/chunks/SingleDateTimeInput-CwvIbwje.js.map +0 -1
- package/dist/chunks/StateSelect-D0wuUdT9.js +0 -78
- package/dist/chunks/Switch-B476FBUD.js.map +0 -1
- package/dist/chunks/TimePanel-_kF2RtHk.js.map +0 -1
- package/dist/chunks/TreePickerBase-DYzTsSBQ.js.map +0 -1
- package/dist/chunks/base-table-DVje02Zi.js +0 -514
- package/dist/chunks/base-table-DVje02Zi.js.map +0 -1
- package/dist/chunks/layout-picker-BA9vA8JI.js.map +0 -1
- package/dist/chunks/misc-DrmMj8GO.js.map +0 -1
- package/dist/chunks/modal-DqVcZws_.js.map +0 -1
- package/dist/chunks/picker-Cj4RnJh6.js.map +0 -1
- package/dist/chunks/popover-C79P5bm2.js.map +0 -1
- package/dist/chunks/slider-34wxzKkG.js.map +0 -1
- package/dist/chunks/sortable-CwDHC3CA.js +0 -185
- package/dist/chunks/sortable-CwDHC3CA.js.map +0 -1
- package/dist/chunks/table-BYA0hCj7.js.map +0 -1
- package/dist/input-search/index.js.map +0 -1
- package/dist/multi-select/index.js.map +0 -1
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { n as e, r as t } from "./popover-
|
|
1
|
+
import { n as e, r as t } from "./popover-xJJqy1v6.js";
|
|
2
2
|
import { t as n } from "./ui.module-BisoTevy.js";
|
|
3
|
-
import { a as r, c as i, o as a, r as o } from "./Input-
|
|
4
|
-
import { l as s } from "./picker-
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
3
|
+
import { a as r, c as i, o as a, r as o } from "./Input-BmjlpA09.js";
|
|
4
|
+
import { l as s } from "./picker-Dg55Ss-B.js";
|
|
5
|
+
import { useCallback as c, useEffect as l, useEffectEvent as u, useMemo as d, useRef as f, useState as p } from "react";
|
|
6
|
+
import { cn as ee } from "@ryuzaki13/react-foundation-lib/utils";
|
|
7
|
+
import { toFiniteNumber as m } from "@ryuzaki13/react-foundation-lib/formatters";
|
|
8
|
+
import { Fragment as h, jsx as g, jsxs as _ } from "react/jsx-runtime";
|
|
9
9
|
import { findClosestNumberScaleMark as v, findClosestNumberScaleMarkByPercent as y, getNumberScaleMarkPercent as b, offsetNumberScaleValue as x, percentToNumberScaleValue as S, prepareNumberScaleMarks as C, resolveNumberScaleBounds as w, snapNumberScaleValue as T, snapNumberScaleValueToStep as E, valueToNumberScalePercent as D } from "@ryuzaki13/react-foundation-lib/number-scale";
|
|
10
10
|
import "@ryuzaki13/react-foundation-lib/range-output";
|
|
11
11
|
//#region src/slider/lib/sliderMath.ts
|
|
@@ -174,32 +174,32 @@ function ie(e, t) {
|
|
|
174
174
|
return t.find((t) => t.value === e)?.label ?? String(e);
|
|
175
175
|
}
|
|
176
176
|
function ae(e) {
|
|
177
|
-
return typeof e == "string" || typeof e == "number" ? /* @__PURE__ */
|
|
177
|
+
return typeof e == "string" || typeof e == "number" ? /* @__PURE__ */ g("span", {
|
|
178
178
|
className: "textNoWrap",
|
|
179
179
|
children: e
|
|
180
180
|
}) : e;
|
|
181
181
|
}
|
|
182
182
|
function G(t) {
|
|
183
|
-
let { min: n, max: r, step: o, marks: s, marksPosition:
|
|
183
|
+
let { min: n, max: r, step: o, marks: s, marksPosition: c = "value", marksDisplay: u = "compact", className: m, error: h, onClearError: v, label: y, description: b, disabled: C, size: T } = t, { min: E, max: D } = d(() => w(n, r), [n, r]), M = d(() => O(s, E, D), [
|
|
184
184
|
s,
|
|
185
185
|
E,
|
|
186
186
|
D
|
|
187
|
-
]), P =
|
|
187
|
+
]), P = d(() => ({
|
|
188
188
|
min: E,
|
|
189
189
|
max: D,
|
|
190
190
|
step: o,
|
|
191
191
|
marks: M,
|
|
192
|
-
marksPosition:
|
|
192
|
+
marksPosition: c
|
|
193
193
|
}), [
|
|
194
194
|
E,
|
|
195
195
|
D,
|
|
196
196
|
o,
|
|
197
197
|
M,
|
|
198
|
-
|
|
199
|
-
]), F = t.mode === "range", I = F ? void 0 : N(t.value, P), L = F ? R(t.value, P) : void 0, z = F ? te(t.value, P) : void 0, G = F ? z : [I], K = H(F ? z : I, P), q =
|
|
198
|
+
c
|
|
199
|
+
]), F = t.mode === "range", I = F ? void 0 : N(t.value, P), L = F ? R(t.value, P) : void 0, z = F ? te(t.value, P) : void 0, G = F ? z : [I], K = H(F ? z : I, P), q = f(null), J = f([]), Y = f(null), X = f(null), [oe, Z] = p(null), { controlId: Q, labelId: se, descriptionId: ce, errorId: le, describedBy: ue } = i({
|
|
200
200
|
hasLabel: y != null,
|
|
201
201
|
hasDescription: !!b,
|
|
202
|
-
hasError: !!
|
|
202
|
+
hasError: !!h
|
|
203
203
|
}), de = (e) => {
|
|
204
204
|
C || t.mode !== "single" || t.value !== void 0 && t.value === e || (t.onChange(e), v?.());
|
|
205
205
|
}, fe = (e) => {
|
|
@@ -218,10 +218,10 @@ function G(t) {
|
|
|
218
218
|
if (!t) return E;
|
|
219
219
|
let n = (e - t.left) / t.width * 100;
|
|
220
220
|
return (M.length > 0 ? j(n, P) : void 0)?.value ?? S(n, E, D);
|
|
221
|
-
}, me =
|
|
222
|
-
|
|
221
|
+
}, me = f($), he = f(pe);
|
|
222
|
+
l(() => {
|
|
223
223
|
me.current = $, he.current = pe;
|
|
224
|
-
}),
|
|
224
|
+
}), l(() => {
|
|
225
225
|
let e = (e) => {
|
|
226
226
|
X.current !== null && e && e.pointerId !== X.current || (X.current = null, Y.current = null, Z(null));
|
|
227
227
|
}, t = (e) => {
|
|
@@ -266,31 +266,31 @@ function G(t) {
|
|
|
266
266
|
}
|
|
267
267
|
return ie(e, M);
|
|
268
268
|
};
|
|
269
|
-
return /* @__PURE__ */
|
|
269
|
+
return /* @__PURE__ */ g(a, {
|
|
270
270
|
label: y,
|
|
271
271
|
description: b,
|
|
272
272
|
disabled: C,
|
|
273
|
-
className:
|
|
273
|
+
className: m,
|
|
274
274
|
size: T,
|
|
275
|
-
error:
|
|
275
|
+
error: h,
|
|
276
276
|
controlId: Q,
|
|
277
277
|
labelId: se,
|
|
278
278
|
descriptionId: ce,
|
|
279
279
|
errorId: le,
|
|
280
|
-
children: /* @__PURE__ */
|
|
280
|
+
children: /* @__PURE__ */ _("div", {
|
|
281
281
|
id: Q,
|
|
282
|
-
className:
|
|
283
|
-
children: [/* @__PURE__ */
|
|
282
|
+
className: ee(U.slider, u === "compact" && U.sliderCompact),
|
|
283
|
+
children: [/* @__PURE__ */ g("div", {
|
|
284
284
|
className: U.trackShell,
|
|
285
|
-
children: /* @__PURE__ */
|
|
285
|
+
children: /* @__PURE__ */ _("div", {
|
|
286
286
|
ref: q,
|
|
287
287
|
"data-slot": "track",
|
|
288
288
|
className: U.track,
|
|
289
289
|
role: "presentation",
|
|
290
290
|
onPointerDown: _e,
|
|
291
291
|
children: [
|
|
292
|
-
/* @__PURE__ */
|
|
293
|
-
/* @__PURE__ */
|
|
292
|
+
/* @__PURE__ */ g("div", { className: U.rail }),
|
|
293
|
+
/* @__PURE__ */ g("div", {
|
|
294
294
|
"data-slot": "fill",
|
|
295
295
|
className: U.fill,
|
|
296
296
|
style: {
|
|
@@ -298,13 +298,13 @@ function G(t) {
|
|
|
298
298
|
width: `${K.endPercent - K.startPercent}%`
|
|
299
299
|
}
|
|
300
300
|
}),
|
|
301
|
-
|
|
301
|
+
u === "compact" && M.map((t) => {
|
|
302
302
|
let n = k(t, M, P), r = F ? t.value >= z[0] && t.value <= z[1] : t.value <= I;
|
|
303
|
-
return /* @__PURE__ */
|
|
303
|
+
return /* @__PURE__ */ g(e, {
|
|
304
304
|
tooltip: !0,
|
|
305
305
|
placement: "top",
|
|
306
306
|
content: ae(t.label),
|
|
307
|
-
children: /* @__PURE__ */
|
|
307
|
+
children: /* @__PURE__ */ g("button", {
|
|
308
308
|
type: "button",
|
|
309
309
|
"data-slot": "mark",
|
|
310
310
|
"data-active": r ? "" : void 0,
|
|
@@ -313,7 +313,7 @@ function G(t) {
|
|
|
313
313
|
"aria-label": t.ariaLabel,
|
|
314
314
|
disabled: C,
|
|
315
315
|
onClick: () => be(t.value),
|
|
316
|
-
children: /* @__PURE__ */
|
|
316
|
+
children: /* @__PURE__ */ g("span", {
|
|
317
317
|
className: U.markDot,
|
|
318
318
|
"aria-hidden": "true"
|
|
319
319
|
})
|
|
@@ -322,13 +322,13 @@ function G(t) {
|
|
|
322
322
|
}),
|
|
323
323
|
G.map((t, n) => {
|
|
324
324
|
let r = xe(t, n);
|
|
325
|
-
return /* @__PURE__ */
|
|
325
|
+
return /* @__PURE__ */ g(e, {
|
|
326
326
|
tooltip: !0,
|
|
327
327
|
placement: "top",
|
|
328
328
|
content: ae(r),
|
|
329
329
|
openDelay: 0,
|
|
330
330
|
closeDelay: 100,
|
|
331
|
-
children: /* @__PURE__ */
|
|
331
|
+
children: /* @__PURE__ */ g("button", {
|
|
332
332
|
ref: (e) => {
|
|
333
333
|
J.current[n] = e;
|
|
334
334
|
},
|
|
@@ -356,9 +356,9 @@ function G(t) {
|
|
|
356
356
|
})
|
|
357
357
|
]
|
|
358
358
|
})
|
|
359
|
-
}),
|
|
359
|
+
}), u === "full" && M.length > 0 && /* @__PURE__ */ g("div", {
|
|
360
360
|
className: U.marks,
|
|
361
|
-
children: M.map((e) => /* @__PURE__ */
|
|
361
|
+
children: M.map((e) => /* @__PURE__ */ _("button", {
|
|
362
362
|
type: "button",
|
|
363
363
|
"data-slot": "mark",
|
|
364
364
|
"data-active": (F ? e.value >= z[0] && e.value <= z[1] : e.value <= I) ? "" : void 0,
|
|
@@ -367,10 +367,10 @@ function G(t) {
|
|
|
367
367
|
"aria-label": e.ariaLabel,
|
|
368
368
|
disabled: C,
|
|
369
369
|
onClick: () => be(e.value),
|
|
370
|
-
children: [/* @__PURE__ */
|
|
370
|
+
children: [/* @__PURE__ */ g("span", {
|
|
371
371
|
className: U.markDot,
|
|
372
372
|
"aria-hidden": "true"
|
|
373
|
-
}), /* @__PURE__ */
|
|
373
|
+
}), /* @__PURE__ */ g("span", {
|
|
374
374
|
className: U.markLabel,
|
|
375
375
|
children: e.label
|
|
376
376
|
})]
|
|
@@ -380,14 +380,14 @@ function G(t) {
|
|
|
380
380
|
});
|
|
381
381
|
}
|
|
382
382
|
function K(e) {
|
|
383
|
-
return /* @__PURE__ */
|
|
383
|
+
return /* @__PURE__ */ g(G, {
|
|
384
384
|
...e,
|
|
385
385
|
mode: "single",
|
|
386
386
|
marksDisplay: "compact"
|
|
387
387
|
});
|
|
388
388
|
}
|
|
389
389
|
function q(e) {
|
|
390
|
-
return /* @__PURE__ */
|
|
390
|
+
return /* @__PURE__ */ g(G, {
|
|
391
391
|
...e,
|
|
392
392
|
mode: "range",
|
|
393
393
|
marksDisplay: "compact"
|
|
@@ -396,9 +396,9 @@ function q(e) {
|
|
|
396
396
|
//#endregion
|
|
397
397
|
//#region src/slider/SliderInput.tsx
|
|
398
398
|
function J({ open: e, disabled: n, setOpen: r }) {
|
|
399
|
-
return /* @__PURE__ */
|
|
399
|
+
return /* @__PURE__ */ g(t.Trigger, {
|
|
400
400
|
passive: !0,
|
|
401
|
-
children: /* @__PURE__ */
|
|
401
|
+
children: /* @__PURE__ */ g("div", { children: /* @__PURE__ */ g(s, {
|
|
402
402
|
open: e,
|
|
403
403
|
disabled: n,
|
|
404
404
|
openAriaLabel: "Открыть слайдер",
|
|
@@ -417,7 +417,7 @@ function Y(e, t) {
|
|
|
417
417
|
}
|
|
418
418
|
function X(e, t) {
|
|
419
419
|
let n = e.trim();
|
|
420
|
-
return n === "" || n === t ? null :
|
|
420
|
+
return n === "" || n === t ? null : m(n);
|
|
421
421
|
}
|
|
422
422
|
function oe(e, t, n) {
|
|
423
423
|
let r = t.filter((t) => P(t) === e);
|
|
@@ -433,35 +433,35 @@ function se(e, t, n) {
|
|
|
433
433
|
let [r, i] = e, a = r === null, o = i === null;
|
|
434
434
|
return a && o ? n ?? "" : a ? `Меньше ${Q(i, t, "end")}` : o ? `Больше ${Q(r, t, "start")}` : r === i ? `Равно ${Q(r, t, "start")}` : `От ${Q(r, t, "start")} до ${Q(i, t, "end")}`;
|
|
435
435
|
}
|
|
436
|
-
function ce({ value: e, onChange: n, min: i, max: a, step: o, marks: s, marksPosition:
|
|
437
|
-
let { min: T, max: E } =
|
|
436
|
+
function ce({ value: e, onChange: n, min: i, max: a, step: o, marks: s, marksPosition: f = "value", className: ee, error: h, onClearError: v, label: y, description: b, placeholder: x, disabled: S, size: C }) {
|
|
437
|
+
let { min: T, max: E } = d(() => w(i, a), [i, a]), D = d(() => O(s, T, E), [
|
|
438
438
|
s,
|
|
439
439
|
T,
|
|
440
440
|
E
|
|
441
|
-
]), k =
|
|
441
|
+
]), k = d(() => ({
|
|
442
442
|
min: T,
|
|
443
443
|
max: E,
|
|
444
444
|
step: o,
|
|
445
445
|
marks: D,
|
|
446
|
-
marksPosition:
|
|
446
|
+
marksPosition: f
|
|
447
447
|
}), [
|
|
448
448
|
T,
|
|
449
449
|
E,
|
|
450
450
|
o,
|
|
451
451
|
D,
|
|
452
|
-
|
|
453
|
-
]), A = N(e, k), [j, M] =
|
|
452
|
+
f
|
|
453
|
+
]), A = N(e, k), [j, M] = p(!1), [P, F] = p(String(A)), I = u((e) => {
|
|
454
454
|
F(e);
|
|
455
455
|
});
|
|
456
|
-
|
|
456
|
+
l(() => {
|
|
457
457
|
I(String(A));
|
|
458
458
|
}, [A]);
|
|
459
|
-
let L =
|
|
459
|
+
let L = c(() => {
|
|
460
460
|
if (S) {
|
|
461
461
|
F(String(A));
|
|
462
462
|
return;
|
|
463
463
|
}
|
|
464
|
-
let t =
|
|
464
|
+
let t = m(P);
|
|
465
465
|
if (t === void 0) {
|
|
466
466
|
F(String(A));
|
|
467
467
|
return;
|
|
@@ -477,16 +477,16 @@ function ce({ value: e, onChange: n, min: i, max: a, step: o, marks: s, marksPos
|
|
|
477
477
|
k,
|
|
478
478
|
e
|
|
479
479
|
]);
|
|
480
|
-
return /* @__PURE__ */
|
|
480
|
+
return /* @__PURE__ */ _(t, {
|
|
481
481
|
open: j,
|
|
482
482
|
onOpenChange: M,
|
|
483
|
-
children: [/* @__PURE__ */
|
|
483
|
+
children: [/* @__PURE__ */ g(r, {
|
|
484
484
|
label: y,
|
|
485
485
|
description: b,
|
|
486
486
|
placeholder: x,
|
|
487
487
|
disabled: S,
|
|
488
488
|
size: C,
|
|
489
|
-
className:
|
|
489
|
+
className: ee,
|
|
490
490
|
error: h,
|
|
491
491
|
value: P,
|
|
492
492
|
onChange: F,
|
|
@@ -500,17 +500,17 @@ function ce({ value: e, onChange: n, min: i, max: a, step: o, marks: s, marksPos
|
|
|
500
500
|
disabled: S,
|
|
501
501
|
setOpen: M
|
|
502
502
|
})
|
|
503
|
-
}), /* @__PURE__ */
|
|
503
|
+
}), /* @__PURE__ */ g(t.Content, {
|
|
504
504
|
background: "primary",
|
|
505
|
-
children: /* @__PURE__ */
|
|
505
|
+
children: /* @__PURE__ */ g("div", {
|
|
506
506
|
className: U.popoverContent,
|
|
507
|
-
children: /* @__PURE__ */
|
|
507
|
+
children: /* @__PURE__ */ g(G, {
|
|
508
508
|
mode: "single",
|
|
509
509
|
min: T,
|
|
510
510
|
max: E,
|
|
511
511
|
step: o,
|
|
512
512
|
marks: D,
|
|
513
|
-
marksPosition:
|
|
513
|
+
marksPosition: f,
|
|
514
514
|
marksDisplay: "full",
|
|
515
515
|
value: e,
|
|
516
516
|
onChange: (e) => {
|
|
@@ -522,27 +522,27 @@ function ce({ value: e, onChange: n, min: i, max: a, step: o, marks: s, marksPos
|
|
|
522
522
|
})]
|
|
523
523
|
});
|
|
524
524
|
}
|
|
525
|
-
function le({ value: e, onChange: r, min: s, max:
|
|
526
|
-
let { min: j, max: M } =
|
|
525
|
+
function le({ value: e, onChange: r, min: s, max: f, step: m, marks: v, marksPosition: y = "value", className: b, error: x, onClearError: S, label: C, description: T, readonlyValueText: E, placeholder: D, disabled: k, size: A }) {
|
|
526
|
+
let { min: j, max: M } = d(() => w(s, f), [s, f]), N = d(() => O(v, j, M), [
|
|
527
527
|
v,
|
|
528
528
|
j,
|
|
529
529
|
M
|
|
530
|
-
]), P =
|
|
530
|
+
]), P = d(() => ({
|
|
531
531
|
min: j,
|
|
532
532
|
max: M,
|
|
533
|
-
step:
|
|
533
|
+
step: m,
|
|
534
534
|
marks: N,
|
|
535
535
|
marksPosition: y
|
|
536
536
|
}), [
|
|
537
537
|
j,
|
|
538
538
|
M,
|
|
539
|
-
|
|
539
|
+
m,
|
|
540
540
|
N,
|
|
541
541
|
y
|
|
542
|
-
]), F =
|
|
542
|
+
]), F = d(() => R(e, P), [P, e]), I = d(() => Y(F, P), [F, P]), [L, z] = p(!1), [te, B] = p(I.start), [V, H] = p(I.end), [ne, W] = p(F), re = u((e, t) => {
|
|
543
543
|
B(e), H(t);
|
|
544
544
|
});
|
|
545
|
-
|
|
545
|
+
l(() => {
|
|
546
546
|
L || re(I.start, I.end);
|
|
547
547
|
}, [
|
|
548
548
|
I.start,
|
|
@@ -554,9 +554,9 @@ function le({ value: e, onChange: r, min: s, max: h, step: _, marks: v, marksPos
|
|
|
554
554
|
hasLabel: C != null,
|
|
555
555
|
hasDescription: !!T,
|
|
556
556
|
hasError: !!x
|
|
557
|
-
}), Z =
|
|
557
|
+
}), Z = c(() => {
|
|
558
558
|
B(I.start), H(I.end);
|
|
559
|
-
}, [I.end, I.start]), Q =
|
|
559
|
+
}, [I.end, I.start]), Q = c(() => {
|
|
560
560
|
if (k) {
|
|
561
561
|
Z();
|
|
562
562
|
return;
|
|
@@ -579,7 +579,7 @@ function le({ value: e, onChange: r, min: s, max: h, step: _, marks: v, marksPos
|
|
|
579
579
|
S,
|
|
580
580
|
Z,
|
|
581
581
|
P
|
|
582
|
-
]), ce =
|
|
582
|
+
]), ce = c((e) => {
|
|
583
583
|
let t = R(e, P);
|
|
584
584
|
ue(F, t) || (r(t), S?.());
|
|
585
585
|
let n = Y(t, P);
|
|
@@ -599,10 +599,10 @@ function le({ value: e, onChange: r, min: s, max: h, step: _, marks: v, marksPos
|
|
|
599
599
|
let n = Y(t, P);
|
|
600
600
|
B(n.start), H(n.end);
|
|
601
601
|
}, $ = E ? se(L ? ne : F, N, D) : void 0;
|
|
602
|
-
return /* @__PURE__ */
|
|
602
|
+
return /* @__PURE__ */ _(t, {
|
|
603
603
|
open: L,
|
|
604
604
|
onOpenChange: le,
|
|
605
|
-
children: [/* @__PURE__ */
|
|
605
|
+
children: [/* @__PURE__ */ g(a, {
|
|
606
606
|
label: C,
|
|
607
607
|
description: T,
|
|
608
608
|
disabled: k,
|
|
@@ -613,7 +613,7 @@ function le({ value: e, onChange: r, min: s, max: h, step: _, marks: v, marksPos
|
|
|
613
613
|
labelId: ae,
|
|
614
614
|
descriptionId: K,
|
|
615
615
|
errorId: q,
|
|
616
|
-
children: /* @__PURE__ */
|
|
616
|
+
children: /* @__PURE__ */ g(o, {
|
|
617
617
|
endAdornmentWidth: "var(--control-height)",
|
|
618
618
|
endAdornment: J({
|
|
619
619
|
open: L,
|
|
@@ -622,9 +622,9 @@ function le({ value: e, onChange: r, min: s, max: h, step: _, marks: v, marksPos
|
|
|
622
622
|
le(typeof e == "function" ? e(L) : e);
|
|
623
623
|
}
|
|
624
624
|
}),
|
|
625
|
-
children: ({ controlClassName: e }) => /* @__PURE__ */
|
|
625
|
+
children: ({ controlClassName: e }) => /* @__PURE__ */ g("div", {
|
|
626
626
|
id: ie,
|
|
627
|
-
className:
|
|
627
|
+
className: ee(n.uiInputControlFake, U.rangeInputControl, e),
|
|
628
628
|
"data-invalid": x ? "" : void 0,
|
|
629
629
|
"data-disabled": k || void 0,
|
|
630
630
|
role: "group",
|
|
@@ -632,11 +632,11 @@ function le({ value: e, onChange: r, min: s, max: h, step: _, marks: v, marksPos
|
|
|
632
632
|
"aria-label": typeof C == "string" ? C : "Диапазон",
|
|
633
633
|
"aria-labelledby": typeof C == "string" ? void 0 : ae,
|
|
634
634
|
"aria-describedby": oe,
|
|
635
|
-
children: E ? /* @__PURE__ */
|
|
636
|
-
className:
|
|
635
|
+
children: E ? /* @__PURE__ */ g("span", {
|
|
636
|
+
className: ee("flexEllipsis", !$ && n.uiPlaceholder),
|
|
637
637
|
children: $ || D
|
|
638
|
-
}) : /* @__PURE__ */
|
|
639
|
-
/* @__PURE__ */
|
|
638
|
+
}) : /* @__PURE__ */ _(h, { children: [
|
|
639
|
+
/* @__PURE__ */ g("input", {
|
|
640
640
|
type: "text",
|
|
641
641
|
inputMode: "decimal",
|
|
642
642
|
className: U.rangeSegmentInput,
|
|
@@ -647,12 +647,12 @@ function le({ value: e, onChange: r, min: s, max: h, step: _, marks: v, marksPos
|
|
|
647
647
|
onBlur: Q,
|
|
648
648
|
onKeyDown: de
|
|
649
649
|
}),
|
|
650
|
-
/* @__PURE__ */
|
|
650
|
+
/* @__PURE__ */ g("span", {
|
|
651
651
|
className: U.rangeSeparator,
|
|
652
652
|
"data-disabled": k || void 0,
|
|
653
653
|
children: "-"
|
|
654
654
|
}),
|
|
655
|
-
/* @__PURE__ */
|
|
655
|
+
/* @__PURE__ */ g("input", {
|
|
656
656
|
type: "text",
|
|
657
657
|
inputMode: "decimal",
|
|
658
658
|
className: U.rangeSegmentInput,
|
|
@@ -666,15 +666,15 @@ function le({ value: e, onChange: r, min: s, max: h, step: _, marks: v, marksPos
|
|
|
666
666
|
] })
|
|
667
667
|
})
|
|
668
668
|
})
|
|
669
|
-
}), /* @__PURE__ */
|
|
669
|
+
}), /* @__PURE__ */ g(t.Content, {
|
|
670
670
|
background: "primary",
|
|
671
|
-
children: /* @__PURE__ */
|
|
671
|
+
children: /* @__PURE__ */ g("div", {
|
|
672
672
|
className: U.popoverContent,
|
|
673
|
-
children: /* @__PURE__ */
|
|
673
|
+
children: /* @__PURE__ */ g(G, {
|
|
674
674
|
mode: "range",
|
|
675
675
|
min: j,
|
|
676
676
|
max: M,
|
|
677
|
-
step:
|
|
677
|
+
step: m,
|
|
678
678
|
marks: N,
|
|
679
679
|
marksPosition: y,
|
|
680
680
|
marksDisplay: "full",
|
|
@@ -692,4 +692,4 @@ function ue(e, t) {
|
|
|
692
692
|
//#endregion
|
|
693
693
|
export { q as i, le as n, K as r, ce as t };
|
|
694
694
|
|
|
695
|
-
//# sourceMappingURL=slider-
|
|
695
|
+
//# sourceMappingURL=slider-CFKsfxFp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slider-CFKsfxFp.js","names":[],"sources":["../../src/slider/lib/sliderMath.ts","../../src/slider/Slider.module.scss","../../src/slider/Slider.tsx","../../src/slider/SliderInput.tsx"],"sourcesContent":["import {\n\tfindClosestNumberScaleMark,\n\tfindClosestNumberScaleMarkByPercent,\n\tgetNumberScaleMarkPercent,\n\tprepareNumberScaleMarks,\n\tresolveNumberScaleBounds,\n\tsnapNumberScaleValue,\n\tsnapNumberScaleValueToStep,\n\tvalueToNumberScalePercent\n} from \"@ryuzaki13/react-foundation-lib/number-scale\";\nimport { resolveRangeOutputValue } from \"@ryuzaki13/react-foundation-lib/range-output\";\n\nimport { SliderFillRange, SliderMark, SliderMathOptions, SliderRangeMark, SliderRangeOutputValueFallback, SliderRangeValue } from \"./types\";\n\nexport function prepareSliderMarks<TMark extends SliderMark>(marks: readonly TMark[] | undefined, min: number, max: number): TMark[] {\n\treturn prepareNumberScaleMarks(marks, min, max);\n}\n\nexport function getSliderMarkPercent<TMark extends SliderMark>(mark: TMark, marks: readonly TMark[], options: SliderMathOptions<TMark>) {\n\tconst markIndex = marks.findIndex((item) => item.value === mark.value);\n\treturn getNumberScaleMarkPercent(Math.max(0, markIndex), marks, options.min, options.max, options.marksPosition);\n}\n\n/**\n * Возвращает визуальную позицию значения: по шкале min/max или по позиции ближайшей mark.\n */\nexport function valueToSliderVisualPercent<TMark extends SliderMark>(value: number, options: SliderMathOptions<TMark>) {\n\tconst { min, max } = resolveNumberScaleBounds(options.min, options.max);\n\tconst marks = prepareSliderMarks(options.marks, min, max);\n\n\tif (marks.length > 0) {\n\t\tconst exactMark = marks.find((mark) => mark.value === value);\n\t\tconst mark = exactMark ?? findClosestNumberScaleMark(value, marks);\n\n\t\tif (mark) {\n\t\t\treturn getSliderMarkPercent(mark, marks, { ...options, min, max, marks });\n\t\t}\n\t}\n\n\treturn valueToNumberScalePercent(value, min, max);\n}\n\n/**\n * Возвращает mark, который визуально ближе всего к pointer percent.\n */\nexport function getClosestSliderMarkByPercent<TMark extends SliderMark>(percent: number, options: SliderMathOptions<TMark>) {\n\tconst { min, max } = resolveNumberScaleBounds(options.min, options.max);\n\tconst marks = prepareSliderMarks(options.marks, min, max);\n\n\treturn findClosestNumberScaleMarkByPercent(percent, marks, min, max, options.marksPosition);\n}\n\nexport function snapSliderValue<TMark extends SliderMark>(value: number, options: SliderMathOptions<TMark>) {\n\treturn snapNumberScaleValue(value, options);\n}\n\nexport function normalizeSingleSliderValue(value: number | undefined, options: SliderMathOptions) {\n\tconst { min, max } = resolveNumberScaleBounds(options.min, options.max);\n\n\tif (value === undefined) {\n\t\treturn min;\n\t}\n\n\treturn snapSliderValue(value, { ...options, min, max });\n}\n\n/**\n * Возвращает публичное значение mark: `outputValue`, если оно задано, иначе координату `value`.\n */\nexport function getRangeMarkOutputValue(mark: SliderRangeMark | undefined): number | null | undefined {\n\tif (!mark) {\n\t\treturn undefined;\n\t}\n\n\tif (!Object.hasOwn(mark, \"outputValue\") || mark.outputValue === undefined) {\n\t\treturn mark.value;\n\t}\n\n\treturn mark.outputValue;\n}\n\n/**\n * Готовит range-значение к внешней сериализации, заменяя открытые границы на заданные подстановки.\n *\n * Функция не участвует во внутренней логике слайдера: `SliderRange` и `SliderRangeInput`\n * продолжают отдавать `null` через `onChange`, а потребитель явно применяет подстановку\n * рядом со своим обработчиком сохранения/отправки.\n */\nexport function resolveSliderRangeOutputValue(\n\tvalue: SliderRangeValue,\n\tfallback: SliderRangeOutputValueFallback | undefined\n): SliderRangeValue {\n\treturn resolveRangeOutputValue(value, fallback);\n}\n\nfunction findRangeMarkByOutputValue(\n\tvalue: number | null,\n\tmarks: readonly SliderRangeMark[],\n\tthumbIndex: number\n): SliderRangeMark | undefined {\n\tconst matchingMarks = marks.filter((mark) => getRangeMarkOutputValue(mark) === value);\n\n\tif (!matchingMarks.length) {\n\t\treturn undefined;\n\t}\n\n\tif (value === null) {\n\t\treturn thumbIndex === 0 ? matchingMarks[0] : matchingMarks[matchingMarks.length - 1];\n\t}\n\n\treturn matchingMarks[0];\n}\n\n/**\n * Ищет ближайшую mark по публичному output-значению, а не по координате шкалы.\n */\nfunction findClosestRangeMarkByOutputValue(\n\tvalue: number,\n\tmarks: readonly SliderRangeMark[],\n\tthumbIndex: number\n): SliderRangeMark | undefined {\n\tconst exactMark = findRangeMarkByOutputValue(value, marks, thumbIndex);\n\tif (exactMark) {\n\t\treturn exactMark;\n\t}\n\n\tlet nearestMark: SliderRangeMark | undefined;\n\tlet nearestDistance = Number.POSITIVE_INFINITY;\n\n\tfor (const mark of marks) {\n\t\tconst outputValue = getRangeMarkOutputValue(mark);\n\t\tif (typeof outputValue !== \"number\" || !Number.isFinite(outputValue)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst distance = Math.abs(value - outputValue);\n\t\tif (distance < nearestDistance) {\n\t\t\tnearestMark = mark;\n\t\t\tnearestDistance = distance;\n\t\t}\n\t}\n\n\treturn nearestMark;\n}\n\nfunction normalizeRangeEndpoint(\n\tvalue: number | null,\n\tfallbackVisualValue: number,\n\tthumbIndex: number,\n\toptions: SliderMathOptions<SliderRangeMark>\n) {\n\tif (value === null) {\n\t\treturn null;\n\t}\n\n\tconst { min, max } = resolveNumberScaleBounds(options.min, options.max);\n\tconst marks = prepareSliderMarks(options.marks, min, max);\n\tconst publicValue = Number.isFinite(value) ? value : fallbackVisualValue;\n\n\tif (marks.length > 0) {\n\t\tconst snappedMark = findClosestRangeMarkByOutputValue(publicValue, marks, thumbIndex);\n\t\tconst outputValue = getRangeMarkOutputValue(snappedMark);\n\n\t\treturn outputValue !== undefined ? outputValue : (snappedMark?.value ?? fallbackVisualValue);\n\t}\n\n\treturn snapNumberScaleValueToStep(publicValue, min, max, options.step);\n}\n\n/**\n * Нормализует публичное range-значение, сохраняя null как открытую границу.\n */\nexport function normalizeRangeSliderValue(\n\tvalue: SliderRangeValue | undefined,\n\toptions: SliderMathOptions<SliderRangeMark>\n): SliderRangeValue {\n\tconst { min, max } = resolveNumberScaleBounds(options.min, options.max);\n\n\tif (!value) {\n\t\treturn [null, null];\n\t}\n\n\tconst start = normalizeRangeEndpoint(value[0], min, 0, { ...options, min, max });\n\tconst end = normalizeRangeEndpoint(value[1], max, 1, { ...options, min, max });\n\n\tif (start !== null && end !== null && start > end) {\n\t\treturn [end, start];\n\t}\n\n\treturn [start, end];\n}\n\nfunction getRangeEndpointVisualValue(\n\tvalue: number | null,\n\tfallbackVisualValue: number,\n\tthumbIndex: number,\n\toptions: SliderMathOptions<SliderRangeMark>\n) {\n\tif (value === null) {\n\t\treturn fallbackVisualValue;\n\t}\n\n\tconst { min, max } = resolveNumberScaleBounds(options.min, options.max);\n\tconst marks = prepareSliderMarks(options.marks, min, max);\n\n\tif (marks.length > 0) {\n\t\tconst exactOutputMark = findRangeMarkByOutputValue(value, marks, thumbIndex);\n\t\tconst outputMark =\n\t\t\texactOutputMark ?? (typeof value === \"number\" ? findClosestRangeMarkByOutputValue(value, marks, thumbIndex) : undefined);\n\n\t\treturn outputMark?.value ?? fallbackVisualValue;\n\t}\n\n\treturn snapNumberScaleValueToStep(value, min, max, options.step);\n}\n\n/**\n * Переводит публичный range tuple в finite-позиции thumb, где null стоит на краю шкалы.\n */\nexport function getRangeSliderVisualValue(\n\tvalue: SliderRangeValue | undefined,\n\toptions: SliderMathOptions<SliderRangeMark>\n): [number, number] {\n\tconst { min, max } = resolveNumberScaleBounds(options.min, options.max);\n\tconst normalized = normalizeRangeSliderValue(value, { ...options, min, max });\n\tconst start = getRangeEndpointVisualValue(normalized[0], min, 0, { ...options, min, max });\n\tconst end = getRangeEndpointVisualValue(normalized[1], max, 1, { ...options, min, max });\n\n\treturn start <= end ? [start, end] : [end, start];\n}\n\n/**\n * Преобразует координату шкалы, выбранную pointer/keyboard, в публичное range-значение.\n */\nexport function visualValueToRangeEndpoint(value: number, options: SliderMathOptions<SliderRangeMark>) {\n\tconst { min, max } = resolveNumberScaleBounds(options.min, options.max);\n\tconst marks = prepareSliderMarks(options.marks, min, max);\n\n\tif (marks.length > 0) {\n\t\tconst mark = findClosestNumberScaleMark(value, marks);\n\t\tconst outputValue = getRangeMarkOutputValue(mark);\n\n\t\treturn outputValue !== undefined ? outputValue : (mark?.value ?? value);\n\t}\n\n\treturn snapNumberScaleValueToStep(value, min, max, options.step);\n}\n\nexport function getClosestSliderThumb(targetValue: number, value: readonly [number, number]) {\n\tconst [start, end] = value;\n\treturn Math.abs(targetValue - start) <= Math.abs(targetValue - end) ? 0 : 1;\n}\n\nexport function resolveSliderFillRange(value: number | readonly [number, number], options: SliderMathOptions): SliderFillRange {\n\tconst { min, max } = resolveNumberScaleBounds(options.min, options.max);\n\n\tif (Array.isArray(value)) {\n\t\treturn {\n\t\t\tstartPercent: valueToSliderVisualPercent(value[0], { ...options, min, max }),\n\t\t\tendPercent: valueToSliderVisualPercent(value[1], { ...options, min, max })\n\t\t};\n\t}\n\n\treturn {\n\t\tstartPercent: 0,\n\t\tendPercent: valueToSliderVisualPercent(value as number, { ...options, min, max })\n\t};\n}\n","@use \"@/styles/mixins\" as *;\n\n.slider {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: var(--space-sm);\n}\n\n.sliderCompact {\n\tgap: 0;\n}\n\n.trackShell {\n\tposition: relative;\n\tpadding-inline: calc((var(--control-height) - var(--space-xs)) / 2);\n}\n\n.track {\n\tposition: relative;\n\theight: var(--control-height);\n\tcursor: pointer;\n\ttouch-action: none;\n\tuser-select: none;\n}\n\n.rail,\n.fill {\n\tposition: absolute;\n\ttop: 50%;\n\ttransform: translateY(-50%);\n\theight: var(--space-xs);\n\tborder-radius: 999px;\n}\n\n.rail {\n\tleft: 0;\n\tright: 0;\n\tbackground-color: var(--surface-2);\n\tborder: var(--border);\n}\n\n.fill {\n\tbackground-color: var(--content-0);\n}\n\n.thumb {\n\tposition: absolute;\n\ttop: 50%;\n\ttransform: translate(-50%, -50%);\n\twidth: calc(var(--control-height) - var(--space-xs));\n\theight: calc(var(--control-height) - var(--space-xs));\n\tborder: var(--border);\n\tborder-radius: 50%;\n\tbackground-color: var(--surface-0);\n\tcolor: var(--content-0);\n\tbox-shadow: var(--shadow-sm);\n\tcursor: grab;\n\tz-index: 2;\n\ttransition:\n\t\ttransform var(--transition-fast) ease,\n\t\tborder-color var(--transition-fast) ease,\n\t\tbox-shadow var(--transition-fast) ease,\n\t\tbackground-color var(--transition-fast) ease;\n\n\t&:active,\n\t&:hover {\n\t\tborder-color: var(--border-1);\n\t}\n\n\t&:focus-visible {\n\t\t@include focusVisible;\n\t}\n\n\t&[data-dragging] {\n\t\tcursor: grabbing;\n\t\ttransform: translate(-50%, -50%) scale(1.04);\n\t\tbox-shadow: var(--shadow-md);\n\t}\n}\n\n.marks {\n\tposition: relative;\n\tmin-height: calc(var(--font-size-sm) + var(--space-md));\n\tmargin-inline: calc((var(--control-height) - var(--space-xs)) / 2);\n}\n\n.mark {\n\tposition: absolute;\n\ttop: 0;\n\ttransform: translateX(-50%);\n\tdisplay: inline-flex;\n\tflex-direction: column;\n\talign-items: center;\n\tgap: var(--space-xs);\n\tborder: none;\n\tbackground: transparent;\n\tpadding: 0;\n\tcolor: var(--content-2);\n\tcursor: pointer;\n\twhite-space: nowrap;\n\n\t&:focus-visible {\n\t\t@include focusVisible;\n\t\tborder-radius: var(--radius-sm);\n\t}\n\n\t&[data-active] {\n\t\tcolor: var(--content-0);\n\t}\n}\n\n.compactMark {\n\tposition: absolute;\n\ttop: 50%;\n\ttransform: translate(-50%, -50%);\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\twidth: var(--control-height);\n\theight: var(--control-height);\n\tborder: none;\n\tbackground: transparent;\n\tpadding: 0;\n\tcolor: var(--content-2);\n\tcursor: pointer;\n\tz-index: 1;\n\n\t&:focus-visible {\n\t\t@include focusVisible;\n\t\tborder-radius: var(--radius-sm);\n\t}\n\n\t&[data-active] {\n\t\tcolor: var(--content-0);\n\t}\n\n\t&:disabled {\n\t\tcursor: default;\n\t}\n}\n\n.markDot {\n\twidth: var(--space-sm);\n\theight: var(--space-sm);\n\tborder-radius: 50%;\n\tbackground-color: currentColor;\n\t// opacity: 0.55;\n}\n\n.markLabel {\n\tfont-size: var(--font-size-sm);\n}\n\n.popoverContent {\n\tmin-width: min(24em, calc(100vw - var(--space-xl)));\n}\n\n.rangeInputControl {\n\tgap: var(--space-xs);\n\tcursor: text;\n}\n\n.rangeSegmentInput {\n\tmin-width: 0;\n\twidth: 7ch;\n\tborder: none;\n\tbackground: transparent;\n\toutline: none;\n\tpadding: 0;\n\tmargin: 0;\n\tfont-family: var(--font-family-mono);\n\tcolor: inherit;\n\ttext-align: center;\n\tcaret-color: var(--content-0);\n\tfont-variant-numeric: tabular-nums;\n\n\t&::selection {\n\t\tbackground-color: var(--focus-ring);\n\t\tcolor: var(--surface-0);\n\t}\n\n\t&:disabled {\n\t\topacity: 0.25;\n\t}\n}\n\n.rangeSeparator {\n\tuser-select: none;\n\tcolor: var(--content-2);\n\tflex-shrink: 0;\n\n\t&[data-disabled] {\n\t\topacity: 0.25;\n\t}\n}\n","import React, { KeyboardEvent, useEffect, useMemo, useRef, useState } from \"react\";\n\nimport { offsetNumberScaleValue, percentToNumberScaleValue, resolveNumberScaleBounds } from \"@ryuzaki13/react-foundation-lib/number-scale\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { InputUI, useInputFieldIds } from \"../input\";\nimport { FloatingPopover } from \"../popover\";\nimport { UiBaseProps, UiSize } from \"../types\";\n\nimport {\n\tgetClosestSliderMarkByPercent,\n\tgetClosestSliderThumb,\n\tgetRangeSliderVisualValue,\n\tgetSliderMarkPercent,\n\tnormalizeRangeSliderValue,\n\tnormalizeSingleSliderValue,\n\tprepareSliderMarks,\n\tresolveSliderFillRange,\n\tvalueToSliderVisualPercent,\n\tvisualValueToRangeEndpoint,\n\ttype SliderMark,\n\ttype SliderMarksPosition,\n\ttype SliderRangeMark,\n\ttype SliderRangeValue\n} from \"./lib\";\nimport styles from \"./Slider.module.scss\";\n\ntype SliderMarksDisplay = \"compact\" | \"full\";\n\ninterface SliderCommonProps<TMark extends SliderMark> {\n\t/**\n\t * Минимальная координата шкалы. Marks вне этой границы отбрасываются.\n\t */\n\tmin: number;\n\t/**\n\t * Максимальная координата шкалы. Marks вне этой границы отбрасываются.\n\t */\n\tmax: number;\n\t/**\n\t * Шаг изменения, когда `marks` не заданы или после фильтрации не осталось валидных marks.\n\t */\n\tstep?: number;\n\t/**\n\t * Дискретные точки выбора. Если заданы, бегунок всегда ходит только по marks.\n\t */\n\tmarks?: readonly TMark[];\n\t/**\n\t * Способ визуального размещения marks и бегунка: по числовой координате `value` или равномерно по индексу.\n\t */\n\tmarksPosition?: SliderMarksPosition;\n\t/**\n\t * Внешний CSS-класс контейнера поля.\n\t */\n\tclassName?: string;\n\t/**\n\t * Текст внешней ошибки, отображается через общую `InputUI`-обёртку.\n\t */\n\terror?: string;\n\t/**\n\t * Вызывается после успешного изменения значения, чтобы потребитель мог сбросить внешнюю ошибку.\n\t */\n\tonClearError?: () => void;\n}\n\n/**\n * Single-value slider. Возвращает координату шкалы, потому что single marks не используют `outputValue`.\n */\nexport interface SliderProps extends Omit<UiBaseProps<number, number | undefined>, \"placeholder\">, SliderCommonProps<SliderMark> {}\n\n/**\n * Range slider. Возвращает бизнес-значения `SliderRangeMark.outputValue`, если они заданы, иначе координаты `value`.\n */\nexport interface SliderRangeProps\n\textends Omit<UiBaseProps<SliderRangeValue, SliderRangeValue | undefined>, \"placeholder\">, SliderCommonProps<SliderRangeMark> {}\n\ninterface SliderBaseCommonProps<TMark extends SliderMark> extends SliderCommonProps<TMark> {\n\t/**\n\t * Подпись поля в общей `InputUI`-обёртке.\n\t */\n\tlabel?: React.ReactNode;\n\t/**\n\t * Описание поля под подписью.\n\t */\n\tdescription?: string;\n\t/**\n\t * Блокирует pointer, keyboard и click-взаимодействие.\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * Размер общей `InputUI`-обёртки.\n\t */\n\tsize?: UiSize;\n\t/**\n\t * Compact показывает только ticks/tooltip внутри высоты control, full добавляет строку labels для popover.\n\t */\n\tmarksDisplay?: SliderMarksDisplay;\n}\n\ninterface SliderBaseSingleProps extends SliderBaseCommonProps<SliderMark> {\n\tmode: \"single\";\n\tvalue: number | undefined;\n\tonChange: (value: number) => void;\n}\n\ninterface SliderBaseRangeProps extends SliderBaseCommonProps<SliderRangeMark> {\n\tmode: \"range\";\n\tvalue: SliderRangeValue | undefined;\n\tonChange: (value: SliderRangeValue) => void;\n}\n\nexport type SliderBaseProps = SliderBaseSingleProps | SliderBaseRangeProps;\n\nfunction resolveKeyboardOffset(eventKey: string) {\n\tif (eventKey === \"ArrowLeft\" || eventKey === \"ArrowDown\") {\n\t\treturn -1;\n\t}\n\n\tif (eventKey === \"ArrowRight\" || eventKey === \"ArrowUp\") {\n\t\treturn 1;\n\t}\n\n\tif (eventKey === \"PageDown\") {\n\t\treturn -10;\n\t}\n\n\tif (eventKey === \"PageUp\") {\n\t\treturn 10;\n\t}\n\n\treturn null;\n}\n\nfunction areRangeValuesEqual(left: SliderRangeValue | undefined, right: SliderRangeValue) {\n\treturn !!left && left[0] === right[0] && left[1] === right[1];\n}\n\nfunction formatRangeEndpoint(value: number | null, thumbIndex: number) {\n\tif (value === null) {\n\t\treturn thumbIndex === 0 ? \"-∞\" : \"∞\";\n\t}\n\n\treturn String(value);\n}\n\nfunction getMarkLabelByValue<TMark extends SliderMark>(value: number, marks: readonly TMark[]) {\n\treturn marks.find((mark) => mark.value === value)?.label ?? String(value);\n}\n\nfunction renderTooltipContent(content: React.ReactNode) {\n\treturn typeof content === \"string\" || typeof content === \"number\" ? <span className=\"textNoWrap\">{content}</span> : content;\n}\n\nexport function SliderBase(props: SliderBaseProps) {\n\tconst {\n\t\tmin: rawMin,\n\t\tmax: rawMax,\n\t\tstep,\n\t\tmarks,\n\t\tmarksPosition = \"value\",\n\t\tmarksDisplay = \"compact\",\n\t\tclassName,\n\t\terror,\n\t\tonClearError,\n\t\tlabel,\n\t\tdescription,\n\t\tdisabled,\n\t\tsize\n\t} = props;\n\tconst { min, max } = useMemo(() => resolveNumberScaleBounds(rawMin, rawMax), [rawMin, rawMax]);\n\tconst normalizedMarks = useMemo(() => prepareSliderMarks(marks, min, max), [marks, min, max]);\n\tconst sliderOptions = useMemo(\n\t\t() => ({\n\t\t\tmin,\n\t\t\tmax,\n\t\t\tstep,\n\t\t\tmarks: normalizedMarks,\n\t\t\tmarksPosition\n\t\t}),\n\t\t[min, max, step, normalizedMarks, marksPosition]\n\t);\n\n\tconst isRange = props.mode === \"range\";\n\tconst currentSingleValue = !isRange ? normalizeSingleSliderValue(props.value, sliderOptions) : undefined;\n\tconst currentRangeValue = isRange ? normalizeRangeSliderValue(props.value, sliderOptions) : undefined;\n\tconst visualRangeValue = isRange ? getRangeSliderVisualValue(props.value, sliderOptions) : undefined;\n\tconst thumbValues = isRange ? visualRangeValue! : [currentSingleValue!];\n\tconst fillRange = resolveSliderFillRange(isRange ? visualRangeValue! : currentSingleValue!, sliderOptions);\n\n\tconst trackRef = useRef<HTMLDivElement | null>(null);\n\tconst thumbRefs = useRef<Array<HTMLButtonElement | null>>([]);\n\tconst dragThumbIndexRef = useRef<number | null>(null);\n\tconst dragPointerIdRef = useRef<number | null>(null);\n\tconst [dragThumbIndex, setDragThumbIndex] = useState<number | null>(null);\n\n\tconst { controlId, labelId, descriptionId, errorId, describedBy } = useInputFieldIds({\n\t\thasLabel: label !== undefined && label !== null,\n\t\thasDescription: !!description,\n\t\thasError: !!error\n\t});\n\n\tconst emitSingleValue = (nextValue: number) => {\n\t\tif (disabled || props.mode !== \"single\") {\n\t\t\treturn;\n\t\t}\n\n\t\tif (props.value !== undefined && props.value === nextValue) {\n\t\t\treturn;\n\t\t}\n\n\t\tprops.onChange(nextValue);\n\t\tonClearError?.();\n\t};\n\n\tconst emitRangeValue = (nextValue: SliderRangeValue) => {\n\t\tif (disabled || props.mode !== \"range\") {\n\t\t\treturn;\n\t\t}\n\n\t\tif (areRangeValuesEqual(props.value, nextValue)) {\n\t\t\treturn;\n\t\t}\n\n\t\tprops.onChange(nextValue);\n\t\tonClearError?.();\n\t};\n\n\tconst applySliderValue = (rawValue: number, thumbIndex: number) => {\n\t\tif (disabled) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (props.mode === \"range\") {\n\t\t\tconst [startVisualValue, endVisualValue] = visualRangeValue!;\n\t\t\tconst [startValue, endValue] = currentRangeValue!;\n\t\t\tconst nextValue =\n\t\t\t\tthumbIndex === 0\n\t\t\t\t\t? normalizeRangeSliderValue(\n\t\t\t\t\t\t\t[visualValueToRangeEndpoint(Math.min(rawValue, endVisualValue), sliderOptions), endValue],\n\t\t\t\t\t\t\tsliderOptions\n\t\t\t\t\t\t)\n\t\t\t\t\t: normalizeRangeSliderValue(\n\t\t\t\t\t\t\t[startValue, visualValueToRangeEndpoint(Math.max(rawValue, startVisualValue), sliderOptions)],\n\t\t\t\t\t\t\tsliderOptions\n\t\t\t\t\t\t);\n\n\t\t\temitRangeValue(nextValue);\n\t\t\treturn;\n\t\t}\n\n\t\temitSingleValue(normalizeSingleSliderValue(rawValue, sliderOptions));\n\t};\n\n\tconst resolveValueFromPointer = (clientX: number) => {\n\t\tconst bounds = trackRef.current?.getBoundingClientRect();\n\t\tif (!bounds) {\n\t\t\treturn min;\n\t\t}\n\n\t\tconst percent = ((clientX - bounds.left) / bounds.width) * 100;\n\t\tconst closestMark = normalizedMarks.length > 0 ? getClosestSliderMarkByPercent(percent, sliderOptions) : undefined;\n\n\t\treturn closestMark?.value ?? percentToNumberScaleValue(percent, min, max);\n\t};\n\tconst applySliderValueRef = useRef(applySliderValue);\n\tconst resolveValueFromPointerRef = useRef(resolveValueFromPointer);\n\n\tuseEffect(() => {\n\t\tapplySliderValueRef.current = applySliderValue;\n\t\tresolveValueFromPointerRef.current = resolveValueFromPointer;\n\t});\n\n\tuseEffect(() => {\n\t\tconst onPointerUp = (event?: PointerEvent) => {\n\t\t\tif (dragPointerIdRef.current !== null && event && event.pointerId !== dragPointerIdRef.current) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdragPointerIdRef.current = null;\n\t\t\tdragThumbIndexRef.current = null;\n\t\t\tsetDragThumbIndex(null);\n\t\t};\n\n\t\tconst onPointerMove = (event: PointerEvent) => {\n\t\t\tif (dragThumbIndexRef.current === null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (dragPointerIdRef.current !== null && event.pointerId !== dragPointerIdRef.current) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tapplySliderValueRef.current(resolveValueFromPointerRef.current(event.clientX), dragThumbIndexRef.current);\n\t\t};\n\n\t\twindow.addEventListener(\"pointermove\", onPointerMove);\n\t\twindow.addEventListener(\"pointerup\", onPointerUp);\n\t\twindow.addEventListener(\"pointercancel\", onPointerUp);\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener(\"pointermove\", onPointerMove);\n\t\t\twindow.removeEventListener(\"pointerup\", onPointerUp);\n\t\t\twindow.removeEventListener(\"pointercancel\", onPointerUp);\n\t\t};\n\t}, []);\n\n\tconst beginPointerDrag = (pointerId: number, thumbIndex: number) => {\n\t\tdragPointerIdRef.current = pointerId;\n\t\tdragThumbIndexRef.current = thumbIndex;\n\t\tsetDragThumbIndex(thumbIndex);\n\t\tthumbRefs.current[thumbIndex]?.focus();\n\t};\n\n\tconst handleTrackPointerDown = (event: React.PointerEvent<HTMLDivElement>) => {\n\t\tif (disabled) {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\n\t\tconst rawValue = resolveValueFromPointer(event.clientX);\n\t\tconst thumbIndex = isRange ? getClosestSliderThumb(rawValue, visualRangeValue!) : 0;\n\n\t\tapplySliderValue(rawValue, thumbIndex);\n\t\tbeginPointerDrag(event.pointerId, thumbIndex);\n\t};\n\n\tconst handleThumbPointerDown = (thumbIndex: number) => (event: React.PointerEvent<HTMLButtonElement>) => {\n\t\tif (disabled) {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\tbeginPointerDrag(event.pointerId, thumbIndex);\n\t};\n\n\tconst handleThumbKeyDown = (thumbIndex: number) => (event: KeyboardEvent<HTMLButtonElement>) => {\n\t\tif (disabled) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst lowerBound = isRange && thumbIndex === 1 ? visualRangeValue![0] : min;\n\t\tconst upperBound = isRange && thumbIndex === 0 ? visualRangeValue![1] : max;\n\t\tconst keyboardOffset = resolveKeyboardOffset(event.key);\n\n\t\tif (event.key === \"Home\") {\n\t\t\tevent.preventDefault();\n\t\t\tapplySliderValue(lowerBound, thumbIndex);\n\t\t\treturn;\n\t\t}\n\n\t\tif (event.key === \"End\") {\n\t\t\tevent.preventDefault();\n\t\t\tapplySliderValue(upperBound, thumbIndex);\n\t\t\treturn;\n\t\t}\n\n\t\tif (keyboardOffset === null) {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\t\tconst baseValue = thumbValues[thumbIndex];\n\t\tconst nextValue = offsetNumberScaleValue(baseValue, keyboardOffset, sliderOptions, lowerBound, upperBound);\n\t\tapplySliderValue(nextValue, thumbIndex);\n\t};\n\n\tconst handleMarkSelect = (markValue: number) => {\n\t\tif (disabled) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst thumbIndex = isRange ? getClosestSliderThumb(markValue, visualRangeValue!) : 0;\n\t\tapplySliderValue(markValue, thumbIndex);\n\t\tthumbRefs.current[thumbIndex]?.focus();\n\t};\n\n\tconst getThumbValueText = (thumbValue: number, thumbIndex: number) => {\n\t\tif (isRange) {\n\t\t\tconst publicValue = currentRangeValue![thumbIndex];\n\t\t\tconst exactMark = normalizedMarks.find((mark) => mark.value === thumbValue);\n\n\t\t\treturn exactMark?.label ?? formatRangeEndpoint(publicValue, thumbIndex);\n\t\t}\n\n\t\treturn getMarkLabelByValue(thumbValue, normalizedMarks);\n\t};\n\n\treturn (\n\t\t<InputUI\n\t\t\tlabel={label}\n\t\t\tdescription={description}\n\t\t\tdisabled={disabled}\n\t\t\tclassName={className}\n\t\t\tsize={size}\n\t\t\terror={error}\n\t\t\tcontrolId={controlId}\n\t\t\tlabelId={labelId}\n\t\t\tdescriptionId={descriptionId}\n\t\t\terrorId={errorId}>\n\t\t\t<div id={controlId} className={cn(styles.slider, marksDisplay === \"compact\" && styles.sliderCompact)}>\n\t\t\t\t<div className={styles.trackShell}>\n\t\t\t\t\t<div\n\t\t\t\t\t\tref={trackRef}\n\t\t\t\t\t\tdata-slot=\"track\"\n\t\t\t\t\t\tclassName={styles.track}\n\t\t\t\t\t\trole=\"presentation\"\n\t\t\t\t\t\tonPointerDown={handleTrackPointerDown}>\n\t\t\t\t\t\t<div className={styles.rail} />\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tdata-slot=\"fill\"\n\t\t\t\t\t\t\tclassName={styles.fill}\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\tleft: `${fillRange.startPercent}%`,\n\t\t\t\t\t\t\t\twidth: `${fillRange.endPercent - fillRange.startPercent}%`\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t{marksDisplay === \"compact\" &&\n\t\t\t\t\t\t\tnormalizedMarks.map((mark) => {\n\t\t\t\t\t\t\t\tconst markPercent = getSliderMarkPercent(mark, normalizedMarks, sliderOptions);\n\t\t\t\t\t\t\t\tconst isActive = isRange\n\t\t\t\t\t\t\t\t\t? mark.value >= visualRangeValue![0] && mark.value <= visualRangeValue![1]\n\t\t\t\t\t\t\t\t\t: mark.value <= currentSingleValue!;\n\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<FloatingPopover key={mark.value} tooltip placement=\"top\" content={renderTooltipContent(mark.label)}>\n\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\tdata-slot=\"mark\"\n\t\t\t\t\t\t\t\t\t\t\tdata-active={isActive ? \"\" : undefined}\n\t\t\t\t\t\t\t\t\t\t\tclassName={styles.compactMark}\n\t\t\t\t\t\t\t\t\t\t\tstyle={{ left: `${markPercent}%` }}\n\t\t\t\t\t\t\t\t\t\t\taria-label={mark.ariaLabel}\n\t\t\t\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => handleMarkSelect(mark.value)}>\n\t\t\t\t\t\t\t\t\t\t\t<span className={styles.markDot} aria-hidden=\"true\" />\n\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t</FloatingPopover>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\n\t\t\t\t\t\t{thumbValues.map((thumbValue, thumbIndex) => {\n\t\t\t\t\t\t\tconst thumbLabel = getThumbValueText(thumbValue, thumbIndex);\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<FloatingPopover\n\t\t\t\t\t\t\t\t\tkey={thumbIndex}\n\t\t\t\t\t\t\t\t\ttooltip\n\t\t\t\t\t\t\t\t\tplacement=\"top\"\n\t\t\t\t\t\t\t\t\tcontent={renderTooltipContent(thumbLabel)}\n\t\t\t\t\t\t\t\t\topenDelay={0}\n\t\t\t\t\t\t\t\t\tcloseDelay={100}>\n\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\tref={(node) => {\n\t\t\t\t\t\t\t\t\t\t\tthumbRefs.current[thumbIndex] = node;\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\trole=\"slider\"\n\t\t\t\t\t\t\t\t\t\tdata-slot=\"thumb\"\n\t\t\t\t\t\t\t\t\t\tdata-thumb-index={thumbIndex}\n\t\t\t\t\t\t\t\t\t\tdata-dragging={dragThumbIndex === thumbIndex ? \"\" : undefined}\n\t\t\t\t\t\t\t\t\t\tclassName={styles.thumb}\n\t\t\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\t\t\t\tstyle={{ left: `${valueToSliderVisualPercent(thumbValue, sliderOptions)}%` }}\n\t\t\t\t\t\t\t\t\t\taria-disabled={disabled || undefined}\n\t\t\t\t\t\t\t\t\t\taria-orientation=\"horizontal\"\n\t\t\t\t\t\t\t\t\t\taria-valuemin={isRange && thumbIndex === 1 ? visualRangeValue![0] : min}\n\t\t\t\t\t\t\t\t\t\taria-valuemax={isRange && thumbIndex === 0 ? visualRangeValue![1] : max}\n\t\t\t\t\t\t\t\t\t\taria-valuenow={thumbValue}\n\t\t\t\t\t\t\t\t\t\taria-valuetext={\n\t\t\t\t\t\t\t\t\t\t\ttypeof thumbLabel === \"string\" || typeof thumbLabel === \"number\"\n\t\t\t\t\t\t\t\t\t\t\t\t? String(thumbLabel)\n\t\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\taria-labelledby={labelId}\n\t\t\t\t\t\t\t\t\t\taria-describedby={describedBy}\n\t\t\t\t\t\t\t\t\t\taria-label={\n\t\t\t\t\t\t\t\t\t\t\tlabelId\n\t\t\t\t\t\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t\t\t\t\t\t: isRange\n\t\t\t\t\t\t\t\t\t\t\t\t\t? thumbIndex === 0\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? \"Минимальное значение\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: \"Максимальное значение\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t: \"Значение\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tonPointerDown={handleThumbPointerDown(thumbIndex)}\n\t\t\t\t\t\t\t\t\t\tonKeyDown={handleThumbKeyDown(thumbIndex)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</FloatingPopover>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t{marksDisplay === \"full\" && normalizedMarks.length > 0 && (\n\t\t\t\t\t<div className={styles.marks}>\n\t\t\t\t\t\t{normalizedMarks.map((mark) => {\n\t\t\t\t\t\t\tconst isActive = isRange\n\t\t\t\t\t\t\t\t? mark.value >= visualRangeValue![0] && mark.value <= visualRangeValue![1]\n\t\t\t\t\t\t\t\t: mark.value <= currentSingleValue!;\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tkey={mark.value}\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\tdata-slot=\"mark\"\n\t\t\t\t\t\t\t\t\tdata-active={isActive ? \"\" : undefined}\n\t\t\t\t\t\t\t\t\tclassName={styles.mark}\n\t\t\t\t\t\t\t\t\tstyle={{ left: `${getSliderMarkPercent(mark, normalizedMarks, sliderOptions)}%` }}\n\t\t\t\t\t\t\t\t\taria-label={mark.ariaLabel}\n\t\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\t\t\tonClick={() => handleMarkSelect(mark.value)}>\n\t\t\t\t\t\t\t\t\t<span className={styles.markDot} aria-hidden=\"true\" />\n\t\t\t\t\t\t\t\t\t<span className={styles.markLabel}>{mark.label}</span>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</InputUI>\n\t);\n}\n\nexport function Slider(props: SliderProps) {\n\treturn <SliderBase {...props} mode=\"single\" marksDisplay=\"compact\" />;\n}\n\nexport function SliderRange(props: SliderRangeProps) {\n\treturn <SliderBase {...props} mode=\"range\" marksDisplay=\"compact\" />;\n}\n","import { KeyboardEvent, useCallback, useEffect, useEffectEvent, useMemo, useState } from \"react\";\n\nimport { toFiniteNumber } from \"@ryuzaki13/react-foundation-lib/formatters\";\nimport { resolveNumberScaleBounds } from \"@ryuzaki13/react-foundation-lib/number-scale\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { InputControl, InputText, InputUI, useInputFieldIds } from \"../input\";\nimport { PickerTriggerActions } from \"../picker\";\nimport { Popover } from \"../popover\";\nimport { UiBaseProps } from \"../types\";\nimport uiStyles from \"../ui.module.scss\";\n\nimport {\n\tgetRangeMarkOutputValue,\n\tnormalizeRangeSliderValue,\n\tnormalizeSingleSliderValue,\n\tprepareSliderMarks,\n\ttype SliderMark,\n\ttype SliderMarksPosition,\n\ttype SliderRangeMark,\n\ttype SliderRangeValue\n} from \"./lib\";\nimport { SliderBase } from \"./Slider\";\nimport styles from \"./Slider.module.scss\";\n\ninterface SliderInputCommonProps {\n\t/**\n\t * Минимальная координата шкалы. Marks вне этой границы не участвуют в выборе.\n\t */\n\tmin: number;\n\t/**\n\t * Максимальная координата шкалы. Marks вне этой границы не участвуют в выборе.\n\t */\n\tmax: number;\n\t/**\n\t * Шаг ручного ввода и слайдера, если не заданы marks.\n\t */\n\tstep?: number;\n\t/**\n\t * Способ визуального размещения marks и бегунка в popover.\n\t */\n\tmarksPosition?: SliderMarksPosition;\n\t/**\n\t * Внешний CSS-класс общей обёртки поля.\n\t */\n\tclassName?: string;\n\t/**\n\t * Текст внешней ошибки.\n\t */\n\terror?: string;\n\t/**\n\t * Сбрасывает внешнюю ошибку после успешного commit или выбора в popover.\n\t */\n\tonClearError?: () => void;\n}\n\nexport interface SliderInputProps extends UiBaseProps<number, number | undefined>, SliderInputCommonProps {\n\t/**\n\t * Marks single-слайдера. Single-компонент отдаёт наружу `mark.value`.\n\t */\n\tmarks?: readonly SliderMark[];\n}\n\nexport interface SliderRangeInputProps extends UiBaseProps<SliderRangeValue, SliderRangeValue | undefined>, SliderInputCommonProps {\n\t/**\n\t * Marks range-слайдера. `value` задаёт координату на шкале, `outputValue` задаёт публичное значение для потребителя.\n\t */\n\tmarks?: readonly SliderRangeMark[];\n\t/**\n\t * Показывает вместо ручных сегментов готовый текст по выбранным marks.\n\t * Popover остаётся единственным способом изменить значение через слайдер, а потребитель получает изменение при закрытии popover.\n\t */\n\treadonlyValueText?: boolean;\n}\n\nfunction createSliderToggle({\n\topen,\n\tdisabled,\n\tsetOpen\n}: {\n\topen: boolean;\n\tdisabled?: boolean;\n\tsetOpen: (nextOpen: boolean | ((prev: boolean) => boolean)) => void;\n}) {\n\treturn (\n\t\t<Popover.Trigger passive>\n\t\t\t<div>\n\t\t\t\t<PickerTriggerActions\n\t\t\t\t\topen={open}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\topenAriaLabel=\"Открыть слайдер\"\n\t\t\t\t\tcloseAriaLabel=\"Закрыть слайдер\"\n\t\t\t\t\tonToggleMouseDown={(event) => event.preventDefault()}\n\t\t\t\t\tonToggleClick={() => setOpen((prev) => !prev)}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</Popover.Trigger>\n\t);\n}\n\nfunction formatRangeDraft(\n\tvalue: SliderRangeValue | undefined,\n\toptions: {\n\t\tmin: number;\n\t\tmax: number;\n\t\tstep?: number;\n\t\tmarks?: readonly SliderRangeMark[];\n\t\tmarksPosition?: SliderMarksPosition;\n\t}\n) {\n\tconst normalized = normalizeRangeSliderValue(value, options);\n\n\treturn {\n\t\tstart: normalized[0] === null ? \"-∞\" : String(normalized[0]),\n\t\tend: normalized[1] === null ? \"∞\" : String(normalized[1])\n\t};\n}\n\nfunction parseRangeDraftSegment(value: string, infinityText: string) {\n\tconst trimmed = value.trim();\n\tif (trimmed === \"\" || trimmed === infinityText) {\n\t\treturn null;\n\t}\n\n\treturn toFiniteNumber(trimmed);\n}\n\nfunction getRangeMarkByOutputValue(value: number | null, marks: readonly SliderRangeMark[], endpoint: \"start\" | \"end\") {\n\tconst matchingMarks = marks.filter((mark) => getRangeMarkOutputValue(mark) === value);\n\n\tif (!matchingMarks.length) {\n\t\treturn undefined;\n\t}\n\n\treturn value === null && endpoint === \"end\" ? matchingMarks[matchingMarks.length - 1] : matchingMarks[0];\n}\n\nfunction getRangeMarkReadonlyLabel(mark: SliderRangeMark | undefined, value: number | null) {\n\tif (mark?.readonlyLabel?.trim()) {\n\t\treturn mark.readonlyLabel.trim();\n\t}\n\n\tif (typeof mark?.label === \"string\" || typeof mark?.label === \"number\") {\n\t\treturn String(mark.label);\n\t}\n\t// SHARE: lib/formatters/string.toSafeString\n\treturn value === null ? \"\" : String(value);\n}\n\nfunction getRangeEndpointLabel(value: number | null, marks: readonly SliderRangeMark[], endpoint: \"start\" | \"end\") {\n\tconst mark = getRangeMarkByOutputValue(value, marks, endpoint);\n\treturn getRangeMarkReadonlyLabel(mark, value);\n}\n\nfunction getRangeReadonlyText(value: SliderRangeValue, marks: readonly SliderRangeMark[], placeholder?: string) {\n\tconst [start, end] = value;\n\tconst isStartOpen = start === null;\n\tconst isEndOpen = end === null;\n\n\tif (isStartOpen && isEndOpen) {\n\t\treturn placeholder ?? \"\";\n\t}\n\n\tif (isStartOpen) {\n\t\treturn `Меньше ${getRangeEndpointLabel(end, marks, \"end\")}`;\n\t}\n\n\tif (isEndOpen) {\n\t\treturn `Больше ${getRangeEndpointLabel(start, marks, \"start\")}`;\n\t}\n\n\tif (start === end) {\n\t\treturn `Равно ${getRangeEndpointLabel(start, marks, \"start\")}`;\n\t}\n\n\treturn `От ${getRangeEndpointLabel(start, marks, \"start\")} до ${getRangeEndpointLabel(end, marks, \"end\")}`;\n}\n\nexport function SliderInput({\n\tvalue,\n\tonChange,\n\tmin: rawMin,\n\tmax: rawMax,\n\tstep,\n\tmarks,\n\tmarksPosition = \"value\",\n\tclassName,\n\terror,\n\tonClearError,\n\tlabel,\n\tdescription,\n\tplaceholder,\n\tdisabled,\n\tsize\n}: SliderInputProps) {\n\tconst { min, max } = useMemo(() => resolveNumberScaleBounds(rawMin, rawMax), [rawMin, rawMax]);\n\tconst normalizedMarks = useMemo(() => prepareSliderMarks(marks, min, max), [marks, min, max]);\n\tconst sliderOptions = useMemo(\n\t\t() => ({\n\t\t\tmin,\n\t\t\tmax,\n\t\t\tstep,\n\t\t\tmarks: normalizedMarks,\n\t\t\tmarksPosition\n\t\t}),\n\t\t[min, max, step, normalizedMarks, marksPosition]\n\t);\n\tconst normalizedValue = normalizeSingleSliderValue(value, sliderOptions);\n\n\tconst [open, setOpen] = useState(false);\n\tconst [draftValue, setDraftValue] = useState(String(normalizedValue));\n\n\tconst syncDraftValue = useEffectEvent((nextValue: string) => {\n\t\tsetDraftValue(nextValue);\n\t});\n\n\tuseEffect(() => {\n\t\tsyncDraftValue(String(normalizedValue));\n\t}, [normalizedValue]);\n\n\tconst commitDraftValue = useCallback(() => {\n\t\tif (disabled) {\n\t\t\tsetDraftValue(String(normalizedValue));\n\t\t\treturn;\n\t\t}\n\n\t\tconst parsedValue = toFiniteNumber(draftValue);\n\t\tif (parsedValue === undefined) {\n\t\t\tsetDraftValue(String(normalizedValue));\n\t\t\treturn;\n\t\t}\n\n\t\tconst nextValue = normalizeSingleSliderValue(parsedValue, sliderOptions);\n\t\tif (value !== nextValue) {\n\t\t\tonChange(nextValue);\n\t\t\tonClearError?.();\n\t\t}\n\n\t\tsetDraftValue(String(nextValue));\n\t}, [disabled, draftValue, normalizedValue, onChange, onClearError, sliderOptions, value]);\n\n\tconst handleDraftKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n\t\tif (event.key !== \"Enter\") {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\t\tcommitDraftValue();\n\t};\n\n\tconst handleSliderChange = (nextValue: number) => {\n\t\tonChange(nextValue);\n\t\tsetDraftValue(String(nextValue));\n\t\tonClearError?.();\n\t};\n\n\treturn (\n\t\t<Popover open={open} onOpenChange={setOpen}>\n\t\t\t<InputText\n\t\t\t\tlabel={label}\n\t\t\t\tdescription={description}\n\t\t\t\tplaceholder={placeholder}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tsize={size}\n\t\t\t\tclassName={className}\n\t\t\t\terror={error}\n\t\t\t\tvalue={draftValue}\n\t\t\t\tonChange={setDraftValue}\n\t\t\t\tonBlur={commitDraftValue}\n\t\t\t\tonKeyDown={handleDraftKeyDown}\n\t\t\t\tendAdornmentWidth=\"var(--control-height)\"\n\t\t\t\tendAdornment={createSliderToggle({ open, disabled, setOpen })}\n\t\t\t/>\n\n\t\t\t<Popover.Content background=\"primary\">\n\t\t\t\t<div className={styles.popoverContent}>\n\t\t\t\t\t<SliderBase\n\t\t\t\t\t\tmode=\"single\"\n\t\t\t\t\t\tmin={min}\n\t\t\t\t\t\tmax={max}\n\t\t\t\t\t\tstep={step}\n\t\t\t\t\t\tmarks={normalizedMarks}\n\t\t\t\t\t\tmarksPosition={marksPosition}\n\t\t\t\t\t\tmarksDisplay=\"full\"\n\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\tonChange={handleSliderChange}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</Popover.Content>\n\t\t</Popover>\n\t);\n}\n\nexport function SliderRangeInput({\n\tvalue,\n\tonChange,\n\tmin: rawMin,\n\tmax: rawMax,\n\tstep,\n\tmarks,\n\tmarksPosition = \"value\",\n\tclassName,\n\terror,\n\tonClearError,\n\tlabel,\n\tdescription,\n\treadonlyValueText,\n\tplaceholder,\n\tdisabled,\n\tsize\n}: SliderRangeInputProps) {\n\tconst { min, max } = useMemo(() => resolveNumberScaleBounds(rawMin, rawMax), [rawMin, rawMax]);\n\tconst normalizedMarks = useMemo(() => prepareSliderMarks(marks, min, max), [marks, min, max]);\n\tconst sliderOptions = useMemo(\n\t\t() => ({\n\t\t\tmin,\n\t\t\tmax,\n\t\t\tstep,\n\t\t\tmarks: normalizedMarks,\n\t\t\tmarksPosition\n\t\t}),\n\t\t[min, max, step, normalizedMarks, marksPosition]\n\t);\n\tconst normalizedValue = useMemo(() => normalizeRangeSliderValue(value, sliderOptions), [sliderOptions, value]);\n\tconst formattedValue = useMemo(() => formatRangeDraft(normalizedValue, sliderOptions), [normalizedValue, sliderOptions]);\n\n\tconst [open, setOpen] = useState(false);\n\tconst [draftStart, setDraftStart] = useState(formattedValue.start);\n\tconst [draftEnd, setDraftEnd] = useState(formattedValue.end);\n\tconst [popoverValue, setPopoverValue] = useState<SliderRangeValue>(normalizedValue);\n\n\tconst syncDraftValue = useEffectEvent((start: string, end: string) => {\n\t\tsetDraftStart(start);\n\t\tsetDraftEnd(end);\n\t});\n\n\tuseEffect(() => {\n\t\tif (open) {\n\t\t\treturn;\n\t\t}\n\n\t\tsyncDraftValue(formattedValue.start, formattedValue.end);\n\t}, [formattedValue.start, formattedValue.end, normalizedValue, open]);\n\n\tconst { controlId, labelId, descriptionId, errorId, describedBy } = useInputFieldIds({\n\t\thasLabel: label !== undefined && label !== null,\n\t\thasDescription: !!description,\n\t\thasError: !!error\n\t});\n\n\tconst rollbackDraftValue = useCallback(() => {\n\t\tsetDraftStart(formattedValue.start);\n\t\tsetDraftEnd(formattedValue.end);\n\t}, [formattedValue.end, formattedValue.start]);\n\n\tconst commitDraftValue = useCallback(() => {\n\t\tif (disabled) {\n\t\t\trollbackDraftValue();\n\t\t\treturn;\n\t\t}\n\n\t\tconst parsedStart = parseRangeDraftSegment(draftStart, \"-∞\");\n\t\tconst parsedEnd = parseRangeDraftSegment(draftEnd, \"∞\");\n\n\t\tif (parsedStart === undefined || parsedEnd === undefined) {\n\t\t\trollbackDraftValue();\n\t\t\treturn;\n\t\t}\n\n\t\tconst nextValue = normalizeRangeSliderValue([parsedStart, parsedEnd], sliderOptions);\n\t\tif (!areRangeDraftValuesEqual(normalizedValue, nextValue)) {\n\t\t\tonChange(nextValue);\n\t\t\tonClearError?.();\n\t\t}\n\n\t\tconst nextDraft = formatRangeDraft(nextValue, sliderOptions);\n\t\tsetDraftStart(nextDraft.start);\n\t\tsetDraftEnd(nextDraft.end);\n\t\tsetPopoverValue(nextValue);\n\t}, [disabled, draftEnd, draftStart, normalizedValue, onChange, onClearError, rollbackDraftValue, sliderOptions]);\n\n\tconst commitPopoverValue = useCallback(\n\t\t(nextValue: SliderRangeValue) => {\n\t\t\tconst normalizedNextValue = normalizeRangeSliderValue(nextValue, sliderOptions);\n\t\t\tif (!areRangeDraftValuesEqual(normalizedValue, normalizedNextValue)) {\n\t\t\t\tonChange(normalizedNextValue);\n\t\t\t\tonClearError?.();\n\t\t\t}\n\n\t\t\tconst nextDraft = formatRangeDraft(normalizedNextValue, sliderOptions);\n\t\t\tsetDraftStart(nextDraft.start);\n\t\t\tsetDraftEnd(nextDraft.end);\n\t\t\tsetPopoverValue(normalizedNextValue);\n\t\t},\n\t\t[normalizedValue, onChange, onClearError, sliderOptions]\n\t);\n\n\tconst handleOpenChange = (nextOpen: boolean) => {\n\t\tif (!open && nextOpen) {\n\t\t\tsetPopoverValue(normalizedValue);\n\t\t\tsetDraftStart(formattedValue.start);\n\t\t\tsetDraftEnd(formattedValue.end);\n\t\t}\n\n\t\tif (open && !nextOpen && !disabled) {\n\t\t\tcommitPopoverValue(popoverValue);\n\t\t}\n\n\t\tsetOpen(nextOpen);\n\t};\n\n\tconst handleDraftKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n\t\tif (event.key !== \"Enter\") {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\t\tcommitDraftValue();\n\t};\n\n\tconst handleSliderChange = (nextValue: SliderRangeValue) => {\n\t\tconst normalizedNextValue = normalizeRangeSliderValue(nextValue, sliderOptions);\n\t\tsetPopoverValue(normalizedNextValue);\n\t\tconst nextDraft = formatRangeDraft(normalizedNextValue, sliderOptions);\n\t\tsetDraftStart(nextDraft.start);\n\t\tsetDraftEnd(nextDraft.end);\n\t};\n\tconst displayValue = open ? popoverValue : normalizedValue;\n\tconst readonlyTextValue = readonlyValueText ? getRangeReadonlyText(displayValue, normalizedMarks, placeholder) : undefined;\n\tconst setRangeOpen = (nextOpen: boolean | ((prev: boolean) => boolean)) => {\n\t\thandleOpenChange(typeof nextOpen === \"function\" ? nextOpen(open) : nextOpen);\n\t};\n\n\treturn (\n\t\t<Popover open={open} onOpenChange={handleOpenChange}>\n\t\t\t<InputUI\n\t\t\t\tlabel={label}\n\t\t\t\tdescription={description}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tclassName={className}\n\t\t\t\tsize={size}\n\t\t\t\terror={error}\n\t\t\t\tcontrolId={controlId}\n\t\t\t\tlabelId={labelId}\n\t\t\t\tdescriptionId={descriptionId}\n\t\t\t\terrorId={errorId}>\n\t\t\t\t<InputControl\n\t\t\t\t\tendAdornmentWidth=\"var(--control-height)\"\n\t\t\t\t\tendAdornment={createSliderToggle({ open, disabled, setOpen: setRangeOpen })}>\n\t\t\t\t\t{({ controlClassName }) => (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tid={controlId}\n\t\t\t\t\t\t\tclassName={cn(uiStyles.uiInputControlFake, styles.rangeInputControl, controlClassName)}\n\t\t\t\t\t\t\tdata-invalid={error ? \"\" : undefined}\n\t\t\t\t\t\t\tdata-disabled={disabled || undefined}\n\t\t\t\t\t\t\trole=\"group\"\n\t\t\t\t\t\t\taria-invalid={!!error || undefined}\n\t\t\t\t\t\t\taria-label={typeof label === \"string\" ? label : \"Диапазон\"}\n\t\t\t\t\t\t\taria-labelledby={typeof label === \"string\" ? undefined : labelId}\n\t\t\t\t\t\t\taria-describedby={describedBy}>\n\t\t\t\t\t\t\t{readonlyValueText ? (\n\t\t\t\t\t\t\t\t<span className={cn(\"flexEllipsis\", !readonlyTextValue && uiStyles.uiPlaceholder)}>\n\t\t\t\t\t\t\t\t\t{readonlyTextValue || placeholder}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\t\t\tinputMode=\"decimal\"\n\t\t\t\t\t\t\t\t\t\tclassName={styles.rangeSegmentInput}\n\t\t\t\t\t\t\t\t\t\tvalue={draftStart}\n\t\t\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\t\t\t\taria-label=\"Начало диапазона\"\n\t\t\t\t\t\t\t\t\t\tonChange={(event) => setDraftStart(event.target.value)}\n\t\t\t\t\t\t\t\t\t\tonBlur={commitDraftValue}\n\t\t\t\t\t\t\t\t\t\tonKeyDown={handleDraftKeyDown}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<span className={styles.rangeSeparator} data-disabled={disabled || undefined}>\n\t\t\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\t\t\tinputMode=\"decimal\"\n\t\t\t\t\t\t\t\t\t\tclassName={styles.rangeSegmentInput}\n\t\t\t\t\t\t\t\t\t\tvalue={draftEnd}\n\t\t\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\t\t\t\taria-label=\"Конец диапазона\"\n\t\t\t\t\t\t\t\t\t\tonChange={(event) => setDraftEnd(event.target.value)}\n\t\t\t\t\t\t\t\t\t\tonBlur={commitDraftValue}\n\t\t\t\t\t\t\t\t\t\tonKeyDown={handleDraftKeyDown}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</InputControl>\n\t\t\t</InputUI>\n\n\t\t\t<Popover.Content background=\"primary\">\n\t\t\t\t<div className={styles.popoverContent}>\n\t\t\t\t\t<SliderBase\n\t\t\t\t\t\tmode=\"range\"\n\t\t\t\t\t\tmin={min}\n\t\t\t\t\t\tmax={max}\n\t\t\t\t\t\tstep={step}\n\t\t\t\t\t\tmarks={normalizedMarks}\n\t\t\t\t\t\tmarksPosition={marksPosition}\n\t\t\t\t\t\tmarksDisplay=\"full\"\n\t\t\t\t\t\tvalue={popoverValue}\n\t\t\t\t\t\tonChange={handleSliderChange}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</Popover.Content>\n\t\t</Popover>\n\t);\n}\n\nfunction areRangeDraftValuesEqual(left: SliderRangeValue, right: SliderRangeValue) {\n\treturn left[0] === right[0] && left[1] === right[1];\n}\n"],"mappings":"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"}
|