@ryuzaki13/react-foundation-ui 1.8.11 → 1.8.13

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 (281) hide show
  1. package/dist/chunks/defaultRenderers-u_Vep6Pj.js.map +1 -1
  2. package/dist/chunks/multi-select-DtmRtX6v.js.map +1 -1
  3. package/dist/chunks/select-MN6zDPKM.js.map +1 -1
  4. package/dist/chunks/useODataSelectBase-DR4PrY1j.js.map +1 -1
  5. package/dist/multi-select/model/useODataMultiSelect.d.ts +1 -1
  6. package/dist/multi-select/model/useODataMultiSelect.d.ts.map +1 -1
  7. package/dist/multi-select/ui/MultiSelect.d.ts +1 -1
  8. package/dist/multi-select/ui/MultiSelect.d.ts.map +1 -1
  9. package/dist/multi-select/ui/SerializableMultiSelect.d.ts.map +1 -1
  10. package/dist/multi-select/ui/defaultRenderers.d.ts +1 -1
  11. package/dist/multi-select/ui/defaultRenderers.d.ts.map +1 -1
  12. package/dist/select/model/useODataSelect.d.ts +1 -1
  13. package/dist/select/model/useODataSelect.d.ts.map +1 -1
  14. package/dist/select/model/useODataSelectBase.d.ts +1 -1
  15. package/dist/select/model/useODataSelectBase.d.ts.map +1 -1
  16. package/dist/tree-select/index.js.map +1 -1
  17. package/dist/tree-select/model/buildODataTreeNodes.d.ts +1 -1
  18. package/dist/tree-select/model/buildODataTreeNodes.d.ts.map +1 -1
  19. package/package.json +3 -3
  20. package/storybook-static/assets/{Badge-BojMuOws.js → Badge-BFhBl7yM.js} +1 -1
  21. package/storybook-static/assets/{Badge.stories-C9gJRuIO.js → Badge.stories-BEu55X4s.js} +1 -1
  22. package/storybook-static/assets/{BadgeList-dNEWI7-O.js → BadgeList-mqmnGtRR.js} +1 -1
  23. package/storybook-static/assets/{Button-Bbt3JzIY.js → Button-CESdnWrO.js} +1 -1
  24. package/storybook-static/assets/{Button-CrTHXWYk.js → Button-_YPAu9sd.js} +1 -1
  25. package/storybook-static/assets/{Button.stories-BaYXOBeF.js → Button.stories-B0Y_T17B.js} +1 -1
  26. package/storybook-static/assets/{CalendarView-Dp0zus1o.js → CalendarView-DLuO2Ywz.js} +1 -1
  27. package/storybook-static/assets/{CheckBox-BiK9yWNt.js → CheckBox-CGiNmAPT.js} +1 -1
  28. package/storybook-static/assets/{CheckBox-UzYHaD6S.js → CheckBox-l0pbBm9z.js} +1 -1
  29. package/storybook-static/assets/{CheckBox.stories-C2BOiWZj.js → CheckBox.stories-ROPAnqh8.js} +1 -1
  30. package/storybook-static/assets/{Color-6AOWCN3U-C5S4wUlD.js → Color-6AOWCN3U-kPaRN0HS.js} +1 -1
  31. package/storybook-static/assets/{ContextMenu-D9EZxb7d.js → ContextMenu-Bob4DtRn.js} +1 -1
  32. package/storybook-static/assets/{ContextMenu-BWQln_tb.js → ContextMenu-DxfUAeJS.js} +1 -1
  33. package/storybook-static/assets/{ContextMenu.stories-U38zPh9_.js → ContextMenu.stories-DCJmWy5n.js} +1 -1
  34. package/storybook-static/assets/{CustomOptionButton-COIOrxQn.js → CustomOptionButton-DuEz9CXt.js} +1 -1
  35. package/storybook-static/assets/DateInput-BQ8SoeLE.js +1 -0
  36. package/storybook-static/assets/{DateInput-C-entb-r.js → DateInput-DmNLD4Dz.js} +1 -1
  37. package/storybook-static/assets/{DateInput.stories-NmUXQLDU.js → DateInput.stories-sTpYf7Ob.js} +1 -1
  38. package/storybook-static/assets/{DateRangePresetSelect-BM1L1KOo.js → DateRangePresetSelect-DRq4eJ2n.js} +1 -1
  39. package/storybook-static/assets/{DateRangePresetSelect-CAJzxaq0.js → DateRangePresetSelect-fgJfLaLO.js} +1 -1
  40. package/storybook-static/assets/{DateRangePresetSelect.stories-CC47XLnD.js → DateRangePresetSelect.stories-ib7Qh_BB.js} +1 -1
  41. package/storybook-static/assets/{Detail-CDluXtts.js → Detail-CJniLn1R.js} +1 -1
  42. package/storybook-static/assets/{Detail.stories-DjniLC4n.js → Detail.stories-BXjdNaL-.js} +1 -1
  43. package/storybook-static/assets/{Dialog-bzRSgGU7.js → Dialog-D6a_qzr3.js} +1 -1
  44. package/storybook-static/assets/{Dialog-bw6cHUsz.js → Dialog-DOYnnXlU.js} +1 -1
  45. package/storybook-static/assets/{Dialog.stories-C6Rs6s_p.js → Dialog.stories-B1cZLRK3.js} +1 -1
  46. package/storybook-static/assets/{Disclosure-DelA6FsQ.js → Disclosure-Chh5o_0s.js} +1 -1
  47. package/storybook-static/assets/{Disclosure.stories-D7yUinyb.js → Disclosure.stories-Cvdvf7V8.js} +1 -1
  48. package/storybook-static/assets/{DisclosureGroup-DbK7mU_Q.js → DisclosureGroup-CRnQOgVj.js} +1 -1
  49. package/storybook-static/assets/{DocsRenderer-JROSPFPF-v3z0zVN1.js → DocsRenderer-JROSPFPF-BBiErkeC.js} +1 -1
  50. package/storybook-static/assets/{DropZone-CI3NW4AC.js → DropZone-Bm5gqdi9.js} +1 -1
  51. package/storybook-static/assets/{DropZone-Cyy-ttEO.js → DropZone-C4L7JAlq.js} +1 -1
  52. package/storybook-static/assets/{DropZone.stories-S0HSpGTB.js → DropZone.stories-BhA9q8Qv.js} +1 -1
  53. package/storybook-static/assets/{DropdownMenu-Ct1bSZsE.js → DropdownMenu-DtZNSUHF.js} +1 -1
  54. package/storybook-static/assets/{ExpandableActionPanel-Oj3xlasj.js → ExpandableActionPanel-0ugXlJy_.js} +1 -1
  55. package/storybook-static/assets/{ExpandableActionPanel.stories-Ch7CLkpR.js → ExpandableActionPanel.stories-CLgMlA9k.js} +1 -1
  56. package/storybook-static/assets/{Flex-UiFm8Tkc.js → Flex-CJlia-8f.js} +1 -1
  57. package/storybook-static/assets/{Flex.stories-CaDiVlBD.js → Flex.stories-DCvfi1EY.js} +1 -1
  58. package/storybook-static/assets/{FloatingPopover-CTYV9W7T.js → FloatingPopover-CsnfPiwV.js} +1 -1
  59. package/storybook-static/assets/{FormattedTableCell-D-ysSR3p.js → FormattedTableCell-Dz5xWVYO.js} +1 -1
  60. package/storybook-static/assets/{Grid-CigBXPe2.js → Grid-C-KwTRAM.js} +1 -1
  61. package/storybook-static/assets/{Grid.stories-ay3z9DQZ.js → Grid.stories-CzbqknNR.js} +1 -1
  62. package/storybook-static/assets/{ImageCropper.stories-Dkce_ugb.js → ImageCropper.stories-DaE-gm-b.js} +1 -1
  63. package/storybook-static/assets/{ImageRenderer-C9_EmGBW.js → ImageRenderer-IsNCXCrZ.js} +1 -1
  64. package/storybook-static/assets/{ImageRenderer.stories-C7bXaNBI.js → ImageRenderer.stories-BbsjUEfJ.js} +1 -1
  65. package/storybook-static/assets/{ImageView.stories-D-ZzGlk8.js → ImageView.stories-DY0UITYz.js} +1 -1
  66. package/storybook-static/assets/{ImageViewer.stories-ItcRfxyy.js → ImageViewer.stories--9q9b9nv.js} +2 -2
  67. package/storybook-static/assets/{ImageViewerRuntime-eaupID36.js → ImageViewerRuntime-CNEH3XGN.js} +1 -1
  68. package/storybook-static/assets/{Input-op4j7Beh.js → Input-DLubbE7P.js} +1 -1
  69. package/storybook-static/assets/{Input-BUDNR96c.js → Input-Dw2JblYt.js} +1 -1
  70. package/storybook-static/assets/{Input.stories-DwulvJIg.js → Input.stories-DQeyDULG.js} +1 -1
  71. package/storybook-static/assets/{InputDateTime-B_cxOp6k.js → InputDateTime-BRzl8Vrt.js} +1 -1
  72. package/storybook-static/assets/{InputDateTime.stories-BueLF4HC.js → InputDateTime.stories-BJTj5v8J.js} +1 -1
  73. package/storybook-static/assets/{InputFile-DSg7sugm.js → InputFile-B8UroZji.js} +1 -1
  74. package/storybook-static/assets/{InputFile-C8z6TPc1.js → InputFile-DPftxjGw.js} +1 -1
  75. package/storybook-static/assets/{InputFile.stories-C6XSbIua.js → InputFile.stories-C7yyqHqc.js} +1 -1
  76. package/storybook-static/assets/{InputFiles-DoatLq3q.js → InputFiles-BQVXHVLy.js} +1 -1
  77. package/storybook-static/assets/{InputFiles-DeZ84Uu_.js → InputFiles-UD_9S7-N.js} +1 -1
  78. package/storybook-static/assets/{InputFiles.stories-BMbE8SJU.js → InputFiles.stories-DjjJS5pZ.js} +1 -1
  79. package/storybook-static/assets/{InputFilesList-CsfDDqaJ.js → InputFilesList-BNjijD3Y.js} +1 -1
  80. package/storybook-static/assets/{InputImage-yJSq98EH.js → InputImage-C-pHr-Sx.js} +1 -1
  81. package/storybook-static/assets/{InputImage-D_YnB2Tw.js → InputImage-DbcbqIhY.js} +1 -1
  82. package/storybook-static/assets/{InputImage.stories-nivUG307.js → InputImage.stories-D-TC9r9t.js} +1 -1
  83. package/storybook-static/assets/{InteractiveComponents-IPkC_Rkg.js → InteractiveComponents-DbhWgM9y.js} +1 -1
  84. package/storybook-static/assets/{InteractiveComponents.stories-D4VzVKZJ.js → InteractiveComponents.stories-B4mkVSea.js} +1 -1
  85. package/storybook-static/assets/{LayoutPicker-ZHkMi-LM.js → LayoutPicker-BoV_E3qt.js} +1 -1
  86. package/storybook-static/assets/{LayoutPicker-aMzPN5Do.js → LayoutPicker-w1EsRpYP.js} +1 -1
  87. package/storybook-static/assets/{LayoutPicker.stories-DAzpzxn5.js → LayoutPicker.stories--ChGnGxf.js} +1 -1
  88. package/storybook-static/assets/{Listbox-CR5nXC9J.js → Listbox-CzZRsr6a.js} +1 -1
  89. package/storybook-static/assets/{Listbox-BmfQOnrb.js → Listbox-qZdTi11b.js} +1 -1
  90. package/storybook-static/assets/{Listbox.stories-CeOpsKxB.js → Listbox.stories-C9k_1850.js} +1 -1
  91. package/storybook-static/assets/{Modal-BStp52Zo.js → Modal-DCpul8QM.js} +1 -1
  92. package/storybook-static/assets/{Modal.stories-CwGm5GYE.js → Modal.stories-Cy0Xd4LF.js} +1 -1
  93. package/storybook-static/assets/{ModalManagerProvider-B5uUXWF9.js → ModalManagerProvider-BrPVMcHV.js} +1 -1
  94. package/storybook-static/assets/{MultiSelect-308npb27.js → MultiSelect-BEQdl-F4.js} +1 -1
  95. package/storybook-static/assets/{MultiSelect-BDs02MZh.js → MultiSelect-Dy4X94E2.js} +1 -1
  96. package/storybook-static/assets/{MultiSelect.stories-DRi_iTp4.js → MultiSelect.stories-FuzejJmz.js} +1 -1
  97. package/storybook-static/assets/{NoData-ovaQEE9W.js → NoData-BsQ9EfkA.js} +1 -1
  98. package/storybook-static/assets/{NotificationsHost-BpeMWhLY.js → NotificationsHost-BSrODvw7.js} +1 -1
  99. package/storybook-static/assets/NotificationsHost.stories-DeiWspcY.js +29 -0
  100. package/storybook-static/assets/{ODataMultiSelect-qlft9L9L.js → ODataMultiSelect-BEz9gcd2.js} +1 -1
  101. package/storybook-static/assets/{ODataMultiSelect.stories-CMPIoPiy.js → ODataMultiSelect.stories-BwMgAkbE.js} +2 -2
  102. package/storybook-static/assets/{ODataSelect-DKBQArAK.js → ODataSelect-BgC7GHOv.js} +1 -1
  103. package/storybook-static/assets/{ODataSelect.stories-DxYIhtwe.js → ODataSelect.stories-DEIRAB-s.js} +2 -2
  104. package/storybook-static/assets/{ODataTreeMultiSelect-DAt6THP3.js → ODataTreeMultiSelect-WyZZuX0_.js} +1 -1
  105. package/storybook-static/assets/{ODataTreeMultiSelect.stories-CBNJP0mP.js → ODataTreeMultiSelect.stories-B6cxuagy.js} +1 -1
  106. package/storybook-static/assets/{ODataTreeSelect-Bzzt4CQC.js → ODataTreeSelect-OJGi3-S7.js} +1 -1
  107. package/storybook-static/assets/{ODataTreeSelect.stories-CWVvuqOt.js → ODataTreeSelect.stories-wGRGErCH.js} +1 -1
  108. package/storybook-static/assets/{OneStepScroller-BY5lz8qi.js → OneStepScroller-DycQ3RuL.js} +1 -1
  109. package/storybook-static/assets/{Option-Rw8xwrPg.js → Option-taxbFfjo.js} +1 -1
  110. package/storybook-static/assets/{OptionButton-Br48w_Zg.js → OptionButton-Q0QaPCII.js} +1 -1
  111. package/storybook-static/assets/{PeriodSelect-8-wpXz6w.js → PeriodSelect-DUJ2nF3F.js} +1 -1
  112. package/storybook-static/assets/{PeriodSelect-DxSRwKw-.js → PeriodSelect-DnM7x-uC.js} +1 -1
  113. package/storybook-static/assets/{PeriodSelect.stories-B-qgUzlS.js → PeriodSelect.stories-Db0bqe3J.js} +1 -1
  114. package/storybook-static/assets/{PickerTriggerActions-C5xmysFh.js → PickerTriggerActions-CGJd7xmR.js} +1 -1
  115. package/storybook-static/assets/{Popover-NJwt_vZZ.js → Popover-B6oidz5p.js} +1 -1
  116. package/storybook-static/assets/{Popover-Ds8PUigp.js → Popover-Tbhf8T81.js} +1 -1
  117. package/storybook-static/assets/{Popover.stories-CUOFA_Xf.js → Popover.stories-DE1LxZvv.js} +1 -1
  118. package/storybook-static/assets/{PresetRangeDateInput-DyOpbkON.js → PresetRangeDateInput-CQ5FfmrL.js} +1 -1
  119. package/storybook-static/assets/{PresetRangeDateInput-Xk0bOy3S.js → PresetRangeDateInput-DfgoR0My.js} +1 -1
  120. package/storybook-static/assets/{PresetRangeDateInput.stories-CwjUlXj0.js → PresetRangeDateInput.stories-CgoYAYBG.js} +1 -1
  121. package/storybook-static/assets/{PresetSelect-Ddmr0niY.js → PresetSelect-BPtAknAr.js} +1 -1
  122. package/storybook-static/assets/README--TpGcM95.js +110 -0
  123. package/storybook-static/assets/{README-MzcO5Z_P.js → README-4iBHWAP5.js} +1 -1
  124. package/storybook-static/assets/README-98KIgy5G.js +75 -0
  125. package/storybook-static/assets/README-B6II8p0W.js +154 -0
  126. package/storybook-static/assets/{README-CkWglKbS.js → README-B6vU5_7I.js} +1 -1
  127. package/storybook-static/assets/README-BFJVjjZR.js +325 -0
  128. package/storybook-static/assets/README-BIT4HlFP.js +441 -0
  129. package/storybook-static/assets/{README-DqQDgJN-.js → README-BK6Epio1.js} +1 -1
  130. package/storybook-static/assets/{README-DRnlD7y8.js → README-BRlPB5_k.js} +1 -1
  131. package/storybook-static/assets/README-BTFpEaXG.js +64 -0
  132. package/storybook-static/assets/README-BWhXgC_o.js +226 -0
  133. package/storybook-static/assets/README-BbNHvOoR.js +101 -0
  134. package/storybook-static/assets/README-BbunUo8b.js +118 -0
  135. package/storybook-static/assets/README-BmYpfZKr.js +1844 -0
  136. package/storybook-static/assets/README-Bu5uvhAT.js +230 -0
  137. package/storybook-static/assets/README-Bx6fvSBE.js +1282 -0
  138. package/storybook-static/assets/README-Bx6gIGiA.js +69 -0
  139. package/storybook-static/assets/README-ByhxsX44.js +324 -0
  140. package/storybook-static/assets/README-Byi1FFpw.js +98 -0
  141. package/storybook-static/assets/README-C3Is3a3B.js +208 -0
  142. package/storybook-static/assets/{README-C0BwTe5N.js → README-C6prwAXw.js} +1 -1
  143. package/storybook-static/assets/{README-BzVni2ve.js → README-C9S83J_G.js} +1 -1
  144. package/storybook-static/assets/{README-BHw6MVjD.js → README-CGgxP5Zo.js} +1 -1
  145. package/storybook-static/assets/README-CJ2ZVG2U.js +2124 -0
  146. package/storybook-static/assets/README-CNGCAm5d.js +95 -0
  147. package/storybook-static/assets/README-Cb_q420B.js +90 -0
  148. package/storybook-static/assets/README-CtIDPNJ3.js +186 -0
  149. package/storybook-static/assets/README-CzO3Dchr.js +64 -0
  150. package/storybook-static/assets/README-D0rzQthv.js +264 -0
  151. package/storybook-static/assets/README-DEQu7djz.js +1704 -0
  152. package/storybook-static/assets/README-DFihT_sm.js +296 -0
  153. package/storybook-static/assets/{README-CTIBG4zH.js → README-DMiWsyv_.js} +1 -1
  154. package/storybook-static/assets/README-DOx8lXXk.js +82 -0
  155. package/storybook-static/assets/{README-DzTc6XmY.js → README-DPhDjr43.js} +1 -1
  156. package/storybook-static/assets/{README-Dki94Nf2.js → README-D_NqWPa9.js} +1 -1
  157. package/storybook-static/assets/README-DhJ5Rb1w.js +355 -0
  158. package/storybook-static/assets/README-DlwhWCvQ.js +1146 -0
  159. package/storybook-static/assets/README-Dxi73a2Q.js +740 -0
  160. package/storybook-static/assets/README-Dycov6NP.js +583 -0
  161. package/storybook-static/assets/README-GTBkSG4_.js +3591 -0
  162. package/storybook-static/assets/README-Gfd9tLTw.js +672 -0
  163. package/storybook-static/assets/{README-B4zYJg6u.js → README-Kfawetke.js} +1 -1
  164. package/storybook-static/assets/{README-BzVHwvgo.js → README-UDBM7ZMT.js} +1 -1
  165. package/storybook-static/assets/{README-D-XjRtAE.js → README-VTWQxLm_.js} +1 -1
  166. package/storybook-static/assets/README-YHNWrTZv.js +400 -0
  167. package/storybook-static/assets/README-_0Otw0eD.js +448 -0
  168. package/storybook-static/assets/README-aw2Xu9xu.js +158 -0
  169. package/storybook-static/assets/README-eg1emlll.js +192 -0
  170. package/storybook-static/assets/README-iqQHdhZ4.js +416 -0
  171. package/storybook-static/assets/{README-BdPlV5nA.js → README-llxZAtCj.js} +1 -1
  172. package/storybook-static/assets/README-wFnEIGl4.js +95 -0
  173. package/storybook-static/assets/{README-Dx3cpFMr.js → README-webB1yH0.js} +1 -1
  174. package/storybook-static/assets/README-wtreGRCe.js +208 -0
  175. package/storybook-static/assets/{RadioButton-DWbkCY8u.js → RadioButton-CNOLDk_o.js} +1 -1
  176. package/storybook-static/assets/{RadioButton-oSvQ-gQh.js → RadioButton-Ce05_q7s.js} +1 -1
  177. package/storybook-static/assets/{RadioButton.stories-GNQ9XJZT.js → RadioButton.stories-CPd4lTl0.js} +1 -1
  178. package/storybook-static/assets/{RadioGroup-CvXjGXcV.js → RadioGroup-BtfD5Szd.js} +1 -1
  179. package/storybook-static/assets/{RadioGroup-eBYggurL.js → RadioGroup-Ccm7G-dv.js} +1 -1
  180. package/storybook-static/assets/{RadioGroup.stories-C77j_cPv.js → RadioGroup.stories-D-RRPHwi.js} +1 -1
  181. package/storybook-static/assets/{Scrollable-De6SdhI3.js → Scrollable-DvdBIeig.js} +1 -1
  182. package/storybook-static/assets/{Select-DQMoVjn4.js → Select-8PV9PBKF.js} +1 -1
  183. package/storybook-static/assets/{Select-Bwc0bEpt.js → Select-G04B41FM.js} +1 -1
  184. package/storybook-static/assets/{Select.stories-BSIJKJnM.js → Select.stories-Cf6CBhV8.js} +1 -1
  185. package/storybook-static/assets/{SerializableSelect-B73irNFR.js → SerializableSelect-CdQdHIVp.js} +1 -1
  186. package/storybook-static/assets/{SerializableSelect.stories-Z9q6g5v2.js → SerializableSelect.stories-0AKUGpbS.js} +1 -1
  187. package/storybook-static/assets/{SingleDateTimeInput-Dq9LcjnS.js → SingleDateTimeInput-DWT1ORhL.js} +1 -1
  188. package/storybook-static/assets/{SingleDateTimeInput-BHl6srqA.js → SingleDateTimeInput-DattLt6w.js} +1 -1
  189. package/storybook-static/assets/SingleDateTimeInput.stories-BLJV3jzV.js +48 -0
  190. package/storybook-static/assets/{Slider-CvM0N_kc.js → Slider-DKEI4cDd.js} +1 -1
  191. package/storybook-static/assets/{Slider-BiyKexKa.js → Slider-Dci-mJt_.js} +1 -1
  192. package/storybook-static/assets/{Slider.stories-CdHAMDmY.js → Slider.stories-Dp7oQueF.js} +1 -1
  193. package/storybook-static/assets/{SliderInput-DqHotbhB.js → SliderInput-BGPQmlgY.js} +1 -1
  194. package/storybook-static/assets/{SliderInput-Bx_oHUCV.js → SliderInput-BhjqGOKt.js} +1 -1
  195. package/storybook-static/assets/{SliderInput.stories-R5yDhghM.js → SliderInput.stories-DXNhRU3X.js} +1 -1
  196. package/storybook-static/assets/{Sortable-D7pjTHO0.js → Sortable-CMd9l1Gd.js} +1 -1
  197. package/storybook-static/assets/{Sortable.stories-CVLG6pSH.js → Sortable.stories-BN1cFEFJ.js} +1 -1
  198. package/storybook-static/assets/{Splitter-B1Du6XI2.js → Splitter-GL65TlI9.js} +1 -1
  199. package/storybook-static/assets/{Splitter.stories-D-FRLMCc.js → Splitter.stories-q5PlI6rB.js} +1 -1
  200. package/storybook-static/assets/{StateSelect-zl-yZibY.js → StateSelect-Byik5-iZ.js} +1 -1
  201. package/storybook-static/assets/{StateSelect-BJdUEUBc.js → StateSelect-CT0JF2V6.js} +1 -1
  202. package/storybook-static/assets/{StateSelect.stories-DgidR5zR.js → StateSelect.stories-pPEPmgnN.js} +1 -1
  203. package/storybook-static/assets/{StringToggle.stories-IucGrtIi.js → StringToggle.stories-BQlFmCE7.js} +1 -1
  204. package/storybook-static/assets/{Switch-BJrn2lIN.js → Switch--xGPiYk-.js} +1 -1
  205. package/storybook-static/assets/{Switch-5dCshvVo.js → Switch-DhaLI9CG.js} +1 -1
  206. package/storybook-static/assets/{Switch.stories-Dp_l3_JL.js → Switch.stories-5DisgIyj.js} +1 -1
  207. package/storybook-static/assets/{Table-BFAEcUde.js → Table-Bf6MicdG.js} +1 -1
  208. package/storybook-static/assets/{Table.stories-CohejRQv.js → Table.stories-CS7rQgj9.js} +2 -2
  209. package/storybook-static/assets/{Tabs-CI32QiHf.js → Tabs-B4y4y8Ap.js} +1 -1
  210. package/storybook-static/assets/{Tabs.stories-Cr9d9ipA.js → Tabs.stories-C0SpdGkh.js} +1 -1
  211. package/storybook-static/assets/{TabsBox-BlDOUDMF.js → TabsBox-C5LLLhnj.js} +1 -1
  212. package/storybook-static/assets/{TagInput-YZ7eSv8W.js → TagInput-D4BpuCoH.js} +1 -1
  213. package/storybook-static/assets/{TagInput.stories-DrOvsiI5.js → TagInput.stories-rn2wtZP_.js} +1 -1
  214. package/storybook-static/assets/{Text-DK4jN26J.js → Text-BhBt9e7C.js} +1 -1
  215. package/storybook-static/assets/{Textarea-CFh5f_lC.js → Textarea-B-Hz7ujq.js} +1 -1
  216. package/storybook-static/assets/{Textarea-DxPuWBZj.js → Textarea-BHHxY5sd.js} +1 -1
  217. package/storybook-static/assets/{Textarea.stories-CUeOGKYc.js → Textarea.stories-CZ2kWz20.js} +1 -1
  218. package/storybook-static/assets/{TimePanel-BUhFtwlb.js → TimePanel-Cg8fgFsn.js} +1 -1
  219. package/storybook-static/assets/{TimePanel.stories-CpXpMBDN.js → TimePanel.stories-BxdwtK2e.js} +1 -1
  220. package/storybook-static/assets/{Toggle-l2AvDbRn.js → Toggle-BWwfk9fi.js} +1 -1
  221. package/storybook-static/assets/{Toggle-BtApzBNH.js → Toggle-Ce9rbjBc.js} +1 -1
  222. package/storybook-static/assets/{Toggle.stories-Ca8otmAa.js → Toggle.stories-0fzcmzKy.js} +1 -1
  223. package/storybook-static/assets/{TreeMultiSelect-C9QDV63L.js → TreeMultiSelect-B06Y0lIc.js} +1 -1
  224. package/storybook-static/assets/{TreeMultiSelect-nXC4ZB5b.js → TreeMultiSelect-CrAdR_jM.js} +1 -1
  225. package/storybook-static/assets/{TreeMultiSelect.stories-6STRGJbF.js → TreeMultiSelect.stories-CAVoj56E.js} +1 -1
  226. package/storybook-static/assets/{TreePickerBase-Cq7fSw3x.js → TreePickerBase-qU2xPlar.js} +1 -1
  227. package/storybook-static/assets/{TreeSelect-CITef9rp.js → TreeSelect-BIHydJFy.js} +1 -1
  228. package/storybook-static/assets/{TreeSelect-rMNyu_KT.js → TreeSelect-BKnWu0C7.js} +1 -1
  229. package/storybook-static/assets/{TreeSelect.stories-B-Emz9yW.js → TreeSelect.stories-Dp_8ybAf.js} +1 -1
  230. package/storybook-static/assets/{TreeTable-CLiP0td3.js → TreeTable-pVXjU9dG.js} +1 -1
  231. package/storybook-static/assets/{TreeTable.stories-DJb9qt8k.js → TreeTable.stories-CV_8Ui6R.js} +2 -2
  232. package/storybook-static/assets/{blocks-DndFRxxW.js → blocks-BY40djCc.js} +3 -3
  233. package/storybook-static/assets/{check-CLkTJVXe.js → check-CVkPTDzp.js} +1 -1
  234. package/storybook-static/assets/{chevron-down-miCejSEn.js → chevron-down-BtNO4Vhe.js} +1 -1
  235. package/storybook-static/assets/{chevron-left-DhQIPej2.js → chevron-left-kceSK3sZ.js} +1 -1
  236. package/storybook-static/assets/{chevron-right-DfBBx-fr.js → chevron-right-BA_LO2El.js} +1 -1
  237. package/storybook-static/assets/{chunk-W22LQPXL-IdwKKJUw.js → chunk-W22LQPXL-yJiFPv6e.js} +1 -1
  238. package/storybook-static/assets/{circle-alert-DOmVf8am.js → circle-alert-B2m4a1zz.js} +1 -1
  239. package/storybook-static/assets/{circle-check-e7eSQ2VD.js → circle-check-Cfjhotlm.js} +1 -1
  240. package/storybook-static/assets/{components-Bm4Cw8Ap.js → components-D6yV8PLX.js} +3 -3
  241. package/storybook-static/assets/{contextMenu-DpIKeJju.js → contextMenu-B0pQBIW0.js} +1 -1
  242. package/storybook-static/assets/{defaultRenderers-m21aWJXz.js → defaultRenderers-DfmnIuod.js} +1 -1
  243. package/storybook-static/assets/{download-eAKjms6q.js → download-Lba8elK9.js} +1 -1
  244. package/storybook-static/assets/{floating-ui.react-DmilONq6.js → floating-ui.react-BFNvfMpU.js} +1 -1
  245. package/storybook-static/assets/formatters-D33Uh3si-CxrG0jsB.js +1 -0
  246. package/storybook-static/assets/foundationApi-DZhnQ2cC.js +59 -0
  247. package/storybook-static/assets/foundationLib-CoVTo22U.js +30 -0
  248. package/storybook-static/assets/{hooks-RI5_2AXI.js → hooks-Cc6eXN6U.js} +1 -1
  249. package/storybook-static/assets/iframe-BXM-JBuH.js +1 -0
  250. package/storybook-static/assets/{iframe-Sr0umHM6.js → iframe-o7sH2IXC.js} +4 -4
  251. package/storybook-static/assets/{info-DhJTzwcL.js → info-BpsVP_dM.js} +1 -1
  252. package/storybook-static/assets/odata-CXsbxsRY.js +1 -0
  253. package/storybook-static/assets/odata-service-CWkHASdw-DlmSiioz.js +3 -0
  254. package/storybook-static/assets/{odataStoryFixtures-lgnWIUp7.js → odataStoryFixtures-Dj_bzRqh.js} +1 -1
  255. package/storybook-static/assets/{react-YFbUKK0m.js → react-DeJ0JTHb.js} +1 -1
  256. package/storybook-static/assets/{refresh-cw-C7WnxX9M.js → refresh-cw-BvGyjEXe.js} +1 -1
  257. package/storybook-static/assets/{settings-2-0NVvyKQl.js → settings-2-BdXxnHos.js} +1 -1
  258. package/storybook-static/assets/{sortable-DDGG-Zfs.js → sortable-XkyN-9r5.js} +1 -1
  259. package/storybook-static/assets/{syntaxhighlighter-QEQV7K2Y-CxWm8nc8.js → syntaxhighlighter-QEQV7K2Y-Cafn3LV1.js} +1 -1
  260. package/storybook-static/assets/{trash-2-BnceCuhg.js → trash-2-uPH9-fND.js} +1 -1
  261. package/storybook-static/assets/{triangle-alert-MPi3GVgt.js → triangle-alert-tT01vSMw.js} +1 -1
  262. package/storybook-static/assets/{useODataSelectBase-hmjK6chS.js → useODataSelectBase-B2LlOwPZ.js} +1 -1
  263. package/storybook-static/assets/useODataTreeData-CU7Rqcb9.js +1 -0
  264. package/storybook-static/assets/{usePickerQuery-CtsGhieD.js → usePickerQuery-D8GHQ6KR.js} +1 -1
  265. package/storybook-static/assets/{usePickerTriggerController-EaI8W2G0.js → usePickerTriggerController-CcK1jmDy.js} +1 -1
  266. package/storybook-static/assets/{x-CqPSvWfo.js → x-BlAURbAH.js} +1 -1
  267. package/storybook-static/iframe.html +2 -2
  268. package/storybook-static/index.json +1 -1
  269. package/storybook-static/project.json +1 -1
  270. package/storybook-static/assets/DateInput-05Iy69_a.js +0 -1
  271. package/storybook-static/assets/NotificationsHost.stories-CgbFboVD.js +0 -29
  272. package/storybook-static/assets/SingleDateTimeInput.stories-C2RuBRAF.js +0 -48
  273. package/storybook-static/assets/async-SjiCjIjO.js +0 -625
  274. package/storybook-static/assets/formatters-CBgrBeSA-CqB1pZxS.js +0 -1
  275. package/storybook-static/assets/foundationLib-DRrox3tN.js +0 -25
  276. package/storybook-static/assets/iframe-DQo-3eW2.js +0 -1
  277. package/storybook-static/assets/odata-DhISMZkE.js +0 -1
  278. package/storybook-static/assets/odata-service-B6TxBSLm-Bq8Ya67E.js +0 -3
  279. package/storybook-static/assets/odataFetchFn-Dv6Xi5CI.js +0 -763
  280. package/storybook-static/assets/persisted-CUFiw53N.js +0 -600
  281. package/storybook-static/assets/useODataTreeData-CKuavbWc.js +0 -1
