@ryuzaki13/react-foundation-ui 1.4.2 → 1.4.4
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.js +12 -11
- package/dist/advanced-search/index.js.map +1 -1
- package/dist/badge/index.js +1 -1
- package/dist/base-table/index.js +2 -2
- package/dist/button/index.js +1 -1
- package/dist/chunks/{CalendarView-KCkhCtK-.js → CalendarView-Z_XWk7aI.js} +8 -8
- package/dist/chunks/{CalendarView-KCkhCtK-.js.map → CalendarView-Z_XWk7aI.js.map} +1 -1
- package/dist/chunks/{ImageViewerRuntime-RN49by8Y.js → ImageViewerRuntime-BMs3BBkV.js} +4 -4
- package/dist/chunks/{ImageViewerRuntime-RN49by8Y.js.map → ImageViewerRuntime-BMs3BBkV.js.map} +1 -1
- package/dist/chunks/{TextEditorLexicalClient-CVTrglWP.js → TextEditorLexicalClient-CK8j3RA4.js} +16 -18
- package/dist/chunks/{TextEditorLexicalClient-CVTrglWP.js.map → TextEditorLexicalClient-CK8j3RA4.js.map} +1 -1
- package/dist/chunks/{badge-Cri0-kVK.js → badge-DwIUjH0a.js} +2 -2
- package/dist/chunks/{badge-Cri0-kVK.js.map → badge-DwIUjH0a.js.map} +1 -1
- package/dist/chunks/{base-table-D5IqsjQD.js → base-table-BFsVwXg3.js} +13 -12
- package/dist/chunks/{base-table-D5IqsjQD.js.map → base-table-BFsVwXg3.js.map} +1 -1
- package/dist/chunks/{button-CC0Jdx1j.js → button-BU2kRzwu.js} +2 -2
- package/dist/chunks/{button-CC0Jdx1j.js.map → button-BU2kRzwu.js.map} +1 -1
- package/dist/chunks/check-box-Dd3YFuxd.js.map +1 -1
- package/dist/chunks/{context-menu-DQeR3y7M.js → context-menu-C6RO7soI.js} +7 -2
- package/dist/chunks/{context-menu-DQeR3y7M.js.map → context-menu-C6RO7soI.js.map} +1 -1
- package/dist/chunks/{date-input-DBJisPRz.js → date-input-BzExUQnc.js} +5 -5
- package/dist/chunks/{date-input-DBJisPRz.js.map → date-input-BzExUQnc.js.map} +1 -1
- package/dist/chunks/{flex-DYZ0IbU6.js → flex-C7njxZ74.js} +10 -7
- package/dist/chunks/{flex-DYZ0IbU6.js.map → flex-C7njxZ74.js.map} +1 -1
- package/dist/chunks/floating-arrow-BE-z4QkE.js.map +1 -1
- package/dist/chunks/{input-BCJfUdK_.js → input-Bp6_Ucgr.js} +15 -15
- package/dist/chunks/{input-BCJfUdK_.js.map → input-Bp6_Ucgr.js.map} +1 -1
- package/dist/chunks/{input-files-Dcc5K-_1.js → input-files-D1JzSw_Y.js} +2 -2
- package/dist/chunks/{input-files-Dcc5K-_1.js.map → input-files-D1JzSw_Y.js.map} +1 -1
- package/dist/chunks/{input-search-B7HmrAM7.js → input-search-Bkhcinru.js} +2 -2
- package/dist/chunks/{input-search-B7HmrAM7.js.map → input-search-Bkhcinru.js.map} +1 -1
- package/dist/chunks/{misc-DIF5h9ba.js → misc-BYxxlJz6.js} +3 -3
- package/dist/chunks/{misc-DIF5h9ba.js.map → misc-BYxxlJz6.js.map} +1 -1
- package/dist/chunks/{modal-DXHX_sA-.js → modal-paexEF0j.js} +4 -5
- package/dist/chunks/{modal-DXHX_sA-.js.map → modal-paexEF0j.js.map} +1 -1
- package/dist/chunks/{multi-select-CWx12rgb.js → multi-select-COEkc8Qc.js} +4 -5
- package/dist/chunks/multi-select-COEkc8Qc.js.map +1 -0
- package/dist/chunks/{picker-BAQ9NeHe.js → picker-e6IsrMUG.js} +3 -3
- package/dist/chunks/{picker-BAQ9NeHe.js.map → picker-e6IsrMUG.js.map} +1 -1
- package/dist/chunks/{popover-xJJqy1v6.js → popover-CGU3MlsH.js} +14 -14
- package/dist/chunks/{popover-xJJqy1v6.js.map → popover-CGU3MlsH.js.map} +1 -1
- package/dist/chunks/radio-group-CM9Lg_nc.js.map +1 -1
- package/dist/chunks/{select-BPb-eL3O.js → select-BON0S9Dr.js} +115 -115
- package/dist/chunks/select-BON0S9Dr.js.map +1 -0
- package/dist/chunks/sortable-DcTIAbjD.js.map +1 -1
- package/dist/chunks/{table-xMAjqtcY.js → table-Dd5BcC0k.js} +3 -3
- package/dist/chunks/{table-xMAjqtcY.js.map → table-Dd5BcC0k.js.map} +1 -1
- package/dist/chunks/{table-column-interactions-BGd5Lwy9.js → table-column-interactions-DzEvVuXe.js} +8 -5
- package/dist/chunks/{table-column-interactions-BGd5Lwy9.js.map → table-column-interactions-DzEvVuXe.js.map} +1 -1
- package/dist/chunks/useODataSelectBase-CKe1AVMI.js.map +1 -1
- package/dist/chunks/wheel-picker-FS58cRsQ.js.map +1 -1
- package/dist/context-menu/index.js +1 -1
- package/dist/date-input/index.js +2 -2
- package/dist/date-time-input/index.js +4 -4
- package/dist/date-time-input/index.js.map +1 -1
- package/dist/detail/index.js.map +1 -1
- package/dist/dialog/index.js.map +1 -1
- package/dist/disclosure/index.js +1 -1
- package/dist/disclosure/index.js.map +1 -1
- package/dist/drop-zone/index.js +1 -1
- package/dist/drop-zone/index.js.map +1 -1
- package/dist/errors/index.js +1 -1
- package/dist/errors/index.js.map +1 -1
- package/dist/expandable-action-panel/index.js +2 -2
- package/dist/expandable-action-panel/index.js.map +1 -1
- package/dist/flex/index.js +1 -1
- package/dist/fullscreen-portal/index.js +3 -3
- package/dist/fullscreen-portal/index.js.map +1 -1
- package/dist/image/index.js +5 -5
- package/dist/image/index.js.map +1 -1
- package/dist/input/index.js +1 -1
- package/dist/input-date-time/index.js +1 -1
- package/dist/input-date-time/index.js.map +1 -1
- package/dist/input-file/index.js +1 -1
- package/dist/input-file/index.js.map +1 -1
- package/dist/input-files/index.js +1 -1
- package/dist/input-image/index.js +1 -1
- package/dist/input-image/index.js.map +1 -1
- package/dist/input-search/index.js +1 -1
- package/dist/layout-picker/index.js +3 -4
- package/dist/layout-picker/index.js.map +1 -1
- package/dist/layout-picker/ui/LayoutPicker.d.ts.map +1 -1
- package/dist/list/index.js +7 -7
- package/dist/list/index.js.map +1 -1
- package/dist/listbox/index.js.map +1 -1
- package/dist/misc/index.js +1 -1
- package/dist/modal/index.js +1 -1
- package/dist/multi-select/index.js +1 -1
- package/dist/multi-select/ui/MultiSelect.d.ts.map +1 -1
- package/dist/notifications/index.js +13 -11
- package/dist/notifications/index.js.map +1 -1
- package/dist/pages/index.js.map +1 -1
- package/dist/panel/index.js.map +1 -1
- package/dist/picker/index.js +1 -1
- package/dist/picker/types.d.ts +1 -1
- package/dist/picker/types.d.ts.map +1 -1
- package/dist/popover/index.js +1 -1
- package/dist/preset-range-date-input/index.js +2 -2
- package/dist/preset-range-date-input/index.js.map +1 -1
- package/dist/preset-select/index.js +1 -1
- package/dist/radio-button/index.js.map +1 -1
- package/dist/select/Select.d.ts.map +1 -1
- package/dist/select/index.js +1 -1
- package/dist/simple-table/index.js +1 -1
- package/dist/slider/index.js +27 -24
- package/dist/slider/index.js.map +1 -1
- package/dist/splitter/index.js.map +1 -1
- package/dist/state-select/index.js +12 -10
- package/dist/state-select/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/switch/index.js +1 -1
- package/dist/switch/index.js.map +1 -1
- package/dist/table/index.js +1 -1
- package/dist/table-column-interactions/index.js +1 -1
- package/dist/table-sorting/index.js +1 -1
- package/dist/table-sorting/index.js.map +1 -1
- package/dist/tabs/index.js +6 -6
- package/dist/tabs/index.js.map +1 -1
- package/dist/tag-input/index.js +1 -1
- package/dist/tag-input/index.js.map +1 -1
- package/dist/text/index.js +10 -8
- package/dist/text/index.js.map +1 -1
- package/dist/text-editor/index.js +2 -2
- package/dist/textarea/index.js +1 -1
- package/dist/textarea/index.js.map +1 -1
- package/dist/toggle/index.js.map +1 -1
- package/dist/toolbar/index.js +1 -2
- package/dist/toolbar/index.js.map +1 -1
- package/dist/tree/index.js.map +1 -1
- package/dist/tree-select/TreePickerBase.d.ts.map +1 -1
- package/dist/tree-select/index.js +134 -132
- package/dist/tree-select/index.js.map +1 -1
- package/dist/tree-table/index.js +2 -2
- package/dist/tree-table/index.js.map +1 -1
- package/package.json +52 -59
- package/storybook-static/assets/{Badge-SZ48u9qp.js → Badge-Bh73-APE.js} +11 -11
- package/storybook-static/assets/Badge.stories-gNFtCWnR.js +54 -0
- package/storybook-static/assets/{Button-CFCpYiPy.js → Button-O9QPAftp.js} +10 -10
- package/storybook-static/assets/Button-mjF9HSg0.js +12 -0
- package/storybook-static/assets/Button.stories-wkiE0c_a.js +75 -0
- package/storybook-static/assets/CalendarView-CqKlnF8k.js +1 -0
- package/storybook-static/assets/{DateInput-BfFTwd_P.css → CalendarView-DKvrkS40.css} +1 -1
- package/storybook-static/assets/{CheckBox-FoMSruZC.js → CheckBox-CB8fTQF0.js} +11 -11
- package/storybook-static/assets/CheckBox-Clpeg9q7.js +2 -0
- package/storybook-static/assets/CheckBox.module-BBzuj5He.js +1 -0
- package/storybook-static/assets/CheckBox.stories-pfWBxvOy.js +60 -0
- package/storybook-static/assets/Color-6AOWCN3U-CVvkiihj.js +1 -0
- package/storybook-static/assets/ContextMenu-Sv4wfyS3.js +1 -0
- package/storybook-static/assets/{ContextMenu-CU_1kOzV.js → ContextMenu-eGnlhRRu.js} +9 -9
- package/storybook-static/assets/ContextMenu.stories-CVw3hOvY.js +90 -0
- package/storybook-static/assets/DateInput-D8_Oleoy.js +1 -0
- package/storybook-static/assets/{DateInput-BeZ5esVE.js → DateInput-DQDplLib.js} +11 -11
- package/storybook-static/assets/DateInput-pmGiwdvw.css +1 -0
- package/storybook-static/assets/{DateInput.stories-Bkw2r8CD.js → DateInput.stories-BNpS4CND.js} +2 -2
- package/storybook-static/assets/DateRangePresetSelect-Bfx-d5qg.js +3 -0
- package/storybook-static/assets/{DateRangePresetSelect-C_mLvEoK.js → DateRangePresetSelect-DCBEf98i.js} +8 -8
- package/storybook-static/assets/DateRangePresetSelect.stories-PAV2jgQb.js +11 -0
- package/storybook-static/assets/{Detail-WzciiK9S.js → Detail-DvmdQCue.js} +11 -11
- package/storybook-static/assets/Detail.stories-CEm00aSN.js +44 -0
- package/storybook-static/assets/{Dialog-CwLsVxJY.js → Dialog-3I2Y7jD7.js} +9 -9
- package/storybook-static/assets/Dialog.stories-lcadmonM.js +31 -0
- package/storybook-static/assets/{Disclosure-BlRuGrk2.js → Disclosure-DUIQ37oh.js} +10 -10
- package/storybook-static/assets/Disclosure.stories-BeizaZWP.js +41 -0
- package/storybook-static/assets/DocsRenderer-JROSPFPF-DwPk6ai7.js +2 -0
- package/storybook-static/assets/{DropZone-Cr3nfCWA.js → DropZone-BGuCU5dq.js} +10 -10
- package/storybook-static/assets/DropZone.stories-B4J6OZ3T.js +44 -0
- package/storybook-static/assets/ExpandableActionPanel.stories-gCrqbhG6.js +20 -0
- package/storybook-static/assets/{Flex-C10912WS.js → Flex-CBwbh1yu.js} +18 -18
- package/storybook-static/assets/Flex.stories-cdk6vRZq.js +300 -0
- package/storybook-static/assets/FlexContainer-LmZIdhq2.js +1 -0
- package/storybook-static/assets/FlexItem-vkDYa5tA.js +3 -0
- package/storybook-static/assets/FloatingPopover-D4h-c24R.js +1 -0
- package/storybook-static/assets/FloatingPopover-DC84VrV3.css +1 -0
- package/storybook-static/assets/FormattedTableCell-CY3E21k8.css +1 -0
- package/storybook-static/assets/FormattedTableCell-Dh-kHTOC.js +18 -0
- package/storybook-static/assets/Grid-BCzygAqy.js +52 -0
- package/storybook-static/assets/{Grid-G88y3oB_.js → Grid-BkKqSMfk.js} +18 -18
- package/storybook-static/assets/{Grid.stories-BV7zL-6n.js → Grid.stories-828arrPi.js} +2 -2
- package/storybook-static/assets/{Grid-Bb0gH6CX.js → GridContainer-qDguE1HS.js} +2 -53
- package/storybook-static/assets/ImageCropper.stories-CrIWrKKR.js +115 -0
- package/storybook-static/assets/ImageRenderer-F3AaZx-K.js +2 -0
- package/storybook-static/assets/ImageRenderer.stories-l3PnRYxy.js +22 -0
- package/storybook-static/assets/ImageView.stories-C6uhkvCN.js +9 -0
- package/storybook-static/assets/{ImageViewer.stories-PlFXSB5n.js → ImageViewer.stories-BSPiv5lU.js} +5 -5
- package/storybook-static/assets/ImageViewerRuntime-BOpMGgz6.js +51 -0
- package/storybook-static/assets/Input-Co--DMHY.js +3 -0
- package/storybook-static/assets/{Input-pyUNDVtk.js → Input-D-ZrbHVw.js} +11 -11
- package/storybook-static/assets/Input.stories-vqPv6pLx.js +38 -0
- package/storybook-static/assets/{InputDateTime-CWk5KBwD.js → InputDateTime-DHBVbRii.js} +11 -11
- package/storybook-static/assets/InputDateTime.stories-BAvLMBuk.js +35 -0
- package/storybook-static/assets/{InputFile-BLQq7mY9.js → InputFile-B9TVOEZV.js} +10 -10
- package/storybook-static/assets/InputFile.stories-CypBLWFh.js +36 -0
- package/storybook-static/assets/{InputFiles-B6J4XBdP.js → InputFiles-CxZkOZFK.js} +10 -10
- package/storybook-static/assets/InputFiles.stories-BGwCp7OC.js +33 -0
- package/storybook-static/assets/InputFilesList-OEX4zGI3.js +1 -0
- package/storybook-static/assets/{InputImage--2PSB_E_.js → InputImage-31A6fxSf.js} +10 -10
- package/storybook-static/assets/InputImage.stories-CdpOudXI.js +51 -0
- package/storybook-static/assets/{LayoutPicker-RZDisgZ_.js → LayoutPicker-Dc55ovYM.js} +13 -13
- package/storybook-static/assets/LayoutPicker.stories-DXcn-WXQ.js +449 -0
- package/storybook-static/assets/{Listbox-xwfNjBpV.js → Listbox-DF8E6oMR.js} +10 -10
- package/storybook-static/assets/Listbox.stories-C98_9wX3.js +47 -0
- package/storybook-static/assets/{Modal-HJt_Y-a6.js → Modal-CXvDgktT.js} +12 -12
- package/storybook-static/assets/Modal.stories-DAC_QwN7.js +180 -0
- package/storybook-static/assets/MultiSelect-B-wX6JPo.js +2 -0
- package/storybook-static/assets/{MultiSelect-CvNsFdE4.js → MultiSelect-DN4foQlG.js} +11 -11
- package/storybook-static/assets/MultiSelect.stories-CgKNQmma.js +29 -0
- package/storybook-static/assets/MultiSelectToken-DDu5n78h.css +1 -0
- package/storybook-static/assets/MultiSelectToken-fjW8p4YG.js +1 -0
- package/storybook-static/assets/NoData-C7KqaHUh.css +1 -0
- package/storybook-static/assets/NoData-W7wK8oTW.js +1 -0
- package/storybook-static/assets/{NotificationsHost-DXCf3CQX.js → NotificationsHost-D1UoWmF8.js} +9 -9
- package/storybook-static/assets/NotificationsHost.stories-BWUuMmPl.js +25 -0
- package/storybook-static/assets/{ODataMultiSelect-CIJNiwGb.js → ODataMultiSelect-DE1V4el8.js} +15 -15
- package/storybook-static/assets/ODataMultiSelect.stories-Q1DUIL2W.js +73 -0
- package/storybook-static/assets/{ODataSelect-BDga9TUb.js → ODataSelect-CtoT2Wxx.js} +15 -15
- package/storybook-static/assets/ODataSelect.stories-DLi7Rwzk.js +73 -0
- package/storybook-static/assets/ODataTreeMultiSelect-DEZfgyPK.js +19 -0
- package/storybook-static/assets/ODataTreeMultiSelect.stories-H42q78xI.js +30 -0
- package/storybook-static/assets/ODataTreeSelect-BeylEiPN.js +17 -0
- package/storybook-static/assets/ODataTreeSelect.stories-MOILmtfY.js +24 -0
- package/storybook-static/assets/OneStepScroller-BSvYN6QP.js +5 -0
- package/storybook-static/assets/OneStepScroller-NRYd-egY.css +1 -0
- package/storybook-static/assets/{PeriodSelect-BJbjl62O.js → PeriodSelect-KQFGCxq6.js} +13 -13
- package/storybook-static/assets/PeriodSelect.stories-BIYx4_Yy.js +64 -0
- package/storybook-static/assets/PickerSelectionToolbar-Cvv8vTZm.js +2 -0
- package/storybook-static/assets/PickerTriggerActions-BBZmXagt.js +1 -0
- package/storybook-static/assets/{Popover-Dg2T0DoN.js → Popover-7YZIq8Fi.js} +11 -11
- package/storybook-static/assets/Popover-D6gSyjaW.js +2 -0
- package/storybook-static/assets/Popover-DGX7JNNK.css +1 -0
- package/storybook-static/assets/Popover.stories-DM69Ztws.js +69 -0
- package/storybook-static/assets/{PresetRangeDateInput-CNmTMNHF.js → PresetRangeDateInput-Ch6GapcJ.js} +8 -8
- package/storybook-static/assets/PresetRangeDateInput.stories-Cqd4eb0N.js +15 -0
- package/storybook-static/assets/PresetSelect-C8uIYhPJ.js +5 -0
- package/storybook-static/assets/{RadioButton-2rfUPkwC.js → RadioButton-BQjiyASl.js} +10 -10
- package/storybook-static/assets/RadioButton.stories-Cbho4i83.js +36 -0
- package/storybook-static/assets/RadioGroup-DNqu6WaC.js +1 -0
- package/storybook-static/assets/{RadioGroup-BduGGVKj.js → RadioGroup-vw4ObVj-.js} +10 -10
- package/storybook-static/assets/RadioGroup.stories-B-WQzZW_.js +42 -0
- package/storybook-static/assets/Scrollable-DrxMuH2M.js +1 -0
- package/storybook-static/assets/{Select-DnZ83aZs.js → Select-BxigZNtu.js} +13 -13
- package/storybook-static/assets/Select-X_O4M8Hi.js +12 -0
- package/storybook-static/assets/Select.stories-BpTrYJSr.js +46 -0
- package/storybook-static/assets/SelectOptionContent-RAmgWCOm.js +1 -0
- package/storybook-static/assets/{SerializableSelect-BiFhAxAJ.js → SerializableSelect-CA9wjk2m.js} +12 -12
- package/storybook-static/assets/SerializableSelect.stories-DXd4E-3U.js +46 -0
- package/storybook-static/assets/{SingleDateTimeInput-Bc-ifbML.js → SingleDateTimeInput-BeFLYUBF.js} +12 -12
- package/storybook-static/assets/SingleDateTimeInput.stories-B1aZ754N.js +78 -0
- package/storybook-static/assets/Slider-BYrHesOR.js +1 -0
- package/storybook-static/assets/{Slider-DfjBSsR3.js → Slider-BdWBkKp4.js} +15 -15
- package/storybook-static/assets/Slider.stories-CgmOhVBs.js +77 -0
- package/storybook-static/assets/{SliderInput-o9uCcVMP.js → SliderInput-QmF2VQWA.js} +16 -16
- package/storybook-static/assets/SliderInput.stories-MjSmhiOM.js +68 -0
- package/storybook-static/assets/{Sortable-B6Y9Q9Yn.js → Sortable-D5OTpesH.js} +13 -13
- package/storybook-static/assets/Sortable.stories-yz3c5EhY.js +141 -0
- package/storybook-static/assets/{Splitter-CfUVnAs7.js → Splitter-DVq6XBul.js} +11 -11
- package/storybook-static/assets/Splitter.stories-CopPw1_p.js +22 -0
- package/storybook-static/assets/{StateSelect-h0i4M4vO.js → StateSelect-ojwXeKmx.js} +10 -10
- package/storybook-static/assets/StateSelect.stories-D46m5HNn.js +47 -0
- package/storybook-static/assets/StringToggle.stories-ByYMmlXl.js +6 -0
- package/storybook-static/assets/{Switch-CPKaENqL.js → Switch-Dy4Pahkn.js} +10 -10
- package/storybook-static/assets/Switch.stories-EiAb5Z-D.js +26 -0
- package/storybook-static/assets/{Table-xV66crR1.js → Table-BO6Oa4JV.js} +22 -22
- package/storybook-static/assets/Table.stories--TpBKwmP.js +122 -0
- package/storybook-static/assets/{Tabs-v9YZeJoc.js → Tabs-7c93qVyH.js} +15 -15
- package/storybook-static/assets/Tabs.stories-DXZ0r2ix.js +58 -0
- package/storybook-static/assets/TagInput.stories-CoM8rXwa.js +18 -0
- package/storybook-static/assets/Text-BPlJUr3R.js +1 -0
- package/storybook-static/assets/{Textarea-CRThqX0z.js → Textarea-D3S4MkiX.js} +10 -10
- package/storybook-static/assets/Textarea.stories-47k8uHdB.js +27 -0
- package/storybook-static/assets/TimePanel-C2iZ9Qr6.js +1 -0
- package/storybook-static/assets/TimePanel.stories-JTjIv6z1.js +25 -0
- package/storybook-static/assets/{Toggle-CzopviU2.js → Toggle-CHmajZE5.js} +10 -10
- package/storybook-static/assets/Toggle-OlKw8qaK.js +1 -0
- package/storybook-static/assets/Toggle.stories-k4Z8qQVs.js +30 -0
- package/storybook-static/assets/TreeMultiSelect-BC_n1Wb-.js +1 -0
- package/storybook-static/assets/TreeMultiSelect-dOg0l7rk.js +19 -0
- package/storybook-static/assets/TreeMultiSelect.stories-CAzZRxn5.js +35 -0
- package/storybook-static/assets/TreePickerBase-ycYQYQgi.js +22 -0
- package/storybook-static/assets/TreeSelect-BrNyI_Qx.js +16 -0
- package/storybook-static/assets/TreeSelect-CDecTnag.js +1 -0
- package/storybook-static/assets/TreeSelect.stories-BUOw2Rwn.js +18 -0
- package/storybook-static/assets/{TreeTable-DbzoCcR5.js → TreeTable-BXw7lFBk.js} +22 -22
- package/storybook-static/assets/TreeTable.stories-z40pruPV.js +83 -0
- package/storybook-static/assets/WithTooltip-7X4HQR7L-Cakt_JaX.js +9 -0
- package/storybook-static/assets/array-BBSjoTRy-CIRmlF93.js +1 -0
- package/storybook-static/assets/{async-D27PcxoG.js → async-BLDV04P4.js} +3 -3
- package/storybook-static/assets/axe-Bq-2xuso.js +20 -0
- package/storybook-static/assets/blocks-BiaKjftm.js +48 -0
- package/storybook-static/assets/browserAndReact-DX4H5rjQ.js +105 -0
- package/storybook-static/assets/check-fB4gCKB_.js +1 -0
- package/storybook-static/assets/chevron-down-B9GH0QvB.js +1 -0
- package/storybook-static/assets/chevron-left-DjbyJeHO.js +1 -0
- package/storybook-static/assets/chevron-right-D29uf09I.js +1 -0
- package/storybook-static/assets/chunk-242VQQM5-BMWWiybC.js +1 -0
- package/storybook-static/assets/chunk-DRQKCCAG-CqE-Zrl9.js +1 -0
- package/storybook-static/assets/chunk-IMSF75WX-yvVUwIQZ.js +6 -0
- package/storybook-static/assets/chunk-KJHJLCBK-D-yQfkOi.js +1 -0
- package/storybook-static/assets/chunk-QQBDHPVZ-B98qboss.js +1 -0
- package/storybook-static/assets/chunk-W22LQPXL-CGkHFiZ0.js +18 -0
- package/storybook-static/assets/circle-alert-Dmd7-WNp.js +1 -0
- package/storybook-static/assets/circle-check-VtVMsaJJ.js +1 -0
- package/storybook-static/assets/components-CsfQDbHv.js +241 -0
- package/storybook-static/assets/contextMenu-CzdfaUsd.js +2 -0
- package/storybook-static/assets/date-segments-D3HouZ37.js +1 -0
- package/storybook-static/assets/dom-B3G_GtJw.js +1 -0
- package/storybook-static/assets/download-CyVhTbv6.js +1 -0
- package/storybook-static/assets/error-BZrNlEUO.js +1 -0
- package/storybook-static/assets/file-vPGnhPr-.js +1 -0
- package/storybook-static/assets/filesAndExcel-DlUnL-Uu.js +122 -0
- package/storybook-static/assets/floating-ui.react-DZ8IyUV4.js +1 -0
- package/storybook-static/assets/formatter-L2YTDE3Q-x0raBH34.js +1 -0
- package/storybook-static/assets/formatters--mhLir82-v41eaI4a.js +1 -0
- package/storybook-static/assets/formatters-BTz64vfu.js +291 -0
- package/storybook-static/assets/formatters-runtime-DVi3RdYb.js +384 -0
- package/storybook-static/assets/foundationLib-CFj4J-Pc.js +82 -0
- package/storybook-static/assets/hooks-Ch5aYb7R.js +5 -0
- package/storybook-static/assets/iframe-Cr7AcW_R.js +1 -0
- package/storybook-static/assets/iframe-DaN-XFub.js +1151 -0
- package/storybook-static/assets/info-Cirk1RKZ.js +1 -0
- package/storybook-static/assets/{matchers-JIUQ3HVY-BPS-eazD.js → matchers-JIUQ3HVY-DvR2XErZ.js} +3 -3
- package/storybook-static/assets/media-BycWpjAl.js +1 -0
- package/storybook-static/assets/odata-BtfB5Aje.js +1 -0
- package/storybook-static/assets/odata-service-DnPlNGpU-Bpd4Zh9L.js +3 -0
- package/storybook-static/assets/odataAndTables-TEZyQ-TZ.js +126 -0
- package/storybook-static/assets/{odataFetchFn-BVgXXKgx.js → odataFetchFn-DEKVPDzV.js} +3 -3
- package/storybook-static/assets/odataStoryFixtures-CDDaJZKW.js +25 -0
- package/storybook-static/assets/{persisted-D8qUQbts.js → persisted-BzLLmgUK.js} +3 -3
- package/storybook-static/assets/preload-helper-BHmFeTtP.js +1 -0
- package/storybook-static/assets/pureUtilities-Dw249t3R.js +69 -0
- package/storybook-static/assets/react-18-CgkwBzTo.js +9 -0
- package/storybook-static/assets/react-C21x__mS.js +1 -0
- package/storybook-static/assets/react-CvkUhHUq.js +1 -0
- package/storybook-static/assets/react-KzpmXJc9.js +9 -0
- package/storybook-static/assets/react-dom-2o2phaJG.js +1 -0
- package/storybook-static/assets/react-qN2cStNd.js +1 -0
- package/storybook-static/assets/refresh-cw-BN3JCsXv.js +1 -0
- package/storybook-static/assets/rolldown-runtime-C0FnF6B9.js +1 -0
- package/storybook-static/assets/runtimeAndState-CCVgv3ck.js +117 -0
- package/storybook-static/assets/settings-2-jtcbbWm5.js +1 -0
- package/storybook-static/assets/sortable-dNWaObUX.js +1 -0
- package/storybook-static/assets/syntaxhighlighter-T5IQBZDB-hYwVxXYm.js +6 -0
- package/storybook-static/assets/theming-mTWhffkp.js +39 -0
- package/storybook-static/assets/trash-2-DrVfT0z5.js +1 -0
- package/storybook-static/assets/treeStoryFixtures-Ci7STpiz.js +1 -0
- package/storybook-static/assets/triangle-alert-B1Q28Bq9.js +1 -0
- package/storybook-static/assets/ui.module-DoMIk8Oc.js +1 -0
- package/storybook-static/assets/uiClasses-CO3Cdv1E.js +1 -0
- package/storybook-static/assets/useFlexClasses-Gn9spXEB.js +1 -0
- package/storybook-static/assets/useODataSelectBase-DlbeGYUP.js +1 -0
- package/storybook-static/assets/useODataTreeData-CvsoLfiG.js +1 -0
- package/storybook-static/assets/usePickerDefaultFilter-DdxyE_i8.js +1 -0
- package/storybook-static/assets/usePickerQuery-6rDaPaB0.js +1 -0
- package/storybook-static/assets/usePickerTriggerController-BHBjSLtn.js +1 -0
- package/storybook-static/assets/utils-DUM89eIj.js +1 -0
- package/storybook-static/assets/x-Dh43gJN9.js +1 -0
- package/storybook-static/iframe.html +8 -3
- package/storybook-static/index.html +6 -0
- package/storybook-static/index.json +1 -1
- package/storybook-static/project.json +1 -1
- package/storybook-static/sb-addons/a11y-3/manager-bundle.js +3 -3
- package/storybook-static/sb-addons/chromatic-com-storybook-1/manager-bundle.js +17 -17
- package/storybook-static/sb-addons/docs-2/manager-bundle.js +16 -1
- package/storybook-static/sb-addons/storybook-core-server-presets-0/common-manager-bundle.js +85 -83
- package/storybook-static/sb-addons/vitest-4/manager-bundle.js +1 -1
- package/storybook-static/sb-manager/globals-runtime.js +9939 -7695
- package/storybook-static/sb-manager/runtime.js +16128 -15326
- package/storybook-static/vite-inject-mocker-entry.js +2 -2
- package/dist/chunks/multi-select-CWx12rgb.js.map +0 -1
- package/dist/chunks/select-BPb-eL3O.js.map +0 -1
- package/storybook-static/assets/Badge.stories-CzsgAfG9.js +0 -51
- package/storybook-static/assets/Button-MoWVKehO.js +0 -12
- package/storybook-static/assets/Button.stories-wwep4c2p.js +0 -75
- package/storybook-static/assets/CheckBox-DHvne_6w.js +0 -2
- package/storybook-static/assets/CheckBox.module-ezWPE2pa.js +0 -1
- package/storybook-static/assets/CheckBox.stories-C14Axs5p.js +0 -60
- package/storybook-static/assets/Color-KMSTOMOX-CmMBFN4-.js +0 -1
- package/storybook-static/assets/ContextMenu.stories-Dr-tkpqd.js +0 -90
- package/storybook-static/assets/DateInput-erobPRG_.js +0 -1
- package/storybook-static/assets/DateRangePresetSelect-Cg90Kc_w.js +0 -3
- package/storybook-static/assets/DateRangePresetSelect.stories-BVap0joC.js +0 -11
- package/storybook-static/assets/Detail.stories-CLdtvJ7q.js +0 -44
- package/storybook-static/assets/Dialog.stories-Dx0jZO19.js +0 -31
- package/storybook-static/assets/Disclosure.stories-DhUdeDK6.js +0 -41
- package/storybook-static/assets/DocsRenderer-JROSPFPF-Dd1n83Uq.js +0 -2
- package/storybook-static/assets/DropZone.stories-6yYrwQOe.js +0 -44
- package/storybook-static/assets/DropdownMenu-D_2LfViU.js +0 -1
- package/storybook-static/assets/ExpandableActionPanel.stories-DVOFSOlm.js +0 -20
- package/storybook-static/assets/Flex-V-qg6Ejw.js +0 -3
- package/storybook-static/assets/Flex.stories-BZv94LD8.js +0 -300
- package/storybook-static/assets/ImageCropper.stories-MLFZyJxZ.js +0 -115
- package/storybook-static/assets/ImageRenderer-DHhD7mUz.js +0 -2
- package/storybook-static/assets/ImageRenderer.stories-ChcPymk2.js +0 -22
- package/storybook-static/assets/ImageView.stories-DszVNgC8.js +0 -9
- package/storybook-static/assets/ImageViewerRuntime-D8wFAKx5.js +0 -51
- package/storybook-static/assets/Input-BGdz8TmT.js +0 -3
- package/storybook-static/assets/Input.stories-Ban0Gnck.js +0 -38
- package/storybook-static/assets/InputDateTime.stories-DgKVmf54.js +0 -35
- package/storybook-static/assets/InputFile.stories-VnRv_q2r.js +0 -36
- package/storybook-static/assets/InputFiles-Dn9afnyd.js +0 -1
- package/storybook-static/assets/InputFiles.stories-CLVn5Xfq.js +0 -33
- package/storybook-static/assets/InputImage.stories-D__QcSho.js +0 -51
- package/storybook-static/assets/LayoutPicker.stories-BCnR-zBu.js +0 -449
- package/storybook-static/assets/Listbox.stories-B0HctqVp.js +0 -47
- package/storybook-static/assets/Modal.stories-BE-VpK-a.js +0 -180
- package/storybook-static/assets/MultiSelect-BoIwmje6.css +0 -1
- package/storybook-static/assets/MultiSelect-CaCNRNIe.js +0 -2
- package/storybook-static/assets/MultiSelect.stories-CNkbVGsb.js +0 -29
- package/storybook-static/assets/NotificationsHost.stories-BgqvZzT3.js +0 -25
- package/storybook-static/assets/ODataMultiSelect-CMyI4yYs.js +0 -1
- package/storybook-static/assets/ODataMultiSelect.stories-DTGCC6np.js +0 -73
- package/storybook-static/assets/ODataSelect-CGplYBh_.js +0 -1
- package/storybook-static/assets/ODataSelect.stories-CsxqRAvn.js +0 -73
- package/storybook-static/assets/ODataTreeMultiSelect-4ZiAtFZk.js +0 -19
- package/storybook-static/assets/ODataTreeMultiSelect.stories-B29Od8BL.js +0 -30
- package/storybook-static/assets/ODataTreeSelect-yZy7MBsZ.js +0 -17
- package/storybook-static/assets/ODataTreeSelect.stories-H7eaj1Sz.js +0 -24
- package/storybook-static/assets/PeriodSelect.stories-6CEzS2_H.js +0 -64
- package/storybook-static/assets/Popover.stories-BNgWOHlJ.js +0 -69
- package/storybook-static/assets/PresetRangeDateInput.stories-6UPVDF62.js +0 -15
- package/storybook-static/assets/RadioButton.stories-DbdFfJqO.js +0 -36
- package/storybook-static/assets/RadioGroup-BA21indC.js +0 -1
- package/storybook-static/assets/RadioGroup.stories-Ce6x0WUN.js +0 -42
- package/storybook-static/assets/Select-DyO25wSA.js +0 -12
- package/storybook-static/assets/Select.stories-CQ8f9fY9.js +0 -46
- package/storybook-static/assets/SelectOptionContent-fC4HFG5Q.js +0 -1
- package/storybook-static/assets/SerializableSelect-ki4BThj7.js +0 -4
- package/storybook-static/assets/SerializableSelect.stories-BzXBkWPI.js +0 -43
- package/storybook-static/assets/SingleDateTimeInput.stories-CI2yrD-f.js +0 -78
- package/storybook-static/assets/Slider.stories-D3O3_tqE.js +0 -77
- package/storybook-static/assets/SliderInput.stories-D1puleZB.js +0 -67
- package/storybook-static/assets/Sortable.stories-BoaL4W6r.js +0 -141
- package/storybook-static/assets/Splitter.stories-DJpFzZVJ.js +0 -22
- package/storybook-static/assets/StateSelect.stories-Ch2Gzzmd.js +0 -47
- package/storybook-static/assets/StringToggle.stories-B8qIG0M3.js +0 -6
- package/storybook-static/assets/Switch.stories-BysIhUHa.js +0 -26
- package/storybook-static/assets/Table.stories-CBpgmq7b.js +0 -122
- package/storybook-static/assets/Tabs.stories-BPYZuvzR.js +0 -58
- package/storybook-static/assets/TagInput.stories-BwOEnVpz.js +0 -18
- package/storybook-static/assets/Textarea.stories-BSJGz7JF.js +0 -27
- package/storybook-static/assets/TimePanel-ClMfq_py.js +0 -1
- package/storybook-static/assets/TimePanel.stories-_FqWdmta.js +0 -25
- package/storybook-static/assets/Toggle-BFhzeK2e.js +0 -1
- package/storybook-static/assets/Toggle.stories-Dw5UkD_b.js +0 -30
- package/storybook-static/assets/TreeMultiSelect-CerqHY2K.js +0 -19
- package/storybook-static/assets/TreeMultiSelect-Dw7FI3ic.js +0 -1
- package/storybook-static/assets/TreeMultiSelect.stories-BTQKFbeP.js +0 -35
- package/storybook-static/assets/TreePickerBase-rJISGJBT.js +0 -22
- package/storybook-static/assets/TreeSelect-CQ1vj_c9.js +0 -16
- package/storybook-static/assets/TreeSelect-Cp_lX0-B.js +0 -1
- package/storybook-static/assets/TreeSelect.stories-D6Q02Phx.js +0 -18
- package/storybook-static/assets/TreeTable.stories-YfyhkqH9.js +0 -83
- package/storybook-static/assets/WithTooltip-7X4HQR7L-BSQyvCOM.js +0 -9
- package/storybook-static/assets/axe-GLfyhAYL.js +0 -20
- package/storybook-static/assets/base-table-BNO0lnTL.css +0 -1
- package/storybook-static/assets/base-table-Dy3fEhQe.js +0 -18
- package/storybook-static/assets/blocks-ixiC6_NZ.js +0 -285
- package/storybook-static/assets/button-DZpTIXz2.js +0 -1
- package/storybook-static/assets/check-box-DByHwJGx.js +0 -1
- package/storybook-static/assets/chunk-242VQQM5-Dtm7LRbQ.js +0 -1
- package/storybook-static/assets/chunk-3LY4VQVK-BohfESrT.js +0 -6
- package/storybook-static/assets/chunk-LITCR56V-XaMGADKk.js +0 -18
- package/storybook-static/assets/contextMenu-BbMrBF3b.js +0 -2
- package/storybook-static/assets/date-7kR6zFX5.js +0 -461
- package/storybook-static/assets/date-segments-CzU9k5bl.js +0 -1
- package/storybook-static/assets/error-BRUjWXbJ.js +0 -1
- package/storybook-static/assets/file-CI_sonB1.js +0 -291
- package/storybook-static/assets/file-hArYcyES.js +0 -1
- package/storybook-static/assets/flex-C--89Z3g.js +0 -1
- package/storybook-static/assets/floating-ui.react-DLXcGGFR.js +0 -1
- package/storybook-static/assets/formatter-L2YTDE3Q-DgyzUf7M.js +0 -1
- package/storybook-static/assets/formatters-BtIOYENB.js +0 -3
- package/storybook-static/assets/formulas-DRh9I2eS.js +0 -2
- package/storybook-static/assets/grid-DLxeTZJe.js +0 -1
- package/storybook-static/assets/hooks-DWeJq8G1.js +0 -5
- package/storybook-static/assets/iframe-BJGIOdSH.js +0 -1119
- package/storybook-static/assets/input-DXi75xv1.js +0 -1
- package/storybook-static/assets/mdx-react-shim-CmoAsjhK.js +0 -1
- package/storybook-static/assets/media-DWFaNgLM.js +0 -1
- package/storybook-static/assets/misc-BElIqBdV.css +0 -1
- package/storybook-static/assets/misc-DNZTbWc6.js +0 -5
- package/storybook-static/assets/notifications-DjtgzFqT.js +0 -1
- package/storybook-static/assets/number-Xkw1yPJo.js +0 -2
- package/storybook-static/assets/odata-C4Liwkjx.js +0 -1
- package/storybook-static/assets/odata-service-C2oJ-ZmZ.js +0 -1
- package/storybook-static/assets/odataStoryFixtures-eEGvvtmw.js +0 -25
- package/storybook-static/assets/picker-DsP4xCcJ.js +0 -2
- package/storybook-static/assets/popover-BiQHI7Wi.css +0 -1
- package/storybook-static/assets/popover-CuFTypCp.js +0 -2
- package/storybook-static/assets/preload-helper-B45gAKPr.js +0 -1
- package/storybook-static/assets/preset-select-SPNHA-mp.js +0 -5
- package/storybook-static/assets/pwa-B7uYfAPd.js +0 -640
- package/storybook-static/assets/queryClient-CA0puYc0.js +0 -567
- package/storybook-static/assets/react-18-CaNSmcD-.js +0 -9
- package/storybook-static/assets/react-3qMIUlAf.js +0 -9
- package/storybook-static/assets/react-dom-BC7xZNHy.js +0 -1
- package/storybook-static/assets/select-sUla5-3b.js +0 -1
- package/storybook-static/assets/slider--Yp_sa_W.js +0 -2
- package/storybook-static/assets/sortable-jALaQqYE.js +0 -1
- package/storybook-static/assets/syntaxhighlighter-RTCFPKCB-u_WDwfDn.js +0 -6
- package/storybook-static/assets/text-D5xgciF8.js +0 -4
- package/storybook-static/assets/theming-oB64gsjY.js +0 -39
- package/storybook-static/assets/treeStoryFixtures-Y_nnjz0_.js +0 -1
- package/storybook-static/assets/ui-DWDaBPQx.js +0 -1
- package/storybook-static/assets/ui.module-wFHXkJzp.js +0 -1
- package/storybook-static/assets/uiClasses-CaHp0EWd.js +0 -1
- package/storybook-static/assets/useODataSelectBase-DjlPxmxr.js +0 -1
- package/storybook-static/assets/useODataTreeData-1W6cbuec.js +0 -1
- package/storybook-static/assets/utils-DzbSigQl.js +0 -1
- package/storybook-static/assets/valueState-GnkKWBTr.js +0 -277
- /package/storybook-static/assets/{DropdownMenu-BgzIzwzM.css → ContextMenu-BgzIzwzM.css} +0 -0
- /package/storybook-static/assets/{Grid-K9R_IHaw.css → GridContainer-K9R_IHaw.css} +0 -0
- /package/storybook-static/assets/{InputFiles-ByK52qUe.css → InputFilesList-ByK52qUe.css} +0 -0
- /package/storybook-static/assets/{slider-DMDFRH6B.css → Slider-DMDFRH6B.css} +0 -0
- /package/storybook-static/assets/{Flex-IXK2se1Y.css → useFlexClasses-IXK2se1Y.css} +0 -0
- /package/storybook-static/assets/{picker-DzBkX15M.css → usePickerTriggerController-DzBkX15M.css} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as e,i as t}from"./preload-helper-B45gAKPr.js";import{n,pn as r,s as i,t as a}from"./iframe-BJGIOdSH.js";import{n as o,t as s}from"./Button-MoWVKehO.js";function c({onPreRemove:e,onRemove:t,className:n}){let[r,a]=(0,l.useState)(!1),o=(0,l.useRef)(null);return(0,u.jsx)(s,{icon:(0,u.jsx)(i,{}),onClick:n=>{n.preventDefault(),o.current&&=(window.clearTimeout(o.current),null),r?(t(),a(!1)):(e?.(),a(!0),o.current=window.setTimeout(()=>{a(!1)},1500))},tone:`error`,appearance:r?`solid`:`outline`,className:n})}var l,u,d=t((()=>{l=e(r(),1),n(),o(),u=a(),c.__docgenInfo={description:"Специализированная кнопка удаления сущности или вложения. Инкапсулирует подтверждающее поведение перед окончательным вызовом `onRemove`.",methods:[],displayName:`ButtonRemove`,props:{onRemove:{required:!0,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``},onPreRemove:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``},className:{required:!1,tsType:{name:`string`},description:``}}}})),f=t((()=>{o(),d()}));export{f as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./preload-helper-B45gAKPr.js";import{n as t}from"./CheckBox-DHvne_6w.js";var n=e((()=>{t()}));export{n as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./preload-helper-B45gAKPr.js";function t(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}var n=e((()=>{}));export{n,t};
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./preload-helper-B45gAKPr.js";import{en as t,in as n,nn as r}from"./iframe-BJGIOdSH.js";var i,a=e((()=>{n(),i=t({"../../node_modules/memoizerific/memoizerific.js"(e,t){(function(n){if(typeof e==`object`&&typeof t<`u`)t.exports=n();else if(typeof define==`function`&&define.amd)define([],n);else{var r=typeof window<`u`?window:typeof global<`u`?global:typeof self<`u`?self:this;r.memoizerific=n()}})(function(){return(function e(t,n,i){function a(s,c){if(!n[s]){if(!t[s]){var l=typeof r==`function`&&r;if(!c&&l)return l(s,!0);if(o)return o(s,!0);var u=Error(`Cannot find module '`+s+`'`);throw u.code=`MODULE_NOT_FOUND`,u}var d=n[s]={exports:{}};t[s][0].call(d.exports,function(e){var n=t[s][1][e];return a(n||e)},d,d.exports,e,t,n,i)}return n[s].exports}for(var o=typeof r==`function`&&r,s=0;s<i.length;s++)a(i[s]);return a})({1:[function(e,t,n){t.exports=function(t){return typeof Map!=`function`||t?new(e(`./similar`)):new Map}},{"./similar":2}],2:[function(e,t,n){function r(){return this.list=[],this.lastItem=void 0,this.size=0,this}r.prototype.get=function(e){var t;if(this.lastItem&&this.isEqual(this.lastItem.key,e))return this.lastItem.val;if(t=this.indexOf(e),t>=0)return this.lastItem=this.list[t],this.list[t].val},r.prototype.set=function(e,t){var n;return this.lastItem&&this.isEqual(this.lastItem.key,e)?(this.lastItem.val=t,this):(n=this.indexOf(e),n>=0?(this.lastItem=this.list[n],this.list[n].val=t,this):(this.lastItem={key:e,val:t},this.list.push(this.lastItem),this.size++,this))},r.prototype.delete=function(e){var t;if(this.lastItem&&this.isEqual(this.lastItem.key,e)&&(this.lastItem=void 0),t=this.indexOf(e),t>=0)return this.size--,this.list.splice(t,1)[0]},r.prototype.has=function(e){var t;return this.lastItem&&this.isEqual(this.lastItem.key,e)?!0:(t=this.indexOf(e),t>=0?(this.lastItem=this.list[t],!0):!1)},r.prototype.forEach=function(e,t){var n;for(n=0;n<this.size;n++)e.call(t||this,this.list[n].val,this.list[n].key,this)},r.prototype.indexOf=function(e){var t;for(t=0;t<this.size;t++)if(this.isEqual(this.list[t].key,e))return t;return-1},r.prototype.isEqual=function(e,t){return e===t||e!==e&&t!==t},t.exports=r},{}],3:[function(e,t,n){var r=e(`map-or-similar`);t.exports=function(e){var t=new r(!1),n=[];return function(o){var s=function(){var c=t,l,u,d=arguments.length-1,f=Array(d+1),p=!0,m;if((s.numArgs||s.numArgs===0)&&s.numArgs!==d+1)throw Error(`Memoizerific functions should always be called with the same number of arguments`);for(m=0;m<d;m++){if(f[m]={cacheItem:c,arg:arguments[m]},c.has(arguments[m])){c=c.get(arguments[m]);continue}p=!1,l=new r(!1),c.set(arguments[m],l),c=l}return p&&(c.has(arguments[d])?u=c.get(arguments[d]):p=!1),p||(u=o.apply(null,arguments),c.set(arguments[d],u)),e>0&&(f[d]={cacheItem:c,arg:arguments[d]},p?i(n,f):n.push(f),n.length>e&&a(n.shift())),s.wasMemoized=p,s.numArgs=d+1,u};return s.limit=e,s.wasMemoized=!1,s.cache=t,s.lru=n,s}};function i(e,t){var n=e.length,r=t.length,i,a,s;for(a=0;a<n;a++){for(i=!0,s=0;s<r;s++)if(!o(e[a][s].arg,t[s].arg)){i=!1;break}if(i)break}e.push(e.splice(a,1)[0])}function a(e){var t=e.length,n=e[t-1],r,i;for(n.cacheItem.delete(n.arg),i=t-2;i>=0&&(n=e[i],r=n.cacheItem.get(n.arg),!r||!r.size);i--)n.cacheItem.delete(n.arg)}function o(e,t){return e===t||e!==e&&t!==t}},{"map-or-similar":1}]},{},[3])(3)})}})}));function o(e){var t=[...arguments].slice(1),n=Array.from(typeof e==`string`?[e]:e);n[n.length-1]=n[n.length-1].replace(/\r?\n([\t ]*)$/,``);var r=n.reduce(function(e,t){var n=t.match(/\n([\t ]+|(?!\s).)/g);return n?e.concat(n.map(function(e){return e.match(/[\t ]/g)?.length??0})):e},[]);if(r.length){var i=RegExp(`
|
|
2
|
-
[ ]{`+Math.min.apply(Math,r)+`}`,`g`);n=n.map(function(e){return e.replace(i,`
|
|
3
|
-
`)})}n[0]=n[0].replace(/^\r?\n/,``);var a=n[0];return t.forEach(function(e,t){var r=a.match(/(?:^|\n)( *)$/),i=r?r[1]:``,o=e;typeof e==`string`&&e.includes(`
|
|
4
|
-
`)&&(o=String(e).split(`
|
|
5
|
-
`).map(function(e,t){return t===0?e:``+i+e}).join(`
|
|
6
|
-
`)),a+=o+n[t+1]}),a}var s=e((()=>{}));export{i,s as n,a as r,o as t};
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import{c as e,i as t}from"./preload-helper-B45gAKPr.js";import{pn as n,t as r}from"./iframe-BJGIOdSH.js";import{a as i,l as a}from"./theming-oB64gsjY.js";import{t as o}from"./react-dom-BC7xZNHy.js";function s(e,t){typeof e==`function`?e(t):e!=null&&(e.current=t)}function c(...e){return t=>e.forEach(e=>s(e,t))}function l(...e){return oe.useCallback(c(...e),e)}function u(e){return M.isValidElement(e)&&e.type===he}function d(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{a(...e),i(...e)}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}function f(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}function p(e,t){return ue.useReducer((e,n)=>t[e][n]??e,e)}function m(e){let[t,n]=P.useState(),r=P.useRef({}),i=P.useRef(e),a=P.useRef(`none`),[o,s]=p(e?`mounted`:`unmounted`,{mounted:{UNMOUNT:`unmounted`,ANIMATION_OUT:`unmountSuspended`},unmountSuspended:{MOUNT:`mounted`,ANIMATION_END:`unmounted`},unmounted:{MOUNT:`mounted`}});return P.useEffect(()=>{let e=h(r.current);a.current=o===`mounted`?e:`none`},[o]),U(()=>{let t=r.current,n=i.current;if(n!==e){let r=a.current,o=h(t);e?s(`MOUNT`):o===`none`||t?.display===`none`?s(`UNMOUNT`):s(n&&r!==o?`ANIMATION_OUT`:`UNMOUNT`),i.current=e}},[e,s]),U(()=>{if(t){let e=e=>{let n=h(r.current).includes(e.animationName);e.target===t&&n&&ce.flushSync(()=>s(`ANIMATION_END`))},n=e=>{e.target===t&&(a.current=h(r.current))};return t.addEventListener(`animationstart`,n),t.addEventListener(`animationcancel`,e),t.addEventListener(`animationend`,e),()=>{t.removeEventListener(`animationstart`,n),t.removeEventListener(`animationcancel`,e),t.removeEventListener(`animationend`,e)}}else s(`ANIMATION_END`)},[t,s]),{isPresent:[`mounted`,`unmountSuspended`].includes(o),ref:P.useCallback(e=>{e&&(r.current=getComputedStyle(e)),n(e)},[])}}function h(e){return e?.animationName||`none`}function ee(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}function g(e,t=[]){let n=[];function r(t,r){let i=F.createContext(r),a=n.length;n=[...n,r];function o(t){let{scope:n,children:r,...o}=t,s=n?.[e][a]||i,c=F.useMemo(()=>o,Object.values(o));return(0,de.jsx)(s.Provider,{value:c,children:r})}function s(n,o){let s=o?.[e][a]||i,c=F.useContext(s);if(c)return c;if(r!==void 0)return r;throw Error(`\`${n}\` must be used within \`${t}\``)}return o.displayName=t+`Provider`,[o,s]}let i=()=>{let t=n.map(e=>F.createContext(e));return function(n){let r=n?.[e]||t;return F.useMemo(()=>({[`__scope${e}`]:{...n,[e]:r}}),[n,r])}};return i.scopeName=e,[r,_(i,...t)]}function _(...e){let t=e[0];if(e.length===1)return t;let n=()=>{let n=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let r=n.reduce((t,{useScope:n,scopeName:r})=>{let i=n(e)[`__scope${r}`];return{...t,...i}},{});return F.useMemo(()=>({[`__scope${t.scopeName}`]:r}),[r])}};return n.scopeName=t.scopeName,n}function v(e){let t=I.useRef(e);return I.useEffect(()=>{t.current=e}),I.useMemo(()=>(...e)=>t.current?.(...e),[])}function te(e){let t=L.useContext(ge);return e||t||`ltr`}function y(e,[t,n]){return Math.min(n,Math.max(t,e))}function b(e,t,{checkForDefaultPrevented:n=!0}={}){return function(r){if(e?.(r),n===!1||!r.defaultPrevented)return t?.(r)}}function x(e,t){return fe.useReducer((e,n)=>t[e][n]??e,e)}function S(e){return e?parseInt(e,10):0}function C(e,t){let n=e/t;return isNaN(n)?0:n}function w(e){let t=C(e.viewport,e.content),n=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,r=(e.scrollbar.size-n)*t;return Math.max(r,18)}function T(e,t,n,r=`ltr`){let i=w(n),a=i/2,o=t||a,s=i-o,c=n.scrollbar.paddingStart+o,l=n.scrollbar.size-n.scrollbar.paddingEnd-s,u=n.content-n.viewport,d=r===`ltr`?[0,u]:[u*-1,0];return ne([c,l],d)(e)}function E(e,t,n=`ltr`){let r=w(t),i=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,a=t.scrollbar.size-i,o=t.content-t.viewport,s=a-r,c=y(e,n===`ltr`?[0,o]:[o*-1,0]);return ne([0,o],[0,s])(c)}function ne(e,t){return n=>{if(e[0]===e[1]||t[0]===t[1])return t[0];let r=(t[1]-t[0])/(e[1]-e[0]);return t[0]+r*(n-e[0])}}function re(e,t){return e>0&&e<t}function D(e,t){let n=v(e),r=j.useRef(0);return j.useEffect(()=>()=>window.clearTimeout(r.current),[]),j.useCallback(()=>{window.clearTimeout(r.current),r.current=window.setTimeout(n,t)},[n,t])}function O(e,t){let n=v(t);U(()=>{let t=0;if(e){let r=new ResizeObserver(()=>{cancelAnimationFrame(t),t=window.requestAnimationFrame(n)});return r.observe(e),()=>{window.cancelAnimationFrame(t),r.unobserve(e)}}},[e,n])}function ie(e,t){let{asChild:n,children:r}=e;if(!n)return typeof t==`function`?t(r):t;let i=j.Children.only(r);return j.cloneElement(i,{children:typeof t==`function`?t(i.props.children):t})}var k,A,j,ae,M,oe,N,se,P,ce,le,ue,F,de,I,L,fe,R,pe,z,me,B,V,he,H,U,W,ge,G,K,_e,ve,q,J,ye,be,Y,xe,Se,Ce,we,X,Te,Ee,De,Oe,ke,Z,Ae,je,Q,Me,Ne,Pe,Fe,Ie,Le,Re,ze,Be,Ve,He,Ue,We,Ge=t((()=>{k=e(n(),1),i(),A=e(n(),1),j=e(n(),1),ae=e(n(),1),o(),M=e(n(),1),oe=e(n(),1),N=r(),se=r(),P=e(n(),1),ce=e(o(),1),le=e(n(),1),ue=e(n(),1),F=e(n(),1),de=r(),I=e(n(),1),L=e(n(),1),r(),fe=e(n(),1),R=r(),pe=a.div(({theme:e,$flexLayout:t=!1})=>[{background:e.background.content},t?{display:`inline-flex`,marginInlineStart:`auto`,alignSelf:`flex-end`}:{position:`absolute`,bottom:0,right:0,maxWidth:`100%`,display:`flex`,zIndex:1}]),z=a.button(({theme:e})=>({margin:0,border:`0 none`,padding:`4px 10px`,cursor:`pointer`,display:`flex`,alignItems:`center`,color:e.color.defaultText,background:e.background.content,fontSize:12,lineHeight:`16px`,fontFamily:e.typography.fonts.base,fontWeight:e.typography.weight.bold,borderTop:`1px solid ${e.appBorderColor}`,borderLeft:`1px solid ${e.appBorderColor}`,marginLeft:-1,borderRadius:`4px 0 0 0`,"&:not(:last-child)":{borderRight:`1px solid ${e.appBorderColor}`},"& + *":{borderLeft:`1px solid ${e.appBorderColor}`,borderRadius:0},"&:focus":{boxShadow:`${e.color.secondary} 0 -3px 0 0 inset`,outline:`0 none`,"@media (forced-colors: active)":{outline:`1px solid highlight`}}}),({disabled:e})=>e&&{cursor:`not-allowed`,opacity:.5}),z.displayName=`ActionButton`,me=({actionItems:e,flexLayout:t=!1,...n})=>k.createElement(pe,{...n,$flexLayout:t},e.map(({title:e,className:t,onClick:n,disabled:r},i)=>k.createElement(z,{key:i,className:t,onClick:n,disabled:!!r},e))),B=M.forwardRef((e,t)=>{let{children:n,...r}=e,i=M.Children.toArray(n),a=i.find(u);if(a){let e=a.props.children,n=i.map(t=>t===a?M.Children.count(e)>1?M.Children.only(null):M.isValidElement(e)?e.props.children:null:t);return(0,N.jsx)(V,{...r,ref:t,children:M.isValidElement(e)?M.cloneElement(e,void 0,n):null})}return(0,N.jsx)(V,{...r,ref:t,children:n})}),B.displayName=`Slot`,V=M.forwardRef((e,t)=>{let{children:n,...r}=e;if(M.isValidElement(n)){let e=f(n);return M.cloneElement(n,{...d(r,n.props),ref:t?c(t,e):e})}return M.Children.count(n)>1?M.Children.only(null):null}),V.displayName=`SlotClone`,he=({children:e})=>(0,N.jsx)(N.Fragment,{children:e}),H=[`a`,`button`,`div`,`form`,`h2`,`h3`,`img`,`input`,`label`,`li`,`nav`,`ol`,`p`,`span`,`svg`,`ul`].reduce((e,t)=>{let n=ae.forwardRef((e,n)=>{let{asChild:r,...i}=e,a=r?B:t;return typeof window<`u`&&(window[Symbol.for(`radix-ui`)]=!0),(0,se.jsx)(a,{...i,ref:n})});return n.displayName=`Primitive.${t}`,{...e,[t]:n}},{}),U=globalThis?.document?le.useLayoutEffect:()=>{},W=e=>{let{present:t,children:n}=e,r=m(t),i=typeof n==`function`?n({present:r.isPresent}):P.Children.only(n),a=l(r.ref,ee(i));return typeof n==`function`||r.isPresent?P.cloneElement(i,{ref:a}):null},W.displayName=`Presence`,ge=L.createContext(void 0),G=`ScrollArea`,[K,_e]=g(G),[ve,q]=K(G),J=j.forwardRef((e,t)=>{let{__scopeScrollArea:n,type:r=`hover`,dir:i,scrollHideDelay:a=600,...o}=e,[s,c]=j.useState(null),[u,d]=j.useState(null),[f,p]=j.useState(null),[m,h]=j.useState(null),[ee,g]=j.useState(null),[_,v]=j.useState(0),[y,b]=j.useState(0),[x,S]=j.useState(!1),[C,w]=j.useState(!1),T=l(t,e=>c(e)),E=te(i);return(0,R.jsx)(ve,{scope:n,type:r,dir:E,scrollHideDelay:a,scrollArea:s,viewport:u,onViewportChange:d,content:f,onContentChange:p,scrollbarX:m,onScrollbarXChange:h,scrollbarXEnabled:x,onScrollbarXEnabledChange:S,scrollbarY:ee,onScrollbarYChange:g,scrollbarYEnabled:C,onScrollbarYEnabledChange:w,onCornerWidthChange:v,onCornerHeightChange:b,children:(0,R.jsx)(H.div,{dir:E,...o,ref:T,style:{position:`relative`,"--radix-scroll-area-corner-width":_+`px`,"--radix-scroll-area-corner-height":y+`px`,...e.style}})})}),J.displayName=G,ye=`ScrollAreaViewport`,be=j.forwardRef((e,t)=>{let{__scopeScrollArea:n,children:r,asChild:i,nonce:a,...o}=e,s=q(ye,n),c=l(t,j.useRef(null),s.onViewportChange);return(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(`style`,{dangerouslySetInnerHTML:{__html:`
|
|
2
|
-
[data-radix-scroll-area-viewport] {
|
|
3
|
-
scrollbar-width: none;
|
|
4
|
-
-ms-overflow-style: none;
|
|
5
|
-
-webkit-overflow-scrolling: touch;
|
|
6
|
-
}
|
|
7
|
-
[data-radix-scroll-area-viewport]::-webkit-scrollbar {
|
|
8
|
-
display: none;
|
|
9
|
-
}
|
|
10
|
-
:where([data-radix-scroll-area-viewport]) {
|
|
11
|
-
display: flex;
|
|
12
|
-
flex-direction: column;
|
|
13
|
-
align-items: stretch;
|
|
14
|
-
}
|
|
15
|
-
:where([data-radix-scroll-area-content]) {
|
|
16
|
-
flex-grow: 1;
|
|
17
|
-
}
|
|
18
|
-
`},nonce:a}),(0,R.jsx)(H.div,{"data-radix-scroll-area-viewport":``,...o,asChild:i,ref:c,style:{overflowX:s.scrollbarXEnabled?`scroll`:`hidden`,overflowY:s.scrollbarYEnabled?`scroll`:`hidden`,...e.style},children:ie({asChild:i,children:r},e=>(0,R.jsx)(`div`,{"data-radix-scroll-area-content":``,ref:s.onContentChange,style:{minWidth:s.scrollbarXEnabled?`fit-content`:void 0},children:e}))})]})}),be.displayName=ye,Y=`ScrollAreaScrollbar`,xe=j.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=q(Y,e.__scopeScrollArea),{onScrollbarXEnabledChange:a,onScrollbarYEnabledChange:o}=i,s=e.orientation===`horizontal`;return j.useEffect(()=>(s?a(!0):o(!0),()=>{s?a(!1):o(!1)}),[s,a,o]),i.type===`hover`?(0,R.jsx)(Se,{...r,ref:t,forceMount:n}):i.type===`scroll`?(0,R.jsx)(Ce,{...r,ref:t,forceMount:n}):i.type===`auto`?(0,R.jsx)(we,{...r,ref:t,forceMount:n}):i.type===`always`?(0,R.jsx)(X,{...r,ref:t}):null}),xe.displayName=Y,Se=j.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=q(Y,e.__scopeScrollArea),[a,o]=j.useState(!1);return j.useEffect(()=>{let e=i.scrollArea,t=0;if(e){let n=()=>{window.clearTimeout(t),o(!0)},r=()=>{t=window.setTimeout(()=>o(!1),i.scrollHideDelay)};return e.addEventListener(`pointerenter`,n),e.addEventListener(`pointerleave`,r),()=>{window.clearTimeout(t),e.removeEventListener(`pointerenter`,n),e.removeEventListener(`pointerleave`,r)}}},[i.scrollArea,i.scrollHideDelay]),(0,R.jsx)(W,{present:n||a,children:(0,R.jsx)(we,{"data-state":a?`visible`:`hidden`,...r,ref:t})})}),Ce=j.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=q(Y,e.__scopeScrollArea),a=e.orientation===`horizontal`,o=D(()=>c(`SCROLL_END`),100),[s,c]=x(`hidden`,{hidden:{SCROLL:`scrolling`},scrolling:{SCROLL_END:`idle`,POINTER_ENTER:`interacting`},interacting:{SCROLL:`interacting`,POINTER_LEAVE:`idle`},idle:{HIDE:`hidden`,SCROLL:`scrolling`,POINTER_ENTER:`interacting`}});return j.useEffect(()=>{if(s===`idle`){let e=window.setTimeout(()=>c(`HIDE`),i.scrollHideDelay);return()=>window.clearTimeout(e)}},[s,i.scrollHideDelay,c]),j.useEffect(()=>{let e=i.viewport,t=a?`scrollLeft`:`scrollTop`;if(e){let n=e[t],r=()=>{let r=e[t];n!==r&&(c(`SCROLL`),o()),n=r};return e.addEventListener(`scroll`,r),()=>e.removeEventListener(`scroll`,r)}},[i.viewport,a,c,o]),(0,R.jsx)(W,{present:n||s!==`hidden`,children:(0,R.jsx)(X,{"data-state":s===`hidden`?`hidden`:`visible`,...r,ref:t,onPointerEnter:b(e.onPointerEnter,()=>c(`POINTER_ENTER`)),onPointerLeave:b(e.onPointerLeave,()=>c(`POINTER_LEAVE`))})})}),we=j.forwardRef((e,t)=>{let n=q(Y,e.__scopeScrollArea),{forceMount:r,...i}=e,[a,o]=j.useState(!1),s=e.orientation===`horizontal`,c=D(()=>{if(n.viewport){let e=n.viewport.offsetWidth<n.viewport.scrollWidth,t=n.viewport.offsetHeight<n.viewport.scrollHeight;o(s?e:t)}},10);return O(n.viewport,c),O(n.content,c),(0,R.jsx)(W,{present:r||a,children:(0,R.jsx)(X,{"data-state":a?`visible`:`hidden`,...i,ref:t})})}),X=j.forwardRef((e,t)=>{let{orientation:n=`vertical`,...r}=e,i=q(Y,e.__scopeScrollArea),a=j.useRef(null),o=j.useRef(0),[s,c]=j.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),l=C(s.viewport,s.content),u={...r,sizes:s,onSizesChange:c,hasThumb:l>0&&l<1,onThumbChange:e=>a.current=e,onThumbPointerUp:()=>o.current=0,onThumbPointerDown:e=>o.current=e};function d(e,t){return T(e,o.current,s,t)}return n===`horizontal`?(0,R.jsx)(Te,{...u,ref:t,onThumbPositionChange:()=>{if(i.viewport&&a.current){let e=i.viewport.scrollLeft,t=E(e,s,i.dir);a.current.style.transform=`translate3d(${t}px, 0, 0)`}},onWheelScroll:e=>{i.viewport&&(i.viewport.scrollLeft=e)},onDragScroll:e=>{i.viewport&&(i.viewport.scrollLeft=d(e,i.dir))}}):n===`vertical`?(0,R.jsx)(Ee,{...u,ref:t,onThumbPositionChange:()=>{if(i.viewport&&a.current){let e=i.viewport.scrollTop,t=E(e,s);a.current.style.transform=`translate3d(0, ${t}px, 0)`}},onWheelScroll:e=>{i.viewport&&(i.viewport.scrollTop=e)},onDragScroll:e=>{i.viewport&&(i.viewport.scrollTop=d(e))}}):null}),Te=j.forwardRef((e,t)=>{let{sizes:n,onSizesChange:r,...i}=e,a=q(Y,e.__scopeScrollArea),[o,s]=j.useState(),c=j.useRef(null),u=l(t,c,a.onScrollbarXChange);return j.useEffect(()=>{c.current&&s(getComputedStyle(c.current))},[c]),(0,R.jsx)(ke,{"data-orientation":`horizontal`,...i,ref:u,sizes:n,style:{bottom:0,left:a.dir===`rtl`?`var(--radix-scroll-area-corner-width)`:0,right:a.dir===`ltr`?`var(--radix-scroll-area-corner-width)`:0,"--radix-scroll-area-thumb-width":w(n)+`px`,...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.x),onDragScroll:t=>e.onDragScroll(t.x),onWheelScroll:(t,n)=>{if(a.viewport){let r=a.viewport.scrollLeft+t.deltaX;e.onWheelScroll(r),re(r,n)&&t.preventDefault()}},onResize:()=>{c.current&&a.viewport&&o&&r({content:a.viewport.scrollWidth,viewport:a.viewport.offsetWidth,scrollbar:{size:c.current.clientWidth,paddingStart:S(o.paddingLeft),paddingEnd:S(o.paddingRight)}})}})}),Ee=j.forwardRef((e,t)=>{let{sizes:n,onSizesChange:r,...i}=e,a=q(Y,e.__scopeScrollArea),[o,s]=j.useState(),c=j.useRef(null),u=l(t,c,a.onScrollbarYChange);return j.useEffect(()=>{c.current&&s(getComputedStyle(c.current))},[c]),(0,R.jsx)(ke,{"data-orientation":`vertical`,...i,ref:u,sizes:n,style:{top:0,right:a.dir===`ltr`?0:void 0,left:a.dir===`rtl`?0:void 0,bottom:`var(--radix-scroll-area-corner-height)`,"--radix-scroll-area-thumb-height":w(n)+`px`,...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.y),onDragScroll:t=>e.onDragScroll(t.y),onWheelScroll:(t,n)=>{if(a.viewport){let r=a.viewport.scrollTop+t.deltaY;e.onWheelScroll(r),re(r,n)&&t.preventDefault()}},onResize:()=>{c.current&&a.viewport&&o&&r({content:a.viewport.scrollHeight,viewport:a.viewport.offsetHeight,scrollbar:{size:c.current.clientHeight,paddingStart:S(o.paddingTop),paddingEnd:S(o.paddingBottom)}})}})}),[De,Oe]=K(Y),ke=j.forwardRef((e,t)=>{let{__scopeScrollArea:n,sizes:r,hasThumb:i,onThumbChange:a,onThumbPointerUp:o,onThumbPointerDown:s,onThumbPositionChange:c,onDragScroll:u,onWheelScroll:d,onResize:f,...p}=e,m=q(Y,n),[h,ee]=j.useState(null),g=l(t,e=>ee(e)),_=j.useRef(null),te=j.useRef(``),y=m.viewport,x=r.content-r.viewport,S=v(d),C=v(c),w=D(f,10);function T(e){if(_.current){let t=e.clientX-_.current.left,n=e.clientY-_.current.top;u({x:t,y:n})}}return j.useEffect(()=>{let e=e=>{let t=e.target;h?.contains(t)&&S(e,x)};return document.addEventListener(`wheel`,e,{passive:!1}),()=>document.removeEventListener(`wheel`,e,{passive:!1})},[y,h,x,S]),j.useEffect(C,[r,C]),O(h,w),O(m.content,w),(0,R.jsx)(De,{scope:n,scrollbar:h,hasThumb:i,onThumbChange:v(a),onThumbPointerUp:v(o),onThumbPositionChange:C,onThumbPointerDown:v(s),children:(0,R.jsx)(H.div,{...p,ref:g,style:{position:`absolute`,...p.style},onPointerDown:b(e.onPointerDown,e=>{e.button===0&&(e.target.setPointerCapture(e.pointerId),_.current=h.getBoundingClientRect(),te.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect=`none`,m.viewport&&(m.viewport.style.scrollBehavior=`auto`),T(e))}),onPointerMove:b(e.onPointerMove,T),onPointerUp:b(e.onPointerUp,e=>{let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),document.body.style.webkitUserSelect=te.current,m.viewport&&(m.viewport.style.scrollBehavior=``),_.current=null})})})}),Z=`ScrollAreaThumb`,Ae=j.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=Oe(Z,e.__scopeScrollArea);return(0,R.jsx)(W,{present:n||i.hasThumb,children:(0,R.jsx)(je,{ref:t,...r})})}),je=j.forwardRef((e,t)=>{let{__scopeScrollArea:n,style:r,...i}=e,a=q(Z,n),o=Oe(Z,n),{onThumbPositionChange:s}=o,c=l(t,e=>o.onThumbChange(e)),u=j.useRef(),d=D(()=>{u.current&&=(u.current(),void 0)},100);return j.useEffect(()=>{let e=a.viewport;if(e){let t=()=>{if(d(),!u.current){let t=Pe(e,s);u.current=t,s()}};return s(),e.addEventListener(`scroll`,t),()=>e.removeEventListener(`scroll`,t)}},[a.viewport,d,s]),(0,R.jsx)(H.div,{"data-state":o.hasThumb?`visible`:`hidden`,...i,ref:c,style:{width:`var(--radix-scroll-area-thumb-width)`,height:`var(--radix-scroll-area-thumb-height)`,...r},onPointerDownCapture:b(e.onPointerDownCapture,e=>{let t=e.target.getBoundingClientRect(),n=e.clientX-t.left,r=e.clientY-t.top;o.onThumbPointerDown({x:n,y:r})}),onPointerUp:b(e.onPointerUp,o.onThumbPointerUp)})}),Ae.displayName=Z,Q=`ScrollAreaCorner`,Me=j.forwardRef((e,t)=>{let n=q(Q,e.__scopeScrollArea),r=!!(n.scrollbarX&&n.scrollbarY);return n.type!==`scroll`&&r?(0,R.jsx)(Ne,{...e,ref:t}):null}),Me.displayName=Q,Ne=j.forwardRef((e,t)=>{let{__scopeScrollArea:n,...r}=e,i=q(Q,n),[a,o]=j.useState(0),[s,c]=j.useState(0),l=!!(a&&s);return O(i.scrollbarX,()=>{let e=i.scrollbarX?.offsetHeight||0;i.onCornerHeightChange(e),c(e)}),O(i.scrollbarY,()=>{let e=i.scrollbarY?.offsetWidth||0;i.onCornerWidthChange(e),o(e)}),l?(0,R.jsx)(H.div,{...r,ref:t,style:{width:a,height:s,position:`absolute`,right:i.dir===`ltr`?0:void 0,left:i.dir===`rtl`?0:void 0,bottom:0,...e.style}}):null}),Pe=(e,t=()=>{})=>{let n={left:e.scrollLeft,top:e.scrollTop},r=0;return(function i(){let a={left:e.scrollLeft,top:e.scrollTop},o=n.left!==a.left,s=n.top!==a.top;(o||s)&&t(),n=a,r=window.requestAnimationFrame(i)})(),()=>window.cancelAnimationFrame(r)},Fe=J,Ie=be,Le=xe,Re=Ae,ze=Me,Be=a(Fe)(({scrollbarsize:e,offset:t})=>({width:`100%`,height:`100%`,overflow:`hidden`,"--scrollbar-size":`${e+t}px`,"--radix-scroll-area-thumb-width":`${e}px`})),Ve=a(Ie)(({focusable:e,theme:t})=>({width:`100%`,height:`100%`,"&:focus":e?{outline:`2px solid ${t.color.secondary}`,outlineOffset:-2}:{}})),He=a(Le)(({offset:e,horizontal:t,vertical:n})=>({display:`flex`,userSelect:`none`,touchAction:`none`,background:`transparent`,transition:`all 0.2s ease-out`,borderRadius:`var(--scrollbar-size)`,zIndex:1,'&[data-orientation="vertical"]':{width:`var(--scrollbar-size)`,paddingRight:e,marginTop:e,marginBottom:t===`true`&&n===`true`?0:e},'&[data-orientation="horizontal"]':{flexDirection:`column`,height:`var(--scrollbar-size)`,paddingBottom:e,marginLeft:e,marginRight:t===`true`&&n===`true`?0:e}})),Ue=a(Re)(({theme:e})=>({flex:1,background:e.textMutedColor,opacity:.5,borderRadius:`var(--scrollbar-size)`,position:`relative`,transition:`opacity 0.2s ease-out`,zIndex:1,"&:hover":{opacity:.8},"::before":{content:`""`,position:`absolute`,top:`50%`,left:`50%`,transform:`translate(-50%,-50%)`,width:`100%`,height:`100%`}})),We=(0,A.forwardRef)(({children:e,horizontal:t=!1,vertical:n=!1,offset:r=2,scrollbarSize:i=6,scrollPadding:a=0,className:o,focusable:s=!1},c)=>A.createElement(Be,{scrollbarsize:i,offset:r,className:o},A.createElement(Ve,{ref:c,style:{scrollPadding:a},tabIndex:s?0:void 0,focusable:s},e),t&&A.createElement(He,{orientation:`horizontal`,offset:r,horizontal:t.toString(),vertical:n.toString()},A.createElement(Ue,null)),n&&A.createElement(He,{orientation:`vertical`,offset:r,horizontal:t.toString(),vertical:n.toString()},A.createElement(Ue,null)),t&&n&&A.createElement(ze,null))),We.displayName=`ScrollArea`}));function Ke(e,t=`assertive`,n=7e3){$?$.announce(e,t,n):($=new Je,(typeof IS_REACT_ACT_ENVIRONMENT==`boolean`?IS_REACT_ACT_ENVIRONMENT:typeof jest<`u`)?$.announce(e,t,n):setTimeout(()=>{$?.isAttached()&&$?.announce(e,t,n)},100))}function qe(e){$&&$.clear(e)}var $,Je,Ye=t((()=>{$=null,Je=class{isAttached(){return this.node?.isConnected}createLog(e){let t=document.createElement(`div`);return t.setAttribute(`role`,`log`),t.setAttribute(`aria-live`,e),t.setAttribute(`aria-relevant`,`additions`),t}destroy(){this.node&&=(document.body.removeChild(this.node),null)}announce(e,t=`assertive`,n=7e3){var r,i;if(!this.node)return;let a=document.createElement(`div`);typeof e==`object`?(a.setAttribute(`role`,`img`),a.setAttribute(`aria-labelledby`,e[`aria-labelledby`])):a.textContent=e,t===`assertive`?(r=this.assertiveLog)==null||r.appendChild(a):(i=this.politeLog)==null||i.appendChild(a),e!==``&&setTimeout(()=>{a.remove()},n)}clear(e){this.node&&((!e||e===`assertive`)&&this.assertiveLog&&(this.assertiveLog.innerHTML=``),(!e||e===`polite`)&&this.politeLog&&(this.politeLog.innerHTML=``))}constructor(){this.node=null,this.assertiveLog=null,this.politeLog=null,typeof document<`u`&&(this.node=document.createElement(`div`),this.node.dataset.liveAnnouncer=`true`,Object.assign(this.node.style,{border:0,clip:`rect(0 0 0 0)`,clipPath:`inset(50%)`,height:`1px`,margin:`-1px`,overflow:`hidden`,padding:0,position:`absolute`,width:`1px`,whiteSpace:`nowrap`}),this.assertiveLog=this.createLog(`assertive`),this.node.appendChild(this.assertiveLog),this.politeLog=this.createLog(`polite`),this.node.appendChild(this.politeLog),document.body.prepend(this.node))}}}));export{We as a,me as i,qe as n,Ge as o,Ye as r,Ke as t};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./preload-helper-B45gAKPr.js";import{t}from"./iframe-BJGIOdSH.js";import{E as n,c as r,l as i,m as a}from"./blocks-ixiC6_NZ.js";import{t as o}from"./mdx-react-shim-CmoAsjhK.js";var s,c=e((()=>{s='# Context Menu\n\nУниверсальный модуль меню с двумя сценариями открытия:\n\n- `DropdownMenu` — открытие по обычному клику.\n- `ContextMenu` — открытие строго по событию `contextmenu` (правый клик), также поддержан клавиатурный вызов `Shift+F10` и клавиша `ContextMenu`.\n\nРеализация разделена на:\n\n- функциональный слой в `src/shared/lib/context-menu`;\n- UI-слой в `src/shared/ui/basic/context-menu`.\n\nМодуль готов к production-использованию: поддерживает controlled/uncontrolled режим, позиционирование через `floating-ui`, анимацию через `motion`, базовую a11y-разметку и клавиатурную навигацию.\n\n---\n\n## Быстрый старт\n\n```tsx\nimport { ContextMenu, DropdownMenu } from "@/shared/ui";\n```\n\n### Обычное меню (по клику)\n\n```tsx\n<DropdownMenu>\n <DropdownMenu.Trigger>\n <button type="button">Действия</button>\n </DropdownMenu.Trigger>\n\n <DropdownMenu.Content>\n <DropdownMenu.Item>Редактировать</DropdownMenu.Item>\n <DropdownMenu.Item>Копировать</DropdownMenu.Item>\n <DropdownMenu.Separator />\n <DropdownMenu.Item>Удалить</DropdownMenu.Item>\n </DropdownMenu.Content>\n</DropdownMenu>\n```\n\n### Контекстное меню (по правому клику)\n\n```tsx\n<ContextMenu>\n <ContextMenu.Trigger>\n <div style={{ width: 320, height: 180 }}>Нажмите правой кнопкой мыши</div>\n </ContextMenu.Trigger>\n\n <ContextMenu.Content>\n <ContextMenu.Item>Переименовать</ContextMenu.Item>\n <ContextMenu.Item>Дублировать</ContextMenu.Item>\n <ContextMenu.Separator />\n <ContextMenu.Item>Переместить в корзину</ContextMenu.Item>\n </ContextMenu.Content>\n</ContextMenu>\n```\n\n### Радиальное контекстное меню\n\nРадиальное меню подходит для короткого набора частых действий, которые удобно выбирать вокруг точки вызова. Для длинных списков, групп, разделителей и вложенных сценариев используйте обычный `ContextMenu.Content`.\n\n```tsx\n<ContextMenu>\n <ContextMenu.Trigger>\n <div style={{ width: 320, height: 180 }}>Нажмите правой кнопкой мыши</div>\n </ContextMenu.Trigger>\n\n <ContextMenu.RadialContent>\n <ContextMenu.RadialItem icon={<PencilLine />}>Править</ContextMenu.RadialItem>\n <ContextMenu.RadialItem icon={<Copy />}>Копия</ContextMenu.RadialItem>\n <ContextMenu.RadialItem icon={<Pin />}>Закрепить</ContextMenu.RadialItem>\n <ContextMenu.RadialItem icon={<Eye />}>Просмотр</ContextMenu.RadialItem>\n </ContextMenu.RadialContent>\n</ContextMenu>\n```\n\nВ v1 радиальное меню поддерживает выбор только кликом по пункту. Выбор жестом по направлению движения и отпусканию кнопки мыши не реализован.\n\n---\n\n## API: UI-слой\n\n## `DropdownMenu`\n\nRoot-компонент для меню, открываемого по клику.\n\n### Props\n\n| Prop | Тип | По умолчанию | Описание |\n| -------------- | ---------------------------------- | ---------------- | ---------------------------------------------------------------------------------- |\n| `children` | `React.ReactNode` | — | Композиция из `Trigger`, `Content` и опционально `Item`, `Separator`, `GroupLabel` |\n| `placement` | `Placement` (`@floating-ui/react`) | `"bottom-start"` | Позиция меню относительно trigger-элемента |\n| `open` | `boolean` | — | Controlled-состояние открытия |\n| `defaultOpen` | `boolean` | `false` | Начальное состояние в uncontrolled-режиме |\n| `onOpenChange` | `(open: boolean) => void` | — | Колбэк изменения состояния |\n\n---\n\n## `ContextMenu`\n\nRoot-компонент для меню, открываемого по `contextmenu`.\n\n### Props\n\n| Prop | Тип | По умолчанию | Описание |\n| -------------- | ---------------------------------- | --------------- | ---------------------------------------------------------------------------------- |\n| `children` | `React.ReactNode` | — | Композиция из `Trigger`, `Content` и опционально `Item`, `Separator`, `GroupLabel` |\n| `placement` | `Placement` (`@floating-ui/react`) | `"right-start"` | Позиция меню относительно точки правого клика |\n| `open` | `boolean` | — | Controlled-состояние открытия |\n| `defaultOpen` | `boolean` | `false` | Начальное состояние в uncontrolled-режиме |\n| `onOpenChange` | `(open: boolean) => void` | — | Колбэк изменения состояния |\n\n---\n\n## `ContextMenu.RadialContent`\n\nКольцевой контейнер для коротких контекстных команд вокруг точки открытия.\n\n### Props\n\n| Prop | Тип | По умолчанию | Описание |\n| --------------------- | -------------------------------------------------------------------------- | ------------ | --------------------------------------------- |\n| `children` | `React.ReactNode \\| ((ctx: { closeMenu: () => void }) => React.ReactNode)` | — | Набор `ContextMenu.RadialItem` |\n| `className` | `string` | — | Дополнительный CSS-класс контейнера |\n| `closeOnOutside` | `boolean` | `true` | Закрывать ли меню при клике вне него |\n| `closeOnEscape` | `boolean` | `true` | Закрывать ли меню по клавише `Escape` |\n| `disableOutsideClick` | `boolean` | `false` | Полностью выключить закрытие по клику снаружи |\n| `restoreFocus` | `boolean` | `true` | Возвращать ли фокус в trigger после закрытия |\n| `radius` | `number` | `76` | Радиус раскладки пунктов в пикселях |\n| `itemSize` | `number` | `64` | Размер одного пункта в пикселях |\n| `closeLabel` | `string` | `"Закрыть"` | Текст и `aria-label` центральной кнопки |\n\n### Поведение\n\n- Рендер в `document.body` через портал.\n- Центрируется на точке правого клика или на центре trigger-элемента при `Shift+F10`.\n- Центральная кнопка закрывает меню и не участвует в раскладке `RadialItem`.\n- Не выходит за границы viewport.\n- Навигация с клавиатуры: `ArrowLeft`, `ArrowRight`, `ArrowUp`, `ArrowDown`, `Home`, `End`, `Escape`.\n- Оптимальный диапазон — 4-8 пунктов.\n\n---\n\n## `ContextMenu.RadialItem`\n\nПункт радиального меню.\n\n### Props\n\n| Prop | Тип | По умолчанию | Описание |\n| --------------- | ------------------------------------------------------ | ------------ | --------------------------- |\n| `children` | `React.ReactNode` | — | Подпись пункта |\n| `icon` | `React.ReactNode` | — | Иконка над подписью |\n| `className` | `string` | — | Дополнительный CSS-класс |\n| `disabled` | `boolean` | `false` | Блокирует выбор пункта |\n| `closeOnSelect` | `boolean` | `true` | Закрывать меню после выбора |\n| `onSelect` | `(event: React.MouseEvent<HTMLButtonElement>) => void` | — | Обработчик выбора |\n\n---\n\n## `*.Trigger`\n\nКомпоненты-триггеры:\n\n- `DropdownMenu.Trigger`\n- `ContextMenu.Trigger`\n\n### Props\n\n| Prop | Тип | По умолчанию | Описание |\n| ---------- | -------------------- | ------------ | ------------------------------------------------------------------- |\n| `children` | `React.ReactElement` | — | Единственный дочерний элемент, в который пробрасываются обработчики |\n\n### Важные детали\n\n- Для `DropdownMenu.Trigger` используется `onClick`.\n- Для `ContextMenu.Trigger` используется `onContextMenu` (с `preventDefault()`).\n- В оба trigger-компонента добавляются `aria-haspopup="menu"` и `aria-expanded`.\n- Вызов через клавиатуру работает в обоих триггерах: `Shift+F10` и `ContextMenu`.\n\n---\n\n## `*.Content`\n\nКомпонент отображения меню:\n\n- `DropdownMenu.Content`\n- `ContextMenu.Content`\n\n### Props\n\n| Prop | Тип | По умолчанию | Описание |\n| --------------------- | -------------------------------------------------------------------------- | ------------ | ---------------------------------------------- |\n| `children` | `React.ReactNode \\| ((ctx: { closeMenu: () => void }) => React.ReactNode)` | — | Контент меню или render-function с `closeMenu` |\n| `className` | `string` | — | Дополнительный CSS-класс контейнера меню |\n| `closeOnOutside` | `boolean` | `true` | Закрывать ли меню при клике вне него |\n| `closeOnEscape` | `boolean` | `true` | Закрывать ли меню по клавише `Escape` |\n| `disableOutsideClick` | `boolean` | `false` | Полностью выключить закрытие по клику снаружи |\n\n### Поведение по умолчанию\n\n- Рендер в `document.body` через портал.\n- Роль контейнера: `role="menu"`.\n- Автофокус на первый доступный пункт меню.\n- Навигация с клавиатуры:\n- `ArrowDown`, `ArrowUp`\n- `Home`, `End`\n- `Escape`\n\n---\n\n## `*.Item`\n\nПункт меню:\n\n- `DropdownMenu.Item`\n- `ContextMenu.Item`\n\n### Props\n\n| Prop | Тип | По умолчанию | Описание |\n| --------------- | ------------------------------------------------ | ------------ | ---------------------------------- |\n| `children` | `React.ReactNode` | — | Текст/контент пункта |\n| `icon` | `React.ReactNode` | — | Иконка слева |\n| `hotKey` | `string` | — | Подсказка сочетания клавиш справа |\n| `className` | `string` | — | Дополнительный CSS-класс |\n| `disabled` | `boolean` | `false` | Блокирует выбор пункта |\n| `href` | `string` | — | Рендер как `<a>` вместо `<button>` |\n| `target` | `string` | — | Атрибут ссылки |\n| `rel` | `string` | — | Атрибут ссылки |\n| `closeOnSelect` | `boolean` | `true` | Закрывать меню после выбора |\n| `onSelect` | `(event: React.MouseEvent<HTMLElement>) => void` | — | Обработчик выбора |\n\n### Поведение\n\n- Если передан `href`, рендерится ссылка `<a role="menuitem">`.\n- Если `href` не передан, рендерится `<button role="menuitem">`.\n- Если `disabled`, выбор блокируется и закрытие не выполняется.\n\n---\n\n## `*.Separator`\n\nРазделитель группы пунктов.\n\n### Props\n\n| Prop | Тип | По умолчанию | Описание |\n| ----------- | -------- | ------------ | ------------------------ |\n| `className` | `string` | — | Дополнительный CSS-класс |\n\n---\n\n## `*.GroupLabel`\n\nЛейбл группы пунктов.\n\n### Props\n\n| Prop | Тип | По умолчанию | Описание |\n| ----------- | ----------------- | ------------ | ------------------------ |\n| `children` | `React.ReactNode` | — | Текст группы |\n| `className` | `string` | — | Дополнительный CSS-класс |\n\n---\n\n## API: функциональный слой (`src/shared/lib/context-menu`)\n\nИмпорт:\n\n```ts\nimport {\n initialMenuState,\n openMenu,\n closeMenu,\n toggleMenu,\n getMenuPointFromEvent,\n getMenuPointFromRect,\n createVirtualAnchor\n} from "@/shared/lib/context-menu";\n```\n\n### Типы\n\n```ts\ninterface MenuPoint {\n x: number;\n y: number;\n}\n\ntype MenuOpenSource = "click" | "contextmenu" | "keyboard" | "programmatic";\n\ntype MenuAnchor = { type: "element"; element: HTMLElement } | { type: "point"; point: MenuPoint; contextElement?: Element | null };\n\ninterface MenuState {\n open: boolean;\n source: MenuOpenSource | null;\n anchor: MenuAnchor | null;\n}\n\ninterface OpenMenuPayload {\n source: MenuOpenSource;\n anchor: MenuAnchor;\n}\n```\n\n### Функции состояния\n\n| Функция | Сигнатура | Назначение |\n| ------------------ | ----------------------------------------------------------- | ------------------------------------- |\n| `initialMenuState` | `MenuState` | Начальное состояние закрытого меню |\n| `openMenu` | `(payload: OpenMenuPayload) => MenuState` | Создать состояние открытого меню |\n| `closeMenu` | `(state: MenuState) => MenuState` | Закрыть меню и очистить anchor/source |\n| `toggleMenu` | `(state: MenuState, payload: OpenMenuPayload) => MenuState` | Переключить состояние |\n\n### Функции позиционирования\n\n| Функция | Сигнатура | Назначение |\n| ----------------------- | ------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------- |\n| `getMenuPointFromEvent` | `(event: { clientX: number; clientY: number }) => MenuPoint` | Получить координаты из mouse event |\n| `getMenuPointFromRect` | `(rect: { left: number; top: number; width: number; height: number }) => MenuPoint` | Получить центр прямоугольника |\n| `createVirtualAnchor` | `(point: MenuPoint, contextElement?: Element \\| null) => { getBoundingClientRect(): DOMRect; contextElement?: Element }` | Создать virtual anchor для `floating-ui` |\n\n---\n\n## Примеры использования\n\n## 1) Controlled `DropdownMenu`\n\n```tsx\nconst [open, setOpen] = useState(false);\n\nreturn (\n <DropdownMenu open={open} onOpenChange={setOpen}>\n <DropdownMenu.Trigger>\n <button type="button">{open ? "Скрыть" : "Показать"} меню</button>\n </DropdownMenu.Trigger>\n <DropdownMenu.Content>\n <DropdownMenu.Item onSelect={() => console.log("Edit")}>Редактировать</DropdownMenu.Item>\n <DropdownMenu.Item onSelect={() => setOpen(false)}>Закрыть вручную</DropdownMenu.Item>\n </DropdownMenu.Content>\n </DropdownMenu>\n);\n```\n\n## 2) Controlled `ContextMenu`\n\n```tsx\nconst [open, setOpen] = useState(false);\n\nreturn (\n <ContextMenu open={open} onOpenChange={setOpen}>\n <ContextMenu.Trigger>\n <div tabIndex={0}>Правая кнопка мыши</div>\n </ContextMenu.Trigger>\n <ContextMenu.Content>\n <ContextMenu.Item onSelect={() => alert("Открыть")}>Открыть</ContextMenu.Item>\n </ContextMenu.Content>\n </ContextMenu>\n);\n```\n\n## 3) Группы, иконки, горячие клавиши\n\n```tsx\n<DropdownMenu>\n <DropdownMenu.Trigger>\n <button type="button">Меню</button>\n </DropdownMenu.Trigger>\n <DropdownMenu.Content>\n <DropdownMenu.GroupLabel>Документ</DropdownMenu.GroupLabel>\n <DropdownMenu.Item icon={<FilePenLine size={14} />} hotKey="Ctrl+E">\n Редактировать\n </DropdownMenu.Item>\n <DropdownMenu.Item icon={<Copy size={14} />} hotKey="Ctrl+C">\n Копировать\n </DropdownMenu.Item>\n <DropdownMenu.Separator />\n <DropdownMenu.GroupLabel>Опасные</DropdownMenu.GroupLabel>\n <DropdownMenu.Item icon={<Trash2 size={14} />} hotKey="Del">\n Удалить\n </DropdownMenu.Item>\n </DropdownMenu.Content>\n</DropdownMenu>\n```\n\n## 4) Пункт-ссылка\n\n```tsx\n<ContextMenu.Item href="/docs/123" target="_blank" rel="noreferrer">\n Открыть документацию\n</ContextMenu.Item>\n```\n\n## 5) Оставлять меню открытым после выбора\n\n```tsx\n<DropdownMenu.Item closeOnSelect={false} onSelect={() => setFilter("active")}>\n Только активные\n</DropdownMenu.Item>\n```\n\n## 6) Render-function контента с `closeMenu`\n\n```tsx\n<ContextMenu.Content>\n {({ closeMenu }) => (\n <div>\n <ContextMenu.Item onSelect={() => runCommand("rename")}>Переименовать</ContextMenu.Item>\n <button type="button" onClick={closeMenu}>\n Закрыть\n </button>\n </div>\n )}\n</ContextMenu.Content>\n```\n\n## 7) Асинхронный `onSelect` с ручным закрытием\n\n```tsx\n<DropdownMenu.Item\n closeOnSelect={false}\n onSelect={async () => {\n await saveDraft();\n notify("Черновик сохранен");\n }}>\n Сохранить черновик\n</DropdownMenu.Item>\n```\n\n## 8) Отключить закрытие по клику вне меню\n\n```tsx\n<DropdownMenu.Content disableOutsideClick closeOnEscape>\n <DropdownMenu.Item>Пункт</DropdownMenu.Item>\n</DropdownMenu.Content>\n```\n\n## 9) Кастомные стили контейнера\n\n```tsx\n<ContextMenu.Content className="myContextMenu">\n <ContextMenu.Item>Кастомный пункт</ContextMenu.Item>\n</ContextMenu.Content>\n```\n\n```scss\n.myContextMenu {\n min-width: 18rem;\n max-width: 28rem;\n}\n```\n\n## 10) Использование low-level функций `shared/lib/context-menu`\n\n```ts\nimport { closeMenu, initialMenuState, openMenu, toggleMenu } from "@/shared/lib/context-menu";\n\nlet state = initialMenuState;\n\nstate = openMenu({\n source: "programmatic",\n anchor: {\n type: "point",\n point: { x: 100, y: 200 }\n }\n});\n\nstate = toggleMenu(state, {\n source: "click",\n anchor: {\n type: "point",\n point: { x: 120, y: 220 }\n }\n});\n\nstate = closeMenu(state);\n```\n\n---\n\n## Доступность и клавиатура\n\n- `Trigger` получает `aria-haspopup="menu"` и `aria-expanded`.\n- Контент рендерится с `role="menu"`.\n- Элементы действий рендерятся с `role="menuitem"`.\n- Поддержка клавиш:\n- `Shift+F10` / `ContextMenu` для открытия;\n- `ArrowUp` / `ArrowDown` для перемещения;\n- `Home` / `End` для перехода к первому/последнему пункту;\n- `Escape` для закрытия.\n\n---\n\n## Storybook\n\nИстории находятся в:\n\n- `src/shared/ui/atomic/context-menu/stories/ContextMenu.stories.tsx`\n\nОсновные сценарии:\n\n- `DropdownMenu / Базовый`\n- `ContextMenu / По правому клику`\n- `DropdownMenu / Контролируемый`\n\n---\n\n## Внутренние детали реализации\n\n- Позиционирование: `@floating-ui/react`.\n- Анимация открытия/закрытия: `motion/react` (`AnimatePresence`, `motion.div`).\n- Для совместимости с анимацией позиционирование `floating-ui` переведено на `top/left` (`transform: false`), чтобы исключить конфликт `transform` со стороны `motion`.\n\n---\n\n## Тесты\n\nПокрыты функциональные утилиты слоя `shared/lib/context-menu`:\n\n- `src/shared/lib/context-menu/state.test.ts`\n- `src/shared/lib/context-menu/anchor.test.ts`\n\nЗапуск:\n\n```bash\nnpx vitest run src/shared/lib/context-menu/state.test.ts src/shared/lib/context-menu/anchor.test.ts\n```\n'}));function l(e){return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(i,{title:`Документация/shared/ui/contextMenu`}),`
|
|
2
|
-
`,(0,d.jsx)(r,{children:s})]})}function u(e={}){let{wrapper:t}={...n(),...e.components};return t?(0,d.jsx)(t,{...e,children:(0,d.jsx)(l,{...e})}):l(e)}var d;e((()=>{d=t(),o(),a(),c()}))();export{u as default};
|
|
@@ -1,461 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./preload-helper-B45gAKPr.js";import{t}from"./iframe-BJGIOdSH.js";import{E as n,c as r,l as i,m as a}from"./blocks-ixiC6_NZ.js";import{t as o}from"./mdx-react-shim-CmoAsjhK.js";var s,c=e((()=>{s=`# Модуль форматирования дат
|
|
2
|
-
|
|
3
|
-
Утилитарный модуль для форматирования, парсинга и простых календарных операций в "плавающей" календарной семантике.
|
|
4
|
-
Человекочитаемые форматы строятся на заранее созданных \`Intl.DateTimeFormat\`, чтобы переиспользовать formatter в больших таблицах и не создавать \`Intl\` на каждый вызов.
|
|
5
|
-
|
|
6
|
-
## Ключевая идея
|
|
7
|
-
|
|
8
|
-
Модуль намеренно не пересчитывает входные значения по timezone клиента. Для него важны видимые календарные компоненты:
|
|
9
|
-
|
|
10
|
-
- год
|
|
11
|
-
- месяц
|
|
12
|
-
- день
|
|
13
|
-
- часы
|
|
14
|
-
- минуты
|
|
15
|
-
- секунды
|
|
16
|
-
|
|
17
|
-
Например, строка \`2026-03-03T18:03:50Z\` будет трактоваться как "03.03.2026 18:03:50", а не как локально пересчитанное время браузера.
|
|
18
|
-
|
|
19
|
-
В настройках \`Intl\` поля \`timeZone\` и \`timeZoneName\` намеренно игнорируются. Даже если пользовательская предустановка передаст их явно, форматирование не должно сдвигать календарные компоненты и не должно выводить \`GMT\`/\`UTC\`-метку.
|
|
20
|
-
|
|
21
|
-
Это поведение одинаково важно для:
|
|
22
|
-
|
|
23
|
-
- ISO-строк с timezone
|
|
24
|
-
- OData ticks и OData literals
|
|
25
|
-
- timestamp-значений
|
|
26
|
-
- ручного форматирования через пресеты
|
|
27
|
-
|
|
28
|
-
## Что умеет модуль
|
|
29
|
-
|
|
30
|
-
- форматировать даты и диапазоны
|
|
31
|
-
- нормализовать \`Date | null | [Date | null, Date | null]\` в диапазон \`Date\`
|
|
32
|
-
- парсить вход из \`unknown\`
|
|
33
|
-
- разбирать даты по пользовательскому шаблону
|
|
34
|
-
- приводить результат парсинга к \`Date | null\`
|
|
35
|
-
- хранить и переопределять именованные пресеты форматирования
|
|
36
|
-
- выполнять базовые календарные операции без timezone-сдвига
|
|
37
|
-
|
|
38
|
-
## Поддерживаемые входы
|
|
39
|
-
|
|
40
|
-
- \`Date\`
|
|
41
|
-
- \`number\` с Unix timestamp в секундах или миллисекундах
|
|
42
|
-
- ISO local: \`2026-03-03\`, \`2026-03-03T18:03:50.327\`
|
|
43
|
-
- ISO zoned: \`2026-03-03T18:03:50Z\`, \`2026-03-03T18:03:50+05:00\`
|
|
44
|
-
- OData ticks: \`/Date(1772524230327)/\`, \`/Date(1772513430327+0300)/\`
|
|
45
|
-
- OData literals: \`datetime'2026-03-03T18:03:50'\`, \`datetimeoffset'2026-03-03T18:03:50Z'\`
|
|
46
|
-
- ABAP compact: \`20260303\`
|
|
47
|
-
- ABAP dotted: \`03.03.2026\`
|
|
48
|
-
- slash-date: \`03/03/2026\`
|
|
49
|
-
- ISO-8601 duration: \`PT2H30M\`, \`P1DT2H3M4S\`
|
|
50
|
-
|
|
51
|
-
## Встроенные пресеты
|
|
52
|
-
|
|
53
|
-
- \`date\`: \`dd.MM.yyyy\`
|
|
54
|
-
- \`datetime\`: \`dd.MM.yyyy HH:mm\`
|
|
55
|
-
- \`datetime-seconds\`: \`dd.MM.yyyy HH:mm:ss\`
|
|
56
|
-
- \`time\`: \`HH:mm\`
|
|
57
|
-
- \`time-seconds\`: \`HH:mm:ss\`
|
|
58
|
-
- \`date-short\`: \`03.03.2026\`
|
|
59
|
-
- \`date-medium\`: \`3 мар. 2026 г.\`
|
|
60
|
-
- \`date-long\`: \`3 марта 2026 г.\`
|
|
61
|
-
- \`month-short\`: \`3 мар.\`
|
|
62
|
-
- \`month-long\`: \`3 марта\`
|
|
63
|
-
- \`time-short\`: \`18:03\`
|
|
64
|
-
- \`time-medium\`: \`18:03:50\`
|
|
65
|
-
- \`time-long\`: \`18:03:50\`
|
|
66
|
-
- \`datetime-short\`: \`03.03.2026, 18:03\`
|
|
67
|
-
- \`datetime-medium\`: \`3 мар. 2026 г., 18:03:50\`
|
|
68
|
-
- \`datetime-long\`: \`3 марта 2026 г., 18:03:50\`
|
|
69
|
-
- \`odata-date\`: \`yyyy-MM-dd\`
|
|
70
|
-
- \`odata-datetime\`: \`yyyy-MM-ddTHH:mm:ss\`
|
|
71
|
-
- \`abap-date\`: \`yyyyMMdd\`
|
|
72
|
-
- \`abap-datetime\`: \`yyyyMMddHHmmss\`
|
|
73
|
-
|
|
74
|
-
Style-пресеты используют \`Intl.DateTimeFormat\` с \`ru-RU\`, но время описано явными полями. Это важно для \`long\`: стандартный \`timeStyle: "long"\` добавляет timezone, а в этом модуле timezone-семантика запрещена.
|
|
75
|
-
|
|
76
|
-
Значения по умолчанию для любого пресета:
|
|
77
|
-
|
|
78
|
-
\`\`\`ts
|
|
79
|
-
{
|
|
80
|
-
locale: "ru-RU",
|
|
81
|
-
intlOptions: { day: "2-digit", month: "2-digit", year: "numeric" },
|
|
82
|
-
invalidFallback: ""
|
|
83
|
-
}
|
|
84
|
-
\`\`\`
|
|
85
|
-
|
|
86
|
-
## Быстрый старт
|
|
87
|
-
|
|
88
|
-
\`\`\`ts
|
|
89
|
-
import { formatDate, formatDateAsDateTime, formatDateRange, normalizeDateRange } from "@/shared/lib";
|
|
90
|
-
|
|
91
|
-
formatDate("2026-03-03T18:03:50.327Z", "datetime");
|
|
92
|
-
// "03.03.2026 18:03"
|
|
93
|
-
|
|
94
|
-
formatDateAsDateTime("/Date(1772524230327)/");
|
|
95
|
-
// "03.03.2026 18:03"
|
|
96
|
-
|
|
97
|
-
formatDateRange("2026-03-03T18:03:50Z", "2026-03-04T05:20:00+03:00", "datetime");
|
|
98
|
-
// "03.03.2026 18:03 - 04.03.2026 05:20"
|
|
99
|
-
|
|
100
|
-
normalizeDateRange(new Date(2026, 2, 3, 18, 3));
|
|
101
|
-
// [Date(2026-03-03 00:00:00), Date(2026-03-03 23:59:59)]
|
|
102
|
-
\`\`\`
|
|
103
|
-
|
|
104
|
-
## Форматирование
|
|
105
|
-
|
|
106
|
-
### \`formatDate\`
|
|
107
|
-
|
|
108
|
-
Универсальный вход в форматирование.
|
|
109
|
-
|
|
110
|
-
\`\`\`ts
|
|
111
|
-
import { formatDate } from "@/shared/lib";
|
|
112
|
-
|
|
113
|
-
formatDate("20260303", "date");
|
|
114
|
-
// "03.03.2026"
|
|
115
|
-
|
|
116
|
-
formatDate("2026-06-25", "month-short");
|
|
117
|
-
// "25 июн."
|
|
118
|
-
|
|
119
|
-
formatDate("datetimeoffset'2026-03-03T18:03:50.327Z'", "datetimeSeconds");
|
|
120
|
-
// "03.03.2026 18:03:50"
|
|
121
|
-
\`\`\`
|
|
122
|
-
|
|
123
|
-
Можно передавать не только имя пресета, но и объект пресета:
|
|
124
|
-
|
|
125
|
-
\`\`\`ts
|
|
126
|
-
formatDate("2026-03-03T18:03:50", {
|
|
127
|
-
name: "machine",
|
|
128
|
-
pattern: "yyyy-MM-ddTHH:mm:ss",
|
|
129
|
-
locale: "ru-RU",
|
|
130
|
-
invalidFallback: ""
|
|
131
|
-
});
|
|
132
|
-
// "2026-03-03T18:03:50"
|
|
133
|
-
\`\`\`
|
|
134
|
-
|
|
135
|
-
Для человекочитаемых форматов лучше передавать \`intlOptions\`. Такой объект будет скомпилирован один раз и переиспользован через внутренний \`WeakMap\`, если переиспользуется сама ссылка на объект:
|
|
136
|
-
|
|
137
|
-
\`\`\`ts
|
|
138
|
-
import type { DateFormatPreset } from "@/shared/lib";
|
|
139
|
-
|
|
140
|
-
const monthDatePreset = {
|
|
141
|
-
name: "month-date",
|
|
142
|
-
locale: "ru-RU",
|
|
143
|
-
intlOptions: { day: "numeric", month: "long" },
|
|
144
|
-
invalidFallback: ""
|
|
145
|
-
} satisfies DateFormatPreset;
|
|
146
|
-
|
|
147
|
-
formatDate("2026-03-03T18:03:50Z", monthDatePreset);
|
|
148
|
-
// "3 марта"
|
|
149
|
-
\`\`\`
|
|
150
|
-
|
|
151
|
-
Можно задать fallback:
|
|
152
|
-
|
|
153
|
-
\`\`\`ts
|
|
154
|
-
formatDate("abc", "datetime", { fallback: "н/д" });
|
|
155
|
-
// "н/д"
|
|
156
|
-
\`\`\`
|
|
157
|
-
|
|
158
|
-
### \`formatDateAsDate\`, \`formatDateAsMonthLong\`, \`formatDateAsDateTime\`, \`formatDateAsTime\`
|
|
159
|
-
|
|
160
|
-
Упрощённые helper-обёртки поверх встроенных пресетов:
|
|
161
|
-
|
|
162
|
-
\`\`\`ts
|
|
163
|
-
import { formatDateAsDate, formatDateAsDateTime, formatDateAsMonthLong, formatDateAsTime } from "@/shared/lib";
|
|
164
|
-
|
|
165
|
-
formatDateAsDate("2026-03-03T18:03:50Z");
|
|
166
|
-
// "03.03.2026"
|
|
167
|
-
|
|
168
|
-
formatDateAsMonthLong("2026-03-03T18:03:50Z");
|
|
169
|
-
// "3 марта"
|
|
170
|
-
|
|
171
|
-
formatDateAsDateTime("2026-03-03T18:03:50Z");
|
|
172
|
-
// "03.03.2026 18:03"
|
|
173
|
-
|
|
174
|
-
formatDateAsTime("2026-03-03T18:03:50Z");
|
|
175
|
-
// "18:03"
|
|
176
|
-
\`\`\`
|
|
177
|
-
|
|
178
|
-
### \`formatDateRange\`
|
|
179
|
-
|
|
180
|
-
Форматирует две даты в строку вида \`start - end\`.
|
|
181
|
-
|
|
182
|
-
\`\`\`ts
|
|
183
|
-
import { formatDateRange } from "@/shared/lib";
|
|
184
|
-
|
|
185
|
-
formatDateRange("2026-03-03T18:03:50Z", "2026-03-03T22:10:00Z", "timeSeconds");
|
|
186
|
-
// "18:03:50 - 22:10:00"
|
|
187
|
-
\`\`\`
|
|
188
|
-
|
|
189
|
-
### \`normalizeDateRange\`, \`requireDateRange\`
|
|
190
|
-
|
|
191
|
-
Нормализуют UI-значение диапазона в пару дат. Одиночная дата и частично заполненный диапазон превращаются в полный календарный день.
|
|
192
|
-
Пара дат всегда упорядочивается от меньшей к большей.
|
|
193
|
-
|
|
194
|
-
\`\`\`ts
|
|
195
|
-
import { normalizeDateRange, requireDateRange } from "@/shared/lib";
|
|
196
|
-
|
|
197
|
-
normalizeDateRange(new Date(2026, 2, 3, 18, 3));
|
|
198
|
-
// [Date(2026-03-03 00:00:00), Date(2026-03-03 23:59:59)]
|
|
199
|
-
|
|
200
|
-
normalizeDateRange([new Date(2026, 2, 5, 18, 3), new Date(2026, 2, 3, 5, 20)]);
|
|
201
|
-
// [Date(2026-03-03 00:00:00), Date(2026-03-05 23:59:59)]
|
|
202
|
-
|
|
203
|
-
normalizeDateRange([new Date(2026, 2, 5, 18, 3), new Date(2026, 2, 3, 5, 20)], { timeMode: "preserve" });
|
|
204
|
-
// [Date(2026-03-03 05:20:00), Date(2026-03-05 18:03:00)]
|
|
205
|
-
|
|
206
|
-
normalizeDateRange(null);
|
|
207
|
-
// null
|
|
208
|
-
|
|
209
|
-
requireDateRange(null);
|
|
210
|
-
// Error: Диапазон дат не задан
|
|
211
|
-
\`\`\`
|
|
212
|
-
|
|
213
|
-
### Форматирование \`duration\`
|
|
214
|
-
|
|
215
|
-
\`duration\` поддерживается только для time-шаблонов. Если шаблон содержит токены даты, вернётся fallback.
|
|
216
|
-
|
|
217
|
-
\`\`\`ts
|
|
218
|
-
formatDate("PT2H30M", "time");
|
|
219
|
-
// "02:30"
|
|
220
|
-
|
|
221
|
-
formatDate("P1DT2H3M4S", "timeSeconds");
|
|
222
|
-
// "26:03:04"
|
|
223
|
-
|
|
224
|
-
formatDate("PT12H", "date", { fallback: "н/д" });
|
|
225
|
-
// "н/д"
|
|
226
|
-
\`\`\`
|
|
227
|
-
|
|
228
|
-
## Парсинг
|
|
229
|
-
|
|
230
|
-
### \`parseDateValue\`
|
|
231
|
-
|
|
232
|
-
Возвращает подробный результат с признаком типа:
|
|
233
|
-
|
|
234
|
-
\`\`\`ts
|
|
235
|
-
import { parseDateValue } from "@/shared/lib";
|
|
236
|
-
|
|
237
|
-
parseDateValue("2026-03-03T18:03:50Z");
|
|
238
|
-
// {
|
|
239
|
-
// kind: "date-time",
|
|
240
|
-
// source: "iso-zoned",
|
|
241
|
-
// date: Date
|
|
242
|
-
// }
|
|
243
|
-
|
|
244
|
-
parseDateValue("PT2H30M");
|
|
245
|
-
// {
|
|
246
|
-
// kind: "duration",
|
|
247
|
-
// source: "iso-duration",
|
|
248
|
-
// durationMs: 9000000
|
|
249
|
-
// }
|
|
250
|
-
\`\`\`
|
|
251
|
-
|
|
252
|
-
Источники \`source\` для \`kind: "date-time"\`:
|
|
253
|
-
|
|
254
|
-
- \`date-object\`
|
|
255
|
-
- \`timestamp\`
|
|
256
|
-
- \`odata-ticks\`
|
|
257
|
-
- \`odata-literal\`
|
|
258
|
-
- \`abap-compact\`
|
|
259
|
-
- \`abap-dotted\`
|
|
260
|
-
- \`slash-date\`
|
|
261
|
-
- \`iso-local\`
|
|
262
|
-
- \`iso-zoned\`
|
|
263
|
-
|
|
264
|
-
\`null\` возвращается для:
|
|
265
|
-
|
|
266
|
-
- \`null\` и \`undefined\`
|
|
267
|
-
- пустых строк
|
|
268
|
-
- строк \`"null"\` и \`"undefined"\`
|
|
269
|
-
- невалидных \`Date\`
|
|
270
|
-
- неподдерживаемых типов
|
|
271
|
-
- битых дат и duration-строк
|
|
272
|
-
|
|
273
|
-
### \`parseDateByPattern\`
|
|
274
|
-
|
|
275
|
-
Парсит строку по пользовательскому шаблону с токенами:
|
|
276
|
-
|
|
277
|
-
- \`dd\`
|
|
278
|
-
- \`MM\`
|
|
279
|
-
- \`yyyy\`
|
|
280
|
-
- \`yy\`
|
|
281
|
-
|
|
282
|
-
\`\`\`ts
|
|
283
|
-
import { parseDateByPattern } from "@/shared/lib";
|
|
284
|
-
|
|
285
|
-
parseDateByPattern("03/03/2026", "dd/MM/yyyy");
|
|
286
|
-
// { kind: "date-time", source: "iso-local", date: Date }
|
|
287
|
-
|
|
288
|
-
parseDateByPattern("03-03-69", "dd-MM-yy");
|
|
289
|
-
// 03.03.2069
|
|
290
|
-
|
|
291
|
-
parseDateByPattern("03+03+2026", "dd+MM+yyyy");
|
|
292
|
-
// 03.03.2026
|
|
293
|
-
\`\`\`
|
|
294
|
-
|
|
295
|
-
Если \`value\` не строка, \`parseDateByPattern\` делегирует обработку в \`parseDateValue\`.
|
|
296
|
-
|
|
297
|
-
## Обёртки с результатом \`Date | null\`
|
|
298
|
-
|
|
299
|
-
### \`parseDate\`
|
|
300
|
-
|
|
301
|
-
Если нужен не подробный объект, а сразу \`Date | null\`, используй эту обёртку:
|
|
302
|
-
|
|
303
|
-
\`\`\`ts
|
|
304
|
-
import { parseDate } from "@/shared/lib";
|
|
305
|
-
|
|
306
|
-
parseDate("2026-03-03T18:03:50Z");
|
|
307
|
-
// Date(2026-03-03 18:03:50)
|
|
308
|
-
|
|
309
|
-
parseDate("PT2H30M");
|
|
310
|
-
// Date(1970-01-01 02:30:00)
|
|
311
|
-
\`\`\`
|
|
312
|
-
|
|
313
|
-
Для \`duration\` модуль строит \`Date\` из длительности без timezone-сдвига, сохраняя видимые UTC-компоненты. Это удобно для унификации API, но важно помнить: длительность и календарная дата не одно и то же.
|
|
314
|
-
|
|
315
|
-
Например:
|
|
316
|
-
|
|
317
|
-
- \`PT2H30M\` можно безопасно представить как \`01.01.1970 02:30\`
|
|
318
|
-
- \`P1DT2H3M4S\` уже становится календарной датой \`02.01.1970 02:03:04\`
|
|
319
|
-
- \`PT30H\` не сохраняет семантику "30 часов" как отдельную длительность, а превращается в календарное смещение
|
|
320
|
-
|
|
321
|
-
Если downstream-код должен различать дату и длительность, лучше использовать \`parseDateValue\`, а не \`parseDate\`.
|
|
322
|
-
|
|
323
|
-
## Работа с пресетами
|
|
324
|
-
|
|
325
|
-
### Просмотр пресетов
|
|
326
|
-
|
|
327
|
-
\`\`\`ts
|
|
328
|
-
import { getDatePreset, getDatePresetNames } from "@/shared/lib";
|
|
329
|
-
|
|
330
|
-
getDatePresetNames();
|
|
331
|
-
// ["date", "datetime", "datetimeSeconds", "time", "timeSeconds"]
|
|
332
|
-
|
|
333
|
-
getDatePreset("datetime");
|
|
334
|
-
// { name: "datetime", pattern: "dd.MM.yyyy HH:mm", ... }
|
|
335
|
-
\`\`\`
|
|
336
|
-
|
|
337
|
-
### Регистрация пользовательского пресета
|
|
338
|
-
|
|
339
|
-
\`\`\`ts
|
|
340
|
-
import { formatDate, registerDatePreset } from "@/shared/lib";
|
|
341
|
-
|
|
342
|
-
registerDatePreset({
|
|
343
|
-
name: "machine",
|
|
344
|
-
pattern: "yyyy-MM-ddTHH:mm:ss"
|
|
345
|
-
});
|
|
346
|
-
|
|
347
|
-
formatDate("2026-03-03T18:03:50", "machine");
|
|
348
|
-
// "2026-03-03T18:03:50"
|
|
349
|
-
\`\`\`
|
|
350
|
-
|
|
351
|
-
### Сброс пресетов и очистка кэша форматирования
|
|
352
|
-
|
|
353
|
-
\`\`\`ts
|
|
354
|
-
import { clearDateFormatCache, resetDatePresets } from "@/shared/lib";
|
|
355
|
-
|
|
356
|
-
resetDatePresets();
|
|
357
|
-
clearDateFormatCache();
|
|
358
|
-
\`\`\`
|
|
359
|
-
|
|
360
|
-
Обычно \`clearDateFormatCache()\` имеет смысл вызывать после массового изменения пресетов, если форматирование уже использовалось ранее.
|
|
361
|
-
|
|
362
|
-
## Календарные helper-функции
|
|
363
|
-
|
|
364
|
-
### \`createCalendarDate\`
|
|
365
|
-
|
|
366
|
-
Создаёт локальный \`Date\` без дополнительной timezone-семантики:
|
|
367
|
-
|
|
368
|
-
\`\`\`ts
|
|
369
|
-
import { createCalendarDate } from "@/shared/lib";
|
|
370
|
-
|
|
371
|
-
createCalendarDate(2026, 2, 3, 18, 3, 50);
|
|
372
|
-
// 03.03.2026 18:03:50
|
|
373
|
-
\`\`\`
|
|
374
|
-
|
|
375
|
-
Важно: месяц передаётся в формате JavaScript \`Date\`, то есть с нуля:
|
|
376
|
-
|
|
377
|
-
- \`0\` = январь
|
|
378
|
-
- \`1\` = февраль
|
|
379
|
-
- \`2\` = март
|
|
380
|
-
|
|
381
|
-
### Начало и конец периода
|
|
382
|
-
|
|
383
|
-
\`\`\`ts
|
|
384
|
-
import { getEndOfDay, getStartOfDay, getStartOfMonth } from "@/shared/lib";
|
|
385
|
-
|
|
386
|
-
const value = new Date(2026, 2, 3, 18, 3, 50);
|
|
387
|
-
|
|
388
|
-
getStartOfDay(value);
|
|
389
|
-
// 03.03.2026 00:00:00
|
|
390
|
-
|
|
391
|
-
getEndOfDay(value);
|
|
392
|
-
// 03.03.2026 23:59:59
|
|
393
|
-
|
|
394
|
-
getStartOfMonth(value);
|
|
395
|
-
// 01.03.2026 00:00:00
|
|
396
|
-
\`\`\`
|
|
397
|
-
|
|
398
|
-
### Сдвиг по календарю
|
|
399
|
-
|
|
400
|
-
\`\`\`ts
|
|
401
|
-
import { addCalendarDays, addCalendarMonths, addCalendarYears } from "@/shared/lib";
|
|
402
|
-
|
|
403
|
-
const value = new Date(2026, 2, 3, 18, 3, 50);
|
|
404
|
-
|
|
405
|
-
addCalendarDays(value, 7);
|
|
406
|
-
addCalendarMonths(value, 1);
|
|
407
|
-
addCalendarYears(value, -1);
|
|
408
|
-
\`\`\`
|
|
409
|
-
|
|
410
|
-
### Сравнение дат по календарному дню
|
|
411
|
-
|
|
412
|
-
\`\`\`ts
|
|
413
|
-
import { isSameCalendarDay } from "@/shared/lib";
|
|
414
|
-
|
|
415
|
-
isSameCalendarDay(new Date(2026, 2, 3, 1, 0, 0), new Date(2026, 2, 3, 23, 59, 59));
|
|
416
|
-
// true
|
|
417
|
-
\`\`\`
|
|
418
|
-
|
|
419
|
-
## Публичный API
|
|
420
|
-
|
|
421
|
-
Функции:
|
|
422
|
-
|
|
423
|
-
- \`formatDate\`
|
|
424
|
-
- \`formatDateAsDate\`
|
|
425
|
-
- \`formatDateAsDateTime\`
|
|
426
|
-
- \`formatDateAsMonthLong\`
|
|
427
|
-
- \`formatDateAsMonthShort\`
|
|
428
|
-
- \`formatDateAsTime\`
|
|
429
|
-
- \`formatDateRange\`
|
|
430
|
-
- \`parseDateValue\`
|
|
431
|
-
- \`parseDateByPattern\`
|
|
432
|
-
- \`parseDate\`
|
|
433
|
-
- \`registerDatePreset\`
|
|
434
|
-
- \`getDatePreset\`
|
|
435
|
-
- \`getDatePresetNames\`
|
|
436
|
-
- \`resetDatePresets\`
|
|
437
|
-
- \`clearDateFormatCache\`
|
|
438
|
-
- \`createCalendarDate\`
|
|
439
|
-
- \`getStartOfDay\`
|
|
440
|
-
- \`getEndOfDay\`
|
|
441
|
-
- \`getStartOfMonth\`
|
|
442
|
-
- \`addCalendarDays\`
|
|
443
|
-
- \`addCalendarMonths\`
|
|
444
|
-
- \`addCalendarYears\`
|
|
445
|
-
- \`isSameCalendarDay\`
|
|
446
|
-
|
|
447
|
-
Константы:
|
|
448
|
-
|
|
449
|
-
- \`DATE_FORMAT_DEFAULTS\`
|
|
450
|
-
- \`DEFAULT_DATE_PRESET_NAMES\`
|
|
451
|
-
|
|
452
|
-
Типы:
|
|
453
|
-
|
|
454
|
-
- \`DateInputSource\`
|
|
455
|
-
- \`ParsedDateValue\`
|
|
456
|
-
- \`DateFormatPattern\`
|
|
457
|
-
- \`DateFormatPreset\`
|
|
458
|
-
- \`DateFormatPresetConfig\`
|
|
459
|
-
- \`FormatDateOptions\`
|
|
460
|
-
`}));function l(e){return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(i,{title:`Документация/shared/lib/formatters/date`}),`
|
|
461
|
-
`,(0,d.jsx)(r,{children:s})]})}function u(e={}){let{wrapper:t}={...n(),...e.components};return t?(0,d.jsx)(t,{...e,children:(0,d.jsx)(l,{...e})}):l(e)}var d;e((()=>{d=t(),o(),a(),c()}))();export{u as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./preload-helper-B45gAKPr.js";function t(e){let t=[],n=0,r=``,i=()=>{r&&=(t.push({kind:`literal`,text:r}),``)};for(;n<e.length;){let a=null;for(let t of l)if(e.slice(n,n+t.length)===t){a=t;break}if(!a){r+=e[n],n+=1;continue}i(),t.push({kind:`editable`,token:a,...c[a]}),n+=a.length}return i(),t}function n(e){return e.kind===`editable`}function r(e,t){let r=new Map;return t.forEach((t,i)=>{if(!n(t))return;if(!(e instanceof Date)||Number.isNaN(e.getTime())){r.set(i,``);return}let a=o(e,t);r.set(i,a)}),r}function i(e,t){return e.every((e,r)=>!n(e)||!(t.get(r)??``))}function a(e,t,r){let i=e.map((e,t)=>({segment:e,index:t})).filter(e=>n(e.segment));for(let{segment:e,index:n}of i)if((t.get(n)??``).length<e.length)return null;let a=r?.defaultDate??new Date(1970,0,1,0,0,0,0),o=s(i,t,`year`)??a.getFullYear(),c=s(i,t,`month`)??a.getMonth()+1,l=s(i,t,`day`)??a.getDate(),u=s(i,t,`hours`)??a.getHours(),d=s(i,t,`minutes`)??a.getMinutes(),f=s(i,t,`seconds`)??a.getSeconds();if(c<1||c>12||l<1||l>31||u<0||u>23||d<0||d>59||f<0||f>59)return null;let p=new Date(o,c-1,l,u,d,f,0);return p.getFullYear()===o&&p.getMonth()===c-1&&p.getDate()===l&&p.getHours()===u&&p.getMinutes()===d&&p.getSeconds()===f?p:null}function o(e,t){let n=String(e.getFullYear());switch(t.id){case`year`:return t.length===2?n.slice(-2):n.padStart(t.length,`0`);case`month`:return String(e.getMonth()+1).padStart(t.length,`0`);case`day`:return String(e.getDate()).padStart(t.length,`0`);case`hours`:return String(e.getHours()).padStart(t.length,`0`);case`minutes`:return String(e.getMinutes()).padStart(t.length,`0`);case`seconds`:return String(e.getSeconds()).padStart(t.length,`0`)}}function s(e,t,n){let r=e.find(({segment:e})=>e.id===n);if(!r)return null;let i=t.get(r.index);if(!i)return null;let a=Number.parseInt(i,10);return Number.isFinite(a)?n===`year`&&r.segment.length===2?a<70?2e3+a:1900+a:a:null}var c,l,u=e((()=>{c={YYYY:{id:`year`,length:4,min:1,max:9999,placeholder:`ГГГГ`,ariaLabel:`Год`},yyyy:{id:`year`,length:4,min:1,max:9999,placeholder:`гггг`,ariaLabel:`Год`},yy:{id:`year`,length:2,min:0,max:99,placeholder:`гг`,ariaLabel:`Год`},MM:{id:`month`,length:2,min:1,max:12,placeholder:`мм`,ariaLabel:`Месяц`},DD:{id:`day`,length:2,min:1,max:31,placeholder:`ДД`,ariaLabel:`День`},dd:{id:`day`,length:2,min:1,max:31,placeholder:`дд`,ariaLabel:`День`},hh:{id:`hours`,length:2,min:0,max:23,placeholder:`чч`,ariaLabel:`Часы`},HH:{id:`hours`,length:2,min:0,max:23,placeholder:`чч`,ariaLabel:`Часы`},mm:{id:`minutes`,length:2,min:0,max:59,placeholder:`мм`,ariaLabel:`Минуты`},ss:{id:`seconds`,length:2,min:0,max:59,placeholder:`сс`,ariaLabel:`Секунды`}},l=Object.keys(c).sort((e,t)=>t.length-e.length)}));export{a,t as i,r as n,u as r,i as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as e,i as t}from"./preload-helper-B45gAKPr.js";import{pn as n}from"./iframe-BJGIOdSH.js";function r(e){if(typeof document>`u`)return null;let t=document.getElementById(e);if(t instanceof HTMLElement)return t;let n=document.createElement(`div`);return n.id=e,document.body.append(n),n}function i(e,t){(0,s.useEffect)(()=>{let n=n=>{if(Array.isArray(e)){let r=!0;for(let t of e)t.current&&t.current.contains(n.target)&&(r=!1);r&&t()}else e.current&&!e.current.contains(n.target)&&t()};return document.addEventListener(`mousedown`,n),()=>document.removeEventListener(`mousedown`,n)},[e,t])}function a({active:e,onDismiss:t,enabled:n=!0,documentTarget:r,containerRef:i}){let a=(0,s.useEffectEvent)(()=>t());(0,s.useEffect)(()=>{if(!e||!n)return;let t=r??(typeof document>`u`?null:document);if(!t)return;let o=e=>{if(e.key!==`Escape`)return;let n=t.activeElement,r=i?.current;r&&n instanceof Node&&n!==r&&!r.contains(n)||(e.preventDefault(),a())};return t.addEventListener(`keydown`,o,!0),()=>t.removeEventListener(`keydown`,o,!0)},[e,n,r,i])}function o({active:e,trapFocus:t=!1,restoreFocus:n=!0,initialFocus:r=`auto`,restoreFocusTarget:i,containerRef:a}){let o=(0,s.useRef)(null),l=a??o,u=(0,s.useRef)(null),d=(0,s.useEffectEvent)(e=>Array.from(e.querySelectorAll(c)).filter(e=>!e.hasAttribute(`aria-hidden`))),f=(0,s.useEffectEvent)(e=>{if(r===`container`)return e;if(typeof r==`function`)return r(e)??e;let t=d(e);return t.find(e=>e.hasAttribute(`autofocus`)||e.hasAttribute(`autoFocus`))??t[0]??e}),p=(0,s.useEffectEvent)(()=>i?.()??u.current);return(0,s.useEffect)(()=>{if(!e)return;u.current=document.activeElement instanceof HTMLElement?document.activeElement:null;let r=null,i=0,a=()=>{if(r=l.current,!r){i=window.requestAnimationFrame(a);return}let e=f(r);e instanceof HTMLElement&&e.isConnected&&e.focus(),t&&r.addEventListener(`keydown`,o)},o=e=>{if(!t||e.key!==`Tab`||!r)return;let n=d(r);if(n.length===0){e.preventDefault(),r.focus();return}let i=n[0],a=n[n.length-1],o=document.activeElement;if(e.shiftKey){(o===i||o===r)&&(e.preventDefault(),a.focus());return}o===a&&(e.preventDefault(),i.focus())};return a(),()=>{if(window.cancelAnimationFrame(i),t&&r&&r.removeEventListener(`keydown`,o),!n)return;let e=p();e?.isConnected&&e.focus()}},[e,t,n,l]),l}var s,c,l=t((()=>{s=e(n(),1),c=`button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"]):not([disabled])`}));function u({hookName:e,providerName:t,contextName:n}){let r=n?` "${n}"`:``;return[`Хук ${e} должен использоваться внутри ${t}.`,`Контекст${r} равен null, поэтому, вероятно, дерево компонентов не обёрнуто в ${t}.`,`Убедитесь, что ${t} расположен выше компонента, который вызывает ${e}.`].join(` `)}function d({hookName:e,providerName:t,contextName:n}){return Error(u({hookName:e,providerName:t,contextName:n}))}var f=t((()=>{}));export{l as a,a as i,d as n,i as o,r,o as s,f as t};
|