@ryuzaki13/react-foundation-ui 1.5.12 → 1.5.14

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.
Files changed (211) hide show
  1. package/dist/listbox/index.js +1 -1
  2. package/dist/listbox/index.js.map +1 -1
  3. package/package.json +2 -1
  4. package/storybook-static/assets/{Badge-BeE_wR-e.js → Badge-CD1woSdo.js} +1 -1
  5. package/storybook-static/assets/{Badge.stories-BMLNLp7n.js → Badge.stories-DPunJSrK.js} +1 -1
  6. package/storybook-static/assets/{BadgeList-B1SSw9no.js → BadgeList-Baj24Y_J.js} +1 -1
  7. package/storybook-static/assets/{Button-CS7C3s7J.js → Button-CGuqXzCc.js} +1 -1
  8. package/storybook-static/assets/{Button-Vi1a4Q0N.js → Button-mnXUdKCZ.js} +1 -1
  9. package/storybook-static/assets/{Button.stories-BAyszGDt.js → Button.stories-Dr67FbTg.js} +1 -1
  10. package/storybook-static/assets/{CalendarView-CroQMfFX.js → CalendarView-vw1o_xNM.js} +1 -1
  11. package/storybook-static/assets/{CheckBox-BSQDnjGm.js → CheckBox-BJL2UykG.js} +1 -1
  12. package/storybook-static/assets/{CheckBox-Cj9xdsq2.js → CheckBox-QV3ntveq.js} +1 -1
  13. package/storybook-static/assets/{CheckBox.stories-JSQfqZK5.js → CheckBox.stories-DRQcsnNN.js} +1 -1
  14. package/storybook-static/assets/{Color-6AOWCN3U-D5PnNXqh.js → Color-6AOWCN3U-Bun7MdUD.js} +1 -1
  15. package/storybook-static/assets/{ContextMenu-rzpDsRZx.js → ContextMenu-C0ZNiHZl.js} +1 -1
  16. package/storybook-static/assets/{ContextMenu-CocuusYO.js → ContextMenu-CNxPWPTI.js} +1 -1
  17. package/storybook-static/assets/{ContextMenu.stories-CO9uACMA.js → ContextMenu.stories-BkZ0l4Tb.js} +1 -1
  18. package/storybook-static/assets/{DateInput-BFUW6ZnL.js → DateInput-BdjPpQBb.js} +1 -1
  19. package/storybook-static/assets/{DateInput-Du3E2ET_.js → DateInput-mz_D_J5f.js} +1 -1
  20. package/storybook-static/assets/{DateInput.stories-DDa04kSj.js → DateInput.stories-BleJdbF3.js} +1 -1
  21. package/storybook-static/assets/{DateRangePresetSelect-CSiFT5F5.js → DateRangePresetSelect-D-8_Suqc.js} +1 -1
  22. package/storybook-static/assets/{DateRangePresetSelect-D6xM7__Q.js → DateRangePresetSelect-DXJu8742.js} +1 -1
  23. package/storybook-static/assets/{DateRangePresetSelect.stories-eF33IA75.js → DateRangePresetSelect.stories-COMQj6gH.js} +1 -1
  24. package/storybook-static/assets/{Detail-BE-E18-T.js → Detail-CJChG-7Q.js} +1 -1
  25. package/storybook-static/assets/{Detail.stories-NCvSVTmL.js → Detail.stories-CX19zPog.js} +1 -1
  26. package/storybook-static/assets/{Dialog-C4HX9Sgs.js → Dialog-FuIbCMO-.js} +1 -1
  27. package/storybook-static/assets/{Dialog-DSmGfP7k.js → Dialog-a4GV2ZQ0.js} +1 -1
  28. package/storybook-static/assets/{Dialog.stories-CVtvkV1R.js → Dialog.stories-D1JgXIdZ.js} +1 -1
  29. package/storybook-static/assets/{Disclosure-CwhrFXI8.js → Disclosure-BSazy5rN.js} +1 -1
  30. package/storybook-static/assets/{Disclosure.stories-DHOMAfuS.js → Disclosure.stories-CES0qFr3.js} +1 -1
  31. package/storybook-static/assets/{DisclosureGroup-Be79LGlr.js → DisclosureGroup-zBtzBoZj.js} +1 -1
  32. package/storybook-static/assets/{DocsRenderer-JROSPFPF-DIVlRluw.js → DocsRenderer-JROSPFPF-P9L3PVGp.js} +1 -1
  33. package/storybook-static/assets/{DropZone-BZCyapHh.js → DropZone-DDByDKii.js} +1 -1
  34. package/storybook-static/assets/{DropZone-5B0A-vFn.js → DropZone-jynwO9zp.js} +1 -1
  35. package/storybook-static/assets/{DropZone.stories-BlTy-nE5.js → DropZone.stories-ChV6kmPA.js} +1 -1
  36. package/storybook-static/assets/{DropdownMenu-CqSO4Xln.js → DropdownMenu-DEekn_iq.js} +1 -1
  37. package/storybook-static/assets/{ExpandableActionPanel-DGK_hHxg.js → ExpandableActionPanel-B9KEphZt.js} +1 -1
  38. package/storybook-static/assets/{ExpandableActionPanel.stories-IH6Gcybn.js → ExpandableActionPanel.stories-hJSbWdEi.js} +1 -1
  39. package/storybook-static/assets/{Flex-D_Ov-qrX.js → Flex-DGw71nVa.js} +1 -1
  40. package/storybook-static/assets/{Flex.stories-DyibLGoC.js → Flex.stories-CisdWxc2.js} +1 -1
  41. package/storybook-static/assets/{FloatingPopover-Dt0czWS7.js → FloatingPopover-BgSpMYSa.js} +1 -1
  42. package/storybook-static/assets/{FormattedTableCell-BkTdSSLq.js → FormattedTableCell-DqGAaLSH.js} +1 -1
  43. package/storybook-static/assets/{Grid-CwZOkx33.js → Grid-DqrdfRPP.js} +1 -1
  44. package/storybook-static/assets/{Grid.stories-Dsu31tqi.js → Grid.stories-VUK1fVo1.js} +1 -1
  45. package/storybook-static/assets/{ImageCropper.stories-BqRshYgd.js → ImageCropper.stories-C8tsdj0y.js} +1 -1
  46. package/storybook-static/assets/{ImageRenderer-DiEaiphg.js → ImageRenderer-y_yPk15t.js} +1 -1
  47. package/storybook-static/assets/{ImageRenderer.stories-DXk_A_1N.js → ImageRenderer.stories-CdfTCmEM.js} +1 -1
  48. package/storybook-static/assets/{ImageView.stories-TuZxh1Fr.js → ImageView.stories-BpJA3U7W.js} +1 -1
  49. package/storybook-static/assets/{ImageViewer.stories-CL796ExX.js → ImageViewer.stories-joUGbNuk.js} +2 -2
  50. package/storybook-static/assets/{ImageViewerRuntime-CCVrFr6t.js → ImageViewerRuntime-Bd6bwD2G.js} +1 -1
  51. package/storybook-static/assets/{Input-Dmum9ojv.js → Input-B9yXA1bX.js} +1 -1
  52. package/storybook-static/assets/{Input-CRRkPSmn.js → Input-BqHQ13Py.js} +1 -1
  53. package/storybook-static/assets/{Input.stories-C8y8Gzjn.js → Input.stories-D5_EehUE.js} +1 -1
  54. package/storybook-static/assets/{InputDateTime-DozxwdSK.js → InputDateTime-DMUf2anh.js} +1 -1
  55. package/storybook-static/assets/{InputDateTime.stories-Dm86teu7.js → InputDateTime.stories-CSCBZZSt.js} +1 -1
  56. package/storybook-static/assets/{InputFile-DPYOyrse.js → InputFile--7YNcXk1.js} +1 -1
  57. package/storybook-static/assets/{InputFile-Cm1ipP_c.js → InputFile-Bb28M0Jz.js} +1 -1
  58. package/storybook-static/assets/{InputFile.stories-A9sXRTPi.js → InputFile.stories-BcmVjUTx.js} +1 -1
  59. package/storybook-static/assets/{InputFiles-DqYEI0vF.js → InputFiles-BCk2pk9f.js} +1 -1
  60. package/storybook-static/assets/{InputFiles-D6ibnj3Y.js → InputFiles-DGD8b7Ou.js} +1 -1
  61. package/storybook-static/assets/{InputFiles.stories-CTK_G05d.js → InputFiles.stories-CEI2y9jM.js} +1 -1
  62. package/storybook-static/assets/{InputFilesList-Cw2vB_I4.js → InputFilesList-BP0hLe6p.js} +1 -1
  63. package/storybook-static/assets/{InputImage-eWMt3Rpi.js → InputImage-CNW2H1oW.js} +1 -1
  64. package/storybook-static/assets/{InputImage-YaDG8UBR.js → InputImage-DGuYPBQF.js} +1 -1
  65. package/storybook-static/assets/{InputImage.stories-Ba5v3XyF.js → InputImage.stories-BRqt3EaX.js} +1 -1
  66. package/storybook-static/assets/{InteractiveComponents-C3WdIF2c.js → InteractiveComponents-BDlt0WQb.js} +1 -1
  67. package/storybook-static/assets/{InteractiveComponents.stories-CPqOBcYI.js → InteractiveComponents.stories-CCwZe0gu.js} +1 -1
  68. package/storybook-static/assets/{LayoutPicker-mQiBJ85c.js → LayoutPicker-NTQugPXW.js} +1 -1
  69. package/storybook-static/assets/{LayoutPicker-CAIujH3t.js → LayoutPicker-mhDjtSHC.js} +1 -1
  70. package/storybook-static/assets/{LayoutPicker.stories-BAqhsvOh.js → LayoutPicker.stories-B7pmo36I.js} +1 -1
  71. package/storybook-static/assets/{Listbox-vwKVwC47.js → Listbox-CX66_FoN.js} +1 -1
  72. package/storybook-static/assets/{Listbox-BCfY4SYB.js → Listbox-CgzrQDwl.js} +1 -1
  73. package/storybook-static/assets/{Listbox.stories-CA7VrO6z.js → Listbox.stories-BuvQeQ0-.js} +1 -1
  74. package/storybook-static/assets/{Modal-DvisZoA2.js → Modal-yA7tk-MI.js} +1 -1
  75. package/storybook-static/assets/{Modal.stories-Dj66uXRY.js → Modal.stories-fUsmoWsB.js} +1 -1
  76. package/storybook-static/assets/{ModalManagerProvider-CSsTef9-.js → ModalManagerProvider-CpW75Za1.js} +1 -1
  77. package/storybook-static/assets/{MultiSelect-CpNX4wyD.js → MultiSelect-CAK64RnT.js} +1 -1
  78. package/storybook-static/assets/{MultiSelect-C4uT-lwM.js → MultiSelect-CoqGVsBf.js} +1 -1
  79. package/storybook-static/assets/{MultiSelect.stories-CjIw1FBQ.js → MultiSelect.stories-BnOcEsh0.js} +1 -1
  80. package/storybook-static/assets/{NoData-J6gIe2DW.js → NoData-BLbA-zp6.js} +1 -1
  81. package/storybook-static/assets/{NotificationsHost-B4vBCIUo.js → NotificationsHost-JM9SHcK4.js} +1 -1
  82. package/storybook-static/assets/{NotificationsHost.stories-Btx0-jS4.js → NotificationsHost.stories-Cq6KBUGr.js} +1 -1
  83. package/storybook-static/assets/{ODataMultiSelect-BRWRd-T0.js → ODataMultiSelect-C000rYJO.js} +1 -1
  84. package/storybook-static/assets/{ODataMultiSelect.stories-AcwmUSqN.js → ODataMultiSelect.stories-D1JrPXno.js} +1 -1
  85. package/storybook-static/assets/{ODataSelect-DKF1dPMT.js → ODataSelect-D_bcFAMN.js} +1 -1
  86. package/storybook-static/assets/{ODataSelect.stories-BCCDQvG1.js → ODataSelect.stories-k0nZfp60.js} +1 -1
  87. package/storybook-static/assets/{ODataTreeMultiSelect-Jmrc7xEO.js → ODataTreeMultiSelect-yatLDsY7.js} +1 -1
  88. package/storybook-static/assets/{ODataTreeMultiSelect.stories-BWX3TG9B.js → ODataTreeMultiSelect.stories-DeTaeKuH.js} +1 -1
  89. package/storybook-static/assets/{ODataTreeSelect-CGO2HVbN.js → ODataTreeSelect-DbxkcIOC.js} +1 -1
  90. package/storybook-static/assets/{ODataTreeSelect.stories-DSmhE-Li.js → ODataTreeSelect.stories-BiL0Ew_l.js} +1 -1
  91. package/storybook-static/assets/{OneStepScroller-pU0sAFEq.js → OneStepScroller-CVMtNkB8.js} +1 -1
  92. package/storybook-static/assets/{PeriodSelect-DwozNnWV.js → PeriodSelect-BxUpa6Ti.js} +1 -1
  93. package/storybook-static/assets/{PeriodSelect-DmogN2kp.js → PeriodSelect-CvIh7s4o.js} +1 -1
  94. package/storybook-static/assets/{PeriodSelect.stories-Cwad_AnS.js → PeriodSelect.stories-9UkxLt3c.js} +1 -1
  95. package/storybook-static/assets/{PickerSelectionToolbar-B3N3Sv51.js → PickerSelectionToolbar-DCyKqj4d.js} +1 -1
  96. package/storybook-static/assets/{PickerTriggerActions-BurXeCTR.js → PickerTriggerActions-C2ml1dHu.js} +1 -1
  97. package/storybook-static/assets/{Popover-DYoRYOJQ.js → Popover-CIkFX8KE.js} +1 -1
  98. package/storybook-static/assets/{Popover-Bi3JzbPI.js → Popover-lL1gFyV9.js} +1 -1
  99. package/storybook-static/assets/{Popover.stories-jhxw-37b.js → Popover.stories-qdEo-ssX.js} +1 -1
  100. package/storybook-static/assets/{PresetRangeDateInput-5o-VfEMw.js → PresetRangeDateInput-BnjHtxAq.js} +1 -1
  101. package/storybook-static/assets/{PresetRangeDateInput-4GkY4C-R.js → PresetRangeDateInput-CJMd3--R.js} +1 -1
  102. package/storybook-static/assets/{PresetRangeDateInput.stories-BLrQFysM.js → PresetRangeDateInput.stories-CAeR9ZbD.js} +1 -1
  103. package/storybook-static/assets/{PresetSelect-VSLjZIEN.js → PresetSelect-DsWB0UAO.js} +1 -1
  104. package/storybook-static/assets/{RadioButton-DtZXxK2y.js → RadioButton-BoHDe82U.js} +1 -1
  105. package/storybook-static/assets/{RadioButton-BmDJRjUd.js → RadioButton-D8vPj5e8.js} +1 -1
  106. package/storybook-static/assets/{RadioButton.stories-CnjoSTqx.js → RadioButton.stories-CUj8nWsY.js} +1 -1
  107. package/storybook-static/assets/{RadioGroup-DKQukpG2.js → RadioGroup-BdV4BEd8.js} +1 -1
  108. package/storybook-static/assets/{RadioGroup-C5avdavC.js → RadioGroup-Ut9gYgVv.js} +1 -1
  109. package/storybook-static/assets/{RadioGroup.stories-D2RkFaPs.js → RadioGroup.stories-CqDdGawq.js} +1 -1
  110. package/storybook-static/assets/{Scrollable-BfWwu2om.js → Scrollable-CYqKWV-X.js} +1 -1
  111. package/storybook-static/assets/{Select-wCbHE4lQ.js → Select-CiCBBpv5.js} +1 -1
  112. package/storybook-static/assets/{Select-C8NwIhWM.js → Select-RbjV8dmi.js} +1 -1
  113. package/storybook-static/assets/{Select.stories-a2seNrPn.js → Select.stories-LhZxxpT7.js} +1 -1
  114. package/storybook-static/assets/{SelectOptionContent-ZSxvUFLm.js → SelectOptionContent-BzRajXPC.js} +1 -1
  115. package/storybook-static/assets/{SerializableSelect-4Goej9W_.js → SerializableSelect-Cy7gs4jX.js} +1 -1
  116. package/storybook-static/assets/{SerializableSelect.stories-BkCW3jp4.js → SerializableSelect.stories-C2_ryaWY.js} +1 -1
  117. package/storybook-static/assets/{SingleDateTimeInput-BfG4Wffa.js → SingleDateTimeInput-B_UBXx82.js} +1 -1
  118. package/storybook-static/assets/{SingleDateTimeInput-C2QxXHnT.js → SingleDateTimeInput-Dva2NFrn.js} +1 -1
  119. package/storybook-static/assets/{SingleDateTimeInput.stories-D1EHS_Lj.js → SingleDateTimeInput.stories-DYt31IoM.js} +1 -1
  120. package/storybook-static/assets/{Slider-DutRipBc.js → Slider-1ymlsxh9.js} +1 -1
  121. package/storybook-static/assets/{Slider-COfQFgR8.js → Slider-Cbcdmx97.js} +1 -1
  122. package/storybook-static/assets/{Slider.stories-DXNQd3RV.js → Slider.stories-CP_gKjK0.js} +1 -1
  123. package/storybook-static/assets/{SliderInput-CKdp2Gmo.js → SliderInput-XHYB3r06.js} +1 -1
  124. package/storybook-static/assets/{SliderInput-D15wYNK7.js → SliderInput-paqtqhAm.js} +1 -1
  125. package/storybook-static/assets/{SliderInput.stories-BHmBapUE.js → SliderInput.stories-W1GTuM_C.js} +1 -1
  126. package/storybook-static/assets/{Sortable-Cv98zRm4.js → Sortable-CT4fVwTv.js} +1 -1
  127. package/storybook-static/assets/{Sortable.stories-VjnupnmR.js → Sortable.stories-nKc7Upc2.js} +1 -1
  128. package/storybook-static/assets/{Splitter-jOqNKtm0.js → Splitter-N9erAT3u.js} +1 -1
  129. package/storybook-static/assets/{Splitter.stories-BTJf67_i.js → Splitter.stories-CK-GKi--.js} +1 -1
  130. package/storybook-static/assets/{StateSelect-BNXXcX4c.js → StateSelect-CIPFB33b.js} +1 -1
  131. package/storybook-static/assets/{StateSelect-D8Zep8nb.js → StateSelect-Dojqy1hR.js} +1 -1
  132. package/storybook-static/assets/{StateSelect.stories-B0nR14db.js → StateSelect.stories-C4On1tk0.js} +1 -1
  133. package/storybook-static/assets/{StringToggle.stories-Cat4CWpp.js → StringToggle.stories-BetJnFMH.js} +1 -1
  134. package/storybook-static/assets/{Switch-CNbwWtfu.js → Switch-D2p3kwTC.js} +1 -1
  135. package/storybook-static/assets/{Switch-CmxJq-nM.js → Switch-DUCOjbqF.js} +1 -1
  136. package/storybook-static/assets/{Switch.stories-T7MZJAke.js → Switch.stories-Blqtc2Hq.js} +1 -1
  137. package/storybook-static/assets/{Table-C7D3rt22.js → Table-h5VqBZQC.js} +1 -1
  138. package/storybook-static/assets/{Table.stories-C0jQhruO.js → Table.stories-DVNQ0tWI.js} +1 -1
  139. package/storybook-static/assets/{Tabs-BEO2hPOw.js → Tabs-oJ3wBcAV.js} +1 -1
  140. package/storybook-static/assets/{Tabs.stories-CgVofLQc.js → Tabs.stories-CBh5mcQQ.js} +1 -1
  141. package/storybook-static/assets/{TabsBox-C4gzhmdB.js → TabsBox-B9LCP1S7.js} +1 -1
  142. package/storybook-static/assets/{TagInput-C_nlfbRh.js → TagInput-DxR2Bj-i.js} +1 -1
  143. package/storybook-static/assets/{TagInput.stories-BMCmW5eG.js → TagInput.stories-0NpZyaKp.js} +1 -1
  144. package/storybook-static/assets/{Text-BqKrUz4Q.js → Text-DlyoUTZs.js} +1 -1
  145. package/storybook-static/assets/{Textarea-BbNW9GUS.js → Textarea--e-7GpNS.js} +1 -1
  146. package/storybook-static/assets/{Textarea-BRstHvhs.js → Textarea-CvpgjBoz.js} +1 -1
  147. package/storybook-static/assets/{Textarea.stories-B_22Qe-e.js → Textarea.stories-CLl8p2g4.js} +1 -1
  148. package/storybook-static/assets/{TimePanel-9AlN21FL.js → TimePanel-Fn9pUQDM.js} +1 -1
  149. package/storybook-static/assets/{TimePanel.stories-yxNANrSL.js → TimePanel.stories-BHUoKMY9.js} +1 -1
  150. package/storybook-static/assets/{Toggle-YLom0uCh.js → Toggle-B6twXbRN.js} +1 -1
  151. package/storybook-static/assets/{Toggle-Bl89R1NL.js → Toggle-j_swU_h-.js} +1 -1
  152. package/storybook-static/assets/{Toggle.stories-BGIwKyic.js → Toggle.stories-BkRbPfci.js} +1 -1
  153. package/storybook-static/assets/{TreeMultiSelect-C9hv75Z0.js → TreeMultiSelect-6SlJwvvJ.js} +1 -1
  154. package/storybook-static/assets/{TreeMultiSelect-Dhl8PI6r.js → TreeMultiSelect-86pFYMuR.js} +1 -1
  155. package/storybook-static/assets/{TreeMultiSelect.stories-DefpU9Nq.js → TreeMultiSelect.stories-Dvfg-_tX.js} +1 -1
  156. package/storybook-static/assets/{TreePickerBase-B5guKjut.js → TreePickerBase-B-C8g39p.js} +1 -1
  157. package/storybook-static/assets/{TreeSelect-Cbtl72S2.js → TreeSelect-B-rvlWXe.js} +1 -1
  158. package/storybook-static/assets/{TreeSelect-D1wgUUfD.js → TreeSelect-BsvnuuDK.js} +1 -1
  159. package/storybook-static/assets/{TreeSelect.stories-DK6Z_n2h.js → TreeSelect.stories-Bd7RvBSv.js} +1 -1
  160. package/storybook-static/assets/{TreeTable-CC5CA5OL.js → TreeTable-hKPiLJbk.js} +1 -1
  161. package/storybook-static/assets/{TreeTable.stories-DVYLy82M.js → TreeTable.stories-DW8-8XIt.js} +1 -1
  162. package/storybook-static/assets/{async-CDaecudw.js → async-ClBTLJJf.js} +1 -1
  163. package/storybook-static/assets/{blocks-DFQ7gHL7.js → blocks-BAkpxLLq.js} +3 -3
  164. package/storybook-static/assets/{browserAndReact-DNd3NO2z.js → browserAndReact-CVEbp_eh.js} +6 -41
  165. package/storybook-static/assets/{check-CDGa2frI.js → check-BI1SJVLE.js} +1 -1
  166. package/storybook-static/assets/{chevron-down-B5gF19ie.js → chevron-down-C8Jy-MyE.js} +1 -1
  167. package/storybook-static/assets/{chevron-left-BhhrtQ5w.js → chevron-left-BY47fHoH.js} +1 -1
  168. package/storybook-static/assets/{chevron-right-ULlpFrtQ.js → chevron-right-Uoc3pHM2.js} +1 -1
  169. package/storybook-static/assets/{chunk-W22LQPXL-bz_jGWFd.js → chunk-W22LQPXL-CL5_k7w9.js} +1 -1
  170. package/storybook-static/assets/{circle-alert-DG_0NWce.js → circle-alert-DmeiIhJa.js} +1 -1
  171. package/storybook-static/assets/{circle-check-DKgLpHr-.js → circle-check-DiYKn1po.js} +1 -1
  172. package/storybook-static/assets/{components-CgxL1hHE.js → components-CvASwB3y.js} +3 -3
  173. package/storybook-static/assets/{contextMenu-D_apFypV.js → contextMenu-CnFw0q-x.js} +1 -1
  174. package/storybook-static/assets/{defaultRenderers-CK6DySTx.js → defaultRenderers-BvRfeq-t.js} +1 -1
  175. package/storybook-static/assets/{download-BMlQunb2.js → download-9zZQxSfv.js} +1 -1
  176. package/storybook-static/assets/{filesAndExcel-BmDCLG9Y.js → filesAndExcel-BEg-oUnG.js} +6 -36
  177. package/storybook-static/assets/{floating-ui.react-DaDI6aL_.js → floating-ui.react-1JhRQUPm.js} +1 -1
  178. package/storybook-static/assets/formatters-CXfVcFH6.js +202 -0
  179. package/storybook-static/assets/{formatters-runtime-CsjNRxSG.js → formatters-runtime-BUROwHGI.js} +11 -66
  180. package/storybook-static/assets/foundationLib-BIERdAtE.js +25 -0
  181. package/storybook-static/assets/{hooks-C9DxdAXO.js → hooks-CU6FIrkU.js} +1 -1
  182. package/storybook-static/assets/{iframe-BOYfiRbQ.js → iframe-CyRHAH4o.js} +3 -3
  183. package/storybook-static/assets/iframe-DMUTCGyI.js +1 -0
  184. package/storybook-static/assets/{iframe-OPLBHfTR.css → iframe-I5gZKSOP.css} +1 -1
  185. package/storybook-static/assets/{info-BuKiC7d0.js → info-vRwdpcvs.js} +1 -1
  186. package/storybook-static/assets/{odata-CGjX6csD.js → odata-BeK1NpdX.js} +1 -1
  187. package/storybook-static/assets/odataAndTables-BsGyKbV-.js +77 -0
  188. package/storybook-static/assets/{odataFetchFn-DQBb33CS.js → odataFetchFn-CBB59F7H.js} +1 -1
  189. package/storybook-static/assets/{odataStoryFixtures-BYjSHUPv.js → odataStoryFixtures-D7UlbX90.js} +1 -1
  190. package/storybook-static/assets/{persisted-BmsVMmao.js → persisted-C-zkxkWy.js} +1 -1
  191. package/storybook-static/assets/pureUtilities-BhlI4P36.js +30 -0
  192. package/storybook-static/assets/{react-CPygFl97.js → react-4VaPHlD7.js} +1 -1
  193. package/storybook-static/assets/{refresh-cw-D9xWA1ag.js → refresh-cw-koABHMz2.js} +1 -1
  194. package/storybook-static/assets/{runtimeAndState-7kpVxxK8.js → runtimeAndState-DCiPKg2b.js} +4 -28
  195. package/storybook-static/assets/{settings-2-D5vKtCuh.js → settings-2-B-UnKmoE.js} +1 -1
  196. package/storybook-static/assets/{sortable-7ZhGDUUH.js → sortable-Cof-YMaC.js} +1 -1
  197. package/storybook-static/assets/{syntaxhighlighter-T5IQBZDB-BgPG-zNQ.js → syntaxhighlighter-T5IQBZDB-C1dGYx2A.js} +1 -1
  198. package/storybook-static/assets/{trash-2-COVTeKHf.js → trash-2-DIKrAYpi.js} +1 -1
  199. package/storybook-static/assets/{triangle-alert-Dc8CWEGx.js → triangle-alert-3L0K5wrt.js} +1 -1
  200. package/storybook-static/assets/{useODataSelectBase-BllI2D0F.js → useODataSelectBase-Cn7uL1Y6.js} +1 -1
  201. package/storybook-static/assets/{useODataTreeData-CNVWCnCt.js → useODataTreeData-MmRan049.js} +1 -1
  202. package/storybook-static/assets/{usePickerQuery-C0ti4hti.js → usePickerQuery-Dso-ufUa.js} +1 -1
  203. package/storybook-static/assets/{usePickerTriggerController-BSWvRSBy.js → usePickerTriggerController-B-FKRrNu.js} +1 -1
  204. package/storybook-static/assets/{x-BVvgKMRp.js → x-CI99aKu3.js} +1 -1
  205. package/storybook-static/iframe.html +3 -3
  206. package/storybook-static/project.json +1 -1
  207. package/storybook-static/assets/formatters-C5iLXNhs.js +0 -306
  208. package/storybook-static/assets/foundationLib-BcQgD58A.js +0 -82
  209. package/storybook-static/assets/iframe-Dy-1_8OT.js +0 -1
  210. package/storybook-static/assets/odataAndTables-CyGjgcKX.js +0 -126
  211. package/storybook-static/assets/pureUtilities-BbRRZPJI.js +0 -69
