@ryuzaki13/react-foundation-ui 1.8.5 → 1.8.7
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 +2 -2
- package/dist/base-table/index.js +1 -1
- package/dist/chunks/{base-table-CsnUiMTe.js → base-table-CYbtifH0.js} +2 -2
- package/dist/chunks/{base-table-CsnUiMTe.js.map → base-table-CYbtifH0.js.map} +1 -1
- package/dist/chunks/{context-menu-C8sA7xCN.js → context-menu-L4KM0FRD.js} +2 -2
- package/dist/chunks/{context-menu-C8sA7xCN.js.map → context-menu-L4KM0FRD.js.map} +1 -1
- package/dist/chunks/date-input-g6l1iDmf.js.map +1 -1
- package/dist/chunks/{multi-select-Cvjz9W07.js → multi-select-CCgoTHWI.js} +2 -2
- package/dist/chunks/{multi-select-Cvjz9W07.js.map → multi-select-CCgoTHWI.js.map} +1 -1
- package/dist/chunks/{picker-0I1yMKIY.js → picker-Cb3D2Hts.js} +6 -2
- package/dist/chunks/picker-Cb3D2Hts.js.map +1 -0
- package/dist/chunks/{select-CUQ91FIc.js → select-Baek-IUe.js} +2 -2
- package/dist/chunks/{select-CUQ91FIc.js.map → select-Baek-IUe.js.map} +1 -1
- package/dist/chunks/{table-z9kyd9U3.js → table-CrQiurtA.js} +2 -2
- package/dist/chunks/{table-z9kyd9U3.js.map → table-CrQiurtA.js.map} +1 -1
- package/dist/context-menu/index.js +1 -1
- package/dist/layout-picker/index.js +1 -1
- package/dist/listbox/index.js +1 -1
- package/dist/multi-select/index.js +1 -1
- package/dist/picker/index.js +1 -1
- package/dist/preset-select/index.js +1 -1
- package/dist/select/index.js +1 -1
- package/dist/simple-table/index.js +1 -1
- package/dist/slider/index.js +1 -1
- package/dist/state-select/index.js +1 -1
- package/dist/styles.css +1 -1
- package/dist/table/index.js +1 -1
- package/dist/table-sorting/index.js +1 -1
- package/dist/tree-select/index.js +1 -1
- package/dist/tree-table/index.js +1 -1
- package/package.json +4 -4
- package/storybook-static/assets/{Badge-CzxxuE7D.js → Badge-C4U4sxtF.js} +1 -1
- package/storybook-static/assets/{Badge.stories-RaI7qvpZ.js → Badge.stories-DHmJTpdf.js} +1 -1
- package/storybook-static/assets/{BadgeList-B7cF3h_F.js → BadgeList-BOs5ycWn.js} +1 -1
- package/storybook-static/assets/{Button-Cjmm8oDV.js → Button-BTtYeCS_.js} +1 -1
- package/storybook-static/assets/{Button-6z1R7ZA8.js → Button-Bkb3wQw6.js} +1 -1
- package/storybook-static/assets/{Button.stories-B5fUA2Gu.js → Button.stories-DgFLAdcg.js} +1 -1
- package/storybook-static/assets/{CalendarView-Dlt0f4Jr.js → CalendarView-BIFHbOTr.js} +1 -1
- package/storybook-static/assets/{CheckBox-L4324ZCs.js → CheckBox-76M-N56J.js} +1 -1
- package/storybook-static/assets/{CheckBox-BOSDcvCd.js → CheckBox-D4u-58g8.js} +1 -1
- package/storybook-static/assets/{CheckBox.module-CoYygdZx.js → CheckBox.module-BOAVN-Ny.js} +1 -1
- package/storybook-static/assets/{CheckBox.stories-DALRNTV0.js → CheckBox.stories-Caw6-hSQ.js} +1 -1
- package/storybook-static/assets/{Color-6AOWCN3U-UmlmbwVs.js → Color-6AOWCN3U-CPYGaU3y.js} +1 -1
- package/storybook-static/assets/{ContextMenu-giZ56GIC.js → ContextMenu-CUWt-eg1.js} +1 -1
- package/storybook-static/assets/{ContextMenu-BOez7LwB.js → ContextMenu-gfYYiVdR.js} +1 -1
- package/storybook-static/assets/{ContextMenu.stories-BnoaSq3Q.js → ContextMenu.stories-BuQS57wW.js} +1 -1
- package/storybook-static/assets/{CustomOptionButton-C1VgtQgI.js → CustomOptionButton-Be7sd0Lb.js} +1 -1
- package/storybook-static/assets/{DateInput-A3468S6P.js → DateInput-B4oviF7J.js} +1 -1
- package/storybook-static/assets/{DateInput-oWtyLo3Q.js → DateInput-BQGUMYsW.js} +1 -1
- package/storybook-static/assets/{DateInput.stories-BeGG7Vzf.js → DateInput.stories-D6q7J1C4.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect--h5MdeWg.js → DateRangePresetSelect-BAxaG0HP.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect-DbKRsjNX.js → DateRangePresetSelect-Cq6pOZPu.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect.stories-BS1ll9RK.js → DateRangePresetSelect.stories-d4HFbao6.js} +1 -1
- package/storybook-static/assets/{Detail-FEi6FSkD.js → Detail-DlETcWVp.js} +1 -1
- package/storybook-static/assets/{Detail.stories-Dy2yKBDx.js → Detail.stories-BEwFXEZH.js} +1 -1
- package/storybook-static/assets/{Dialog-C7Zfcyjf.js → Dialog-Bk8aoiOf.js} +1 -1
- package/storybook-static/assets/{Dialog-CXnHtk_h.js → Dialog-D63TJr1M.js} +1 -1
- package/storybook-static/assets/{Dialog.stories-BeUqdA_f.js → Dialog.stories-BR7NqeZj.js} +1 -1
- package/storybook-static/assets/{Disclosure-BqsgTrM0.js → Disclosure-zQK54WKU.js} +1 -1
- package/storybook-static/assets/{Disclosure.stories-D3LzXhet.js → Disclosure.stories-CNLpB5YJ.js} +1 -1
- package/storybook-static/assets/{DisclosureGroup-BAF5Untb.js → DisclosureGroup-C_nZSLZw.js} +1 -1
- package/storybook-static/assets/{DocsRenderer-JROSPFPF-luRRUpJ_.js → DocsRenderer-JROSPFPF-CoU8mWAw.js} +2 -2
- package/storybook-static/assets/{DropZone-B-YA4zyu.js → DropZone-CUz1Q4bA.js} +1 -1
- package/storybook-static/assets/{DropZone-DKrOIaeH.js → DropZone-Y5hvED_x.js} +1 -1
- package/storybook-static/assets/{DropZone.stories-wf2ubfGc.js → DropZone.stories-BH4FSM4P.js} +1 -1
- package/storybook-static/assets/{DropdownMenu-BiWUESj0.js → DropdownMenu-Bi6-5Gqf.js} +1 -1
- package/storybook-static/assets/{ExpandableActionPanel-Dtfw5TWs.js → ExpandableActionPanel-BfWj887r.js} +1 -1
- package/storybook-static/assets/{ExpandableActionPanel.stories-BOdw0CLN.js → ExpandableActionPanel.stories-CGxcwRMU.js} +1 -1
- package/storybook-static/assets/{Flex-BaSYiAMD.js → Flex-Dm-Qfvzk.js} +1 -1
- package/storybook-static/assets/{Flex.stories-CD_e9R5B.js → Flex.stories-B3zMz03s.js} +1 -1
- package/storybook-static/assets/{FlexContainer-LmZIdhq2.js → FlexContainer-BWyPlTMB.js} +1 -1
- package/storybook-static/assets/{FlexItem-vkDYa5tA.js → FlexItem-pu3E11Sf.js} +1 -1
- package/storybook-static/assets/{FloatingPopover-C65hSmop.js → FloatingPopover-NMRTnqfo.js} +1 -1
- package/storybook-static/assets/FormattedTableCell-BISjHrBJ.js +15 -0
- package/storybook-static/assets/{Grid-BCzygAqy.js → Grid-CzO0Ae1r.js} +1 -1
- package/storybook-static/assets/{Grid-8eLmW2AB.js → Grid-vZyA-712.js} +1 -1
- package/storybook-static/assets/{Grid.stories-DULQOmbC.js → Grid.stories-BQqK0zom.js} +1 -1
- package/storybook-static/assets/{GridContainer-qDguE1HS.js → GridContainer-fKYgDsLl.js} +1 -1
- package/storybook-static/assets/{ImageCropper.stories-C1O-Zv4X.js → ImageCropper.stories-Ca4MZWOW.js} +3 -3
- package/storybook-static/assets/{ImageRenderer-BOyGnl1v.js → ImageRenderer-BWIk_76e.js} +1 -1
- package/storybook-static/assets/{ImageRenderer.stories-Cms0kMXA.js → ImageRenderer.stories-C1FfOcFD.js} +1 -1
- package/storybook-static/assets/{ImageView.stories-CUR6bAyn.js → ImageView.stories-DyuR7kdq.js} +1 -1
- package/storybook-static/assets/{ImageViewer.stories-BwJKAIT7.js → ImageViewer.stories-PcvOFYqC.js} +2 -2
- package/storybook-static/assets/{ImageViewerRuntime-CzkvEHax.js → ImageViewerRuntime-BiI7Xukq.js} +2 -2
- package/storybook-static/assets/{Input-B2_RznVE.js → Input-CsD-x1BQ.js} +1 -1
- package/storybook-static/assets/{Input-ebp78QN1.js → Input-D_4GoCLl.js} +1 -1
- package/storybook-static/assets/{Input.stories-BKwTRsUL.js → Input.stories-D-1urO1N.js} +1 -1
- package/storybook-static/assets/{InputDateTime-pK4mlxxm.js → InputDateTime-CFQanHxB.js} +1 -1
- package/storybook-static/assets/{InputDateTime.stories-J4Gd0DaU.js → InputDateTime.stories-Q4Ao5Tat.js} +1 -1
- package/storybook-static/assets/{InputFile-D1x1T--f.js → InputFile-Bj8PXGY3.js} +1 -1
- package/storybook-static/assets/{InputFile-BYcgJx2f.js → InputFile-DM6fBXUx.js} +1 -1
- package/storybook-static/assets/{InputFile.stories-DAYDiSFH.js → InputFile.stories-DC27BYoQ.js} +1 -1
- package/storybook-static/assets/{InputFiles-D7kcGvWK.js → InputFiles-D59MGS0Z.js} +1 -1
- package/storybook-static/assets/{InputFiles-C9HH7fIG.js → InputFiles-teFj6f6X.js} +1 -1
- package/storybook-static/assets/{InputFiles.stories-CJTwQutb.js → InputFiles.stories-DX5UEvYR.js} +1 -1
- package/storybook-static/assets/{InputFilesList-ChI0hQ07.js → InputFilesList-BD4Y0gN-.js} +1 -1
- package/storybook-static/assets/{InputImage-B3KFrWqa.js → InputImage-DmsFGNLJ.js} +1 -1
- package/storybook-static/assets/{InputImage-C0-U_QHU.js → InputImage-Du6jGDmY.js} +1 -1
- package/storybook-static/assets/{InputImage.stories-QEtqeok5.js → InputImage.stories-u0hrr-Da.js} +1 -1
- package/storybook-static/assets/{InteractiveComponents-DB71eb-1.js → InteractiveComponents-BLQiSO3p.js} +1 -1
- package/storybook-static/assets/{InteractiveComponents.stories-DdZpmMis.js → InteractiveComponents.stories-BxIVvRz5.js} +1 -1
- package/storybook-static/assets/{LayoutPicker-CicZY4X9.js → LayoutPicker-TecE4x6w.js} +1 -1
- package/storybook-static/assets/{LayoutPicker-DBEYC_LA.js → LayoutPicker-xUooYcbS.js} +1 -1
- package/storybook-static/assets/{LayoutPicker.stories-BFtP0gOy.js → LayoutPicker.stories-YDMnmhJ4.js} +1 -1
- package/storybook-static/assets/{Listbox-B0Nqys9f.js → Listbox-D2k8QfTs.js} +1 -1
- package/storybook-static/assets/{Listbox-CLP0Cpin.js → Listbox-DplAn6ND.js} +1 -1
- package/storybook-static/assets/{Listbox.stories-BHeIn0H8.js → Listbox.stories-Bg3_UQD4.js} +1 -1
- package/storybook-static/assets/{Modal-D4jDp5U4.js → Modal-4OdkCwCv.js} +1 -1
- package/storybook-static/assets/{Modal.stories-CMHJdaj1.js → Modal.stories-BwawDSGR.js} +1 -1
- package/storybook-static/assets/{ModalManagerProvider-D8tCMe07.js → ModalManagerProvider-CYR_xbpx.js} +1 -1
- package/storybook-static/assets/{MultiSelect-Bmb0qTzT.js → MultiSelect-CXn1CY9G.js} +1 -1
- package/storybook-static/assets/{MultiSelect-y6FjtCjy.js → MultiSelect-iwbCRD9H.js} +1 -1
- package/storybook-static/assets/{MultiSelect.stories-B9TZNWng.js → MultiSelect.stories-BSjAL2ua.js} +1 -1
- package/storybook-static/assets/{NoData-CzlhZzHI.js → NoData-6Scjk2OD.js} +1 -1
- package/storybook-static/assets/{NotificationsHost-AE9gk5zq.js → NotificationsHost-DK3A-iq7.js} +1 -1
- package/storybook-static/assets/{NotificationsHost.stories-Bu0__u38.js → NotificationsHost.stories-BRmPf9Q7.js} +1 -1
- package/storybook-static/assets/{ODataMultiSelect-DJ6zie6W.js → ODataMultiSelect-CuNGV1QU.js} +1 -1
- package/storybook-static/assets/{ODataMultiSelect.stories-BjgJGbWL.js → ODataMultiSelect.stories-CyAonfZC.js} +1 -1
- package/storybook-static/assets/{ODataSelect-V1JJpKB9.js → ODataSelect-vhh4NJS_.js} +1 -1
- package/storybook-static/assets/{ODataSelect.stories-B2INiDvW.js → ODataSelect.stories-aJBFF45H.js} +1 -1
- package/storybook-static/assets/{ODataTreeMultiSelect-BKMrgz8e.js → ODataTreeMultiSelect-vPtlTloF.js} +1 -1
- package/storybook-static/assets/{ODataTreeMultiSelect.stories-CjLPeqio.js → ODataTreeMultiSelect.stories-DTBAF628.js} +1 -1
- package/storybook-static/assets/{ODataTreeSelect-C2iGJdYk.js → ODataTreeSelect-BCVVLB9M.js} +1 -1
- package/storybook-static/assets/{ODataTreeSelect.stories-ReyoXlcX.js → ODataTreeSelect.stories-CptC0p6O.js} +1 -1
- package/storybook-static/assets/{OneStepScroller-knlVIvl2.js → OneStepScroller-DerjCiL3.js} +1 -1
- package/storybook-static/assets/{Option-CJBK9i2B.css → Option-CwetjUM8.css} +1 -1
- package/storybook-static/assets/{Option-KVcu4DcX.js → Option-DkAw9S3l.js} +4 -4
- package/storybook-static/assets/{OptionButton-D2ZcZtPU.js → OptionButton-CGurT23Z.js} +1 -1
- package/storybook-static/assets/{PeriodSelect-BsET8TST.js → PeriodSelect-DOO139ke.js} +1 -1
- package/storybook-static/assets/{PeriodSelect-Bm_VPE_5.js → PeriodSelect-TrGTMIid.js} +1 -1
- package/storybook-static/assets/{PeriodSelect.stories-Due2DawD.js → PeriodSelect.stories-B3GEgBZ1.js} +1 -1
- package/storybook-static/assets/{PickerTriggerActions-KgIZBVSt.js → PickerTriggerActions-CKVPuKEC.js} +1 -1
- package/storybook-static/assets/{Popover-Cq1q1mW3.js → Popover-BNItmUQ9.js} +1 -1
- package/storybook-static/assets/{Popover-D38IExq9.js → Popover-DgXqO0PN.js} +1 -1
- package/storybook-static/assets/{Popover.stories-B5MXPFi2.js → Popover.stories-bX5S41pH.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput-dWe-Zcrb.js → PresetRangeDateInput-B4FYPy8g.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput-C4iOgcKK.js → PresetRangeDateInput-GSnnpZzy.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput.stories-C8JiJCpi.js → PresetRangeDateInput.stories-Ca0mIo33.js} +1 -1
- package/storybook-static/assets/{PresetSelect-CIqamiLP.js → PresetSelect-B_KRl4SQ.js} +1 -1
- package/storybook-static/assets/README-1RIcD7RV.js +694 -0
- package/storybook-static/assets/README-B1XUsXZj.js +334 -0
- package/storybook-static/assets/README-BH78sIZ_.js +288 -0
- package/storybook-static/assets/README-BgeYwR6t.js +347 -0
- package/storybook-static/assets/README-BhsUMTSk.js +860 -0
- package/storybook-static/assets/README-Bj88Ecb7.js +876 -0
- package/storybook-static/assets/README-C9saKIyr.js +417 -0
- package/storybook-static/assets/README-CP1S4LYF.js +1309 -0
- package/storybook-static/assets/README-Cc-guFb0.js +1487 -0
- package/storybook-static/assets/README-CheO0E1A.js +282 -0
- package/storybook-static/assets/README-CiuVVUgE.js +420 -0
- package/storybook-static/assets/README-CvRg9lqh.js +273 -0
- package/storybook-static/assets/README-DCdV2RQL.js +1093 -0
- package/storybook-static/assets/README-DyNQqotW.js +338 -0
- package/storybook-static/assets/README-W1rhe8Sk.js +648 -0
- package/storybook-static/assets/{RadioButton-CTA-WBmG.js → RadioButton-CA9DN5bY.js} +1 -1
- package/storybook-static/assets/{RadioButton-DfRRX6Id.js → RadioButton-DcXbcFW1.js} +1 -1
- package/storybook-static/assets/{RadioButton.stories-D6MO9y2H.js → RadioButton.stories-1_kzxnXY.js} +1 -1
- package/storybook-static/assets/{RadioGroup-CiEUg_Oc.js → RadioGroup-bEwTHCyS.js} +1 -1
- package/storybook-static/assets/{RadioGroup-BAoD6ZDR.js → RadioGroup-mfYgdfXM.js} +1 -1
- package/storybook-static/assets/{RadioGroup.stories-CCjYE-3G.js → RadioGroup.stories-CecdqPms.js} +1 -1
- package/storybook-static/assets/{Scrollable-ns4PHUAk.js → Scrollable-1fdTDJHK.js} +1 -1
- package/storybook-static/assets/{Select-Bj9NxEJa.js → Select-CvQZGS1G.js} +1 -1
- package/storybook-static/assets/{Select-D2aDjIb_.js → Select-Df5Md2Cm.js} +1 -1
- package/storybook-static/assets/{Select.stories-zErlbrrD.js → Select.stories-M4M80KTq.js} +1 -1
- package/storybook-static/assets/{SerializableSelect-P7iNwTbc.js → SerializableSelect-CnsGo9Ep.js} +1 -1
- package/storybook-static/assets/{SerializableSelect.stories-DUAK_mo8.js → SerializableSelect.stories-BJ6MlNDx.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput-vvyw15zU.js → SingleDateTimeInput-BCV0gfB9.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput-CkMMccYd.js → SingleDateTimeInput-DJH7zSIz.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput.stories-CSW9M9hH.js → SingleDateTimeInput.stories-DgEwAFe8.js} +1 -1
- package/storybook-static/assets/{Slider-Dftgrmfi.js → Slider-D504FPH3.js} +1 -1
- package/storybook-static/assets/{Slider-CkUdrb57.js → Slider-cLRAHPLi.js} +1 -1
- package/storybook-static/assets/{Slider.stories-zVUgi1Wb.js → Slider.stories-EI314Iff.js} +1 -1
- package/storybook-static/assets/{SliderInput-BINdZsru.js → SliderInput-Bt0H8rgN.js} +1 -1
- package/storybook-static/assets/{SliderInput-DnVNzY_q.js → SliderInput-E5p3n3VY.js} +1 -1
- package/storybook-static/assets/{SliderInput.stories-CfY1B4PZ.js → SliderInput.stories-CDYPq7fP.js} +1 -1
- package/storybook-static/assets/{Sortable-BnixGZFs.js → Sortable-Bzd7JK4E.js} +1 -1
- package/storybook-static/assets/{Sortable.stories-DFzv9lnf.js → Sortable.stories-DNGbmn2a.js} +1 -1
- package/storybook-static/assets/{Splitter-BtDFBrQ3.js → Splitter-DSf48AOW.js} +1 -1
- package/storybook-static/assets/{Splitter.stories-CipjzPJH.js → Splitter.stories-DUKsOqNN.js} +1 -1
- package/storybook-static/assets/{StateSelect-DagWIbnr.js → StateSelect-BxuKIsLa.js} +1 -1
- package/storybook-static/assets/{StateSelect-J5sxWYjq.js → StateSelect-HKOT6kq9.js} +1 -1
- package/storybook-static/assets/{StateSelect.stories-DDIqhm2K.js → StateSelect.stories-CbLvq7ou.js} +1 -1
- package/storybook-static/assets/{StringToggle.stories-CkYGiOe-.js → StringToggle.stories-DOKL-aWy.js} +1 -1
- package/storybook-static/assets/{Switch-B5TS1mrR.js → Switch-CLAfhk73.js} +1 -1
- package/storybook-static/assets/{Switch-N-Lxev-q.js → Switch-CVTjSEq1.js} +1 -1
- package/storybook-static/assets/{Switch.stories-HNOx5mPv.js → Switch.stories-CL5Xe_HQ.js} +1 -1
- package/storybook-static/assets/{Table-DTzmRzDD.js → Table-DKc19RME.js} +1 -1
- package/storybook-static/assets/Table.stories-CJ9DR1S-.js +207 -0
- package/storybook-static/assets/{Tabs-Bc5dgtoT.js → Tabs-De_4F0H3.js} +1 -1
- package/storybook-static/assets/{Tabs.stories-BgLnKKFv.js → Tabs.stories-DPAvvkh9.js} +2 -2
- package/storybook-static/assets/{TabsBox-sTVLs8k0.js → TabsBox-Cy5CICcb.js} +1 -1
- package/storybook-static/assets/{TagInput-yPLHo0PJ.js → TagInput-7n98ftvD.js} +1 -1
- package/storybook-static/assets/{TagInput.stories-B4C-230C.js → TagInput.stories-B6JAb3XA.js} +1 -1
- package/storybook-static/assets/{Text-C2-mep6V.js → Text-CjSG8mvD.js} +1 -1
- package/storybook-static/assets/{Textarea-bqvYs13v.js → Textarea-CQqwaJ0Q.js} +1 -1
- package/storybook-static/assets/{Textarea-B7pXYTGv.js → Textarea-Dea29_yQ.js} +1 -1
- package/storybook-static/assets/{Textarea.stories-BSSaqnZI.js → Textarea.stories-BZf3Cu4S.js} +1 -1
- package/storybook-static/assets/{TimePanel-pMBlR0ZN.js → TimePanel-CPZ4jOw2.js} +1 -1
- package/storybook-static/assets/{TimePanel.stories-Cn5IEcsV.js → TimePanel.stories-y5Lp9sMG.js} +1 -1
- package/storybook-static/assets/{Toggle-E4xV63pY.js → Toggle-CJHzo9mB.js} +1 -1
- package/storybook-static/assets/{Toggle-h6ESIcwX.js → Toggle-s7SzQ11W.js} +1 -1
- package/storybook-static/assets/{Toggle.stories-9uqFBAAr.js → Toggle.stories-Dk3C5Le5.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect-DBGlliij.js → TreeMultiSelect-CxXF7pQE.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect-J8Tlnv3Y.js → TreeMultiSelect-DfeggvLr.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect.stories-CYDuvIk7.js → TreeMultiSelect.stories-DKiHT_6L.js} +1 -1
- package/storybook-static/assets/{TreePickerBase-BswrqgW3.js → TreePickerBase-DKJJDVC_.js} +1 -1
- package/storybook-static/assets/{TreeSelect-B1Buti64.js → TreeSelect-2E1KhJMi.js} +1 -1
- package/storybook-static/assets/{TreeSelect-Jchj-RXf.js → TreeSelect-h23orAoA.js} +1 -1
- package/storybook-static/assets/{TreeSelect.stories-DzCqueCG.js → TreeSelect.stories-DO06yaS0.js} +1 -1
- package/storybook-static/assets/{TreeTable-oYCdUTsS.js → TreeTable-ByV2_E0S.js} +1 -1
- package/storybook-static/assets/{TreeTable.stories-L4FHah8x.js → TreeTable.stories-D4gbQx59.js} +2 -2
- package/storybook-static/assets/{WithTooltip-7X4HQR7L-Cakt_JaX.js → WithTooltip-7X4HQR7L-DQ4Qthn2.js} +1 -1
- package/storybook-static/assets/{array-D-_yMMUK-CIRmlF93.js → array-D-_yMMUK-BQ0uu1hZ.js} +1 -1
- package/storybook-static/assets/{async-Bsdhj8g_.js → async-BI7SlYp0.js} +1 -1
- package/storybook-static/assets/axe-_9eNhXQJ.js +20 -0
- package/storybook-static/assets/{blocks-BA_1CXsr.js → blocks-B8F5vBhs.js} +6 -6
- package/storybook-static/assets/check-mlY_aVEI.js +1 -0
- package/storybook-static/assets/chevron-down-C7c-TcEc.js +1 -0
- package/storybook-static/assets/chevron-left-2LrGBhDY.js +1 -0
- package/storybook-static/assets/chevron-right-D6NN1_UQ.js +1 -0
- package/storybook-static/assets/{chunk-242VQQM5-BMWWiybC.js → chunk-242VQQM5-bHL6qIJq.js} +1 -1
- package/storybook-static/assets/{chunk-DRQKCCAG-CqE-Zrl9.js → chunk-DRQKCCAG-DvsmU7ha.js} +1 -1
- package/storybook-static/assets/{chunk-IMSF75WX-yvVUwIQZ.js → chunk-IMSF75WX-CGYlPTyG.js} +1 -1
- package/storybook-static/assets/{chunk-KJHJLCBK-D-yQfkOi.js → chunk-KJHJLCBK-yRlRMfNs.js} +1 -1
- package/storybook-static/assets/{chunk-QQBDHPVZ-B98qboss.js → chunk-QQBDHPVZ-DC5n6Pix.js} +1 -1
- package/storybook-static/assets/{chunk-W22LQPXL-B40Li12y.js → chunk-W22LQPXL-5sD3hVeE.js} +1 -1
- package/storybook-static/assets/{circle-alert-C855gqBz.js → circle-alert-H_7GSXFp.js} +1 -1
- package/storybook-static/assets/circle-check-B0voRIBT.js +1 -0
- package/storybook-static/assets/{components-DSUjzUVy.js → components-Bw-2TeQP.js} +12 -12
- package/storybook-static/assets/{contextMenu-DCSPTQNQ.js → contextMenu-B8JusItT.js} +1 -1
- package/storybook-static/assets/{createControlledStoryRender-DHsyXc1B.js → createControlledStoryRender-BouhvX-R.js} +1 -1
- package/storybook-static/assets/{date-segments-D3HouZ37.js → date-segments-DeoMkKv9.js} +1 -1
- package/storybook-static/assets/{defaultRenderers-V5HI39JH.js → defaultRenderers-BHXboKuy.js} +1 -1
- package/storybook-static/assets/{dom-B3G_GtJw.js → dom-DBd_DWF8.js} +1 -1
- package/storybook-static/assets/{download-B3oJ9vHV.js → download-CSY7aIz0.js} +1 -1
- package/storybook-static/assets/{error-BZrNlEUO.js → error-De9R4E_F.js} +1 -1
- package/storybook-static/assets/{file-vPGnhPr-.js → file-CwRoWxeB.js} +1 -1
- package/storybook-static/assets/floating-ui.react-D7RwPYeO.js +1 -0
- package/storybook-static/assets/formatter-L2YTDE3Q-CRGuSxAF.js +1 -0
- package/storybook-static/assets/{formatters-CBgrBeSA-DY6OIAc8.js → formatters-CBgrBeSA-CqB1pZxS.js} +1 -1
- package/storybook-static/assets/{foundationLib-BFrQ5jez.js → foundationLib-BoYGVeXe.js} +1 -1
- package/storybook-static/assets/{hooks-_jPrECht.js → hooks-DQXvhAPr.js} +2 -2
- package/storybook-static/assets/iframe-B8PAuhnL.js +1 -0
- package/storybook-static/assets/{iframe-Cq8y-8O_.js → iframe-CViB2sFm.js} +23 -23
- package/storybook-static/assets/{info-CiT6g2aP.js → info-MrQcS8jn.js} +1 -1
- package/storybook-static/assets/{matchers-JIUQ3HVY-DvR2XErZ.js → matchers-JIUQ3HVY-C789_MAK.js} +1 -1
- package/storybook-static/assets/{media-BycWpjAl.js → media-D9cE2tzi.js} +1 -1
- package/storybook-static/assets/odata-CBGaUmRT.js +1 -0
- package/storybook-static/assets/{odata-service-B6TxBSLm-BW9QLSrS.js → odata-service-B6TxBSLm-Bq8Ya67E.js} +1 -1
- package/storybook-static/assets/{odataFetchFn-C6ps_31t.js → odataFetchFn-CPO8XIYX.js} +1 -1
- package/storybook-static/assets/{odataStoryFixtures-BcNo-Wxr.js → odataStoryFixtures--SWu2yC_.js} +2 -2
- package/storybook-static/assets/{persisted-B6h1b3UG.js → persisted-B2dfNRCz.js} +1 -1
- package/storybook-static/assets/{preload-helper-BHmFeTtP.js → preload-helper-wdlQj8DP.js} +1 -1
- package/storybook-static/assets/react-18-D4o7zN8K.js +9 -0
- package/storybook-static/assets/{react-C21x__mS.js → react-BZJXY1be.js} +1 -1
- package/storybook-static/assets/{react-qN2cStNd.js → react-Bl2r1tuC.js} +1 -1
- package/storybook-static/assets/{react-CvkUhHUq.js → react-GkniIHEK.js} +1 -1
- package/storybook-static/assets/{react-dom-2o2phaJG.js → react-dom-BzEl8usk.js} +1 -1
- package/storybook-static/assets/react-iQQwtFPL.js +9 -0
- package/storybook-static/assets/{refresh-cw-DIeuulxV.js → refresh-cw-_wTFfhR2.js} +1 -1
- package/storybook-static/assets/{rolldown-runtime-C0FnF6B9.js → rolldown-runtime-DkW27tQK.js} +1 -1
- package/storybook-static/assets/{settings-2-Gfu_uw21.js → settings-2-BqduNJjJ.js} +1 -1
- package/storybook-static/assets/{shim-BUMlC1GG.js → shim-DlYORV19.js} +1 -1
- package/storybook-static/assets/{sortable-DxRr6Rgq.js → sortable-D-m6SEp7.js} +1 -1
- package/storybook-static/assets/syntaxhighlighter-QEQV7K2Y-CEo9I1qZ.js +6 -0
- package/storybook-static/assets/{theming-mTWhffkp.js → theming-Cvtrnj7n.js} +1 -1
- package/storybook-static/assets/{trash-2-CqKAB1Q0.js → trash-2-65ZF92zp.js} +1 -1
- package/storybook-static/assets/{treeStoryFixtures-Ci7STpiz.js → treeStoryFixtures-DXHh9GL3.js} +1 -1
- package/storybook-static/assets/{triangle-alert-D4omsgZJ.js → triangle-alert-k_CRNi0k.js} +1 -1
- package/storybook-static/assets/{ui.module-D4CuGr8r.js → ui.module-Cat84Nza.js} +1 -1
- package/storybook-static/assets/{uiClasses-CVGbL980.js → uiClasses-B9c6dZuu.js} +1 -1
- package/storybook-static/assets/{useFlexClasses-Gn9spXEB.js → useFlexClasses-SgVG37Bb.js} +1 -1
- package/storybook-static/assets/{useODataSelectBase-DacE6X5d.js → useODataSelectBase-Ck_hduYv.js} +1 -1
- package/storybook-static/assets/{useODataTreeData-BEYyje5V.js → useODataTreeData-DTrxPY_k.js} +1 -1
- package/storybook-static/assets/usePickerDefaultFilter-5Q1pAV4d.js +1 -0
- package/storybook-static/assets/{usePickerQuery-BRsuRnoH.js → usePickerQuery-DdeWtJWc.js} +1 -1
- package/storybook-static/assets/{usePickerTriggerController-DyFq40t1.js → usePickerTriggerController-D8hxWmGo.js} +2 -2
- package/storybook-static/assets/{utils-DUM89eIj.js → utils-tg3ibbzi.js} +1 -1
- package/storybook-static/assets/x-C5XG0bD4.js +1 -0
- package/storybook-static/iframe.html +7 -7
- package/storybook-static/index.json +1 -1
- package/storybook-static/project.json +1 -1
- package/storybook-static/sb-addons/chromatic-com-storybook-1/manager-bundle.js +35 -33
- package/storybook-static/sb-manager/globals-runtime.js +7 -7
- package/storybook-static/sb-manager/globals.js +1 -1
- package/storybook-static/sb-manager/runtime.js +88 -89
- package/storybook-static/vite-inject-mocker-entry.js +2 -2
- package/dist/chunks/picker-0I1yMKIY.js.map +0 -1
- package/storybook-static/assets/FormattedTableCell-BdA15EY1.js +0 -15
- package/storybook-static/assets/Table.stories-DY5NfoVd.js +0 -207
- package/storybook-static/assets/axe-Bq-2xuso.js +0 -20
- package/storybook-static/assets/browserAndReact-fXgh8QfO.js +0 -70
- package/storybook-static/assets/check-wNoLJyvD.js +0 -1
- package/storybook-static/assets/chevron-down-DjM4Yyml.js +0 -1
- package/storybook-static/assets/chevron-left-BT138_KT.js +0 -1
- package/storybook-static/assets/chevron-right-DEvxOiq2.js +0 -1
- package/storybook-static/assets/circle-check-BDVZ6tz8.js +0 -1
- package/storybook-static/assets/filesAndExcel-Bj4tkdkM.js +0 -92
- package/storybook-static/assets/floating-ui.react-BewtdZNK.js +0 -1
- package/storybook-static/assets/formatter-L2YTDE3Q-x0raBH34.js +0 -1
- package/storybook-static/assets/formatters-DYZ7voq3.js +0 -202
- package/storybook-static/assets/formatters-runtime-Ddmbt5yI.js +0 -329
- package/storybook-static/assets/iframe-C7ggO0sY.js +0 -1
- package/storybook-static/assets/odata-ClP2t_-O.js +0 -1
- package/storybook-static/assets/odataAndTables-Cjwl3uWE.js +0 -77
- package/storybook-static/assets/pureUtilities-CO1AJvbl.js +0 -30
- package/storybook-static/assets/react-18-CgkwBzTo.js +0 -9
- package/storybook-static/assets/react-D4nkG-T7.js +0 -9
- package/storybook-static/assets/runtimeAndState-TcnlLgJx.js +0 -93
- package/storybook-static/assets/syntaxhighlighter-T5IQBZDB-BIwIp4cU.js +0 -6
- package/storybook-static/assets/usePickerDefaultFilter-Be420WNF.js +0 -1
- package/storybook-static/assets/x-zmaXH4MN.js +0 -1
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-CViB2sFm.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-B8F5vBhs.js";function o(e){let t={a:`a`,code:`code`,h1:`h1`,h2:`h2`,h3:`h3`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,table:`table`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,...n(),...e.components};return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(i,{title:`Foundation Lib/API/Formatters/Row-Based`}),`
|
|
2
|
+
`,(0,c.jsx)(t.h1,{id:`row-based-форматтеры`,children:`Row-based форматтеры`}),`
|
|
3
|
+
`,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`rowBased`}),` — небольшой runtime-слой для формул, которые вычисляют отображаемое значение одной ячейки на основании других полей той же строки.`]}),`
|
|
4
|
+
`,(0,c.jsxs)(t.p,{children:[`Он используется шагом `,(0,c.jsx)(t.code,{children:`rowBasedOverride`}),` в `,(0,c.jsx)(t.a,{href:`../pipeline/README.mdx`,children:`formatter pipeline`}),`. Сам модуль не содержит бизнес-формул: host-приложение создаёт их, собирает в реестр и один раз передаёт реестр библиотеке.`]}),`
|
|
5
|
+
`,(0,c.jsx)(t.p,{children:`Все публичные значения импортируются из общего entrypoint:`}),`
|
|
6
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import {
|
|
7
|
+
configureRowBasedFormatterRegistry,
|
|
8
|
+
createRowBasedFormatterContext,
|
|
9
|
+
createRowBasedFormatterRegistry,
|
|
10
|
+
getRowBasedFormatterById,
|
|
11
|
+
getRowBasedFormatterList,
|
|
12
|
+
type RowBasedFormatterContext,
|
|
13
|
+
type RowBasedFormatterDefinition,
|
|
14
|
+
type RowBasedFormatterFn,
|
|
15
|
+
type RowBasedFormatterRegistry
|
|
16
|
+
} from "@ryuzaki13/react-foundation-lib/formatters";
|
|
17
|
+
`})}),`
|
|
18
|
+
`,(0,c.jsxs)(t.p,{children:[`Отдельного импорта `,(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/formatters/rowBased`}),` нет.`]}),`
|
|
19
|
+
`,(0,c.jsx)(t.h2,{id:`что-решает-модуль`,children:`Что решает модуль`}),`
|
|
20
|
+
`,(0,c.jsx)(t.p,{children:`Допустим, сервер вернул строку:`}),`
|
|
21
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`const rowData = {
|
|
22
|
+
plannedHours: "160",
|
|
23
|
+
actualHours: "144"
|
|
24
|
+
};
|
|
25
|
+
`})}),`
|
|
26
|
+
`,(0,c.jsx)(t.p,{children:`Таблица должна показать процент выполнения. Формула может прочитать зависимости по индексам и вычислить значение:`}),`
|
|
27
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`const completionPercent: RowBasedFormatterDefinition = {
|
|
28
|
+
id: "completion-percent",
|
|
29
|
+
name: "Процент выполнения",
|
|
30
|
+
description: "Вычисляет actual / planned * 100",
|
|
31
|
+
fn: (ctx) => {
|
|
32
|
+
const planned = ctx.num(0);
|
|
33
|
+
const actual = ctx.num(1);
|
|
34
|
+
|
|
35
|
+
return planned === 0 ? undefined : (actual / planned) * 100;
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
`})}),`
|
|
39
|
+
`,(0,c.jsxs)(t.p,{children:[`Индексы `,(0,c.jsx)(t.code,{children:`0`}),` и `,(0,c.jsx)(t.code,{children:`1`}),` связываются с конкретными полями в конфигурации pipeline:`]}),`
|
|
40
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`const dependencyIds = ["plannedHours", "actualHours"];
|
|
41
|
+
`})}),`
|
|
42
|
+
`,(0,c.jsx)(t.p,{children:`Таким образом, одна и та же функция не привязана к конкретному имени поля. Порядок зависимостей является частью контракта формулы.`}),`
|
|
43
|
+
`,(0,c.jsx)(t.h2,{id:`жизненный-цикл`,children:`Жизненный цикл`}),`
|
|
44
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-text`,children:`Host объявляет definitions
|
|
45
|
+
↓
|
|
46
|
+
createRowBasedFormatterRegistry(definitions)
|
|
47
|
+
↓
|
|
48
|
+
configureRowBasedFormatterRegistry(registry)
|
|
49
|
+
↓
|
|
50
|
+
валидация и компиляция formatter pipeline
|
|
51
|
+
↓
|
|
52
|
+
формула выполняется для конкретных строк
|
|
53
|
+
`})}),`
|
|
54
|
+
`,(0,c.jsx)(t.p,{children:`Конфигурируйте реестр на старте приложения, до первой валидации или компиляции pipeline. Уже скомпилированный executor хранит найденную функцию; замена глобального реестра не переписывает существующие executors.`}),`
|
|
55
|
+
`,(0,c.jsx)(t.h2,{id:`минимальная-настройка`,children:`Минимальная настройка`}),`
|
|
56
|
+
`,(0,c.jsx)(t.h3,{id:`1-объявите-формулы`,children:`1. Объявите формулы`}),`
|
|
57
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import type { RowBasedFormatterDefinition } from "@ryuzaki13/react-foundation-lib/formatters";
|
|
58
|
+
|
|
59
|
+
const definitions: RowBasedFormatterDefinition[] = [
|
|
60
|
+
{
|
|
61
|
+
id: "sum-two-fields",
|
|
62
|
+
name: "Сумма двух полей",
|
|
63
|
+
description: "Складывает две выбранные числовые зависимости",
|
|
64
|
+
fn: (ctx) => ctx.num(0) + ctx.num(1)
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
id: "first-non-empty",
|
|
68
|
+
name: "Первое заполненное значение",
|
|
69
|
+
description: "Использует первую зависимость, затем вторую, затем raw value",
|
|
70
|
+
fn: (ctx) => ctx.value(0) ?? ctx.value(1) ?? ctx.rawValue
|
|
71
|
+
}
|
|
72
|
+
];
|
|
73
|
+
`})}),`
|
|
74
|
+
`,(0,c.jsx)(t.h3,{id:`2-создайте-и-установите-реестр`,children:`2. Создайте и установите реестр`}),`
|
|
75
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import { configureRowBasedFormatterRegistry, createRowBasedFormatterRegistry } from "@ryuzaki13/react-foundation-lib/formatters";
|
|
76
|
+
|
|
77
|
+
const registry = createRowBasedFormatterRegistry(definitions);
|
|
78
|
+
|
|
79
|
+
configureRowBasedFormatterRegistry(registry);
|
|
80
|
+
`})}),`
|
|
81
|
+
`,(0,c.jsx)(t.p,{children:`Обычно это выполняется один раз в bootstrap-коде приложения.`}),`
|
|
82
|
+
`,(0,c.jsx)(t.h3,{id:`3-сошлитесь-на-формулу-из-pipeline`,children:`3. Сошлитесь на формулу из pipeline`}),`
|
|
83
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import type { FormattersPipelineConfig } from "@ryuzaki13/react-foundation-lib/formatters";
|
|
84
|
+
|
|
85
|
+
const formattersPipeline: FormattersPipelineConfig = {
|
|
86
|
+
version: 1,
|
|
87
|
+
plan: {
|
|
88
|
+
steps: [
|
|
89
|
+
{
|
|
90
|
+
id: "override-1",
|
|
91
|
+
type: "rowBasedOverride",
|
|
92
|
+
config: {
|
|
93
|
+
mode: "formula",
|
|
94
|
+
formulaId: "sum-two-fields",
|
|
95
|
+
dependencyIds: ["planned", "actual"],
|
|
96
|
+
fallbackToRaw: true
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
]
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
`})}),`
|
|
103
|
+
`,(0,c.jsx)(t.h2,{id:`контекст-формулы`,children:`Контекст формулы`}),`
|
|
104
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`type RowBasedFormatterContext = {
|
|
105
|
+
rowData: Record<string, unknown>;
|
|
106
|
+
rawValue: unknown;
|
|
107
|
+
columnId: string;
|
|
108
|
+
key: (index: number) => string | undefined;
|
|
109
|
+
value: (index: number) => unknown;
|
|
110
|
+
num: (index: number) => number;
|
|
111
|
+
};
|
|
112
|
+
`})}),`
|
|
113
|
+
`,(0,c.jsx)(t.h3,{id:`ctxkeyindex`,children:(0,c.jsx)(t.code,{children:`ctx.key(index)`})}),`
|
|
114
|
+
`,(0,c.jsx)(t.p,{children:`Возвращает имя зависимости по индексу:`}),`
|
|
115
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`// dependencyIds = ["planned", "actual"]
|
|
116
|
+
ctx.key(0); // "planned"
|
|
117
|
+
ctx.key(1); // "actual"
|
|
118
|
+
ctx.key(2); // undefined
|
|
119
|
+
`})}),`
|
|
120
|
+
`,(0,c.jsxs)(t.p,{children:[`Индекс должен быть целым неотрицательным числом. `,(0,c.jsx)(t.code,{children:`-1`}),`, `,(0,c.jsx)(t.code,{children:`1.5`}),`, `,(0,c.jsx)(t.code,{children:`NaN`}),` и индекс за границами массива возвращают `,(0,c.jsx)(t.code,{children:`undefined`}),`.`]}),`
|
|
121
|
+
`,(0,c.jsx)(t.h3,{id:`ctxvalueindex`,children:(0,c.jsx)(t.code,{children:`ctx.value(index)`})}),`
|
|
122
|
+
`,(0,c.jsxs)(t.p,{children:[`Находит ключ через `,(0,c.jsx)(t.code,{children:`ctx.key(index)`}),` и возвращает `,(0,c.jsx)(t.code,{children:`rowData[key]`}),` без преобразования:`]}),`
|
|
123
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`// rowData.actual === "144"
|
|
124
|
+
ctx.value(1); // "144"
|
|
125
|
+
`})}),`
|
|
126
|
+
`,(0,c.jsxs)(t.p,{children:[`Если ключ отсутствует, пуст или выходит за границы, возвращается `,(0,c.jsx)(t.code,{children:`undefined`}),`.`]}),`
|
|
127
|
+
`,(0,c.jsx)(t.h3,{id:`ctxnumindex`,children:(0,c.jsx)(t.code,{children:`ctx.num(index)`})}),`
|
|
128
|
+
`,(0,c.jsxs)(t.p,{children:[`Читает зависимость и преобразует её функцией `,(0,c.jsx)(t.code,{children:`parseNumber`}),`:`]}),`
|
|
129
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`ctx.num(0); // 160
|
|
130
|
+
ctx.num(1); // 144
|
|
131
|
+
ctx.num(99); // 0
|
|
132
|
+
`})}),`
|
|
133
|
+
`,(0,c.jsxs)(t.p,{children:[`Невалидное, пустое или отсутствующее значение превращается в `,(0,c.jsx)(t.code,{children:`0`}),`. Это удобно для сумм, но опасно, если `,(0,c.jsx)(t.code,{children:`0`}),` и «данных нет» имеют разный бизнес-смысл. В таком случае сначала используйте `,(0,c.jsx)(t.code,{children:`ctx.value(index)`}),` и самостоятельно проверьте значение.`]}),`
|
|
134
|
+
`,(0,c.jsx)(t.h3,{id:`ctxrawvalue`,children:(0,c.jsx)(t.code,{children:`ctx.rawValue`})}),`
|
|
135
|
+
`,(0,c.jsx)(t.p,{children:`Исходное значение текущей ячейки до row-based подмены. Оно полезно как fallback:`}),`
|
|
136
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`fn: (ctx) => ctx.value(0) ?? ctx.rawValue;
|
|
137
|
+
`})}),`
|
|
138
|
+
`,(0,c.jsx)(t.h3,{id:`ctxrowdata`,children:(0,c.jsx)(t.code,{children:`ctx.rowData`})}),`
|
|
139
|
+
`,(0,c.jsxs)(t.p,{children:[`Вся строка как `,(0,c.jsx)(t.code,{children:`Record<string, unknown>`}),`. Предпочитайте индексные методы `,(0,c.jsx)(t.code,{children:`value`}),` и `,(0,c.jsx)(t.code,{children:`num`}),`, когда поле объявлено зависимостью pipeline: тогда dependency collector сможет добавить его в запрос, а validator — проверить формулу.`]}),`
|
|
140
|
+
`,(0,c.jsxs)(t.p,{children:[`Прямой доступ к `,(0,c.jsx)(t.code,{children:`rowData.someField`}),` не отслеживается автоматически.`]}),`
|
|
141
|
+
`,(0,c.jsx)(t.h3,{id:`ctxcolumnid`,children:(0,c.jsx)(t.code,{children:`ctx.columnId`})}),`
|
|
142
|
+
`,(0,c.jsxs)(t.p,{children:[`Идентификатор форматируемой колонки. Позволяет общей формуле учитывать текущую колонку, но частые ветвления по `,(0,c.jsx)(t.code,{children:`columnId`}),` могут быть признаком того, что лучше создать несколько небольших формул.`]}),`
|
|
143
|
+
`,(0,c.jsx)(t.h2,{id:`createrowbasedformattercontextargs`,children:(0,c.jsx)(t.code,{children:`createRowBasedFormatterContext(args)`})}),`
|
|
144
|
+
`,(0,c.jsx)(t.p,{children:`Создаёт контекст вручную. В обычном runtime это делает pipeline, но функция полезна для тестов или другого адаптера.`}),`
|
|
145
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`const context = createRowBasedFormatterContext({
|
|
146
|
+
rowData: { price: "12,5", count: "4" },
|
|
147
|
+
rawValue: undefined,
|
|
148
|
+
columnId: "total",
|
|
149
|
+
keys: ["price", "count"]
|
|
150
|
+
});
|
|
151
|
+
|
|
152
|
+
context.value(0); // "12,5"
|
|
153
|
+
context.num(0); // 12.5
|
|
154
|
+
context.num(1); // 4
|
|
155
|
+
`})}),`
|
|
156
|
+
`,(0,c.jsxs)(t.p,{children:[`Массив `,(0,c.jsx)(t.code,{children:`keys`}),` копируется при создании контекста. Последующее изменение исходного массива не меняет сопоставление индексов внутри уже созданного контекста.`]}),`
|
|
157
|
+
`,(0,c.jsx)(t.h3,{id:`инструментирование`,children:`Инструментирование`}),`
|
|
158
|
+
`,(0,c.jsxs)(t.p,{children:[`Необязательное поле `,(0,c.jsx)(t.code,{children:`instrumentation`}),` позволяет отследить обращения к индексам:`]}),`
|
|
159
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`const readIndexes: number[] = [];
|
|
160
|
+
const invalidIndexes: number[] = [];
|
|
161
|
+
|
|
162
|
+
const context = createRowBasedFormatterContext({
|
|
163
|
+
rowData: { amount: 10 },
|
|
164
|
+
rawValue: 10,
|
|
165
|
+
columnId: "amount",
|
|
166
|
+
keys: ["amount"],
|
|
167
|
+
instrumentation: {
|
|
168
|
+
onReadIndex: (index) => readIndexes.push(index),
|
|
169
|
+
onOutOfRangeIndex: (index) => invalidIndexes.push(index)
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
|
|
173
|
+
context.num(0);
|
|
174
|
+
context.num(2);
|
|
175
|
+
`})}),`
|
|
176
|
+
`,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`onReadIndex`}),` вызывается только для целого неотрицательного индекса, в том числе если он уже вышел за длину `,(0,c.jsx)(t.code,{children:`keys`}),`. `,(0,c.jsx)(t.code,{children:`onOutOfRangeIndex`}),` вызывается для любого недопустимого индекса.`]}),`
|
|
177
|
+
`,(0,c.jsx)(t.p,{children:`Formatter pipeline использует этот механизм при валидации formula-режима.`}),`
|
|
178
|
+
`,(0,c.jsx)(t.h2,{id:`реестр-формул`,children:`Реестр формул`}),`
|
|
179
|
+
`,(0,c.jsx)(t.h3,{id:`createrowbasedformatterregistrydefinitions`,children:(0,c.jsx)(t.code,{children:`createRowBasedFormatterRegistry(definitions)`})}),`
|
|
180
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`function createRowBasedFormatterRegistry(definitions: readonly RowBasedFormatterDefinition[]): RowBasedFormatterRegistry;
|
|
181
|
+
`})}),`
|
|
182
|
+
`,(0,c.jsx)(t.p,{children:`Для каждого definition функция:`}),`
|
|
183
|
+
`,(0,c.jsxs)(t.ul,{children:[`
|
|
184
|
+
`,(0,c.jsxs)(t.li,{children:[`обрезает пробелы вокруг `,(0,c.jsx)(t.code,{children:`id`}),`, `,(0,c.jsx)(t.code,{children:`name`}),` и `,(0,c.jsx)(t.code,{children:`description`}),`;`]}),`
|
|
185
|
+
`,(0,c.jsxs)(t.li,{children:[`запрещает пустой `,(0,c.jsx)(t.code,{children:`id`}),`;`]}),`
|
|
186
|
+
`,(0,c.jsxs)(t.li,{children:[`запрещает повторяющийся `,(0,c.jsx)(t.code,{children:`id`}),` после обрезки;`]}),`
|
|
187
|
+
`,(0,c.jsx)(t.li,{children:`создаёт поверхностно замороженный definition;`}),`
|
|
188
|
+
`,(0,c.jsxs)(t.li,{children:[`сохраняет порядок входного массива в `,(0,c.jsx)(t.code,{children:`registry.list`}),`.`]}),`
|
|
189
|
+
`]}),`
|
|
190
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`const registry = createRowBasedFormatterRegistry([
|
|
191
|
+
{
|
|
192
|
+
id: " total ",
|
|
193
|
+
name: " Итого ",
|
|
194
|
+
description: " Сумма ",
|
|
195
|
+
fn: (ctx) => ctx.num(0) + ctx.num(1)
|
|
196
|
+
}
|
|
197
|
+
]);
|
|
198
|
+
|
|
199
|
+
registry.list[0].id; // "total"
|
|
200
|
+
registry.list[0].name; // "Итого"
|
|
201
|
+
`})}),`
|
|
202
|
+
`,(0,c.jsx)(t.p,{children:`Ошибочные определения приводят к исключению:`}),`
|
|
203
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`createRowBasedFormatterRegistry([{ id: " ", name: "", description: "", fn: () => 0 }]);
|
|
204
|
+
// Error: Formula id ... не может быть пустым
|
|
205
|
+
`})}),`
|
|
206
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`createRowBasedFormatterRegistry([
|
|
207
|
+
{ id: "sum", name: "A", description: "", fn: () => 0 },
|
|
208
|
+
{ id: " sum ", name: "B", description: "", fn: () => 0 }
|
|
209
|
+
]);
|
|
210
|
+
// Error: дублирующийся formulaId ...
|
|
211
|
+
`})}),`
|
|
212
|
+
`,(0,c.jsxs)(t.p,{children:[`Реестр и его список заморожены поверхностно. `,(0,c.jsx)(t.code,{children:`byId`}),` типизирован как `,(0,c.jsx)(t.code,{children:`ReadonlyMap`}),`; не приводите его обратно к изменяемому `,(0,c.jsx)(t.code,{children:`Map`}),` и не мутируйте внутренности вручную.`]}),`
|
|
213
|
+
`,(0,c.jsx)(t.h3,{id:`configurerowbasedformatterregistryregistry`,children:(0,c.jsx)(t.code,{children:`configureRowBasedFormatterRegistry(registry)`})}),`
|
|
214
|
+
`,(0,c.jsx)(t.p,{children:`Заменяет текущий глобальный реестр модуля:`}),`
|
|
215
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`configureRowBasedFormatterRegistry(registry);
|
|
216
|
+
`})}),`
|
|
217
|
+
`,(0,c.jsx)(t.p,{children:`Функция ничего не возвращает. Это глобальная конфигурация в пределах загруженного экземпляра модуля, поэтому:`}),`
|
|
218
|
+
`,(0,c.jsxs)(t.ul,{children:[`
|
|
219
|
+
`,(0,c.jsx)(t.li,{children:`вызывайте её централизованно;`}),`
|
|
220
|
+
`,(0,c.jsx)(t.li,{children:`завершайте конфигурацию до компиляции pipeline;`}),`
|
|
221
|
+
`,(0,c.jsx)(t.li,{children:`не переключайте реестры для отдельных компонентов во время рендера;`}),`
|
|
222
|
+
`,(0,c.jsxs)(t.li,{children:[`в тестах явно устанавливайте нужный реестр в `,(0,c.jsx)(t.code,{children:`beforeEach`}),`, если тесты влияют друг на друга.`]}),`
|
|
223
|
+
`]}),`
|
|
224
|
+
`,(0,c.jsx)(t.h3,{id:`getrowbasedformatterlist`,children:(0,c.jsx)(t.code,{children:`getRowBasedFormatterList()`})}),`
|
|
225
|
+
`,(0,c.jsx)(t.p,{children:`Возвращает список definitions в порядке регистрации. Подходит для select/listbox редактора pipeline:`}),`
|
|
226
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`const options = getRowBasedFormatterList().map((definition) => ({
|
|
227
|
+
value: definition.id,
|
|
228
|
+
label: definition.name
|
|
229
|
+
}));
|
|
230
|
+
`})}),`
|
|
231
|
+
`,(0,c.jsx)(t.p,{children:`Возвращается сам read-only список реестра, а не новая копия.`}),`
|
|
232
|
+
`,(0,c.jsx)(t.h3,{id:`getrowbasedformatterbyidformulaid`,children:(0,c.jsx)(t.code,{children:`getRowBasedFormatterById(formulaId)`})}),`
|
|
233
|
+
`,(0,c.jsxs)(t.p,{children:[`Обрезает пробелы вокруг id и возвращает definition либо `,(0,c.jsx)(t.code,{children:`undefined`}),`:`]}),`
|
|
234
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`getRowBasedFormatterById(" sum-two-fields "); // definition
|
|
235
|
+
getRowBasedFormatterById(""); // undefined
|
|
236
|
+
getRowBasedFormatterById(undefined); // undefined
|
|
237
|
+
getRowBasedFormatterById("unknown"); // undefined
|
|
238
|
+
`})}),`
|
|
239
|
+
`,(0,c.jsx)(t.h2,{id:`как-formula-режим-работает-в-pipeline`,children:`Как formula-режим работает в pipeline`}),`
|
|
240
|
+
`,(0,c.jsx)(t.p,{children:`Для шага:`}),`
|
|
241
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`{
|
|
242
|
+
id: "override",
|
|
243
|
+
type: "rowBasedOverride",
|
|
244
|
+
config: {
|
|
245
|
+
mode: "formula",
|
|
246
|
+
formulaId: "completion-percent",
|
|
247
|
+
dependencyIds: ["plannedHours", "actualHours"],
|
|
248
|
+
fallbackToRaw: true
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
`})}),`
|
|
252
|
+
`,(0,c.jsx)(t.p,{children:`runtime выполняет следующие действия:`}),`
|
|
253
|
+
`,(0,c.jsxs)(t.ol,{children:[`
|
|
254
|
+
`,(0,c.jsxs)(t.li,{children:[`находит formula definition по `,(0,c.jsx)(t.code,{children:`formulaId`}),`;`]}),`
|
|
255
|
+
`,(0,c.jsxs)(t.li,{children:[`создаёт контекст, где `,(0,c.jsx)(t.code,{children:`dependencyIds`}),` становятся индексными `,(0,c.jsx)(t.code,{children:`keys`}),`;`]}),`
|
|
256
|
+
`,(0,c.jsxs)(t.li,{children:[`передаёт текущее значение pipeline как `,(0,c.jsx)(t.code,{children:`rawValue`}),`;`]}),`
|
|
257
|
+
`,(0,c.jsxs)(t.li,{children:[`вызывает `,(0,c.jsx)(t.code,{children:`definition.fn(context)`}),`;`]}),`
|
|
258
|
+
`,(0,c.jsx)(t.li,{children:`использует результат как следующее значение pipeline.`}),`
|
|
259
|
+
`]}),`
|
|
260
|
+
`,(0,c.jsxs)(t.p,{children:[`Если функция вернула `,(0,c.jsx)(t.code,{children:`null`}),` или `,(0,c.jsx)(t.code,{children:`undefined`}),`:`]}),`
|
|
261
|
+
`,(0,c.jsxs)(t.ul,{children:[`
|
|
262
|
+
`,(0,c.jsxs)(t.li,{children:[`при `,(0,c.jsx)(t.code,{children:`fallbackToRaw: true`}),` или без этого поля сохраняется предыдущее значение;`]}),`
|
|
263
|
+
`,(0,c.jsxs)(t.li,{children:[`при `,(0,c.jsx)(t.code,{children:`fallbackToRaw: false`}),` следующим значением становится `,(0,c.jsx)(t.code,{children:`undefined`}),`.`]}),`
|
|
264
|
+
`]}),`
|
|
265
|
+
`,(0,c.jsx)(t.p,{children:`Если функция выбросила ошибку, действует та же политика fallback.`}),`
|
|
266
|
+
`,(0,c.jsxs)(t.p,{children:[`В отличие от field-режима, formula-режим выполняется и для totals-строк. Подробности описаны в `,(0,c.jsx)(t.a,{href:`../pipeline/README.mdx#%D1%88%D0%B0%D0%B3-rowbasedoverride`,children:`README pipeline`}),`.`]}),`
|
|
267
|
+
`,(0,c.jsx)(t.h2,{id:`требования-к-функциям`,children:`Требования к функциям`}),`
|
|
268
|
+
`,(0,c.jsx)(t.h3,{id:`формула-должна-быть-чистой`,children:`Формула должна быть чистой`}),`
|
|
269
|
+
`,(0,c.jsx)(t.p,{children:`Pipeline validator запускает формулу на синтетических данных как минимум два раза — с положительными и отрицательными зависимостями. Поэтому функция не должна:`}),`
|
|
270
|
+
`,(0,c.jsxs)(t.ul,{children:[`
|
|
271
|
+
`,(0,c.jsx)(t.li,{children:`отправлять запросы;`}),`
|
|
272
|
+
`,(0,c.jsx)(t.li,{children:`изменять store;`}),`
|
|
273
|
+
`,(0,c.jsx)(t.li,{children:`писать в DOM;`}),`
|
|
274
|
+
`,(0,c.jsxs)(t.li,{children:[`менять `,(0,c.jsx)(t.code,{children:`rowData`}),`;`]}),`
|
|
275
|
+
`,(0,c.jsx)(t.li,{children:`зависеть от случайности или текущего времени;`}),`
|
|
276
|
+
`,(0,c.jsx)(t.li,{children:`накапливать внешнее состояние.`}),`
|
|
277
|
+
`]}),`
|
|
278
|
+
`,(0,c.jsxs)(t.p,{children:[`Хорошая формула вычисляет и возвращает результат только из `,(0,c.jsx)(t.code,{children:`ctx`}),`:`]}),`
|
|
279
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`const safeFormula: RowBasedFormatterFn = (ctx) => {
|
|
280
|
+
const total = ctx.num(0);
|
|
281
|
+
const completed = ctx.num(1);
|
|
282
|
+
|
|
283
|
+
return total > 0 ? completed / total : undefined;
|
|
284
|
+
};
|
|
285
|
+
`})}),`
|
|
286
|
+
`,(0,c.jsx)(t.h3,{id:`формула-должна-быть-синхронной`,children:`Формула должна быть синхронной`}),`
|
|
287
|
+
`,(0,c.jsxs)(t.p,{children:[`Тип результата — `,(0,c.jsx)(t.code,{children:`unknown`}),`, но runtime не ожидает `,(0,c.jsx)(t.code,{children:`Promise`}),`. `,(0,c.jsx)(t.code,{children:`async`}),`-функция вернёт Promise как отображаемое значение и не выполнит ожидаемое вычисление.`]}),`
|
|
288
|
+
`,(0,c.jsx)(t.h3,{id:`обрабатывайте-деление-на-ноль-и-отсутствующие-данные`,children:`Обрабатывайте деление на ноль и отсутствующие данные`}),`
|
|
289
|
+
`,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`ctx.num()`}),` возвращает `,(0,c.jsx)(t.code,{children:`0`}),` для невалидных значений. Явно решите, что означает ноль в вашей формуле.`]}),`
|
|
290
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`fn: (ctx) => {
|
|
291
|
+
const denominatorRaw = ctx.value(0);
|
|
292
|
+
if (denominatorRaw == null || denominatorRaw === "") return undefined;
|
|
293
|
+
|
|
294
|
+
const denominator = ctx.num(0);
|
|
295
|
+
return denominator === 0 ? undefined : ctx.num(1) / denominator;
|
|
296
|
+
};
|
|
297
|
+
`})}),`
|
|
298
|
+
`,(0,c.jsx)(t.h2,{id:`тестирование-своей-формулы`,children:`Тестирование своей формулы`}),`
|
|
299
|
+
`,(0,c.jsx)(t.p,{children:`Формулу удобно тестировать без таблицы:`}),`
|
|
300
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import { createRowBasedFormatterContext } from "@ryuzaki13/react-foundation-lib/formatters";
|
|
301
|
+
|
|
302
|
+
const context = createRowBasedFormatterContext({
|
|
303
|
+
rowData: {
|
|
304
|
+
plannedHours: "160",
|
|
305
|
+
actualHours: "144"
|
|
306
|
+
},
|
|
307
|
+
rawValue: undefined,
|
|
308
|
+
columnId: "completion",
|
|
309
|
+
keys: ["plannedHours", "actualHours"]
|
|
310
|
+
});
|
|
311
|
+
|
|
312
|
+
const result = completionPercent.fn(context);
|
|
313
|
+
// result === 90
|
|
314
|
+
`})}),`
|
|
315
|
+
`,(0,c.jsx)(t.p,{children:`Проверяйте как минимум:`}),`
|
|
316
|
+
`,(0,c.jsxs)(t.ul,{children:[`
|
|
317
|
+
`,(0,c.jsx)(t.li,{children:`обычные значения;`}),`
|
|
318
|
+
`,(0,c.jsxs)(t.li,{children:[(0,c.jsx)(t.code,{children:`null`}),`, `,(0,c.jsx)(t.code,{children:`undefined`}),` и пустые строки;`]}),`
|
|
319
|
+
`,(0,c.jsx)(t.li,{children:`нули и отрицательные числа;`}),`
|
|
320
|
+
`,(0,c.jsx)(t.li,{children:`ошибочный или отсутствующий dependency;`}),`
|
|
321
|
+
`,(0,c.jsxs)(t.li,{children:[`порядок `,(0,c.jsx)(t.code,{children:`dependencyIds`}),`;`]}),`
|
|
322
|
+
`,(0,c.jsxs)(t.li,{children:[`fallback к `,(0,c.jsx)(t.code,{children:`rawValue`}),`.`]}),`
|
|
323
|
+
`]}),`
|
|
324
|
+
`,(0,c.jsx)(t.h2,{id:`частые-ошибки`,children:`Частые ошибки`}),`
|
|
325
|
+
`,(0,c.jsx)(t.h3,{id:`настроить-реестр-после-компиляции-pipeline`,children:`Настроить реестр после компиляции pipeline`}),`
|
|
326
|
+
`,(0,c.jsxs)(t.p,{children:[`Validator не найдёт `,(0,c.jsx)(t.code,{children:`formulaId`}),`, а executor может быть скомпилирован как невалидный. Конфигурируйте реестр на старте приложения.`]}),`
|
|
327
|
+
`,(0,c.jsx)(t.h3,{id:`поменять-порядок-зависимостей`,children:`Поменять порядок зависимостей`}),`
|
|
328
|
+
`,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`// Формула ожидает [planned, actual]
|
|
329
|
+
fn: (ctx) => ctx.num(1) / ctx.num(0);
|
|
330
|
+
|
|
331
|
+
// Но конфиг передал [actual, planned] — результат изменится.
|
|
332
|
+
dependencyIds: ["actual", "planned"];
|
|
333
|
+
`})}),`
|
|
334
|
+
`,(0,c.jsxs)(t.p,{children:[`Документируйте ожидаемый порядок в `,(0,c.jsx)(t.code,{children:`description`}),` и тестах.`]}),`
|
|
335
|
+
`,(0,c.jsxs)(t.h3,{id:`читать-undeclared-поле-через-rowdata`,children:[`Читать undeclared поле через `,(0,c.jsx)(t.code,{children:`rowData`})]}),`
|
|
336
|
+
`,(0,c.jsxs)(t.p,{children:[`Dependency collector видит `,(0,c.jsx)(t.code,{children:`dependencyIds`}),`, но не анализирует тело JavaScript-функции. Поле, прочитанное только через `,(0,c.jsx)(t.code,{children:`ctx.rowData.hiddenField`}),`, может не попасть в серверный query.`]}),`
|
|
337
|
+
`,(0,c.jsx)(t.h3,{id:`делать-формулу-с-побочным-эффектом`,children:`Делать формулу с побочным эффектом`}),`
|
|
338
|
+
`,(0,c.jsx)(t.p,{children:`Она может выполниться при валидации, а затем много раз для строк таблицы. Побочный эффект станет непредсказуемым и дорогим.`}),`
|
|
339
|
+
`,(0,c.jsx)(t.h2,{id:`api-справка`,children:`API-справка`}),`
|
|
340
|
+
`,(0,c.jsxs)(t.table,{children:[(0,c.jsx)(t.thead,{children:(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.th,{children:`API`}),(0,c.jsx)(t.th,{children:`Назначение`}),(0,c.jsx)(t.th,{children:`Результат / ошибка`})]})}),(0,c.jsxs)(t.tbody,{children:[(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`createRowBasedFormatterContext`})}),(0,c.jsx)(t.td,{children:`Создать индексный контекст строки`}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`RowBasedFormatterContext`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`createRowBasedFormatterRegistry`})}),(0,c.jsx)(t.td,{children:`Нормализовать и собрать definitions`}),(0,c.jsxs)(t.td,{children:[`реестр; `,(0,c.jsx)(t.code,{children:`Error`}),` при пустом/повторном id`]})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`configureRowBasedFormatterRegistry`})}),(0,c.jsx)(t.td,{children:`Установить глобальный реестр`}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`void`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`getRowBasedFormatterList`})}),(0,c.jsx)(t.td,{children:`Получить список для UI/диагностики`}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`readonly RowBasedFormatterDefinition[]`})})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`getRowBasedFormatterById`})}),(0,c.jsx)(t.td,{children:`Найти definition по id`}),(0,c.jsxs)(t.td,{children:[`definition или `,(0,c.jsx)(t.code,{children:`undefined`})]})]})]})]}),`
|
|
341
|
+
`,(0,c.jsxs)(t.p,{children:[`Публичные TypeScript-типы: `,(0,c.jsx)(t.code,{children:`RowBasedFormatterContext`}),`, `,(0,c.jsx)(t.code,{children:`RowBasedFormatterContextInstrumentation`}),`, `,(0,c.jsx)(t.code,{children:`RowBasedFormatterFn`}),`, `,(0,c.jsx)(t.code,{children:`RowBasedFormatterDefinition`}),`, `,(0,c.jsx)(t.code,{children:`RowBasedFormatterRegistry`}),`.`]}),`
|
|
342
|
+
`,(0,c.jsx)(t.h2,{id:`связанная-документация`,children:`Связанная документация`}),`
|
|
343
|
+
`,(0,c.jsxs)(t.ul,{children:[`
|
|
344
|
+
`,(0,c.jsx)(t.li,{children:(0,c.jsxs)(t.a,{href:`../README.mdx`,children:[`Обзор `,(0,c.jsx)(t.code,{children:`formatters`})]})}),`
|
|
345
|
+
`,(0,c.jsx)(t.li,{children:(0,c.jsx)(t.a,{href:`../pipeline/README.mdx`,children:`Formatter pipeline`})}),`
|
|
346
|
+
`,(0,c.jsx)(t.li,{children:(0,c.jsxs)(t.a,{href:`../number/README.mdx`,children:[`Числовые форматтеры и `,(0,c.jsx)(t.code,{children:`parseNumber`})]})}),`
|
|
347
|
+
`]})]})}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};
|