@ryuzaki13/react-foundation-ui 3.2.0 → 3.3.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 (283) hide show
  1. package/dist/chunks/table-column-interactions-DzEvVuXe.js.map +1 -1
  2. package/dist/layout-picker/index.js +91 -60
  3. package/dist/layout-picker/index.js.map +1 -1
  4. package/dist/layout-picker/ui/LayoutPicker.d.ts +17 -1
  5. package/dist/layout-picker/ui/LayoutPicker.d.ts.map +1 -1
  6. package/dist/layout-picker/ui/LayoutPresetPreview.d.ts +8 -0
  7. package/dist/layout-picker/ui/LayoutPresetPreview.d.ts.map +1 -0
  8. package/dist/splitter/SplitterHeightContainer.d.ts +24 -0
  9. package/dist/splitter/SplitterHeightContainer.d.ts.map +1 -0
  10. package/dist/splitter/index.d.ts +1 -0
  11. package/dist/splitter/index.d.ts.map +1 -1
  12. package/dist/splitter/index.js +161 -64
  13. package/dist/splitter/index.js.map +1 -1
  14. package/dist/splitter/useSplitterContainerHeight.d.ts +24 -0
  15. package/dist/splitter/useSplitterContainerHeight.d.ts.map +1 -0
  16. package/dist/styles.css +1 -1
  17. package/package.json +1 -1
  18. package/src/styles/mixins/_mixin.scss +43 -0
  19. package/storybook-static/assets/{Badge-B1TTGHWx.js → Badge-D_miams1.js} +1 -1
  20. package/storybook-static/assets/{Badge.stories-m0BYb22G.js → Badge.stories-C53rR6-m.js} +1 -1
  21. package/storybook-static/assets/{BadgeList-slD8D0kC.js → BadgeList-CXhMsbHN.js} +1 -1
  22. package/storybook-static/assets/{BarcodeScannerDialog.stories-upAfBzGS.js → BarcodeScannerDialog.stories-seqRo6OE.js} +1 -1
  23. package/storybook-static/assets/{Button-mtVz4t8e.js → Button-CnG8UaLy.js} +1 -1
  24. package/storybook-static/assets/{Button-wEcm3PeA.js → Button-HcCf8ewy.js} +1 -1
  25. package/storybook-static/assets/{Button.stories-80YoPts7.js → Button.stories-BHSzUc2w.js} +1 -1
  26. package/storybook-static/assets/{CalendarView-CciHYZbO.js → CalendarView-XtXqdANe.js} +1 -1
  27. package/storybook-static/assets/{CheckBox-4LmQO_eu.js → CheckBox-CVtYfxZ9.js} +1 -1
  28. package/storybook-static/assets/{CheckBox-Cuizrqhy.js → CheckBox-D6vctcKk.js} +1 -1
  29. package/storybook-static/assets/{CheckBox.stories-BVlzOlCH.js → CheckBox.stories-DHXvTXOu.js} +1 -1
  30. package/storybook-static/assets/{Color-6AOWCN3U-p_cf8_j5.js → Color-6AOWCN3U-BbiWLCrL.js} +1 -1
  31. package/storybook-static/assets/{ContextMenu-CnlaWMhJ.js → ContextMenu-CveMvmMr.js} +1 -1
  32. package/storybook-static/assets/{ContextMenu-Qi9jyPRQ.js → ContextMenu-nOxBI728.js} +1 -1
  33. package/storybook-static/assets/{ContextMenu.stories-8u4LM_VP.js → ContextMenu.stories-BX-U2HL5.js} +1 -1
  34. package/storybook-static/assets/{CustomOptionButton-Be9f_V0i.js → CustomOptionButton-CeQkVSnm.js} +1 -1
  35. package/storybook-static/assets/{DateInput-BAa-CGeP.js → DateInput-Cl0jsK8W.js} +1 -1
  36. package/storybook-static/assets/{DateInput-CB1YwIXG.js → DateInput-DZulw10a.js} +1 -1
  37. package/storybook-static/assets/{DateInput.stories-D2TdFkNU.js → DateInput.stories-BAk7jvdQ.js} +1 -1
  38. package/storybook-static/assets/{DateRangePresetSelect-DjRdo1nJ.js → DateRangePresetSelect-BbP1EZha.js} +1 -1
  39. package/storybook-static/assets/{DateRangePresetSelect-C__hQdoH.js → DateRangePresetSelect-fHheb8Qb.js} +1 -1
  40. package/storybook-static/assets/{DateRangePresetSelect.stories-Cfd8knqx.js → DateRangePresetSelect.stories-DAE_gknP.js} +1 -1
  41. package/storybook-static/assets/{Detail-D_eCEfW5.js → Detail-COtF87BC.js} +1 -1
  42. package/storybook-static/assets/{Detail.stories-BaBaaNck.js → Detail.stories-CSfAEQCi.js} +1 -1
  43. package/storybook-static/assets/{Dialog-CoHzabh8.js → Dialog-BrBqkDX8.js} +1 -1
  44. package/storybook-static/assets/{Dialog-CBBa80xk.js → Dialog-C2uB9kIV.js} +1 -1
  45. package/storybook-static/assets/{Dialog.stories-8LPXtaFM.js → Dialog.stories-Bm3UXA9U.js} +1 -1
  46. package/storybook-static/assets/{Disclosure-BE4gJXEI.js → Disclosure-xhFEOG3w.js} +1 -1
  47. package/storybook-static/assets/{Disclosure.stories-pV92k8Dz.js → Disclosure.stories-Vl98lnzh.js} +1 -1
  48. package/storybook-static/assets/{DisclosureGroup-B81hAh7v.js → DisclosureGroup-DUChaiu8.js} +1 -1
  49. package/storybook-static/assets/{DocsRenderer-JROSPFPF-DWm72idc.js → DocsRenderer-JROSPFPF-C_WINtPH.js} +1 -1
  50. package/storybook-static/assets/{DropZone-DZRf8WwR.js → DropZone-1gMBb4LE.js} +1 -1
  51. package/storybook-static/assets/{DropZone-1RJBvaFC.js → DropZone-BZvrpfEI.js} +1 -1
  52. package/storybook-static/assets/{DropZone.stories-D1XK6U6E.js → DropZone.stories-DVD3fCWD.js} +1 -1
  53. package/storybook-static/assets/{DropdownMenu-BSRQUQ4l.js → DropdownMenu-DTeBES3S.js} +1 -1
  54. package/storybook-static/assets/{ExpandableActionPanel-DgeVn8wz.js → ExpandableActionPanel-3gzSQS7e.js} +1 -1
  55. package/storybook-static/assets/{ExpandableActionPanel.stories-C9Rhq3ki.js → ExpandableActionPanel.stories-D19yOaYM.js} +1 -1
  56. package/storybook-static/assets/{Flex-DaZWQHPt.js → Flex-DIZfsMsu.js} +1 -1
  57. package/storybook-static/assets/{Flex.stories-Bs__SjCv.js → Flex.stories-b6asO6Wg.js} +1 -1
  58. package/storybook-static/assets/{FloatingPopover-Z028tMRL.js → FloatingPopover-BMKn-ql-.js} +1 -1
  59. package/storybook-static/assets/{FormattedTableCell-BQg_ZMEh.js → FormattedTableCell-BT4z527d.js} +1 -1
  60. package/storybook-static/assets/FormattedTableCell-CXlMRNU9.css +1 -0
  61. package/storybook-static/assets/{Grid-CnX_bhEG.js → Grid-DOOnMH98.js} +1 -1
  62. package/storybook-static/assets/{Grid.stories-B7jXD20g.js → Grid.stories-BytLkIod.js} +1 -1
  63. package/storybook-static/assets/{ImageCropper.stories-1DjfXXxs.js → ImageCropper.stories-mOkJIs2l.js} +1 -1
  64. package/storybook-static/assets/{ImageRenderer-DI9hvpAc.js → ImageRenderer-CZRbXgZb.js} +1 -1
  65. package/storybook-static/assets/{ImageRenderer.stories-B27u6j14.js → ImageRenderer.stories-DTw8oVgX.js} +1 -1
  66. package/storybook-static/assets/{ImageView.stories-BM0aNseh.js → ImageView.stories-C_y-kuMM.js} +1 -1
  67. package/storybook-static/assets/{ImageViewer.stories-C5wouJNn.js → ImageViewer.stories-BMW63e3_.js} +2 -2
  68. package/storybook-static/assets/{ImageViewerRuntime-CW0NRJa4.js → ImageViewerRuntime-CNlV0hTZ.js} +1 -1
  69. package/storybook-static/assets/{Input-C7XSD_dt.js → Input-CVU8GJSJ.js} +1 -1
  70. package/storybook-static/assets/{Input-C2bvv3jL.js → Input-D7ogoGUR.js} +1 -1
  71. package/storybook-static/assets/{Input.stories-BbuxMsTz.js → Input.stories-Ck5NAzN5.js} +1 -1
  72. package/storybook-static/assets/{InputDateTime-2nXK3nym.js → InputDateTime-BtQKShpA.js} +1 -1
  73. package/storybook-static/assets/{InputDateTime.stories-BbNtupBI.js → InputDateTime.stories-Ck_Vdd0f.js} +1 -1
  74. package/storybook-static/assets/{InputFile-COZCRhFO.js → InputFile-BtrIqfKw.js} +1 -1
  75. package/storybook-static/assets/{InputFile-BEkTqx8y.js → InputFile-C-wYyGvd.js} +1 -1
  76. package/storybook-static/assets/{InputFile.stories-Cu8n9jPc.js → InputFile.stories-Hz_10-5g.js} +1 -1
  77. package/storybook-static/assets/{InputFiles-D4UX-p-O.js → InputFiles-fMA23_Bz.js} +1 -1
  78. package/storybook-static/assets/{InputFiles-Fqt7W6Sx.js → InputFiles-kGadQIOr.js} +1 -1
  79. package/storybook-static/assets/{InputFiles.stories-AQFSxEo-.js → InputFiles.stories-DCGwLGsk.js} +1 -1
  80. package/storybook-static/assets/{InputFilesList-Dl9kpcb-.js → InputFilesList-D2d_PfYA.js} +1 -1
  81. package/storybook-static/assets/{InputImage-OFDcbwsC.js → InputImage-DUthKRXu.js} +1 -1
  82. package/storybook-static/assets/{InputImage-By2cPpXy.js → InputImage-DmHkPJAH.js} +1 -1
  83. package/storybook-static/assets/{InputImage.stories-CSnV2rMp.js → InputImage.stories-jatpBa1U.js} +1 -1
  84. package/storybook-static/assets/{InteractiveComponents-K3FQ5oIY.js → InteractiveComponents-DoYiFxrU.js} +1 -1
  85. package/storybook-static/assets/{InteractiveComponents.stories-B31U1CpF.js → InteractiveComponents.stories-C7MNF767.js} +1 -1
  86. package/storybook-static/assets/LayoutPicker-BXPyXDP-.js +85 -0
  87. package/storybook-static/assets/{LayoutPicker-Cmw9sDIb.js → LayoutPicker-C-QQvpXv.js} +39 -2
  88. package/storybook-static/assets/LayoutPicker.stories-Dwo08nCV.js +91 -0
  89. package/storybook-static/assets/{Listbox-DlD8gsbi.js → Listbox-CVTOtx7h.js} +1 -1
  90. package/storybook-static/assets/{Listbox-apRjZaS-.js → Listbox-lOsGVKCt.js} +1 -1
  91. package/storybook-static/assets/{Listbox.stories-Ccfez6pD.js → Listbox.stories-JF_tgMsM.js} +1 -1
  92. package/storybook-static/assets/{Modal-C7tZEU45.js → Modal-DNDnh6eL.js} +1 -1
  93. package/storybook-static/assets/{Modal-DsUFnBz_.js → Modal-XipTBtwq.js} +1 -1
  94. package/storybook-static/assets/{Modal.stories-C7z4-Upz.js → Modal.stories-C-D2Op2H.js} +1 -1
  95. package/storybook-static/assets/{ModalManagerProvider-CFSyB9oN.js → ModalManagerProvider-BSgCQPE0.js} +1 -1
  96. package/storybook-static/assets/{MultiSelect-hG56GrpU.js → MultiSelect-BkjfbN5S.js} +1 -1
  97. package/storybook-static/assets/{MultiSelect-GKFkNsBv.js → MultiSelect-juwreD-7.js} +1 -1
  98. package/storybook-static/assets/{MultiSelect.stories-DDy2bmb6.js → MultiSelect.stories-DpH2Lt7S.js} +1 -1
  99. package/storybook-static/assets/{NoData-BMwLVlW7.js → NoData-A59EYm0a.js} +1 -1
  100. package/storybook-static/assets/{NotificationsHost-svZxowAr.js → NotificationsHost-Dmp9bSBy.js} +1 -1
  101. package/storybook-static/assets/{NotificationsHost.stories-jyHqSHpV.js → NotificationsHost.stories-Ds9fPqPw.js} +1 -1
  102. package/storybook-static/assets/{ODataMultiSelect-CDZl1LYK.js → ODataMultiSelect-ATFN6j03.js} +1 -1
  103. package/storybook-static/assets/{ODataMultiSelect.stories-BRV8hqOa.js → ODataMultiSelect.stories-BZHufWhw.js} +1 -1
  104. package/storybook-static/assets/{ODataSelect-CH_KEIgG.js → ODataSelect-wsq-aKaL.js} +1 -1
  105. package/storybook-static/assets/{ODataSelect.stories-CdJ4ueMz.js → ODataSelect.stories-DDJckPji.js} +1 -1
  106. package/storybook-static/assets/{ODataTreeMultiSelect-DoDprp2D.js → ODataTreeMultiSelect-DRkVACkc.js} +1 -1
  107. package/storybook-static/assets/{ODataTreeMultiSelect.stories-BBa6dAWY.js → ODataTreeMultiSelect.stories-Cf9f-c1A.js} +1 -1
  108. package/storybook-static/assets/{ODataTreeSelect-jBq76QJv.js → ODataTreeSelect-DmpAqcJn.js} +1 -1
  109. package/storybook-static/assets/{ODataTreeSelect.stories-B0kASy4Q.js → ODataTreeSelect.stories-CmjLCIoB.js} +1 -1
  110. package/storybook-static/assets/{OneStepScroller-DgK5zRf5.js → OneStepScroller-EAhOZmWt.js} +1 -1
  111. package/storybook-static/assets/{Option-C0S3Jhd2.js → Option-Bc5-OwJm.js} +1 -1
  112. package/storybook-static/assets/{OptionButton-Bw4h_7Fd.js → OptionButton-PxwmoR0s.js} +1 -1
  113. package/storybook-static/assets/{PeriodSelect-iAqhhTCd.js → PeriodSelect-B-NPWAUQ.js} +1 -1
  114. package/storybook-static/assets/{PeriodSelect-BUZlKThq.js → PeriodSelect-Dd3tAy-l.js} +1 -1
  115. package/storybook-static/assets/{PeriodSelect.stories-Cqu2cvpS.js → PeriodSelect.stories-BCRagfo9.js} +1 -1
  116. package/storybook-static/assets/{PickerField-kCraJolS.js → PickerField-BSGmEh4a.js} +1 -1
  117. package/storybook-static/assets/{PickerTriggerActions-DCrbv85j.js → PickerTriggerActions-CbcemWC5.js} +1 -1
  118. package/storybook-static/assets/{Popover-CAobkmJT.js → Popover-ChIXyBaB.js} +1 -1
  119. package/storybook-static/assets/{Popover-D2M0JiO7.js → Popover-DDcNjJVQ.js} +1 -1
  120. package/storybook-static/assets/{Popover.stories-BWrN-v1w.js → Popover.stories-DFA9Jxpy.js} +1 -1
  121. package/storybook-static/assets/{PresetRangeDateInput-BrsrppQR.js → PresetRangeDateInput-BqXmZpJv.js} +1 -1
  122. package/storybook-static/assets/{PresetRangeDateInput-BskW--2E.js → PresetRangeDateInput-CbqvxYsV.js} +1 -1
  123. package/storybook-static/assets/{PresetRangeDateInput.stories-B4cQ8O68.js → PresetRangeDateInput.stories-BHQTcW_z.js} +1 -1
  124. package/storybook-static/assets/{PresetSelect-DEOf0a4I.js → PresetSelect-CtDoIWSg.js} +1 -1
  125. package/storybook-static/assets/{README-eoM28QGj.js → README-87vCeikt.js} +1 -1
  126. package/storybook-static/assets/{README-CKYbHRQu.js → README-8ieYbwRv.js} +1 -1
  127. package/storybook-static/assets/{README-CjDR0DCT.js → README-B2UhI-qx.js} +1 -1
  128. package/storybook-static/assets/{README-Weoeni8A.js → README-B3SMW4TV.js} +1 -1
  129. package/storybook-static/assets/{README-Bczkeo4S.js → README-B43WmszX.js} +1 -1
  130. package/storybook-static/assets/{README-C5ESwpCt.js → README-B5rpg-Bo.js} +1 -1
  131. package/storybook-static/assets/{README-PYQ__oB1.js → README-BAPMV_Cm.js} +1 -1
  132. package/storybook-static/assets/{README-DYHYOkUz.js → README-BEzdp9qB.js} +1 -1
  133. package/storybook-static/assets/{README-CcYawVkC.js → README-BHN17dUh.js} +1 -1
  134. package/storybook-static/assets/{README-Dh4uSHUd.js → README-BPBvX2pu.js} +1 -1
  135. package/storybook-static/assets/{README-tEKPrWDG.js → README-BRozDrPV.js} +1 -1
  136. package/storybook-static/assets/{README-BWG_J-15.js → README-BS2qCis7.js} +1 -1
  137. package/storybook-static/assets/{README-C2j_R02h.js → README-BS9CB7TR.js} +1 -1
  138. package/storybook-static/assets/{README-CrSfz44u.js → README-BTI7-oMS.js} +1 -1
  139. package/storybook-static/assets/{README-DEB7jN2G.js → README-Bf13jEbX.js} +1 -1
  140. package/storybook-static/assets/{README-FC7XUYVa.js → README-BmX_gdJm.js} +1 -1
  141. package/storybook-static/assets/{README-CJ-L25gm.js → README-BuUZJLLD.js} +1 -1
  142. package/storybook-static/assets/{README-CZdf7Jyj.js → README-BviZJCGw.js} +1 -1
  143. package/storybook-static/assets/{README-BlP3CzTg.js → README-CD0CH2Wy.js} +1 -1
  144. package/storybook-static/assets/{README-HfXKFrXY.js → README-CNQJDOEQ.js} +1 -1
  145. package/storybook-static/assets/{README-DjPRryHg.js → README-COGC_G42.js} +1 -1
  146. package/storybook-static/assets/{README-CdRI75Jm.js → README-CSYTh4FM.js} +1 -1
  147. package/storybook-static/assets/{README-CtBT6KJo.js → README-CVzeBBbC.js} +1 -1
  148. package/storybook-static/assets/{README-BkqBbuZP.js → README-CYkJGsO-.js} +1 -1
  149. package/storybook-static/assets/{README-CUXxO9Db.js → README-ClbpyGVv.js} +1 -1
  150. package/storybook-static/assets/{README-BZkpUcN4.js → README-CvznQ5DE.js} +1 -1
  151. package/storybook-static/assets/{README-CwOlh0x_.js → README-D1_Y0Xmw.js} +1 -1
  152. package/storybook-static/assets/{README-DOju-G9e.js → README-D2yCfl2o.js} +1 -1
  153. package/storybook-static/assets/{README-tneYNBR2.js → README-D9bg9f74.js} +1 -1
  154. package/storybook-static/assets/{README-BVm2h5gQ.js → README-DJ1jDUnA.js} +1 -1
  155. package/storybook-static/assets/{README-Cr5pvD2a.js → README-DMbTryDc.js} +1 -1
  156. package/storybook-static/assets/{README-CPB57-BD.js → README-DNjzB9pT.js} +1 -1
  157. package/storybook-static/assets/{README-pJNBrsHp.js → README-DTAFDnFQ.js} +1 -1
  158. package/storybook-static/assets/{README-DGnQ3O8r.js → README-DUBJn2Ju.js} +1 -1
  159. package/storybook-static/assets/{README-CLKKSnvI.js → README-D_RZ1dEa.js} +1 -1
  160. package/storybook-static/assets/{README-BDZ-UeI_.js → README-DaHZmDOI.js} +1 -1
  161. package/storybook-static/assets/{README-CPE-B9NJ.js → README-Daclz_Vq.js} +1 -1
  162. package/storybook-static/assets/{README-CXhg-Avp.js → README-Dl_o4aSe.js} +1 -1
  163. package/storybook-static/assets/{README-BRy5W4qi.js → README-DmaK5qEx.js} +1 -1
  164. package/storybook-static/assets/{README-h_Ia4l0F.js → README-DxeEPo-5.js} +1 -1
  165. package/storybook-static/assets/{README-DL8HYHzC.js → README-Dxm4jPJX.js} +1 -1
  166. package/storybook-static/assets/{README-ChM2WYvT.js → README-ErUs-WY2.js} +1 -1
  167. package/storybook-static/assets/{README-BedW-6Qh.js → README-OfF6wOio.js} +1 -1
  168. package/storybook-static/assets/{README-UBWohyzP.js → README-QZVvMoOB.js} +1 -1
  169. package/storybook-static/assets/{README-77pVTGG0.js → README-QjVUi8kc.js} +1 -1
  170. package/storybook-static/assets/{README-DzzON1ye.js → README-SZH6KGw3.js} +1 -1
  171. package/storybook-static/assets/{README-DzhqH1NW.js → README-ZR6Xp0dF.js} +1 -1
  172. package/storybook-static/assets/{README-DOpYTKui.js → README-a77qa4ty.js} +1 -1
  173. package/storybook-static/assets/{README-C04l6A_V.js → README-ex5nxaXZ.js} +1 -1
  174. package/storybook-static/assets/{README-D5Wgm_6F.js → README-g1OFGqQI.js} +1 -1
  175. package/storybook-static/assets/{README-BbqX48ZX.js → README-gx4Fd1mY.js} +1 -1
  176. package/storybook-static/assets/{README-CRfW_mwG.js → README-q1qdBpXc.js} +1 -1
  177. package/storybook-static/assets/{README-DEYu86HB.js → README-vD1-Ulbp.js} +1 -1
  178. package/storybook-static/assets/{RadioButton-C_7MrkSd.js → RadioButton-CF3QPcrf.js} +1 -1
  179. package/storybook-static/assets/{RadioButton-zjLDV_vA.js → RadioButton-hjjU5sk5.js} +1 -1
  180. package/storybook-static/assets/{RadioButton.stories-C81aMJWs.js → RadioButton.stories-koM1Ljav.js} +1 -1
  181. package/storybook-static/assets/{RadioGroup-G1nrB231.js → RadioGroup-Br-l88J6.js} +1 -1
  182. package/storybook-static/assets/{RadioGroup-BmMpfAxw.js → RadioGroup-D5eW-uDY.js} +1 -1
  183. package/storybook-static/assets/{RadioGroup.stories-U8Q6ChKN.js → RadioGroup.stories-DrwOi4QH.js} +1 -1
  184. package/storybook-static/assets/{Scrollable-7F5dqi9H.js → Scrollable-BrsRmcMz.js} +1 -1
  185. package/storybook-static/assets/{Select-CEfw0HMD.js → Select-Bf5M5oc0.js} +1 -1
  186. package/storybook-static/assets/{Select-Cr6CgIIx.js → Select-Cmlknxsv.js} +1 -1
  187. package/storybook-static/assets/{Select.stories-DgA0I8m1.js → Select.stories-BM8U-sIP.js} +1 -1
  188. package/storybook-static/assets/{SerializableSelect-CQyHtiSK.js → SerializableSelect-DF8HELZf.js} +1 -1
  189. package/storybook-static/assets/{SerializableSelect.stories-Dj0qXUbg.js → SerializableSelect.stories-BfDNuils.js} +1 -1
  190. package/storybook-static/assets/{SingleDateTimeInput-k6cU5HTO.js → SingleDateTimeInput-4p_cgs10.js} +1 -1
  191. package/storybook-static/assets/{SingleDateTimeInput-C96e9Bnk.js → SingleDateTimeInput-DEOj7KGq.js} +1 -1
  192. package/storybook-static/assets/{SingleDateTimeInput.stories-DW1owBoF.js → SingleDateTimeInput.stories-D2EI6quF.js} +1 -1
  193. package/storybook-static/assets/Slider-Bz4wP74t.js +1 -0
  194. package/storybook-static/assets/{Slider-Bq2uMF2q.js → Slider-XVAOSj2a.js} +1 -1
  195. package/storybook-static/assets/{Slider.stories-VjnPqsrP.js → Slider.stories-B8_8QSd8.js} +1 -1
  196. package/storybook-static/assets/{SliderInput-BeAfEJOt.js → SliderInput-1U-1F8y3.js} +1 -1
  197. package/storybook-static/assets/SliderInput-BmIo8trQ.js +2 -0
  198. package/storybook-static/assets/{SliderInput.stories-DBlgmZyR.js → SliderInput.stories-Da1hcUQg.js} +1 -1
  199. package/storybook-static/assets/{Sortable-4hmW6aYf.js → Sortable-DdSm1U01.js} +1 -1
  200. package/storybook-static/assets/{Sortable.stories-BQ8KVECH.js → Sortable.stories-B3vBG-Wg.js} +1 -1
  201. package/storybook-static/assets/Splitter-BdSyx5Lj.css +1 -0
  202. package/storybook-static/assets/Splitter-SV-d9MZj.js +105 -0
  203. package/storybook-static/assets/Splitter.stories-jPF9QpQ5.js +52 -0
  204. package/storybook-static/assets/{StateSelect-CIbsxjVP.js → StateSelect-CLYa34QZ.js} +1 -1
  205. package/storybook-static/assets/{StateSelect-DNu5sYFr.js → StateSelect-Dg6j3tmo.js} +1 -1
  206. package/storybook-static/assets/{StateSelect.stories-BrgfGby7.js → StateSelect.stories-B-XXt836.js} +1 -1
  207. package/storybook-static/assets/{StatusIndicator-BAJHtEXU.js → StatusIndicator-SmIOAZiH.js} +1 -1
  208. package/storybook-static/assets/{StatusIndicator.stories-ELJXgKGF.js → StatusIndicator.stories-Dxn-Ph9C.js} +1 -1
  209. package/storybook-static/assets/{StringToggle.stories-Bp4AH2PM.js → StringToggle.stories-Dm_95aFz.js} +1 -1
  210. package/storybook-static/assets/{Switch-CEMTONNK.js → Switch-DHKEAZQb.js} +1 -1
  211. package/storybook-static/assets/{Switch-Dp2mfJMY.js → Switch-_tgHhBGP.js} +1 -1
  212. package/storybook-static/assets/{Switch.stories-CxSCdM1U.js → Switch.stories-BHEJkS4S.js} +1 -1
  213. package/storybook-static/assets/{Table-DFenIYxk.js → Table-DlSI_r_q.js} +1 -1
  214. package/storybook-static/assets/{Table.stories-D4hfPD50.js → Table.stories-B5rgYs9g.js} +1 -1
  215. package/storybook-static/assets/{TableEditor.stories-FUN04jRt.js → TableEditor.stories-KVe48GsE.js} +1 -1
  216. package/storybook-static/assets/{Tabs-DQITegdm.js → Tabs-DrYsqBrH.js} +1 -1
  217. package/storybook-static/assets/{Tabs.stories-iOhYWtXS.js → Tabs.stories-BPct4JgR.js} +1 -1
  218. package/storybook-static/assets/{TabsBox-Cu2hSQ0_.js → TabsBox-AWLl9n9k.js} +1 -1
  219. package/storybook-static/assets/{TagInput-BSHH7VHG.js → TagInput-Bhnrf28Y.js} +1 -1
  220. package/storybook-static/assets/{TagInput.stories-CMvjjSGz.js → TagInput.stories-Bkt4gArB.js} +1 -1
  221. package/storybook-static/assets/{Text-BSnmJ5Rc.js → Text-BgFSnObV.js} +1 -1
  222. package/storybook-static/assets/{Textarea-DCko2hh9.js → Textarea-BNJPblVu.js} +1 -1
  223. package/storybook-static/assets/{Textarea-BURqjbfm.js → Textarea-ClwEnzFe.js} +1 -1
  224. package/storybook-static/assets/{Textarea.stories-D9bD-zxp.js → Textarea.stories-DpKH8ULU.js} +1 -1
  225. package/storybook-static/assets/{TimePanel-ZM6IEZ23.js → TimePanel-BZwQNhG_.js} +1 -1
  226. package/storybook-static/assets/{TimePanel.stories-BPFzdjrk.js → TimePanel.stories-4TgrKbYT.js} +1 -1
  227. package/storybook-static/assets/{Toggle-Co-9WIQM.js → Toggle-CO8Ij90u.js} +1 -1
  228. package/storybook-static/assets/{Toggle-BGYpWyl-.js → Toggle-DbixMwD6.js} +1 -1
  229. package/storybook-static/assets/{Toggle.stories-DH28lc09.js → Toggle.stories-Dc4VwIpg.js} +1 -1
  230. package/storybook-static/assets/{TreeMultiSelect-BiNv5d9H.js → TreeMultiSelect-C-_TH1CD.js} +1 -1
  231. package/storybook-static/assets/{TreeMultiSelect-DbqIa68V.js → TreeMultiSelect-CriZ1qIe.js} +1 -1
  232. package/storybook-static/assets/{TreeMultiSelect.stories-CBbmYs0g.js → TreeMultiSelect.stories-d_SN0Sy2.js} +1 -1
  233. package/storybook-static/assets/{TreePickerBase-DtDat39S.js → TreePickerBase-DrIewo4F.js} +1 -1
  234. package/storybook-static/assets/{TreeSelect-BWHuf3sH.js → TreeSelect-9_6a1BFQ.js} +1 -1
  235. package/storybook-static/assets/{TreeSelect-tQtWX3eZ.js → TreeSelect-Bbt4VmZS.js} +1 -1
  236. package/storybook-static/assets/{TreeSelect.stories-BFefku3r.js → TreeSelect.stories-pu8ExKD5.js} +1 -1
  237. package/storybook-static/assets/{TreeTable-ZOKoR3S8.js → TreeTable-DophWkj1.js} +1 -1
  238. package/storybook-static/assets/{TreeTable.stories-jWFBqYVA.js → TreeTable.stories-Pfm9IHtt.js} +1 -1
  239. package/storybook-static/assets/{blocks-CkyPJxFn.js → blocks-B8YtS91C.js} +3 -3
  240. package/storybook-static/assets/{check-DuSyNDf0.js → check-Dpmf3AX3.js} +1 -1
  241. package/storybook-static/assets/{chevron-down-T_Hptvkv.js → chevron-down-DNiHhbIr.js} +1 -1
  242. package/storybook-static/assets/{chevron-left-BcH0yrC3.js → chevron-left-DOGuNTdf.js} +1 -1
  243. package/storybook-static/assets/{chevron-right-Dk1ulWkk.js → chevron-right-Dpww2xSW.js} +1 -1
  244. package/storybook-static/assets/{chunk-W22LQPXL-CdmMdLH3.js → chunk-W22LQPXL-DMKzrwT-.js} +1 -1
  245. package/storybook-static/assets/{circle-alert-CiZtyFLl.js → circle-alert-0JRaOQ6l.js} +1 -1
  246. package/storybook-static/assets/{circle-check-N8FNJhb5.js → circle-check-cScFaPMW.js} +1 -1
  247. package/storybook-static/assets/{components-BuQ4azTo.js → components-CX2-Yz0X.js} +3 -3
  248. package/storybook-static/assets/{contextMenu-ChdzMmup.js → contextMenu-9tIzHxoE.js} +1 -1
  249. package/storybook-static/assets/{download-CEAUuG15.js → download-DgVtY66c.js} +1 -1
  250. package/storybook-static/assets/{floating-ui.react-DO4IuDDt.js → floating-ui.react-DoTNEH-V.js} +1 -1
  251. package/storybook-static/assets/{foundationApi-D4_39zNT.js → foundationApi-CrfT1bel.js} +1 -1
  252. package/storybook-static/assets/{foundationLib-D36HDBKZ.js → foundationLib-C3lg6eHJ.js} +1 -1
  253. package/storybook-static/assets/{hooks-DaCAWteV.js → hooks-DUjApVwU.js} +1 -1
  254. package/storybook-static/assets/{iframe-C3wMnNgT.js → iframe-BNEMNAEw.js} +4 -4
  255. package/storybook-static/assets/iframe-DRW7Blys.js +1 -0
  256. package/storybook-static/assets/{info-CgD0dwe7.js → info-DLaCn50r.js} +1 -1
  257. package/storybook-static/assets/number-scale-D2KTkjVQ.js +1 -0
  258. package/storybook-static/assets/{odata-DuWK9X6F.js → odata-gcOB7kIq.js} +1 -1
  259. package/storybook-static/assets/{odataStoryFixtures-BlYK5gCH.js → odataStoryFixtures-DYyQ-sVj.js} +1 -1
  260. package/storybook-static/assets/{react-6aa8UN0d.js → react-E46PZk5t.js} +1 -1
  261. package/storybook-static/assets/{refresh-cw-C-kY50XM.js → refresh-cw-DOoEo5nW.js} +1 -1
  262. package/storybook-static/assets/{settings-2-Lw5jPpcm.js → settings-2-qiHcSfL1.js} +1 -1
  263. package/storybook-static/assets/{sortable-BMxBXOba.js → sortable-YPosiOrw.js} +1 -1
  264. package/storybook-static/assets/{syntaxhighlighter-QEQV7K2Y-C6nhsm5S.js → syntaxhighlighter-QEQV7K2Y-Cb3owL36.js} +1 -1
  265. package/storybook-static/assets/{trash-2-DDRTzebt.js → trash-2-m2QWUX7a.js} +1 -1
  266. package/storybook-static/assets/{triangle-alert--SWMyXwt.js → triangle-alert-dC_KzK0I.js} +1 -1
  267. package/storybook-static/assets/{useODataSelectBase-B_3Zl3-d.js → useODataSelectBase-CZT1sCI4.js} +1 -1
  268. package/storybook-static/assets/{useODataTreeData-D5U-f8-Y.js → useODataTreeData-C4C8qk14.js} +1 -1
  269. package/storybook-static/assets/{usePickerQuery-BQ85tBVK.js → usePickerQuery-BVa-C4dI.js} +1 -1
  270. package/storybook-static/assets/{usePickerTriggerController-DUaswv5t.js → usePickerTriggerController-DSGNNIhS.js} +1 -1
  271. package/storybook-static/assets/{x-B4c2IwTW.js → x-B7mf6jeL.js} +1 -1
  272. package/storybook-static/iframe.html +2 -2
  273. package/storybook-static/index.json +1 -1
  274. package/storybook-static/project.json +1 -1
  275. package/storybook-static/assets/FormattedTableCell-CTIL_ueu.css +0 -1
  276. package/storybook-static/assets/LayoutPicker-RN42vmef.js +0 -66
  277. package/storybook-static/assets/LayoutPicker.stories-C5nHgi9s.js +0 -74
  278. package/storybook-static/assets/Slider-B1T2FRiM.js +0 -1
  279. package/storybook-static/assets/SliderInput-DJpNIGZl.js +0 -2
  280. package/storybook-static/assets/Splitter-08NDE539.js +0 -84
  281. package/storybook-static/assets/Splitter-D-LmmQad.css +0 -1
  282. package/storybook-static/assets/Splitter.stories-DOVSidH9.js +0 -39
  283. package/storybook-static/assets/iframe-VKLQYnIk.js +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"table-column-interactions-DzEvVuXe.js","names":[],"sources":["../../src/table-column-interactions/TableColumnInteractions.module.scss","../../src/table-column-interactions/TableColumnResizeHandle.tsx","../../src/table-column-interactions/TableHeaderInteractionCell.tsx"],"sourcesContent":[".resizeHandle {\n\tcursor: col-resize;\n\ttouch-action: none;\n\tuser-select: none;\n\tposition: absolute;\n\tright: 0;\n\ttop: 0;\n\theight: 100%;\n\twidth: 6px;\n\tz-index: 1;\n\n\t&:hover,\n\t&:focus-visible {\n\t\tbackground: var(--focus-ring);\n\t}\n\n\t&:focus-visible {\n\t\toutline: var(--focus);\n\t\toutline-offset: calc(var(--focus-offset) * -1);\n\t}\n}\n","import { useRef, type KeyboardEvent as ReactKeyboardEvent, type PointerEvent as ReactPointerEvent } from \"react\";\n\nimport { DEFAULT_TABLE_COLUMN_MIN_WIDTH, normalizeTableColumnWidth } from \"@ryuzaki13/react-foundation-lib/table\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport styles from \"./TableColumnInteractions.module.scss\";\n\nconst DEFAULT_KEYBOARD_RESIZE_STEP = 8;\n\nexport type TableColumnResizeHandleProps = {\n\tcolumnId: string;\n\tclassName?: string;\n\tminWidth?: number;\n\tkeyboardStep?: number;\n\tariaLabel?: string;\n\tgetStartWidth?: (columnId: string, element: HTMLElement) => number;\n\tonResize: (columnId: string, width: number) => void;\n\tonResizeEnd?: (columnId: string, width: number) => void;\n\tonReset?: (columnId: string) => void;\n};\n\nfunction resolveHeaderCellWidth(element: HTMLElement, minWidth: number): number {\n\tconst headerCell = element.closest(\"th\");\n\tconst width = headerCell?.getBoundingClientRect().width;\n\n\treturn normalizeTableColumnWidth(typeof width === \"number\" && Number.isFinite(width) ? width : minWidth, minWidth);\n}\n\nexport function TableColumnResizeHandle({\n\tcolumnId,\n\tclassName,\n\tminWidth,\n\tkeyboardStep = DEFAULT_KEYBOARD_RESIZE_STEP,\n\tariaLabel = \"Изменить ширину колонки\",\n\tgetStartWidth,\n\tonResize,\n\tonResizeEnd,\n\tonReset\n}: TableColumnResizeHandleProps) {\n\tconst resolvedMinWidth = minWidth ?? DEFAULT_TABLE_COLUMN_MIN_WIDTH;\n\tconst startXRef = useRef(0);\n\tconst startWidthRef = useRef(0);\n\tconst lastWidthRef = useRef(0);\n\tconst activeRef = useRef(false);\n\tconst movedRef = useRef(false);\n\n\tconst resolveStartWidth = (element: HTMLElement) => {\n\t\tconst width = getStartWidth?.(columnId, element) ?? resolveHeaderCellWidth(element, resolvedMinWidth);\n\n\t\treturn normalizeTableColumnWidth(width, resolvedMinWidth);\n\t};\n\n\tconst handlePointerDown = (event: ReactPointerEvent<HTMLDivElement>) => {\n\t\tif (event.button !== 0 && event.pointerType === \"mouse\") return;\n\n\t\tactiveRef.current = true;\n\t\tmovedRef.current = false;\n\t\tstartXRef.current = event.clientX;\n\t\tstartWidthRef.current = resolveStartWidth(event.currentTarget);\n\t\tlastWidthRef.current = startWidthRef.current;\n\t\tevent.currentTarget.setPointerCapture(event.pointerId);\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t};\n\n\tconst handlePointerMove = (event: ReactPointerEvent<HTMLDivElement>) => {\n\t\tif (!activeRef.current) return;\n\n\t\tconst nextWidth = normalizeTableColumnWidth(startWidthRef.current + event.clientX - startXRef.current, resolvedMinWidth);\n\t\tlastWidthRef.current = nextWidth;\n\t\tmovedRef.current = true;\n\t\tonResize(columnId, nextWidth);\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t};\n\n\tconst finishPointerResize = (event: ReactPointerEvent<HTMLDivElement>) => {\n\t\tif (!activeRef.current) return;\n\n\t\tactiveRef.current = false;\n\n\t\tif (movedRef.current) {\n\t\t\tonResizeEnd?.(columnId, lastWidthRef.current);\n\t\t}\n\n\t\ttry {\n\t\t\tevent.currentTarget.releasePointerCapture(event.pointerId);\n\t\t} catch {\n\t\t\t// Pointer capture мог быть сброшен браузером при отмене жеста.\n\t\t}\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t};\n\n\tconst handleKeyDown = (event: ReactKeyboardEvent<HTMLDivElement>) => {\n\t\tif (event.key !== \"ArrowLeft\" && event.key !== \"ArrowRight\" && event.key !== \"Home\") {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\tif (event.key === \"Home\") {\n\t\t\tonReset?.(columnId);\n\t\t\treturn;\n\t\t}\n\n\t\tconst direction = event.key === \"ArrowRight\" ? 1 : -1;\n\t\tconst currentWidth = resolveStartWidth(event.currentTarget);\n\t\tconst nextWidth = normalizeTableColumnWidth(currentWidth + direction * keyboardStep, resolvedMinWidth);\n\t\tonResize(columnId, nextWidth);\n\t\tonResizeEnd?.(columnId, nextWidth);\n\t};\n\n\treturn (\n\t\t<div\n\t\t\trole=\"separator\"\n\t\t\taria-label={ariaLabel}\n\t\t\taria-orientation=\"vertical\"\n\t\t\ttabIndex={0}\n\t\t\tonPointerDown={handlePointerDown}\n\t\t\tonPointerMove={handlePointerMove}\n\t\t\tonPointerUp={finishPointerResize}\n\t\t\tonPointerCancel={finishPointerResize}\n\t\t\tonKeyDown={handleKeyDown}\n\t\t\tonDoubleClick={(event) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tonReset?.(columnId);\n\t\t\t}}\n\t\t\tclassName={cn(styles.resizeHandle, className)}\n\t\t/>\n\t);\n}\n","import { type ComponentPropsWithoutRef, type CSSProperties, type ReactNode } from \"react\";\n\nimport { type DraggableAttributes, type DraggableSyntheticListeners, type UniqueIdentifier } from \"@dnd-kit/core\";\nimport { useSortable } from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { TableColumnResizeHandle, type TableColumnResizeHandleProps } from \"./TableColumnResizeHandle\";\n\nexport type TableHeaderCellDragState = {\n\tattributes: DraggableAttributes;\n\tlisteners: DraggableSyntheticListeners;\n\tsetActivatorElement: (element: HTMLElement | null) => void;\n\tdisabled: boolean;\n\tisDragging: boolean;\n};\n\nexport type TableHeaderInteractionCellProps = Omit<ComponentPropsWithoutRef<\"th\">, \"children\" | \"id\"> & {\n\tcolumnId: UniqueIdentifier;\n\tchildren: ReactNode | ((dragState: TableHeaderCellDragState) => ReactNode);\n\tdragDisabled?: boolean;\n\tdraggingClassName?: string;\n\tresizeHandle?: TableColumnResizeHandleProps;\n};\n\nfunction renderChildren(children: TableHeaderInteractionCellProps[\"children\"], dragState: TableHeaderCellDragState): ReactNode {\n\treturn typeof children === \"function\" ? children(dragState) : children;\n}\n\nexport function TableHeaderInteractionCell({\n\tcolumnId,\n\tchildren,\n\tdragDisabled = false,\n\tdraggingClassName,\n\tresizeHandle,\n\tclassName,\n\tstyle,\n\t...thProps\n}: TableHeaderInteractionCellProps) {\n\tconst { attributes, listeners, setActivatorNodeRef, setNodeRef, transform, /*transition,*/ isDragging, rect } = useSortable({\n\t\tid: columnId,\n\t\tdisabled: dragDisabled\n\t});\n\tconst lockedWidth = isDragging ? rect.current?.width : undefined;\n\tconst sortableStyle: CSSProperties = {\n\t\ttransform: CSS.Translate.toString(transform),\n\t\t// transition,\n\t\tzIndex: isDragging ? \"calc(var(--z-header) + 1)\" : undefined,\n\t\t...(lockedWidth ? { width: lockedWidth, minWidth: lockedWidth } : {}),\n\t\t...style\n\t};\n\tconst dragState: TableHeaderCellDragState = {\n\t\tattributes,\n\t\tlisteners,\n\t\tsetActivatorElement: setActivatorNodeRef,\n\t\tdisabled: dragDisabled,\n\t\tisDragging\n\t};\n\n\treturn (\n\t\t<th {...thProps} ref={setNodeRef} className={cn(className, isDragging && draggingClassName)} style={sortableStyle}>\n\t\t\t{renderChildren(children, dragState)}\n\n\t\t\t{resizeHandle ? <TableColumnResizeHandle {...resizeHandle} /> : null}\n\t\t</th>\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"table-column-interactions-DzEvVuXe.js","names":[],"sources":["../../src/table-column-interactions/TableColumnInteractions.module.scss","../../src/table-column-interactions/TableColumnResizeHandle.tsx","../../src/table-column-interactions/TableHeaderInteractionCell.tsx"],"sourcesContent":[".resizeHandle {\n\tcursor: col-resize;\n\ttouch-action: none;\n\tuser-select: none;\n\tposition: absolute;\n\tright: 0;\n\ttop: 0;\n\theight: 100%;\n\twidth: 6px;\n\tz-index: 1;\n\n\t&:hover,\n\t&:focus-visible {\n\t\tbackground-color: var(--focus-ring);\n\t}\n\n\t&:focus-visible {\n\t\toutline: var(--focus);\n\t\toutline-offset: calc(var(--focus-offset) * -1);\n\t}\n}\n","import { useRef, type KeyboardEvent as ReactKeyboardEvent, type PointerEvent as ReactPointerEvent } from \"react\";\n\nimport { DEFAULT_TABLE_COLUMN_MIN_WIDTH, normalizeTableColumnWidth } from \"@ryuzaki13/react-foundation-lib/table\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport styles from \"./TableColumnInteractions.module.scss\";\n\nconst DEFAULT_KEYBOARD_RESIZE_STEP = 8;\n\nexport type TableColumnResizeHandleProps = {\n\tcolumnId: string;\n\tclassName?: string;\n\tminWidth?: number;\n\tkeyboardStep?: number;\n\tariaLabel?: string;\n\tgetStartWidth?: (columnId: string, element: HTMLElement) => number;\n\tonResize: (columnId: string, width: number) => void;\n\tonResizeEnd?: (columnId: string, width: number) => void;\n\tonReset?: (columnId: string) => void;\n};\n\nfunction resolveHeaderCellWidth(element: HTMLElement, minWidth: number): number {\n\tconst headerCell = element.closest(\"th\");\n\tconst width = headerCell?.getBoundingClientRect().width;\n\n\treturn normalizeTableColumnWidth(typeof width === \"number\" && Number.isFinite(width) ? width : minWidth, minWidth);\n}\n\nexport function TableColumnResizeHandle({\n\tcolumnId,\n\tclassName,\n\tminWidth,\n\tkeyboardStep = DEFAULT_KEYBOARD_RESIZE_STEP,\n\tariaLabel = \"Изменить ширину колонки\",\n\tgetStartWidth,\n\tonResize,\n\tonResizeEnd,\n\tonReset\n}: TableColumnResizeHandleProps) {\n\tconst resolvedMinWidth = minWidth ?? DEFAULT_TABLE_COLUMN_MIN_WIDTH;\n\tconst startXRef = useRef(0);\n\tconst startWidthRef = useRef(0);\n\tconst lastWidthRef = useRef(0);\n\tconst activeRef = useRef(false);\n\tconst movedRef = useRef(false);\n\n\tconst resolveStartWidth = (element: HTMLElement) => {\n\t\tconst width = getStartWidth?.(columnId, element) ?? resolveHeaderCellWidth(element, resolvedMinWidth);\n\n\t\treturn normalizeTableColumnWidth(width, resolvedMinWidth);\n\t};\n\n\tconst handlePointerDown = (event: ReactPointerEvent<HTMLDivElement>) => {\n\t\tif (event.button !== 0 && event.pointerType === \"mouse\") return;\n\n\t\tactiveRef.current = true;\n\t\tmovedRef.current = false;\n\t\tstartXRef.current = event.clientX;\n\t\tstartWidthRef.current = resolveStartWidth(event.currentTarget);\n\t\tlastWidthRef.current = startWidthRef.current;\n\t\tevent.currentTarget.setPointerCapture(event.pointerId);\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t};\n\n\tconst handlePointerMove = (event: ReactPointerEvent<HTMLDivElement>) => {\n\t\tif (!activeRef.current) return;\n\n\t\tconst nextWidth = normalizeTableColumnWidth(startWidthRef.current + event.clientX - startXRef.current, resolvedMinWidth);\n\t\tlastWidthRef.current = nextWidth;\n\t\tmovedRef.current = true;\n\t\tonResize(columnId, nextWidth);\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t};\n\n\tconst finishPointerResize = (event: ReactPointerEvent<HTMLDivElement>) => {\n\t\tif (!activeRef.current) return;\n\n\t\tactiveRef.current = false;\n\n\t\tif (movedRef.current) {\n\t\t\tonResizeEnd?.(columnId, lastWidthRef.current);\n\t\t}\n\n\t\ttry {\n\t\t\tevent.currentTarget.releasePointerCapture(event.pointerId);\n\t\t} catch {\n\t\t\t// Pointer capture мог быть сброшен браузером при отмене жеста.\n\t\t}\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t};\n\n\tconst handleKeyDown = (event: ReactKeyboardEvent<HTMLDivElement>) => {\n\t\tif (event.key !== \"ArrowLeft\" && event.key !== \"ArrowRight\" && event.key !== \"Home\") {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\tif (event.key === \"Home\") {\n\t\t\tonReset?.(columnId);\n\t\t\treturn;\n\t\t}\n\n\t\tconst direction = event.key === \"ArrowRight\" ? 1 : -1;\n\t\tconst currentWidth = resolveStartWidth(event.currentTarget);\n\t\tconst nextWidth = normalizeTableColumnWidth(currentWidth + direction * keyboardStep, resolvedMinWidth);\n\t\tonResize(columnId, nextWidth);\n\t\tonResizeEnd?.(columnId, nextWidth);\n\t};\n\n\treturn (\n\t\t<div\n\t\t\trole=\"separator\"\n\t\t\taria-label={ariaLabel}\n\t\t\taria-orientation=\"vertical\"\n\t\t\ttabIndex={0}\n\t\t\tonPointerDown={handlePointerDown}\n\t\t\tonPointerMove={handlePointerMove}\n\t\t\tonPointerUp={finishPointerResize}\n\t\t\tonPointerCancel={finishPointerResize}\n\t\t\tonKeyDown={handleKeyDown}\n\t\t\tonDoubleClick={(event) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tonReset?.(columnId);\n\t\t\t}}\n\t\t\tclassName={cn(styles.resizeHandle, className)}\n\t\t/>\n\t);\n}\n","import { type ComponentPropsWithoutRef, type CSSProperties, type ReactNode } from \"react\";\n\nimport { type DraggableAttributes, type DraggableSyntheticListeners, type UniqueIdentifier } from \"@dnd-kit/core\";\nimport { useSortable } from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { TableColumnResizeHandle, type TableColumnResizeHandleProps } from \"./TableColumnResizeHandle\";\n\nexport type TableHeaderCellDragState = {\n\tattributes: DraggableAttributes;\n\tlisteners: DraggableSyntheticListeners;\n\tsetActivatorElement: (element: HTMLElement | null) => void;\n\tdisabled: boolean;\n\tisDragging: boolean;\n};\n\nexport type TableHeaderInteractionCellProps = Omit<ComponentPropsWithoutRef<\"th\">, \"children\" | \"id\"> & {\n\tcolumnId: UniqueIdentifier;\n\tchildren: ReactNode | ((dragState: TableHeaderCellDragState) => ReactNode);\n\tdragDisabled?: boolean;\n\tdraggingClassName?: string;\n\tresizeHandle?: TableColumnResizeHandleProps;\n};\n\nfunction renderChildren(children: TableHeaderInteractionCellProps[\"children\"], dragState: TableHeaderCellDragState): ReactNode {\n\treturn typeof children === \"function\" ? children(dragState) : children;\n}\n\nexport function TableHeaderInteractionCell({\n\tcolumnId,\n\tchildren,\n\tdragDisabled = false,\n\tdraggingClassName,\n\tresizeHandle,\n\tclassName,\n\tstyle,\n\t...thProps\n}: TableHeaderInteractionCellProps) {\n\tconst { attributes, listeners, setActivatorNodeRef, setNodeRef, transform, /*transition,*/ isDragging, rect } = useSortable({\n\t\tid: columnId,\n\t\tdisabled: dragDisabled\n\t});\n\tconst lockedWidth = isDragging ? rect.current?.width : undefined;\n\tconst sortableStyle: CSSProperties = {\n\t\ttransform: CSS.Translate.toString(transform),\n\t\t// transition,\n\t\tzIndex: isDragging ? \"calc(var(--z-header) + 1)\" : undefined,\n\t\t...(lockedWidth ? { width: lockedWidth, minWidth: lockedWidth } : {}),\n\t\t...style\n\t};\n\tconst dragState: TableHeaderCellDragState = {\n\t\tattributes,\n\t\tlisteners,\n\t\tsetActivatorElement: setActivatorNodeRef,\n\t\tdisabled: dragDisabled,\n\t\tisDragging\n\t};\n\n\treturn (\n\t\t<th {...thProps} ref={setNodeRef} className={cn(className, isDragging && draggingClassName)} style={sortableStyle}>\n\t\t\t{renderChildren(children, dragState)}\n\n\t\t\t{resizeHandle ? <TableColumnResizeHandle {...resizeHandle} /> : null}\n\t\t</th>\n\t);\n}\n"],"mappings":"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"}
