@ryuzaki13/react-foundation-ui 1.4.2 → 1.4.3
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-COa6-owj.js} +3 -3
- package/dist/chunks/{multi-select-CWx12rgb.js.map → multi-select-COa6-owj.js.map} +1 -1
- 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-C95db02j.js} +32 -31
- package/dist/chunks/{select-BPb-eL3O.js.map → select-C95db02j.js.map} +1 -1
- 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 -3
- package/dist/layout-picker/index.js.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/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/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/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/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/index.js +83 -80
- 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 +51 -59
- package/storybook-static/assets/{Badge-SZ48u9qp.js → Badge-DHexWW92.js} +11 -11
- package/storybook-static/assets/Badge.stories-CeWDekpP.js +54 -0
- package/storybook-static/assets/Button-VdPdxcvG.js +12 -0
- package/storybook-static/assets/{Button-CFCpYiPy.js → Button-kybsFNS9.js} +10 -10
- package/storybook-static/assets/Button.stories-DhgYDM_q.js +75 -0
- package/storybook-static/assets/{DateInput-BfFTwd_P.css → CalendarView-DKvrkS40.css} +1 -1
- package/storybook-static/assets/CalendarView-DTX0eO8t.js +1 -0
- package/storybook-static/assets/CheckBox-B6rTemHK.js +2 -0
- package/storybook-static/assets/{CheckBox-FoMSruZC.js → CheckBox-CDwboiFD.js} +11 -11
- package/storybook-static/assets/CheckBox.module-BBzuj5He.js +1 -0
- package/storybook-static/assets/CheckBox.stories-BSMihxpY.js +60 -0
- package/storybook-static/assets/Color-6AOWCN3U-D5F38IUU.js +1 -0
- package/storybook-static/assets/{ContextMenu-CU_1kOzV.js → ContextMenu-2ZQAeo_p.js} +9 -9
- package/storybook-static/assets/ContextMenu-CQtvL8kx.js +1 -0
- package/storybook-static/assets/ContextMenu.stories-Dtz2YIGk.js +90 -0
- package/storybook-static/assets/{DateInput-BeZ5esVE.js → DateInput-D41aWZ7_.js} +11 -11
- package/storybook-static/assets/DateInput-DBwgBhFj.js +1 -0
- package/storybook-static/assets/DateInput-pmGiwdvw.css +1 -0
- package/storybook-static/assets/{DateInput.stories-Bkw2r8CD.js → DateInput.stories-CMV96t-8.js} +2 -2
- package/storybook-static/assets/{DateRangePresetSelect-C_mLvEoK.js → DateRangePresetSelect-BLKJkg8X.js} +8 -8
- package/storybook-static/assets/DateRangePresetSelect-DXYYFJJn.js +3 -0
- package/storybook-static/assets/DateRangePresetSelect.stories-BNtFx_iG.js +11 -0
- package/storybook-static/assets/{Detail-WzciiK9S.js → Detail-BHcGLZok.js} +11 -11
- package/storybook-static/assets/Detail.stories-C4smn8Uu.js +44 -0
- package/storybook-static/assets/{Dialog-CwLsVxJY.js → Dialog-kji1ho-G.js} +9 -9
- package/storybook-static/assets/Dialog.stories-DYzrVcIT.js +31 -0
- package/storybook-static/assets/{Disclosure-BlRuGrk2.js → Disclosure-BVLfp53o.js} +10 -10
- package/storybook-static/assets/Disclosure.stories-DcV1pGCt.js +41 -0
- package/storybook-static/assets/DocsRenderer-JROSPFPF-CCwX0YiR.js +2 -0
- package/storybook-static/assets/{DropZone-Cr3nfCWA.js → DropZone-6iWHt6C_.js} +10 -10
- package/storybook-static/assets/DropZone.stories-bASZNbD5.js +44 -0
- package/storybook-static/assets/ExpandableActionPanel.stories-CMMbHs_d.js +20 -0
- package/storybook-static/assets/{Flex-C10912WS.js → Flex-BJViOwhH.js} +18 -18
- package/storybook-static/assets/Flex.stories-CI6DdxU7.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-CPLOruAY.js +1 -0
- package/storybook-static/assets/FloatingPopover-DC84VrV3.css +1 -0
- package/storybook-static/assets/FormattedTableCell-CV4yLuxl.js +18 -0
- package/storybook-static/assets/FormattedTableCell-CY3E21k8.css +1 -0
- package/storybook-static/assets/Grid-BCzygAqy.js +52 -0
- package/storybook-static/assets/{Grid-G88y3oB_.js → Grid-CNEn2bRE.js} +18 -18
- package/storybook-static/assets/{Grid.stories-BV7zL-6n.js → Grid.stories-qFo5E3qE.js} +2 -2
- package/storybook-static/assets/{Grid-Bb0gH6CX.js → GridContainer-qDguE1HS.js} +2 -53
- package/storybook-static/assets/ImageCropper.stories-BeQI7oKQ.js +115 -0
- package/storybook-static/assets/ImageRenderer-DK2ibQyr.js +2 -0
- package/storybook-static/assets/ImageRenderer.stories-C1T4ne0G.js +22 -0
- package/storybook-static/assets/ImageView.stories-D_Q-ZBtQ.js +9 -0
- package/storybook-static/assets/{ImageViewer.stories-PlFXSB5n.js → ImageViewer.stories-boombTJI.js} +5 -5
- package/storybook-static/assets/ImageViewerRuntime-D8KSESgf.js +51 -0
- package/storybook-static/assets/{Input-pyUNDVtk.js → Input-CGHba0oM.js} +11 -11
- package/storybook-static/assets/Input-DtOsW7ur.js +3 -0
- package/storybook-static/assets/Input.stories-C0qWd6SH.js +38 -0
- package/storybook-static/assets/{InputDateTime-CWk5KBwD.js → InputDateTime-CgYkmVYu.js} +11 -11
- package/storybook-static/assets/InputDateTime.stories-Brxo7Chn.js +35 -0
- package/storybook-static/assets/{InputFile-BLQq7mY9.js → InputFile-Bsxafe88.js} +10 -10
- package/storybook-static/assets/InputFile.stories-BzEV7ybE.js +36 -0
- package/storybook-static/assets/{InputFiles-B6J4XBdP.js → InputFiles-KJFUsmSS.js} +10 -10
- package/storybook-static/assets/InputFiles.stories-ffjxiHSh.js +33 -0
- package/storybook-static/assets/InputFilesList-D6B5g99M.js +1 -0
- package/storybook-static/assets/{InputImage--2PSB_E_.js → InputImage-Cd39V4Vc.js} +10 -10
- package/storybook-static/assets/InputImage.stories-n-tpY8OO.js +51 -0
- package/storybook-static/assets/{LayoutPicker-RZDisgZ_.js → LayoutPicker-CGQFfQk6.js} +13 -13
- package/storybook-static/assets/LayoutPicker.stories-xSL2qafC.js +449 -0
- package/storybook-static/assets/{Listbox-xwfNjBpV.js → Listbox-CxISK8c5.js} +10 -10
- package/storybook-static/assets/Listbox.stories-BdQBmVFI.js +47 -0
- package/storybook-static/assets/{Modal-HJt_Y-a6.js → Modal-BiaAWMdV.js} +12 -12
- package/storybook-static/assets/Modal.stories-GV7fGqyd.js +180 -0
- package/storybook-static/assets/MultiSelect-D5XFosSU.js +2 -0
- package/storybook-static/assets/{MultiSelect-CvNsFdE4.js → MultiSelect-Df2CpyNH.js} +11 -11
- package/storybook-static/assets/MultiSelect.stories-BEVQF6hO.js +29 -0
- package/storybook-static/assets/MultiSelectToken-CrVawISu.js +1 -0
- package/storybook-static/assets/NoData-C7KqaHUh.css +1 -0
- package/storybook-static/assets/NoData-Fm23iF4n.js +1 -0
- package/storybook-static/assets/{NotificationsHost-DXCf3CQX.js → NotificationsHost-C2vSwAjz.js} +9 -9
- package/storybook-static/assets/NotificationsHost.stories-IbgayDlM.js +25 -0
- package/storybook-static/assets/{ODataMultiSelect-CIJNiwGb.js → ODataMultiSelect-oW3kW0nO.js} +15 -15
- package/storybook-static/assets/ODataMultiSelect.stories-CP6_jGSr.js +73 -0
- package/storybook-static/assets/{ODataSelect-BDga9TUb.js → ODataSelect-CrGF8fyC.js} +15 -15
- package/storybook-static/assets/ODataSelect.stories-DTv31Rkv.js +73 -0
- package/storybook-static/assets/ODataTreeMultiSelect-D0h8H3gw.js +19 -0
- package/storybook-static/assets/ODataTreeMultiSelect.stories-CM8QjG8r.js +30 -0
- package/storybook-static/assets/ODataTreeSelect-PWn0-hI4.js +17 -0
- package/storybook-static/assets/ODataTreeSelect.stories-2UkFTnbE.js +24 -0
- package/storybook-static/assets/OneStepScroller-CH6K7wiO.js +5 -0
- package/storybook-static/assets/OneStepScroller-NRYd-egY.css +1 -0
- package/storybook-static/assets/{PeriodSelect-BJbjl62O.js → PeriodSelect-BtwJuAO6.js} +13 -13
- package/storybook-static/assets/PeriodSelect.stories-BH8I5Wmg.js +64 -0
- package/storybook-static/assets/PickerSelectionToolbar-BcL8-O6n.js +2 -0
- package/storybook-static/assets/PickerTriggerActions-C8Asdp5e.js +1 -0
- package/storybook-static/assets/{Popover-Dg2T0DoN.js → Popover-Ch5btFhR.js} +11 -11
- package/storybook-static/assets/Popover-DGX7JNNK.css +1 -0
- package/storybook-static/assets/Popover-Djns7yXR.js +2 -0
- package/storybook-static/assets/Popover.stories-Bask2I1I.js +69 -0
- package/storybook-static/assets/{PresetRangeDateInput-CNmTMNHF.js → PresetRangeDateInput-DvsTjQNP.js} +8 -8
- package/storybook-static/assets/PresetRangeDateInput.stories-BNfOUWgp.js +15 -0
- package/storybook-static/assets/PresetSelect-9zitP0-V.js +5 -0
- package/storybook-static/assets/{RadioButton-2rfUPkwC.js → RadioButton-Yb9bQKYe.js} +10 -10
- package/storybook-static/assets/RadioButton.stories-FIFxXFVP.js +36 -0
- package/storybook-static/assets/RadioGroup-CWsVqwtm.js +1 -0
- package/storybook-static/assets/{RadioGroup-BduGGVKj.js → RadioGroup-Dn0zL838.js} +10 -10
- package/storybook-static/assets/RadioGroup.stories-B_drop9x.js +42 -0
- package/storybook-static/assets/Scrollable-3Z6b5g0Z.js +1 -0
- package/storybook-static/assets/{Select-DnZ83aZs.js → Select-BaR8D89E.js} +13 -13
- package/storybook-static/assets/Select-BiOxxy0y.js +12 -0
- package/storybook-static/assets/Select.stories-CMlWu7vC.js +46 -0
- package/storybook-static/assets/SelectOptionContent-DhtCMwz6.js +1 -0
- package/storybook-static/assets/{SerializableSelect-BiFhAxAJ.js → SerializableSelect-BDiZo_-M.js} +12 -12
- package/storybook-static/assets/SerializableSelect.stories-DgC6oiRx.js +46 -0
- package/storybook-static/assets/{SingleDateTimeInput-Bc-ifbML.js → SingleDateTimeInput-Dx1fvzyr.js} +12 -12
- package/storybook-static/assets/SingleDateTimeInput.stories-NRUE7nnA.js +78 -0
- package/storybook-static/assets/Slider-DJpzPo7f.js +1 -0
- package/storybook-static/assets/{Slider-DfjBSsR3.js → Slider-aiFcrSGY.js} +15 -15
- package/storybook-static/assets/Slider.stories-B0YHmFf5.js +77 -0
- package/storybook-static/assets/{SliderInput-o9uCcVMP.js → SliderInput-sOoxvdku.js} +16 -16
- package/storybook-static/assets/SliderInput.stories-BYk1V19Z.js +68 -0
- package/storybook-static/assets/{Sortable-B6Y9Q9Yn.js → Sortable-CuVT40f8.js} +13 -13
- package/storybook-static/assets/Sortable.stories-KSWGoKrN.js +141 -0
- package/storybook-static/assets/{Splitter-CfUVnAs7.js → Splitter-EoNOj4XF.js} +11 -11
- package/storybook-static/assets/Splitter.stories-CuAZab2y.js +22 -0
- package/storybook-static/assets/{StateSelect-h0i4M4vO.js → StateSelect-B_M50HZl.js} +10 -10
- package/storybook-static/assets/StateSelect.stories-DQ_MzvL4.js +47 -0
- package/storybook-static/assets/StringToggle.stories-BbRysCKA.js +6 -0
- package/storybook-static/assets/{Switch-CPKaENqL.js → Switch-DO_tyZIc.js} +10 -10
- package/storybook-static/assets/Switch.stories-BQakMoPp.js +26 -0
- package/storybook-static/assets/{Table-xV66crR1.js → Table-CVK5rwmT.js} +22 -22
- package/storybook-static/assets/Table.stories-IZaleOjp.js +122 -0
- package/storybook-static/assets/{Tabs-v9YZeJoc.js → Tabs-DAaWUQb4.js} +15 -15
- package/storybook-static/assets/Tabs.stories-BC8LwG22.js +58 -0
- package/storybook-static/assets/TagInput.stories-CrXD57LV.js +18 -0
- package/storybook-static/assets/Text-cVBcGheg.js +1 -0
- package/storybook-static/assets/{Textarea-CRThqX0z.js → Textarea-9VdIC6G0.js} +10 -10
- package/storybook-static/assets/Textarea.stories-CEaMwEau.js +27 -0
- package/storybook-static/assets/TimePanel-vx1aOwT4.js +1 -0
- package/storybook-static/assets/TimePanel.stories-BKyiLEgy.js +25 -0
- package/storybook-static/assets/Toggle-CyajrRVE.js +1 -0
- package/storybook-static/assets/{Toggle-CzopviU2.js → Toggle-DrNoVpGe.js} +10 -10
- package/storybook-static/assets/Toggle.stories-CT0mQbdm.js +30 -0
- package/storybook-static/assets/TreeMultiSelect-CtDZ1cXU.js +1 -0
- package/storybook-static/assets/TreeMultiSelect-ag5i_Hw_.js +19 -0
- package/storybook-static/assets/TreeMultiSelect.stories-BxrbKopS.js +35 -0
- package/storybook-static/assets/TreePickerBase-DQzUtuAm.js +22 -0
- package/storybook-static/assets/TreeSelect-BNuJBo9x.js +1 -0
- package/storybook-static/assets/TreeSelect-CL8REXC5.js +16 -0
- package/storybook-static/assets/TreeSelect.stories-CsWGc9X0.js +18 -0
- package/storybook-static/assets/{TreeTable-DbzoCcR5.js → TreeTable-DrIFC4Oh.js} +22 -22
- package/storybook-static/assets/TreeTable.stories-Dq5c4_qe.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-0-Te_uje.js} +3 -3
- package/storybook-static/assets/axe-Bq-2xuso.js +20 -0
- package/storybook-static/assets/blocks-Dz3dJBcm.js +48 -0
- package/storybook-static/assets/browserAndReact-kZBm3nQe.js +105 -0
- package/storybook-static/assets/check-BMyoSD8F.js +1 -0
- package/storybook-static/assets/chevron-down-QDFtnGcg.js +1 -0
- package/storybook-static/assets/chevron-left-BoVuWD4h.js +1 -0
- package/storybook-static/assets/chevron-right-DS62_o_9.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-DDIvKskF.js +18 -0
- package/storybook-static/assets/circle-alert-CXg50Gb0.js +1 -0
- package/storybook-static/assets/circle-check-BPfYNWmz.js +1 -0
- package/storybook-static/assets/components-BejapTpU.js +241 -0
- package/storybook-static/assets/contextMenu-DtXkMNr6.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-DnZ6jhvY.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-CXMXtMjq.js +122 -0
- package/storybook-static/assets/floating-ui.react-PN45KvBS.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-DGXR8csR.js +291 -0
- package/storybook-static/assets/formatters-runtime-GsS-hTg9.js +384 -0
- package/storybook-static/assets/foundationLib-XrLbqi3r.js +82 -0
- package/storybook-static/assets/hooks-Ddmw7JMF.js +5 -0
- package/storybook-static/assets/iframe-CrnMVMTc.js +1151 -0
- package/storybook-static/assets/iframe-FUHzX0Mr.js +1 -0
- package/storybook-static/assets/info-Dqq5QHG7.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-BaxgzNGj.js +1 -0
- package/storybook-static/assets/odata-service-DnPlNGpU-Bpd4Zh9L.js +3 -0
- package/storybook-static/assets/odataAndTables-OEVW-gFK.js +126 -0
- package/storybook-static/assets/{odataFetchFn-BVgXXKgx.js → odataFetchFn-BLWeF0ZQ.js} +3 -3
- package/storybook-static/assets/odataStoryFixtures-BbswaX_5.js +25 -0
- package/storybook-static/assets/{persisted-D8qUQbts.js → persisted-BpFojVXw.js} +3 -3
- package/storybook-static/assets/preload-helper-BHmFeTtP.js +1 -0
- package/storybook-static/assets/pureUtilities-3afQk5ld.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-CpOcCp9T.js +9 -0
- package/storybook-static/assets/react-CvkUhHUq.js +1 -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-B2VU4UNA.js +1 -0
- package/storybook-static/assets/rolldown-runtime-C0FnF6B9.js +1 -0
- package/storybook-static/assets/runtimeAndState-BEFDbOiZ.js +117 -0
- package/storybook-static/assets/settings-2-CLJhjWJl.js +1 -0
- package/storybook-static/assets/sortable-DW_Veba0.js +1 -0
- package/storybook-static/assets/syntaxhighlighter-T5IQBZDB-D0RhvxXU.js +6 -0
- package/storybook-static/assets/theming-mTWhffkp.js +39 -0
- package/storybook-static/assets/trash-2-yLqdtpz8.js +1 -0
- package/storybook-static/assets/treeStoryFixtures-Ci7STpiz.js +1 -0
- package/storybook-static/assets/triangle-alert-wI8Cd8tI.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-WnxdcAM4.js +1 -0
- package/storybook-static/assets/useODataTreeData-C7L5TOjl.js +1 -0
- package/storybook-static/assets/usePickerDefaultFilter-DdxyE_i8.js +1 -0
- package/storybook-static/assets/usePickerQuery-CAWYFpCv.js +1 -0
- package/storybook-static/assets/usePickerTriggerController-BRXUlggw.js +1 -0
- package/storybook-static/assets/utils-DUM89eIj.js +1 -0
- package/storybook-static/assets/x-CyFk00QC.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/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-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/{MultiSelect-BoIwmje6.css → MultiSelectToken-BoIwmje6.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
|
@@ -0,0 +1,384 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-CrnMVMTc.js";import{i as n,r}from"./react-qN2cStNd.js";import{l as i,m as a}from"./blocks-Dz3dJBcm.js";function o(e){let t={code:`code`,h1:`h1`,h2:`h2`,h3:`h3`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,strong:`strong`,ul:`ul`,...n(),...e.components};return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(i,{title:`Foundation Lib/Formatters Runtime`}),`
|
|
2
|
+
`,(0,c.jsx)(t.h1,{id:`runtime-форматтеров-pipeline-row-based-и-value-state`,children:`Runtime форматтеров: pipeline, row-based и value state`}),`
|
|
3
|
+
`,(0,c.jsxs)(t.p,{children:[`Эта страница описывает конфигурируемый runtime из
|
|
4
|
+
`,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/formatters`}),`. Он предназначен для host-кода,
|
|
5
|
+
который хранит сериализуемую настройку отображения, а затем компилирует её для
|
|
6
|
+
ячейки таблицы, дерева или другого набора данных. Конфигурация и runtime —
|
|
7
|
+
разные границы: в конфигурации нет функций, а скомпилированные executors нельзя
|
|
8
|
+
сохранять в JSON, query cache или передавать между runtime-контекстами.`]}),`
|
|
9
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import {
|
|
10
|
+
compileFormattersPipelineExecutor,
|
|
11
|
+
formatPipelineDisplayValue,
|
|
12
|
+
validateFormattersPipelineConfig
|
|
13
|
+
} from "@ryuzaki13/react-foundation-lib/formatters";
|
|
14
|
+
|
|
15
|
+
import type {
|
|
16
|
+
FormattersPipelineConfig,
|
|
17
|
+
FormattersPipelineRuntimeField,
|
|
18
|
+
RowBasedFormatterDefinition,
|
|
19
|
+
ThresholdValueStateResolverConfig
|
|
20
|
+
} from "@ryuzaki13/react-foundation-lib/formatters";
|
|
21
|
+
`})}),`
|
|
22
|
+
`,(0,c.jsx)(t.h2,{id:`модель-данных-и-жизненный-цикл`,children:`Модель данных и жизненный цикл`}),`
|
|
23
|
+
`,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`FormattersPipelineConfig`}),` имеет фиксированную версию `,(0,c.jsx)(t.code,{children:`1`}),` и содержит хотя бы
|
|
24
|
+
один источник плана:`]}),`
|
|
25
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`type FormattersPipelineConfig = {
|
|
26
|
+
version: 1;
|
|
27
|
+
graph?: FormattersPipelineGraph;
|
|
28
|
+
plan?: FormattersPipelinePlan;
|
|
29
|
+
};
|
|
30
|
+
`})}),`
|
|
31
|
+
`,(0,c.jsxs)(t.p,{children:[`| Представление | Для чего хранится | Содержимое |
|
|
32
|
+
| -------------------------------- | ------------------------------- | --------------------------------------------------------------------------------------------------- |
|
|
33
|
+
| `,(0,c.jsx)(t.code,{children:`graph`}),` | Редактор настройки | Узлы, рёбра и необязательный `,(0,c.jsx)(t.code,{children:`viewport`}),`. Граф обязан быть линейным от `,(0,c.jsx)(t.code,{children:`source`}),` к `,(0,c.jsx)(t.code,{children:`sink`}),`. |
|
|
34
|
+
| `,(0,c.jsx)(t.code,{children:`plan`}),` | Быстрое выполнение | Массив последовательных шагов без координат. Если он валиден, у него приоритет над `,(0,c.jsx)(t.code,{children:`graph`}),`. |
|
|
35
|
+
| `,(0,c.jsx)(t.code,{children:`FormattersPipelineExecutor`}),` | Только runtime | Функция `,(0,c.jsx)(t.code,{children:`execute`}),` и флаги. Появляется после компиляции, не сериализуется. |
|
|
36
|
+
| `,(0,c.jsx)(t.code,{children:`FormattersPipelineRuntimeField`}),` | Construction-stage объекта поля | Содержит пользовательский конфиг и может получить `,(0,c.jsx)(t.code,{children:`formulaExecutor`}),` / `,(0,c.jsx)(t.code,{children:`formattersPipelineExecutor`}),`. |`]}),`
|
|
37
|
+
`,(0,c.jsx)(t.p,{children:`Безопасный порядок работы:`}),`
|
|
38
|
+
`,(0,c.jsxs)(t.ol,{children:[`
|
|
39
|
+
`,(0,c.jsx)(t.li,{children:`Создать или восстановить конфиг как обычные JSON-данные.`}),`
|
|
40
|
+
`,(0,c.jsxs)(t.li,{children:[`Для `,(0,c.jsx)(t.code,{children:`rowBasedOverride`}),` с `,(0,c.jsx)(t.code,{children:`mode: "formula"`}),` один раз настроить реестр
|
|
41
|
+
host-формул `,(0,c.jsx)(t.strong,{children:`до`}),` validation и compilation.`]}),`
|
|
42
|
+
`,(0,c.jsxs)(t.li,{children:[`Проверить `,(0,c.jsx)(t.code,{children:`validateFormattersPipelineConfig`}),`; неизвестный или устаревший
|
|
43
|
+
конфиг не компилировать.`]}),`
|
|
44
|
+
`,(0,c.jsxs)(t.li,{children:[`На явной границе восстановления можно вызвать
|
|
45
|
+
`,(0,c.jsx)(t.code,{children:`normalizeFormattersPipelineConfig`}),` и положить полученную независимую копию
|
|
46
|
+
в модель.`]}),`
|
|
47
|
+
`,(0,c.jsx)(t.li,{children:`В construction-stage скомпилировать поле или карту полей.`}),`
|
|
48
|
+
`,(0,c.jsxs)(t.li,{children:[`При отрисовке вызвать `,(0,c.jsx)(t.code,{children:`formatPipelineDisplayValue`}),` либо `,(0,c.jsx)(t.code,{children:`executor.execute`}),`.`]}),`
|
|
49
|
+
`]}),`
|
|
50
|
+
`,(0,c.jsxs)(t.p,{children:[`Не нормализуйте draft при каждом вводе. `,(0,c.jsx)(t.code,{children:`clone…`}),` создаёт независимую копию, а
|
|
51
|
+
`,(0,c.jsx)(t.code,{children:`normalize…`}),` — проверяет внешнее `,(0,c.jsx)(t.code,{children:`unknown`}),` значение и допустим только на
|
|
52
|
+
явной границе восстановления/сохранения конфигурации.`]}),`
|
|
53
|
+
`,(0,c.jsx)(t.h2,{id:`минимальный-сериализуемый-pipeline`,children:`Минимальный сериализуемый pipeline`}),`
|
|
54
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import {
|
|
55
|
+
compileFormattersPipelineRuntime,
|
|
56
|
+
formatPipelineDisplayValue,
|
|
57
|
+
validateFormattersPipelineConfig
|
|
58
|
+
} from "@ryuzaki13/react-foundation-lib/formatters";
|
|
59
|
+
|
|
60
|
+
import type { FormattersPipelineConfig } from "@ryuzaki13/react-foundation-lib/formatters";
|
|
61
|
+
|
|
62
|
+
const config = {
|
|
63
|
+
version: 1,
|
|
64
|
+
plan: {
|
|
65
|
+
steps: [
|
|
66
|
+
{
|
|
67
|
+
id: "pad-code",
|
|
68
|
+
type: "normalizeLeadingZeros",
|
|
69
|
+
config: { fixed: 5 }
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
id: "score-state",
|
|
73
|
+
type: "resolveValueState",
|
|
74
|
+
config: {
|
|
75
|
+
resolver: {
|
|
76
|
+
kind: "threshold",
|
|
77
|
+
thresholds: [60, 95],
|
|
78
|
+
states: ["warning", "success", "error"]
|
|
79
|
+
},
|
|
80
|
+
icon: { enabled: true, showValue: true, position: "left" }
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
id: "typed-value",
|
|
85
|
+
type: "typedValueFormat",
|
|
86
|
+
config: { numberPresetName: "decimal-2" }
|
|
87
|
+
}
|
|
88
|
+
]
|
|
89
|
+
}
|
|
90
|
+
} satisfies FormattersPipelineConfig;
|
|
91
|
+
|
|
92
|
+
const validation = validateFormattersPipelineConfig(config);
|
|
93
|
+
if (!validation.ok) {
|
|
94
|
+
throw new Error(validation.errors.map((item) => item.message).join("\\n"));
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
const field = {
|
|
98
|
+
id: "score",
|
|
99
|
+
role: "measure",
|
|
100
|
+
type: "decimal",
|
|
101
|
+
formattersPipeline: config
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
// Важно: эта функция записывает executors в сам объект field.
|
|
105
|
+
compileFormattersPipelineRuntime(field);
|
|
106
|
+
|
|
107
|
+
const display = formatPipelineDisplayValue({
|
|
108
|
+
field,
|
|
109
|
+
rawValue: "63.4",
|
|
110
|
+
rowData: { score: "63.4" },
|
|
111
|
+
rowKind: "plain"
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
// display.value === "63,40"
|
|
115
|
+
// display.state === "success"
|
|
116
|
+
`})}),`
|
|
117
|
+
`,(0,c.jsx)(t.h2,{id:`шаги-pipeline`,children:`Шаги pipeline`}),`
|
|
118
|
+
`,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`FormattersPipelineFormatterId`}),` допускает только четыре значения.`]}),`
|
|
119
|
+
`,(0,c.jsxs)(t.p,{children:[`| Шаг | Конфигурация | Выполнение и fallback |
|
|
120
|
+
| ----------------------- | ------------------------------------------- | ------------------------------------------------------------- |
|
|
121
|
+
| `,(0,c.jsx)(t.code,{children:`normalizeLeadingZeros`}),` | `,(0,c.jsx)(t.code,{children:`{ fixed?: number }`}),` | Передаёт текущее значение в `,(0,c.jsx)(t.code,{children:`normalizeLeadingZeros`}),`. |
|
|
122
|
+
| `,(0,c.jsx)(t.code,{children:`rowBasedOverride`}),` | field- или formula-вариант ниже | Подменяет текущее значение данными строки. |
|
|
123
|
+
| `,(0,c.jsx)(t.code,{children:`resolveValueState`}),` | fixed/threshold resolver и настройки иконки | Вычисляет `,(0,c.jsx)(t.code,{children:`state`}),`, `,(0,c.jsx)(t.code,{children:`showIcon`}),`, `,(0,c.jsx)(t.code,{children:`showValue`}),`, `,(0,c.jsx)(t.code,{children:`iconPosition`}),`. |
|
|
124
|
+
| `,(0,c.jsx)(t.code,{children:`typedValueFormat`}),` | `,(0,c.jsx)(t.code,{children:`{ numberPresetName?, datePresetName? }`}),` | Форматирует итог по OData-type поля: number, date или строка. |`]}),`
|
|
125
|
+
`,(0,c.jsx)(t.p,{children:`Ограничения валидатора:`}),`
|
|
126
|
+
`,(0,c.jsxs)(t.ul,{children:[`
|
|
127
|
+
`,(0,c.jsx)(t.li,{children:`В плане разрешён не более чем один шаг каждого вида.`}),`
|
|
128
|
+
`,(0,c.jsxs)(t.li,{children:[(0,c.jsx)(t.code,{children:`typedValueFormat`}),` не может идти раньше `,(0,c.jsx)(t.code,{children:`resolveValueState`}),`.`]}),`
|
|
129
|
+
`,(0,c.jsxs)(t.li,{children:[`У каждого шага должен быть непустой уникальный `,(0,c.jsx)(t.code,{children:`id`}),`.`]}),`
|
|
130
|
+
`,(0,c.jsxs)(t.li,{children:[`Для threshold-resolver длина `,(0,c.jsx)(t.code,{children:`states`}),` обязана равняться
|
|
131
|
+
`,(0,c.jsx)(t.code,{children:`thresholds.length + 1`}),`.`]}),`
|
|
132
|
+
`,(0,c.jsxs)(t.li,{children:[(0,c.jsx)(t.code,{children:`showValue: false`}),` при выключенной иконке — warning: ячейка не покажет
|
|
133
|
+
значение.`]}),`
|
|
134
|
+
`,(0,c.jsxs)(t.li,{children:[`В графе должны быть ровно один `,(0,c.jsx)(t.code,{children:`source`}),` и один `,(0,c.jsx)(t.code,{children:`sink`}),`; каждый путь должен
|
|
135
|
+
быть линейным, без циклов, разветвлений, оборванных и отключённых узлов.`]}),`
|
|
136
|
+
`]}),`
|
|
137
|
+
`,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`FormattersPipelineExecutionContext`}),` получает исходное `,(0,c.jsx)(t.code,{children:`value`}),`, `,(0,c.jsx)(t.code,{children:`rowData`}),`,
|
|
138
|
+
`,(0,c.jsx)(t.code,{children:`rowKind`}),`, уровень/группировки и `,(0,c.jsx)(t.code,{children:`columnId`}),`. Новый код определяет семантику
|
|
139
|
+
строки через `,(0,c.jsx)(t.code,{children:`rowKind: "plain" | "tree" | "group" | "totals"`}),` — поля
|
|
140
|
+
`,(0,c.jsx)(t.code,{children:`isGroupRow`}),` и `,(0,c.jsx)(t.code,{children:`isTotalsRow`}),` в этом контексте оставлены только для
|
|
141
|
+
совместимости.`]}),`
|
|
142
|
+
`,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`executor.execute(ctx)`}),` возвращает `,(0,c.jsx)(t.code,{children:`FormattersPipelineExecutionResult`}),`:
|
|
143
|
+
`,(0,c.jsx)(t.code,{children:`value`}),`, `,(0,c.jsx)(t.code,{children:`state`}),`, опциональную `,(0,c.jsx)(t.code,{children:`icon`}),`, `,(0,c.jsx)(t.code,{children:`showIcon`}),`, `,(0,c.jsx)(t.code,{children:`showValue`}),`,
|
|
144
|
+
`,(0,c.jsx)(t.code,{children:`iconPosition`}),`, `,(0,c.jsx)(t.code,{children:`hasTypedValueFormat`}),`.`]}),`
|
|
145
|
+
`,(0,c.jsx)(t.h3,{id:`rowbasedoverride`,children:`rowBasedOverride`}),`
|
|
146
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`type FormattersPipelineRowBasedOverrideConfig =
|
|
147
|
+
| {
|
|
148
|
+
mode: "field";
|
|
149
|
+
fieldKey: string;
|
|
150
|
+
fallbackToRaw?: boolean;
|
|
151
|
+
}
|
|
152
|
+
| {
|
|
153
|
+
mode: "formula";
|
|
154
|
+
formulaId: string;
|
|
155
|
+
dependencyIds?: string[];
|
|
156
|
+
fallbackToRaw?: boolean;
|
|
157
|
+
};
|
|
158
|
+
`})}),`
|
|
159
|
+
`,(0,c.jsxs)(t.p,{children:[`| Режим | Источник значения | Семантика по типу строки |
|
|
160
|
+
| --------- | ---------------------------------- | ----------------------------------------------------------------- |
|
|
161
|
+
| `,(0,c.jsx)(t.code,{children:`field`}),` | `,(0,c.jsx)(t.code,{children:`rowData[fieldKey]`}),` | Работает для `,(0,c.jsx)(t.code,{children:`plain`}),`, `,(0,c.jsx)(t.code,{children:`tree`}),`, `,(0,c.jsx)(t.code,{children:`group`}),`; не применяется к `,(0,c.jsx)(t.code,{children:`totals`}),`. |
|
|
162
|
+
| `,(0,c.jsx)(t.code,{children:`formula`}),` | `,(0,c.jsx)(t.code,{children:`fn(context)`}),` из row-based реестра | Работает для `,(0,c.jsx)(t.code,{children:`plain`}),`, `,(0,c.jsx)(t.code,{children:`tree`}),`, `,(0,c.jsx)(t.code,{children:`group`}),` и `,(0,c.jsx)(t.code,{children:`totals`}),`. |`]}),`
|
|
163
|
+
`,(0,c.jsxs)(t.p,{children:[`Если подмена возвращает `,(0,c.jsx)(t.code,{children:`null`}),`/`,(0,c.jsx)(t.code,{children:`undefined`}),`, `,(0,c.jsx)(t.code,{children:`fallbackToRaw`}),` по умолчанию
|
|
164
|
+
сохраняет предыдущее значение. При `,(0,c.jsx)(t.code,{children:`fallbackToRaw: false`}),` это значение
|
|
165
|
+
допускается как новый результат. Ошибка formula в executor не пробрасывается:
|
|
166
|
+
при default fallback остаётся прежнее значение, а при `,(0,c.jsx)(t.code,{children:`false`}),` получается
|
|
167
|
+
`,(0,c.jsx)(t.code,{children:`undefined`}),`.`]}),`
|
|
168
|
+
`,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`dependencyIds`}),` — упорядоченные ключи, которые formula читает по индексам.
|
|
169
|
+
Их необходимо запросить вместе с основной строкой: для этого используйте
|
|
170
|
+
`,(0,c.jsx)(t.code,{children:`collectFormattersPipelineDependencyIds`}),` или
|
|
171
|
+
`,(0,c.jsx)(t.code,{children:`collectRuntimeFieldDependencyIds`}),` до построения query.`]}),`
|
|
172
|
+
`,(0,c.jsx)(t.h2,{id:`реестр-row-based-формул`,children:`Реестр row-based формул`}),`
|
|
173
|
+
`,(0,c.jsxs)(t.p,{children:[`В конфиге хранится только `,(0,c.jsx)(t.code,{children:`formulaId`}),`; реальная функция существует только в
|
|
174
|
+
runtime host-приложения. Реестр глобален для экземпляра модуля, поэтому его
|
|
175
|
+
надо установить один раз при bootstrap, до первого вызова валидации или
|
|
176
|
+
компиляции pipeline с формульным шагом.`]}),`
|
|
177
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import { configureRowBasedFormatterRegistry, createRowBasedFormatterRegistry } from "@ryuzaki13/react-foundation-lib/formatters";
|
|
178
|
+
|
|
179
|
+
configureRowBasedFormatterRegistry(
|
|
180
|
+
createRowBasedFormatterRegistry([
|
|
181
|
+
{
|
|
182
|
+
id: "sum-dependencies",
|
|
183
|
+
name: "Сумма зависимостей",
|
|
184
|
+
description: "Складывает первые два поля строки.",
|
|
185
|
+
fn: ({ num }) => num(0) + num(1)
|
|
186
|
+
}
|
|
187
|
+
])
|
|
188
|
+
);
|
|
189
|
+
`})}),`
|
|
190
|
+
`,(0,c.jsxs)(t.p,{children:[`| API | Контракт |
|
|
191
|
+
| ---------------------------------------------- | ---------------------------------------------------------------------------------------- |
|
|
192
|
+
| `,(0,c.jsx)(t.code,{children:`createRowBasedFormatterRegistry(definitions)`}),` | Возвращает immutable registry. Бросает `,(0,c.jsx)(t.code,{children:`Error`}),` для пустого `,(0,c.jsx)(t.code,{children:`id`}),` или дубликата. |
|
|
193
|
+
| `,(0,c.jsx)(t.code,{children:`configureRowBasedFormatterRegistry(registry)`}),` | Подменяет активный module-scoped реестр. Не вызывайте повторно в обычном rendering flow. |
|
|
194
|
+
| `,(0,c.jsx)(t.code,{children:`getRowBasedFormatterList()`}),` | Список доступных host-формул. |
|
|
195
|
+
| `,(0,c.jsx)(t.code,{children:`getRowBasedFormatterById(id)`}),` | Формула или `,(0,c.jsx)(t.code,{children:`undefined`}),` для пустого/неизвестного id. |
|
|
196
|
+
| `,(0,c.jsx)(t.code,{children:`createRowBasedFormatterContext(args)`}),` | Создаёт контекст для прямого запуска formula или теста. |`]}),`
|
|
197
|
+
`,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`RowBasedFormatterDefinition`}),` содержит `,(0,c.jsx)(t.code,{children:`id`}),`, `,(0,c.jsx)(t.code,{children:`name`}),`, `,(0,c.jsx)(t.code,{children:`description`}),`,
|
|
198
|
+
`,(0,c.jsx)(t.code,{children:`fn`}),`. `,(0,c.jsx)(t.code,{children:`RowBasedFormatterContext`}),` содержит `,(0,c.jsx)(t.code,{children:`rowData`}),`, `,(0,c.jsx)(t.code,{children:`rawValue`}),`, `,(0,c.jsx)(t.code,{children:`columnId`}),`
|
|
199
|
+
и методы:`]}),`
|
|
200
|
+
`,(0,c.jsxs)(t.p,{children:[`| Метод | Результат |
|
|
201
|
+
| -------------- | --------------------------------------------------------------------------- |
|
|
202
|
+
| `,(0,c.jsx)(t.code,{children:`key(index)`}),` | ID зависимости или `,(0,c.jsx)(t.code,{children:`undefined`}),` для некорректного/вне диапазона индекса. |
|
|
203
|
+
| `,(0,c.jsx)(t.code,{children:`value(index)`}),` | Значение `,(0,c.jsx)(t.code,{children:`rowData`}),` зависимости или `,(0,c.jsx)(t.code,{children:`undefined`}),`. |
|
|
204
|
+
| `,(0,c.jsx)(t.code,{children:`num(index)`}),` | `,(0,c.jsx)(t.code,{children:`parseNumber`}),` значения зависимости; при отсутствии/невалидном значении `,(0,c.jsx)(t.code,{children:`0`}),`. |`]}),`
|
|
205
|
+
`,(0,c.jsxs)(t.p,{children:[`Формула должна быть синхронной и не должна полагаться на DOM, React state или
|
|
206
|
+
неявные внешние данные. Валидация запускает её на тестовых положительных и
|
|
207
|
+
отрицательных значениях, чтобы обнаружить недостающие/неиспользуемые
|
|
208
|
+
`,(0,c.jsx)(t.code,{children:`dependencyIds`}),` и потенциальную runtime-ошибку. Это диагностический прогон, а
|
|
209
|
+
не гарантия корректности для всех данных.`]}),`
|
|
210
|
+
`,(0,c.jsx)(t.h2,{id:`проверка-нормализация-копирование-и-новые-id`,children:`Проверка, нормализация, копирование и новые ID`}),`
|
|
211
|
+
`,(0,c.jsxs)(t.p,{children:[`| API | Когда вызывать | Результат |
|
|
212
|
+
| -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
|
|
213
|
+
| `,(0,c.jsx)(t.code,{children:`validateFormattersPipelinePlan(plan)`}),` | Перед сохранением/компиляцией готового линейного плана. | `,(0,c.jsx)(t.code,{children:`FormattersPipelineValidationResult`}),` с `,(0,c.jsx)(t.code,{children:`ok`}),`, `,(0,c.jsx)(t.code,{children:`errors`}),`, `,(0,c.jsx)(t.code,{children:`warnings`}),` и безопасным `,(0,c.jsx)(t.code,{children:`plan`}),` только при успехе. |
|
|
214
|
+
| `,(0,c.jsx)(t.code,{children:`validateFormattersPipelineGraph(graph)`}),` | Для editor graph. | Проверяет структуру и строит линейный `,(0,c.jsx)(t.code,{children:`plan`}),`. |
|
|
215
|
+
| `,(0,c.jsx)(t.code,{children:`validateFormattersPipelineConfig(config)`}),` | Основная проверка конфигурации. | Валидный `,(0,c.jsx)(t.code,{children:`plan`}),` имеет приоритет; если он невалиден и есть `,(0,c.jsx)(t.code,{children:`graph`}),`, выполняется попытка построения по графу с warning. |
|
|
216
|
+
| `,(0,c.jsx)(t.code,{children:`normalizeFormattersPipelineConfig(unknownValue)`}),` | На внешней restore/save boundary. | Возвращает валидный независимый `,(0,c.jsx)(t.code,{children:`FormattersPipelineConfig`}),` или `,(0,c.jsx)(t.code,{children:`undefined`}),`; не исправляет невалидные данные «по умолчанию». |
|
|
217
|
+
| `,(0,c.jsx)(t.code,{children:`cloneFormattersPipelineConfig(config)`}),` | Для literal draft, setter или безопасного переноса конфигурации. | Глубокая независимая копия или `,(0,c.jsx)(t.code,{children:`undefined`}),`; не валидирует и не нормализует. |
|
|
218
|
+
| `,(0,c.jsx)(t.code,{children:`cloneTypedValueFormatConfig`}),`, `,(0,c.jsx)(t.code,{children:`cloneNormalizeLeadingZerosConfig`}),`, `,(0,c.jsx)(t.code,{children:`cloneRowBasedOverrideConfig`}),`, `,(0,c.jsx)(t.code,{children:`cloneResolveValueStateConfig`}),` | Для узких UI-операций редактора. | Копия соответствующего вложенного конфига. |
|
|
219
|
+
| `,(0,c.jsx)(t.code,{children:`cloneFormatterPipelinePlanStep`}),`, `,(0,c.jsx)(t.code,{children:`cloneFormatterPipelinePlanStepToNode`}),` | При преобразовании plan-шага в editor node. | Независимый step или node с заданной позицией. |
|
|
220
|
+
| `,(0,c.jsx)(t.code,{children:`rekeyFormattersPipelineConfig(config, idFactory?)`}),` | Только при создании независимой копии для нового редактора/сущности. | Переиздаёт технические id пользовательских step/node и рёбер; `,(0,c.jsx)(t.code,{children:`source`}),`/`,(0,c.jsx)(t.code,{children:`sink`}),` сохраняют id. По умолчанию использует UUID. |`]}),`
|
|
221
|
+
`,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`FormattersPipelineValidationMessage`}),` содержит машинный `,(0,c.jsx)(t.code,{children:`code`}),` и русское
|
|
222
|
+
`,(0,c.jsx)(t.code,{children:`message`}),`; не распознавайте проблему по тексту сообщения. Для UI удобно
|
|
223
|
+
показывать `,(0,c.jsx)(t.code,{children:`errors`}),`, а `,(0,c.jsx)(t.code,{children:`warnings`}),` отображать как необязательные рекомендации.`]}),`
|
|
224
|
+
`,(0,c.jsx)(t.p,{children:`Каталог узлов можно получить без дублирования строк интерфейса:`}),`
|
|
225
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import { getFormattersPipelineDefinitionById, getFormattersPipelineDefinitions } from "@ryuzaki13/react-foundation-lib/formatters";
|
|
226
|
+
|
|
227
|
+
getFormattersPipelineDefinitions();
|
|
228
|
+
getFormattersPipelineDefinitionById("typedValueFormat");
|
|
229
|
+
`})}),`
|
|
230
|
+
`,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`getFormattersPipelineDefinitions()`}),` и
|
|
231
|
+
`,(0,c.jsx)(t.code,{children:`getFormattersPipelineDefinitionById(id)`}),` — публичный способ получить
|
|
232
|
+
readonly-каталог и описание конкретного вида форматтера.`]}),`
|
|
233
|
+
`,(0,c.jsx)(t.h2,{id:`компиляция-и-отображение`,children:`Компиляция и отображение`}),`
|
|
234
|
+
`,(0,c.jsx)(t.h3,{id:`низкоуровневый-executor`,children:`Низкоуровневый executor`}),`
|
|
235
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import { compileFormattersPipelineExecutor, formatTypedCellValue } from "@ryuzaki13/react-foundation-lib/formatters";
|
|
236
|
+
|
|
237
|
+
const compiled = compileFormattersPipelineExecutor({
|
|
238
|
+
config,
|
|
239
|
+
column: { role: "measure", type: "decimal" }
|
|
240
|
+
});
|
|
241
|
+
|
|
242
|
+
if (compiled.ok) {
|
|
243
|
+
compiled.executor.execute({
|
|
244
|
+
value: 12.5,
|
|
245
|
+
rowData: {},
|
|
246
|
+
rowKind: "plain",
|
|
247
|
+
isGroupRow: false,
|
|
248
|
+
isTotalsRow: false,
|
|
249
|
+
rowLevel: 0,
|
|
250
|
+
groupingIds: [],
|
|
251
|
+
columnId: "amount"
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
formatTypedCellValue(12.5, { role: "measure", type: "decimal" });
|
|
256
|
+
// "12,5" — default number preset "decimal"
|
|
257
|
+
`})}),`
|
|
258
|
+
`,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`compileFormattersPipelineExecutor`}),` повторно валидирует config и возвращает
|
|
259
|
+
либо `,(0,c.jsx)(t.code,{children:`{ ok: true, executor }`}),`, либо `,(0,c.jsx)(t.code,{children:`{ ok: false, reason }`}),`. Причины ошибки:
|
|
260
|
+
`,(0,c.jsx)(t.code,{children:`"pipeline_invalid"`}),` и `,(0,c.jsx)(t.code,{children:`"row_based_formula_not_found"`}),`. В последнем случае
|
|
261
|
+
надо исправить порядок bootstrap и зарегистрировать formula, а не подменять
|
|
262
|
+
её локальной функцией в сериализуемом конфиге.`]}),`
|
|
263
|
+
`,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`formatTypedCellValue(value, column, config?)`}),` работает и без pipeline:`]}),`
|
|
264
|
+
`,(0,c.jsxs)(t.p,{children:[`| Базовый OData-type | Поведение |
|
|
265
|
+
| --------------------- | ------------------------------------------------------- |
|
|
266
|
+
| Число | `,(0,c.jsx)(t.code,{children:`formatNumber`}),`; default preset `,(0,c.jsx)(t.code,{children:`decimal`}),`. |
|
|
267
|
+
| Дата | `,(0,c.jsx)(t.code,{children:`parseDate`}),`, затем `,(0,c.jsx)(t.code,{children:`formatDate`}),`; default preset `,(0,c.jsx)(t.code,{children:`date`}),`. |
|
|
268
|
+
| Остальное | `,(0,c.jsx)(t.code,{children:`toSafeString`}),`. |
|
|
269
|
+
| Небезопасное значение | Пустая строка. |`]}),`
|
|
270
|
+
`,(0,c.jsxs)(t.p,{children:[`Для прямого вызова неизвестное имя number/date-пресета заменяется default
|
|
271
|
+
пресетом. В полноценном pipeline валидатор отдельно делает неизвестный или
|
|
272
|
+
пустой `,(0,c.jsx)(t.code,{children:`numberPresetName`}),` ошибкой; неизвестный `,(0,c.jsx)(t.code,{children:`datePresetName`}),` в runtime
|
|
273
|
+
безопасно даёт preset `,(0,c.jsx)(t.code,{children:`date`}),`.`]}),`
|
|
274
|
+
`,(0,c.jsx)(t.h3,{id:`runtime-полей`,children:`Runtime полей`}),`
|
|
275
|
+
`,(0,c.jsxs)(t.p,{children:[`| API | Важное свойство |
|
|
276
|
+
| ---------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
277
|
+
| `,(0,c.jsx)(t.code,{children:`compileFormattersPipelineRuntime(field)`}),` | Компилирует `,(0,c.jsx)(t.code,{children:`formulaExecutor`}),` и `,(0,c.jsx)(t.code,{children:`formattersPipelineExecutor`}),` и `,(0,c.jsxs)(t.strong,{children:[`мутирует переданный `,(0,c.jsx)(t.code,{children:`field`})]}),`. Допустим только до помещения поля в readonly snapshot, memoized context или cache. |
|
|
278
|
+
| `,(0,c.jsx)(t.code,{children:`compileFormattersPipelineRuntimeFields(fieldsById)`}),` | Компилирует каждое существующее поле; также не пересобирает и не копирует сами поля. |
|
|
279
|
+
| `,(0,c.jsx)(t.code,{children:`formatPipelineDisplayValue(args)`}),` | Возвращает `,(0,c.jsx)(t.code,{children:`FormattersPipelineDisplayValue`}),`, пригодный для UI: значение, state, настройки иконки и `,(0,c.jsx)(t.code,{children:`overflowTooltip`}),`. |`]}),`
|
|
280
|
+
`,(0,c.jsxs)(t.p,{children:[`Перед pipeline `,(0,c.jsx)(t.code,{children:`formatPipelineDisplayValue`}),` при необходимости выполняет
|
|
281
|
+
`,(0,c.jsx)(t.code,{children:`field.formulaExecutor`}),`. Если формула отсутствует/ошиблась, `,(0,c.jsx)(t.code,{children:`purelyDerived`}),`
|
|
282
|
+
поле отображается пустым, а обычное поле возвращается к `,(0,c.jsx)(t.code,{children:`rawValue`}),`. После
|
|
283
|
+
pipeline fallback-форматирование по типу применяется автоматически, если в
|
|
284
|
+
плане не было `,(0,c.jsx)(t.code,{children:`typedValueFormat`}),`. `,(0,c.jsx)(t.code,{children:`emptyWhenZero`}),` скрывает нулевой результат
|
|
285
|
+
исходной формулы/значения как пустую строку.`]}),`
|
|
286
|
+
`,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`formulaId`}),` и `,(0,c.jsx)(t.code,{children:`formulaDependencies`}),` относятся к реестру формул host-проекта:
|
|
287
|
+
необходимая формула должна быть уже доступна до `,(0,c.jsx)(t.code,{children:`compile…Runtime`}),`, а её
|
|
288
|
+
зависимости нужно включить в данные строки.`]}),`
|
|
289
|
+
`,(0,c.jsx)(t.h2,{id:`планирование-зависимостей-данных`,children:`Планирование зависимостей данных`}),`
|
|
290
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import { collectFormattersPipelineDependencyIds, collectRuntimeFieldDependencyIds } from "@ryuzaki13/react-foundation-lib/formatters";
|
|
291
|
+
|
|
292
|
+
const dependencies = collectFormattersPipelineDependencyIds(config);
|
|
293
|
+
// Только fieldKey/dependencyIds из rowBasedOverride.
|
|
294
|
+
|
|
295
|
+
const runtimePlan = collectRuntimeFieldDependencyIds(["score"], {
|
|
296
|
+
score: {
|
|
297
|
+
formattersPipeline: config,
|
|
298
|
+
cellRenderer: { bindings: { caption: "score-label" } }
|
|
299
|
+
},
|
|
300
|
+
"score-label": {}
|
|
301
|
+
});
|
|
302
|
+
// runtimePlan.requiredColumnIds / runtimePlan.missingColumnIds
|
|
303
|
+
`})}),`
|
|
304
|
+
`,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`collectFormattersPipelineDependencyIds(config)`}),` возвращает только уникальные
|
|
305
|
+
IDs из valid `,(0,c.jsx)(t.code,{children:`rowBasedOverride`}),` в порядке первого появления.
|
|
306
|
+
`,(0,c.jsx)(t.code,{children:`collectRuntimeFieldDependencyIds(fieldIds, fieldsById)`}),` дополнительно
|
|
307
|
+
учитывает `,(0,c.jsx)(t.code,{children:`cellRenderer.bindings`}),`, отделяя известные IDs в
|
|
308
|
+
`,(0,c.jsx)(t.code,{children:`requiredColumnIds`}),` от отсутствующих в `,(0,c.jsx)(t.code,{children:`missingColumnIds`}),`. Функции не делают
|
|
309
|
+
query сами: host обязан добавить `,(0,c.jsx)(t.code,{children:`requiredColumnIds`}),` в запрос до исполнения
|
|
310
|
+
pipeline.`]}),`
|
|
311
|
+
`,(0,c.jsx)(t.h2,{id:`value-state`,children:`Value state`}),`
|
|
312
|
+
`,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`State`}),` допускает `,(0,c.jsx)(t.code,{children:`""`}),`, `,(0,c.jsx)(t.code,{children:`"none"`}),`, `,(0,c.jsx)(t.code,{children:`"information"`}),`, `,(0,c.jsx)(t.code,{children:`"success"`}),`,
|
|
313
|
+
`,(0,c.jsx)(t.code,{children:`"warning"`}),`, `,(0,c.jsx)(t.code,{children:`"error"`}),`. Resolver сопоставляет значению одно из этих состояний
|
|
314
|
+
и хранится в global registry данного module instance.`]}),`
|
|
315
|
+
`,(0,c.jsx)(t.h3,{id:`fixed-resolver`,children:`Fixed resolver`}),`
|
|
316
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import { createFixedResolver, registerFixedResolver, resolveValueState } from "@ryuzaki13/react-foundation-lib/formatters";
|
|
317
|
+
|
|
318
|
+
const resolverId = registerFixedResolver({
|
|
319
|
+
entries: { A: "success", B: "warning", C: "error" },
|
|
320
|
+
fallbackState: "none"
|
|
321
|
+
});
|
|
322
|
+
|
|
323
|
+
resolveValueState(resolverId, "B"); // "warning"
|
|
324
|
+
|
|
325
|
+
const resolve = createFixedResolver({ entries: { A: "success" } });
|
|
326
|
+
resolve("A"); // "success"
|
|
327
|
+
`})}),`
|
|
328
|
+
`,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`FixedValueStateResolverConfig`}),` содержит `,(0,c.jsx)(t.code,{children:`entries: Record<string, State>`}),` и
|
|
329
|
+
необязательный `,(0,c.jsx)(t.code,{children:`fallbackState`}),` (по умолчанию `,(0,c.jsx)(t.code,{children:`"none"`}),`). Сопоставление точное
|
|
330
|
+
по `,(0,c.jsx)(t.code,{children:`String(value)`}),`; `,(0,c.jsx)(t.code,{children:`null`}),` и `,(0,c.jsx)(t.code,{children:`undefined`}),` сразу дают fallback. Идентичные по
|
|
331
|
+
содержимому конфигурации дедуплицируются, поэтому регистрация возвращает один
|
|
332
|
+
и тот же id.`]}),`
|
|
333
|
+
`,(0,c.jsx)(t.h3,{id:`threshold-resolver`,children:`Threshold resolver`}),`
|
|
334
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import { createThresholdResolver, registerThresholdResolver } from "@ryuzaki13/react-foundation-lib/formatters";
|
|
335
|
+
|
|
336
|
+
const resolve = createThresholdResolver({
|
|
337
|
+
thresholds: [{ value: 60, boundary: "lower" }, 95],
|
|
338
|
+
states: ["warning", "success", "error"],
|
|
339
|
+
invalidState: "none"
|
|
340
|
+
});
|
|
341
|
+
|
|
342
|
+
resolve(60); // "warning": boundary "lower" использует <=
|
|
343
|
+
resolve(95); // "error": числовой threshold по умолчанию использует <
|
|
344
|
+
`})}),`
|
|
345
|
+
`,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`ThresholdValueStateResolverConfig`}),`:`]}),`
|
|
346
|
+
`,(0,c.jsxs)(t.p,{children:[`| Поле | Правило |
|
|
347
|
+
| -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
348
|
+
| `,(0,c.jsx)(t.code,{children:`thresholds`}),` | Числа либо `,(0,c.jsx)(t.code,{children:`{ value, boundary? }`}),`; `,(0,c.jsx)(t.code,{children:`boundary: "upper"`}),` по умолчанию означает, что порог относится к верхнему сегменту (`,(0,c.jsx)(t.code,{children:`<`}),` для нижнего). `,(0,c.jsx)(t.code,{children:`"lower"`}),` включает его в нижний сегмент (`,(0,c.jsx)(t.code,{children:`<=`}),`). |
|
|
349
|
+
| `,(0,c.jsx)(t.code,{children:`states`}),` | Ровно `,(0,c.jsx)(t.code,{children:`thresholds.length + 1`}),` состояний в порядке диапазонов от меньших значений к большим. Иначе `,(0,c.jsx)(t.code,{children:`create…`}),`/`,(0,c.jsx)(t.code,{children:`register…`}),` бросит `,(0,c.jsx)(t.code,{children:`Error`}),`. |
|
|
350
|
+
| `,(0,c.jsx)(t.code,{children:`invalidState`}),` | Результат для пустого, `,(0,c.jsx)(t.code,{children:`NaN`}),`, бесконечного или нечислового значения; default `,(0,c.jsx)(t.code,{children:`"none"`}),`. |`]}),`
|
|
351
|
+
`,(0,c.jsxs)(t.p,{children:[`Пороги сортируются перед compilation, но массив `,(0,c.jsx)(t.code,{children:`states`}),` не переставляется.
|
|
352
|
+
Передавайте `,(0,c.jsx)(t.code,{children:`thresholds`}),` сразу по возрастанию, чтобы соответствие сегментов и
|
|
353
|
+
states было однозначным. Для дублирующихся порогов библиотека выводит
|
|
354
|
+
`,(0,c.jsx)(t.code,{children:`console.warn`}),`, но продолжает работу.`]}),`
|
|
355
|
+
`,(0,c.jsx)(t.h3,{id:`реестр-и-presentation-helpers`,children:`Реестр и presentation helpers`}),`
|
|
356
|
+
`,(0,c.jsxs)(t.p,{children:[`| API | Поведение / side effect |
|
|
357
|
+
| --------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
|
|
358
|
+
| `,(0,c.jsx)(t.code,{children:`registerFixedResolver`}),`, `,(0,c.jsx)(t.code,{children:`registerThresholdResolver`}),` | Регистрируют конфигурационный resolver и возвращают его детерминированный короткий id. |
|
|
359
|
+
| `,(0,c.jsx)(t.code,{children:`createFixedResolver`}),`, `,(0,c.jsx)(t.code,{children:`createThresholdResolver`}),` | Возвращают функцию resolver; также используют общий registry и дедупликацию. |
|
|
360
|
+
| `,(0,c.jsx)(t.code,{children:`resolveValueState(id, value)`}),` | Возвращает `,(0,c.jsx)(t.code,{children:`"none"`}),`, если id не найден. |
|
|
361
|
+
| `,(0,c.jsx)(t.code,{children:`getValueStateResolver(id)`}),`, `,(0,c.jsx)(t.code,{children:`getValueStateResolverIds()`}),` | Читают resolver или список ids. |
|
|
362
|
+
| `,(0,c.jsx)(t.code,{children:`registerResolver(canonicalKey, compileFunction)`}),`, `,(0,c.jsx)(t.code,{children:`findResolverByCanonicalKey`}),`, `,(0,c.jsx)(t.code,{children:`computeShortHash`}),` | Низкоуровневый API для специальных host-резолверов. `,(0,c.jsx)(t.code,{children:`compileFunction`}),` — runtime-функция, её нельзя хранить в config. |
|
|
363
|
+
| `,(0,c.jsx)(t.code,{children:`resetValueStateResolvers()`}),` | Очищает global registry. Только для изолированных тестов: сбросит resolvers, созданные скомпилированными pipeline. |
|
|
364
|
+
| `,(0,c.jsx)(t.code,{children:`DEFAULT_VALUE_STATES`}),` | Readonly список presentation-состояний без пустого значения. |
|
|
365
|
+
| `,(0,c.jsx)(t.code,{children:`VALUE_STATE_COLOR_TOKENS`}),` | Соответствие `,(0,c.jsx)(t.code,{children:`State`}),` CSS token. Не меняет DOM и не подключает стили. |
|
|
366
|
+
| `,(0,c.jsx)(t.code,{children:`resolveValueStateClassName(state, fallbackClassName?)`}),` | Для `,(0,c.jsx)(t.code,{children:`success`}),` / `,(0,c.jsx)(t.code,{children:`warning`}),` / `,(0,c.jsx)(t.code,{children:`error`}),` / `,(0,c.jsx)(t.code,{children:`information`}),` возвращает `,(0,c.jsx)(t.code,{children:`status…`}),`; для остальных — fallback. |`]}),`
|
|
367
|
+
`,(0,c.jsx)(t.h2,{id:`runtime-ограничения`,children:`Runtime-ограничения`}),`
|
|
368
|
+
`,(0,c.jsxs)(t.ul,{children:[`
|
|
369
|
+
`,(0,c.jsx)(t.li,{children:`Реестры row-based formatter-ов и value-state resolver-ов — module-scoped
|
|
370
|
+
mutable state. Инициализируйте их один раз до compilation и не меняйте во
|
|
371
|
+
время рендера.`}),`
|
|
372
|
+
`,(0,c.jsxs)(t.li,{children:[`Config должен оставаться сериализуемым: IDs, строки, числа, массивы и
|
|
373
|
+
plain objects. Не сохраняйте `,(0,c.jsx)(t.code,{children:`fn`}),`, executor, `,(0,c.jsx)(t.code,{children:`Map`}),`, `,(0,c.jsx)(t.code,{children:`Date`}),`, React node или
|
|
374
|
+
registry в конфигурации.`]}),`
|
|
375
|
+
`,(0,c.jsxs)(t.li,{children:[(0,c.jsx)(t.code,{children:`compileFormattersPipelineRuntime`}),` меняет входной объект. Сначала создайте
|
|
376
|
+
обычный mutable construction object, затем скомпилируйте его и только после
|
|
377
|
+
этого публикуйте readonly snapshot.`]}),`
|
|
378
|
+
`,(0,c.jsxs)(t.li,{children:[(0,c.jsx)(t.code,{children:`resetDatePresets`}),`, `,(0,c.jsx)(t.code,{children:`resetNumberPresets`}),`, `,(0,c.jsx)(t.code,{children:`resetValueStateResolvers`}),` и
|
|
379
|
+
повторная настройка row-based registry предназначены для тестов/явно
|
|
380
|
+
изолированных окружений, а не для обычного пользовательского сценария.`]}),`
|
|
381
|
+
`,(0,c.jsx)(t.li,{children:`Ошибки validation следует показывать владельцу конфигурации. Не
|
|
382
|
+
компилируйте невалидный config и не маскируйте missing formula пустой
|
|
383
|
+
локальной реализацией.`}),`
|
|
384
|
+
`]})]})}function s(e={}){let{wrapper:t}={...n(),...e.components};return t?(0,c.jsx)(t,{...e,children:(0,c.jsx)(o,{...e})}):o(e)}var c;function l(){return(l=e((()=>{c=t(),r(),a()})))()}l();export{s as default};
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-CrnMVMTc.js";import{i as n,r}from"./react-qN2cStNd.js";import{l as i,m as a}from"./blocks-Dz3dJBcm.js";function o(e){let t={code:`code`,h1:`h1`,h2:`h2`,p:`p`,pre:`pre`,strong:`strong`,...n(),...e.components};return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(i,{title:`Foundation Lib/Обзор`}),`
|
|
2
|
+
`,(0,c.jsx)(t.h1,{id:`ryuzaki13react-foundation-lib`,children:(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib`})}),`
|
|
3
|
+
`,(0,c.jsx)(t.p,{children:`Технический фундамент для host-приложений: чистые преобразования данных, browser/React hooks, сериализуемые runtime-контракты, OData metadata helpers и инфраструктура состояния. Пакет не знает домен приложения, UI-компоненты и transport конкретного backend.`}),`
|
|
4
|
+
`,(0,c.jsx)(t.h2,{id:`подключение`,children:`Подключение`}),`
|
|
5
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-bash`,children:`npm install @ryuzaki13/react-foundation-lib
|
|
6
|
+
`})}),`
|
|
7
|
+
`,(0,c.jsxs)(t.p,{children:[`Пакет ESM и намеренно `,(0,c.jsx)(t.strong,{children:`не имеет корневого импорта`}),`. Подключайте ровно тот опубликованный subpath, который нужен сценарию:`]}),`
|
|
8
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import { formatDateAsDate } from "@ryuzaki13/react-foundation-lib/formatters";
|
|
9
|
+
import { createQueryClient } from "@ryuzaki13/react-foundation-lib/query-client";
|
|
10
|
+
import type { RowRecord } from "@ryuzaki13/react-foundation-lib/types";
|
|
11
|
+
`})}),`
|
|
12
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`// Неверно: корневой entrypoint не опубликован.
|
|
13
|
+
import { formatDateAsDate } from "@ryuzaki13/react-foundation-lib";
|
|
14
|
+
`})}),`
|
|
15
|
+
`,(0,c.jsx)(t.h2,{id:`граница-ответственности`,children:`Граница ответственности`}),`
|
|
16
|
+
`,(0,c.jsxs)(t.p,{children:[`| Задача | Использовать | Не использовать вместо этого |
|
|
17
|
+
| ---------------------------------------------------------- | ----------------------------------------- | ------------------------------------ |
|
|
18
|
+
| Чистые OData V2 metadata, path, filter и value helpers | `,(0,c.jsx)(t.code,{children:`odata-service`}),` | HTTP/OData transport |
|
|
19
|
+
| Вызовы SAP Gateway, SSO, X-CSRF и TanStack Query operation | `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-api/odata`}),` | ручной `,(0,c.jsx)(t.code,{children:`fetch`}),` или этот пакет |
|
|
20
|
+
| UI primitives и дизайн-система | `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-ui/<module>`}),` | hooks/utilities из lib как компонент |
|
|
21
|
+
| Доменный mapping и пользовательский сценарий | host entity/feature | foundation-lib |`]}),`
|
|
22
|
+
`,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`react-foundation-lib`}),` не создаёт бизнес-правила, не хранит backend snapshot и не заменяет API- или UI-пакеты.`]}),`
|
|
23
|
+
`,(0,c.jsx)(t.h2,{id:`среда-выполнения-и-peer-dependencies`,children:`Среда выполнения и peer dependencies`}),`
|
|
24
|
+
`,(0,c.jsx)(t.p,{children:`Большинство pure helpers не требуют React. Entry point с React hook, DOM, browser storage или Service Worker должен вызываться только в браузерном runtime и по правилам React hooks. Совместимые peer dependencies должны быть разрешены host-проектом для используемого entrypoint.`}),`
|
|
25
|
+
`,(0,c.jsxs)(t.p,{children:[`| Возможность | Когда нужна в host |
|
|
26
|
+
| ----------------------------------------------- | ---------------------------------------------------------------------------- |
|
|
27
|
+
| `,(0,c.jsx)(t.code,{children:`react`}),` | `,(0,c.jsx)(t.code,{children:`hooks`}),`, `,(0,c.jsx)(t.code,{children:`dom`}),`, `,(0,c.jsx)(t.code,{children:`copy`}),`, `,(0,c.jsx)(t.code,{children:`media`}),`, `,(0,c.jsx)(t.code,{children:`pwa`}),`, `,(0,c.jsx)(t.code,{children:`three-scene`}),`, selection/table hooks |
|
|
28
|
+
| `,(0,c.jsx)(t.code,{children:`@tanstack/react-query`}),`, persistence, broadcast | `,(0,c.jsx)(t.code,{children:`query-client`}),`, часть `,(0,c.jsx)(t.code,{children:`error-report`}),` |
|
|
29
|
+
| `,(0,c.jsx)(t.code,{children:`@tanstack/react-table`}),` | `,(0,c.jsx)(t.code,{children:`table`}),` |
|
|
30
|
+
| `,(0,c.jsx)(t.code,{children:`@tanstack/react-virtual`}),` | `,(0,c.jsx)(t.code,{children:`virtualizer`}),` |
|
|
31
|
+
| `,(0,c.jsx)(t.code,{children:`@tanstack/react-router`}),` | search helpers из `,(0,c.jsx)(t.code,{children:`hooks`}),` |
|
|
32
|
+
| `,(0,c.jsx)(t.code,{children:`@floating-ui/react`}),` | `,(0,c.jsx)(t.code,{children:`useFloatingListbox`}),`, DOM reference guards |
|
|
33
|
+
| `,(0,c.jsx)(t.code,{children:`@dnd-kit/core`}),`, `,(0,c.jsx)(t.code,{children:`@dnd-kit/sortable`}),` | `,(0,c.jsx)(t.code,{children:`useDndSortableSensors`}),` |
|
|
34
|
+
| `,(0,c.jsx)(t.code,{children:`zustand`}),`, `,(0,c.jsx)(t.code,{children:`immer`}),` | `,(0,c.jsx)(t.code,{children:`notifications`}),`, OData store |
|
|
35
|
+
| `,(0,c.jsx)(t.code,{children:`zod`}),` | `,(0,c.jsx)(t.code,{children:`odata-service`}),` schemas |
|
|
36
|
+
| `,(0,c.jsx)(t.code,{children:`write-excel-file`}),` | `,(0,c.jsx)(t.code,{children:`excel`}),` |`]}),`
|
|
37
|
+
`,(0,c.jsx)(t.h2,{id:`выбор-entrypoint`,children:`Выбор entrypoint`}),`
|
|
38
|
+
`,(0,c.jsxs)(t.p,{children:[`| Сценарий | Точный import |
|
|
39
|
+
| ---------------------------------------------------- | ----------------------------------------------------- |
|
|
40
|
+
| Массивы, дедупликация, grouping, reorder | `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/array`}),` |
|
|
41
|
+
| Base64 и `,(0,c.jsx)(t.code,{children:`Blob`}),` | `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/binary`}),` |
|
|
42
|
+
| Ограниченный стек копий | `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/bounded-copy-stack`}),` |
|
|
43
|
+
| Anchor и state контекстного меню | `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/context-menu`}),` |
|
|
44
|
+
| Clipboard и feedback hooks | `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/copy`}),` |
|
|
45
|
+
| Hash и UUID | `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/crypto`}),` |
|
|
46
|
+
| Валютные labels по OData-параметрам | `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/currency`}),` |
|
|
47
|
+
| Сегменты маски даты | `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/date-segments`}),` |
|
|
48
|
+
| Portal, focus, observers, browser download | `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/dom`}),` |
|
|
49
|
+
| Ошибка отсутствующего React context | `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/error`}),` |
|
|
50
|
+
| Подготовка и диагностика error report | `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/error-report`}),` |
|
|
51
|
+
| Excel и экспорт таблиц | `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/excel`}),` |
|
|
52
|
+
| `,(0,c.jsx)(t.code,{children:`FileReader`}),`, MIME, Content-Disposition, изображения | `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/file`}),` |
|
|
53
|
+
| Client fingerprint | `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/fingerprint`}),` |
|
|
54
|
+
| Form errors и presets | `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/form`}),` |
|
|
55
|
+
| Даты, числа, строки, pipeline и value state | `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/formatters`}),` |
|
|
56
|
+
| Реестр и выполнение клиентских формул таблицы | `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/formulas`}),` |
|
|
57
|
+
| Общие React hooks | `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/hooks`}),` |
|
|
58
|
+
| HTTP headers и text `,(0,c.jsx)(t.code,{children:`Response`}),` | `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/http`}),` |
|
|
59
|
+
| Breakpoints и media-query hooks | `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/media`}),` |
|
|
60
|
+
| Imperative notifications и store | `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/notifications`}),` |
|
|
61
|
+
| Математика slider/scale | `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/number-scale`}),` |
|
|
62
|
+
| OData code/text collections и store | `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/odata`}),` |
|
|
63
|
+
| OData V2 metadata, builder, filters, formats | `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/odata-service`}),` |
|
|
64
|
+
| Нормализация сохранённых preset ids | `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/presets`}),` |
|
|
65
|
+
| Service Worker update и cache policy | `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/pwa`}),` |
|
|
66
|
+
| Только cache policy | `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/pwa/sw-cache-policy`}),` |
|
|
67
|
+
| QueryClient, persistence, broadcast | `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/query-client`}),` |
|
|
68
|
+
| Вывод открытых границ диапазона | `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/range-output`}),` |
|
|
69
|
+
| SEO/head metadata contracts | `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/seo`}),` |
|
|
70
|
+
| ID в `,(0,c.jsx)(t.code,{children:`sessionStorage`}),` | `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/session-storage`}),` |
|
|
71
|
+
| Предсказуемое строковое сравнение | `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/string-comparison`}),` |
|
|
72
|
+
| TanStack Table layout, selection и OData adapter | `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/table`}),` |
|
|
73
|
+
| Проверка доступности Three.js | `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/three-scene`}),` |
|
|
74
|
+
| Построение tree-table rows | `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/tree-table`}),` |
|
|
75
|
+
| Общие TypeScript contracts | `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/types`}),` |
|
|
76
|
+
| Clone, className, keyboard, stable stringify, tree | `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/utils`}),` |
|
|
77
|
+
| Runtime guards и URL/image validation | `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/validators`}),` |
|
|
78
|
+
| Infinite-query подгрузка virtualizer | `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/virtualizer`}),` |
|
|
79
|
+
| XML parse/build | `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/xml`}),` |`]}),`
|
|
80
|
+
`,(0,c.jsx)(t.h2,{id:`как-читать-справочник`,children:`Как читать справочник`}),`
|
|
81
|
+
`,(0,c.jsxs)(t.p,{children:[`Каждая последующая страница построена вокруг `,(0,c.jsx)(t.strong,{children:`published subpath`}),`, а не каталога исходников. В ней указаны точный import, публичные contracts, обязательная инициализация, результат, lifecycle/cleanup и ограничения. Для pure helpers достаточно вызвать функцию; registry, browser и global-store API требуют отдельного раздела «Инициализация и side effects».`]}),`
|
|
82
|
+
`,(0,c.jsxs)(t.p,{children:[`Если API не описан как публичный на соответствующей странице, не импортируйте его глубоким путём из `,(0,c.jsx)(t.code,{children:`src`}),` или `,(0,c.jsx)(t.code,{children:`dist`}),`: это не часть стабильного consumer contract.`]})]})}function s(e={}){let{wrapper:t}={...n(),...e.components};return t?(0,c.jsx)(t,{...e,children:(0,c.jsx)(o,{...e})}):o(e)}var c;function l(){return(l=e((()=>{c=t(),r(),a()})))()}l();export{s as default};
|