@ryuzaki13/react-foundation-ui 3.10.0 → 3.11.0

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 (421) hide show
  1. package/README.md +11 -0
  2. package/dist/badge/index.js +1 -1
  3. package/dist/barcode-scanner/index.js +1 -1
  4. package/dist/base-table/index.js +1 -1
  5. package/dist/chunks/{TextEditorLexicalClient-BQH41FFT.js → TextEditorLexicalClient-Cj6yjCGm.js} +3 -3
  6. package/dist/chunks/{TextEditorLexicalClient-BQH41FFT.js.map → TextEditorLexicalClient-Cj6yjCGm.js.map} +1 -1
  7. package/dist/chunks/{base-table-CacTH3BE.js → base-table-CoVXG2FT.js} +4 -4
  8. package/dist/chunks/{base-table-CacTH3BE.js.map → base-table-CoVXG2FT.js.map} +1 -1
  9. package/dist/chunks/{context-menu-BV8636Ou.js → context-menu-BlLesqpZ.js} +2 -2
  10. package/dist/chunks/{context-menu-BV8636Ou.js.map → context-menu-BlLesqpZ.js.map} +1 -1
  11. package/dist/chunks/flex-BhrQCH4I.js +401 -0
  12. package/dist/chunks/flex-BhrQCH4I.js.map +1 -0
  13. package/dist/chunks/grid-D6wPRCjx.js +394 -0
  14. package/dist/chunks/grid-D6wPRCjx.js.map +1 -0
  15. package/dist/chunks/{misc-BjdDK6mm.js → misc-Dcr24uDY.js} +2 -2
  16. package/dist/chunks/{misc-BjdDK6mm.js.map → misc-Dcr24uDY.js.map} +1 -1
  17. package/dist/chunks/{modal-CBGNsqrq.js → modal-DeABSKrb.js} +4 -4
  18. package/dist/chunks/{modal-CBGNsqrq.js.map → modal-DeABSKrb.js.map} +1 -1
  19. package/dist/chunks/{picker-DagDe9OH.js → picker-CWx7vPE8.js} +2 -2
  20. package/dist/chunks/{picker-DagDe9OH.js.map → picker-CWx7vPE8.js.map} +1 -1
  21. package/dist/chunks/responsiveLayout-D2mtCDdh.js +28 -0
  22. package/dist/chunks/responsiveLayout-D2mtCDdh.js.map +1 -0
  23. package/dist/chunks/{select-C-1U-ujV.js → select-CHBBo5fn.js} +2 -2
  24. package/dist/chunks/{select-C-1U-ujV.js.map → select-CHBBo5fn.js.map} +1 -1
  25. package/dist/chunks/{table-Cx__DvpN.js → table-Cm9NhT9K.js} +2 -2
  26. package/dist/chunks/{table-Cx__DvpN.js.map → table-Cm9NhT9K.js.map} +1 -1
  27. package/dist/context-menu/index.js +1 -1
  28. package/dist/disclosure/index.js +1 -1
  29. package/dist/errors/index.js +1 -1
  30. package/dist/expandable-action-panel/index.js +1 -1
  31. package/dist/flex/FlexContainer.d.ts +1 -1
  32. package/dist/flex/FlexContainer.d.ts.map +1 -1
  33. package/dist/flex/FlexItem.d.ts +1 -1
  34. package/dist/flex/FlexItem.d.ts.map +1 -1
  35. package/dist/flex/PredefinedFlex.d.ts +1 -1
  36. package/dist/flex/PredefinedFlex.d.ts.map +1 -1
  37. package/dist/flex/getFlexClasses.d.ts +5 -0
  38. package/dist/flex/getFlexClasses.d.ts.map +1 -0
  39. package/dist/flex/index.js +1 -1
  40. package/dist/floating-windows/FloatingWindow.d.ts +19 -0
  41. package/dist/floating-windows/FloatingWindow.d.ts.map +1 -0
  42. package/dist/floating-windows/FloatingWindowHeader.d.ts +14 -0
  43. package/dist/floating-windows/FloatingWindowHeader.d.ts.map +1 -0
  44. package/dist/floating-windows/FloatingWindows.d.ts +16 -0
  45. package/dist/floating-windows/FloatingWindows.d.ts.map +1 -0
  46. package/dist/floating-windows/FloatingWindowsBoundary.d.ts +10 -0
  47. package/dist/floating-windows/FloatingWindowsBoundary.d.ts.map +1 -0
  48. package/dist/floating-windows/FloatingWindowsProvider.d.ts +11 -0
  49. package/dist/floating-windows/FloatingWindowsProvider.d.ts.map +1 -0
  50. package/dist/floating-windows/index.d.ts +4 -0
  51. package/dist/floating-windows/index.d.ts.map +1 -0
  52. package/dist/floating-windows/index.js +576 -0
  53. package/dist/floating-windows/index.js.map +1 -0
  54. package/dist/floating-windows/lib/constrainFloatingWindowPosition.d.ts +8 -0
  55. package/dist/floating-windows/lib/constrainFloatingWindowPosition.d.ts.map +1 -0
  56. package/dist/floating-windows/lib/floatingWindowsStorage.d.ts +10 -0
  57. package/dist/floating-windows/lib/floatingWindowsStorage.d.ts.map +1 -0
  58. package/dist/floating-windows/lib/getFloatingWindowStyle.d.ts +5 -0
  59. package/dist/floating-windows/lib/getFloatingWindowStyle.d.ts.map +1 -0
  60. package/dist/floating-windows/lib/isFloatingWindowId.d.ts +3 -0
  61. package/dist/floating-windows/lib/isFloatingWindowId.d.ts.map +1 -0
  62. package/dist/floating-windows/lib/selectFloatingWindowCascadePosition.d.ts +8 -0
  63. package/dist/floating-windows/lib/selectFloatingWindowCascadePosition.d.ts.map +1 -0
  64. package/dist/floating-windows/lib/selectFloatingWindowRestoreFocus.d.ts +3 -0
  65. package/dist/floating-windows/lib/selectFloatingWindowRestoreFocus.d.ts.map +1 -0
  66. package/dist/floating-windows/model/FloatingWindowsContext.d.ts +4 -0
  67. package/dist/floating-windows/model/FloatingWindowsContext.d.ts.map +1 -0
  68. package/dist/floating-windows/model/createFloatingWindowsStore.d.ts +8 -0
  69. package/dist/floating-windows/model/createFloatingWindowsStore.d.ts.map +1 -0
  70. package/dist/floating-windows/model/floatingWindowMoveTypes.d.ts +27 -0
  71. package/dist/floating-windows/model/floatingWindowMoveTypes.d.ts.map +1 -0
  72. package/dist/floating-windows/model/floatingWindowsTypes.d.ts +40 -0
  73. package/dist/floating-windows/model/floatingWindowsTypes.d.ts.map +1 -0
  74. package/dist/floating-windows/model/useFloatingWindowFocus.d.ts +4 -0
  75. package/dist/floating-windows/model/useFloatingWindowFocus.d.ts.map +1 -0
  76. package/dist/floating-windows/model/useFloatingWindowMeasurements.d.ts +5 -0
  77. package/dist/floating-windows/model/useFloatingWindowMeasurements.d.ts.map +1 -0
  78. package/dist/floating-windows/model/useFloatingWindowMove.d.ts +4 -0
  79. package/dist/floating-windows/model/useFloatingWindowMove.d.ts.map +1 -0
  80. package/dist/floating-windows/model/useFloatingWindowSnapshot.d.ts +4 -0
  81. package/dist/floating-windows/model/useFloatingWindowSnapshot.d.ts.map +1 -0
  82. package/dist/floating-windows/model/useFloatingWindowsBounds.d.ts +4 -0
  83. package/dist/floating-windows/model/useFloatingWindowsBounds.d.ts.map +1 -0
  84. package/dist/floating-windows/model/useFloatingWindowsPersistence.d.ts +4 -0
  85. package/dist/floating-windows/model/useFloatingWindowsPersistence.d.ts.map +1 -0
  86. package/dist/floating-windows/model/useFloatingWindowsStore.d.ts +4 -0
  87. package/dist/floating-windows/model/useFloatingWindowsStore.d.ts.map +1 -0
  88. package/dist/grid/GridContainer.d.ts.map +1 -1
  89. package/dist/grid/GridItem.d.ts.map +1 -1
  90. package/dist/grid/getGridClasses.d.ts +12 -0
  91. package/dist/grid/getGridClasses.d.ts.map +1 -0
  92. package/dist/grid/index.js +1 -1
  93. package/dist/image/index.js +2 -2
  94. package/dist/layout-picker/index.js +1 -1
  95. package/dist/list/index.js +2 -2
  96. package/dist/listbox/index.js +1 -1
  97. package/dist/misc/index.js +1 -1
  98. package/dist/modal/index.js +1 -1
  99. package/dist/multi-select/index.js +1 -1
  100. package/dist/notifications/index.js +10 -10
  101. package/dist/picker/index.js +1 -1
  102. package/dist/preset-range-date-input/index.js +1 -1
  103. package/dist/preset-select/index.js +1 -1
  104. package/dist/responsive-layout/responsiveLayout.d.ts +17 -0
  105. package/dist/responsive-layout/responsiveLayout.d.ts.map +1 -0
  106. package/dist/select/index.js +1 -1
  107. package/dist/simple-table/index.js +1 -1
  108. package/dist/slider/index.js +1 -1
  109. package/dist/state-select/index.js +1 -1
  110. package/dist/styles.css +1 -1
  111. package/dist/table/index.js +1 -1
  112. package/dist/table-sorting/index.js +1 -1
  113. package/dist/tabs/index.js +1 -1
  114. package/dist/text-editor/index.js +2 -2
  115. package/dist/toolbar/index.js +2 -2
  116. package/dist/tree-select/index.js +1 -1
  117. package/dist/tree-table/index.js +1 -1
  118. package/package.json +5 -1
  119. package/storybook-static/assets/{Badge-DxGi2POg.js → Badge-CVgLMAJT.js} +1 -1
  120. package/storybook-static/assets/{Badge.stories-D6Em1fN8.js → Badge.stories-KeadkKsz.js} +1 -1
  121. package/storybook-static/assets/{BadgeList-DemBuxUQ.js → BadgeList-_jBtMkE3.js} +1 -1
  122. package/storybook-static/assets/{BarcodeScannerDialog.stories-Bxnb0wH3.js → BarcodeScannerDialog.stories-J9XDExKK.js} +1 -1
  123. package/storybook-static/assets/{Button-dlGIhkja.js → Button-C-uRygWz.js} +1 -1
  124. package/storybook-static/assets/{Button-9vGUTM3m.js → Button-DegBPiAl.js} +1 -1
  125. package/storybook-static/assets/{Button.stories-WOE1_ovM.js → Button.stories-Ds4zCq_9.js} +1 -1
  126. package/storybook-static/assets/{CalendarView-Co2EiQf9.js → CalendarView-iyr_ipPy.js} +1 -1
  127. package/storybook-static/assets/{CheckBox-CwJshQX2.js → CheckBox-B0zrARHA.js} +1 -1
  128. package/storybook-static/assets/{CheckBox-Dpg2QsvS.js → CheckBox-nBqHJGY9.js} +1 -1
  129. package/storybook-static/assets/{CheckBox.stories-K8wng7-q.js → CheckBox.stories-CxO9FwA7.js} +1 -1
  130. package/storybook-static/assets/Color-6AOWCN3U-Dzuzn5Yr.js +1 -0
  131. package/storybook-static/assets/{ContextMenu-DbmUWR4I.js → ContextMenu-BC5OXqVj.js} +1 -1
  132. package/storybook-static/assets/{ContextMenu-C1zzFMni.js → ContextMenu-CnZu58rQ.js} +1 -1
  133. package/storybook-static/assets/{ContextMenu.stories-D0tclMo1.js → ContextMenu.stories-CPdTdVV7.js} +1 -1
  134. package/storybook-static/assets/{DateInput-BDxg1E80.js → DateInput-B5j7kofa.js} +1 -1
  135. package/storybook-static/assets/{DateInput-DxpENevn.js → DateInput-CuYe4WXO.js} +1 -1
  136. package/storybook-static/assets/{DateInput.stories-De_AOkrK.js → DateInput.stories-C4ZaIPUG.js} +1 -1
  137. package/storybook-static/assets/{DateRangePresetSelect-CD7jNInU.js → DateRangePresetSelect-CbDK9t1J.js} +1 -1
  138. package/storybook-static/assets/{DateRangePresetSelect-CD8qu2LL.js → DateRangePresetSelect-Cg6yPY0K.js} +1 -1
  139. package/storybook-static/assets/{DateRangePresetSelect.stories-phHkk3Q1.js → DateRangePresetSelect.stories-DPWUHjXu.js} +1 -1
  140. package/storybook-static/assets/{DeprecatedMultiSelect-Bdv505U3.js → DeprecatedMultiSelect-DCReLsN-.js} +1 -1
  141. package/storybook-static/assets/{DeprecatedMultiSelect-B4VEjiTj.js → DeprecatedMultiSelect-DkGsEVRD.js} +1 -1
  142. package/storybook-static/assets/{DeprecatedMultiSelect.stories-DdPzDJjx.js → DeprecatedMultiSelect.stories-tbYFDSML.js} +1 -1
  143. package/storybook-static/assets/{Detail-BoazSWw_.js → Detail-CtVpK6xU.js} +1 -1
  144. package/storybook-static/assets/{Detail.stories-Cc9fEkdx.js → Detail.stories-zAQfXGuT.js} +1 -1
  145. package/storybook-static/assets/{Dialog-ieE9mpAU.js → Dialog-B9ltl4hS.js} +1 -1
  146. package/storybook-static/assets/{Dialog-VJ62BLtp.js → Dialog-JetMtpYt.js} +1 -1
  147. package/storybook-static/assets/{Dialog.stories-CUyAMGoD.js → Dialog.stories-tJymN3yq.js} +1 -1
  148. package/storybook-static/assets/{Disclosure-BP8VhRCA.js → Disclosure-j-RCrVFs.js} +1 -1
  149. package/storybook-static/assets/{Disclosure.stories-DwIo-o1J.js → Disclosure.stories-4Jj2XNlo.js} +1 -1
  150. package/storybook-static/assets/{DisclosureGroup-LjgDW-Z6.js → DisclosureGroup-CM7GlGI4.js} +1 -1
  151. package/storybook-static/assets/{DocsRenderer-JROSPFPF-BjRaiNDG.js → DocsRenderer-JROSPFPF-DevtpZi5.js} +1 -1
  152. package/storybook-static/assets/{DropZone-BMT4jv2L.js → DropZone-Bwo7NG5D.js} +1 -1
  153. package/storybook-static/assets/{DropZone-Dg3GZxY8.js → DropZone-CPrhOtX-.js} +1 -1
  154. package/storybook-static/assets/{DropZone.stories-szOGIPHx.js → DropZone.stories-VyNhIaxw.js} +1 -1
  155. package/storybook-static/assets/{DropdownMenu-B0EI5ePH.js → DropdownMenu-DMWZzFK1.js} +1 -1
  156. package/storybook-static/assets/{ExpandableActionPanel-D_qy2JID.js → ExpandableActionPanel-DmKB3xVB.js} +1 -1
  157. package/storybook-static/assets/{ExpandableActionPanel.stories-wdmlBDmK.js → ExpandableActionPanel.stories-Kh_OSEIl.js} +1 -1
  158. package/storybook-static/assets/Flex-BZKhuaao.js +81 -0
  159. package/storybook-static/assets/Flex.stories-CrHxjVCH.js +454 -0
  160. package/storybook-static/assets/FlexContainer-DGc37vCr.js +1 -0
  161. package/storybook-static/assets/{FlexItem-BE_4juAd.js → FlexItem-DYv72TvP.js} +2 -2
  162. package/storybook-static/assets/{FloatingPopover-DHxMCBdS.js → FloatingPopover-Bd3b1U8c.js} +1 -1
  163. package/storybook-static/assets/FloatingWindows-C2FJO6ij.css +1 -0
  164. package/storybook-static/assets/FloatingWindows.stories-Cs_i092m.js +13 -0
  165. package/storybook-static/assets/FormattedTableCell-CdlWquoj.js +15 -0
  166. package/storybook-static/assets/Grid-DIKudfVu.js +84 -0
  167. package/storybook-static/assets/{Grid-0NnWfTJ7.js → Grid-DUcSdqsI.js} +2 -2
  168. package/storybook-static/assets/Grid.stories-sZUaIp7v.js +657 -0
  169. package/storybook-static/assets/{GridContainer-BHSfIiml.js → GridContainer-C5r-VTTG.js} +2 -2
  170. package/storybook-static/assets/GridContainer-DgBuOs_1.css +1 -0
  171. package/storybook-static/assets/{ImageCropper.stories-Cf5ogf7p.js → ImageCropper.stories-Bk3SF90a.js} +1 -1
  172. package/storybook-static/assets/{ImageRenderer-CsN1-IP6.js → ImageRenderer-CM-YetP0.js} +1 -1
  173. package/storybook-static/assets/{ImageRenderer.stories-DIC-UR-l.js → ImageRenderer.stories-CMqKyVuX.js} +1 -1
  174. package/storybook-static/assets/{ImageView.stories-DT6QZR-1.js → ImageView.stories-9IjWDUev.js} +1 -1
  175. package/storybook-static/assets/{ImageViewer.stories-DxpCKbpk.js → ImageViewer.stories-D-Zzvzh3.js} +2 -2
  176. package/storybook-static/assets/{ImageViewerRuntime-COhNh4_y.js → ImageViewerRuntime-BRWmVnG3.js} +1 -1
  177. package/storybook-static/assets/{Input-BJ3sPHt1.js → Input-BaEhNNL0.js} +1 -1
  178. package/storybook-static/assets/{Input-D2eqioLp.js → Input-YuUUu0DD.js} +1 -1
  179. package/storybook-static/assets/{Input.stories-MtAx6H2F.js → Input.stories-CoJY4vR8.js} +1 -1
  180. package/storybook-static/assets/{InputDateTime-CNNqhoo6.js → InputDateTime-CPlDTMTI.js} +1 -1
  181. package/storybook-static/assets/{InputDateTime.stories-DT3CvxRy.js → InputDateTime.stories-DaOA4pFM.js} +1 -1
  182. package/storybook-static/assets/{InputFile-RfdomZEH.js → InputFile-7PMO3B4Q.js} +1 -1
  183. package/storybook-static/assets/{InputFile-DiI_0QV5.js → InputFile-D2HPvbt_.js} +1 -1
  184. package/storybook-static/assets/{InputFile.stories-CiqGBnkS.js → InputFile.stories-CD4sJtXF.js} +1 -1
  185. package/storybook-static/assets/{InputFiles-CBrPDNlV.js → InputFiles-DSOs_hpc.js} +1 -1
  186. package/storybook-static/assets/{InputFiles-CgyVXpI1.js → InputFiles-DwgBtqPe.js} +1 -1
  187. package/storybook-static/assets/{InputFiles.stories-QHNxJjiV.js → InputFiles.stories-B2zPOUXW.js} +1 -1
  188. package/storybook-static/assets/{InputFilesList-BEIBTAEK.js → InputFilesList-DWtH6HFC.js} +1 -1
  189. package/storybook-static/assets/{InputImage-BBJr8TWl.js → InputImage-Cke0I8XV.js} +1 -1
  190. package/storybook-static/assets/{InputImage-vXbhnE46.js → InputImage-CnTU-bKF.js} +1 -1
  191. package/storybook-static/assets/{InputImage.stories-VoVU0QZB.js → InputImage.stories-CadyFqUh.js} +1 -1
  192. package/storybook-static/assets/{InteractiveComponents-CjkX3vU6.js → InteractiveComponents-cNgymLXT.js} +1 -1
  193. package/storybook-static/assets/{InteractiveComponents.stories-Gc_Ju4xJ.js → InteractiveComponents.stories-c5kIdj-d.js} +1 -1
  194. package/storybook-static/assets/{LayoutPicker-DwpDr_Is.js → LayoutPicker-BydBdeCh.js} +1 -1
  195. package/storybook-static/assets/{LayoutPicker-ONnrtLDR.js → LayoutPicker-u5tv4tmF.js} +1 -1
  196. package/storybook-static/assets/{LayoutPicker.stories-B-HIq6DD.js → LayoutPicker.stories-ZcTgJxX5.js} +1 -1
  197. package/storybook-static/assets/{Listbox-XIi0yHgl.js → Listbox-CaBDvhDA.js} +1 -1
  198. package/storybook-static/assets/{Listbox-DoF5nZIP.js → Listbox-CzmfAAEG.js} +1 -1
  199. package/storybook-static/assets/{Listbox.stories-DT8FJQ3z.js → Listbox.stories-B_tFWmxp.js} +1 -1
  200. package/storybook-static/assets/{Modal-C3F4r2UA.js → Modal-CIptTLdh.js} +1 -1
  201. package/storybook-static/assets/{Modal-Ml7EuSvu.js → Modal-DIJuHLSp.js} +1 -1
  202. package/storybook-static/assets/{Modal.stories-DRwnYxst.js → Modal.stories-BAh1Lzf0.js} +1 -1
  203. package/storybook-static/assets/{ModalManagerProvider-CmqdB_ni.js → ModalManagerProvider-DH2lt3jw.js} +1 -1
  204. package/storybook-static/assets/{MultiSelect-CAg-L0dM.js → MultiSelect-CbcU2Cam.js} +1 -1
  205. package/storybook-static/assets/{MultiSelect-B1QokJ3C.js → MultiSelect-OPkS-VFp.js} +1 -1
  206. package/storybook-static/assets/{MultiSelect.stories-Dfh2Lp0N.js → MultiSelect.stories-jghnBwe0.js} +1 -1
  207. package/storybook-static/assets/{MultiSelectCore-GRGtCBO1.js → MultiSelectCore-AgK9lN-8.js} +1 -1
  208. package/storybook-static/assets/{NoData-BZhNhaYV.js → NoData-CRi9NzcI.js} +1 -1
  209. package/storybook-static/assets/{NotificationsHost-BUPLrDM3.js → NotificationsHost-C8sCDEzY.js} +9 -9
  210. package/storybook-static/assets/{NotificationsHost.stories-CKbR-_nq.js → NotificationsHost.stories-BxpWtMHl.js} +1 -1
  211. package/storybook-static/assets/{ODataMultiSelect-CDW0B1az.js → ODataMultiSelect-Cjptiw3k.js} +1 -1
  212. package/storybook-static/assets/{ODataMultiSelect.stories-BbKrxs7t.js → ODataMultiSelect.stories-B-tBcHkU.js} +2 -2
  213. package/storybook-static/assets/{ODataSelect-C5G0dCnn.js → ODataSelect-BdVlf2WW.js} +1 -1
  214. package/storybook-static/assets/{ODataSelect.stories-DcX50cyD.js → ODataSelect.stories-DZv8DgW4.js} +2 -2
  215. package/storybook-static/assets/{ODataTreeMultiSelect-4mTjhnlJ.js → ODataTreeMultiSelect-B83uLKnT.js} +1 -1
  216. package/storybook-static/assets/{ODataTreeMultiSelect.stories-B-4UUg5l.js → ODataTreeMultiSelect.stories-k92VjXYz.js} +1 -1
  217. package/storybook-static/assets/{ODataTreeSelect-D-wcx2OH.js → ODataTreeSelect-CkZeBBoA.js} +1 -1
  218. package/storybook-static/assets/{ODataTreeSelect.stories-uB_sG4ga.js → ODataTreeSelect.stories-COweaWEr.js} +1 -1
  219. package/storybook-static/assets/{OneStepScroller-DQI5POnJ.js → OneStepScroller-dD9RSWvg.js} +1 -1
  220. package/storybook-static/assets/{Option-CrEWqsFF.js → Option-lTkoUcHa.js} +1 -1
  221. package/storybook-static/assets/{OptionButton-BEQ2oSPf.js → OptionButton-Bt6YtqRZ.js} +1 -1
  222. package/storybook-static/assets/{OptionContent-C8S7IjI3.js → OptionContent-C7Zoef1L.js} +1 -1
  223. package/storybook-static/assets/{OptionContentContainer-ljQts_jY.js → OptionContentContainer-xpO-es_t.js} +1 -1
  224. package/storybook-static/assets/{PeriodSelect-DuqatGdk.js → PeriodSelect-CmGjITS0.js} +1 -1
  225. package/storybook-static/assets/{PeriodSelect-BTdDU06N.js → PeriodSelect-DkGZmPFu.js} +1 -1
  226. package/storybook-static/assets/{PeriodSelect.stories-CX4DSFJG.js → PeriodSelect.stories-BxkZen1s.js} +1 -1
  227. package/storybook-static/assets/{PickerField-Cgcm-Y5T.js → PickerField-vwGcXNU3.js} +1 -1
  228. package/storybook-static/assets/{PickerTriggerActions-DWe2uX0K.js → PickerTriggerActions-BVO2pwu2.js} +1 -1
  229. package/storybook-static/assets/{Popover-C55I0GTn.js → Popover-DU0wD6MT.js} +1 -1
  230. package/storybook-static/assets/{Popover-0QfSvwRS.js → Popover-PRWJVARx.js} +1 -1
  231. package/storybook-static/assets/{Popover.stories-Bgjomdgb.js → Popover.stories-CXKDCIfT.js} +1 -1
  232. package/storybook-static/assets/{PresetRangeDateInput-C-vQa5BZ.js → PresetRangeDateInput-B1oR9Z-A.js} +1 -1
  233. package/storybook-static/assets/{PresetRangeDateInput-Cai5fvRb.js → PresetRangeDateInput-DUcxF5lh.js} +1 -1
  234. package/storybook-static/assets/{PresetRangeDateInput.stories-CWtIukRG.js → PresetRangeDateInput.stories-CAPHV6_P.js} +1 -1
  235. package/storybook-static/assets/{PresetSelect-HqtmoRLb.js → PresetSelect-Hrow5Qbz.js} +1 -1
  236. package/storybook-static/assets/{README-DfVaZ9rz.js → README-AWtoYOeO.js} +1 -1
  237. package/storybook-static/assets/{README-CxsbsDff.js → README-BB_tSzAG.js} +1 -1
  238. package/storybook-static/assets/{README-QWeHqOh2.js → README-BCBBtU0T.js} +1 -1
  239. package/storybook-static/assets/{README-BFjx8Jxa.js → README-BCXjh3I1.js} +1 -1
  240. package/storybook-static/assets/{README-CxMmicr4.js → README-BDdhvdKa.js} +1 -1
  241. package/storybook-static/assets/{README-UC0a4Wh9.js → README-BEUQd7JO.js} +1 -1
  242. package/storybook-static/assets/{README-BEypAdTE.js → README-BIHT1kGT.js} +1 -1
  243. package/storybook-static/assets/{README-CdnQbIDn.js → README-BJXCE3us.js} +1 -1
  244. package/storybook-static/assets/{README-B5wBU6mA.js → README-BLog3wnj.js} +1 -1
  245. package/storybook-static/assets/{README-C2xdMez4.js → README-BPOSX1IH.js} +1 -1
  246. package/storybook-static/assets/{README-DUShQLyj.js → README-BwSjP1rm.js} +1 -1
  247. package/storybook-static/assets/{README-BzIE9gSk.js → README-C8-H1dVZ.js} +1 -1
  248. package/storybook-static/assets/{README-CxEn3Q3j.js → README-CDYORt73.js} +1 -1
  249. package/storybook-static/assets/{README-DitsKP8x.js → README-CDq7upsw.js} +1 -1
  250. package/storybook-static/assets/{README-eRuOqnaA.js → README-CF5B-uBm.js} +1 -1
  251. package/storybook-static/assets/{README-DF3qw7Jo.js → README-CF79JAmm.js} +1 -1
  252. package/storybook-static/assets/{README-Bk6x-7we.js → README-CGalXaw7.js} +1 -1
  253. package/storybook-static/assets/{README-RGQ7HMZR.js → README-CHgqsGMV.js} +1 -1
  254. package/storybook-static/assets/{README-B5Lc1yT4.js → README-COzEPNJ8.js} +1 -1
  255. package/storybook-static/assets/{README-ClH6EKpO.js → README-CRfg4Opx.js} +1 -1
  256. package/storybook-static/assets/{README-C6ryhIOV.js → README-CRk_ElRL.js} +1 -1
  257. package/storybook-static/assets/{README-SafL9Bz5.js → README-CTbRRHIT.js} +1 -1
  258. package/storybook-static/assets/{README-2lBx3R6g.js → README-C_hI3IVn.js} +1 -1
  259. package/storybook-static/assets/{README-DycS0KDV.js → README-CbCzYjzO.js} +1 -1
  260. package/storybook-static/assets/{README-mxJzt2Xo.js → README-Cb_U_ZYK.js} +1 -1
  261. package/storybook-static/assets/{README-B8RrtmaZ.js → README-CdDd6nD8.js} +1 -1
  262. package/storybook-static/assets/{README-BqMpFJKP.js → README-Cu3r4RYC.js} +1 -1
  263. package/storybook-static/assets/{README-DFGUcAOx.js → README-CxBqJjI3.js} +1 -1
  264. package/storybook-static/assets/{README-QZrJnhYv.js → README-D0EguYwa.js} +1 -1
  265. package/storybook-static/assets/{README-Brd9di5k.js → README-DA8e0atn.js} +1 -1
  266. package/storybook-static/assets/{README-DAozVWEl.js → README-DUVORqie.js} +1 -1
  267. package/storybook-static/assets/{README-Dk7syFq-.js → README-DYjyXvbd.js} +1 -1
  268. package/storybook-static/assets/{README-C1BajdmC.js → README-D_iA9J4Q.js} +1 -1
  269. package/storybook-static/assets/{README-BHrzFd3i.js → README-De02nG6s.js} +1 -1
  270. package/storybook-static/assets/{README-C702dbsS.js → README-DjM1av8U.js} +1 -1
  271. package/storybook-static/assets/{README-BUKlvu1v.js → README-DmT1wyUb.js} +1 -1
  272. package/storybook-static/assets/{README-B41_J33v.js → README-DnpmMCNN.js} +1 -1
  273. package/storybook-static/assets/{README-B1IMnjhg.js → README-FJ4JNfan.js} +1 -1
  274. package/storybook-static/assets/{README-C8oftQ5c.js → README-JqCoy91R.js} +1 -1
  275. package/storybook-static/assets/{README-BNLmyDfy.js → README-JrppLPED.js} +1 -1
  276. package/storybook-static/assets/{README-_K214jGV.js → README-MUzkojYd.js} +1 -1
  277. package/storybook-static/assets/{README-DlBBM40-.js → README-O1ww7U1S.js} +1 -1
  278. package/storybook-static/assets/{README-BRJHDPaP.js → README-SkcZXYo1.js} +1 -1
  279. package/storybook-static/assets/{README-CdMmAh_G.js → README-UfCsOg0n.js} +1 -1
  280. package/storybook-static/assets/{README-DBpH2nf1.js → README-Xu3cmYZg.js} +1 -1
  281. package/storybook-static/assets/{README-BkFTTVE2.js → README-bcnh89ek.js} +1 -1
  282. package/storybook-static/assets/{README-Bl1rJEQE.js → README-ctVjdbq7.js} +1 -1
  283. package/storybook-static/assets/{README-CUUPvXQd.js → README-diVWU6bQ.js} +1 -1
  284. package/storybook-static/assets/{README-kvlO41U2.js → README-f5UPnPkY.js} +1 -1
  285. package/storybook-static/assets/{README-BTk3TSh8.js → README-mq6pyk4G.js} +1 -1
  286. package/storybook-static/assets/{README-BhvWyeL_.js → README-o-a96Aib.js} +1 -1
  287. package/storybook-static/assets/{README-BgbNoj4_.js → README-w3_FegOo.js} +1 -1
  288. package/storybook-static/assets/{README-CM5yZ6jf.js → README-zelg96nd.js} +1 -1
  289. package/storybook-static/assets/{RadioButton-BKsBk3--.js → RadioButton-BztQMLNR.js} +1 -1
  290. package/storybook-static/assets/{RadioButton-CsM-RT0A.js → RadioButton-DUOPHyRt.js} +1 -1
  291. package/storybook-static/assets/{RadioButton.stories-D5PGiHj5.js → RadioButton.stories-BOE5cGej.js} +1 -1
  292. package/storybook-static/assets/{RadioGroup-B3bLu8Qg.js → RadioGroup-CDqbnv4J.js} +1 -1
  293. package/storybook-static/assets/{RadioGroup-BZY_jeje.js → RadioGroup-QICEWbjz.js} +1 -1
  294. package/storybook-static/assets/{RadioGroup.stories-DMfcZFp0.js → RadioGroup.stories-f2qU7hhM.js} +1 -1
  295. package/storybook-static/assets/ResponsiveLayoutPreview-BWBLsr8u.js +1 -0
  296. package/storybook-static/assets/ResponsiveLayoutPreview-CyXawjCA.css +1 -0
  297. package/storybook-static/assets/{Scrollable-DdXQmkMU.js → Scrollable-CAnjXb6_.js} +1 -1
  298. package/storybook-static/assets/{Scrollable-DLyQwImF.js → Scrollable-Cc641kuG.js} +1 -1
  299. package/storybook-static/assets/{Scrollable.stories-Du5joHAp.js → Scrollable.stories-ZQT-1f1f.js} +1 -1
  300. package/storybook-static/assets/{Select-CT_wwcDN.js → Select-BeoH_3V4.js} +1 -1
  301. package/storybook-static/assets/{Select-8PYQeQRR.js → Select-D6RLm9D5.js} +1 -1
  302. package/storybook-static/assets/{Select.stories-DIqia2Hb.js → Select.stories-DI6pVDzi.js} +1 -1
  303. package/storybook-static/assets/{Separator-DJ93-Cvq.js → Separator-De9vEg4j.js} +1 -1
  304. package/storybook-static/assets/{Separator-CelBAATq.js → Separator-tkZoR8Ft.js} +1 -1
  305. package/storybook-static/assets/{Separator.stories-DBEDpiqL.js → Separator.stories-CGZrsdLJ.js} +1 -1
  306. package/storybook-static/assets/{SerializableSelect-C-00d6wC.js → SerializableSelect-BWgkYLIe.js} +1 -1
  307. package/storybook-static/assets/{SerializableSelect.stories-CP7fJBNa.js → SerializableSelect.stories-BfGg_SmN.js} +1 -1
  308. package/storybook-static/assets/{ShimmerText-qA7CslLE.js → ShimmerText-D1ygdKrh.js} +1 -1
  309. package/storybook-static/assets/{ShimmerText.stories-CiGIbhCm.js → ShimmerText.stories-D5AB85Hj.js} +1 -1
  310. package/storybook-static/assets/{SingleDateTimeInput-B7tnYWQl.js → SingleDateTimeInput-Bf2RpSbC.js} +1 -1
  311. package/storybook-static/assets/{SingleDateTimeInput-DJ2vRS9H.js → SingleDateTimeInput-C2O-fXgE.js} +1 -1
  312. package/storybook-static/assets/{SingleDateTimeInput.stories-BK59HKLf.js → SingleDateTimeInput.stories-BUbSA1UY.js} +1 -1
  313. package/storybook-static/assets/{Slider-Cm6kd77G.js → Slider-BhfM7XZ9.js} +1 -1
  314. package/storybook-static/assets/{Slider-CXcIxUE3.js → Slider-CVPKS3XB.js} +1 -1
  315. package/storybook-static/assets/{Slider.stories-BuhFWvUX.js → Slider.stories-C6ZUJc4b.js} +1 -1
  316. package/storybook-static/assets/{SliderInput-DI2h4X8P.js → SliderInput-MMUGLDDl.js} +1 -1
  317. package/storybook-static/assets/{SliderInput-DpmYS5Zb.js → SliderInput-PwHeDeo2.js} +1 -1
  318. package/storybook-static/assets/{SliderInput.stories-CLdLS0_8.js → SliderInput.stories-zBDRonPh.js} +1 -1
  319. package/storybook-static/assets/{Sortable-CpjAZLxn.js → Sortable-BKNLJGIe.js} +1 -1
  320. package/storybook-static/assets/{Sortable.stories-Ck2MHBoR.js → Sortable.stories-CLY263mj.js} +1 -1
  321. package/storybook-static/assets/{Splitter-Cpk_5dTf.js → Splitter-PyZco_V_.js} +1 -1
  322. package/storybook-static/assets/{Splitter.stories-BIf9NNWq.js → Splitter.stories-CY3Itq_G.js} +1 -1
  323. package/storybook-static/assets/{StateSelect-BznE9WIu.js → StateSelect-BlEIRWer.js} +1 -1
  324. package/storybook-static/assets/{StateSelect-C5tnrhWT.js → StateSelect-DfUif3cG.js} +1 -1
  325. package/storybook-static/assets/{StateSelect.stories-DLvSnAcF.js → StateSelect.stories-ClSYkdz8.js} +1 -1
  326. package/storybook-static/assets/{StatusIndicator-vJAPPq2m.js → StatusIndicator-CL-WMBHT.js} +1 -1
  327. package/storybook-static/assets/{StatusIndicator.stories-B7PGK2_C.js → StatusIndicator.stories-BbpEocDe.js} +1 -1
  328. package/storybook-static/assets/{StringToggle.stories-DBpxJZL-.js → StringToggle.stories-0r9TfflS.js} +1 -1
  329. package/storybook-static/assets/{Switch-BkTvYjyQ.js → Switch-AoVSoc9P.js} +1 -1
  330. package/storybook-static/assets/{Switch-DlRrk6o7.js → Switch-HAWn3D1c.js} +1 -1
  331. package/storybook-static/assets/{Switch.stories-BtctkC2W.js → Switch.stories-D1VJIWsC.js} +1 -1
  332. package/storybook-static/assets/{Table-xOdM6spm.js → Table-CyX8frK4.js} +1 -1
  333. package/storybook-static/assets/Table.stories-DoGpFMZB.js +184 -0
  334. package/storybook-static/assets/{TableEditor.stories-GU46gl20.js → TableEditor.stories-Mh6q2awx.js} +1 -1
  335. package/storybook-static/assets/{Tabs-Cg_IYAXs.js → Tabs-BZfNXmy0.js} +1 -1
  336. package/storybook-static/assets/{Tabs.stories-2cS0B94o.js → Tabs.stories-C9L4pJDb.js} +1 -1
  337. package/storybook-static/assets/{TabsBox-Dz3AsaoR.js → TabsBox-qRCIBtqi.js} +1 -1
  338. package/storybook-static/assets/{TagInput-CCTgbRhQ.js → TagInput-CPB6lb2J.js} +1 -1
  339. package/storybook-static/assets/{TagInput.stories-CevhCeXY.js → TagInput.stories-CT6B8CVV.js} +1 -1
  340. package/storybook-static/assets/{Text-CDCeYwIB.js → Text-AbSWZQO3.js} +1 -1
  341. package/storybook-static/assets/{Textarea-CNsrFSip.js → Textarea-BY51Li7J.js} +1 -1
  342. package/storybook-static/assets/{Textarea-Ba4MyNoY.js → Textarea-Bz9O1y1I.js} +1 -1
  343. package/storybook-static/assets/{Textarea.stories-laVFWVXL.js → Textarea.stories-CJbv3jrK.js} +1 -1
  344. package/storybook-static/assets/{TimePanel-Ddy67nzH.js → TimePanel-Wn5lUiwx.js} +1 -1
  345. package/storybook-static/assets/{TimePanel.stories-OLefy0XD.js → TimePanel.stories-dF5kTdp1.js} +1 -1
  346. package/storybook-static/assets/{Toggle-BGbyfmSW.js → Toggle-BpDn9f6k.js} +1 -1
  347. package/storybook-static/assets/{Toggle-BlCBtQd1.js → Toggle-CUO99pvo.js} +1 -1
  348. package/storybook-static/assets/{Toggle.stories-BjeTDL90.js → Toggle.stories-T1Hk_etn.js} +1 -1
  349. package/storybook-static/assets/{TreeMultiSelect-ZVSLdnCU.js → TreeMultiSelect-DEsECkRj.js} +1 -1
  350. package/storybook-static/assets/{TreeMultiSelect-BJnAzsFO.js → TreeMultiSelect-bqQExCm8.js} +1 -1
  351. package/storybook-static/assets/{TreeMultiSelect.stories-BJOtdIDe.js → TreeMultiSelect.stories-DyK7bWZu.js} +1 -1
  352. package/storybook-static/assets/{TreePickerBase-BQKfhufH.js → TreePickerBase-BCbV37dL.js} +1 -1
  353. package/storybook-static/assets/{TreeSelect-BSr4FMlq.js → TreeSelect-CTvlmF81.js} +1 -1
  354. package/storybook-static/assets/{TreeSelect-DSHQjGD1.js → TreeSelect-Cepr58wS.js} +1 -1
  355. package/storybook-static/assets/{TreeSelect.stories-GRcEv-kN.js → TreeSelect.stories-RVPMBCd_.js} +1 -1
  356. package/storybook-static/assets/{TreeTable-CzmxD2ee.js → TreeTable-DznOmuAD.js} +1 -1
  357. package/storybook-static/assets/TreeTable.stories-Lx2ImfgC.js +138 -0
  358. package/storybook-static/assets/blocks-u0CCD6I1.js +287 -0
  359. package/storybook-static/assets/{check-BYM7OgKl.js → check-CHvYWZD5.js} +1 -1
  360. package/storybook-static/assets/{chevron-down-Mu7usNfR.js → chevron-down-DqHAghNU.js} +1 -1
  361. package/storybook-static/assets/{chevron-left-CiOR-CGA.js → chevron-left-Bj7vIyg-.js} +1 -1
  362. package/storybook-static/assets/{chevron-right-5Rrk5UhO.js → chevron-right-BUqG0v39.js} +1 -1
  363. package/storybook-static/assets/{chunk-W22LQPXL-Cj8Y9DHq.js → chunk-W22LQPXL-BSczDjJT.js} +1 -1
  364. package/storybook-static/assets/{circle-alert-BXB7LSDS.js → circle-alert-DXUFM6uc.js} +1 -1
  365. package/storybook-static/assets/{circle-check-DrVuYn1Q.js → circle-check-0x9vHUU_.js} +1 -1
  366. package/storybook-static/assets/{contextMenu-BaB_e0Tl.js → contextMenu-D8PjjiwD.js} +1 -1
  367. package/storybook-static/assets/{download-W-Vr_TI7.js → download-15Eb3eUj.js} +1 -1
  368. package/storybook-static/assets/{floating-ui.react-BTEwHffF.js → floating-ui.react-CypKyrM4.js} +1 -1
  369. package/storybook-static/assets/{foundationApi-BcoJ1zeX.js → foundationApi-dmPNotab.js} +1 -1
  370. package/storybook-static/assets/{foundationLib-B2kQ07LT.js → foundationLib-CyrgF87o.js} +1 -1
  371. package/storybook-static/assets/getFlexClasses-BBvI2V8h.css +1 -0
  372. package/storybook-static/assets/getFlexClasses-DOf6NlyJ.js +1 -0
  373. package/storybook-static/assets/{hooks-BgMXxXbY.js → hooks-DM8_3IU2.js} +1 -1
  374. package/storybook-static/assets/{iframe-CU98mtpe.js → iframe-BmGorvhi.js} +4 -4
  375. package/storybook-static/assets/iframe-WuXBbC_P.js +1 -0
  376. package/storybook-static/assets/{info-BhHmytIH.js → info-HMSnCOw2.js} +1 -1
  377. package/storybook-static/assets/isRecord-DXDTW-jA-DtM9YD3V.js +1 -0
  378. package/storybook-static/assets/odata-DLogt0PY.js +1 -0
  379. package/storybook-static/assets/{odataStoryFixtures-CnZ_YrUb.js → odataStoryFixtures-DiC-gXoK.js} +1 -1
  380. package/storybook-static/assets/{react-C2mSveWL.js → react-BLxZ0fqY.js} +1 -1
  381. package/storybook-static/assets/{refresh-cw-D8_L8K4Y.js → refresh-cw-Obk3FkLO.js} +1 -1
  382. package/storybook-static/assets/responsiveLayout-B9XAp69M.js +1 -0
  383. package/storybook-static/assets/{settings-2-jWGaWGT0.js → settings-2-BQ2LYeiA.js} +1 -1
  384. package/storybook-static/assets/{sortable-BteEe6X0.js → sortable-BrLDYUp8.js} +1 -1
  385. package/storybook-static/assets/{syntaxhighlighter-QEQV7K2Y-eEu1MRSg.js → syntaxhighlighter-QEQV7K2Y-JUCJEf5U.js} +1 -1
  386. package/storybook-static/assets/{trash-2-CwmbYA8i.js → trash-2-CzXfDl_F.js} +1 -1
  387. package/storybook-static/assets/{triangle-alert-TRLt6Woa.js → triangle-alert-Ww2Tuzxk.js} +1 -1
  388. package/storybook-static/assets/{useODataSelectBase-BxHmAh7D.js → useODataSelectBase-DIZSERuU.js} +1 -1
  389. package/storybook-static/assets/useODataTreeData-DLgIiNMG.js +1 -0
  390. package/storybook-static/assets/{usePickerQuery-ByBt1NRd.js → usePickerQuery-BZ1Hrn2J.js} +1 -1
  391. package/storybook-static/assets/{usePickerTriggerController-CqdXiV2q.js → usePickerTriggerController-BIarg6M4.js} +1 -1
  392. package/storybook-static/assets/{x-BPRzfyys.js → x-BmlmEU-a.js} +1 -1
  393. package/storybook-static/iframe.html +2 -2
  394. package/storybook-static/index.json +1 -1
  395. package/storybook-static/project.json +1 -1
  396. package/dist/chunks/flex-D86M_h-0.js +0 -222
  397. package/dist/chunks/flex-D86M_h-0.js.map +0 -1
  398. package/dist/chunks/grid-CFuzBigM.js +0 -186
  399. package/dist/chunks/grid-CFuzBigM.js.map +0 -1
  400. package/dist/flex/useFlexClasses.d.ts +0 -8
  401. package/dist/flex/useFlexClasses.d.ts.map +0 -1
  402. package/dist/grid/useGridClasses.d.ts +0 -10
  403. package/dist/grid/useGridClasses.d.ts.map +0 -1
  404. package/storybook-static/assets/Color-6AOWCN3U-D-64SqRn.js +0 -1
  405. package/storybook-static/assets/Flex-DYXuexPG.js +0 -61
  406. package/storybook-static/assets/Flex.stories-DH1BReS-.js +0 -300
  407. package/storybook-static/assets/FlexContainer-DO3X5f_1.js +0 -1
  408. package/storybook-static/assets/FormattedTableCell-BfEiCYOi.js +0 -15
  409. package/storybook-static/assets/Grid-ChS0GzNg.js +0 -61
  410. package/storybook-static/assets/Grid.stories-ClZzgSfZ.js +0 -495
  411. package/storybook-static/assets/GridContainer-K9R_IHaw.css +0 -1
  412. package/storybook-static/assets/Table.stories-FORIU5CX.js +0 -184
  413. package/storybook-static/assets/TreeTable.stories-35ufhVh1.js +0 -138
  414. package/storybook-static/assets/blocks-SX-KK9Lg.js +0 -48
  415. package/storybook-static/assets/components-BEDJAYMp.js +0 -241
  416. package/storybook-static/assets/iframe-DaZCH1M-.js +0 -1
  417. package/storybook-static/assets/media-D9cE2tzi.js +0 -1
  418. package/storybook-static/assets/odata-yWIAioh9.js +0 -1
  419. package/storybook-static/assets/useFlexClasses-IXK2se1Y.css +0 -1
  420. package/storybook-static/assets/useFlexClasses-SgVG37Bb.js +0 -1
  421. package/storybook-static/assets/useODataTreeData-dSt1HJsq.js +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/floating-windows/FloatingWindows.module.scss","../../src/floating-windows/model/useFloatingWindowsBounds.ts","../../src/floating-windows/model/FloatingWindowsContext.ts","../../src/floating-windows/model/useFloatingWindowsStore.ts","../../src/floating-windows/FloatingWindowsBoundary.tsx","../../src/floating-windows/lib/constrainFloatingWindowPosition.ts","../../src/floating-windows/lib/isFloatingWindowId.ts","../../src/floating-windows/lib/selectFloatingWindowCascadePosition.ts","../../src/floating-windows/model/createFloatingWindowsStore.ts","../../src/floating-windows/lib/floatingWindowsStorage.ts","../../src/floating-windows/model/useFloatingWindowsPersistence.ts","../../src/floating-windows/FloatingWindowsProvider.tsx","../../src/floating-windows/FloatingWindows.tsx","../../src/floating-windows/FloatingWindowHeader.tsx","../../src/floating-windows/lib/getFloatingWindowStyle.ts","../../src/floating-windows/lib/selectFloatingWindowRestoreFocus.ts","../../src/floating-windows/model/useFloatingWindowFocus.ts","../../src/floating-windows/model/useFloatingWindowMeasurements.ts","../../src/floating-windows/model/useFloatingWindowMove.ts","../../src/floating-windows/model/useFloatingWindowSnapshot.ts","../../src/floating-windows/FloatingWindow.tsx"],"sourcesContent":[".boundary,\n.window,\n.header,\n.handle,\n.content {\n\tmin-width: 0;\n}\n\n.boundary,\n.window,\n.content {\n\tmin-height: 0;\n}\n\n.boundary,\n.window {\n\toverflow: hidden;\n}\n\n.boundary {\n\tposition: relative;\n\twidth: 100%;\n\theight: 100%;\n\tisolation: isolate;\n\tpointer-events: none;\n}\n\n.window {\n\tposition: absolute;\n\tmax-width: 100%;\n\tmax-height: 100%;\n\tbox-sizing: border-box;\n\tborder: var(--border);\n\tpointer-events: auto;\n}\n\n.header {\n\tflex: 0 0 auto;\n\tpadding: var(--space-xs);\n\tborder-bottom: var(--border);\n}\n\n.handle {\n\tflex: 1 1 auto;\n\ttext-align: start;\n\tcursor: grab;\n\ttouch-action: none;\n\tuser-select: none;\n\t&[aria-pressed=\"true\"] {\n\t\tcursor: grabbing;\n\t}\n}\n\n.content {\n\tflex: 1 1 auto;\n\tpadding: var(--space-md);\n\toverflow: auto;\n\toverscroll-behavior: contain;\n\toverflow-wrap: anywhere;\n}\n","import { useEffect, useRef } from \"react\";\n\nimport { type FloatingWindowsStore } from \"./floatingWindowsTypes\";\n\n/** Одна область владеет своим containing block и одним observer; CSS-размер не копируется в React state. */\nexport function useFloatingWindowsBounds(store: FloatingWindowsStore) {\n\tconst ref = useRef<HTMLDivElement>(null);\n\tuseEffect(() => {\n\t\tconst element = ref.current;\n\t\tif (!element) return;\n\t\tconst measure = () => {\n\t\t\t// Ноль — законная скрытая область, а не повод подменять client box внешним border box.\n\t\t\tstore.getState().setBounds({ width: element.clientWidth, height: element.clientHeight });\n\t\t};\n\t\tmeasure();\n\t\tif (typeof ResizeObserver === \"undefined\") return;\n\t\tconst observer = new ResizeObserver(measure);\n\t\tobserver.observe(element);\n\t\treturn () => observer.disconnect();\n\t}, [store]);\n\treturn ref;\n}\n","import { createContext } from \"react\";\n\nimport { type FloatingWindowsStore } from \"./floatingWindowsTypes\";\n\n/** Context передаёт стабильный store конкретной области, а не изменяющийся снимок всех окон. */\nexport const FloatingWindowsContext = createContext<FloatingWindowsStore | null>(null);\n","import { useContext } from \"react\";\n\nimport { createMissingContextError } from \"@ryuzaki13/react-foundation-lib/error\";\n\nimport { FloatingWindowsContext } from \"./FloatingWindowsContext\";\nimport { type FloatingWindowsStore } from \"./floatingWindowsTypes\";\n\n/** Любая вложенная композиция использует ближайшую область; child cloning и глобального registry нет. */\nexport function useFloatingWindowsStore(): FloatingWindowsStore {\n\tconst store = useContext(FloatingWindowsContext);\n\tif (!store) throw createMissingContextError({ hookName: \"useFloatingWindowsStore\", providerName: \"FloatingWindows\" });\n\treturn store;\n}\n","import { type CSSProperties, type ReactNode } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport styles from \"./FloatingWindows.module.scss\";\nimport { useFloatingWindowsBounds } from \"./model/useFloatingWindowsBounds\";\nimport { useFloatingWindowsStore } from \"./model/useFloatingWindowsStore\";\n\ntype FloatingWindowsBoundaryProps = Readonly<{ children: ReactNode; className?: string; style?: CSSProperties }>;\n\n/** Измеряемый containing block не перехватывает события страницы за пределами самих окон. */\nexport function FloatingWindowsBoundary({ children, className, style }: FloatingWindowsBoundaryProps) {\n\tconst store = useFloatingWindowsStore();\n\tconst ref = useFloatingWindowsBounds(store);\n\treturn (\n\t\t<div ref={ref} className={cn(styles.boundary, className)} style={style} data-floating-windows=\"\">\n\t\t\t{children}\n\t\t</div>\n\t);\n}\n","import { clampNumberScaleValue } from \"@ryuzaki13/react-foundation-lib/number-scale\";\n\nimport { type FloatingWindowPosition, type FloatingWindowSize } from \"../model/floatingWindowsTypes\";\n\n/**\n * Полностью удерживает измеренное окно внутри рабочей области. Пока одна из\n * сторон не измерена, сохраняет исходную позицию, включая её object identity.\n * Окно больше области привязывается к её левому верхнему углу по нужной оси.\n */\nexport function constrainFloatingWindowPosition(\n\tposition: FloatingWindowPosition,\n\tsize: FloatingWindowSize | null,\n\tbounds: FloatingWindowSize | null\n): FloatingWindowPosition {\n\tif (!Number.isFinite(position.x) || !Number.isFinite(position.y)) {\n\t\tthrow new RangeError(\"Координаты плавающего окна должны быть конечными числами.\");\n\t}\n\n\tfor (const dimensions of [size, bounds]) {\n\t\tif (\n\t\t\tdimensions !== null &&\n\t\t\t(!Number.isFinite(dimensions.width) || !Number.isFinite(dimensions.height) || dimensions.width < 0 || dimensions.height < 0)\n\t\t) {\n\t\t\tthrow new RangeError(\"Размер окна и рабочей области должен состоять из конечных неотрицательных чисел.\");\n\t\t}\n\t}\n\n\tif (size === null || bounds === null || bounds.width === 0 || bounds.height === 0) {\n\t\treturn position;\n\t}\n\n\tconst x = clampNumberScaleValue(position.x, 0, Math.max(0, bounds.width - size.width));\n\tconst y = clampNumberScaleValue(position.y, 0, Math.max(0, bounds.height - size.height));\n\n\treturn x === position.x && y === position.y ? position : { x, y };\n}\n","/** Одинаковая граница identity для React-регистрации и недоверенного cache; ID не нормализуется неявно. */\nexport function isFloatingWindowId(value: unknown): value is string {\n\treturn typeof value === \"string\" && value.trim().length > 0 && value.length <= 256;\n}\n","import { type FloatingWindowPosition } from \"../model/floatingWindowsTypes\";\n\n/**\n * Разводит совпавшие начальные позиции открытых окон по диагонали. Каждая\n * попытка проверяет следующий шаг каскада; число попыток ограничено числом\n * занятых позиций, поэтому даже плотная группа окон не создаёт бесконечный поиск.\n */\nexport function selectFloatingWindowCascadePosition(\n\tdefaultPosition: FloatingWindowPosition,\n\toccupiedPositions: readonly FloatingWindowPosition[],\n\tcascadeOffset = 24\n): FloatingWindowPosition {\n\tif (!Number.isFinite(cascadeOffset) || cascadeOffset < 0) {\n\t\tthrow new RangeError(\"Смещение каскада должно быть конечным неотрицательным числом.\");\n\t}\n\n\tfor (const position of [defaultPosition, ...occupiedPositions]) {\n\t\tif (!Number.isFinite(position.x) || !Number.isFinite(position.y)) {\n\t\t\tthrow new RangeError(\"Координаты каскада плавающих окон должны быть конечными числами.\");\n\t\t}\n\t}\n\n\tif (cascadeOffset === 0) return defaultPosition;\n\n\tlet position = defaultPosition;\n\n\tfor (let attempt = 0; attempt < occupiedPositions.length; attempt += 1) {\n\t\tconst occupied = occupiedPositions.some((candidate) => candidate.x === position.x && candidate.y === position.y);\n\t\tif (!occupied) return position;\n\n\t\tconst x = position.x + cascadeOffset;\n\t\tconst y = position.y + cascadeOffset;\n\t\tif (!Number.isFinite(x) || !Number.isFinite(y)) {\n\t\t\tthrow new RangeError(\"Координаты каскада вышли за пределы конечных чисел.\");\n\t\t}\n\t\tposition = { x, y };\n\t}\n\n\treturn position;\n}\n","import { createStore } from \"zustand/vanilla\";\n\nimport { constrainFloatingWindowPosition } from \"../lib/constrainFloatingWindowPosition\";\nimport { isFloatingWindowId } from \"../lib/isFloatingWindowId\";\nimport { selectFloatingWindowCascadePosition } from \"../lib/selectFloatingWindowCascadePosition\";\n\nimport {\n\ttype FloatingWindowPosition,\n\ttype FloatingWindowSnapshot,\n\ttype FloatingWindowsState,\n\ttype FloatingWindowsStore,\n\ttype FloatingWindowsStoreOptions\n} from \"./floatingWindowsTypes\";\n\n/**\n * Создаёт изолированное состояние одной группы modeless-окон. Здесь нет DOM,\n * подписок React и storage: последовательные команды всегда читают актуальный\n * snapshot, а неизменённые окна сохраняют identity для узких UI-подписок.\n */\nexport function createFloatingWindowsStore({ cascadeOffset = 24 }: FloatingWindowsStoreOptions = {}): FloatingWindowsStore {\n\tif (!Number.isFinite(cascadeOffset) || cascadeOffset < 0) {\n\t\tthrow new RangeError(\"Смещение каскада должно быть конечным неотрицательным числом.\");\n\t}\n\n\treturn createStore<FloatingWindowsState>()((set, get) => ({\n\t\twindows: new Map<string, FloatingWindowSnapshot>(),\n\t\tpositions: new Map<string, FloatingWindowPosition>(),\n\t\torder: [],\n\t\tbounds: null,\n\n\t\tregister: (id, defaultPosition = { x: 24, y: 24 }) => {\n\t\t\tif (!isFloatingWindowId(id)) {\n\t\t\t\tthrow new Error(\"Идентификатор плавающего окна должен содержать от 1 до 256 символов и не состоять из пробелов.\");\n\t\t\t}\n\t\t\tconst state = get();\n\t\t\tif (state.windows.has(id)) {\n\t\t\t\tthrow new Error(`Плавающее окно с идентификатором «${id}» уже открыто в этой рабочей области.`);\n\t\t\t}\n\n\t\t\tconstrainFloatingWindowPosition(defaultPosition, null, null);\n\t\t\tconst savedPosition = state.positions.get(id);\n\t\t\tconst position =\n\t\t\t\tsavedPosition ??\n\t\t\t\tselectFloatingWindowCascadePosition(\n\t\t\t\t\tdefaultPosition,\n\t\t\t\t\tArray.from(state.windows.values(), (window) => window.position),\n\t\t\t\t\tcascadeOffset\n\t\t\t\t);\n\t\t\tconst order = [...state.order, id];\n\t\t\tconst windows = new Map(state.windows);\n\t\t\twindows.set(id, { position, size: null, layer: order.length });\n\t\t\tconst positions = savedPosition ? state.positions : new Map(state.positions).set(id, position);\n\t\t\tset({ windows, positions, order });\n\n\t\t\tlet registered = true;\n\n\t\t\treturn () => {\n\t\t\t\tif (!registered) return;\n\t\t\t\tregistered = false;\n\n\t\t\t\tset((current) => {\n\t\t\t\t\tconst order = current.order.filter((windowId) => windowId !== id);\n\t\t\t\t\tconst windows = new Map(current.windows);\n\t\t\t\t\twindows.delete(id);\n\n\t\t\t\t\torder.forEach((windowId, index) => {\n\t\t\t\t\t\tconst snapshot = windows.get(windowId);\n\t\t\t\t\t\tif (snapshot && snapshot.layer !== index + 1) {\n\t\t\t\t\t\t\twindows.set(windowId, { ...snapshot, layer: index + 1 });\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\treturn { windows, order };\n\t\t\t\t});\n\t\t\t};\n\t\t},\n\n\t\tsetPosition: (id, position) => {\n\t\t\tset((state) => {\n\t\t\t\tconst snapshot = state.windows.get(id);\n\t\t\t\t// Завершающее событие указателя может прийти после удаления DOM-окна.\n\t\t\t\tif (!snapshot) return state;\n\t\t\t\tconst constrained = constrainFloatingWindowPosition(position, snapshot.size, state.bounds);\n\t\t\t\tif (snapshot.position.x === constrained.x && snapshot.position.y === constrained.y) return state;\n\n\t\t\t\treturn {\n\t\t\t\t\twindows: new Map(state.windows).set(id, { ...snapshot, position: constrained }),\n\t\t\t\t\tpositions: new Map(state.positions).set(id, constrained)\n\t\t\t\t};\n\t\t\t});\n\t\t},\n\n\t\tsetSize: (id, size) => {\n\t\t\tset((state) => {\n\t\t\t\tconst snapshot = state.windows.get(id);\n\t\t\t\tif (!snapshot) return state;\n\t\t\t\tconst position = constrainFloatingWindowPosition(snapshot.position, size, state.bounds);\n\t\t\t\tif (snapshot.size?.width === size.width && snapshot.size.height === size.height && position === snapshot.position) {\n\t\t\t\t\treturn state;\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\twindows: new Map(state.windows).set(id, { ...snapshot, position, size }),\n\t\t\t\t\tpositions: position === snapshot.position ? state.positions : new Map(state.positions).set(id, position)\n\t\t\t\t};\n\t\t\t});\n\t\t},\n\n\t\tsetBounds: (bounds) => {\n\t\t\tconstrainFloatingWindowPosition({ x: 0, y: 0 }, null, bounds);\n\n\t\t\tset((state) => {\n\t\t\t\tif (state.bounds?.width === bounds?.width && state.bounds?.height === bounds?.height) return state;\n\n\t\t\t\tconst windows = new Map(state.windows);\n\t\t\t\tconst positions = new Map(state.positions);\n\t\t\t\tlet repositioned = false;\n\n\t\t\t\tfor (const [id, snapshot] of state.windows) {\n\t\t\t\t\tconst position = constrainFloatingWindowPosition(snapshot.position, snapshot.size, bounds);\n\t\t\t\t\tif (position === snapshot.position) continue;\n\n\t\t\t\t\trepositioned = true;\n\t\t\t\t\twindows.set(id, { ...snapshot, position });\n\t\t\t\t\tpositions.set(id, position);\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tbounds,\n\t\t\t\t\twindows: repositioned ? windows : state.windows,\n\t\t\t\t\tpositions: repositioned ? positions : state.positions\n\t\t\t\t};\n\t\t\t});\n\t\t},\n\n\t\tbringToFront: (id) => {\n\t\t\tset((state) => {\n\t\t\t\tif (!state.windows.has(id) || state.order.at(-1) === id) return state;\n\n\t\t\t\tconst order = [...state.order.filter((windowId) => windowId !== id), id];\n\t\t\t\tconst windows = new Map(state.windows);\n\n\t\t\t\torder.forEach((windowId, index) => {\n\t\t\t\t\tconst snapshot = windows.get(windowId);\n\t\t\t\t\tif (snapshot && snapshot.layer !== index + 1) {\n\t\t\t\t\t\twindows.set(windowId, { ...snapshot, layer: index + 1 });\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn { windows, order };\n\t\t\t});\n\t\t},\n\n\t\trestorePositions: (restoredPositions) => {\n\t\t\t// Сначала проверяем весь snapshot: ошибка не должна частично применить восстановление.\n\t\t\tfor (const [id, position] of restoredPositions) {\n\t\t\t\tif (!isFloatingWindowId(id)) {\n\t\t\t\t\tthrow new Error(\"Идентификатор плавающего окна должен содержать от 1 до 256 символов и не состоять из пробелов.\");\n\t\t\t\t}\n\t\t\t\tconstrainFloatingWindowPosition(position, null, null);\n\t\t\t}\n\n\t\t\tset((state) => {\n\t\t\t\tconst positions = new Map<string, FloatingWindowPosition>();\n\t\t\t\tfor (const [id, position] of restoredPositions) {\n\t\t\t\t\tconst saved = state.positions.get(id);\n\t\t\t\t\tpositions.set(id, saved && saved.x === position.x && saved.y === position.y ? saved : position);\n\t\t\t\t}\n\n\t\t\t\tconst windows = new Map(state.windows);\n\t\t\t\tlet repositioned = false;\n\n\t\t\t\tfor (const [id, snapshot] of state.windows) {\n\t\t\t\t\tconst constrained = constrainFloatingWindowPosition(\n\t\t\t\t\t\tpositions.get(id) ?? snapshot.position,\n\t\t\t\t\t\tsnapshot.size,\n\t\t\t\t\t\tstate.bounds\n\t\t\t\t\t);\n\t\t\t\t\tconst unchanged = constrained.x === snapshot.position.x && constrained.y === snapshot.position.y;\n\t\t\t\t\tconst position = unchanged ? snapshot.position : constrained;\n\t\t\t\t\tpositions.set(id, position);\n\t\t\t\t\tif (unchanged) continue;\n\n\t\t\t\t\trepositioned = true;\n\t\t\t\t\twindows.set(id, { ...snapshot, position });\n\t\t\t\t}\n\n\t\t\t\tconst samePositions =\n\t\t\t\t\tpositions.size === state.positions.size &&\n\t\t\t\t\tArray.from(positions).every(([id, position]) => state.positions.get(id) === position);\n\t\t\t\tif (!repositioned && samePositions) return state;\n\n\t\t\t\treturn { windows: repositioned ? windows : state.windows, positions: samePositions ? state.positions : positions };\n\t\t\t});\n\t\t}\n\t}));\n}\n","import { isRecord } from \"@ryuzaki13/react-foundation-lib/validators\";\n\nimport { type FloatingWindowPosition } from \"../model/floatingWindowsTypes\";\n\nimport { isFloatingWindowId } from \"./isFloatingWindowId\";\n\nconst maximumPositions = 200;\nconst maximumTextLength = 64 * 1024;\n\n/** Неавторитетный cache не мигрируется: неизвестная версия/форма отклоняется целиком и не попадает в геометрию. */\nexport function readFloatingWindowsPositions(text: string): ReadonlyMap<string, FloatingWindowPosition> {\n\tif (text.length > maximumTextLength) throw new Error(\"Сохранённые позиции окон превышают допустимый размер.\");\n\tconst value: unknown = JSON.parse(text);\n\tif (!isRecord(value) || value.version !== 1 || !Array.isArray(value.positions) || value.positions.length > maximumPositions) {\n\t\tthrow new Error(\"Неизвестный формат сохранённых позиций окон.\");\n\t}\n\tconst positions = new Map<string, FloatingWindowPosition>();\n\tfor (const entry of value.positions) {\n\t\tif (\n\t\t\t!isRecord(entry) ||\n\t\t\t!isFloatingWindowId(entry.id) ||\n\t\t\tpositions.has(entry.id) ||\n\t\t\ttypeof entry.x !== \"number\" ||\n\t\t\t!Number.isFinite(entry.x) ||\n\t\t\ttypeof entry.y !== \"number\" ||\n\t\t\t!Number.isFinite(entry.y)\n\t\t) {\n\t\t\tthrow new Error(\"Сохранённая позиция окна не прошла проверку.\");\n\t\t}\n\t\tpositions.set(entry.id, { x: entry.x, y: entry.y });\n\t}\n\treturn positions;\n}\n\n/**\n * Сохраняет координаты последних записей Map без контента и DOM-размеров.\n * Ограничивает также длину JSON: экранированный ID может занимать существенно\n * больше исходных 256 символов, поэтому одного ограничения числа окон мало.\n */\nexport function serializeFloatingWindowsPositions(positions: ReadonlyMap<string, FloatingWindowPosition>): string {\n\tconst entries = [...positions].slice(-maximumPositions);\n\tconst prefix = '{\"version\":1,\"positions\":[';\n\tconst suffix = \"]}\";\n\tconst serializedEntries: string[] = [];\n\tlet textLength = prefix.length + suffix.length;\n\n\tfor (let index = entries.length - 1; index >= 0; index -= 1) {\n\t\tconst [id, position] = entries[index];\n\t\tif (!isFloatingWindowId(id) || !Number.isFinite(position.x) || !Number.isFinite(position.y)) {\n\t\t\tthrow new Error(\"Сохранённая позиция окна не прошла проверку.\");\n\t\t}\n\n\t\tconst entry = JSON.stringify({ id, x: position.x, y: position.y });\n\t\tconst nextLength = textLength + entry.length + (serializedEntries.length === 0 ? 0 : 1);\n\t\tif (nextLength > maximumTextLength) break;\n\n\t\tserializedEntries.push(entry);\n\t\ttextLength = nextLength;\n\t}\n\n\treturn `${prefix}${serializedEntries.reverse().join(\",\")}${suffix}`;\n}\n","import { useEffect, useEffectEvent } from \"react\";\n\nimport { readFloatingWindowsPositions, serializeFloatingWindowsPositions } from \"../lib/floatingWindowsStorage\";\n\nimport { type FloatingWindowsStore } from \"./floatingWindowsTypes\";\n\n/** Opt-in persistence после hydration; запрет/quota/corrupt cache не блокируют работу окна в памяти. */\nexport function useFloatingWindowsPersistence(\n\tstore: FloatingWindowsStore,\n\tstorageKey?: string,\n\tonStorageError?: (error: unknown) => void\n): void {\n\tconst reportError = useEffectEvent((error: unknown) => onStorageError?.(error));\n\tuseEffect(() => {\n\t\tif (!storageKey) return;\n\t\tlet storage: Storage;\n\t\ttry {\n\t\t\tstorage = window.localStorage;\n\t\t\tconst saved = storage.getItem(storageKey);\n\t\t\tif (saved !== null) store.getState().restorePositions(readFloatingWindowsPositions(saved));\n\t\t} catch (error) {\n\t\t\treportError(error);\n\t\t\t// Ошибка чтения оставляет рабочее состояние. Доступ к storage повторяется только при новом mount.\n\t\t\treturn;\n\t\t}\n\t\tlet writable = true;\n\t\tconst write = () => {\n\t\t\tif (!writable) return;\n\t\t\ttry {\n\t\t\t\tstorage.setItem(storageKey, serializeFloatingWindowsPositions(store.getState().positions));\n\t\t\t} catch (error) {\n\t\t\t\twritable = false;\n\t\t\t\treportError(error);\n\t\t\t}\n\t\t};\n\t\t// Подписка ставится после restore: регистрация children не может перезаписать ещё не прочитанные координаты.\n\t\twrite();\n\t\treturn store.subscribe((state, previous) => {\n\t\t\tif (state.positions !== previous.positions) write();\n\t\t});\n\t}, [store, storageKey]);\n}\n","import { useState, type ReactNode } from \"react\";\n\nimport { createFloatingWindowsStore } from \"./model/createFloatingWindowsStore\";\nimport { FloatingWindowsContext } from \"./model/FloatingWindowsContext\";\nimport { useFloatingWindowsPersistence } from \"./model/useFloatingWindowsPersistence\";\n\ntype FloatingWindowsProviderProps = Readonly<{\n\tchildren: ReactNode;\n\tcascadeOffset?: number;\n\tstorageKey?: string;\n\tonStorageError?: (error: unknown) => void;\n}>;\n\n/** Один экземпляр области — один store. Провайдер компонует владельцев state/persistence, не реализуя их алгоритмы. */\nexport function FloatingWindowsProvider({ children, cascadeOffset, storageKey, onStorageError }: FloatingWindowsProviderProps) {\n\tconst [store] = useState(() => createFloatingWindowsStore({ cascadeOffset }));\n\tuseFloatingWindowsPersistence(store, storageKey, onStorageError);\n\treturn <FloatingWindowsContext value={store}>{children}</FloatingWindowsContext>;\n}\n","import { type CSSProperties, type ReactNode } from \"react\";\n\nimport { FloatingWindowsBoundary } from \"./FloatingWindowsBoundary\";\nimport { FloatingWindowsProvider } from \"./FloatingWindowsProvider\";\n\nexport type FloatingWindowsProps = Readonly<{\n\tchildren: ReactNode;\n\tclassName?: string;\n\t/** Размер и размещение области задаёт host: например, height для панели или position:fixed/inset для слоя страницы. */\n\tstyle?: CSSProperties;\n\t/** Отдельный ключ неавторитетных координат. Без ключа browser storage не используется. Смена ключа пересоздаёт область. */\n\tstorageKey?: string;\n\t/** Начальный шаг каскада в CSS px; используется только при создании области. */\n\tcascadeOffset?: number;\n\t/** Диагностика отказа сохранения; окно продолжает работать в памяти. */\n\tonStorageError?: (error: unknown) => void;\n}>;\n\n/** Независимая немодальная область для свободно размещаемых окон; контент не анализируется и не клонируется. */\nexport function FloatingWindows({ children, className, style, storageKey, cascadeOffset, onStorageError }: FloatingWindowsProps) {\n\tif (storageKey !== undefined && !storageKey.trim()) throw new Error(\"Ключ сохранения области окон не может быть пустым.\");\n\treturn (\n\t\t<FloatingWindowsProvider key={storageKey} storageKey={storageKey} cascadeOffset={cascadeOffset} onStorageError={onStorageError}>\n\t\t\t<FloatingWindowsBoundary className={className} style={style}>\n\t\t\t\t{children}\n\t\t\t</FloatingWindowsBoundary>\n\t\t</FloatingWindowsProvider>\n\t);\n}\n","import { type ReactNode } from \"react\";\n\nimport { Move, X } from \"lucide-react\";\n\nimport { Button } from \"../button\";\nimport { FlexContainer } from \"../flex\";\n\nimport styles from \"./FloatingWindows.module.scss\";\nimport { type FloatingWindowMoveResult } from \"./model/floatingWindowMoveTypes\";\n\ntype FloatingWindowHeaderProps = Readonly<{\n\ttitle: string;\n\ttitleId: string;\n\tinstructionId: string;\n\tactions?: ReactNode;\n\tonClose?: () => void;\n\tmove: FloatingWindowMoveResult;\n}>;\n\n/** Handle — самостоятельная кнопка: действия и закрытие не становятся вложенными interactive controls. */\nexport function FloatingWindowHeader({ title, titleId, instructionId, actions, onClose, move }: FloatingWindowHeaderProps) {\n\treturn (\n\t\t<FlexContainer row align=\"center\" gap=\"xs\" className={styles.header}>\n\t\t\t<Button\n\t\t\t\tappearance=\"ghost\"\n\t\t\t\ticon={<Move size={16} />}\n\t\t\t\tclassName={styles.handle}\n\t\t\t\taria-label={`Переместить окно «${title}»`}\n\t\t\t\taria-describedby={instructionId}\n\t\t\t\taria-pressed={move.moving}\n\t\t\t\tdata-floating-window-action=\"move\"\n\t\t\t\t{...move.handleProps}>\n\t\t\t\t<span id={titleId}>{title}</span>\n\t\t\t</Button>\n\t\t\t{actions}\n\t\t\t{onClose && (\n\t\t\t\t<Button\n\t\t\t\t\ticon={<X size={16} />}\n\t\t\t\t\tappearance=\"ghost\"\n\t\t\t\t\taria-label={`Закрыть окно «${title}»`}\n\t\t\t\t\tdata-floating-window-action=\"close\"\n\t\t\t\t\tonClick={onClose}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</FlexContainer>\n\t);\n}\n","import { type CSSProperties } from \"react\";\n\nimport { type FloatingWindowSnapshot } from \"../model/floatingWindowsTypes\";\n\n/** CSS ограничивает начальный SSR layout, затем измеренный размер уточняет те же границы. */\nexport function getFloatingWindowStyle(\n\tsnapshot: FloatingWindowSnapshot,\n\twidth: CSSProperties[\"width\"],\n\theight: CSSProperties[\"height\"]\n): CSSProperties {\n\tconst cssWidth = snapshot.size?.width ?? (typeof width === \"number\" ? width : null);\n\tconst cssHeight = snapshot.size?.height ?? (typeof height === \"number\" ? height : null);\n\treturn {\n\t\twidth,\n\t\theight,\n\t\tzIndex: snapshot.layer,\n\t\t// Intrinsic/relative CSS-размер нельзя вычислять на сервере или вставлять как auto в calc.\n\t\t// До измерения такая ось начинается с безопасного origin, без недействительных CSS declarations.\n\t\tleft: cssWidth === null ? 0 : `clamp(0px, ${snapshot.position.x}px, max(0px, calc(100% - ${cssWidth}px)))`,\n\t\ttop: cssHeight === null ? 0 : `clamp(0px, ${snapshot.position.y}px, max(0px, calc(100% - ${cssHeight}px)))`\n\t};\n}\n","/** Закрытие неактивного modeless-окна не должно отнимать фокус у соседнего окна или страницы. */\nexport function selectFloatingWindowRestoreFocus(panel: HTMLElement | null): HTMLElement | undefined {\n\tconst active = document.activeElement;\n\t// При StrictMode replay панель ещё подключена: её собственный фокус не заменяет opener.\n\treturn active instanceof HTMLElement && active !== document.body && !panel?.contains(active) ? active : undefined;\n}\n","import { type RefObject, useRef } from \"react\";\n\nimport { useOverlayFocus } from \"@ryuzaki13/react-foundation-lib/dom\";\n\nimport { selectFloatingWindowRestoreFocus } from \"../lib/selectFloatingWindowRestoreFocus\";\n\n/** Modeless-политика над общим focus lifecycle, без собственного focus trap или глобальных listeners. */\nexport function useFloatingWindowFocus(panelRef: RefObject<HTMLElement | null>): void {\n\tconst attachedPanelRef = useRef<HTMLElement | null>(null);\n\tuseOverlayFocus({\n\t\tactive: true,\n\t\ttrapFocus: false,\n\t\tcontainerRef: panelRef,\n\t\tinitialFocus: (panel) => {\n\t\t\t// React StrictMode обнуляет DOM ref до effect cleanup, хотя focused node ещё подключён.\n\t\t\t// Идентичность реально получившей фокус панели нужна до завершения этого cleanup.\n\t\t\tattachedPanelRef.current = panel;\n\t\t\treturn panel;\n\t\t},\n\t\trestoreFocusTarget: () => selectFloatingWindowRestoreFocus(attachedPanelRef.current)\n\t});\n}\n","import { useEffect, type RefObject } from \"react\";\n\nimport { type FloatingWindowsStore } from \"./floatingWindowsTypes\";\n\n/** Измеряется фактический border box: проценты, rem и длинное содержимое не заменяются вымышленными 300×200. */\nexport function useFloatingWindowMeasurements(store: FloatingWindowsStore, id: string, ref: RefObject<HTMLElement | null>): void {\n\tuseEffect(() => {\n\t\tconst element = ref.current;\n\t\tif (!element) return;\n\t\tconst measure = () => {\n\t\t\tconst width = element.offsetWidth;\n\t\t\tconst height = element.offsetHeight;\n\t\t\t// Скрытая область не даёт usable geometry; её появление будет замечено тем же observer.\n\t\t\tif (width > 0 && height > 0) store.getState().setSize(id, { width, height });\n\t\t};\n\t\tmeasure();\n\t\tif (typeof ResizeObserver === \"undefined\") return;\n\t\tconst observer = new ResizeObserver(measure);\n\t\tobserver.observe(element);\n\t\treturn () => observer.disconnect();\n\t}, [store, id, ref]);\n}\n","import { useEffect, useEffectEvent, useRef, useState } from \"react\";\n\nimport { constrainFloatingWindowPosition } from \"../lib/constrainFloatingWindowPosition\";\n\nimport { type FloatingWindowMoveOptions, type FloatingWindowMoveResult, type FloatingWindowMoveSession } from \"./floatingWindowMoveTypes\";\nimport { type FloatingWindowPosition } from \"./floatingWindowsTypes\";\n\n/** Pointer capture и клавиатура используют одну транзакцию перемещения. RAF не обновляет React/store на каждом кадре. */\nexport function useFloatingWindowMove({ id, store, panelRef, onPositionChange }: FloatingWindowMoveOptions): FloatingWindowMoveResult {\n\tconst sessionRef = useRef<FloatingWindowMoveSession | null>(null);\n\tconst frameRef = useRef<number | null>(null);\n\tconst [moving, setMoving] = useState(false);\n\n\tconst clearPreview = () => {\n\t\tif (frameRef.current !== null) cancelAnimationFrame(frameRef.current);\n\t\tframeRef.current = null;\n\t\tpanelRef.current?.style.removeProperty(\"transform\");\n\t};\n\tconst release = (session: FloatingWindowMoveSession | null) => {\n\t\tif (session?.pointer?.target.hasPointerCapture(session.pointer.id)) {\n\t\t\tsession.pointer.target.releasePointerCapture(session.pointer.id);\n\t\t}\n\t};\n\tconst finish = (commit: boolean) => {\n\t\tconst session = sessionRef.current;\n\t\tif (!session) return;\n\t\tsessionRef.current = null;\n\t\tclearPreview();\n\t\trelease(session);\n\t\tsetMoving(false);\n\t\tif (!commit) return;\n\t\tstore.getState().setPosition(id, session.position);\n\t\tconst position = store.getState().windows.get(id)?.position;\n\t\tif (position && (position.x !== session.origin.x || position.y !== session.origin.y)) onPositionChange?.(position);\n\t};\n\tconst preview = (position: FloatingWindowPosition) => {\n\t\tconst session = sessionRef.current;\n\t\tif (!session) return;\n\t\tconst state = store.getState();\n\t\tsession.position = constrainFloatingWindowPosition(position, state.windows.get(id)?.size ?? null, state.bounds);\n\t\tif (frameRef.current !== null) return;\n\t\tframeRef.current = requestAnimationFrame(() => {\n\t\t\tframeRef.current = null;\n\t\t\tconst current = sessionRef.current;\n\t\t\tif (current && panelRef.current) {\n\t\t\t\tpanelRef.current.style.transform = `translate(${current.position.x - current.origin.x}px, ${current.position.y - current.origin.y}px)`;\n\t\t\t}\n\t\t});\n\t};\n\tconst begin = (pointer: FloatingWindowMoveSession[\"pointer\"]) => {\n\t\tif (sessionRef.current) return;\n\t\tconst snapshot = store.getState().windows.get(id);\n\t\tif (!snapshot) return;\n\t\tstore.getState().bringToFront(id);\n\t\tsessionRef.current = { origin: snapshot.position, position: snapshot.position, pointer };\n\t\tsetMoving(true);\n\t};\n\tconst cancelOnGeometryChange = useEffectEvent(() => finish(false));\n\tconst dispose = useEffectEvent(() => {\n\t\tconst session = sessionRef.current;\n\t\tsessionRef.current = null;\n\t\tclearPreview();\n\t\trelease(session);\n\t});\n\tuseEffect(() => {\n\t\tconst unsubscribe = store.subscribe((state, previous) => {\n\t\t\tconst before = previous.windows.get(id);\n\t\t\tconst after = state.windows.get(id);\n\t\t\tif (state.bounds !== previous.bounds || before?.size !== after?.size || before?.position !== after?.position)\n\t\t\t\tcancelOnGeometryChange();\n\t\t});\n\t\treturn () => {\n\t\t\tunsubscribe();\n\t\t\tdispose();\n\t\t};\n\t}, [store, id]);\n\n\treturn {\n\t\tmoving,\n\t\thandleProps: {\n\t\t\tonClick: (event) => {\n\t\t\t\t// Assistive activation может послать click без keyboard/pointer событий.\n\t\t\t\t// Обычный pointer click после pointerup не должен начинать второй жест.\n\t\t\t\tif (event.detail !== 0 || sessionRef.current?.pointer) return;\n\t\t\t\tif (sessionRef.current) finish(true);\n\t\t\t\telse begin(null);\n\t\t\t},\n\t\t\tonPointerDown: (event) => {\n\t\t\t\tif (event.button !== 0 || !event.isPrimary || sessionRef.current) return;\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.currentTarget.focus({ preventScroll: true });\n\t\t\t\tconst panel = panelRef.current;\n\t\t\t\tif (!panel) return;\n\t\t\t\tconst rect = panel.getBoundingClientRect();\n\t\t\t\tbegin({\n\t\t\t\t\tid: event.pointerId,\n\t\t\t\t\tx: event.clientX,\n\t\t\t\t\ty: event.clientY,\n\t\t\t\t\ttarget: event.currentTarget,\n\t\t\t\t\tscaleX: panel.offsetWidth > 0 && rect.width > 0 ? rect.width / panel.offsetWidth : 1,\n\t\t\t\t\tscaleY: panel.offsetHeight > 0 && rect.height > 0 ? rect.height / panel.offsetHeight : 1\n\t\t\t\t});\n\t\t\t\tevent.currentTarget.setPointerCapture(event.pointerId);\n\t\t\t},\n\t\t\tonPointerMove: (event) => {\n\t\t\t\tconst session = sessionRef.current;\n\t\t\t\tif (!session?.pointer || session.pointer.id !== event.pointerId) return;\n\t\t\t\tpreview({\n\t\t\t\t\tx: session.origin.x + (event.clientX - session.pointer.x) / session.pointer.scaleX,\n\t\t\t\t\ty: session.origin.y + (event.clientY - session.pointer.y) / session.pointer.scaleY\n\t\t\t\t});\n\t\t\t},\n\t\t\tonPointerUp: (event) => {\n\t\t\t\tconst session = sessionRef.current;\n\t\t\t\tif (!session?.pointer || session.pointer.id !== event.pointerId) return;\n\t\t\t\tpreview({\n\t\t\t\t\tx: session.origin.x + (event.clientX - session.pointer.x) / session.pointer.scaleX,\n\t\t\t\t\ty: session.origin.y + (event.clientY - session.pointer.y) / session.pointer.scaleY\n\t\t\t\t});\n\t\t\t\tfinish(true);\n\t\t\t},\n\t\t\tonPointerCancel: (event) => {\n\t\t\t\tif (sessionRef.current?.pointer?.id === event.pointerId) finish(false);\n\t\t\t},\n\t\t\tonLostPointerCapture: (event) => {\n\t\t\t\tif (sessionRef.current?.pointer?.id === event.pointerId) finish(false);\n\t\t\t},\n\t\t\tonBlur: () => finish(false),\n\t\t\tonKeyDown: (event) => {\n\t\t\t\tif (event.defaultPrevented) return;\n\t\t\t\tif (event.key === \"Escape\" && sessionRef.current) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\tfinish(false);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif ((event.key === \" \" || event.key === \"Enter\") && !sessionRef.current?.pointer) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tif (event.repeat) return;\n\t\t\t\t\tif (sessionRef.current) finish(true);\n\t\t\t\t\telse begin(null);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst session = sessionRef.current;\n\t\t\t\tif (!session || session.pointer) return;\n\t\t\t\tconst step = event.shiftKey ? 1 : 10;\n\t\t\t\tconst x = event.key === \"ArrowLeft\" ? -step : event.key === \"ArrowRight\" ? step : 0;\n\t\t\t\tconst y = event.key === \"ArrowUp\" ? -step : event.key === \"ArrowDown\" ? step : 0;\n\t\t\t\tif (x || y) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tpreview({ x: session.position.x + x, y: session.position.y + y });\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n","import { useEffect, useEffectEvent, useMemo } from \"react\";\n\nimport { useStore } from \"zustand\";\n\nimport { type FloatingWindowPosition, type FloatingWindowSnapshot, type FloatingWindowsStore } from \"./floatingWindowsTypes\";\n\n/** Подписка ограничена одной записью: перемещение соседа не перерисовывает содержимое этого окна. */\nexport function useFloatingWindowSnapshot(\n\tstore: FloatingWindowsStore,\n\tid: string,\n\tdefaultPosition?: FloatingWindowPosition\n): FloatingWindowSnapshot {\n\tconst x = defaultPosition?.x ?? 24;\n\tconst y = defaultPosition?.y ?? 24;\n\tconst fallback = useMemo<FloatingWindowSnapshot>(() => ({ position: { x, y }, size: null, layer: 0 }), [x, y]);\n\tconst snapshot = useStore(store, (state) => state.windows.get(id) ?? fallback);\n\tconst register = useEffectEvent(() => store.getState().register(id, { x, y }));\n\t// defaultPosition читается при регистрации identity, но не переоткрывает уже размещённое окно.\n\tuseEffect(() => register(), [store, id]);\n\treturn snapshot;\n}\n","import { type CSSProperties, type ReactNode, useId, useRef } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { FlexContainer } from \"../flex\";\n\nimport { FloatingWindowHeader } from \"./FloatingWindowHeader\";\nimport styles from \"./FloatingWindows.module.scss\";\nimport { getFloatingWindowStyle } from \"./lib/getFloatingWindowStyle\";\nimport { type FloatingWindowPosition } from \"./model/floatingWindowsTypes\";\nimport { useFloatingWindowFocus } from \"./model/useFloatingWindowFocus\";\nimport { useFloatingWindowMeasurements } from \"./model/useFloatingWindowMeasurements\";\nimport { useFloatingWindowMove } from \"./model/useFloatingWindowMove\";\nimport { useFloatingWindowSnapshot } from \"./model/useFloatingWindowSnapshot\";\nimport { useFloatingWindowsStore } from \"./model/useFloatingWindowsStore\";\n\nexport type FloatingWindowProps = Readonly<{\n\t/** Стабильный уникальный ID внутри одного FloatingWindows; не содержит пользовательских сообщений. */\n\tid: string;\n\ttitle: string;\n\tchildren: ReactNode;\n\tdefaultPosition?: FloatingWindowPosition;\n\twidth?: CSSProperties[\"width\"];\n\theight?: CSSProperties[\"height\"];\n\tactions?: ReactNode;\n\tonClose?: () => void;\n\t/** Только завершённый пользователем move; resize-коррекция и восстановление cache не являются командами пользователя. */\n\tonPositionChange?: (position: FloatingWindowPosition) => void;\n\tclassName?: string;\n}>;\n\n/** Немодальное окно: host управляет его существованием, primitive — геометрией, движением и локальным порядком. */\nexport function FloatingWindow({\n\tid,\n\ttitle,\n\tchildren,\n\tdefaultPosition,\n\twidth = 360,\n\theight = 300,\n\tactions,\n\tonClose,\n\tonPositionChange,\n\tclassName\n}: FloatingWindowProps) {\n\tconst store = useFloatingWindowsStore();\n\tconst snapshot = useFloatingWindowSnapshot(store, id, defaultPosition);\n\tconst panelRef = useRef<HTMLElement | null>(null);\n\tconst titleId = useId();\n\tconst instructionId = useId();\n\tuseFloatingWindowMeasurements(store, id, panelRef);\n\tuseFloatingWindowFocus(panelRef);\n\tconst move = useFloatingWindowMove({ id, store, panelRef, onPositionChange });\n\treturn (\n\t\t<FlexContainer\n\t\t\tcolumn\n\t\t\tref={panelRef}\n\t\t\trole=\"dialog\"\n\t\t\taria-labelledby={titleId}\n\t\t\ttabIndex={-1}\n\t\t\tdata-floating-window-id={id}\n\t\t\tclassName={cn(\"surface0 radiusMd shadowLg\", styles.window, className)}\n\t\t\tstyle={getFloatingWindowStyle(snapshot, width, height)}\n\t\t\tonPointerDownCapture={() => store.getState().bringToFront(id)}\n\t\t\tonFocusCapture={() => store.getState().bringToFront(id)}\n\t\t\tonKeyDown={(event) => {\n\t\t\t\tif (event.key !== \"Escape\" || event.defaultPrevented || store.getState().order.at(-1) !== id || !onClose) return;\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tonClose();\n\t\t\t}}>\n\t\t\t<FloatingWindowHeader\n\t\t\t\ttitle={title}\n\t\t\t\ttitleId={titleId}\n\t\t\t\tinstructionId={instructionId}\n\t\t\t\tactions={actions}\n\t\t\t\tonClose={onClose}\n\t\t\t\tmove={move}\n\t\t\t/>\n\t\t\t<span id={instructionId} className=\"visuallyHidden\">\n\t\t\t\tДля перемещения нажмите Enter или пробел, затем используйте стрелки. Shift — шаг 1 пиксель. Enter или пробел — сохранить,\n\t\t\t\tEscape — отменить.\n\t\t\t</span>\n\t\t\t<div className={styles.content}>{children}</div>\n\t\t</FlexContainer>\n\t);\n}\n"],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { type FloatingWindowPosition, type FloatingWindowSize } from "../model/floatingWindowsTypes";
2
+ /**
3
+ * Полностью удерживает измеренное окно внутри рабочей области. Пока одна из
4
+ * сторон не измерена, сохраняет исходную позицию, включая её object identity.
5
+ * Окно больше области привязывается к её левому верхнему углу по нужной оси.
6
+ */
7
+ export declare function constrainFloatingWindowPosition(position: FloatingWindowPosition, size: FloatingWindowSize | null, bounds: FloatingWindowSize | null): FloatingWindowPosition;
8
+ //# sourceMappingURL=constrainFloatingWindowPosition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constrainFloatingWindowPosition.d.ts","sourceRoot":"","sources":["../../../src/floating-windows/lib/constrainFloatingWindowPosition.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,sBAAsB,EAAE,KAAK,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAErG;;;;GAIG;AACH,wBAAgB,+BAA+B,CAC9C,QAAQ,EAAE,sBAAsB,EAChC,IAAI,EAAE,kBAAkB,GAAG,IAAI,EAC/B,MAAM,EAAE,kBAAkB,GAAG,IAAI,GAC/B,sBAAsB,CAsBxB"}
@@ -0,0 +1,10 @@
1
+ import { type FloatingWindowPosition } from "../model/floatingWindowsTypes";
2
+ /** Неавторитетный cache не мигрируется: неизвестная версия/форма отклоняется целиком и не попадает в геометрию. */
3
+ export declare function readFloatingWindowsPositions(text: string): ReadonlyMap<string, FloatingWindowPosition>;
4
+ /**
5
+ * Сохраняет координаты последних записей Map без контента и DOM-размеров.
6
+ * Ограничивает также длину JSON: экранированный ID может занимать существенно
7
+ * больше исходных 256 символов, поэтому одного ограничения числа окон мало.
8
+ */
9
+ export declare function serializeFloatingWindowsPositions(positions: ReadonlyMap<string, FloatingWindowPosition>): string;
10
+ //# sourceMappingURL=floatingWindowsStorage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"floatingWindowsStorage.d.ts","sourceRoot":"","sources":["../../../src/floating-windows/lib/floatingWindowsStorage.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAO5E,mHAAmH;AACnH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAsBtG;AAED;;;;GAIG;AACH,wBAAgB,iCAAiC,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,sBAAsB,CAAC,GAAG,MAAM,CAsBhH"}
@@ -0,0 +1,5 @@
1
+ import { type CSSProperties } from "react";
2
+ import { type FloatingWindowSnapshot } from "../model/floatingWindowsTypes";
3
+ /** CSS ограничивает начальный SSR layout, затем измеренный размер уточняет те же границы. */
4
+ export declare function getFloatingWindowStyle(snapshot: FloatingWindowSnapshot, width: CSSProperties["width"], height: CSSProperties["height"]): CSSProperties;
5
+ //# sourceMappingURL=getFloatingWindowStyle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getFloatingWindowStyle.d.ts","sourceRoot":"","sources":["../../../src/floating-windows/lib/getFloatingWindowStyle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAE5E,6FAA6F;AAC7F,wBAAgB,sBAAsB,CACrC,QAAQ,EAAE,sBAAsB,EAChC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,EAC7B,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,GAC7B,aAAa,CAYf"}
@@ -0,0 +1,3 @@
1
+ /** Одинаковая граница identity для React-регистрации и недоверенного cache; ID не нормализуется неявно. */
2
+ export declare function isFloatingWindowId(value: unknown): value is string;
3
+ //# sourceMappingURL=isFloatingWindowId.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isFloatingWindowId.d.ts","sourceRoot":"","sources":["../../../src/floating-windows/lib/isFloatingWindowId.ts"],"names":[],"mappings":"AAAA,2GAA2G;AAC3G,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAElE"}
@@ -0,0 +1,8 @@
1
+ import { type FloatingWindowPosition } from "../model/floatingWindowsTypes";
2
+ /**
3
+ * Разводит совпавшие начальные позиции открытых окон по диагонали. Каждая
4
+ * попытка проверяет следующий шаг каскада; число попыток ограничено числом
5
+ * занятых позиций, поэтому даже плотная группа окон не создаёт бесконечный поиск.
6
+ */
7
+ export declare function selectFloatingWindowCascadePosition(defaultPosition: FloatingWindowPosition, occupiedPositions: readonly FloatingWindowPosition[], cascadeOffset?: number): FloatingWindowPosition;
8
+ //# sourceMappingURL=selectFloatingWindowCascadePosition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selectFloatingWindowCascadePosition.d.ts","sourceRoot":"","sources":["../../../src/floating-windows/lib/selectFloatingWindowCascadePosition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAE5E;;;;GAIG;AACH,wBAAgB,mCAAmC,CAClD,eAAe,EAAE,sBAAsB,EACvC,iBAAiB,EAAE,SAAS,sBAAsB,EAAE,EACpD,aAAa,SAAK,GAChB,sBAAsB,CA4BxB"}
@@ -0,0 +1,3 @@
1
+ /** Закрытие неактивного modeless-окна не должно отнимать фокус у соседнего окна или страницы. */
2
+ export declare function selectFloatingWindowRestoreFocus(panel: HTMLElement | null): HTMLElement | undefined;
3
+ //# sourceMappingURL=selectFloatingWindowRestoreFocus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selectFloatingWindowRestoreFocus.d.ts","sourceRoot":"","sources":["../../../src/floating-windows/lib/selectFloatingWindowRestoreFocus.ts"],"names":[],"mappings":"AAAA,iGAAiG;AACjG,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,GAAG,WAAW,GAAG,SAAS,CAInG"}
@@ -0,0 +1,4 @@
1
+ import { type FloatingWindowsStore } from "./floatingWindowsTypes";
2
+ /** Context передаёт стабильный store конкретной области, а не изменяющийся снимок всех окон. */
3
+ export declare const FloatingWindowsContext: import("react").Context<FloatingWindowsStore | null>;
4
+ //# sourceMappingURL=FloatingWindowsContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FloatingWindowsContext.d.ts","sourceRoot":"","sources":["../../../src/floating-windows/model/FloatingWindowsContext.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAEnE,gGAAgG;AAChG,eAAO,MAAM,sBAAsB,sDAAmD,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { type FloatingWindowsStore, type FloatingWindowsStoreOptions } from "./floatingWindowsTypes";
2
+ /**
3
+ * Создаёт изолированное состояние одной группы modeless-окон. Здесь нет DOM,
4
+ * подписок React и storage: последовательные команды всегда читают актуальный
5
+ * snapshot, а неизменённые окна сохраняют identity для узких UI-подписок.
6
+ */
7
+ export declare function createFloatingWindowsStore({ cascadeOffset }?: FloatingWindowsStoreOptions): FloatingWindowsStore;
8
+ //# sourceMappingURL=createFloatingWindowsStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createFloatingWindowsStore.d.ts","sourceRoot":"","sources":["../../../src/floating-windows/model/createFloatingWindowsStore.ts"],"names":[],"mappings":"AAMA,OAAO,EAIN,KAAK,oBAAoB,EACzB,KAAK,2BAA2B,EAChC,MAAM,wBAAwB,CAAC;AAEhC;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,EAAE,aAAkB,EAAE,GAAE,2BAAgC,GAAG,oBAAoB,CAiLzH"}
@@ -0,0 +1,27 @@
1
+ import { type ButtonHTMLAttributes, type RefObject } from "react";
2
+ import { type FloatingWindowPosition, type FloatingWindowsStore } from "./floatingWindowsTypes";
3
+ /** Активный жест держит только preview; authoritative позиция меняется единственным commit. */
4
+ export type FloatingWindowMoveSession = {
5
+ origin: FloatingWindowPosition;
6
+ position: FloatingWindowPosition;
7
+ pointer: Readonly<{
8
+ id: number;
9
+ x: number;
10
+ y: number;
11
+ target: HTMLButtonElement;
12
+ scaleX: number;
13
+ scaleY: number;
14
+ }> | null;
15
+ };
16
+ export type FloatingWindowMoveOptions = Readonly<{
17
+ id: string;
18
+ store: FloatingWindowsStore;
19
+ panelRef: RefObject<HTMLElement | null>;
20
+ onPositionChange?: (position: FloatingWindowPosition) => void;
21
+ }>;
22
+ export type FloatingWindowMoveBinding = Pick<ButtonHTMLAttributes<HTMLButtonElement>, "onPointerDown" | "onPointerMove" | "onPointerUp" | "onPointerCancel" | "onLostPointerCapture" | "onKeyDown" | "onBlur" | "onClick">;
23
+ export type FloatingWindowMoveResult = Readonly<{
24
+ moving: boolean;
25
+ handleProps: FloatingWindowMoveBinding;
26
+ }>;
27
+ //# sourceMappingURL=floatingWindowMoveTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"floatingWindowMoveTypes.d.ts","sourceRoot":"","sources":["../../../src/floating-windows/model/floatingWindowMoveTypes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,oBAAoB,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAElE,OAAO,EAAE,KAAK,sBAAsB,EAAE,KAAK,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAEhG,+FAA+F;AAC/F,MAAM,MAAM,yBAAyB,GAAG;IACvC,MAAM,EAAE,sBAAsB,CAAC;IAC/B,QAAQ,EAAE,sBAAsB,CAAC;IACjC,OAAO,EAAE,QAAQ,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,iBAAiB,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI,CAAC;CAC1H,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,QAAQ,CAAC;IAChD,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,oBAAoB,CAAC;IAC5B,QAAQ,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IACxC,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,sBAAsB,KAAK,IAAI,CAAC;CAC9D,CAAC,CAAC;AAEH,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAC3C,oBAAoB,CAAC,iBAAiB,CAAC,EACvC,eAAe,GAAG,eAAe,GAAG,aAAa,GAAG,iBAAiB,GAAG,sBAAsB,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CACnI,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,QAAQ,CAAC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,yBAAyB,CAAA;CAAE,CAAC,CAAC"}
@@ -0,0 +1,40 @@
1
+ import { type StoreApi } from "zustand/vanilla";
2
+ /** Координаты левого верхнего угла окна относительно его рабочей области. */
3
+ export type FloatingWindowPosition = Readonly<{
4
+ x: number;
5
+ y: number;
6
+ }>;
7
+ /** Измеренный размер окна либо рабочей области в CSS-пикселях. */
8
+ export type FloatingWindowSize = Readonly<{
9
+ width: number;
10
+ height: number;
11
+ }>;
12
+ /** Состояние открытого окна; размер неизвестен до первого измерения DOM. */
13
+ export type FloatingWindowSnapshot = Readonly<{
14
+ position: FloatingWindowPosition;
15
+ size: FloatingWindowSize | null;
16
+ layer: number;
17
+ }>;
18
+ /**
19
+ * Один store принадлежит одной рабочей области. Сохранённые позиции переживают
20
+ * закрытие окна, а размер и порядок слоёв относятся только к открытым окнам.
21
+ */
22
+ export type FloatingWindowsState = Readonly<{
23
+ windows: ReadonlyMap<string, FloatingWindowSnapshot>;
24
+ positions: ReadonlyMap<string, FloatingWindowPosition>;
25
+ order: readonly string[];
26
+ bounds: FloatingWindowSize | null;
27
+ register: (id: string, defaultPosition?: FloatingWindowPosition) => () => void;
28
+ setPosition: (id: string, position: FloatingWindowPosition) => void;
29
+ setSize: (id: string, size: FloatingWindowSize) => void;
30
+ setBounds: (bounds: FloatingWindowSize | null) => void;
31
+ bringToFront: (id: string) => void;
32
+ restorePositions: (positions: ReadonlyMap<string, FloatingWindowPosition>) => void;
33
+ }>;
34
+ /** Приватный vanilla-store: React-подписки и persistence принадлежат UI-хосту. */
35
+ export type FloatingWindowsStore = StoreApi<FloatingWindowsState>;
36
+ /** Смещение начального каскада; ноль отключает разведение новых окон. */
37
+ export type FloatingWindowsStoreOptions = Readonly<{
38
+ cascadeOffset?: number;
39
+ }>;
40
+ //# sourceMappingURL=floatingWindowsTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"floatingWindowsTypes.d.ts","sourceRoot":"","sources":["../../../src/floating-windows/model/floatingWindowsTypes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhD,6EAA6E;AAC7E,MAAM,MAAM,sBAAsB,GAAG,QAAQ,CAAC;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAExE,kEAAkE;AAClE,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAE7E,4EAA4E;AAC5E,MAAM,MAAM,sBAAsB,GAAG,QAAQ,CAAC;IAC7C,QAAQ,EAAE,sBAAsB,CAAC;IACjC,IAAI,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;CACd,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CAAC;IAC3C,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IACrD,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IACvD,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAClC,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,sBAAsB,KAAK,MAAM,IAAI,CAAC;IAC/E,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,sBAAsB,KAAK,IAAI,CAAC;IACpE,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACxD,SAAS,EAAE,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,KAAK,IAAI,CAAC;IACvD,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,gBAAgB,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,sBAAsB,CAAC,KAAK,IAAI,CAAC;CACnF,CAAC,CAAC;AAEH,kFAAkF;AAClF,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CAAC,oBAAoB,CAAC,CAAC;AAElE,yEAAyE;AACzE,MAAM,MAAM,2BAA2B,GAAG,QAAQ,CAAC;IAAE,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { type RefObject } from "react";
2
+ /** Modeless-политика над общим focus lifecycle, без собственного focus trap или глобальных listeners. */
3
+ export declare function useFloatingWindowFocus(panelRef: RefObject<HTMLElement | null>): void;
4
+ //# sourceMappingURL=useFloatingWindowFocus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFloatingWindowFocus.d.ts","sourceRoot":"","sources":["../../../src/floating-windows/model/useFloatingWindowFocus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAU,MAAM,OAAO,CAAC;AAM/C,yGAAyG;AACzG,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,IAAI,CAcpF"}
@@ -0,0 +1,5 @@
1
+ import { type RefObject } from "react";
2
+ import { type FloatingWindowsStore } from "./floatingWindowsTypes";
3
+ /** Измеряется фактический border box: проценты, rem и длинное содержимое не заменяются вымышленными 300×200. */
4
+ export declare function useFloatingWindowMeasurements(store: FloatingWindowsStore, id: string, ref: RefObject<HTMLElement | null>): void;
5
+ //# sourceMappingURL=useFloatingWindowMeasurements.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFloatingWindowMeasurements.d.ts","sourceRoot":"","sources":["../../../src/floating-windows/model/useFloatingWindowMeasurements.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAElD,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAEnE,gHAAgH;AAChH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,oBAAoB,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,IAAI,CAgB/H"}
@@ -0,0 +1,4 @@
1
+ import { type FloatingWindowMoveOptions, type FloatingWindowMoveResult } from "./floatingWindowMoveTypes";
2
+ /** Pointer capture и клавиатура используют одну транзакцию перемещения. RAF не обновляет React/store на каждом кадре. */
3
+ export declare function useFloatingWindowMove({ id, store, panelRef, onPositionChange }: FloatingWindowMoveOptions): FloatingWindowMoveResult;
4
+ //# sourceMappingURL=useFloatingWindowMove.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFloatingWindowMove.d.ts","sourceRoot":"","sources":["../../../src/floating-windows/model/useFloatingWindowMove.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,yBAAyB,EAAE,KAAK,wBAAwB,EAAkC,MAAM,2BAA2B,CAAC;AAG1I,yHAAyH;AACzH,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,EAAE,yBAAyB,GAAG,wBAAwB,CAmJpI"}
@@ -0,0 +1,4 @@
1
+ import { type FloatingWindowPosition, type FloatingWindowSnapshot, type FloatingWindowsStore } from "./floatingWindowsTypes";
2
+ /** Подписка ограничена одной записью: перемещение соседа не перерисовывает содержимое этого окна. */
3
+ export declare function useFloatingWindowSnapshot(store: FloatingWindowsStore, id: string, defaultPosition?: FloatingWindowPosition): FloatingWindowSnapshot;
4
+ //# sourceMappingURL=useFloatingWindowSnapshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFloatingWindowSnapshot.d.ts","sourceRoot":"","sources":["../../../src/floating-windows/model/useFloatingWindowSnapshot.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,sBAAsB,EAAE,KAAK,sBAAsB,EAAE,KAAK,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE7H,qGAAqG;AACrG,wBAAgB,yBAAyB,CACxC,KAAK,EAAE,oBAAoB,EAC3B,EAAE,EAAE,MAAM,EACV,eAAe,CAAC,EAAE,sBAAsB,GACtC,sBAAsB,CASxB"}
@@ -0,0 +1,4 @@
1
+ import { type FloatingWindowsStore } from "./floatingWindowsTypes";
2
+ /** Одна область владеет своим containing block и одним observer; CSS-размер не копируется в React state. */
3
+ export declare function useFloatingWindowsBounds(store: FloatingWindowsStore): import("react").RefObject<HTMLDivElement | null>;
4
+ //# sourceMappingURL=useFloatingWindowsBounds.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFloatingWindowsBounds.d.ts","sourceRoot":"","sources":["../../../src/floating-windows/model/useFloatingWindowsBounds.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAEnE,4GAA4G;AAC5G,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,oBAAoB,oDAgBnE"}
@@ -0,0 +1,4 @@
1
+ import { type FloatingWindowsStore } from "./floatingWindowsTypes";
2
+ /** Opt-in persistence после hydration; запрет/quota/corrupt cache не блокируют работу окна в памяти. */
3
+ export declare function useFloatingWindowsPersistence(store: FloatingWindowsStore, storageKey?: string, onStorageError?: (error: unknown) => void): void;
4
+ //# sourceMappingURL=useFloatingWindowsPersistence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFloatingWindowsPersistence.d.ts","sourceRoot":"","sources":["../../../src/floating-windows/model/useFloatingWindowsPersistence.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAEnE,wGAAwG;AACxG,wBAAgB,6BAA6B,CAC5C,KAAK,EAAE,oBAAoB,EAC3B,UAAU,CAAC,EAAE,MAAM,EACnB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GACvC,IAAI,CA8BN"}
@@ -0,0 +1,4 @@
1
+ import { type FloatingWindowsStore } from "./floatingWindowsTypes";
2
+ /** Любая вложенная композиция использует ближайшую область; child cloning и глобального registry нет. */
3
+ export declare function useFloatingWindowsStore(): FloatingWindowsStore;
4
+ //# sourceMappingURL=useFloatingWindowsStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFloatingWindowsStore.d.ts","sourceRoot":"","sources":["../../../src/floating-windows/model/useFloatingWindowsStore.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAEnE,yGAAyG;AACzG,wBAAgB,uBAAuB,IAAI,oBAAoB,CAI9D"}
@@ -1 +1 @@
1
- {"version":3,"file":"GridContainer.d.ts","sourceRoot":"","sources":["../../src/grid/GridContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAW,MAAM,OAAO,CAAC;AAM1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAG7C,wBAAgB,aAAa,CAAC,EAC7B,GAAG,EACH,QAAQ,EACR,SAAc,EACd,EAAE,EACF,KAAK,EACL,MAAM,EACN,GAAG,EACH,MAAM,EACN,KAAK,EACL,GAAG,EACH,MAAM,EACN,SAAS,EACT,KAAK,EACL,OAAO,EACP,YAAY,EACZ,cAAc,EACd,eAAe,EACf,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,KAAK,EACL,OAAO,EACP,GAAG,SAAS,EACZ,EAAE,kBAAkB,GAAG;IAAE,GAAG,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,CAAA;CAAE,+BA4CjD;yBApEe,aAAa"}
1
+ {"version":3,"file":"GridContainer.d.ts","sourceRoot":"","sources":["../../src/grid/GridContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAKjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE7C,wBAAgB,aAAa,CAAC,EAC7B,GAAG,EACH,QAAQ,EACR,SAAc,EACd,EAAE,EACF,KAAK,EACL,MAAM,EACN,GAAG,EACH,MAAM,EACN,KAAK,EACL,GAAG,EACH,MAAM,EACN,SAAS,EACT,KAAK,EACL,OAAO,EACP,YAAY,EACZ,cAAc,EACd,eAAe,EACf,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,KAAK,EACL,OAAO,EACP,GAAG,SAAS,EACZ,EAAE,kBAAkB,GAAG;IAAE,GAAG,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,CAAA;CAAE,+BAwBjD;yBAhDe,aAAa"}
@@ -1 +1 @@
1
- {"version":3,"file":"GridItem.d.ts","sourceRoot":"","sources":["../../src/grid/GridItem.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAW,MAAM,OAAO,CAAC;AAM1C,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAGxC,wBAAgB,QAAQ,CAAC,EACxB,GAAG,EACH,QAAQ,EACR,SAAc,EACd,EAAE,EACF,KAAK,EACL,IAAI,EACJ,MAAM,EACN,GAAG,EACH,SAAS,EACT,WAAW,EACX,GAAG,SAAS,EACZ,EAAE,aAAa,GAAG;IAAE,GAAG,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,CAAA;CAAE,+BA4B5C;yBAxCe,QAAQ"}
1
+ {"version":3,"file":"GridItem.d.ts","sourceRoot":"","sources":["../../src/grid/GridItem.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAKjC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,wBAAgB,QAAQ,CAAC,EACxB,GAAG,EACH,QAAQ,EACR,SAAc,EACd,EAAE,EACF,KAAK,EACL,IAAI,EACJ,MAAM,EACN,GAAG,EACH,SAAS,EACT,WAAW,EACX,GAAG,SAAS,EACZ,EAAE,aAAa,GAAG;IAAE,GAAG,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,CAAA;CAAE,+BAW5C;yBAvBe,QAAQ"}
@@ -0,0 +1,12 @@
1
+ import type { CSSProperties } from "react";
2
+ import type { GridContainerLayoutProps, GridItemLayoutProps } from "./types";
3
+ type ResponsiveStyleResult = {
4
+ className?: string;
5
+ style: CSSProperties;
6
+ };
7
+ export declare function getGridContainerClasses(props: GridContainerLayoutProps): string;
8
+ export declare function getGridContainerStyles(props: Pick<GridContainerLayoutProps, "templateColumns" | "templateRows" | "autoColumns" | "autoRows" | "areas">): ResponsiveStyleResult;
9
+ export declare function getGridItemClasses(props: GridItemLayoutProps): string;
10
+ export declare function getGridItemStyles(props: Pick<GridItemLayoutProps, "area" | "column" | "row">): ResponsiveStyleResult;
11
+ export {};
12
+ //# sourceMappingURL=getGridClasses.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getGridClasses.d.ts","sourceRoot":"","sources":["../../src/grid/getGridClasses.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAmB3C,OAAO,KAAK,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAO7E,KAAK,qBAAqB,GAAG;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,aAAa,CAAC;CACrB,CAAC;AAuIF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,wBAAwB,GAAG,MAAM,CAe/E;AAED,wBAAgB,sBAAsB,CACrC,KAAK,EAAE,IAAI,CAAC,wBAAwB,EAAE,iBAAiB,GAAG,cAAc,GAAG,aAAa,GAAG,UAAU,GAAG,OAAO,CAAC,GAC9G,qBAAqB,CAWvB;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM,CAerE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,mBAAmB,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC,GAAG,qBAAqB,CASpH"}
@@ -1,2 +1,2 @@
1
- import { n as e, r as t, t as n } from "../chunks/grid-CFuzBigM.js";
1
+ import { n as e, r as t, t as n } from "../chunks/grid-D6wPRCjx.js";
2
2
  export { n as Grid, t as GridContainer, e as GridItem };
@@ -1,6 +1,6 @@
1
1
  import { n as e } from "../chunks/button-DudCl375.js";
2
- import { r as t } from "../chunks/grid-CFuzBigM.js";
3
- import { i as n, n as r, r as i } from "../chunks/modal-CBGNsqrq.js";
2
+ import { r as t } from "../chunks/grid-D6wPRCjx.js";
3
+ import { i as n, n as r, r as i } from "../chunks/modal-DeABSKrb.js";
4
4
  import { s as a } from "../chunks/input-KXI7o06g.js";
5
5
  import { t as o } from "../chunks/input-files-CnBNlJo0.js";
6
6
  import { Fragment as s, jsx as c, jsxs as l } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- import { f as e, i as t, s as n, t as r, v as i } from "../chunks/picker-DagDe9OH.js";
1
+ import { f as e, i as t, s as n, t as r, v as i } from "../chunks/picker-CWx7vPE8.js";
2
2
  import { Option as ee } from "../option/index.js";
3
3
  import { t as a } from "../chunks/OptionContentContainer-CWHlfm5Z.js";
4
4
  import { cn as o } from "@ryuzaki13/react-foundation-lib/utils";
@@ -1,5 +1,5 @@
1
- import { t as e } from "../chunks/grid-CFuzBigM.js";
2
- import { c as t, h as n } from "../chunks/misc-BjdDK6mm.js";
1
+ import { t as e } from "../chunks/grid-D6wPRCjx.js";
2
+ import { c as t, h as n } from "../chunks/misc-Dcr24uDY.js";
3
3
  import { cn as r } from "@ryuzaki13/react-foundation-lib/utils";
4
4
  import { jsx as i } from "react/jsx-runtime";
5
5
  import a, { Children as o, useLayoutEffect as s, useReducer as c, useRef as l, useState as u } from "react";
@@ -1,4 +1,4 @@
1
- import { h as e, v as t } from "../chunks/picker-DagDe9OH.js";
1
+ import { h as e, v as t } from "../chunks/picker-CWx7vPE8.js";
2
2
  import { Option as n, OptionContent as r } from "../option/index.js";
3
3
  import { t as i } from "../chunks/OptionContentContainer-CWHlfm5Z.js";
4
4
  import { findFirstEnabledIndex as a, findLastEnabledIndex as o, findNextEnabledIndex as s, handleKeyboardActivation as c } from "@ryuzaki13/react-foundation-lib/utils";
@@ -1,2 +1,2 @@
1
- import { _ as e, a as t, b as n, c as r, d as i, f as a, g as o, h as s, i as c, l, m as u, n as d, o as f, p, r as m, s as h, t as g, u as _, v, y } from "../chunks/misc-BjdDK6mm.js";
1
+ import { _ as e, a as t, b as n, c as r, d as i, f as a, g as o, h as s, i as c, l, m as u, n as d, o as f, p, r as m, s as h, t as g, u as _, v, y } from "../chunks/misc-Dcr24uDY.js";
2
2
  export { n as AnimatedLogo, y as AnimatedLogoSegment, v as CopyTextWrapper, d as ErrorIcon, e as IconWrapper, m as InformationIcon, u as LazyDynamicComponent, a as LazyValue, s as LoadingMessage, o as Message, i as NoData, _ as Notice, l as OneStepScroller, c as RenderStateIcon, r as Scrollable, p as SkeletonLine, t as StateIcon, g as StateWrapper, f as SuccessIcon, h as WarningIcon };
@@ -1,2 +1,2 @@
1
- import { a as e, i as t, n, o as r, r as i, s as a, t as o } from "../chunks/modal-CBGNsqrq.js";
1
+ import { a as e, i as t, n, o as r, r as i, s as a, t as o } from "../chunks/modal-DeABSKrb.js";
2
2
  export { n as Modal, i as ModalContent, t as ModalFooter, r as ModalManagerContext, o as ModalManagerProvider, e as ModalToolbar, a as useModalManager };
@@ -1,6 +1,6 @@
1
1
  import { Text as e } from "../text/index.js";
2
2
  import { t } from "../chunks/ui.module-oRwY3Zli.js";
3
- import { a as n, f as r, i, m as a, n as o, r as s, s as c, t as l, u, v as d } from "../chunks/picker-DagDe9OH.js";
3
+ import { a as n, f as r, i, m as a, n as o, r as s, s as c, t as l, u, v as d } from "../chunks/picker-CWx7vPE8.js";
4
4
  import { t as f } from "../chunks/separator-CHpBud1e.js";
5
5
  import { Option as p, OptionButton as m } from "../option/index.js";
6
6
  import { t as h } from "../chunks/check-box-D_Y6iIWv.js";
@@ -1,19 +1,19 @@
1
- import { o as e } from "../chunks/flex-D86M_h-0.js";
1
+ import { o as e } from "../chunks/flex-BhrQCH4I.js";
2
2
  import { n as t } from "../chunks/button-DudCl375.js";
3
3
  import { cn as n } from "@ryuzaki13/react-foundation-lib/utils";
4
4
  import { AlertCircleIcon as r, CheckCircle2Icon as i, InfoIcon as a, TriangleAlertIcon as o, XIcon as s } from "lucide-react";
5
5
  import { jsx as c, jsxs as l } from "react/jsx-runtime";
6
6
  import { createContext as u, useContext as d, useEffect as f, useMemo as p } from "react";
7
7
  import { createMissingContextError as m } from "@ryuzaki13/react-foundation-lib/error";
8
- import { bindNotifications as h, createNotificationsStore as g, notify as _ } from "@ryuzaki13/react-foundation-lib/notifications";
9
- import { useStore as v } from "zustand";
8
+ import { useStore as h } from "zustand";
9
+ import { bindNotifications as g, createNotificationsStore as _, notify as v } from "@ryuzaki13/react-foundation-lib/notifications";
10
10
  //#region src/notifications/model/notificationsContext.ts
11
11
  var y = u(null);
12
12
  //#endregion
13
13
  //#region src/notifications/model/NotificationsProvider.tsx
14
14
  function b({ children: e }) {
15
- let t = p(() => g(), []);
16
- return f(() => h(t), [t]), /* @__PURE__ */ c(y.Provider, {
15
+ let t = p(() => _(), []);
16
+ return f(() => g(t), [t]), /* @__PURE__ */ c(y.Provider, {
17
17
  value: t,
18
18
  children: e
19
19
  });
@@ -32,24 +32,24 @@ function x() {
32
32
  //#region src/notifications/model/useNotificationById.ts
33
33
  function S(e) {
34
34
  let t = x();
35
- return v(t, (t) => t.items.find((t) => t.id === e));
35
+ return h(t, (t) => t.items.find((t) => t.id === e));
36
36
  }
37
37
  //#endregion
38
38
  //#region src/notifications/model/useNotificationHistory.ts
39
39
  function C() {
40
40
  let e = x();
41
- return v(e, (e) => e.history);
41
+ return h(e, (e) => e.history);
42
42
  }
43
43
  //#endregion
44
44
  //#region src/notifications/model/useNotifications.ts
45
45
  function w() {
46
46
  let e = x();
47
- return v(e, (e) => e.items);
47
+ return h(e, (e) => e.items);
48
48
  }
49
49
  //#endregion
50
50
  //#region src/notifications/model/useNotify.ts
51
51
  function T() {
52
- let e = x(), t = v(e, (e) => e.actions), n = (e) => (n, r) => t.push({
52
+ let e = x(), t = h(e, (e) => e.actions), n = (e) => (n, r) => t.push({
53
53
  type: e,
54
54
  message: n,
55
55
  ...r
@@ -162,6 +162,6 @@ function O() {
162
162
  });
163
163
  }
164
164
  //#endregion
165
- export { _ as NotificationApi, _ as notify, O as NotificationsHost, b as NotificationsProvider, S as useNotificationById, C as useNotificationHistory, w as useNotifications, T as useNotify };
165
+ export { v as NotificationApi, v as notify, O as NotificationsHost, b as NotificationsProvider, S as useNotificationById, C as useNotificationHistory, w as useNotifications, T as useNotify };
166
166
 
167
167
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- import { _ as e, a as t, c as n, d as r, f as i, g as a, h as o, i as s, l as c, m as l, n as u, o as d, p as f, r as p, s as m, t as h, u as g, v as _ } from "../chunks/picker-DagDe9OH.js";
1
+ import { _ as e, a as t, c as n, d as r, f as i, g as a, h as o, i as s, l as c, m as l, n as u, o as d, p as f, r as p, s as m, t as h, u as g, v as _ } from "../chunks/picker-CWx7vPE8.js";
2
2
  export { e as PickerClearButton, _ as PickerField, o as PickerOptions, i as PickerPopup, r as PickerSelectedToken, a as PickerSelectionToolbar, g as PickerStatus, m as PickerTrigger, c as PickerTriggerActions, n as PickerTriggerInput, d as createPickerTriggerPolicy, l as extractPickerTextContent, f as getPickerPlaceholder, t as usePickerDefaultFilter, s as usePickerFloatingListbox, p as usePickerQuery, u as usePickerSelectionLifecycle, h as usePickerTriggerController };
@@ -1,4 +1,4 @@
1
- import { o as e } from "../chunks/flex-D86M_h-0.js";
1
+ import { o as e } from "../chunks/flex-BhrQCH4I.js";
2
2
  import { t } from "../chunks/date-input-B7iG9cA7.js";
3
3
  import { c as n, l as r, r as i, s as a, t as o, u as s } from "../chunks/date-range-preset-select-CyzGMvVp.js";
4
4
  import { jsx as c, jsxs as l } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- import { i as e } from "../chunks/select-C-1U-ujV.js";
1
+ import { i as e } from "../chunks/select-CHBBo5fn.js";
2
2
  import { jsx as t } from "react/jsx-runtime";
3
3
  import { getPresetOption as n } from "@ryuzaki13/react-foundation-lib/presets";
4
4
  //#region src/preset-select/PresetSelect.tsx