@@ -1,306 +0,0 @@
1
- import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-BOYfiRbQ.js";import{i as n,r}from"./react-qN2cStNd.js";import{l as i,m as a}from"./blocks-DFQ7gHL7.js";function o(e){let t={code:`code`,h1:`h1`,h2:`h2`,h3:`h3`,p:`p`,pre:`pre`,...n(),...e.components};return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(i,{title:`Foundation Lib/Formatters`}),`
2
- `,(0,c.jsx)(t.h1,{id:`форматтеры`,children:`Форматтеры`}),`
3
- `,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/formatters`}),` — единая публичная точка входа для
4
- преобразования значений в host-проекте. Она покрывает даты, числа, строки,
5
- логические значения, ФИО, телефон и числовые идентификаторы. Импортировать
6
- внутренние файлы пакета и корневой пакет не нужно: все показанные ниже имена
7
- доступны из опубликованного subpath.`]}),`
8
- `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import { formatDate, formatNumber, normalizeText, parseBoolean } from "@ryuzaki13/react-foundation-lib/formatters";
9
-
10
- import type { DateFormatPreset, NumberFormatPresetConfig } from "@ryuzaki13/react-foundation-lib/formatters";
11
- `})}),`
12
- `,(0,c.jsx)(t.h2,{id:`выбор-api`,children:`Выбор API`}),`
13
- `,(0,c.jsxs)(t.p,{children:[`| Задача | Используйте |
14
- | ------------------------------------------------------------ | -------------------------------------------------------------- |
15
- | Отобразить или разобрать дату без неявного timezone-сдвига | `,(0,c.jsx)(t.code,{children:`formatDate`}),`, `,(0,c.jsx)(t.code,{children:`parseDate`}),`, `,(0,c.jsx)(t.code,{children:`parseDateTZ`}),` |
16
- | Получить календарные границы или безопасный диапазон | `,(0,c.jsx)(t.code,{children:`getCalendarPeriod`}),`, `,(0,c.jsx)(t.code,{children:`normalizeDateRange`}),`, `,(0,c.jsx)(t.code,{children:`requireDateRange`}),` |
17
- | Отобразить число или разобрать SAP-подобную строку | `,(0,c.jsx)(t.code,{children:`formatNumber`}),`, `,(0,c.jsx)(t.code,{children:`toFiniteNumber`}),`, `,(0,c.jsx)(t.code,{children:`parseNumber`}),` |
18
- | Привести текст к безопасной строке или нормализовать пробелы | `,(0,c.jsx)(t.code,{children:`toSafeString`}),`, `,(0,c.jsx)(t.code,{children:`normalizeText`}),`, `,(0,c.jsx)(t.code,{children:`normalizeTextSpaces`}),` |
19
- | Склонить русское существительное по количеству | `,(0,c.jsx)(t.code,{children:`selectRussianPluralForm`}),`, `,(0,c.jsx)(t.code,{children:`formatRussianPlural`}),` |
20
- | Преобразовать ABAP boolean | `,(0,c.jsx)(t.code,{children:`parseAbapBoolean`}),`, `,(0,c.jsx)(t.code,{children:`toAbapBoolean`}),` |
21
- | Показать ФИО, российский номер или код с ведущими нулями | `,(0,c.jsx)(t.code,{children:`formatFullName`}),`, `,(0,c.jsx)(t.code,{children:`formatPhone`}),`, `,(0,c.jsx)(t.code,{children:`normalizeLeadingZerosStrict`}),` |`]}),`
22
- `,(0,c.jsx)(t.h2,{id:`даты`,children:`Даты`}),`
23
- `,(0,c.jsx)(t.h3,{id:`основной-форматтер`,children:`Основной форматтер`}),`
24
- `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import { formatDate, formatDateAsDateTime, formatDateAsODataDate } from "@ryuzaki13/react-foundation-lib/formatters";
25
-
26
- formatDate("2026-03-05T14:30:00", "date");
27
- // "05.03.2026"
28
-
29
- formatDateAsDateTime("/Date(1772713800000+0500)/");
30
- // строка даты и времени в локальной календарной семантике
31
-
32
- formatDateAsODataDate(new Date(2026, 2, 5));
33
- // "2026-03-05"
34
- `})}),`
35
- `,(0,c.jsx)(t.p,{children:`Сигнатура универсального вызова:`}),`
36
- `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`formatDate(
37
- value: unknown,
38
- presetOrName?: string | DateFormatPreset,
39
- options?: FormatDateOptions
40
- ): string;
41
- `})}),`
42
- `,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`value`}),` может быть `,(0,c.jsx)(t.code,{children:`Date`}),`, Unix timestamp, OData ticks вида
43
- `,(0,c.jsx)(t.code,{children:`/Date(…)/`}),`, OData literal, ABAP-дата/временная метка, ISO-строка,
44
- ISO-длительность и несколько распространённых человекочитаемых форматов.
45
- Неподходящее значение не выбрасывает исключение: результатом будет
46
- `,(0,c.jsx)(t.code,{children:`options.fallback`}),`, либо `,(0,c.jsx)(t.code,{children:`invalidFallback`}),` выбранного пресета, либо пустая
47
- строка по умолчанию.`]}),`
48
- `,(0,c.jsxs)(t.p,{children:[`Исключение — неизвестное строковое имя пресета: `,(0,c.jsx)(t.code,{children:`formatDate`}),` выбросит
49
- `,(0,c.jsx)(t.code,{children:`Error`}),`. Если формат получен из внешней конфигурации, сначала разрешите его
50
- через `,(0,c.jsx)(t.code,{children:`resolveDateFormatPreset`}),` или проверьте через `,(0,c.jsx)(t.code,{children:`getDatePreset`}),`.`]}),`
51
- `,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`FormatDateOptions`}),`:`]}),`
52
- `,(0,c.jsxs)(t.p,{children:[`| Поле | Назначение |
53
- | ---------------------------------------- | -------------------------------------------------------------------------- |
54
- | `,(0,c.jsx)(t.code,{children:`fallback?: string`}),` | Результат для нераспознанного входа; имеет приоритет над fallback пресета. |
55
- | `,(0,c.jsx)(t.code,{children:`precision?: "day" \\| "month" \\| "year"`}),` | Скрывает календарные части ниже выбранной точности. |`]}),`
56
- `,(0,c.jsx)(t.h3,{id:`готовые-форматтеры`,children:`Готовые форматтеры`}),`
57
- `,(0,c.jsxs)(t.p,{children:[`Все функции принимают `,(0,c.jsx)(t.code,{children:`value: unknown`}),` и необязательный `,(0,c.jsx)(t.code,{children:`FormatDateOptions`}),`,
58
- возвращают строку и используют соответствующий встроенный пресет.`]}),`
59
- `,(0,c.jsxs)(t.p,{children:[`| API | Результат / назначение |
60
- | --------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- |
61
- | `,(0,c.jsx)(t.code,{children:`formatDateAsDate`}),` | `,(0,c.jsx)(t.code,{children:`dd.MM.yyyy`}),`. |
62
- | `,(0,c.jsx)(t.code,{children:`formatDateAsDateTime`}),` | Дата и время до минут. |
63
- | `,(0,c.jsx)(t.code,{children:`formatDateAsTime`}),`, `,(0,c.jsx)(t.code,{children:`formatDateAsTimeSeconds`}),` | Время до минут или секунд. |
64
- | `,(0,c.jsx)(t.code,{children:`formatDateAsDateShort`}),`, `,(0,c.jsx)(t.code,{children:`formatDateAsDateMedium`}),`, `,(0,c.jsx)(t.code,{children:`formatDateAsDateLong`}),` | Числовая, сокращённая и полная русская дата. |
65
- | `,(0,c.jsx)(t.code,{children:`formatDateAsMonthShort`}),`, `,(0,c.jsx)(t.code,{children:`formatDateAsMonthMedium`}),`, `,(0,c.jsx)(t.code,{children:`formatDateAsMonthLong`}),` | День и месяц без года: числовой, сокращённый или полный вид. |
66
- | `,(0,c.jsx)(t.code,{children:`formatDateAsMonthYearMedium`}),`, `,(0,c.jsx)(t.code,{children:`formatDateAsMonthYearLong`}),` | Месяц и год в сокращённом или полном виде. |
67
- | `,(0,c.jsx)(t.code,{children:`formatDateAsTimeShort`}),`, `,(0,c.jsx)(t.code,{children:`formatDateAsTimeMedium`}),`, `,(0,c.jsx)(t.code,{children:`formatDateAsTimeLong`}),` | Короткое или секундное время без вывода timezone. |
68
- | `,(0,c.jsx)(t.code,{children:`formatDateAsDatetimeShort`}),`, `,(0,c.jsx)(t.code,{children:`formatDateAsDatetimeMedium`}),`, `,(0,c.jsx)(t.code,{children:`formatDateAsDatetimeLong`}),` | Дата и время с разной детализацией. |
69
- | `,(0,c.jsx)(t.code,{children:`formatDateAsAbapYear`}),`, `,(0,c.jsx)(t.code,{children:`formatDateAsAbapMonth`}),`, `,(0,c.jsx)(t.code,{children:`formatDateAsAbapDate`}),`, `,(0,c.jsx)(t.code,{children:`formatDateAsAbapDatetime`}),` | Машинные строки `,(0,c.jsx)(t.code,{children:`yyyy`}),`, `,(0,c.jsx)(t.code,{children:`yyyyMM`}),`, `,(0,c.jsx)(t.code,{children:`yyyyMMdd`}),`, `,(0,c.jsx)(t.code,{children:`yyyyMMddHHmmss`}),`. |
70
- | `,(0,c.jsx)(t.code,{children:`formatDateAsODataDate`}),`, `,(0,c.jsx)(t.code,{children:`formatDateAsODataDatetime`}),` | Машинные строки `,(0,c.jsx)(t.code,{children:`yyyy-MM-dd`}),`, `,(0,c.jsx)(t.code,{children:`yyyy-MM-ddTHH:mm:ss`}),`. |
71
- | `,(0,c.jsx)(t.code,{children:`formatDateAsODataTime`}),` | Время как OData duration `,(0,c.jsx)(t.code,{children:`PT00H00M00S`}),`; для ISO-длительности форматирует её как время. |
72
- | `,(0,c.jsx)(t.code,{children:`formatDateRange(startValue, endValue, presetOrName?, options?)`}),` | Две валидные даты через `,(0,c.jsx)(t.code,{children:`-`}),`; если любая невалидна, возвращает fallback. |`]}),`
73
- `,(0,c.jsx)(t.h3,{id:`разбор-даты-и-timezone-семантика`,children:`Разбор даты и timezone-семантика`}),`
74
- `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import { parseDate, parseDateTZ, parseDateByPattern, parseDateValue } from "@ryuzaki13/react-foundation-lib/formatters";
75
-
76
- parseDate("20260305");
77
- // Date | null
78
-
79
- parseDateTZ("2026-03-05T10:00:00+05:00");
80
- // Date | null, сохраняет абсолютный instant
81
-
82
- parseDateByPattern("05/03/2026", "dd/MM/yyyy");
83
- // { kind: "date-time", source: "iso-local", date: Date } | null
84
-
85
- parseDateValue("PT01H30M");
86
- // { kind: "duration", source: "iso-duration", durationMs: 5_400_000 } | null
87
- `})}),`
88
- `,(0,c.jsxs)(t.p,{children:[`| API | Вход и результат |
89
- | ----------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
90
- | `,(0,c.jsx)(t.code,{children:`parseDateValue(value)`}),` | `,(0,c.jsx)(t.code,{children:`ParsedDateValue \\| null`}),`. Обычный режим: сохраняет видимые календарные компоненты без применения timezone. |
91
- | `,(0,c.jsx)(t.code,{children:`parseDateValueTZ(value)`}),` | `,(0,c.jsx)(t.code,{children:`ParsedDateValue \\| null`}),`. Для Unix timestamp и ISO/OData со смещением сохраняет абсолютный момент времени. |
92
- | `,(0,c.jsx)(t.code,{children:`parseDate(value)`}),` | `,(0,c.jsx)(t.code,{children:`Date \\| null`}),`; в том числе приводит duration к `,(0,c.jsx)(t.code,{children:`Date`}),` в «плавающей» календарной семантике. |
93
- | `,(0,c.jsx)(t.code,{children:`parseDateTZ(value)`}),` | `,(0,c.jsx)(t.code,{children:`Date \\| null`}),` с timezone-aware трактовкой абсолютного времени. |
94
- | `,(0,c.jsx)(t.code,{children:`parseDateByPattern(value, pattern?, { precision? })`}),` | Строго разбирает токены `,(0,c.jsx)(t.code,{children:`dd`}),`, `,(0,c.jsx)(t.code,{children:`MM`}),`, `,(0,c.jsx)(t.code,{children:`yyyy`}),`, `,(0,c.jsx)(t.code,{children:`yy`}),`, `,(0,c.jsx)(t.code,{children:`HH`}),`, `,(0,c.jsx)(t.code,{children:`mm`}),`, `,(0,c.jsx)(t.code,{children:`ss`}),`; невалидные компоненты дают `,(0,c.jsx)(t.code,{children:`null`}),`. Двузначный год `,(0,c.jsx)(t.code,{children:`00–69`}),` — это `,(0,c.jsx)(t.code,{children:`2000–2069`}),`, `,(0,c.jsx)(t.code,{children:`70–99`}),` — `,(0,c.jsx)(t.code,{children:`1970–1999`}),`. |
95
- | `,(0,c.jsx)(t.code,{children:`parseDateByFormat(value, dateFormat?, options?)`}),` | Разбирает зарегистрированное имя пресета, style-алиас или ручной шаблон. `,(0,c.jsx)(t.code,{children:`options`}),`: `,(0,c.jsx)(t.code,{children:`defaultFormat`}),`, `,(0,c.jsx)(t.code,{children:`locale`}),`, `,(0,c.jsx)(t.code,{children:`precision`}),`, `,(0,c.jsx)(t.code,{children:`referenceDate`}),`. |`]}),`
96
- `,(0,c.jsxs)(t.p,{children:[`Публичные типы для результатов и контракта: `,(0,c.jsx)(t.code,{children:`DateInputSource`}),`,
97
- `,(0,c.jsx)(t.code,{children:`ParsedDateValue`}),`, `,(0,c.jsx)(t.code,{children:`DateFormatPattern`}),`, `,(0,c.jsx)(t.code,{children:`DateFormatStyle`}),`,
98
- `,(0,c.jsx)(t.code,{children:`DateFormatPrecision`}),`, `,(0,c.jsx)(t.code,{children:`DateFormatPreset`}),`, `,(0,c.jsx)(t.code,{children:`DateFormatPresetConfig`}),`,
99
- `,(0,c.jsx)(t.code,{children:`FormatDateOptions`}),`, `,(0,c.jsx)(t.code,{children:`ParseDateByPatternOptions`}),`, `,(0,c.jsx)(t.code,{children:`ParseDateByFormatOptions`}),`.`]}),`
100
- `,(0,c.jsxs)(t.p,{children:[`Не заменяйте `,(0,c.jsx)(t.code,{children:`parseDate`}),` на `,(0,c.jsx)(t.code,{children:`new Date("YYYY-MM-DD")`}),`, если значение является
101
- календарной датой: native parsing может изменить отображаемый день из-за
102
- timezone.`]}),`
103
- `,(0,c.jsx)(t.h3,{id:`пресеты-дат`,children:`Пресеты дат`}),`
104
- `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import {
105
- DEFAULT_DATE_PRESET_NAMES,
106
- getDatePreset,
107
- registerDatePreset,
108
- resolveDateFormatPreset
109
- } from "@ryuzaki13/react-foundation-lib/formatters";
110
-
111
- registerDatePreset({
112
- name: "report-date",
113
- pattern: "dd.MM.yyyy",
114
- invalidFallback: "—"
115
- });
116
-
117
- formatDate("2026-03-05", "report-date"); // "05.03.2026"
118
-
119
- const safePreset = resolveDateFormatPreset("dd/MM/yyyy");
120
- formatDate("05/03/2026", safePreset); // "05/03/2026"
121
- `})}),`
122
- `,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`DEFAULT_DATE_PRESET_NAMES`}),` содержит: `,(0,c.jsx)(t.code,{children:`date`}),`, `,(0,c.jsx)(t.code,{children:`date-short`}),`, `,(0,c.jsx)(t.code,{children:`date-medium`}),`,
123
- `,(0,c.jsx)(t.code,{children:`date-long`}),`, `,(0,c.jsx)(t.code,{children:`month-short`}),`, `,(0,c.jsx)(t.code,{children:`month-medium`}),`, `,(0,c.jsx)(t.code,{children:`month-long`}),`,
124
- `,(0,c.jsx)(t.code,{children:`month-year-medium`}),`, `,(0,c.jsx)(t.code,{children:`month-year-long`}),`, `,(0,c.jsx)(t.code,{children:`datetime`}),`, `,(0,c.jsx)(t.code,{children:`datetime-seconds`}),`,
125
- `,(0,c.jsx)(t.code,{children:`datetime-short`}),`, `,(0,c.jsx)(t.code,{children:`datetime-medium`}),`, `,(0,c.jsx)(t.code,{children:`datetime-long`}),`, `,(0,c.jsx)(t.code,{children:`time`}),`,
126
- `,(0,c.jsx)(t.code,{children:`time-seconds`}),`, `,(0,c.jsx)(t.code,{children:`time-short`}),`, `,(0,c.jsx)(t.code,{children:`time-medium`}),`, `,(0,c.jsx)(t.code,{children:`time-long`}),`, `,(0,c.jsx)(t.code,{children:`odata-date`}),`,
127
- `,(0,c.jsx)(t.code,{children:`odata-datetime`}),`, `,(0,c.jsx)(t.code,{children:`abap-datetime`}),`, `,(0,c.jsx)(t.code,{children:`abap-date`}),`, `,(0,c.jsx)(t.code,{children:`abap-month`}),`, `,(0,c.jsx)(t.code,{children:`abap-year`}),`.`]}),`
128
- `,(0,c.jsxs)(t.p,{children:[`| API | Поведение |
129
- | ---------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
130
- | `,(0,c.jsx)(t.code,{children:`DATE_FORMAT_DEFAULTS`}),` | Значения по умолчанию: `,(0,c.jsx)(t.code,{children:`ru-RU`}),`, числовая дата и пустой `,(0,c.jsx)(t.code,{children:`invalidFallback`}),`. |
131
- | `,(0,c.jsx)(t.code,{children:`DATE_FORMAT_STYLE_PRESET_NAMES`}),` | Соответствие `,(0,c.jsx)(t.code,{children:`short`}),`, `,(0,c.jsx)(t.code,{children:`medium`}),`, `,(0,c.jsx)(t.code,{children:`long`}),` встроенным date-пресетам. |
132
- | `,(0,c.jsx)(t.code,{children:`getDatePreset(name)`}),`, `,(0,c.jsx)(t.code,{children:`getDatePresetNames()`}),` | Возвращают пресет или `,(0,c.jsx)(t.code,{children:`undefined`}),`, список имён. |
133
- | `,(0,c.jsx)(t.code,{children:`registerDatePreset(config)`}),` | Компилирует и регистрирует/перезаписывает пресет, возвращает готовый `,(0,c.jsx)(t.code,{children:`DateFormatPreset`}),`. Реестр module-scoped. |
134
- | `,(0,c.jsx)(t.code,{children:`resetDatePresets()`}),` | Сбрасывает реестр к встроенным пресетам; используйте для изолированных тестов, не в обычном runtime. |
135
- | `,(0,c.jsx)(t.code,{children:`isDateFormatStyle(value)`}),`, `,(0,c.jsx)(t.code,{children:`isDateFormatPrecision(value)`}),` | Type guard для style и precision. |
136
- | `,(0,c.jsx)(t.code,{children:`resolveDateFormatName(value?, defaultFormat?)`}),` | Обрезает пробелы и переводит `,(0,c.jsx)(t.code,{children:`short`}),` / `,(0,c.jsx)(t.code,{children:`medium`}),` / `,(0,c.jsx)(t.code,{children:`long`}),` в имя date-пресета. |
137
- | `,(0,c.jsx)(t.code,{children:`resolveDateFormatPreset(value?, options?)`}),` | Возвращает имя зарегистрированного пресета или кешируемый объектный пресет для ручного шаблона. |`]}),`
138
- `,(0,c.jsxs)(t.p,{children:[`Для ручных шаблонов доступны константы `,(0,c.jsx)(t.code,{children:`DATE_PATTERN_DATE_TOKENS`}),`,
139
- `,(0,c.jsx)(t.code,{children:`DATE_PATTERN_TIME_TOKENS`}),`, `,(0,c.jsx)(t.code,{children:`DATE_PATTERN_TOKENS`}),` и `,(0,c.jsx)(t.code,{children:`DATE_PATTERN_TOKEN_RE`}),`.
140
- Поддерживаются только перечисленные токены; остальные фрагменты шаблона —
141
- литеральный текст.`]}),`
142
- `,(0,c.jsx)(t.h3,{id:`календарные-значения-и-диапазоны`,children:`Календарные значения и диапазоны`}),`
143
- `,(0,c.jsxs)(t.p,{children:[`Эти функции работают с локальными компонентами `,(0,c.jsx)(t.code,{children:`Date`}),` и не добавляют UTC- или
144
- timezone-семантику.`]}),`
145
- `,(0,c.jsxs)(t.p,{children:[`| API | Результат / fallback |
146
- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
147
- | `,(0,c.jsx)(t.code,{children:`createCalendarDate(year, monthIndex, day, hour?, minute?, second?, millisecond?)`}),` | Новый локальный `,(0,c.jsx)(t.code,{children:`Date`}),`; `,(0,c.jsx)(t.code,{children:`monthIndex`}),` соответствует `,(0,c.jsx)(t.code,{children:`Date#getMonth()`}),`. |
148
- | `,(0,c.jsx)(t.code,{children:`getStartOfDay`}),`, `,(0,c.jsx)(t.code,{children:`getEndOfDay`}),`, `,(0,c.jsx)(t.code,{children:`getStartOfMonth`}),`, `,(0,c.jsx)(t.code,{children:`getStartOfYear`}),`, `,(0,c.jsx)(t.code,{children:`getStartOfWeek(date, weekStartsOn?)`}),` | Новая дата с календарной границей; по умолчанию неделя начинается в понедельник. |
149
- | `,(0,c.jsx)(t.code,{children:`addCalendarDays`}),`, `,(0,c.jsx)(t.code,{children:`addCalendarMonths`}),`, `,(0,c.jsx)(t.code,{children:`addCalendarYears`}),` | Новый `,(0,c.jsx)(t.code,{children:`Date`}),`, сдвинутый в календарной семантике. |
150
- | `,(0,c.jsx)(t.code,{children:`isSameCalendarDay(left, right)`}),` | `,(0,c.jsx)(t.code,{children:`false`}),`, если любой аргумент не является `,(0,c.jsx)(t.code,{children:`Date`}),`; иначе сравнивает год, месяц, день. |
151
- | `,(0,c.jsx)(t.code,{children:`getCalendarPeriod(value, { selectionMode?, weekEndDay? })`}),` | `,(0,c.jsx)(t.code,{children:`{ start, end } \\| null`}),`; режимы `,(0,c.jsx)(t.code,{children:`day`}),`, `,(0,c.jsx)(t.code,{children:`week`}),`, `,(0,c.jsx)(t.code,{children:`month`}),`, `,(0,c.jsx)(t.code,{children:`year`}),`, конец недели — `,(0,c.jsx)(t.code,{children:`friday`}),`, `,(0,c.jsx)(t.code,{children:`saturday`}),` или `,(0,c.jsx)(t.code,{children:`sunday`}),`. |
152
- | `,(0,c.jsx)(t.code,{children:`isDateInsideCalendarPeriod`}),`, `,(0,c.jsx)(t.code,{children:`isCalendarPeriodWithinDateBounds`}),` | Проверяют включительные границы; при отсутствующих/невалидных данных возвращают `,(0,c.jsx)(t.code,{children:`false`}),`. |
153
- | `,(0,c.jsx)(t.code,{children:`resolveDateRangePair(value)`}),` | Упорядоченная пара дат или `,(0,c.jsx)(t.code,{children:`null`}),`; одиночная дата становится диапазоном из неё самой. |
154
- | `,(0,c.jsx)(t.code,{children:`normalizeDateRange(value, { timeMode? })`}),` | `,(0,c.jsx)(t.code,{children:`DateRange \\| null`}),`; по умолчанию расширяет до границ суток, `,(0,c.jsx)(t.code,{children:`preserve`}),` сохраняет время и создаёт копии. |
155
- | `,(0,c.jsx)(t.code,{children:`requireDateRange(value, options?)`}),` | Как `,(0,c.jsx)(t.code,{children:`normalizeDateRange`}),`, но при отсутствии диапазона выбрасывает `,(0,c.jsx)(t.code,{children:`Error`}),`. |
156
- | `,(0,c.jsx)(t.code,{children:`countCalendarDaysInDateRange(value)`}),` | Количество дней включительно или `,(0,c.jsx)(t.code,{children:`null`}),`. |
157
- | `,(0,c.jsx)(t.code,{children:`isValidDate`}),`, `,(0,c.jsx)(t.code,{children:`isDateRangeTuple`}),`, `,(0,c.jsx)(t.code,{children:`cloneDate`}),`, `,(0,c.jsx)(t.code,{children:`orderDates`}),` | Низкоуровневые guards и операции диапазона. |
158
- | `,(0,c.jsx)(t.code,{children:`normalizeDateRangeReferenceDate`}),`, `,(0,c.jsx)(t.code,{children:`resolveTodayRange`}),`, `,(0,c.jsx)(t.code,{children:`resolveYesterdayRange`}),`, `,(0,c.jsx)(t.code,{children:`resolveMonthAgoRange`}),`, `,(0,c.jsx)(t.code,{children:`resolveMonthStartToTodayRange`}),`, `,(0,c.jsx)(t.code,{children:`resolveMonthStartToYesterdayRange`}),` | Относительные диапазоны от `,(0,c.jsx)(t.code,{children:`{ referenceDate }`}),`; на первом дне месяца «по вчера» не создаёт инверсию. |`]}),`
159
- `,(0,c.jsxs)(t.p,{children:[`Публичные типы диапазонов: `,(0,c.jsx)(t.code,{children:`CalendarPeriod`}),`, `,(0,c.jsx)(t.code,{children:`CalendarPeriodOptions`}),`,
160
- `,(0,c.jsx)(t.code,{children:`CalendarPeriodDateBounds`}),`, `,(0,c.jsx)(t.code,{children:`CalendarPeriodSelectionMode`}),`,
161
- `,(0,c.jsx)(t.code,{children:`CalendarWeekEndDay`}),`, `,(0,c.jsx)(t.code,{children:`DateRange`}),`, `,(0,c.jsx)(t.code,{children:`NullableDateRange`}),`, `,(0,c.jsx)(t.code,{children:`DateRangeInput`}),`,
162
- `,(0,c.jsx)(t.code,{children:`DateRangeTimeMode`}),`, `,(0,c.jsx)(t.code,{children:`NormalizeDateRangeOptions`}),`, `,(0,c.jsx)(t.code,{children:`DateRangeReferenceContext`}),`.`]}),`
163
- `,(0,c.jsx)(t.h3,{id:`учебный-календарь`,children:`Учебный календарь`}),`
164
- `,(0,c.jsxs)(t.p,{children:[`Для образовательной модели доступны `,(0,c.jsx)(t.code,{children:`EducationDateKey`}),` (`,(0,c.jsx)(t.code,{children:`YYYY-MM-DD`}),`),
165
- `,(0,c.jsx)(t.code,{children:`EducationYearRange`}),` и `,(0,c.jsx)(t.code,{children:`EducationWeekRange`}),`.`]}),`
166
- `,(0,c.jsxs)(t.p,{children:[`| API | Поведение |
167
- | ---------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- |
168
- | `,(0,c.jsx)(t.code,{children:`parseEducationDateKey`}),`, `,(0,c.jsx)(t.code,{children:`createEducationDateTime`}),` | Возвращают `,(0,c.jsx)(t.code,{children:`Date \\| null`}),` при неверном ключе или времени. |
169
- | `,(0,c.jsx)(t.code,{children:`formatEducationDateKey`}),`, `,(0,c.jsx)(t.code,{children:`formatEducationTimeKey`}),` | Создают стабильные локальные ключи `,(0,c.jsx)(t.code,{children:`YYYY-MM-DD`}),` и `,(0,c.jsx)(t.code,{children:`HH:mm`}),`. |
170
- | `,(0,c.jsx)(t.code,{children:`getEducationYear`}),`, `,(0,c.jsx)(t.code,{children:`getEducationYearRange`}),`, `,(0,c.jsx)(t.code,{children:`isEducationDateInCurrentYear`}),` | Учебный год: 1 сентября — 31 августа. |
171
- | `,(0,c.jsx)(t.code,{children:`getEducationWeekStartDate`}),`, `,(0,c.jsx)(t.code,{children:`getEducationWeekRange`}),`, `,(0,c.jsx)(t.code,{children:`getEducationWeekDays`}),`, `,(0,c.jsx)(t.code,{children:`getCurrentEducationWeekKey`}),` | Учебная неделя: понедельник — суббота; воскресенье относится к следующей. |
172
- | `,(0,c.jsx)(t.code,{children:`normalizeEducationWeekKey`}),`, `,(0,c.jsx)(t.code,{children:`resolveEducationWeekKey`}),`, `,(0,c.jsx)(t.code,{children:`isCurrentEducationWeek`}),` | Невалидный или вне текущего учебного года ключ даёт `,(0,c.jsx)(t.code,{children:`undefined`}),`; `,(0,c.jsx)(t.code,{children:`resolve…`}),` вместо этого возвращает текущую неделю. |`]}),`
173
- `,(0,c.jsx)(t.h2,{id:`числа`,children:`Числа`}),`
174
- `,(0,c.jsx)(t.h3,{id:`форматирование-и-пресеты`,children:`Форматирование и пресеты`}),`
175
- `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import {
176
- formatNumber,
177
- formatNumberAsDecimal2,
178
- formatNumberAsIntegerOrEmpty,
179
- registerNumberPreset
180
- } from "@ryuzaki13/react-foundation-lib/formatters";
181
-
182
- formatNumberAsDecimal2(12345.6); // "12\xA0345,60" в ru-RU
183
- formatNumberAsIntegerOrEmpty("0"); // ""
184
-
185
- registerNumberPreset({
186
- name: "quantity-4",
187
- decimals: 4,
188
- grouping: false
189
- });
190
-
191
- formatNumber(12.5, "quantity-4"); // "12,5000"
192
- `})}),`
193
- `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`formatNumber(value: unknown, presetOrName: string | NumberFormatPreset): string;
194
- `})}),`
195
- `,(0,c.jsxs)(t.p,{children:[`Форматирование использует `,(0,c.jsx)(t.code,{children:`Intl.NumberFormat("ru-RU")`}),`. Пустая строка,
196
- `,(0,c.jsx)(t.code,{children:`NaN`}),`, `,(0,c.jsx)(t.code,{children:`Infinity`}),` и значения, которые `,(0,c.jsx)(t.code,{children:`Number(value)`}),` не может привести к
197
- конечному числу, возвращают строку `,(0,c.jsx)(t.code,{children:`"0"`}),`. Неизвестное строковое имя пресета
198
- выбрасывает `,(0,c.jsx)(t.code,{children:`Error`}),`.`]}),`
199
- `,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`formatNumber`}),` не является SAP-парсером: переданная строка `,(0,c.jsx)(t.code,{children:`"1 234,5"`}),` не
200
- обязана быть принята `,(0,c.jsx)(t.code,{children:`Number`}),`. Для такого входа сначала используйте
201
- `,(0,c.jsx)(t.code,{children:`toFiniteNumber`}),` или `,(0,c.jsx)(t.code,{children:`parseNumber`}),`.`]}),`
202
- `,(0,c.jsxs)(t.p,{children:[`| API | Поведение |
203
- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
204
- | `,(0,c.jsx)(t.code,{children:`formatNumberAsInteger`}),`, `,(0,c.jsx)(t.code,{children:`formatNumberAsCurrency`}),`, `,(0,c.jsx)(t.code,{children:`formatNumberAsPrice`}),` | Встроенные пресеты с нулевой дробной частью. Валютный знак не добавляется. |
205
- | `,(0,c.jsx)(t.code,{children:`formatNumberAsDecimal`}),`, `,(0,c.jsx)(t.code,{children:`formatNumberAsDecimal2`}),`, `,(0,c.jsx)(t.code,{children:`formatNumberAsDecimal3`}),` | Один, два или три знака после запятой. |
206
- | `,(0,c.jsx)(t.code,{children:`formatNumberAsPercent`}),`, `,(0,c.jsx)(t.code,{children:`formatNumberAsTonnage`}),` | Встроенные пресеты с двумя и одним знаком соответственно; знак `,(0,c.jsx)(t.code,{children:`%`}),` не добавляется. |
207
- | `,(0,c.jsx)(t.code,{children:`formatNumberAsIntegerOrEmpty`}),`, `,(0,c.jsx)(t.code,{children:`formatNumberAsCurrencyOrEmpty`}),`, `,(0,c.jsx)(t.code,{children:`formatNumberAsDecimalOrEmpty`}),`, `,(0,c.jsx)(t.code,{children:`formatNumberAsDecimal2OrEmpty`}),`, `,(0,c.jsx)(t.code,{children:`formatNumberAsDecimal3OrEmpty`}),`, `,(0,c.jsx)(t.code,{children:`formatNumberAsPercentOrEmpty`}),`, `,(0,c.jsx)(t.code,{children:`formatNumberAsPriceOrEmpty`}),`, `,(0,c.jsx)(t.code,{children:`formatNumberAsTonnageOrEmpty`}),` | Сначала проверяют семантический ноль; для него возвращают `,(0,c.jsx)(t.code,{children:`""`}),`, иначе используют одноимённый форматтер. |
208
- | `,(0,c.jsx)(t.code,{children:`truncateNumber(number, decimals)`}),` | Усечение дробной части математически, без форматирования и без проверки аргументов. |
209
- | `,(0,c.jsx)(t.code,{children:`clearFormatCache()`}),` | Очищает module-scoped кеш `,(0,c.jsx)(t.code,{children:`Intl.NumberFormat`}),`; обычно нужен только для тестов или смены изолированного окружения. |`]}),`
210
- `,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`DEFAULT_NUMBER_PRESET_NAMES`}),` содержит: `,(0,c.jsx)(t.code,{children:`integer`}),`, `,(0,c.jsx)(t.code,{children:`decimal`}),`, `,(0,c.jsx)(t.code,{children:`decimal-2`}),`,
211
- `,(0,c.jsx)(t.code,{children:`decimal-3`}),`, `,(0,c.jsx)(t.code,{children:`currency`}),`, `,(0,c.jsx)(t.code,{children:`price`}),`, `,(0,c.jsx)(t.code,{children:`percent`}),`, `,(0,c.jsx)(t.code,{children:`tonnage`}),`,
212
- `,(0,c.jsx)(t.code,{children:`compact-currency`}),`, `,(0,c.jsx)(t.code,{children:`compact-currency-round`}),`, `,(0,c.jsx)(t.code,{children:`compact-percent`}),`,
213
- `,(0,c.jsx)(t.code,{children:`compact-percent-round`}),`, `,(0,c.jsx)(t.code,{children:`compact-tonnage`}),`, `,(0,c.jsx)(t.code,{children:`compact-tonnage-round`}),`.
214
- Компактность задаётся через поле `,(0,c.jsx)(t.code,{children:`compact`}),` самого пресета: при значении от
215
- 1000 по умолчанию используются суффиксы `,(0,c.jsx)(t.code,{children:`тыс`}),`, `,(0,c.jsx)(t.code,{children:`млн`}),`, `,(0,c.jsx)(t.code,{children:`млрд`}),`, `,(0,c.jsx)(t.code,{children:`трлн`}),`.`]}),`
216
- `,(0,c.jsxs)(t.p,{children:[`| API / тип | Назначение |
217
- | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ |
218
- | `,(0,c.jsx)(t.code,{children:`NUMBER_FORMAT_DEFAULTS`}),` | Базовые значения: один знак, `,(0,c.jsx)(t.code,{children:`,`}),`, группировка ru-RU, размер группы 3. |
219
- | `,(0,c.jsx)(t.code,{children:`NumberFormatPreset`}),`, `,(0,c.jsx)(t.code,{children:`NumberFormatPresetConfig`}),` | Контракт пресета и конфигурации регистрации. |
220
- | `,(0,c.jsx)(t.code,{children:`NumberFormatCompactOptions`}),`, `,(0,c.jsx)(t.code,{children:`NumberFormatCompactUnit`}),`, `,(0,c.jsx)(t.code,{children:`NumberFormatCompactRoundingMode`}),` | Настройки compact-представления: минимум, дробная часть, режим `,(0,c.jsx)(t.code,{children:`round`}),` / `,(0,c.jsx)(t.code,{children:`floor`}),` / `,(0,c.jsx)(t.code,{children:`ceil`}),` / `,(0,c.jsx)(t.code,{children:`trunc`}),`, суффиксы и единицы. |
221
- | `,(0,c.jsx)(t.code,{children:`getNumberPreset(name)`}),`, `,(0,c.jsx)(t.code,{children:`getNumberPresetNames()`}),` | Чтение пресета или `,(0,c.jsx)(t.code,{children:`undefined`}),`, список имён. |
222
- | `,(0,c.jsx)(t.code,{children:`registerNumberPreset(config)`}),` | Регистрирует или перезаписывает пресет, дополняя отсутствующие поля `,(0,c.jsx)(t.code,{children:`NUMBER_FORMAT_DEFAULTS`}),`. |
223
- | `,(0,c.jsx)(t.code,{children:`resetNumberPresets()`}),` | Возвращает только встроенные пресеты; не вызывайте в работающем приложении. |`]}),`
224
- `,(0,c.jsx)(t.h3,{id:`разбор-и-проверки`,children:`Разбор и проверки`}),`
225
- `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import { isPositiveValue, parseNumber, toFiniteNumber, toPositiveInteger } from "@ryuzaki13/react-foundation-lib/formatters";
226
-
227
- toFiniteNumber("1\xA0234,50"); // 1234.5
228
- parseNumber("не число"); // 0
229
- toPositiveInteger("12"); // 12
230
- isPositiveValue("0"); // false
231
- `})}),`
232
- `,(0,c.jsxs)(t.p,{children:[`| API | Fallback |
233
- | -------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
234
- | `,(0,c.jsx)(t.code,{children:`toFiniteNumber(value)`}),` | `,(0,c.jsx)(t.code,{children:`number \\| undefined`}),`. Поддерживает пробелы, NBSP, узкий NBSP и `,(0,c.jsx)(t.code,{children:`'`}),` как группировку; запятую как десятичный разделитель. |
235
- | `,(0,c.jsx)(t.code,{children:`parseNumber(value)`}),` | Как `,(0,c.jsx)(t.code,{children:`toFiniteNumber`}),`, но возвращает `,(0,c.jsx)(t.code,{children:`0`}),` вместо `,(0,c.jsx)(t.code,{children:`undefined`}),`. |
236
- | `,(0,c.jsx)(t.code,{children:`toPositiveInteger(value)`}),` | Положительное целое или `,(0,c.jsx)(t.code,{children:`undefined`}),`. |
237
- | `,(0,c.jsx)(t.code,{children:`isPositiveValue(value)`}),` | `,(0,c.jsx)(t.code,{children:`true`}),` только для конечного значения строго больше нуля. |
238
- | `,(0,c.jsx)(t.code,{children:`isZeroValue(value)`}),` | `,(0,c.jsx)(t.code,{children:`true`}),` для значений, семантически равных нулю; используется вариантами `,(0,c.jsx)(t.code,{children:`…OrEmpty`}),`. |`]}),`
239
- `,(0,c.jsx)(t.h2,{id:`строки`,children:`Строки`}),`
240
- `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import { formatRussianPlural } from "@ryuzaki13/react-foundation-lib/formatters";
241
-
242
- const elementForms = {
243
- one: "элемент",
244
- few: "элемента",
245
- many: "элементов"
246
- };
247
-
248
- formatRussianPlural(1, elementForms); // "1 элемент"
249
- formatRussianPlural(2, elementForms); // "2 элемента"
250
- formatRussianPlural(7, elementForms); // "7 элементов"
251
- `})}),`
252
- `,(0,c.jsxs)(t.p,{children:[`| API | Вход, результат и fallback |
253
- | ------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
254
- | `,(0,c.jsx)(t.code,{children:`selectRussianPluralForm(value, forms)`}),` | Выбирает полную русскую форму `,(0,c.jsx)(t.code,{children:`one`}),`, `,(0,c.jsx)(t.code,{children:`few`}),`, `,(0,c.jsx)(t.code,{children:`many`}),` или `,(0,c.jsx)(t.code,{children:`other`}),`; для дробного значения без `,(0,c.jsx)(t.code,{children:`other`}),` использует `,(0,c.jsx)(t.code,{children:`few`}),`. |
255
- | `,(0,c.jsx)(t.code,{children:`formatRussianPlural(value, forms)`}),` | Возвращает исходное количество и выбранную форму через пробел; не округляет и не форматирует число отдельно. |
256
- | `,(0,c.jsx)(t.code,{children:`normalizeText(value)`}),` | Обрезанная непустая строка или `,(0,c.jsx)(t.code,{children:`undefined`}),` для нестрокового/пустого значения. |
257
- | `,(0,c.jsx)(t.code,{children:`normalizeTextWithFallback(value, fallback = "")`}),` | Нормализованный текст или указанный fallback. |
258
- | `,(0,c.jsx)(t.code,{children:`normalizeRequiredText(value)`}),` | Нормализованный текст или `,(0,c.jsx)(t.code,{children:`""`}),`. |
259
- | `,(0,c.jsx)(t.code,{children:`normalizeTextToLower(value)`}),` | Нормализованный текст в нижнем регистре или `,(0,c.jsx)(t.code,{children:`""`}),`. |
260
- | `,(0,c.jsx)(t.code,{children:`normalizeTextSpaces(value)`}),` | Убирает пробелы по краям и сворачивает пробельные символы, NBSP и узкие NBSP в один обычный пробел. |
261
- | `,(0,c.jsx)(t.code,{children:`toSafeString(value)`}),` | `,(0,c.jsx)(t.code,{children:`""`}),` для `,(0,c.jsx)(t.code,{children:`null`}),`/`,(0,c.jsx)(t.code,{children:`undefined`}),`, иначе `,(0,c.jsx)(t.code,{children:`String(value)`}),`. |
262
- | `,(0,c.jsx)(t.code,{children:`stripInnerSpaces(value)`}),` | Удаляет только обычные, неразрывные и узкие неразрывные пробелы внутри строки. |
263
- | `,(0,c.jsx)(t.code,{children:`stripLeadingZeros(value)`}),` | Для целых цифровых строк удаляет ведущие нули, оставляя один ноль; поддерживает минус. Нечисловая строка возвращается с обрезанными краями. |
264
- | `,(0,c.jsx)(t.code,{children:`startsWithIgnoringZeros(value, searchText)`}),` | Case-insensitive проверка префикса после удаления ведущих нулей у обеих строк. |
265
- | `,(0,c.jsx)(t.code,{children:`truncateText(value, maxLength)`}),` | Обрезает нормализованный текст и добавляет `,(0,c.jsx)(t.code,{children:`...`}),`; пустой/невалидный текст даёт `,(0,c.jsx)(t.code,{children:`undefined`}),`. |`]}),`
266
- `,(0,c.jsx)(t.h2,{id:`логические-значения-abap`,children:`Логические значения ABAP`}),`
267
- `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import { parseAbapBoolean, parseBoolean, toAbapBoolean } from "@ryuzaki13/react-foundation-lib/formatters";
268
-
269
- parseAbapBoolean("X"); // true
270
- parseBoolean("true"); // true
271
- toAbapBoolean(false); // " "
272
- `})}),`
273
- `,(0,c.jsxs)(t.p,{children:[`| API | Поведение |
274
- | ------------------------- | --------------------------------------------------------------------------------------------------------------- |
275
- | `,(0,c.jsx)(t.code,{children:`parseAbapBoolean(value)`}),` | Возвращает `,(0,c.jsx)(t.code,{children:`true`}),` только для строкового точного `,(0,c.jsx)(t.code,{children:`"X"`}),`; всё остальное — `,(0,c.jsx)(t.code,{children:`false`}),`. |
276
- | `,(0,c.jsx)(t.code,{children:`parseBoolean(value)`}),` | Для строк регистронезависимо принимает `,(0,c.jsx)(t.code,{children:`"true"`}),`, `,(0,c.jsx)(t.code,{children:`"x"`}),`, `,(0,c.jsx)(t.code,{children:`"1"`}),`; для остальных значений использует JS truthiness. |
277
- | `,(0,c.jsx)(t.code,{children:`toAbapBoolean(value)`}),` | Возвращает ABAP `,(0,c.jsx)(t.code,{children:`"X"`}),` или `,(0,c.jsx)(t.code,{children:`" "`}),`. Строка `,(0,c.jsx)(t.code,{children:`"0"`}),` — ложь; любая другая строка, включая `,(0,c.jsx)(t.code,{children:`""`}),`, — истина. |`]}),`
278
- `,(0,c.jsx)(t.h2,{id:`фио-телефон-и-ведущие-нули`,children:`ФИО, телефон и ведущие нули`}),`
279
- `,(0,c.jsx)(t.h3,{id:`фио-и-телефон`,children:`ФИО и телефон`}),`
280
- `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import { clearPhone, formatFullName, formatPhone, formatShortName } from "@ryuzaki13/react-foundation-lib/formatters";
281
-
282
- formatFullName(" иванов иван иванович "); // "Иванов Иван Иванович"
283
- formatShortName("иванов иван иванович"); // "Иванов И.И."
284
- formatPhone("8 (912) 345-67-89"); // "+7 (912) 345-67-89"
285
- `})}),`
286
- `,(0,c.jsxs)(t.p,{children:[`| API | Ограничения и fallback |
287
- | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
288
- | `,(0,c.jsx)(t.code,{children:`formatFullName(fullName)`}),` | Нормализует пробелы, нижний регистр и регистр первых трёх частей. Это presentation helper, а не валидатор ФИО; дополнительные части игнорируются. |
289
- | `,(0,c.jsx)(t.code,{children:`formatShortName(fullName)`}),` | Показывает фамилию и одну/две инициалы. Пустая строка даёт `,(0,c.jsx)(t.code,{children:`""`}),`. |
290
- | `,(0,c.jsx)(t.code,{children:`clearPhone(number)`}),` | Оставляет цифры, ограничивает ввод первыми 11 цифрами, приводит начальный `,(0,c.jsx)(t.code,{children:`7`}),`/`,(0,c.jsx)(t.code,{children:`8`}),` к `,(0,c.jsx)(t.code,{children:`+7`}),`. Предназначен для российских номеров. |
291
- | `,(0,c.jsx)(t.code,{children:`formatPhone(number)`}),` | Форматирует только полный нормализованный номер `,(0,c.jsx)(t.code,{children:`+7`}),` и 10 цифр. Если после очистки номер неполный, возвращает исходную строку без изменений. |`]}),`
292
- `,(0,c.jsx)(t.h3,{id:`числовые-идентификаторы`,children:`Числовые идентификаторы`}),`
293
- `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import { normalizeLeadingZeros, normalizeLeadingZerosStrict } from "@ryuzaki13/react-foundation-lib/formatters";
294
-
295
- normalizeLeadingZeros("0012", 5); // "00012"
296
- normalizeLeadingZerosStrict("0012", -1); // "12"
297
- normalizeLeadingZerosStrict("12,5", 4); // "0012,5"
298
- `})}),`
299
- `,(0,c.jsxs)(t.p,{children:[`| API | Поведение |
300
- | -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
301
- | `,(0,c.jsx)(t.code,{children:`normalizeLeadingZeros(value, fixed?)`}),` | Приводит конечное числовое значение через `,(0,c.jsx)(t.code,{children:`Number`}),` к строке; при `,(0,c.jsx)(t.code,{children:`fixed > 0`}),` дополняет целую часть нулями. Нечисловое/бесконечное значение возвращает как есть. Поэтому этот вариант может изменить строковое представление и тип результата. |
302
- | `,(0,c.jsx)(t.code,{children:`normalizeLeadingZerosStrict(value, fixed?)`}),` | Сохраняет тип `,(0,c.jsx)(t.code,{children:`T`}),`: при `,(0,c.jsx)(t.code,{children:`fixed`}),` отсутствующем, нулевом или не конечном — no-op; при `,(0,c.jsx)(t.code,{children:`fixed < 0`}),` удаляет нули в целой части строки, при `,(0,c.jsx)(t.code,{children:`fixed > 0`}),` дополняет. Не распознанная числовая строка возвращается без изменений. Для `,(0,c.jsx)(t.code,{children:`number`}),` ведущие нули представить невозможно, поэтому результат остаётся числом. |`]}),`
303
- `,(0,c.jsxs)(t.p,{children:[`Для пользовательского draft не вызывайте нормализацию во время ввода. Храните
304
- буквальное значение, а `,(0,c.jsx)(t.code,{children:`normalizeLeadingZerosStrict`}),` применяйте только на
305
- явной границе сохранения или восстановления, если это действительно часть
306
- контракта данных.`]})]})}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};
@@ -1,82 +0,0 @@
1
- import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-BOYfiRbQ.js";import{i as n,r}from"./react-qN2cStNd.js";import{l as i,m as a}from"./blocks-DFQ7gHL7.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};
@@ -1 +0,0 @@
1
- import{t as e}from"./iframe-BOYfiRbQ.js";e();