@@ -1009,8 +1009,10 @@ var y = {
1009
1009
  preview: "koxYU-",
1010
1010
  previewPlaceholder: "k8xLa2",
1011
1011
  previewCompact: "_5pd3Bb"
1012
- }, b = "Выберите раскладку";
1013
- function x({ preset: e, compact: t = !1 }) {
1012
+ };
1013
+ //#endregion
1014
+ //#region src/layout-picker/ui/LayoutPresetPreview.tsx
1015
+ function b({ preset: e, compact: t = !1 }) {
1014
1016
  return /* @__PURE__ */ d("span", {
1015
1017
  className: l(y.preview, t && y.previewCompact),
1016
1018
  style: p(e),
@@ -1022,108 +1024,137 @@ function x({ preset: e, compact: t = !1 }) {
1022
1024
  }, `${e.id}:${t.id}`))
1023
1025
  });
1024
1026
  }
1025
- function S({ id: p, label: m, description: g, value: _, onChange: v, presets: S = h, disabled: C, getPresetDisabled: w, placeholder: T = b, showPlaceholder: E = !1, size: D, ariaLabel: O, className: k, triggerClassName: A, popupClassName: ee, placement: te = "bottom-start" }) {
1026
- let j = s(null), [M, N] = c(!1), P = S.findIndex((e) => e.id === _), F = P >= 0 ? S[P] : void 0, I = F?.label ?? T, { activeIndex: L, context: R, floatingStyles: z, getFloatingProps: B, setReference: V, setFloating: H, setOptionRef: U, close: W, openList: G, toggleOpen: K, selectOption: q, selectActiveOption: J, handleReferenceKeyDown: Y, handleFloatingKeyDown: X, getOptionId: Z, getActiveOptionId: Q } = r({
1027
- options: S,
1028
- selectedIndex: P,
1029
- open: M,
1030
- onOpenChange: N,
1031
- getOptionDisabled: w,
1027
+ //#endregion
1028
+ //#region src/layout-picker/ui/LayoutPicker.tsx
1029
+ var ee = "Выберите раскладку";
1030
+ function x({ id: p, label: m, description: g, value: _, onChange: v, presets: x = h, disabled: S, getPresetDisabled: C, placeholder: w = ee, showPlaceholder: T = !1, size: E, ariaLabel: D, className: O, triggerClassName: k, popupClassName: A, placement: j = "bottom-start", renderTrigger: M }) {
1031
+ let N = s(null), [P, te] = c(!1), F = x.findIndex((e) => e.id === _), I = F >= 0 ? x[F] : void 0, L = I?.label ?? w, { activeIndex: R, context: z, floatingStyles: B, getFloatingProps: V, setReference: H, setFloating: U, setOptionRef: W, close: G, openList: K, toggleOpen: q, selectOption: J, selectActiveOption: Y, handleReferenceKeyDown: X, handleFloatingKeyDown: Z, getOptionId: ne, getActiveOptionId: Q } = r({
1032
+ options: x,
1033
+ selectedIndex: F,
1034
+ open: P,
1035
+ onOpenChange: te,
1036
+ getOptionDisabled: C,
1032
1037
  onSelect: (e) => v(e.id),
1033
- disabled: C,
1034
- placement: te,
1038
+ disabled: S,
1039
+ placement: j,
1035
1040
  triggerMode: "display"
1036
1041
  }), $ = a({
1037
1042
  mode: "display",
1038
- open: M,
1043
+ open: P,
1039
1044
  currentQuery: "",
1040
- hasDisplayValue: F !== void 0,
1041
- inputRef: j,
1042
- openList: G,
1043
- close: W,
1044
- toggleOpen: K
1045
- }), ne = (e) => {
1046
- j.current = e;
1045
+ hasDisplayValue: I !== void 0,
1046
+ inputRef: N,
1047
+ openList: K,
1048
+ close: G,
1049
+ toggleOpen: q
1050
+ }), re = (e) => {
1051
+ N.current = e;
1047
1052
  };
1048
1053
  return /* @__PURE__ */ d(o, {
1049
1054
  id: p,
1050
1055
  label: m,
1051
1056
  description: g,
1052
- disabled: C,
1053
- size: D,
1054
- className: k,
1057
+ disabled: S,
1058
+ size: E,
1059
+ className: O,
1055
1060
  children: ({ controlId: r, labelId: a, describedBy: o }) => {
1056
- let s = `${r}-listbox`;
1057
- return /* @__PURE__ */ f(u, { children: [/* @__PURE__ */ d(i, {
1058
- ref: ne,
1059
- rootRef: V,
1061
+ let s = `${r}-listbox`, c = {
1062
+ "aria-haspopup": "listbox",
1063
+ "aria-expanded": P,
1064
+ "aria-controls": P ? s : void 0,
1065
+ "aria-labelledby": a,
1066
+ "aria-describedby": o,
1067
+ "aria-activedescendant": P ? Q(s) : void 0,
1068
+ "aria-label": a ? void 0 : D ?? `Выбрать layout. Текущее значение: ${L}`
1069
+ }, p = M?.({
1070
+ open: P,
1071
+ selectedPreset: I,
1072
+ triggerLabel: L,
1073
+ triggerProps: {
1074
+ ref: H,
1075
+ id: r,
1076
+ type: "button",
1077
+ disabled: S,
1078
+ role: "combobox",
1079
+ ...c,
1080
+ "data-ui": "layout-picker-trigger",
1081
+ className: k,
1082
+ onClick: () => {
1083
+ S || q();
1084
+ },
1085
+ onKeyDown: (e) => {
1086
+ X(e), !e.defaultPrevented && $.handleTriggerKeyDown({
1087
+ event: e,
1088
+ onActivateWhenOpen: Y,
1089
+ enableSpaceActivation: !0
1090
+ });
1091
+ }
1092
+ }
1093
+ });
1094
+ return /* @__PURE__ */ f(u, { children: [p ?? /* @__PURE__ */ d(i, {
1095
+ ref: re,
1096
+ rootRef: H,
1060
1097
  id: r,
1061
1098
  type: "button",
1062
- disabled: C,
1063
- open: M,
1064
- optionCount: S.length,
1099
+ disabled: S,
1100
+ open: P,
1101
+ optionCount: x.length,
1065
1102
  label: m,
1066
- placeholder: T,
1103
+ placeholder: w,
1067
1104
  readOnly: !0,
1068
1105
  autoComplete: "off",
1069
1106
  role: "combobox",
1070
- value: I,
1071
- selectedValue: F ? /* @__PURE__ */ f(u, { children: [/* @__PURE__ */ d(x, {
1072
- preset: F,
1107
+ value: L,
1108
+ selectedValue: I ? /* @__PURE__ */ f(u, { children: [/* @__PURE__ */ d(b, {
1109
+ preset: I,
1073
1110
  compact: !0
1074
- }), E ? /* @__PURE__ */ d("span", {
1111
+ }), T ? /* @__PURE__ */ d("span", {
1075
1112
  className: y.triggerText,
1076
1113
  "data-ui": "layout-picker-selected-label",
1077
- children: F.label
1114
+ children: I.label
1078
1115
  }) : null] }) : void 0,
1079
- hasSelection: F !== void 0,
1080
- showSelectedValue: F !== void 0,
1116
+ hasSelection: I !== void 0,
1117
+ showSelectedValue: I !== void 0,
1081
1118
  onToggleMouseDown: $.handleToggleMouseDown,
1082
1119
  onToggleClick: $.handleToggleClick,
1083
1120
  openAriaLabel: "Открыть список layout",
1084
1121
  closeAriaLabel: "Закрыть список layout",
1085
- "aria-haspopup": "listbox",
1086
- "aria-expanded": M,
1087
- "aria-controls": M ? s : void 0,
1088
- "aria-labelledby": a,
1089
- "aria-describedby": o,
1122
+ ...c,
1090
1123
  "aria-autocomplete": "none",
1091
- "aria-activedescendant": M ? Q(s) : void 0,
1092
- "aria-label": a ? void 0 : O ?? `Выбрать layout. Текущее значение: ${I}`,
1093
1124
  "data-ui": "layout-picker-trigger",
1094
- rootClassName: A,
1125
+ rootClassName: k,
1095
1126
  onClick: $.handleTriggerClick,
1096
1127
  onFocus: (e) => {
1097
1128
  $.handleTriggerFocus(e.currentTarget);
1098
1129
  },
1099
1130
  onKeyDown: (e) => {
1100
- Y(e), !e.defaultPrevented && $.handleTriggerKeyDown({
1131
+ X(e), !e.defaultPrevented && $.handleTriggerKeyDown({
1101
1132
  event: e,
1102
- onActivateWhenOpen: J,
1133
+ onActivateWhenOpen: Y,
1103
1134
  enableSpaceActivation: !0
1104
1135
  });
1105
1136
  }
1106
1137
  }), /* @__PURE__ */ d(n, {
1107
- open: M,
1108
- context: R,
1109
- floatingStyles: z,
1138
+ open: P,
1139
+ context: z,
1140
+ floatingStyles: B,
1110
1141
  listId: s,
1111
1142
  labelId: a,
1112
1143
  descriptionId: o,
1113
1144
  activeOptionId: Q(s),
1114
- setFloating: H,
1115
- getFloatingProps: B,
1116
- onKeyDown: X,
1117
- className: l(y.popup, ee),
1145
+ setFloating: U,
1146
+ getFloatingProps: V,
1147
+ onKeyDown: Z,
1148
+ className: l(y.popup, A),
1118
1149
  layoutClassName: y.popupLayout,
1119
1150
  bodyClassName: y.popupBody,
1120
1151
  children: /* @__PURE__ */ d("div", {
1121
1152
  className: y.options,
1122
- children: S.map((n, r) => {
1123
- let i = r === P, a = r === L, o = w?.(n) ?? !1, c = Z(s, r);
1153
+ children: x.map((n, r) => {
1154
+ let i = r === F, a = r === R, o = C?.(n) ?? !1, c = ne(s, r);
1124
1155
  return /* @__PURE__ */ d(t, {
1125
1156
  id: c,
1126
- ref: (e) => U(r, e),
1157
+ ref: (e) => W(r, e),
1127
1158
  role: "option",
1128
1159
  "aria-selected": i,
1129
1160
  "aria-disabled": o || void 0,
@@ -1138,10 +1169,10 @@ function S({ id: p, label: m, description: g, value: _, onChange: v, presets: S
1138
1169
  tabIndex: -1,
1139
1170
  disabled: o,
1140
1171
  onMouseDown: (e) => e.preventDefault(),
1141
- onClick: () => q(n),
1172
+ onClick: () => J(n),
1142
1173
  children: /* @__PURE__ */ d("span", {
1143
1174
  className: y.optionPreviewWrap,
1144
- children: /* @__PURE__ */ d(x, { preset: n })
1175
+ children: /* @__PURE__ */ d(b, { preset: n })
1145
1176
  })
1146
1177
  })
1147
1178
  }, n.id);
@@ -1152,6 +1183,6 @@ function S({ id: p, label: m, description: g, value: _, onChange: v, presets: S
1152
1183
  });
1153
1184
  }
1154
1185
  //#endregion
1155
- export { h as DEFAULT_LAYOUT_PICKER_PRESETS, S as LayoutPicker, g as getDefaultLayoutPickerPresetId, m as getLayoutCellStyle, p as getLayoutStyle, v as resolveLayoutCellCount, _ as resolveLayoutPreset };
1186
+ export { h as DEFAULT_LAYOUT_PICKER_PRESETS, x as LayoutPicker, g as getDefaultLayoutPickerPresetId, m as getLayoutCellStyle, p as getLayoutStyle, v as resolveLayoutCellCount, _ as resolveLayoutPreset };
1156
1187
 
1157
1188
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/layout-picker/lib/layout.ts","../../src/layout-picker/lib/presets.ts","../../src/layout-picker/ui/LayoutPicker.module.scss","../../src/layout-picker/ui/LayoutPicker.tsx"],"sourcesContent":["import { type CSSProperties } from \"react\";\n\nimport { type LayoutPickerPreset, type LayoutPickerPresetCell } from \"./types\";\n\n/**\n * Возвращает CSS Grid-стиль для схематичного layout-пресета.\n */\nexport function getLayoutStyle(preset: LayoutPickerPreset, rowMinHeightInEm?: number): CSSProperties {\n\treturn {\n\t\tgridTemplateColumns: `repeat(${preset.columns}, minmax(0, 1fr))`,\n\t\tgridTemplateRows: `repeat(${preset.rows}, minmax(${rowMinHeightInEm ?? 0}em, 1fr))`\n\t};\n}\n\n/**\n * Возвращает позиционирование ячейки внутри CSS Grid.\n */\nexport function getLayoutCellStyle(cell: LayoutPickerPresetCell): CSSProperties {\n\treturn {\n\t\tgridColumn: `${cell.column} / span ${cell.columnSpan ?? 1}`,\n\t\tgridRow: `${cell.row} / span ${cell.rowSpan ?? 1}`\n\t};\n}\n","import { type LayoutPickerPreset } from \"./types\";\n\n/**\n * Базовый набор layout-пресетов для первого среза выбора схемы.\n *\n * id формата:\n * - \"2x3\" — 2 строки, 3 колонки\n * - \"2x2-l\" — 2x2 с большой ячейкой слева\n * - \"3x2-b\" — 3x2 с широкой нижней ячейкой\n */\nexport const DEFAULT_LAYOUT_PICKER_PRESETS = [\n\t{\n\t\tid: \"1x1\",\n\t\tlabel: \"1x1\",\n\t\tcolumns: 1,\n\t\trows: 1,\n\t\tcells: [{ id: \"c11\", row: 1, column: 1 }]\n\t},\n\t{\n\t\tid: \"1x2\",\n\t\tlabel: \"1x2\",\n\t\tcolumns: 2,\n\t\trows: 1,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 }\n\t\t]\n\t},\n\t{\n\t\tid: \"1x3\",\n\t\tlabel: \"1x3\",\n\t\tcolumns: 3,\n\t\trows: 1,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"c13\", row: 1, column: 3 }\n\t\t]\n\t},\n\t{\n\t\tid: \"2x1\",\n\t\tlabel: \"2x1\",\n\t\tcolumns: 1,\n\t\trows: 2,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 }\n\t\t]\n\t},\n\t{\n\t\tid: \"2x2\",\n\t\tlabel: \"2x2\",\n\t\tcolumns: 2,\n\t\trows: 2,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 }\n\t\t]\n\t},\n\t{\n\t\tid: \"2x3\",\n\t\tlabel: \"2x3\",\n\t\tcolumns: 3,\n\t\trows: 2,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"c13\", row: 1, column: 3 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c23\", row: 2, column: 3 }\n\t\t]\n\t},\n\t{\n\t\tid: \"3x1\",\n\t\tlabel: \"3x1\",\n\t\tcolumns: 1,\n\t\trows: 3,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 }\n\t\t]\n\t},\n\t{\n\t\tid: \"3x2\",\n\t\tlabel: \"3x2\",\n\t\tcolumns: 2,\n\t\trows: 3,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 },\n\t\t\t{ id: \"c32\", row: 3, column: 2 }\n\t\t]\n\t},\n\t{\n\t\tid: \"3x3\",\n\t\tlabel: \"3x3\",\n\t\tcolumns: 3,\n\t\trows: 3,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"c13\", row: 1, column: 3 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c23\", row: 2, column: 3 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 },\n\t\t\t{ id: \"c32\", row: 3, column: 2 },\n\t\t\t{ id: \"c33\", row: 3, column: 3 }\n\t\t]\n\t},\n\t{\n\t\tid: \"4x1\",\n\t\tlabel: \"4x1\",\n\t\tcolumns: 1,\n\t\trows: 4,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 },\n\t\t\t{ id: \"c41\", row: 4, column: 1 }\n\t\t]\n\t},\n\t{\n\t\tid: \"4x2\",\n\t\tlabel: \"4x2\",\n\t\tcolumns: 2,\n\t\trows: 4,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 },\n\t\t\t{ id: \"c32\", row: 3, column: 2 },\n\t\t\t{ id: \"c41\", row: 4, column: 1 },\n\t\t\t{ id: \"c42\", row: 4, column: 2 }\n\t\t]\n\t},\n\t{\n\t\tid: \"4x3\",\n\t\tlabel: \"4x3\",\n\t\tcolumns: 3,\n\t\trows: 4,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"c13\", row: 1, column: 3 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c23\", row: 2, column: 3 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 },\n\t\t\t{ id: \"c32\", row: 3, column: 2 },\n\t\t\t{ id: \"c33\", row: 3, column: 3 },\n\t\t\t{ id: \"c41\", row: 4, column: 1 },\n\t\t\t{ id: \"c42\", row: 4, column: 2 },\n\t\t\t{ id: \"c43\", row: 4, column: 3 }\n\t\t]\n\t},\n\n\t{\n\t\tid: \"2x2-l\",\n\t\tlabel: \"Большая слева + две справа\",\n\t\tcolumns: 2,\n\t\trows: 2,\n\t\tcells: [\n\t\t\t{ id: \"left\", row: 1, column: 1, rowSpan: 2 },\n\t\t\t{ id: \"rt\", row: 1, column: 2 },\n\t\t\t{ id: \"rb\", row: 2, column: 2 }\n\t\t]\n\t},\n\t{\n\t\tid: \"2x2-r\",\n\t\tlabel: \"Две слева + большая справа\",\n\t\tcolumns: 2,\n\t\trows: 2,\n\t\tcells: [\n\t\t\t{ id: \"lt\", row: 1, column: 1 },\n\t\t\t{ id: \"lb\", row: 2, column: 1 },\n\t\t\t{ id: \"right\", row: 1, column: 2, rowSpan: 2 }\n\t\t]\n\t},\n\t{\n\t\tid: \"2x2-t\",\n\t\tlabel: \"Широкая сверху + две снизу\",\n\t\tcolumns: 2,\n\t\trows: 2,\n\t\tcells: [\n\t\t\t{ id: \"top\", row: 1, column: 1, columnSpan: 2 },\n\t\t\t{ id: \"bl\", row: 2, column: 1 },\n\t\t\t{ id: \"br\", row: 2, column: 2 }\n\t\t]\n\t},\n\t{\n\t\tid: \"2x2-b\",\n\t\tlabel: \"Две сверху + широкая снизу\",\n\t\tcolumns: 2,\n\t\trows: 2,\n\t\tcells: [\n\t\t\t{ id: \"tl\", row: 1, column: 1 },\n\t\t\t{ id: \"tr\", row: 1, column: 2 },\n\t\t\t{ id: \"bottom\", row: 2, column: 1, columnSpan: 2 }\n\t\t]\n\t},\n\n\t{\n\t\tid: \"3x2-t\",\n\t\tlabel: \"Широкая сверху + 2x2\",\n\t\tcolumns: 2,\n\t\trows: 3,\n\t\tcells: [\n\t\t\t{ id: \"top\", row: 1, column: 1, columnSpan: 2 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 },\n\t\t\t{ id: \"c32\", row: 3, column: 2 }\n\t\t]\n\t},\n\t{\n\t\tid: \"3x2-b\",\n\t\tlabel: \"2x2 + широкая снизу\",\n\t\tcolumns: 2,\n\t\trows: 3,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"bottom\", row: 3, column: 1, columnSpan: 2 }\n\t\t]\n\t},\n\t{\n\t\tid: \"3x2-m\",\n\t\tlabel: \"Широкая по центру\",\n\t\tcolumns: 2,\n\t\trows: 3,\n\t\tcells: [\n\t\t\t{ id: \"tl\", row: 1, column: 1 },\n\t\t\t{ id: \"tr\", row: 1, column: 2 },\n\t\t\t{ id: \"middle\", row: 2, column: 1, columnSpan: 2 },\n\t\t\t{ id: \"bl\", row: 3, column: 1 },\n\t\t\t{ id: \"br\", row: 3, column: 2 }\n\t\t]\n\t},\n\n\t{\n\t\tid: \"3x3-l\",\n\t\tlabel: \"Большая слева + 2x3 справа\",\n\t\tcolumns: 3,\n\t\trows: 3,\n\t\tcells: [\n\t\t\t{ id: \"left\", row: 1, column: 1, rowSpan: 3 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"c13\", row: 1, column: 3 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c23\", row: 2, column: 3 },\n\t\t\t{ id: \"c32\", row: 3, column: 2 },\n\t\t\t{ id: \"c33\", row: 3, column: 3 }\n\t\t]\n\t},\n\t{\n\t\tid: \"3x3-r\",\n\t\tlabel: \"2x3 слева + большая справа\",\n\t\tcolumns: 3,\n\t\trows: 3,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"right\", row: 1, column: 3, rowSpan: 3 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 },\n\t\t\t{ id: \"c32\", row: 3, column: 2 }\n\t\t]\n\t},\n\t{\n\t\tid: \"3x3-t\",\n\t\tlabel: \"Широкая сверху + 2x3\",\n\t\tcolumns: 3,\n\t\trows: 3,\n\t\tcells: [\n\t\t\t{ id: \"top\", row: 1, column: 1, columnSpan: 3 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c23\", row: 2, column: 3 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 },\n\t\t\t{ id: \"c32\", row: 3, column: 2 },\n\t\t\t{ id: \"c33\", row: 3, column: 3 }\n\t\t]\n\t},\n\t{\n\t\tid: \"3x3-b\",\n\t\tlabel: \"2x3 + широкая снизу\",\n\t\tcolumns: 3,\n\t\trows: 3,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"c13\", row: 1, column: 3 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c23\", row: 2, column: 3 },\n\t\t\t{ id: \"bottom\", row: 3, column: 1, columnSpan: 3 }\n\t\t]\n\t},\n\n\t{\n\t\tid: \"4x2-t\",\n\t\tlabel: \"Широкая сверху + 3x2\",\n\t\tcolumns: 2,\n\t\trows: 4,\n\t\tcells: [\n\t\t\t{ id: \"top\", row: 1, column: 1, columnSpan: 2 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 },\n\t\t\t{ id: \"c32\", row: 3, column: 2 },\n\t\t\t{ id: \"c41\", row: 4, column: 1 },\n\t\t\t{ id: \"c42\", row: 4, column: 2 }\n\t\t]\n\t},\n\t{\n\t\tid: \"4x2-b\",\n\t\tlabel: \"3x2 + широкая снизу\",\n\t\tcolumns: 2,\n\t\trows: 4,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 },\n\t\t\t{ id: \"c32\", row: 3, column: 2 },\n\t\t\t{ id: \"bottom\", row: 4, column: 1, columnSpan: 2 }\n\t\t]\n\t},\n\t{\n\t\tid: \"4x3-t\",\n\t\tlabel: \"Широкая сверху + 3x3\",\n\t\tcolumns: 3,\n\t\trows: 4,\n\t\tcells: [\n\t\t\t{ id: \"top\", row: 1, column: 1, columnSpan: 3 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c23\", row: 2, column: 3 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 },\n\t\t\t{ id: \"c32\", row: 3, column: 2 },\n\t\t\t{ id: \"c33\", row: 3, column: 3 },\n\t\t\t{ id: \"c41\", row: 4, column: 1 },\n\t\t\t{ id: \"c42\", row: 4, column: 2 },\n\t\t\t{ id: \"c43\", row: 4, column: 3 }\n\t\t]\n\t},\n\t{\n\t\tid: \"4x3-b\",\n\t\tlabel: \"3x3 + широкая снизу\",\n\t\tcolumns: 3,\n\t\trows: 4,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"c13\", row: 1, column: 3 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c23\", row: 2, column: 3 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 },\n\t\t\t{ id: \"c32\", row: 3, column: 2 },\n\t\t\t{ id: \"c33\", row: 3, column: 3 },\n\t\t\t{ id: \"bottom\", row: 4, column: 1, columnSpan: 3 }\n\t\t]\n\t}\n] as const satisfies readonly LayoutPickerPreset[];\n\nexport type DefaultLayoutPickerPresetId = (typeof DEFAULT_LAYOUT_PICKER_PRESETS)[number][\"id\"];\n\nexport function getDefaultLayoutPickerPresetId(): DefaultLayoutPickerPresetId {\n\treturn DEFAULT_LAYOUT_PICKER_PRESETS[0].id;\n}\n\n/** Возвращает layout-пресет по id с fallback на дефолт chart-ракурса. */\nexport function resolveLayoutPreset(layoutId: string | undefined): LayoutPickerPreset {\n\treturn DEFAULT_LAYOUT_PICKER_PRESETS.find((preset) => preset.id === layoutId) ?? DEFAULT_LAYOUT_PICKER_PRESETS[0];\n}\n\nexport function resolveLayoutCellCount(layoutId: string): number {\n\treturn DEFAULT_LAYOUT_PICKER_PRESETS.find((preset) => preset.id === layoutId)?.cells.length ?? 1;\n}\n","@use \"@/styles/mixins\" as *;\n\n.triggerText {\n\tmin-width: 0;\n\tflex: 1 1 auto;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n}\n\n.popup {\n\twidth: min(calc(100vw - var(--space-lg) * 2), 44em);\n\tmax-height: min(75vh, 34em);\n}\n\n.popupLayout {\n\tmax-height: inherit;\n}\n\n.popupBody {\n\toverflow: auto;\n\tpadding: var(--space-xs);\n}\n\n.options {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(auto-fit, minmax(min(100%, 5em), 1fr));\n\tgap: var(--space-sm);\n}\n\n.option {\n\tposition: relative;\n\tpadding: var(--space-sm);\n\t// border: var(--border);\n\tborder-radius: var(--radius-sm);\n\t// background-color: var(--surface-1);\n\ttransition:\n\t\tbackground-color var(--transition-fast) ease,\n\t\tborder-color var(--transition-fast) ease,\n\t\tcolor var(--transition-fast) ease;\n\n\t@include hover(true) {\n\t\tbackground-color: var(--surface-2);\n\t\tborder-color: var(--border-2);\n\t}\n\n\t&:disabled {\n\t\tcursor: default;\n\t\topacity: var(--disabled-opacity);\n\t}\n}\n\n.option[data-selected] {\n\tborder-color: var(--border-1);\n\tbackground-color: var(--surface-1);\n\n\t.previewCell {\n\t\tbackground-color: var(--accent-fill);\n\t\tborder: var(--border-width) solid var(--accent-border);\n\t}\n}\n\n.optionPreviewWrap {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n.preview,\n.previewPlaceholder {\n\t--layout-picker-preview-size: 3.5em;\n\n\twidth: var(--layout-picker-preview-size);\n\theight: calc(var(--layout-picker-preview-size) * 0.72);\n\tflex: 0 0 auto;\n}\n\n.preview {\n\tdisplay: grid;\n\tgap: calc(var(--border-width) * 2);\n}\n\n.previewCompact,\n.previewPlaceholder {\n\t--layout-picker-preview-size: 1.75rem;\n}\n\n.previewCell {\n\tmin-width: 0;\n\tmin-height: 0;\n\tborder-radius: var(--radius-xs);\n\tbackground-color: var(--surface-1);\n\tborder: var(--border-width) solid var(--border-1);\n}\n\n.previewCompact {\n\t.previewCell {\n\t\tbackground-color: var(--brand-fill);\n\t\tborder: none;\n\t}\n}\n","import { useRef, useState } from \"react\";\n\nimport { type Placement } from \"@floating-ui/react\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { CustomOptionButton, Option } from \"../../option\";\nimport { PickerField, PickerPopup, PickerTrigger, usePickerFloatingListbox, usePickerTriggerController } from \"../../picker\";\nimport { type UiBaseProps } from \"../../types\";\nimport { DEFAULT_LAYOUT_PICKER_PRESETS, getLayoutCellStyle, getLayoutStyle, type LayoutPickerPreset } from \"../lib\";\n\nimport styles from \"./LayoutPicker.module.scss\";\n\nexport interface LayoutPickerProps extends UiBaseProps<string> {\n\tid?: string;\n\tpresets?: readonly LayoutPickerPreset[];\n\tgetPresetDisabled?: (preset: LayoutPickerPreset) => boolean;\n\t/**\n\t * Показывает рядом с превью переданный текст `placeholder`.\n\t * По умолчанию текст скрыт, поэтому trigger отображает только иконку раскладки.\n\t */\n\tshowPlaceholder?: boolean;\n\tariaLabel?: string;\n\tclassName?: string;\n\ttriggerClassName?: string;\n\tpopupClassName?: string;\n\tplacement?: Placement;\n}\n\nconst DEFAULT_PLACEHOLDER = \"Выберите раскладку\";\n\nfunction LayoutPresetPreview({ preset, compact = false }: { preset: LayoutPickerPreset; compact?: boolean }) {\n\treturn (\n\t\t<span\n\t\t\tclassName={cn(styles.preview, compact && styles.previewCompact)}\n\t\t\tstyle={getLayoutStyle(preset)}\n\t\t\taria-hidden=\"true\"\n\t\t\tdata-ui=\"layout-picker-preview\">\n\t\t\t{preset.cells.map((cell) => (\n\t\t\t\t<span key={`${preset.id}:${cell.id}`} className={styles.previewCell} style={getLayoutCellStyle(cell)} />\n\t\t\t))}\n\t\t</span>\n\t);\n}\n\n/**\n * Контрол выбора layout-пресета. Не хранит бизнес-логику содержимого ячеек.\n */\nexport function LayoutPicker({\n\tid,\n\tlabel,\n\tdescription,\n\tvalue,\n\tonChange,\n\tpresets = DEFAULT_LAYOUT_PICKER_PRESETS,\n\tdisabled,\n\tgetPresetDisabled,\n\tplaceholder = DEFAULT_PLACEHOLDER,\n\tshowPlaceholder = false,\n\tsize,\n\tariaLabel,\n\tclassName,\n\ttriggerClassName,\n\tpopupClassName,\n\tplacement = \"bottom-start\"\n}: LayoutPickerProps) {\n\tconst inputRef = useRef<HTMLInputElement | null>(null);\n\tconst [open, setOpen] = useState(false);\n\tconst selectedIndex = presets.findIndex((preset) => preset.id === value);\n\tconst selectedPreset = selectedIndex >= 0 ? presets[selectedIndex] : undefined;\n\tconst triggerLabel = selectedPreset?.label ?? placeholder;\n\tconst {\n\t\tactiveIndex,\n\t\tcontext,\n\t\tfloatingStyles,\n\t\tgetFloatingProps,\n\t\tsetReference,\n\t\tsetFloating,\n\t\tsetOptionRef,\n\t\tclose,\n\t\topenList,\n\t\ttoggleOpen,\n\t\tselectOption,\n\t\tselectActiveOption,\n\t\thandleReferenceKeyDown,\n\t\thandleFloatingKeyDown,\n\t\tgetOptionId,\n\t\tgetActiveOptionId\n\t} = usePickerFloatingListbox({\n\t\toptions: presets,\n\t\tselectedIndex,\n\t\topen,\n\t\tonOpenChange: setOpen,\n\t\tgetOptionDisabled: getPresetDisabled,\n\t\tonSelect: (preset) => onChange(preset.id),\n\t\tdisabled,\n\t\tplacement,\n\t\ttriggerMode: \"display\"\n\t});\n\tconst triggerController = usePickerTriggerController({\n\t\tmode: \"display\",\n\t\topen,\n\t\tcurrentQuery: \"\",\n\t\thasDisplayValue: selectedPreset !== undefined,\n\t\tinputRef,\n\t\topenList,\n\t\tclose,\n\t\ttoggleOpen\n\t});\n\tconst setInputNode = (node: HTMLInputElement | null) => {\n\t\tinputRef.current = node;\n\t};\n\n\treturn (\n\t\t<PickerField id={id} label={label} description={description} disabled={disabled} size={size} className={className}>\n\t\t\t{({ controlId, labelId, describedBy }) => {\n\t\t\t\tconst listId = `${controlId}-listbox`;\n\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<PickerTrigger\n\t\t\t\t\t\t\tref={setInputNode}\n\t\t\t\t\t\t\trootRef={setReference}\n\t\t\t\t\t\t\tid={controlId}\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\topen={open}\n\t\t\t\t\t\t\toptionCount={presets.length}\n\t\t\t\t\t\t\tlabel={label}\n\t\t\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\t\t\treadOnly\n\t\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\t\trole=\"combobox\"\n\t\t\t\t\t\t\tvalue={triggerLabel}\n\t\t\t\t\t\t\tselectedValue={\n\t\t\t\t\t\t\t\tselectedPreset ? (\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t<LayoutPresetPreview preset={selectedPreset} compact />\n\t\t\t\t\t\t\t\t\t\t{showPlaceholder ? (\n\t\t\t\t\t\t\t\t\t\t\t<span className={styles.triggerText} data-ui=\"layout-picker-selected-label\">\n\t\t\t\t\t\t\t\t\t\t\t\t{selectedPreset.label}\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t) : undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\thasSelection={selectedPreset !== undefined}\n\t\t\t\t\t\t\tshowSelectedValue={selectedPreset !== undefined}\n\t\t\t\t\t\t\tonToggleMouseDown={triggerController.handleToggleMouseDown}\n\t\t\t\t\t\t\tonToggleClick={triggerController.handleToggleClick}\n\t\t\t\t\t\t\topenAriaLabel=\"Открыть список layout\"\n\t\t\t\t\t\t\tcloseAriaLabel=\"Закрыть список layout\"\n\t\t\t\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t\t\t\taria-expanded={open}\n\t\t\t\t\t\t\taria-controls={open ? listId : undefined}\n\t\t\t\t\t\t\taria-labelledby={labelId}\n\t\t\t\t\t\t\taria-describedby={describedBy}\n\t\t\t\t\t\t\taria-autocomplete=\"none\"\n\t\t\t\t\t\t\taria-activedescendant={open ? getActiveOptionId(listId) : undefined}\n\t\t\t\t\t\t\taria-label={!labelId ? (ariaLabel ?? `Выбрать layout. Текущее значение: ${triggerLabel}`) : undefined}\n\t\t\t\t\t\t\tdata-ui=\"layout-picker-trigger\"\n\t\t\t\t\t\t\trootClassName={triggerClassName}\n\t\t\t\t\t\t\tonClick={triggerController.handleTriggerClick}\n\t\t\t\t\t\t\tonFocus={(event) => {\n\t\t\t\t\t\t\t\ttriggerController.handleTriggerFocus(event.currentTarget);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tonKeyDown={(event) => {\n\t\t\t\t\t\t\t\thandleReferenceKeyDown(event);\n\n\t\t\t\t\t\t\t\tif (event.defaultPrevented) {\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\ttriggerController.handleTriggerKeyDown({\n\t\t\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\t\t\tonActivateWhenOpen: selectActiveOption,\n\t\t\t\t\t\t\t\t\tenableSpaceActivation: true\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t<PickerPopup\n\t\t\t\t\t\t\topen={open}\n\t\t\t\t\t\t\tcontext={context}\n\t\t\t\t\t\t\tfloatingStyles={floatingStyles}\n\t\t\t\t\t\t\tlistId={listId}\n\t\t\t\t\t\t\tlabelId={labelId}\n\t\t\t\t\t\t\tdescriptionId={describedBy}\n\t\t\t\t\t\t\tactiveOptionId={getActiveOptionId(listId)}\n\t\t\t\t\t\t\tsetFloating={setFloating}\n\t\t\t\t\t\t\tgetFloatingProps={getFloatingProps}\n\t\t\t\t\t\t\tonKeyDown={handleFloatingKeyDown}\n\t\t\t\t\t\t\tclassName={cn(styles.popup, popupClassName)}\n\t\t\t\t\t\t\tlayoutClassName={styles.popupLayout}\n\t\t\t\t\t\t\tbodyClassName={styles.popupBody}>\n\t\t\t\t\t\t\t<div className={styles.options}>\n\t\t\t\t\t\t\t\t{presets.map((preset, index) => {\n\t\t\t\t\t\t\t\t\tconst selected = index === selectedIndex;\n\t\t\t\t\t\t\t\t\tconst active = index === activeIndex;\n\t\t\t\t\t\t\t\t\tconst presetDisabled = getPresetDisabled?.(preset) ?? false;\n\t\t\t\t\t\t\t\t\tconst optionId = getOptionId(listId, index);\n\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<Option\n\t\t\t\t\t\t\t\t\t\t\tkey={preset.id}\n\t\t\t\t\t\t\t\t\t\t\tid={optionId}\n\t\t\t\t\t\t\t\t\t\t\tref={(node) => setOptionRef(index, node)}\n\t\t\t\t\t\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\t\t\t\t\t\taria-selected={selected}\n\t\t\t\t\t\t\t\t\t\t\taria-disabled={presetDisabled || undefined}\n\t\t\t\t\t\t\t\t\t\t\taria-label={preset.description ? `${preset.label}. ${preset.description}` : preset.label}\n\t\t\t\t\t\t\t\t\t\t\tclassName={styles.option}\n\t\t\t\t\t\t\t\t\t\t\tactive={active}\n\t\t\t\t\t\t\t\t\t\t\tselected={selected}\n\t\t\t\t\t\t\t\t\t\t\tdisabled={presetDisabled}\n\t\t\t\t\t\t\t\t\t\t\tdata-ui=\"layout-picker-option\"\n\t\t\t\t\t\t\t\t\t\t\tdata-selected={selected || undefined}>\n\t\t\t\t\t\t\t\t\t\t\t<CustomOptionButton\n\t\t\t\t\t\t\t\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled={presetDisabled}\n\n\t\t\t\t\t\t\t\t\t\t\t\tonMouseDown={(event) => event.preventDefault()}\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => selectOption(preset)}>\n\t\t\t\t\t\t\t\t\t\t\t\t<span className={styles.optionPreviewWrap}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<LayoutPresetPreview preset={preset} />\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t</CustomOptionButton>\n\t\t\t\t\t\t\t\t\t\t</Option>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</PickerPopup>\n\t\t\t\t\t</>\n\t\t\t\t);\n\t\t\t}}\n\t\t</PickerField>\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/layout-picker/lib/layout.ts","../../src/layout-picker/lib/presets.ts","../../src/layout-picker/ui/LayoutPicker.module.scss","../../src/layout-picker/ui/LayoutPresetPreview.tsx","../../src/layout-picker/ui/LayoutPicker.tsx"],"sourcesContent":["import { type CSSProperties } from \"react\";\n\nimport { type LayoutPickerPreset, type LayoutPickerPresetCell } from \"./types\";\n\n/**\n * Возвращает CSS Grid-стиль для схематичного layout-пресета.\n */\nexport function getLayoutStyle(preset: LayoutPickerPreset, rowMinHeightInEm?: number): CSSProperties {\n\treturn {\n\t\tgridTemplateColumns: `repeat(${preset.columns}, minmax(0, 1fr))`,\n\t\tgridTemplateRows: `repeat(${preset.rows}, minmax(${rowMinHeightInEm ?? 0}em, 1fr))`\n\t};\n}\n\n/**\n * Возвращает позиционирование ячейки внутри CSS Grid.\n */\nexport function getLayoutCellStyle(cell: LayoutPickerPresetCell): CSSProperties {\n\treturn {\n\t\tgridColumn: `${cell.column} / span ${cell.columnSpan ?? 1}`,\n\t\tgridRow: `${cell.row} / span ${cell.rowSpan ?? 1}`\n\t};\n}\n","import { type LayoutPickerPreset } from \"./types\";\n\n/**\n * Базовый набор layout-пресетов для первого среза выбора схемы.\n *\n * id формата:\n * - \"2x3\" — 2 строки, 3 колонки\n * - \"2x2-l\" — 2x2 с большой ячейкой слева\n * - \"3x2-b\" — 3x2 с широкой нижней ячейкой\n */\nexport const DEFAULT_LAYOUT_PICKER_PRESETS = [\n\t{\n\t\tid: \"1x1\",\n\t\tlabel: \"1x1\",\n\t\tcolumns: 1,\n\t\trows: 1,\n\t\tcells: [{ id: \"c11\", row: 1, column: 1 }]\n\t},\n\t{\n\t\tid: \"1x2\",\n\t\tlabel: \"1x2\",\n\t\tcolumns: 2,\n\t\trows: 1,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 }\n\t\t]\n\t},\n\t{\n\t\tid: \"1x3\",\n\t\tlabel: \"1x3\",\n\t\tcolumns: 3,\n\t\trows: 1,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"c13\", row: 1, column: 3 }\n\t\t]\n\t},\n\t{\n\t\tid: \"2x1\",\n\t\tlabel: \"2x1\",\n\t\tcolumns: 1,\n\t\trows: 2,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 }\n\t\t]\n\t},\n\t{\n\t\tid: \"2x2\",\n\t\tlabel: \"2x2\",\n\t\tcolumns: 2,\n\t\trows: 2,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 }\n\t\t]\n\t},\n\t{\n\t\tid: \"2x3\",\n\t\tlabel: \"2x3\",\n\t\tcolumns: 3,\n\t\trows: 2,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"c13\", row: 1, column: 3 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c23\", row: 2, column: 3 }\n\t\t]\n\t},\n\t{\n\t\tid: \"3x1\",\n\t\tlabel: \"3x1\",\n\t\tcolumns: 1,\n\t\trows: 3,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 }\n\t\t]\n\t},\n\t{\n\t\tid: \"3x2\",\n\t\tlabel: \"3x2\",\n\t\tcolumns: 2,\n\t\trows: 3,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 },\n\t\t\t{ id: \"c32\", row: 3, column: 2 }\n\t\t]\n\t},\n\t{\n\t\tid: \"3x3\",\n\t\tlabel: \"3x3\",\n\t\tcolumns: 3,\n\t\trows: 3,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"c13\", row: 1, column: 3 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c23\", row: 2, column: 3 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 },\n\t\t\t{ id: \"c32\", row: 3, column: 2 },\n\t\t\t{ id: \"c33\", row: 3, column: 3 }\n\t\t]\n\t},\n\t{\n\t\tid: \"4x1\",\n\t\tlabel: \"4x1\",\n\t\tcolumns: 1,\n\t\trows: 4,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 },\n\t\t\t{ id: \"c41\", row: 4, column: 1 }\n\t\t]\n\t},\n\t{\n\t\tid: \"4x2\",\n\t\tlabel: \"4x2\",\n\t\tcolumns: 2,\n\t\trows: 4,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 },\n\t\t\t{ id: \"c32\", row: 3, column: 2 },\n\t\t\t{ id: \"c41\", row: 4, column: 1 },\n\t\t\t{ id: \"c42\", row: 4, column: 2 }\n\t\t]\n\t},\n\t{\n\t\tid: \"4x3\",\n\t\tlabel: \"4x3\",\n\t\tcolumns: 3,\n\t\trows: 4,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"c13\", row: 1, column: 3 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c23\", row: 2, column: 3 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 },\n\t\t\t{ id: \"c32\", row: 3, column: 2 },\n\t\t\t{ id: \"c33\", row: 3, column: 3 },\n\t\t\t{ id: \"c41\", row: 4, column: 1 },\n\t\t\t{ id: \"c42\", row: 4, column: 2 },\n\t\t\t{ id: \"c43\", row: 4, column: 3 }\n\t\t]\n\t},\n\n\t{\n\t\tid: \"2x2-l\",\n\t\tlabel: \"Большая слева + две справа\",\n\t\tcolumns: 2,\n\t\trows: 2,\n\t\tcells: [\n\t\t\t{ id: \"left\", row: 1, column: 1, rowSpan: 2 },\n\t\t\t{ id: \"rt\", row: 1, column: 2 },\n\t\t\t{ id: \"rb\", row: 2, column: 2 }\n\t\t]\n\t},\n\t{\n\t\tid: \"2x2-r\",\n\t\tlabel: \"Две слева + большая справа\",\n\t\tcolumns: 2,\n\t\trows: 2,\n\t\tcells: [\n\t\t\t{ id: \"lt\", row: 1, column: 1 },\n\t\t\t{ id: \"lb\", row: 2, column: 1 },\n\t\t\t{ id: \"right\", row: 1, column: 2, rowSpan: 2 }\n\t\t]\n\t},\n\t{\n\t\tid: \"2x2-t\",\n\t\tlabel: \"Широкая сверху + две снизу\",\n\t\tcolumns: 2,\n\t\trows: 2,\n\t\tcells: [\n\t\t\t{ id: \"top\", row: 1, column: 1, columnSpan: 2 },\n\t\t\t{ id: \"bl\", row: 2, column: 1 },\n\t\t\t{ id: \"br\", row: 2, column: 2 }\n\t\t]\n\t},\n\t{\n\t\tid: \"2x2-b\",\n\t\tlabel: \"Две сверху + широкая снизу\",\n\t\tcolumns: 2,\n\t\trows: 2,\n\t\tcells: [\n\t\t\t{ id: \"tl\", row: 1, column: 1 },\n\t\t\t{ id: \"tr\", row: 1, column: 2 },\n\t\t\t{ id: \"bottom\", row: 2, column: 1, columnSpan: 2 }\n\t\t]\n\t},\n\n\t{\n\t\tid: \"3x2-t\",\n\t\tlabel: \"Широкая сверху + 2x2\",\n\t\tcolumns: 2,\n\t\trows: 3,\n\t\tcells: [\n\t\t\t{ id: \"top\", row: 1, column: 1, columnSpan: 2 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 },\n\t\t\t{ id: \"c32\", row: 3, column: 2 }\n\t\t]\n\t},\n\t{\n\t\tid: \"3x2-b\",\n\t\tlabel: \"2x2 + широкая снизу\",\n\t\tcolumns: 2,\n\t\trows: 3,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"bottom\", row: 3, column: 1, columnSpan: 2 }\n\t\t]\n\t},\n\t{\n\t\tid: \"3x2-m\",\n\t\tlabel: \"Широкая по центру\",\n\t\tcolumns: 2,\n\t\trows: 3,\n\t\tcells: [\n\t\t\t{ id: \"tl\", row: 1, column: 1 },\n\t\t\t{ id: \"tr\", row: 1, column: 2 },\n\t\t\t{ id: \"middle\", row: 2, column: 1, columnSpan: 2 },\n\t\t\t{ id: \"bl\", row: 3, column: 1 },\n\t\t\t{ id: \"br\", row: 3, column: 2 }\n\t\t]\n\t},\n\n\t{\n\t\tid: \"3x3-l\",\n\t\tlabel: \"Большая слева + 2x3 справа\",\n\t\tcolumns: 3,\n\t\trows: 3,\n\t\tcells: [\n\t\t\t{ id: \"left\", row: 1, column: 1, rowSpan: 3 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"c13\", row: 1, column: 3 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c23\", row: 2, column: 3 },\n\t\t\t{ id: \"c32\", row: 3, column: 2 },\n\t\t\t{ id: \"c33\", row: 3, column: 3 }\n\t\t]\n\t},\n\t{\n\t\tid: \"3x3-r\",\n\t\tlabel: \"2x3 слева + большая справа\",\n\t\tcolumns: 3,\n\t\trows: 3,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"right\", row: 1, column: 3, rowSpan: 3 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 },\n\t\t\t{ id: \"c32\", row: 3, column: 2 }\n\t\t]\n\t},\n\t{\n\t\tid: \"3x3-t\",\n\t\tlabel: \"Широкая сверху + 2x3\",\n\t\tcolumns: 3,\n\t\trows: 3,\n\t\tcells: [\n\t\t\t{ id: \"top\", row: 1, column: 1, columnSpan: 3 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c23\", row: 2, column: 3 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 },\n\t\t\t{ id: \"c32\", row: 3, column: 2 },\n\t\t\t{ id: \"c33\", row: 3, column: 3 }\n\t\t]\n\t},\n\t{\n\t\tid: \"3x3-b\",\n\t\tlabel: \"2x3 + широкая снизу\",\n\t\tcolumns: 3,\n\t\trows: 3,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"c13\", row: 1, column: 3 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c23\", row: 2, column: 3 },\n\t\t\t{ id: \"bottom\", row: 3, column: 1, columnSpan: 3 }\n\t\t]\n\t},\n\n\t{\n\t\tid: \"4x2-t\",\n\t\tlabel: \"Широкая сверху + 3x2\",\n\t\tcolumns: 2,\n\t\trows: 4,\n\t\tcells: [\n\t\t\t{ id: \"top\", row: 1, column: 1, columnSpan: 2 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 },\n\t\t\t{ id: \"c32\", row: 3, column: 2 },\n\t\t\t{ id: \"c41\", row: 4, column: 1 },\n\t\t\t{ id: \"c42\", row: 4, column: 2 }\n\t\t]\n\t},\n\t{\n\t\tid: \"4x2-b\",\n\t\tlabel: \"3x2 + широкая снизу\",\n\t\tcolumns: 2,\n\t\trows: 4,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 },\n\t\t\t{ id: \"c32\", row: 3, column: 2 },\n\t\t\t{ id: \"bottom\", row: 4, column: 1, columnSpan: 2 }\n\t\t]\n\t},\n\t{\n\t\tid: \"4x3-t\",\n\t\tlabel: \"Широкая сверху + 3x3\",\n\t\tcolumns: 3,\n\t\trows: 4,\n\t\tcells: [\n\t\t\t{ id: \"top\", row: 1, column: 1, columnSpan: 3 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c23\", row: 2, column: 3 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 },\n\t\t\t{ id: \"c32\", row: 3, column: 2 },\n\t\t\t{ id: \"c33\", row: 3, column: 3 },\n\t\t\t{ id: \"c41\", row: 4, column: 1 },\n\t\t\t{ id: \"c42\", row: 4, column: 2 },\n\t\t\t{ id: \"c43\", row: 4, column: 3 }\n\t\t]\n\t},\n\t{\n\t\tid: \"4x3-b\",\n\t\tlabel: \"3x3 + широкая снизу\",\n\t\tcolumns: 3,\n\t\trows: 4,\n\t\tcells: [\n\t\t\t{ id: \"c11\", row: 1, column: 1 },\n\t\t\t{ id: \"c12\", row: 1, column: 2 },\n\t\t\t{ id: \"c13\", row: 1, column: 3 },\n\t\t\t{ id: \"c21\", row: 2, column: 1 },\n\t\t\t{ id: \"c22\", row: 2, column: 2 },\n\t\t\t{ id: \"c23\", row: 2, column: 3 },\n\t\t\t{ id: \"c31\", row: 3, column: 1 },\n\t\t\t{ id: \"c32\", row: 3, column: 2 },\n\t\t\t{ id: \"c33\", row: 3, column: 3 },\n\t\t\t{ id: \"bottom\", row: 4, column: 1, columnSpan: 3 }\n\t\t]\n\t}\n] as const satisfies readonly LayoutPickerPreset[];\n\nexport type DefaultLayoutPickerPresetId = (typeof DEFAULT_LAYOUT_PICKER_PRESETS)[number][\"id\"];\n\nexport function getDefaultLayoutPickerPresetId(): DefaultLayoutPickerPresetId {\n\treturn DEFAULT_LAYOUT_PICKER_PRESETS[0].id;\n}\n\n/** Возвращает layout-пресет по id с fallback на дефолт chart-ракурса. */\nexport function resolveLayoutPreset(layoutId: string | undefined): LayoutPickerPreset {\n\treturn DEFAULT_LAYOUT_PICKER_PRESETS.find((preset) => preset.id === layoutId) ?? DEFAULT_LAYOUT_PICKER_PRESETS[0];\n}\n\nexport function resolveLayoutCellCount(layoutId: string): number {\n\treturn DEFAULT_LAYOUT_PICKER_PRESETS.find((preset) => preset.id === layoutId)?.cells.length ?? 1;\n}\n","@use \"@/styles/mixins\" as *;\n\n.triggerText {\n\tmin-width: 0;\n\tflex: 1 1 auto;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n}\n\n.popup {\n\twidth: min(calc(100vw - var(--space-lg) * 2), 44em);\n\tmax-height: min(75vh, 34em);\n}\n\n.popupLayout {\n\tmax-height: inherit;\n}\n\n.popupBody {\n\toverflow: auto;\n\tpadding: var(--space-xs);\n}\n\n.options {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(auto-fit, minmax(min(100%, 5em), 1fr));\n\tgap: var(--space-sm);\n}\n\n.option {\n\tposition: relative;\n\tpadding: var(--space-sm);\n\t// border: var(--border);\n\tborder-radius: var(--radius-sm);\n\t// background-color: var(--surface-1);\n\ttransition:\n\t\tbackground-color var(--transition-fast) ease,\n\t\tborder-color var(--transition-fast) ease,\n\t\tcolor var(--transition-fast) ease;\n\n\t@include hover(true) {\n\t\tbackground-color: var(--surface-2);\n\t\tborder-color: var(--border-2);\n\t}\n\n\t&:disabled {\n\t\tcursor: default;\n\t\topacity: var(--disabled-opacity);\n\t}\n}\n\n.option[data-selected] {\n\tborder-color: var(--border-1);\n\tbackground-color: var(--surface-1);\n\n\t.previewCell {\n\t\tbackground-color: var(--accent-fill);\n\t\tborder: var(--border-width) solid var(--accent-border);\n\t}\n}\n\n.optionPreviewWrap {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n.preview,\n.previewPlaceholder {\n\t--layout-picker-preview-size: 3.5em;\n\n\twidth: var(--layout-picker-preview-size);\n\theight: calc(var(--layout-picker-preview-size) * 0.72);\n\tflex: 0 0 auto;\n}\n\n.preview {\n\tdisplay: grid;\n\tgap: calc(var(--border-width) * 2);\n}\n\n.previewCompact,\n.previewPlaceholder {\n\t--layout-picker-preview-size: 1.75rem;\n}\n\n.previewCell {\n\tmin-width: 0;\n\tmin-height: 0;\n\tborder-radius: var(--radius-xs);\n\tbackground-color: var(--surface-1);\n\tborder: var(--border-width) solid var(--border-1);\n}\n\n.previewCompact {\n\t.previewCell {\n\t\tbackground-color: var(--brand-fill);\n\t\tborder: none;\n\t}\n}\n","import { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { getLayoutCellStyle, getLayoutStyle, type LayoutPickerPreset } from \"../lib\";\n\nimport styles from \"./LayoutPicker.module.scss\";\n\nexport type LayoutPresetPreviewProps = {\n\tpreset: LayoutPickerPreset;\n\tcompact?: boolean;\n};\n\n/** Схематичное, скрытое от accessibility tree превью layout-пресета. */\nexport function LayoutPresetPreview({ preset, compact = false }: LayoutPresetPreviewProps) {\n\treturn (\n\t\t<span\n\t\t\tclassName={cn(styles.preview, compact && styles.previewCompact)}\n\t\t\tstyle={getLayoutStyle(preset)}\n\t\t\taria-hidden=\"true\"\n\t\t\tdata-ui=\"layout-picker-preview\">\n\t\t\t{preset.cells.map((cell) => (\n\t\t\t\t<span key={`${preset.id}:${cell.id}`} className={styles.previewCell} style={getLayoutCellStyle(cell)} />\n\t\t\t))}\n\t\t</span>\n\t);\n}\n","import { type ComponentPropsWithRef, type ReactElement, useRef, useState } from \"react\";\n\nimport { type Placement } from \"@floating-ui/react\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { CustomOptionButton, Option } from \"../../option\";\nimport { PickerField, PickerPopup, PickerTrigger, usePickerFloatingListbox, usePickerTriggerController } from \"../../picker\";\nimport { type UiBaseProps } from \"../../types\";\nimport { DEFAULT_LAYOUT_PICKER_PRESETS, type LayoutPickerPreset } from \"../lib\";\n\nimport styles from \"./LayoutPicker.module.scss\";\nimport { LayoutPresetPreview } from \"./LayoutPresetPreview\";\n\nexport type LayoutPickerTriggerProps = ComponentPropsWithRef<\"button\"> & {\n\t\"data-ui\": \"layout-picker-trigger\";\n};\n\nexport type LayoutPickerTriggerRenderState = Readonly<{\n\topen: boolean;\n\tselectedPreset?: LayoutPickerPreset;\n\ttriggerLabel: string;\n\t/**\n\t * Эти props нужно передать в корневую button кастомного trigger, чтобы\n\t * сохранить позиционирование popup, клавиатурное управление и ARIA-контракт.\n\t */\n\ttriggerProps: LayoutPickerTriggerProps;\n}>;\n\nexport interface LayoutPickerProps extends UiBaseProps<string> {\n\tid?: string;\n\tpresets?: readonly LayoutPickerPreset[];\n\tgetPresetDisabled?: (preset: LayoutPickerPreset) => boolean;\n\t/**\n\t * Показывает рядом с превью переданный текст `placeholder`.\n\t * По умолчанию текст скрыт, поэтому trigger отображает только иконку раскладки.\n\t */\n\tshowPlaceholder?: boolean;\n\tariaLabel?: string;\n\tclassName?: string;\n\ttriggerClassName?: string;\n\tpopupClassName?: string;\n\tplacement?: Placement;\n\t/** Заменяет стандартный input-like trigger, не меняя popup со списком пресетов. */\n\trenderTrigger?: (state: LayoutPickerTriggerRenderState) => ReactElement;\n}\n\nconst DEFAULT_PLACEHOLDER = \"Выберите раскладку\";\n\n/**\n * Контрол выбора layout-пресета. Не хранит бизнес-логику содержимого ячеек.\n */\nexport function LayoutPicker({\n\tid,\n\tlabel,\n\tdescription,\n\tvalue,\n\tonChange,\n\tpresets = DEFAULT_LAYOUT_PICKER_PRESETS,\n\tdisabled,\n\tgetPresetDisabled,\n\tplaceholder = DEFAULT_PLACEHOLDER,\n\tshowPlaceholder = false,\n\tsize,\n\tariaLabel,\n\tclassName,\n\ttriggerClassName,\n\tpopupClassName,\n\tplacement = \"bottom-start\",\n\trenderTrigger\n}: LayoutPickerProps) {\n\tconst inputRef = useRef<HTMLInputElement | null>(null);\n\tconst [open, setOpen] = useState(false);\n\tconst selectedIndex = presets.findIndex((preset) => preset.id === value);\n\tconst selectedPreset = selectedIndex >= 0 ? presets[selectedIndex] : undefined;\n\tconst triggerLabel = selectedPreset?.label ?? placeholder;\n\tconst {\n\t\tactiveIndex,\n\t\tcontext,\n\t\tfloatingStyles,\n\t\tgetFloatingProps,\n\t\tsetReference,\n\t\tsetFloating,\n\t\tsetOptionRef,\n\t\tclose,\n\t\topenList,\n\t\ttoggleOpen,\n\t\tselectOption,\n\t\tselectActiveOption,\n\t\thandleReferenceKeyDown,\n\t\thandleFloatingKeyDown,\n\t\tgetOptionId,\n\t\tgetActiveOptionId\n\t} = usePickerFloatingListbox({\n\t\toptions: presets,\n\t\tselectedIndex,\n\t\topen,\n\t\tonOpenChange: setOpen,\n\t\tgetOptionDisabled: getPresetDisabled,\n\t\tonSelect: (preset) => onChange(preset.id),\n\t\tdisabled,\n\t\tplacement,\n\t\ttriggerMode: \"display\"\n\t});\n\tconst triggerController = usePickerTriggerController({\n\t\tmode: \"display\",\n\t\topen,\n\t\tcurrentQuery: \"\",\n\t\thasDisplayValue: selectedPreset !== undefined,\n\t\tinputRef,\n\t\topenList,\n\t\tclose,\n\t\ttoggleOpen\n\t});\n\tconst setInputNode = (node: HTMLInputElement | null) => {\n\t\tinputRef.current = node;\n\t};\n\n\treturn (\n\t\t<PickerField id={id} label={label} description={description} disabled={disabled} size={size} className={className}>\n\t\t\t{({ controlId, labelId, describedBy }) => {\n\t\t\t\tconst listId = `${controlId}-listbox`;\n\t\t\t\tconst commonTriggerAria = {\n\t\t\t\t\t\"aria-haspopup\": \"listbox\" as const,\n\t\t\t\t\t\"aria-expanded\": open,\n\t\t\t\t\t\"aria-controls\": open ? listId : undefined,\n\t\t\t\t\t\"aria-labelledby\": labelId,\n\t\t\t\t\t\"aria-describedby\": describedBy,\n\t\t\t\t\t\"aria-activedescendant\": open ? getActiveOptionId(listId) : undefined,\n\t\t\t\t\t\"aria-label\": !labelId ? (ariaLabel ?? `Выбрать layout. Текущее значение: ${triggerLabel}`) : undefined\n\t\t\t\t};\n\t\t\t\tconst customTrigger = renderTrigger?.({\n\t\t\t\t\topen,\n\t\t\t\t\tselectedPreset,\n\t\t\t\t\ttriggerLabel,\n\t\t\t\t\ttriggerProps: {\n\t\t\t\t\t\tref: setReference,\n\t\t\t\t\t\tid: controlId,\n\t\t\t\t\t\ttype: \"button\",\n\t\t\t\t\t\tdisabled,\n\t\t\t\t\t\trole: \"combobox\",\n\t\t\t\t\t\t...commonTriggerAria,\n\t\t\t\t\t\t\"data-ui\": \"layout-picker-trigger\",\n\t\t\t\t\t\tclassName: triggerClassName,\n\t\t\t\t\t\tonClick: () => {\n\t\t\t\t\t\t\tif (!disabled) toggleOpen();\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonKeyDown: (event) => {\n\t\t\t\t\t\t\thandleReferenceKeyDown(event);\n\n\t\t\t\t\t\t\tif (event.defaultPrevented) return;\n\n\t\t\t\t\t\t\ttriggerController.handleTriggerKeyDown({\n\t\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\t\tonActivateWhenOpen: selectActiveOption,\n\t\t\t\t\t\t\t\tenableSpaceActivation: true\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{customTrigger ?? (\n\t\t\t\t\t\t\t<PickerTrigger\n\t\t\t\t\t\t\t\tref={setInputNode}\n\t\t\t\t\t\t\t\trootRef={setReference}\n\t\t\t\t\t\t\t\tid={controlId}\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\t\topen={open}\n\t\t\t\t\t\t\t\toptionCount={presets.length}\n\t\t\t\t\t\t\t\tlabel={label}\n\t\t\t\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\t\t\t\treadOnly\n\t\t\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\t\t\trole=\"combobox\"\n\t\t\t\t\t\t\t\tvalue={triggerLabel}\n\t\t\t\t\t\t\t\tselectedValue={\n\t\t\t\t\t\t\t\t\tselectedPreset ? (\n\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t<LayoutPresetPreview preset={selectedPreset} compact />\n\t\t\t\t\t\t\t\t\t\t\t{showPlaceholder ? (\n\t\t\t\t\t\t\t\t\t\t\t\t<span className={styles.triggerText} data-ui=\"layout-picker-selected-label\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t{selectedPreset.label}\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t) : undefined\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\thasSelection={selectedPreset !== undefined}\n\t\t\t\t\t\t\t\tshowSelectedValue={selectedPreset !== undefined}\n\t\t\t\t\t\t\t\tonToggleMouseDown={triggerController.handleToggleMouseDown}\n\t\t\t\t\t\t\t\tonToggleClick={triggerController.handleToggleClick}\n\t\t\t\t\t\t\t\topenAriaLabel=\"Открыть список layout\"\n\t\t\t\t\t\t\t\tcloseAriaLabel=\"Закрыть список layout\"\n\t\t\t\t\t\t\t\t{...commonTriggerAria}\n\t\t\t\t\t\t\t\taria-autocomplete=\"none\"\n\t\t\t\t\t\t\t\tdata-ui=\"layout-picker-trigger\"\n\t\t\t\t\t\t\t\trootClassName={triggerClassName}\n\t\t\t\t\t\t\t\tonClick={triggerController.handleTriggerClick}\n\t\t\t\t\t\t\t\tonFocus={(event) => {\n\t\t\t\t\t\t\t\t\ttriggerController.handleTriggerFocus(event.currentTarget);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tonKeyDown={(event) => {\n\t\t\t\t\t\t\t\t\thandleReferenceKeyDown(event);\n\n\t\t\t\t\t\t\t\t\tif (event.defaultPrevented) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\ttriggerController.handleTriggerKeyDown({\n\t\t\t\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\t\t\t\tonActivateWhenOpen: selectActiveOption,\n\t\t\t\t\t\t\t\t\t\tenableSpaceActivation: true\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t<PickerPopup\n\t\t\t\t\t\t\topen={open}\n\t\t\t\t\t\t\tcontext={context}\n\t\t\t\t\t\t\tfloatingStyles={floatingStyles}\n\t\t\t\t\t\t\tlistId={listId}\n\t\t\t\t\t\t\tlabelId={labelId}\n\t\t\t\t\t\t\tdescriptionId={describedBy}\n\t\t\t\t\t\t\tactiveOptionId={getActiveOptionId(listId)}\n\t\t\t\t\t\t\tsetFloating={setFloating}\n\t\t\t\t\t\t\tgetFloatingProps={getFloatingProps}\n\t\t\t\t\t\t\tonKeyDown={handleFloatingKeyDown}\n\t\t\t\t\t\t\tclassName={cn(styles.popup, popupClassName)}\n\t\t\t\t\t\t\tlayoutClassName={styles.popupLayout}\n\t\t\t\t\t\t\tbodyClassName={styles.popupBody}>\n\t\t\t\t\t\t\t<div className={styles.options}>\n\t\t\t\t\t\t\t\t{presets.map((preset, index) => {\n\t\t\t\t\t\t\t\t\tconst selected = index === selectedIndex;\n\t\t\t\t\t\t\t\t\tconst active = index === activeIndex;\n\t\t\t\t\t\t\t\t\tconst presetDisabled = getPresetDisabled?.(preset) ?? false;\n\t\t\t\t\t\t\t\t\tconst optionId = getOptionId(listId, index);\n\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<Option\n\t\t\t\t\t\t\t\t\t\t\tkey={preset.id}\n\t\t\t\t\t\t\t\t\t\t\tid={optionId}\n\t\t\t\t\t\t\t\t\t\t\tref={(node) => setOptionRef(index, node)}\n\t\t\t\t\t\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\t\t\t\t\t\taria-selected={selected}\n\t\t\t\t\t\t\t\t\t\t\taria-disabled={presetDisabled || undefined}\n\t\t\t\t\t\t\t\t\t\t\taria-label={preset.description ? `${preset.label}. ${preset.description}` : preset.label}\n\t\t\t\t\t\t\t\t\t\t\tclassName={styles.option}\n\t\t\t\t\t\t\t\t\t\t\tactive={active}\n\t\t\t\t\t\t\t\t\t\t\tselected={selected}\n\t\t\t\t\t\t\t\t\t\t\tdisabled={presetDisabled}\n\t\t\t\t\t\t\t\t\t\t\tdata-ui=\"layout-picker-option\"\n\t\t\t\t\t\t\t\t\t\t\tdata-selected={selected || undefined}>\n\t\t\t\t\t\t\t\t\t\t\t<CustomOptionButton\n\t\t\t\t\t\t\t\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled={presetDisabled}\n\n\t\t\t\t\t\t\t\t\t\t\t\tonMouseDown={(event) => event.preventDefault()}\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => selectOption(preset)}>\n\t\t\t\t\t\t\t\t\t\t\t\t<span className={styles.optionPreviewWrap}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<LayoutPresetPreview preset={preset} />\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t</CustomOptionButton>\n\t\t\t\t\t\t\t\t\t\t</Option>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</PickerPopup>\n\t\t\t\t\t</>\n\t\t\t\t);\n\t\t\t}}\n\t\t</PickerField>\n\t);\n}\n"],"mappings":";;;;;;AAOA,SAAgB,EAAe,GAA4B,GAA0C;CACpG,OAAO;EACN,qBAAqB,UAAU,EAAO,QAAQ;EAC9C,kBAAkB,UAAU,EAAO,KAAK,WAAW,KAAoB,EAAE;CAC1E;AACD;AAKA,SAAgB,EAAmB,GAA6C;CAC/E,OAAO;EACN,YAAY,GAAG,EAAK,OAAO,UAAU,EAAK,cAAc;EACxD,SAAS,GAAG,EAAK,IAAI,UAAU,EAAK,WAAW;CAChD;AACD;;;ACZA,IAAa,IAAgC;CAC5C;EACC,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,OAAO,CAAC;GAAE,IAAI;GAAO,KAAK;GAAG,QAAQ;EAAE,CAAC;CACzC;CACA;EACC,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,OAAO,CACN;GAAE,IAAI;GAAO,KAAK;GAAG,QAAQ;EAAE,GAC/B;GAAE,IAAI;GAAO,KAAK;GAAG,QAAQ;EAAE,CAChC;CACD;CACA;EACC,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,OAAO;GACN;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;EAChC;CACD;CACA;EACC,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,OAAO,CACN;GAAE,IAAI;GAAO,KAAK;GAAG,QAAQ;EAAE,GAC/B;GAAE,IAAI;GAAO,KAAK;GAAG,QAAQ;EAAE,CAChC;CACD;CACA;EACC,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,OAAO;GACN;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;EAChC;CACD;CACA;EACC,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,OAAO;GACN;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;EAChC;CACD;CACA;EACC,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,OAAO;GACN;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;EAChC;CACD;CACA;EACC,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,OAAO;GACN;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;EAChC;CACD;CACA;EACC,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,OAAO;GACN;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;EAChC;CACD;CACA;EACC,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,OAAO;GACN;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;EAChC;CACD;CACA;EACC,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,OAAO;GACN;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;EAChC;CACD;CACA;EACC,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,OAAO;GACN;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;EAChC;CACD;CAEA;EACC,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,OAAO;GACN;IAAE,IAAI;IAAQ,KAAK;IAAG,QAAQ;IAAG,SAAS;GAAE;GAC5C;IAAE,IAAI;IAAM,KAAK;IAAG,QAAQ;GAAE;GAC9B;IAAE,IAAI;IAAM,KAAK;IAAG,QAAQ;GAAE;EAC/B;CACD;CACA;EACC,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,OAAO;GACN;IAAE,IAAI;IAAM,KAAK;IAAG,QAAQ;GAAE;GAC9B;IAAE,IAAI;IAAM,KAAK;IAAG,QAAQ;GAAE;GAC9B;IAAE,IAAI;IAAS,KAAK;IAAG,QAAQ;IAAG,SAAS;GAAE;EAC9C;CACD;CACA;EACC,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,OAAO;GACN;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;IAAG,YAAY;GAAE;GAC9C;IAAE,IAAI;IAAM,KAAK;IAAG,QAAQ;GAAE;GAC9B;IAAE,IAAI;IAAM,KAAK;IAAG,QAAQ;GAAE;EAC/B;CACD;CACA;EACC,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,OAAO;GACN;IAAE,IAAI;IAAM,KAAK;IAAG,QAAQ;GAAE;GAC9B;IAAE,IAAI;IAAM,KAAK;IAAG,QAAQ;GAAE;GAC9B;IAAE,IAAI;IAAU,KAAK;IAAG,QAAQ;IAAG,YAAY;GAAE;EAClD;CACD;CAEA;EACC,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,OAAO;GACN;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;IAAG,YAAY;GAAE;GAC9C;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;EAChC;CACD;CACA;EACC,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,OAAO;GACN;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAU,KAAK;IAAG,QAAQ;IAAG,YAAY;GAAE;EAClD;CACD;CACA;EACC,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,OAAO;GACN;IAAE,IAAI;IAAM,KAAK;IAAG,QAAQ;GAAE;GAC9B;IAAE,IAAI;IAAM,KAAK;IAAG,QAAQ;GAAE;GAC9B;IAAE,IAAI;IAAU,KAAK;IAAG,QAAQ;IAAG,YAAY;GAAE;GACjD;IAAE,IAAI;IAAM,KAAK;IAAG,QAAQ;GAAE;GAC9B;IAAE,IAAI;IAAM,KAAK;IAAG,QAAQ;GAAE;EAC/B;CACD;CAEA;EACC,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,OAAO;GACN;IAAE,IAAI;IAAQ,KAAK;IAAG,QAAQ;IAAG,SAAS;GAAE;GAC5C;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;EAChC;CACD;CACA;EACC,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,OAAO;GACN;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAS,KAAK;IAAG,QAAQ;IAAG,SAAS;GAAE;GAC7C;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;EAChC;CACD;CACA;EACC,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,OAAO;GACN;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;IAAG,YAAY;GAAE;GAC9C;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;EAChC;CACD;CACA;EACC,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,OAAO;GACN;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAU,KAAK;IAAG,QAAQ;IAAG,YAAY;GAAE;EAClD;CACD;CAEA;EACC,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,OAAO;GACN;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;IAAG,YAAY;GAAE;GAC9C;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;EAChC;CACD;CACA;EACC,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,OAAO;GACN;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAU,KAAK;IAAG,QAAQ;IAAG,YAAY;GAAE;EAClD;CACD;CACA;EACC,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,OAAO;GACN;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;IAAG,YAAY;GAAE;GAC9C;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;EAChC;CACD;CACA;EACC,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,OAAO;GACN;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAO,KAAK;IAAG,QAAQ;GAAE;GAC/B;IAAE,IAAI;IAAU,KAAK;IAAG,QAAQ;IAAG,YAAY;GAAE;EAClD;CACD;AACD;AAIA,SAAgB,IAA8D;CAC7E,OAAO,EAA8B,EAAE,CAAC;AACzC;AAGA,SAAgB,EAAoB,GAAkD;CACrF,OAAO,EAA8B,MAAM,MAAW,EAAO,OAAO,CAAQ,KAAK,EAA8B;AAChH;AAEA,SAAgB,EAAuB,GAA0B;CAChE,OAAO,EAA8B,MAAM,MAAW,EAAO,OAAO,CAAQ,CAAC,EAAE,MAAM,UAAU;AAChG;;;;;;;;;;;;;;;;AE7XA,SAAgB,EAAoB,EAAE,WAAQ,aAAU,MAAmC;CAC1F,OACC,kBAAC,QAAD;EACC,WAAW,EAAG,EAAO,SAAS,KAAW,EAAO,cAAc;EAC9D,OAAO,EAAe,CAAM;EAC5B,eAAY;EACZ,WAAQ;EACP,UAAA,EAAO,MAAM,KAAK,MAClB,kBAAC,QAAD;GAAsC,WAAW,EAAO;GAAa,OAAO,EAAmB,CAAI;EAAI,GAA5F,GAAG,EAAO,GAAG,GAAG,EAAK,IAAuE,CACvG;CACI,CAAA;AAER;;;ACsBA,IAAM,KAAsB;AAK5B,SAAgB,EAAa,EAC5B,OACA,UACA,gBACA,UACA,aACA,aAAU,GACV,aACA,sBACA,iBAAc,IACd,qBAAkB,IAClB,SACA,cACA,cACA,qBACA,mBACA,eAAY,gBACZ,oBACqB;CACrB,IAAM,IAAW,EAAgC,IAAI,GAC/C,CAAC,GAAM,MAAW,EAAS,EAAK,GAChC,IAAgB,EAAQ,WAAW,MAAW,EAAO,OAAO,CAAK,GACjE,IAAiB,KAAiB,IAAI,EAAQ,KAAiB,KAAA,GAC/D,IAAe,GAAgB,SAAS,GACxC,EACL,gBACA,YACA,mBACA,qBACA,iBACA,gBACA,iBACA,UACA,aACA,eACA,iBACA,uBACA,2BACA,0BACA,iBACA,yBACG,EAAyB;EAC5B,SAAS;EACT;EACA;EACA,cAAc;EACd,mBAAmB;EACnB,WAAW,MAAW,EAAS,EAAO,EAAE;EACxC;EACA;EACA,aAAa;CACd,CAAC,GACK,IAAoB,EAA2B;EACpD,MAAM;EACN;EACA,cAAc;EACd,iBAAiB,MAAmB,KAAA;EACpC;EACA;EACA;EACA;CACD,CAAC,GACK,MAAgB,MAAkC;EACvD,EAAS,UAAU;CACpB;CAEA,OACC,kBAAC,GAAD;EAAiB;EAAW;EAAoB;EAAuB;EAAgB;EAAiB;EACrG,WAAA,EAAE,cAAW,YAAS,qBAAkB;GACzC,IAAM,IAAS,GAAG,EAAU,WACtB,IAAoB;IACzB,iBAAiB;IACjB,iBAAiB;IACjB,iBAAiB,IAAO,IAAS,KAAA;IACjC,mBAAmB;IACnB,oBAAoB;IACpB,yBAAyB,IAAO,EAAkB,CAAM,IAAI,KAAA;IAC5D,cAAe,IAA+E,KAAA,IAApE,KAAa,qCAAqC;GAC7E,GACM,IAAgB,IAAgB;IACrC;IACA;IACA;IACA,cAAc;KACb,KAAK;KACL,IAAI;KACJ,MAAM;KACN;KACA,MAAM;KACN,GAAG;KACH,WAAW;KACX,WAAW;KACX,eAAe;MACd,AAAK,KAAU,EAAW;KAC3B;KACA,YAAY,MAAU;MACrB,EAAuB,CAAK,GAExB,GAAM,oBAEV,EAAkB,qBAAqB;OACtC;OACA,oBAAoB;OACpB,uBAAuB;MACxB,CAAC;KACF;IACD;GACD,CAAC;GAED,OACC,kBAAA,GAAA,EAAA,UAAA,CACE,KACA,kBAAC,GAAD;IACC,KAAK;IACL,SAAS;IACT,IAAI;IACJ,MAAK;IACK;IACJ;IACN,aAAa,EAAQ;IACd;IACM;IACb,UAAA;IACA,cAAa;IACb,MAAK;IACL,OAAO;IACP,eACC,IACC,kBAAA,GAAA,EAAA,UAAA,CACC,kBAAC,GAAD;KAAqB,QAAQ;KAAgB,SAAA;IAAS,CAAA,GACrD,IACA,kBAAC,QAAD;KAAM,WAAW,EAAO;KAAa,WAAQ;KAC3C,UAAA,EAAe;IACX,CAAA,IACH,IACH,EAAA,CAAA,IACC,KAAA;IAEL,cAAc,MAAmB,KAAA;IACjC,mBAAmB,MAAmB,KAAA;IACtC,mBAAmB,EAAkB;IACrC,eAAe,EAAkB;IACjC,eAAc;IACd,gBAAe;IACf,GAAI;IACJ,qBAAkB;IAClB,WAAQ;IACR,eAAe;IACf,SAAS,EAAkB;IAC3B,UAAU,MAAU;KACnB,EAAkB,mBAAmB,EAAM,aAAa;IACzD;IACA,YAAY,MAAU;KACrB,EAAuB,CAAK,GAExB,GAAM,oBAIV,EAAkB,qBAAqB;MACtC;MACA,oBAAoB;MACpB,uBAAuB;KACxB,CAAC;IACF;GACA,CAAA,GAGF,kBAAC,GAAD;IACO;IACG;IACO;IACR;IACC;IACT,eAAe;IACf,gBAAgB,EAAkB,CAAM;IAC3B;IACK;IAClB,WAAW;IACX,WAAW,EAAG,EAAO,OAAO,CAAc;IAC1C,iBAAiB,EAAO;IACxB,eAAe,EAAO;IACtB,UAAA,kBAAC,OAAD;KAAK,WAAW,EAAO;KACrB,UAAA,EAAQ,KAAK,GAAQ,MAAU;MAC/B,IAAM,IAAW,MAAU,GACrB,IAAS,MAAU,GACnB,IAAiB,IAAoB,CAAM,KAAK,IAChD,IAAW,GAAY,GAAQ,CAAK;MAE1C,OACC,kBAAC,GAAD;OAEC,IAAI;OACJ,MAAM,MAAS,EAAa,GAAO,CAAI;OACvC,MAAK;OACL,iBAAe;OACf,iBAAe,KAAkB,KAAA;OACjC,cAAY,EAAO,cAAc,GAAG,EAAO,MAAM,IAAI,EAAO,gBAAgB,EAAO;OACnF,WAAW,EAAO;OACV;OACE;OACV,UAAU;OACV,WAAQ;OACR,iBAAe,KAAY,KAAA;OAC3B,UAAA,kBAAC,GAAD;QACC,UAAU;QACV,UAAU;QAEV,cAAc,MAAU,EAAM,eAAe;QAC7C,eAAe,EAAa,CAAM;QAClC,UAAA,kBAAC,QAAD;SAAM,WAAW,EAAO;SACvB,UAAA,kBAAC,GAAD,EAA6B,UAAS,CAAA;QACjC,CAAA;OACa,CAAA;MACb,GAvBF,EAAO,EAuBL;KAEV,CAAC;IACG,CAAA;GACO,CAAA,CACZ,EAAA,CAAA;EAEJ;CACY,CAAA;AAEf"}
@@ -1,6 +1,20 @@
1
+ import { type ComponentPropsWithRef, type ReactElement } from "react";
1
2
  import { type Placement } from "@floating-ui/react";
2
3
  import { type UiBaseProps } from "../../types";
3
4
  import { type LayoutPickerPreset } from "../lib";
5
+ export type LayoutPickerTriggerProps = ComponentPropsWithRef<"button"> & {
6
+ "data-ui": "layout-picker-trigger";
7
+ };
8
+ export type LayoutPickerTriggerRenderState = Readonly<{
9
+ open: boolean;
10
+ selectedPreset?: LayoutPickerPreset;
11
+ triggerLabel: string;
12
+ /**
13
+ * Эти props нужно передать в корневую button кастомного trigger, чтобы
14
+ * сохранить позиционирование popup, клавиатурное управление и ARIA-контракт.
15
+ */
16
+ triggerProps: LayoutPickerTriggerProps;
17
+ }>;
4
18
  export interface LayoutPickerProps extends UiBaseProps<string> {
5
19
  id?: string;
6
20
  presets?: readonly LayoutPickerPreset[];
@@ -15,9 +29,11 @@ export interface LayoutPickerProps extends UiBaseProps<string> {
15
29
  triggerClassName?: string;
16
30
  popupClassName?: string;
17
31
  placement?: Placement;
32
+ /** Заменяет стандартный input-like trigger, не меняя popup со списком пресетов. */
33
+ renderTrigger?: (state: LayoutPickerTriggerRenderState) => ReactElement;
18
34
  }
19
35
  /**
20
36
  * Контрол выбора layout-пресета. Не хранит бизнес-логику содержимого ячеек.
21
37
  */
22
- export declare function LayoutPicker({ id, label, description, value, onChange, presets, disabled, getPresetDisabled, placeholder, showPlaceholder, size, ariaLabel, className, triggerClassName, popupClassName, placement }: LayoutPickerProps): import("react").JSX.Element;
38
+ export declare function LayoutPicker({ id, label, description, value, onChange, presets, disabled, getPresetDisabled, placeholder, showPlaceholder, size, ariaLabel, className, triggerClassName, popupClassName, placement, renderTrigger }: LayoutPickerProps): import("react").JSX.Element;
23
39
  //# sourceMappingURL=LayoutPicker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LayoutPicker.d.ts","sourceRoot":"","sources":["../../../src/layout-picker/ui/LayoutPicker.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAKpD,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAqE,KAAK,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAIpH,MAAM,WAAW,iBAAkB,SAAQ,WAAW,CAAC,MAAM,CAAC;IAC7D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACxC,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,OAAO,CAAC;IAC5D;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,SAAS,CAAC;CACtB;AAkBD;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAC5B,EAAE,EACF,KAAK,EACL,WAAW,EACX,KAAK,EACL,QAAQ,EACR,OAAuC,EACvC,QAAQ,EACR,iBAAiB,EACjB,WAAiC,EACjC,eAAuB,EACvB,IAAI,EACJ,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,SAA0B,EAC1B,EAAE,iBAAiB,+BA4KnB"}
1
+ {"version":3,"file":"LayoutPicker.d.ts","sourceRoot":"","sources":["../../../src/layout-picker/ui/LayoutPicker.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,YAAY,EAAoB,MAAM,OAAO,CAAC;AAExF,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAKpD,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAiC,KAAK,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAKhF,MAAM,MAAM,wBAAwB,GAAG,qBAAqB,CAAC,QAAQ,CAAC,GAAG;IACxE,SAAS,EAAE,uBAAuB,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG,QAAQ,CAAC;IACrD,IAAI,EAAE,OAAO,CAAC;IACd,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,YAAY,EAAE,wBAAwB,CAAC;CACvC,CAAC,CAAC;AAEH,MAAM,WAAW,iBAAkB,SAAQ,WAAW,CAAC,MAAM,CAAC;IAC7D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACxC,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,OAAO,CAAC;IAC5D;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,mFAAmF;IACnF,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,8BAA8B,KAAK,YAAY,CAAC;CACxE;AAID;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAC5B,EAAE,EACF,KAAK,EACL,WAAW,EACX,KAAK,EACL,QAAQ,EACR,OAAuC,EACvC,QAAQ,EACR,iBAAiB,EACjB,WAAiC,EACjC,eAAuB,EACvB,IAAI,EACJ,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,SAA0B,EAC1B,aAAa,EACb,EAAE,iBAAiB,+BA8MnB"}
@@ -0,0 +1,8 @@
1
+ import { type LayoutPickerPreset } from "../lib";
2
+ export type LayoutPresetPreviewProps = {
3
+ preset: LayoutPickerPreset;
4
+ compact?: boolean;
5
+ };
6
+ /** Схематичное, скрытое от accessibility tree превью layout-пресета. */
7
+ export declare function LayoutPresetPreview({ preset, compact }: LayoutPresetPreviewProps): import("react").JSX.Element;
8
+ //# sourceMappingURL=LayoutPresetPreview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LayoutPresetPreview.d.ts","sourceRoot":"","sources":["../../../src/layout-picker/ui/LayoutPresetPreview.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAsC,KAAK,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAIrF,MAAM,MAAM,wBAAwB,GAAG;IACtC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,wEAAwE;AACxE,wBAAgB,mBAAmB,CAAC,EAAE,MAAM,EAAE,OAAe,EAAE,EAAE,wBAAwB,+BAYxF"}
@@ -0,0 +1,24 @@
1
+ import { type PropsWithChildren } from "react";
2
+ export type SplitterHeightContainerProps = PropsWithChildren<{
3
+ /** Controlled-высота области со Splitter в CSS-пикселях. */
4
+ height?: number;
5
+ /** Начальная высота для uncontrolled-режима в CSS-пикселях. */
6
+ defaultHeight?: number;
7
+ minHeight?: number;
8
+ maxHeight?: number;
9
+ /** Шаг изменения высоты с клавиатуры в CSS-пикселях. */
10
+ heightStep?: number;
11
+ /** Сообщает итоговую высоту после завершения drag или клавиатурного шага. */
12
+ onHeightChange?: (height: number) => void;
13
+ className?: string;
14
+ viewportClassName?: string;
15
+ separatorClassName?: string;
16
+ separatorAriaLabel?: string;
17
+ }>;
18
+ /**
19
+ * Опциональная внешняя композиция для Splitter: область панелей получает
20
+ * независимую высоту, а расположенный снизу separator изменяет весь viewport.
21
+ * Внутренние Splitter при этом продолжают управлять только своими пропорциями.
22
+ */
23
+ export declare function SplitterHeightContainer({ height, defaultHeight, minHeight, maxHeight, heightStep, onHeightChange, className, viewportClassName, separatorClassName, separatorAriaLabel, children }: SplitterHeightContainerProps): import("react").JSX.Element;
24
+ //# sourceMappingURL=SplitterHeightContainer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SplitterHeightContainer.d.ts","sourceRoot":"","sources":["../../src/splitter/SplitterHeightContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAS,MAAM,OAAO,CAAC;AAOtD,MAAM,MAAM,4BAA4B,GAAG,iBAAiB,CAAC;IAC5D,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+DAA+D;IAC/D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6EAA6E;IAC7E,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC,CAAC;AAOH;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,EACvC,MAAM,EACN,aAA8B,EAC9B,SAA8B,EAC9B,SAA8B,EAC9B,UAAgC,EAChC,cAAc,EACd,SAAS,EACT,iBAAiB,EACjB,kBAAkB,EAClB,kBAAsD,EACtD,QAAQ,EACR,EAAE,4BAA4B,+BAuC9B"}
@@ -1,2 +1,3 @@
1
1
  export * from "./Splitter";
2
+ export * from "./SplitterHeightContainer";
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/splitter/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/splitter/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,2BAA2B,CAAC"}