@@ -0,0 +1,264 @@
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-o7sH2IXC.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{l as i,m as a}from"./blocks-BY40djCc.js";function o(e){let t={code:`code`,h1:`h1`,h2:`h2`,h3:`h3`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,strong:`strong`,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/Infrastructure/PWA`}),`
2
+ `,(0,c.jsx)(t.h1,{id:`pwa`,children:`PWA`}),`
3
+ `,(0,c.jsx)(t.p,{children:`Модуль PWA состоит из двух публичных входов с разной ответственностью:`}),`
4
+ `,(0,c.jsxs)(t.table,{children:[(0,c.jsx)(t.thead,{children:(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.th,{children:`Import path`}),(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:`@ryuzaki13/react-foundation-lib/pwa`})}),(0,c.jsx)(t.td,{children:`React-hook обновления Service Worker и все функции cache policy`})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`@ryuzaki13/react-foundation-lib/pwa/sw-cache-policy`})}),(0,c.jsxs)(t.td,{children:[`Только чистый parser/builder политики `,(0,c.jsx)(t.code,{children:`x-sw-cache`}),`, без React update-flow`]})]})]})]}),`
5
+ `,(0,c.jsxs)(t.p,{children:[`Используйте точный subpath. Внутренний файл `,(0,c.jsx)(t.code,{children:`serviceWorker`}),` не является самостоятельным публичным export, даже если отдельные функции используются самим hook.`]}),`
6
+ `,(0,c.jsx)(t.h2,{id:`установка`,children:`Установка`}),`
7
+ `,(0,c.jsxs)(t.p,{children:[`Для `,(0,c.jsx)(t.code,{children:`useServiceWorkerUpdate`}),` нужен React. Cache policy не имеет React-зависимости.`]}),`
8
+ `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-bash`,children:`npm install @ryuzaki13/react-foundation-lib react
9
+ `})}),`
10
+ `,(0,c.jsx)(t.h2,{id:`часть-1-обновление-service-worker`,children:`Часть 1. Обновление Service Worker`}),`
11
+ `,(0,c.jsx)(t.h3,{id:`задача-hook`,children:`Задача hook`}),`
12
+ `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import { useServiceWorkerUpdate } from "@ryuzaki13/react-foundation-lib/pwa";
13
+ `})}),`
14
+ `,(0,c.jsx)(t.p,{children:`Hook:`}),`
15
+ `,(0,c.jsxs)(t.ul,{children:[`
16
+ `,(0,c.jsx)(t.li,{children:`регистрирует Service Worker в production;`}),`
17
+ `,(0,c.jsx)(t.li,{children:`проверяет обновление сразу после запуска;`}),`
18
+ `,(0,c.jsx)(t.li,{children:`затем повторяет проверку каждые 5 минут;`}),`
19
+ `,(0,c.jsx)(t.li,{children:`автоматически применяет накопившееся обновление вскоре после обычного открытия или reload;`}),`
20
+ `,(0,c.jsx)(t.li,{children:`для обновления, найденного во время активной сессии, сообщает UI о доступной версии;`}),`
21
+ `,(0,c.jsx)(t.li,{children:`очищает interval, startup timeout и подписку при размонтировании.`}),`
22
+ `]}),`
23
+ `,(0,c.jsx)(t.h3,{id:`быстрый-старт`,children:`Быстрый старт`}),`
24
+ `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-tsx`,children:`import { useServiceWorkerUpdate } from "@ryuzaki13/react-foundation-lib/pwa";
25
+
26
+ export function ServiceWorkerUpdateBanner() {
27
+ const { hasUpdate, applyUpdate, dismiss } = useServiceWorkerUpdate();
28
+
29
+ if (!hasUpdate) {
30
+ return null;
31
+ }
32
+
33
+ return (
34
+ <aside role="status" aria-live="polite">
35
+ <p>Доступна новая версия приложения.</p>
36
+ <button type="button" onClick={applyUpdate}>
37
+ Обновить
38
+ </button>
39
+ <button type="button" onClick={dismiss}>
40
+ Позже
41
+ </button>
42
+ </aside>
43
+ );
44
+ }
45
+ `})}),`
46
+ `,(0,c.jsx)(t.p,{children:`Разместите этот компонент один раз в корневом client shell приложения. Несколько экземпляров создадут несколько периодических проверок.`}),`
47
+ `,(0,c.jsx)(t.h3,{id:`возвращаемое-значение`,children:`Возвращаемое значение`}),`
48
+ `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`const {
49
+ hasUpdate, // boolean
50
+ applyUpdate, // () => boolean
51
+ dismiss // () => void
52
+ } = useServiceWorkerUpdate();
53
+ `})}),`
54
+ `,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`hasUpdate`}),` становится `,(0,c.jsx)(t.code,{children:`true`}),`, когда найден registration с `,(0,c.jsx)(t.code,{children:`waiting`}),` worker.`]}),`
55
+ `,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`applyUpdate()`}),`:`]}),`
56
+ `,(0,c.jsxs)(t.ol,{children:[`
57
+ `,(0,c.jsxs)(t.li,{children:[`отправляет waiting worker сообщение `,(0,c.jsx)(t.code,{children:`{ type: "SKIP_WAITING" }`}),`;`]}),`
58
+ `,(0,c.jsxs)(t.li,{children:[`запоминает reload в `,(0,c.jsx)(t.code,{children:`sessionStorage`}),`;`]}),`
59
+ `,(0,c.jsx)(t.li,{children:`ожидает смену controller и перезагружает страницу;`}),`
60
+ `,(0,c.jsxs)(t.li,{children:[`если другой клиент уже активировал worker и `,(0,c.jsx)(t.code,{children:`waiting`}),` исчез, выполняет fallback reload.`]}),`
61
+ `]}),`
62
+ `,(0,c.jsxs)(t.p,{children:[`Возвращается `,(0,c.jsx)(t.code,{children:`true`}),`, если применение или fallback reload запущены, иначе `,(0,c.jsx)(t.code,{children:`false`}),`.`]}),`
63
+ `,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`dismiss()`}),` только скрывает текущий баннер. Он не удаляет waiting worker, не отменяет обновление и не запрещает следующей проверке снова показать баннер.`]}),`
64
+ `,(0,c.jsx)(t.h2,{id:`требования-к-service-worker-приложения`,children:`Требования к Service Worker приложения`}),`
65
+ `,(0,c.jsx)(t.p,{children:`Библиотека управляет клиентской стороной, но сам файл worker принадлежит приложению. Для полного update-flow он должен выполнять два контракта.`}),`
66
+ `,(0,c.jsxs)(t.h3,{id:`обработать-skip_waiting`,children:[`Обработать `,(0,c.jsx)(t.code,{children:`SKIP_WAITING`})]}),`
67
+ `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`self.addEventListener("message", (event) => {
68
+ if (event.data?.type === "SKIP_WAITING") {
69
+ void self.skipWaiting();
70
+ }
71
+ });
72
+ `})}),`
73
+ `,(0,c.jsx)(t.p,{children:`Без этого нажатие «Обновить» не активирует ожидающий worker немедленно.`}),`
74
+ `,(0,c.jsx)(t.h3,{id:`сообщить-вкладкам-об-активации`,children:`Сообщить вкладкам об активации`}),`
75
+ `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`self.addEventListener("activate", (event) => {
76
+ event.waitUntil(
77
+ (async () => {
78
+ await self.clients.claim();
79
+ const clients = await self.clients.matchAll({ type: "window" });
80
+
81
+ for (const client of clients) {
82
+ client.postMessage({ type: "SW_ACTIVATED_BY_CLIENT" });
83
+ }
84
+ })()
85
+ );
86
+ });
87
+ `})}),`
88
+ `,(0,c.jsxs)(t.p,{children:[`Это сообщение помогает синхронно перезагрузить другие открытые вкладки. Конкретная стратегия `,(0,c.jsx)(t.code,{children:`claim`}),` и рассылки должна соответствовать архитектуре worker приложения.`]}),`
89
+ `,(0,c.jsx)(t.h2,{id:`compile-time-конфигурация`,children:`Compile-time конфигурация`}),`
90
+ `,(0,c.jsx)(t.p,{children:`Потребитель обязан определить при сборке:`}),`
91
+ `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`declare const __DEV__: boolean;
92
+ declare const __SERVICE_WORKER_SCOPE__: string;
93
+ declare const __SERVICE_WORKER_URL__: string;
94
+ declare const __SERVICE_WORKER_UPDATE_RELOAD_COUNT_KEY__: string;
95
+ declare const __SERVICE_WORKER_MAX_AUTO_UPDATE_RELOADS__: number;
96
+ `})}),`
97
+ `,(0,c.jsx)(t.p,{children:`Пример для Vite:`}),`
98
+ `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import { defineConfig } from "vite";
99
+
100
+ export default defineConfig(({ mode }) => ({
101
+ define: {
102
+ __DEV__: JSON.stringify(mode !== "production"),
103
+ __SERVICE_WORKER_SCOPE__: JSON.stringify("/app/"),
104
+ __SERVICE_WORKER_URL__: JSON.stringify("/app/sw.js"),
105
+ __SERVICE_WORKER_UPDATE_RELOAD_COUNT_KEY__: JSON.stringify("my-app:sw-update-reload-count"),
106
+ __SERVICE_WORKER_MAX_AUTO_UPDATE_RELOADS__: JSON.stringify(3)
107
+ }
108
+ }));
109
+ `})}),`
110
+ `,(0,c.jsxs)(t.p,{children:[`Значения должны быть литералами в собранном клиентском коде. Если сборщик не заменит идентификаторы, приложение получит `,(0,c.jsx)(t.code,{children:`ReferenceError`}),`.`]}),`
111
+ `,(0,c.jsx)(t.h3,{id:`для-чего-нужен-предел-auto-reload`,children:`Для чего нужен предел auto reload`}),`
112
+ `,(0,c.jsxs)(t.p,{children:[`После открытия/reload hook даёт обновлениям 30 секунд на автоматическое применение. Счётчик в sessionStorage ограничивает цепочку перезагрузок значением `,(0,c.jsx)(t.code,{children:`__SERVICE_WORKER_MAX_AUTO_UPDATE_RELOADS__`}),`.`]}),`
113
+ `,(0,c.jsx)(t.p,{children:`Это защищает от бесконечного reload-loop при проблемном деплое. После 30-секундного startup-окна счётчик очищается, а дальнейшие обновления показываются через UI.`}),`
114
+ `,(0,c.jsx)(t.h2,{id:`development-ssr-и-browser-boundary`,children:`Development, SSR и browser boundary`}),`
115
+ `,(0,c.jsxs)(t.p,{children:[`В режиме `,(0,c.jsx)(t.code,{children:`__DEV__ === true`}),` effect сразу завершается: Service Worker не регистрируется и интервал не запускается.`]}),`
116
+ `,(0,c.jsxs)(t.p,{children:[`Hook использует `,(0,c.jsx)(t.code,{children:`window`}),`, `,(0,c.jsx)(t.code,{children:`navigator`}),`, `,(0,c.jsx)(t.code,{children:`performance`}),`, `,(0,c.jsx)(t.code,{children:`sessionStorage`}),` и API Service Worker. Подключайте его только в браузерном React-дереве. Сам effect не выполняется при SSR, но compile-time константы всё равно должны быть доступны в bundle.`]}),`
117
+ `,(0,c.jsxs)(t.p,{children:[`Ошибки регистрации и проверки логируются, а наружу не выбрасываются. Отсутствие поддержки `,(0,c.jsx)(t.code,{children:`navigator.serviceWorker`}),` приводит к спокойному `,(0,c.jsx)(t.code,{children:`hasUpdate: false`}),`.`]}),`
118
+ `,(0,c.jsx)(t.h2,{id:`жизненный-цикл-обновления`,children:`Жизненный цикл обновления`}),`
119
+ `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-text`,children:`mount
120
+ → register URL + scope
121
+ → проверить existing waiting worker
122
+ → вызвать registration.update()
123
+ → если update найден в первые 30 секунд после navigate/reload:
124
+ автоматически отправить SKIP_WAITING, пока не исчерпан лимит
125
+ → иначе установить hasUpdate = true
126
+ → пользователь выбирает applyUpdate или dismiss
127
+ → каждые 5 минут новая проверка
128
+ `})}),`
129
+ `,(0,c.jsxs)(t.p,{children:[`Навигация считается startup-кандидатом только для `,(0,c.jsx)(t.code,{children:`PerformanceNavigationTiming.type`}),` со значением `,(0,c.jsx)(t.code,{children:`"navigate"`}),` или `,(0,c.jsx)(t.code,{children:`"reload"`}),`.`]}),`
130
+ `,(0,c.jsx)(t.h2,{id:`часть-2-политика-sw-кэша`,children:`Часть 2. Политика SW-кэша`}),`
131
+ `,(0,c.jsx)(t.p,{children:`Эта часть описывает компактное текстовое значение, которое transport и Service Worker могут использовать как согласованный cache profile.`}),`
132
+ `,(0,c.jsx)(t.p,{children:`Для кода без React импортируйте узкий subpath:`}),`
133
+ `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`import {
134
+ buildSwCachePolicyValue,
135
+ normalizeSwCacheName,
136
+ parseSwCachePolicy,
137
+ resolveSwCacheCacheNameByPolicy,
138
+ type SwCachePolicyDraft
139
+ } from "@ryuzaki13/react-foundation-lib/pwa/sw-cache-policy";
140
+ `})}),`
141
+ `,(0,c.jsx)(t.h2,{id:`формат-политики`,children:`Формат политики`}),`
142
+ `,(0,c.jsx)(t.p,{children:`Поддерживаются три режима:`}),`
143
+ `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-text`,children:`off
144
+ ttl=<duration>[;max=<count>][;name=<name>]
145
+ bust=<duration>[;max=<count>][;name=<name>]
146
+ `})}),`
147
+ `,(0,c.jsx)(t.p,{children:`Примеры:`}),`
148
+ `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-text`,children:`off
149
+ ttl=10m
150
+ ttl=24h;max=200;name=references
151
+ bust=7d;name=metadata
152
+ ttl=forever;max=50
153
+ `})}),`
154
+ `,(0,c.jsxs)(t.p,{children:[`Опции разрешено разделять `,(0,c.jsx)(t.code,{children:`;`}),` или `,(0,c.jsx)(t.code,{children:`,`}),`. Имена ключей и режимы разбираются без учёта регистра.`]}),`
155
+ `,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`ttl`}),` и `,(0,c.jsx)(t.code,{children:`bust`}),` — метки профиля. Конкретное отличие их runtime-поведения реализует Service Worker/transport потребителя; parser только возвращает разобранный `,(0,c.jsx)(t.code,{children:`mode`}),`.`]}),`
156
+ `,(0,c.jsx)(t.h2,{id:`единицы-времени`,children:`Единицы времени`}),`
157
+ `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`type SwCacheDurationUnit = "ms" | "s" | "m" | "h" | "d";
158
+ `})}),`
159
+ `,(0,c.jsxs)(t.p,{children:[`Поддерживаются положительные целые и десятичные значения, например `,(0,c.jsx)(t.code,{children:`500ms`}),`, `,(0,c.jsx)(t.code,{children:`1.5h`}),`, `,(0,c.jsx)(t.code,{children:`7d`}),`. Максимальный конечный TTL — 365 дней. Специальное значение `,(0,c.jsx)(t.code,{children:`forever`}),` превращается в `,(0,c.jsx)(t.code,{children:`Infinity`}),`.`]}),`
160
+ `,(0,c.jsx)(t.p,{children:`Ноль, отрицательное число, запись без единицы, scientific notation и срок больше 365 дней считаются неверными.`}),`
161
+ `,(0,c.jsx)(t.h2,{id:`parseswcachepolicyvalue`,children:(0,c.jsx)(t.code,{children:`parseSwCachePolicy(value)`})}),`
162
+ `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`const policy = parseSwCachePolicy("ttl=10m;max=200;name=UI Data");
163
+
164
+ // {
165
+ // mode: "ttl",
166
+ // amount: 10,
167
+ // unit: "m",
168
+ // name: "ui-data",
169
+ // maxEntries: 200,
170
+ // resolvedMaxEntries: 200,
171
+ // ttlMs: 600000,
172
+ // cacheName: "odata-ui-data-10m-max200"
173
+ // }
174
+ `})}),`
175
+ `,(0,c.jsxs)(t.p,{children:[`Пустое или полностью неверное значение возвращает `,(0,c.jsx)(t.code,{children:`undefined`}),`. Строка `,(0,c.jsx)(t.code,{children:`off`}),` возвращает `,(0,c.jsx)(t.code,{children:`{ mode: "off" }`}),`.`]}),`
176
+ `,(0,c.jsx)(t.p,{children:`Для опций поддерживаются алиасы:`}),`
177
+ `,(0,c.jsxs)(t.table,{children:[(0,c.jsx)(t.thead,{children:(0,c.jsxs)(t.tr,{children:[(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.jsxs)(t.td,{children:[(0,c.jsx)(t.code,{children:`maxEntries`}),`, `,(0,c.jsx)(t.code,{children:`max`}),`, `,(0,c.jsx)(t.code,{children:`entries`})]})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:`Имя профиля`}),(0,c.jsxs)(t.td,{children:[(0,c.jsx)(t.code,{children:`cacheName`}),`, `,(0,c.jsx)(t.code,{children:`cache`}),`, `,(0,c.jsx)(t.code,{children:`name`})]})]})]})]}),`
178
+ `,(0,c.jsxs)(t.p,{children:[`Неизвестные опции игнорируются. Если одна опция повторяется, используется последнее значение из-за семантики `,(0,c.jsx)(t.code,{children:`Map`}),`.`]}),`
179
+ `,(0,c.jsx)(t.h3,{id:`maxentries`,children:(0,c.jsx)(t.code,{children:`maxEntries`})}),`
180
+ `,(0,c.jsxs)(t.p,{children:[`Допустимо положительное целое число. Значение ограничивается максимумом `,(0,c.jsx)(t.code,{children:`5000`}),`. Неверное значение не делает всю политику неверной: оно просто отбрасывается.`]}),`
181
+ `,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`resolvedMaxEntries`}),` всегда содержит фактический лимит для `,(0,c.jsx)(t.code,{children:`ttl`}),`/`,(0,c.jsx)(t.code,{children:`bust`}),`: переданный либо значение по умолчанию `,(0,c.jsx)(t.code,{children:`100`}),`.`]}),`
182
+ `,(0,c.jsxs)(t.p,{children:[`При этом cache name включает суффикс `,(0,c.jsx)(t.code,{children:`-maxN`}),` только для явно переданного валидного лимита. Дефолтные `,(0,c.jsx)(t.code,{children:`100`}),` в имени не записываются.`]}),`
183
+ `,(0,c.jsx)(t.h2,{id:`normalizeswcachenamevalue`,children:(0,c.jsx)(t.code,{children:`normalizeSwCacheName(value)`})}),`
184
+ `,(0,c.jsx)(t.p,{children:`Нормализует имя профиля:`}),`
185
+ `,(0,c.jsxs)(t.ol,{children:[`
186
+ `,(0,c.jsx)(t.li,{children:`удаляет пробелы по краям;`}),`
187
+ `,(0,c.jsx)(t.li,{children:`переводит в нижний регистр;`}),`
188
+ `,(0,c.jsxs)(t.li,{children:[`заменяет группы недопустимых символов на `,(0,c.jsx)(t.code,{children:`-`}),`;`]}),`
189
+ `,(0,c.jsx)(t.li,{children:`удаляет крайние дефисы;`}),`
190
+ `,(0,c.jsxs)(t.li,{children:[`возвращает `,(0,c.jsx)(t.code,{children:`undefined`}),`, если ничего не осталось.`]}),`
191
+ `]}),`
192
+ `,(0,c.jsxs)(t.p,{children:[`Разрешены латинские буквы, цифры, `,(0,c.jsx)(t.code,{children:`_`}),` и `,(0,c.jsx)(t.code,{children:`-`}),`.`]}),`
193
+ `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`normalizeSwCacheName(" UI Data / Main "); // "ui-data-main"
194
+ normalizeSwCacheName("---"); // undefined
195
+ `})}),`
196
+ `,(0,c.jsx)(t.h2,{id:`resolveswcachecachenamebypolicyvalue`,children:(0,c.jsx)(t.code,{children:`resolveSwCacheCacheNameByPolicy(value)`})}),`
197
+ `,(0,c.jsxs)(t.p,{children:[`Возвращает вычисленное имя cache только для валидных режимов `,(0,c.jsx)(t.code,{children:`ttl`}),` и `,(0,c.jsx)(t.code,{children:`bust`}),`.`]}),`
198
+ `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`resolveSwCacheCacheNameByPolicy("ttl=24h;name=ref");
199
+ // "odata-ref-24h"
200
+
201
+ resolveSwCacheCacheNameByPolicy("off"); // undefined
202
+ resolveSwCacheCacheNameByPolicy("ttl=wrong"); // undefined
203
+ `})}),`
204
+ `,(0,c.jsx)(t.p,{children:`Имя — устойчивый технический профиль, но формат может быть частью cache-versioning. Не собирайте его вручную.`}),`
205
+ `,(0,c.jsx)(t.h2,{id:`buildswcachepolicyvaluedraft`,children:(0,c.jsx)(t.code,{children:`buildSwCachePolicyValue(draft)`})}),`
206
+ `,(0,c.jsx)(t.p,{children:`Собирает каноническую строку из данных формы.`}),`
207
+ `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`const draft: SwCachePolicyDraft = {
208
+ mode: "ttl",
209
+ amount: 10,
210
+ unit: "m",
211
+ name: "UI Data",
212
+ maxEntries: 200
213
+ };
214
+
215
+ buildSwCachePolicyValue(draft);
216
+ // "ttl=10m;max=200;name=ui-data"
217
+ `})}),`
218
+ `,(0,c.jsx)(t.p,{children:`Правила builder:`}),`
219
+ `,(0,c.jsxs)(t.ul,{children:[`
220
+ `,(0,c.jsxs)(t.li,{children:[`для `,(0,c.jsx)(t.code,{children:`off`}),` всегда возвращает `,(0,c.jsx)(t.code,{children:`"off"`}),`;`]}),`
221
+ `,(0,c.jsxs)(t.li,{children:[`неверный `,(0,c.jsx)(t.code,{children:`amount`}),` заменяет на `,(0,c.jsx)(t.code,{children:`24`}),`;`]}),`
222
+ `,(0,c.jsxs)(t.li,{children:[`отсутствующую `,(0,c.jsx)(t.code,{children:`unit`}),` заменяет на `,(0,c.jsx)(t.code,{children:`h`}),`;`]}),`
223
+ `,(0,c.jsxs)(t.li,{children:[`неверный `,(0,c.jsx)(t.code,{children:`maxEntries`}),` отбрасывает, больше `,(0,c.jsx)(t.code,{children:`5000`}),` ограничивает;`]}),`
224
+ `,(0,c.jsxs)(t.li,{children:[`имя нормализует через `,(0,c.jsx)(t.code,{children:`normalizeSwCacheName`}),`;`]}),`
225
+ `,(0,c.jsxs)(t.li,{children:[`порядок опций всегда `,(0,c.jsx)(t.code,{children:`max`}),`, затем `,(0,c.jsx)(t.code,{children:`name`}),`.`]}),`
226
+ `]}),`
227
+ `,(0,c.jsxs)(t.p,{children:[`Builder не ограничивает вычисленный срок 365 днями. Например, draft `,(0,c.jsx)(t.code,{children:`400d`}),` будет собран в строку, но parser затем вернёт `,(0,c.jsx)(t.code,{children:`undefined`}),`. Если данные приходят из свободной формы, проверьте результат повторным `,(0,c.jsx)(t.code,{children:`parseSwCachePolicy`}),` перед сохранением.`]}),`
228
+ `,(0,c.jsx)(t.h2,{id:`пример-формы-настройки`,children:`Пример формы настройки`}),`
229
+ `,(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:`language-ts`,children:`function savePolicy(draft: SwCachePolicyDraft) {
230
+ const value = buildSwCachePolicyValue(draft);
231
+ const parsed = parseSwCachePolicy(value);
232
+
233
+ if (!parsed) {
234
+ throw new Error("Не удалось собрать допустимую cache policy");
235
+ }
236
+
237
+ return value;
238
+ }
239
+ `})}),`
240
+ `,(0,c.jsx)(t.h2,{id:`безопасность-кэша`,children:`Безопасность кэша`}),`
241
+ `,(0,c.jsxs)(t.p,{children:[`Политика только описывает срок и профиль. Она не определяет, `,(0,c.jsx)(t.strong,{children:`что разрешено кэшировать`}),`.`]}),`
242
+ `,(0,c.jsx)(t.p,{children:`Service Worker приложения обязан отдельно учитывать:`}),`
243
+ `,(0,c.jsxs)(t.ul,{children:[`
244
+ `,(0,c.jsx)(t.li,{children:`пользователя, tenant и authorization context;`}),`
245
+ `,(0,c.jsx)(t.li,{children:`HTTP-метод: mutation-запросы обычно не кэшируются;`}),`
246
+ `,(0,c.jsx)(t.li,{children:`чувствительные персональные данные;`}),`
247
+ `,(0,c.jsx)(t.li,{children:`response status и content type;`}),`
248
+ `,(0,c.jsx)(t.li,{children:`очистку cache при logout;`}),`
249
+ `,(0,c.jsx)(t.li,{children:`версионирование схемы ответа.`}),`
250
+ `]}),`
251
+ `,(0,c.jsx)(t.p,{children:`Не используйте общий cache name для ответов разных пользователей, если ключ cache не содержит безопасно разделяющий контекст.`}),`
252
+ `,(0,c.jsx)(t.h2,{id:`частые-ошибки`,children:`Частые ошибки`}),`
253
+ `,(0,c.jsxs)(t.h3,{id:`импорт-внутреннего-serviceworkerts`,children:[`Импорт внутреннего `,(0,c.jsx)(t.code,{children:`serviceWorker.ts`})]}),`
254
+ `,(0,c.jsxs)(t.p,{children:[`Он не объявлен в `,(0,c.jsx)(t.code,{children:`package.json#exports`}),`. Публичный update API — `,(0,c.jsx)(t.code,{children:`useServiceWorkerUpdate`}),` из `,(0,c.jsx)(t.code,{children:`/pwa`}),`.`]}),`
255
+ `,(0,c.jsxs)(t.h3,{id:`ожидать-что-dismiss-отменит-update`,children:[`Ожидать, что `,(0,c.jsx)(t.code,{children:`dismiss()`}),` отменит update`]}),`
256
+ `,(0,c.jsx)(t.p,{children:`Waiting worker остаётся установленным. Следующая проверка может снова показать UI.`}),`
257
+ `,(0,c.jsxs)(t.h3,{id:`не-обработать-skip_waiting-в-worker`,children:[`Не обработать `,(0,c.jsx)(t.code,{children:`SKIP_WAITING`}),` в worker`]}),`
258
+ `,(0,c.jsx)(t.p,{children:`Кнопка применения отправит сообщение, но worker не активируется до обычного lifecycle браузера.`}),`
259
+ `,(0,c.jsx)(t.h3,{id:`путать-ttl-parser-с-cache-implementation`,children:`Путать TTL parser с cache implementation`}),`
260
+ `,(0,c.jsx)(t.p,{children:`Функции policy не читают Cache Storage, не перехватывают fetch и не удаляют записи. Это обязанность Service Worker.`}),`
261
+ `,(0,c.jsxs)(t.h3,{id:`считать-forever-безопасным-default`,children:[`Считать `,(0,c.jsx)(t.code,{children:`forever`}),` безопасным default`]}),`
262
+ `,(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.code,{children:`ttlMs: Infinity`}),` требует явной стратегии bust/invalidation. Без неё клиент может долго видеть устаревшие данные.`]}),`
263
+ `,(0,c.jsx)(t.h2,{id:`краткая-карта-api`,children:`Краткая карта API`}),`
264
+ `,(0,c.jsxs)(t.table,{children:[(0,c.jsx)(t.thead,{children:(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.th,{children:`Экспорт`}),(0,c.jsx)(t.th,{children:`Публичный path`}),(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:`useServiceWorkerUpdate()`})}),(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`/pwa`})}),(0,c.jsx)(t.td,{children:`Регистрация, проверка и UI-состояние обновления SW`})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`parseSwCachePolicy()`})}),(0,c.jsx)(t.td,{children:`оба`}),(0,c.jsx)(t.td,{children:`Разобрать текстовую политику`})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`buildSwCachePolicyValue()`})}),(0,c.jsx)(t.td,{children:`оба`}),(0,c.jsx)(t.td,{children:`Собрать каноническую строку из draft`})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`normalizeSwCacheName()`})}),(0,c.jsx)(t.td,{children:`оба`}),(0,c.jsx)(t.td,{children:`Подготовить безопасную часть cache name`})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`resolveSwCacheCacheNameByPolicy()`})}),(0,c.jsx)(t.td,{children:`оба`}),(0,c.jsx)(t.td,{children:`Получить имя cache из валидной политики`})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`ParsedSwCachePolicy`})}),(0,c.jsx)(t.td,{children:`оба`}),(0,c.jsx)(t.td,{children:`Тип разобранного результата`})]}),(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:(0,c.jsx)(t.code,{children:`SwCachePolicyDraft`})}),(0,c.jsx)(t.td,{children:`оба`}),(0,c.jsx)(t.td,{children:`Тип данных формы/builder`})]})]})]})]})}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};