@ryuzaki13/react-foundation-ui 1.8.2 → 1.8.3

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 (423) hide show
  1. package/dist/advanced-search/index.js +8 -8
  2. package/dist/badge/index.js +1 -1
  3. package/dist/base-table/index.js +1 -1
  4. package/dist/button/index.js +1 -1
  5. package/dist/check-box/index.js +1 -1
  6. package/dist/chunks/{CalendarView-DGElHRTJ.js → CalendarView-BJx6akIp.js} +2 -2
  7. package/dist/chunks/{CalendarView-DGElHRTJ.js.map → CalendarView-BJx6akIp.js.map} +1 -1
  8. package/dist/chunks/CheckBox.module-C5SjPwSj.js.map +1 -1
  9. package/dist/chunks/{TextEditorLexicalClient-C6b5N8AO.js → TextEditorLexicalClient-Ca89d-Db.js} +6 -6
  10. package/dist/chunks/{TextEditorLexicalClient-C6b5N8AO.js.map → TextEditorLexicalClient-Ca89d-Db.js.map} +1 -1
  11. package/dist/chunks/{badge-DMM8cOHd.js → badge-DUI2ET6q.js} +2 -2
  12. package/dist/chunks/{badge-DMM8cOHd.js.map → badge-DUI2ET6q.js.map} +1 -1
  13. package/dist/chunks/{base-table-DNSYOO9t.js → base-table-CsnUiMTe.js} +2 -2
  14. package/dist/chunks/{base-table-DNSYOO9t.js.map → base-table-CsnUiMTe.js.map} +1 -1
  15. package/dist/chunks/{button-BsvHGWPc.js → button-C53OkqTg.js} +3 -3
  16. package/dist/chunks/{button-BsvHGWPc.js.map → button-C53OkqTg.js.map} +1 -1
  17. package/dist/chunks/{check-box-sfGjYczQ.js → check-box-CC8CDnSR.js} +3 -3
  18. package/dist/chunks/{check-box-sfGjYczQ.js.map → check-box-CC8CDnSR.js.map} +1 -1
  19. package/dist/chunks/context-menu-C8sA7xCN.js +525 -0
  20. package/dist/chunks/context-menu-C8sA7xCN.js.map +1 -0
  21. package/dist/chunks/{date-input-C4GcKul6.js → date-input-g6l1iDmf.js} +5 -5
  22. package/dist/chunks/{date-input-C4GcKul6.js.map → date-input-g6l1iDmf.js.map} +1 -1
  23. package/dist/chunks/defaultRenderers-Dbhg2hHc.js +38 -0
  24. package/dist/chunks/defaultRenderers-Dbhg2hHc.js.map +1 -0
  25. package/dist/chunks/{input-CCdBtl-C.js → input-d08WN5FV.js} +2 -2
  26. package/dist/chunks/{input-CCdBtl-C.js.map → input-d08WN5FV.js.map} +1 -1
  27. package/dist/chunks/{input-files-TXdXrSAs.js → input-files-_NdSQM_3.js} +3 -3
  28. package/dist/chunks/{input-files-TXdXrSAs.js.map → input-files-_NdSQM_3.js.map} +1 -1
  29. package/dist/chunks/{input-search-Ca8iqeK2.js → input-search-BjtTMoRu.js} +2 -2
  30. package/dist/chunks/{input-search-Ca8iqeK2.js.map → input-search-BjtTMoRu.js.map} +1 -1
  31. package/dist/chunks/{modal-DLRYn-Lr.js → modal-Bar-j5a4.js} +2 -2
  32. package/dist/chunks/{modal-DLRYn-Lr.js.map → modal-Bar-j5a4.js.map} +1 -1
  33. package/dist/chunks/multi-select-Cvjz9W07.js +466 -0
  34. package/dist/chunks/multi-select-Cvjz9W07.js.map +1 -0
  35. package/dist/chunks/picker-0I1yMKIY.js +435 -0
  36. package/dist/chunks/picker-0I1yMKIY.js.map +1 -0
  37. package/dist/chunks/{radio-group-BAeJjyZ5.js → radio-group-DhpP7JSJ.js} +2 -2
  38. package/dist/chunks/{radio-group-BAeJjyZ5.js.map → radio-group-DhpP7JSJ.js.map} +1 -1
  39. package/dist/chunks/select-CUQ91FIc.js +363 -0
  40. package/dist/chunks/select-CUQ91FIc.js.map +1 -0
  41. package/dist/chunks/{table-RO4dfMAj.js → table-z9kyd9U3.js} +2 -2
  42. package/dist/chunks/{table-RO4dfMAj.js.map → table-z9kyd9U3.js.map} +1 -1
  43. package/dist/chunks/{ui.module-DHVTOqZ0.js → ui.module-BsDio9A3.js} +4 -3
  44. package/dist/chunks/ui.module-BsDio9A3.js.map +1 -0
  45. package/dist/chunks/{uiClasses-UkaejTdf.js → uiClasses-BVwFzzsr.js} +2 -2
  46. package/dist/chunks/{uiClasses-UkaejTdf.js.map → uiClasses-BVwFzzsr.js.map} +1 -1
  47. package/dist/chunks/useODataSelectBase-DR4PrY1j.js +117 -0
  48. package/dist/chunks/useODataSelectBase-DR4PrY1j.js.map +1 -0
  49. package/dist/context-menu/components/ContextMenu.d.ts +2 -1
  50. package/dist/context-menu/components/ContextMenu.d.ts.map +1 -1
  51. package/dist/context-menu/components/DropdownMenu.d.ts +2 -1
  52. package/dist/context-menu/components/DropdownMenu.d.ts.map +1 -1
  53. package/dist/context-menu/components/MenuContent.d.ts.map +1 -1
  54. package/dist/context-menu/components/MenuItem.d.ts +6 -6
  55. package/dist/context-menu/components/MenuItem.d.ts.map +1 -1
  56. package/dist/context-menu/components/MenuRoot.d.ts +1 -1
  57. package/dist/context-menu/components/MenuRoot.d.ts.map +1 -1
  58. package/dist/context-menu/index.js +1 -1
  59. package/dist/date-input/index.js +2 -2
  60. package/dist/date-time-input/index.js +3 -3
  61. package/dist/disclosure/index.js +2 -2
  62. package/dist/drop-zone/index.js +1 -1
  63. package/dist/expandable-action-panel/index.js +1 -1
  64. package/dist/image/index.js +4 -4
  65. package/dist/input/index.js +1 -1
  66. package/dist/input-date-time/index.js +2 -2
  67. package/dist/input-file/index.js +2 -2
  68. package/dist/input-files/index.js +1 -1
  69. package/dist/input-image/index.js +2 -2
  70. package/dist/input-search/index.js +1 -1
  71. package/dist/layout-picker/index.js +66 -68
  72. package/dist/layout-picker/index.js.map +1 -1
  73. package/dist/layout-picker/ui/LayoutPicker.d.ts.map +1 -1
  74. package/dist/listbox/Listbox.d.ts +1 -1
  75. package/dist/listbox/Listbox.d.ts.map +1 -1
  76. package/dist/listbox/index.js +71 -59
  77. package/dist/listbox/index.js.map +1 -1
  78. package/dist/modal/index.js +1 -1
  79. package/dist/multi-select/index.js +2 -2
  80. package/dist/multi-select/ui/MultiSelect.d.ts +11 -1
  81. package/dist/multi-select/ui/MultiSelect.d.ts.map +1 -1
  82. package/dist/multi-select/ui/defaultRenderers.d.ts +6 -4
  83. package/dist/multi-select/ui/defaultRenderers.d.ts.map +1 -1
  84. package/dist/multi-select/ui/index.d.ts +0 -1
  85. package/dist/multi-select/ui/index.d.ts.map +1 -1
  86. package/dist/notifications/index.js +1 -1
  87. package/dist/option/CustomOptionButton.d.ts +6 -0
  88. package/dist/option/CustomOptionButton.d.ts.map +1 -0
  89. package/dist/option/Option.d.ts +14 -0
  90. package/dist/option/Option.d.ts.map +1 -0
  91. package/dist/option/OptionButton.d.ts +8 -0
  92. package/dist/option/OptionButton.d.ts.map +1 -0
  93. package/dist/option/OptionCode.d.ts +6 -0
  94. package/dist/option/OptionCode.d.ts.map +1 -0
  95. package/dist/option/OptionContent.d.ts +19 -0
  96. package/dist/option/OptionContent.d.ts.map +1 -0
  97. package/dist/option/OptionHotkey.d.ts +6 -0
  98. package/dist/option/OptionHotkey.d.ts.map +1 -0
  99. package/dist/option/OptionIcon.d.ts +6 -0
  100. package/dist/option/OptionIcon.d.ts.map +1 -0
  101. package/dist/option/OptionLink.d.ts +8 -0
  102. package/dist/option/OptionLink.d.ts.map +1 -0
  103. package/dist/option/OptionText.d.ts +6 -0
  104. package/dist/option/OptionText.d.ts.map +1 -0
  105. package/dist/option/index.d.ts +10 -0
  106. package/dist/option/index.d.ts.map +1 -0
  107. package/dist/option/index.js +112 -0
  108. package/dist/option/index.js.map +1 -0
  109. package/dist/picker/PickerClearButton.d.ts +9 -0
  110. package/dist/picker/PickerClearButton.d.ts.map +1 -0
  111. package/dist/picker/PickerOptions.d.ts +22 -0
  112. package/dist/picker/PickerOptions.d.ts.map +1 -0
  113. package/dist/picker/PickerPlaceholder.d.ts +14 -0
  114. package/dist/picker/PickerPlaceholder.d.ts.map +1 -0
  115. package/dist/picker/PickerPopup.d.ts +4 -3
  116. package/dist/picker/PickerPopup.d.ts.map +1 -1
  117. package/dist/picker/PickerSelectedToken.d.ts +7 -0
  118. package/dist/picker/PickerSelectedToken.d.ts.map +1 -0
  119. package/dist/picker/PickerTrigger.d.ts +29 -0
  120. package/dist/picker/PickerTrigger.d.ts.map +1 -0
  121. package/dist/picker/PickerTriggerActions.d.ts.map +1 -1
  122. package/dist/picker/PickerTriggerInput.d.ts +1 -2
  123. package/dist/picker/PickerTriggerInput.d.ts.map +1 -1
  124. package/dist/picker/index.d.ts +5 -0
  125. package/dist/picker/index.d.ts.map +1 -1
  126. package/dist/picker/index.js +2 -2
  127. package/dist/picker/model/extractPickerTextContent.d.ts +1 -1
  128. package/dist/picker/model/extractPickerTextContent.d.ts.map +1 -1
  129. package/dist/preset-range-date-input/index.js +1 -1
  130. package/dist/preset-select/PresetSelect.d.ts +1 -1
  131. package/dist/preset-select/PresetSelect.d.ts.map +1 -1
  132. package/dist/preset-select/index.js +1 -1
  133. package/dist/preset-select/index.js.map +1 -1
  134. package/dist/radio-button/index.js +2 -2
  135. package/dist/radio-group/index.js +1 -1
  136. package/dist/select/Select.d.ts +4 -2
  137. package/dist/select/Select.d.ts.map +1 -1
  138. package/dist/select/SelectOptionGroup.d.ts +1 -1
  139. package/dist/select/SelectOptionGroup.d.ts.map +1 -1
  140. package/dist/select/index.js +1 -1
  141. package/dist/simple-table/index.js +1 -1
  142. package/dist/slider/index.js +3 -3
  143. package/dist/state-select/StateSelect.d.ts +1 -1
  144. package/dist/state-select/StateSelect.d.ts.map +1 -1
  145. package/dist/state-select/index.js +1 -1
  146. package/dist/state-select/index.js.map +1 -1
  147. package/dist/styles.css +1 -1
  148. package/dist/switch/index.js +1 -1
  149. package/dist/table/index.js +1 -1
  150. package/dist/table-sorting/index.js +1 -1
  151. package/dist/tabs/index.js +2 -2
  152. package/dist/tag-input/index.js +2 -2
  153. package/dist/text-editor/index.js +1 -1
  154. package/dist/textarea/index.js +2 -2
  155. package/dist/toggle/index.js +1 -1
  156. package/dist/tree-select/TreeMultiSelect.d.ts.map +1 -1
  157. package/dist/tree-select/TreeNodeContent.d.ts +2 -1
  158. package/dist/tree-select/TreeNodeContent.d.ts.map +1 -1
  159. package/dist/tree-select/TreePickerBase.d.ts +4 -1
  160. package/dist/tree-select/TreePickerBase.d.ts.map +1 -1
  161. package/dist/tree-select/index.js +322 -353
  162. package/dist/tree-select/index.js.map +1 -1
  163. package/dist/tree-table/index.js +1 -1
  164. package/package.json +5 -1
  165. package/src/styles/themes/_interactive-surface.scss +67 -0
  166. package/storybook-static/assets/{Badge-Dis0WdSI.js → Badge-Wsl03RiZ.js} +1 -1
  167. package/storybook-static/assets/{Badge.stories-DKUJOyg3.js → Badge.stories-C5FJ05zx.js} +1 -1
  168. package/storybook-static/assets/{BadgeList-C_ImRsat.js → BadgeList-DHcmb--r.js} +1 -1
  169. package/storybook-static/assets/{Button-BSsRzaxX.js → Button-9Vdg-8pF.js} +1 -1
  170. package/storybook-static/assets/{Button-DxGg9rB3.js → Button-CEzU6vMY.js} +1 -1
  171. package/storybook-static/assets/{Button.stories-fHvDvt2w.js → Button.stories-BfDF7T_l.js} +1 -1
  172. package/storybook-static/assets/{CalendarView-BFcwl9Vq.js → CalendarView-DCLQ6cmR.js} +1 -1
  173. package/storybook-static/assets/{CheckBox-CSbi2BEU.js → CheckBox-BJ3STl44.js} +1 -1
  174. package/storybook-static/assets/CheckBox-DWrG0yT0.css +1 -0
  175. package/storybook-static/assets/{CheckBox-SuVeN-FY.js → CheckBox-UlZDcbgz.js} +1 -1
  176. package/storybook-static/assets/{CheckBox.stories-C6PF0zG1.js → CheckBox.stories-Pt5RIIb4.js} +1 -1
  177. package/storybook-static/assets/{Color-6AOWCN3U-DX3p6XEG.js → Color-6AOWCN3U-3Ir6qwTW.js} +1 -1
  178. package/storybook-static/assets/ContextMenu-BrYtLHPB.css +1 -0
  179. package/storybook-static/assets/{ContextMenu-f0QZPgBQ.js → ContextMenu-CU7qp0QU.js} +1 -1
  180. package/storybook-static/assets/ContextMenu-teXimUtT.js +1 -0
  181. package/storybook-static/assets/ContextMenu.stories-BhkVXZCg.js +37 -0
  182. package/storybook-static/assets/CustomOptionButton-BWYYtI_M.js +1 -0
  183. package/storybook-static/assets/{DateInput-BmL4c3wO.js → DateInput-B0xrPmg8.js} +1 -1
  184. package/storybook-static/assets/{DateInput-C0K0JvWe.js → DateInput-CRNvZef4.js} +1 -1
  185. package/storybook-static/assets/{DateInput.stories-65WMYAML.js → DateInput.stories-CrMRn_FQ.js} +1 -1
  186. package/storybook-static/assets/{DateRangePresetSelect-DdpNa-Yj.js → DateRangePresetSelect-B96SINg3.js} +1 -1
  187. package/storybook-static/assets/{DateRangePresetSelect-DVAqXJt1.js → DateRangePresetSelect-BGdt7rCz.js} +1 -1
  188. package/storybook-static/assets/DateRangePresetSelect.stories-B20eqYGr.js +19 -0
  189. package/storybook-static/assets/{Detail-1rmVP04K.js → Detail-CUNNfYz6.js} +1 -1
  190. package/storybook-static/assets/{Detail.stories-CW2YXAPy.js → Detail.stories-DPp7roXv.js} +1 -1
  191. package/storybook-static/assets/{Dialog-DcdGv_Bv.js → Dialog-B7eTlIWU.js} +1 -1
  192. package/storybook-static/assets/{Dialog-CszRheXL.js → Dialog-DdONtJUb.js} +1 -1
  193. package/storybook-static/assets/{Dialog.stories-CN9vtGuI.js → Dialog.stories-CF6Q0tJ-.js} +1 -1
  194. package/storybook-static/assets/{Disclosure-DWeZZ2i8.js → Disclosure-BI4KMSDK.js} +1 -1
  195. package/storybook-static/assets/{Disclosure.stories-pZXR5BOM.js → Disclosure.stories-BaTneJlv.js} +1 -1
  196. package/storybook-static/assets/{DisclosureGroup-BWba17wI.js → DisclosureGroup-Dx2-SHha.js} +1 -1
  197. package/storybook-static/assets/{DocsRenderer-JROSPFPF-BYN3Mg4U.js → DocsRenderer-JROSPFPF-mMjwDILp.js} +1 -1
  198. package/storybook-static/assets/{DropZone-ByDIyQgI.js → DropZone-BizNinsQ.js} +1 -1
  199. package/storybook-static/assets/{DropZone-BCe20YiO.js → DropZone-D93x3skJ.js} +1 -1
  200. package/storybook-static/assets/{DropZone.stories-CLXe7D8H.js → DropZone.stories-Dn72HUME.js} +1 -1
  201. package/storybook-static/assets/{DropdownMenu-BD-pc32j.js → DropdownMenu-Bpjyamf_.js} +1 -1
  202. package/storybook-static/assets/{ExpandableActionPanel-v-DZaEKX.js → ExpandableActionPanel-Q4xXTfPB.js} +1 -1
  203. package/storybook-static/assets/{ExpandableActionPanel.stories-BhHYM4mJ.js → ExpandableActionPanel.stories-Dr40xqrz.js} +1 -1
  204. package/storybook-static/assets/{Flex-DukB58MF.js → Flex-Qj0CmbNT.js} +1 -1
  205. package/storybook-static/assets/{Flex.stories-DQmoW5jb.js → Flex.stories-CMB4ZAgy.js} +1 -1
  206. package/storybook-static/assets/{FloatingPopover-fnwAyZil.js → FloatingPopover-jH57LEGX.js} +1 -1
  207. package/storybook-static/assets/{FormattedTableCell-CK1yXePp.js → FormattedTableCell-vbqJ5gib.js} +1 -1
  208. package/storybook-static/assets/{Grid-BoLaxbR_.js → Grid-AZBb1w5n.js} +1 -1
  209. package/storybook-static/assets/{Grid.stories-CSuOTbao.js → Grid.stories-BaeYzAP-.js} +1 -1
  210. package/storybook-static/assets/{ImageCropper.stories-BRi_qlO4.js → ImageCropper.stories-Da9IaNLO.js} +1 -1
  211. package/storybook-static/assets/{ImageRenderer-BiV2g53B.js → ImageRenderer-CNFqjqvE.js} +1 -1
  212. package/storybook-static/assets/{ImageRenderer.stories-Da7QE7_Q.js → ImageRenderer.stories-8pPWqLHi.js} +1 -1
  213. package/storybook-static/assets/{ImageView.stories-DSFBxOa6.js → ImageView.stories-P0OBwcHv.js} +1 -1
  214. package/storybook-static/assets/{ImageViewer.stories-D2rcovap.js → ImageViewer.stories-A8gBQaCk.js} +2 -2
  215. package/storybook-static/assets/{ImageViewerRuntime-B2CS1UFL.js → ImageViewerRuntime-C2LHl9xa.js} +1 -1
  216. package/storybook-static/assets/{Input-BIy4zhlA.js → Input-LI8Ij2VV.js} +1 -1
  217. package/storybook-static/assets/{Input-CVs7SVMJ.js → Input-X5FLaExp.js} +1 -1
  218. package/storybook-static/assets/{Input.stories-BBXrateo.js → Input.stories-r4hSNMWI.js} +1 -1
  219. package/storybook-static/assets/{InputDateTime-VUiW2Znv.js → InputDateTime-B9IQGLxQ.js} +1 -1
  220. package/storybook-static/assets/{InputDateTime.stories-lqECZY7T.js → InputDateTime.stories-t-IFoW6A.js} +1 -1
  221. package/storybook-static/assets/{InputFile-DEeRFq2f.js → InputFile-YhjpMsir.js} +1 -1
  222. package/storybook-static/assets/{InputFile-D0aHVW1q.js → InputFile-yUYuRSfc.js} +1 -1
  223. package/storybook-static/assets/{InputFile.stories-9fBhIus4.js → InputFile.stories-DvMCOp6p.js} +1 -1
  224. package/storybook-static/assets/{InputFiles-DTy038xW.js → InputFiles-Dq9QZAWM.js} +1 -1
  225. package/storybook-static/assets/{InputFiles-C_KIqiN9.js → InputFiles-b6Ne7Ph9.js} +1 -1
  226. package/storybook-static/assets/{InputFiles.stories-CspkI6-Y.js → InputFiles.stories-Q7rdTg-e.js} +1 -1
  227. package/storybook-static/assets/{InputFilesList-BQdSFOI1.js → InputFilesList-u59R9lsq.js} +1 -1
  228. package/storybook-static/assets/{InputImage-VJaqApEh.js → InputImage-BTap4i1_.js} +1 -1
  229. package/storybook-static/assets/{InputImage-C0kyUtT0.js → InputImage-_b_bmfXz.js} +1 -1
  230. package/storybook-static/assets/{InputImage.stories-DKXeva5i.js → InputImage.stories-F08TWbxk.js} +1 -1
  231. package/storybook-static/assets/{InteractiveComponents-B8zzCcZ_.js → InteractiveComponents-CpJd5e3W.js} +1 -1
  232. package/storybook-static/assets/{InteractiveComponents.stories-DP0Jma43.js → InteractiveComponents.stories-CM9yNzcF.js} +1 -1
  233. package/storybook-static/assets/LayoutPicker-8Q1MpMYR.js +376 -0
  234. package/storybook-static/assets/LayoutPicker-BY4-fUQa.css +1 -0
  235. package/storybook-static/assets/{LayoutPicker-BpcPcCDz.js → LayoutPicker-vwoAIGrk.js} +1 -1
  236. package/storybook-static/assets/{LayoutPicker.stories-POpVHww7.js → LayoutPicker.stories-BW8B8i8S.js} +1 -1
  237. package/storybook-static/assets/{Listbox-gHitzePa.js → Listbox-Cf_DMAva.js} +1 -1
  238. package/storybook-static/assets/Listbox-D7r9R1Of.js +1 -0
  239. package/storybook-static/assets/{Listbox.stories-Dw3IdYZA.js → Listbox.stories-CxYyfkFU.js} +1 -1
  240. package/storybook-static/assets/{Modal-CY7qfD1u.js → Modal-BaprwyBJ.js} +1 -1
  241. package/storybook-static/assets/{Modal.stories-Boa7oW-a.js → Modal.stories-Rn_bgNdm.js} +1 -1
  242. package/storybook-static/assets/{ModalManagerProvider-GYXaQe-7.js → ModalManagerProvider-BoJChAx2.js} +1 -1
  243. package/storybook-static/assets/MultiSelect-CILXhKyj.js +2 -0
  244. package/storybook-static/assets/{MultiSelect-DToMWi-I.js → MultiSelect-CU7avopN.js} +1 -1
  245. package/storybook-static/assets/MultiSelect-DI_UD1B-.css +1 -0
  246. package/storybook-static/assets/{MultiSelect.stories-DLuXOl9Q.js → MultiSelect.stories-DFtFExi3.js} +1 -1
  247. package/storybook-static/assets/{NoData-Bzj7vNCz.js → NoData-u6T3MI60.js} +1 -1
  248. package/storybook-static/assets/{NotificationsHost-Bs93X8Nv.js → NotificationsHost-63IJh9Kr.js} +1 -1
  249. package/storybook-static/assets/{NotificationsHost.stories-DxVOVOf8.js → NotificationsHost.stories-CRKVOYWB.js} +1 -1
  250. package/storybook-static/assets/{ODataMultiSelect-Dh33YJP6.js → ODataMultiSelect-tfqbyVgv.js} +1 -1
  251. package/storybook-static/assets/ODataMultiSelect.stories-DuC1gg-Q.js +126 -0
  252. package/storybook-static/assets/{ODataSelect-lpN9sKth.js → ODataSelect-0ax3OIQy.js} +1 -1
  253. package/storybook-static/assets/ODataSelect.stories-aGZEvBIO.js +148 -0
  254. package/storybook-static/assets/{ODataTreeMultiSelect-DFY2FJBX.js → ODataTreeMultiSelect-C4ZN4DaL.js} +1 -1
  255. package/storybook-static/assets/ODataTreeMultiSelect.stories-BThoYYsE.js +74 -0
  256. package/storybook-static/assets/{ODataTreeSelect-DdniMRRE.js → ODataTreeSelect-DvrUSJsi.js} +1 -1
  257. package/storybook-static/assets/ODataTreeSelect.stories-B9582VZ6.js +46 -0
  258. package/storybook-static/assets/{OneStepScroller-CHvIHlYx.js → OneStepScroller-BoIh7KcH.js} +1 -1
  259. package/storybook-static/assets/Option-CJBK9i2B.css +1 -0
  260. package/storybook-static/assets/Option-DqmRqyOQ.js +10 -0
  261. package/storybook-static/assets/OptionButton-CQVIwI2y.js +1 -0
  262. package/storybook-static/assets/{PeriodSelect-BgAak8GG.js → PeriodSelect-CdTxjZC3.js} +1 -1
  263. package/storybook-static/assets/{PeriodSelect-T1qaj11S.js → PeriodSelect-Dw3EsMrL.js} +1 -1
  264. package/storybook-static/assets/{PeriodSelect.stories-DYEtD47p.js → PeriodSelect.stories-DYinImmY.js} +1 -1
  265. package/storybook-static/assets/PickerTriggerActions-B0z5qfFF.js +1 -0
  266. package/storybook-static/assets/{Popover-DQKHL6wc.js → Popover-0xwjVe6K.js} +1 -1
  267. package/storybook-static/assets/{Popover-BVP-wMdK.js → Popover-ijEoQcUp.js} +1 -1
  268. package/storybook-static/assets/{Popover.stories-Pt4-7Aof.js → Popover.stories-CMNjjwu5.js} +1 -1
  269. package/storybook-static/assets/{PresetRangeDateInput-DQ3rlCp5.js → PresetRangeDateInput-CdvdO4mf.js} +1 -1
  270. package/storybook-static/assets/{PresetRangeDateInput-C4_NegG_.js → PresetRangeDateInput-DysqM_NV.js} +1 -1
  271. package/storybook-static/assets/{PresetRangeDateInput.stories-3AzmySZv.js → PresetRangeDateInput.stories-nVojLSRm.js} +1 -1
  272. package/storybook-static/assets/{PresetSelect-BTh53LoO.js → PresetSelect-mjBaMbt6.js} +1 -1
  273. package/storybook-static/assets/{RadioButton-Ci25eUL_.js → RadioButton-CVGKMhGV.js} +1 -1
  274. package/storybook-static/assets/{RadioButton-BfBSX73Y.js → RadioButton-jB744vXz.js} +1 -1
  275. package/storybook-static/assets/{RadioButton.stories-JVGXFlz8.js → RadioButton.stories-CJsU4D3L.js} +1 -1
  276. package/storybook-static/assets/{RadioGroup-CL7EHd6O.js → RadioGroup-BGF3aoOc.js} +1 -1
  277. package/storybook-static/assets/{RadioGroup-CW39hD_-.js → RadioGroup-DbqvBGw3.js} +1 -1
  278. package/storybook-static/assets/{RadioGroup.stories-MS9Jl6AT.js → RadioGroup.stories-Bkny6-9V.js} +1 -1
  279. package/storybook-static/assets/{Scrollable-Bo4197LC.js → Scrollable-DZp3ByoS.js} +1 -1
  280. package/storybook-static/assets/{Select-CxQqH8H5.js → Select-BJcT2K35.js} +1 -1
  281. package/storybook-static/assets/Select-CcuhYAW8.js +12 -0
  282. package/storybook-static/assets/{Select.stories-DfjNWXba.js → Select.stories-BowB7kdj.js} +1 -1
  283. package/storybook-static/assets/{SerializableSelect-BktENdyg.js → SerializableSelect-DRczsfxk.js} +1 -1
  284. package/storybook-static/assets/{SerializableSelect.stories-B8zxcu66.js → SerializableSelect.stories-BcYeXF_R.js} +1 -1
  285. package/storybook-static/assets/{SingleDateTimeInput-DZBRm3dM.js → SingleDateTimeInput-HDsmYVP2.js} +1 -1
  286. package/storybook-static/assets/{SingleDateTimeInput-DvpU1DkI.js → SingleDateTimeInput-pHA1ci5g.js} +1 -1
  287. package/storybook-static/assets/{SingleDateTimeInput.stories-Bku5Zc05.js → SingleDateTimeInput.stories-KUrLpnh_.js} +1 -1
  288. package/storybook-static/assets/{Slider-BN2xXBOi.js → Slider-DaJGOEf-.js} +1 -1
  289. package/storybook-static/assets/{Slider-BJkB6IoW.js → Slider-XnQRU_In.js} +1 -1
  290. package/storybook-static/assets/{Slider.stories-CM3yNojO.js → Slider.stories-ByS4Bo7v.js} +1 -1
  291. package/storybook-static/assets/{SliderInput-CPX2bJK3.js → SliderInput-BjyCba0D.js} +1 -1
  292. package/storybook-static/assets/{SliderInput-2ZiuvbpQ.js → SliderInput-Dan5pyQh.js} +1 -1
  293. package/storybook-static/assets/{SliderInput.stories-dJX-tRtA.js → SliderInput.stories-d4F5pqct.js} +1 -1
  294. package/storybook-static/assets/{Sortable-Bkr-xnO4.js → Sortable-Bdzx4D0R.js} +1 -1
  295. package/storybook-static/assets/{Sortable.stories-BPEg99e5.js → Sortable.stories-BIhgYQ1m.js} +1 -1
  296. package/storybook-static/assets/{Splitter-D4en_f5n.js → Splitter-B3hepEkw.js} +1 -1
  297. package/storybook-static/assets/{Splitter.stories-Cynn_kHV.js → Splitter.stories-L6R3ImTr.js} +1 -1
  298. package/storybook-static/assets/{StateSelect-BgbwMGGc.js → StateSelect-C4oHSG2B.js} +1 -1
  299. package/storybook-static/assets/{StateSelect-PcH0VuO_.js → StateSelect-CylM2NVF.js} +3 -3
  300. package/storybook-static/assets/{StateSelect.stories-CShqVH9Y.js → StateSelect.stories-Djw_nuLJ.js} +1 -1
  301. package/storybook-static/assets/{StringToggle.stories-CypR3oB_.js → StringToggle.stories-pqZzNPRQ.js} +1 -1
  302. package/storybook-static/assets/{Switch-D-cSDh8j.js → Switch-BK5DQYpV.js} +1 -1
  303. package/storybook-static/assets/{Switch-BVN6TcVZ.js → Switch-BkHwzkeD.js} +1 -1
  304. package/storybook-static/assets/{Switch.stories-C0s7gvBf.js → Switch.stories-BG1MHajd.js} +1 -1
  305. package/storybook-static/assets/{Table-CwXJDDe6.js → Table-BQPiMPmF.js} +1 -1
  306. package/storybook-static/assets/{Table.stories-vqttnROX.js → Table.stories-b5gmGDu_.js} +1 -1
  307. package/storybook-static/assets/{Tabs-BRSEvQpk.js → Tabs-B13rDpZt.js} +1 -1
  308. package/storybook-static/assets/{Tabs.stories-R_7jiTQc.js → Tabs.stories-D0sg-2Nx.js} +1 -1
  309. package/storybook-static/assets/{TabsBox-CqSxAUdJ.js → TabsBox-DZwTlYNa.js} +1 -1
  310. package/storybook-static/assets/{TagInput-C3ahaF-B.js → TagInput-RYhIr0kM.js} +1 -1
  311. package/storybook-static/assets/{TagInput.stories-C3O2gBUY.js → TagInput.stories-7iTWdjmj.js} +1 -1
  312. package/storybook-static/assets/{Text-b8fMr5Hd.js → Text-5-YdhIB8.js} +1 -1
  313. package/storybook-static/assets/{Textarea-CCgxNL6F.js → Textarea-0L2M-xFG.js} +1 -1
  314. package/storybook-static/assets/{Textarea-BDL_MwcM.js → Textarea-pQp1ju2W.js} +1 -1
  315. package/storybook-static/assets/{Textarea.stories-kc_LXBix.js → Textarea.stories-pJFWbXcf.js} +1 -1
  316. package/storybook-static/assets/{TimePanel-BCotjEKQ.js → TimePanel-DlfW-4Rv.js} +1 -1
  317. package/storybook-static/assets/{TimePanel.stories-B8paqA-_.js → TimePanel.stories-DpXHb66k.js} +1 -1
  318. package/storybook-static/assets/{Toggle-CT4IyZPI.js → Toggle-CwgQ0NbP.js} +1 -1
  319. package/storybook-static/assets/{Toggle-CbsKNs_c.js → Toggle-Q04RQyAN.js} +1 -1
  320. package/storybook-static/assets/{Toggle.stories-YsQZk4DA.js → Toggle.stories-DOYwhorJ.js} +1 -1
  321. package/storybook-static/assets/{TreeMultiSelect-DRLoUCXF.js → TreeMultiSelect--Z9jdUna.js} +1 -1
  322. package/storybook-static/assets/TreeMultiSelect-CcBXMmXH.js +1 -0
  323. package/storybook-static/assets/{TreeMultiSelect.stories-CV65ZVUo.js → TreeMultiSelect.stories-CSlNe1qA.js} +1 -1
  324. package/storybook-static/assets/TreePickerBase-B6DED6Hz.css +1 -0
  325. package/storybook-static/assets/TreePickerBase-BBHbtNFV.js +34 -0
  326. package/storybook-static/assets/{TreeSelect-FhEH7bMx.js → TreeSelect-BMcChauO.js} +1 -1
  327. package/storybook-static/assets/{TreeSelect-CsYGUC6s.js → TreeSelect-DMC-rviy.js} +1 -1
  328. package/storybook-static/assets/TreeSelect.stories-68LYkP9A.js +32 -0
  329. package/storybook-static/assets/{TreeTable-Bajr80HM.js → TreeTable-DNArfw0m.js} +1 -1
  330. package/storybook-static/assets/{TreeTable.stories-DDCGoB2u.js → TreeTable.stories-GybZTfJf.js} +1 -1
  331. package/storybook-static/assets/{async-CWrFMaux.js → async-BpUNPciD.js} +1 -1
  332. package/storybook-static/assets/{blocks-CrYcG0WD.js → blocks-CdL0FBl-.js} +3 -3
  333. package/storybook-static/assets/{browserAndReact-DSxaVMjM.js → browserAndReact-DJiCma8q.js} +1 -1
  334. package/storybook-static/assets/{check-Cnuffb78.js → check-Bff_8tRJ.js} +1 -1
  335. package/storybook-static/assets/{chevron-down-ChPfAmdy.js → chevron-down-D9beWxJi.js} +1 -1
  336. package/storybook-static/assets/{chevron-left-CEB5eAVk.js → chevron-left-0YewhZTT.js} +1 -1
  337. package/storybook-static/assets/{chevron-right-DHw2yjh1.js → chevron-right-_-7FrDV5.js} +1 -1
  338. package/storybook-static/assets/{chunk-W22LQPXL-i9Cm4c-p.js → chunk-W22LQPXL-O2d-a7Cd.js} +1 -1
  339. package/storybook-static/assets/{circle-alert-B0REyiCt.js → circle-alert-Ch96LToC.js} +1 -1
  340. package/storybook-static/assets/{circle-check-D6WZ24rj.js → circle-check-a4WDWsNJ.js} +1 -1
  341. package/storybook-static/assets/{components-BCe0UvQp.js → components-DdhcMCr2.js} +3 -3
  342. package/storybook-static/assets/{contextMenu-De66k1si.js → contextMenu-BGjkv4UB.js} +1 -1
  343. package/storybook-static/assets/defaultRenderers-V5HI39JH.js +1 -0
  344. package/storybook-static/assets/{download-C1DiezfA.js → download-CX1IvM3C.js} +1 -1
  345. package/storybook-static/assets/{filesAndExcel-BVMGH9OS.js → filesAndExcel-dK5pwBOD.js} +1 -1
  346. package/storybook-static/assets/{floating-ui.react-BswSORmJ.js → floating-ui.react-CxLdvcYS.js} +1 -1
  347. package/storybook-static/assets/{formatters-D27XMzPd.js → formatters-j9sx7DvH.js} +1 -1
  348. package/storybook-static/assets/{formatters-runtime-B_C8yQOS.js → formatters-runtime-CHMYu4ZC.js} +1 -1
  349. package/storybook-static/assets/{foundationLib-BmwSyi1e.js → foundationLib-C_06ZSSf.js} +1 -1
  350. package/storybook-static/assets/{hooks-CXlVTo5i.js → hooks-Bykafh9C.js} +1 -1
  351. package/storybook-static/assets/{iframe-Baz8D-0E.css → iframe-BIt4o49Q.css} +1 -1
  352. package/storybook-static/assets/{iframe-Bbj4T0X2.js → iframe-CIzkWNwp.js} +3 -3
  353. package/storybook-static/assets/iframe-sQ6b5u6U.js +1 -0
  354. package/storybook-static/assets/{info-D_YlGthq.js → info-DmoUv3Za.js} +1 -1
  355. package/storybook-static/assets/{odata-CDuIqs1a.js → odata-BOmzCjsk.js} +1 -1
  356. package/storybook-static/assets/{odataAndTables-D4R4KHZc.js → odataAndTables-CCmlxLmc.js} +1 -1
  357. package/storybook-static/assets/{odataFetchFn-Sw0FicJe.js → odataFetchFn-CTQe0sIR.js} +1 -1
  358. package/storybook-static/assets/{odataStoryFixtures-z1HaQHNb.js → odataStoryFixtures-BSZ-qA-M.js} +2 -2
  359. package/storybook-static/assets/{persisted-TRx901TV.js → persisted--WJ7KKPs.js} +1 -1
  360. package/storybook-static/assets/{pureUtilities-B8KVYaZx.js → pureUtilities-GyB4PF6P.js} +1 -1
  361. package/storybook-static/assets/{react-CTGFMmtV.js → react-BBjpR4Fr.js} +1 -1
  362. package/storybook-static/assets/{refresh-cw-BuhtDwqw.js → refresh-cw-Bc5fTdGR.js} +1 -1
  363. package/storybook-static/assets/{runtimeAndState-DDPlVhTs.js → runtimeAndState-B2HA42QC.js} +1 -1
  364. package/storybook-static/assets/{settings-2-DESCgIcH.js → settings-2-Cm9uvgs-.js} +1 -1
  365. package/storybook-static/assets/{sortable-BxGw7kip.js → sortable-U9GPAzJm.js} +1 -1
  366. package/storybook-static/assets/{syntaxhighlighter-T5IQBZDB-B0d7LXTh.js → syntaxhighlighter-T5IQBZDB-Do8Zvv4y.js} +1 -1
  367. package/storybook-static/assets/{trash-2-D0Ed43_3.js → trash-2-D6H0PpPX.js} +1 -1
  368. package/storybook-static/assets/{triangle-alert-CpgcfVSf.js → triangle-alert-5r13MQCo.js} +1 -1
  369. package/storybook-static/assets/{ui-BMhMvV6y.css → ui-CatTcSJL.css} +1 -1
  370. package/storybook-static/assets/ui.module-D4CuGr8r.js +1 -0
  371. package/storybook-static/assets/{uiClasses-DiXn3Hc-.js → uiClasses-CVGbL980.js} +1 -1
  372. package/storybook-static/assets/{useODataSelectBase-CFR7eJND.js → useODataSelectBase-bY7vnHqq.js} +1 -1
  373. package/storybook-static/assets/{useODataTreeData-DgEKknmd.js → useODataTreeData-Dsp1d8h5.js} +1 -1
  374. package/storybook-static/assets/usePickerQuery-BfayEntP.js +1 -0
  375. package/storybook-static/assets/usePickerTriggerController-B1Mub3-v.js +6 -0
  376. package/storybook-static/assets/{x-_GQ6nyHW.js → x-DpV1OV1-.js} +1 -1
  377. package/storybook-static/iframe.html +3 -3
  378. package/storybook-static/project.json +1 -1
  379. package/dist/chunks/context-menu-6nJkPmKV.js +0 -535
  380. package/dist/chunks/context-menu-6nJkPmKV.js.map +0 -1
  381. package/dist/chunks/multi-select-Clsst6DE.js +0 -538
  382. package/dist/chunks/multi-select-Clsst6DE.js.map +0 -1
  383. package/dist/chunks/picker-CrRdwdA5.js +0 -340
  384. package/dist/chunks/picker-CrRdwdA5.js.map +0 -1
  385. package/dist/chunks/select-B0xc6g81.js +0 -355
  386. package/dist/chunks/select-B0xc6g81.js.map +0 -1
  387. package/dist/chunks/ui.module-DHVTOqZ0.js.map +0 -1
  388. package/dist/chunks/useODataSelectBase-Bq36Wp1U.js +0 -141
  389. package/dist/chunks/useODataSelectBase-Bq36Wp1U.js.map +0 -1
  390. package/dist/multi-select/ui/MultiSelectOption.d.ts +0 -14
  391. package/dist/multi-select/ui/MultiSelectOption.d.ts.map +0 -1
  392. package/dist/multi-select/ui/MultiSelectToken.d.ts +0 -9
  393. package/dist/multi-select/ui/MultiSelectToken.d.ts.map +0 -1
  394. package/storybook-static/assets/CheckBox-BnO90VKX.css +0 -1
  395. package/storybook-static/assets/ContextMenu-BgzIzwzM.css +0 -1
  396. package/storybook-static/assets/ContextMenu-BhGu3QoC.js +0 -1
  397. package/storybook-static/assets/ContextMenu.stories-V9d5mjak.js +0 -37
  398. package/storybook-static/assets/DateRangePresetSelect.stories-BGgd7TOu.js +0 -19
  399. package/storybook-static/assets/LayoutPicker-DjUZ5y7M.js +0 -376
  400. package/storybook-static/assets/LayoutPicker-DudPIiwb.css +0 -1
  401. package/storybook-static/assets/Listbox-Cg1OczYK.js +0 -1
  402. package/storybook-static/assets/MultiSelect-D8qN-i5f.js +0 -2
  403. package/storybook-static/assets/ODataMultiSelect.stories-DUmFRMTU.js +0 -139
  404. package/storybook-static/assets/ODataSelect.stories-BkFs5uIY.js +0 -161
  405. package/storybook-static/assets/ODataTreeMultiSelect.stories-B_Izm4eH.js +0 -87
  406. package/storybook-static/assets/ODataTreeSelect.stories-DxNhuLVU.js +0 -55
  407. package/storybook-static/assets/PickerSelectionToolbar-DWtGYc4E.js +0 -2
  408. package/storybook-static/assets/PickerTriggerActions-BIH8_o_b.js +0 -1
  409. package/storybook-static/assets/Select-CO4ZHP9h.css +0 -1
  410. package/storybook-static/assets/Select-DBsWg0wv.js +0 -12
  411. package/storybook-static/assets/SelectOptionContent-Bie2pzia.js +0 -1
  412. package/storybook-static/assets/TreeMultiSelect-CmAa_Gin.js +0 -1
  413. package/storybook-static/assets/TreePickerBase-hyMFakp7.css +0 -1
  414. package/storybook-static/assets/TreePickerBase-rB-Q9Uwf.js +0 -24
  415. package/storybook-static/assets/TreeSelect.stories-Cw4IkrNG.js +0 -40
  416. package/storybook-static/assets/defaultRenderers-B7PDT-nL.css +0 -1
  417. package/storybook-static/assets/defaultRenderers-D0Z-7t0H.js +0 -1
  418. package/storybook-static/assets/iframe-DLZ4F2nx.js +0 -1
  419. package/storybook-static/assets/ui.module-CiLQZm_L.js +0 -1
  420. package/storybook-static/assets/usePickerQuery-Be3WSeUa.js +0 -1
  421. package/storybook-static/assets/usePickerTriggerController-BZZv-jDV.js +0 -1
  422. package/storybook-static/assets/usePickerTriggerController-DzBkX15M.css +0 -1
  423. /package/storybook-static/assets/{CheckBox.module-BNQm6HXI.js → CheckBox.module-CoYygdZx.js} +0 -0
@@ -1,535 +0,0 @@
1
- import { t as e } from "./ui.module-DHVTOqZ0.js";
2
- import { Children as t, cloneElement as n, createContext as r, useCallback as i, useContext as a, useEffect as o, useMemo as s, useRef as c, useState as l } from "react";
3
- import { cn as u } from "@ryuzaki13/react-foundation-lib/utils";
4
- import { autoUpdate as d, flip as f, offset as p, shift as m, useFloating as h } from "@floating-ui/react";
5
- import { useClickOutside as g, useEscapeDismiss as _, useOverlayFocus as v } from "@ryuzaki13/react-foundation-lib/dom";
6
- import { jsx as y, jsxs as b } from "react/jsx-runtime";
7
- import { createMissingContextError as x } from "@ryuzaki13/react-foundation-lib/error";
8
- import { createPortal as S } from "react-dom";
9
- import { AnimatePresence as C, motion as w } from "motion/react";
10
- import { closeMenu as T, createVirtualAnchor as E, getMenuPointFromEvent as D, getMenuPointFromRect as O, initialMenuState as k, openMenu as A } from "@ryuzaki13/react-foundation-lib/context-menu";
11
- //#region src/context-menu/components/helpers.ts
12
- function j(e, t) {
13
- if (e) {
14
- if (typeof e == "function") {
15
- e(t);
16
- return;
17
- }
18
- e.current = t;
19
- }
20
- }
21
- function M(e, t) {
22
- return (n) => {
23
- e?.(n), !n.defaultPrevented && t(n);
24
- };
25
- }
26
- function N(e, t) {
27
- return (n) => {
28
- e?.(n), !n.defaultPrevented && t(n);
29
- };
30
- }
31
- //#endregion
32
- //#region src/context-menu/components/MenuContext.tsx
33
- var P = r(null);
34
- function F() {
35
- let e = a(P);
36
- if (!e) throw x({
37
- hookName: "useMenuContext",
38
- providerName: "MenuRoot"
39
- });
40
- return e;
41
- }
42
- //#endregion
43
- //#region src/context-menu/components/ContextMenuTrigger.tsx
44
- var I = ({ children: e }) => {
45
- let { mode: t, open: r, registerTriggerElement: i, onTriggerContextMenu: a, onTriggerKeyDown: o } = F();
46
- if (t !== "contextmenu") throw Error("ContextMenu.Trigger must be used within <ContextMenu>");
47
- return n(e, {
48
- ref: (t) => {
49
- let n = e.props.ref;
50
- j(n, t), i(t);
51
- },
52
- "aria-haspopup": "menu",
53
- "aria-expanded": r,
54
- onContextMenu: M(e.props.onContextMenu, a),
55
- onKeyDown: N(e.props.onKeyDown, o)
56
- });
57
- }, L = {
58
- menuPanel: "nPfxbm",
59
- menuScroller: "T8GF31",
60
- menuItem: "XM9raj",
61
- menuItemIcon: "JY0XKk",
62
- menuItemText: "Jj7pGe",
63
- menuItemHotKey: "o7v3XA",
64
- radialPanel: "f9wo9l",
65
- radialRing: "_9IPwGF",
66
- radialCenterButton: "CAmmlz",
67
- radialCenterButtonText: "_5KEBWR",
68
- radialItems: "L28onY",
69
- radialItemSlot: "Pg-1Y3",
70
- radialItem: "ObIrS2",
71
- radialItemIcon: "_0jf5vt",
72
- radialItemText: "zKwsQF"
73
- }, R = ({ children: e, className: t, closeOnOutside: n = !0, closeOnEscape: r = !0, disableOutsideClick: a = !1, restoreFocus: o = !0 }) => {
74
- let { open: s, floatingStyles: c, floatingRef: l, triggerRef: d, setFloating: f, closeMenu: p } = F(), m = i(() => {
75
- let e = l.current;
76
- return e ? Array.from(e.querySelectorAll("[data-menu-item=\"true\"]:not([data-disabled=\"true\"])")) : [];
77
- }, [l]);
78
- v({
79
- active: s,
80
- initialFocus: (e) => m()[0] ?? e,
81
- restoreFocus: o,
82
- restoreFocusTarget: () => d.current,
83
- containerRef: l
84
- }), _({
85
- active: s,
86
- enabled: r,
87
- onDismiss: p,
88
- containerRef: l
89
- });
90
- let h = i(() => {
91
- !s || a || n && p();
92
- }, [
93
- s,
94
- a,
95
- n,
96
- p
97
- ]);
98
- g([l, d], h);
99
- let b = i((e) => {
100
- let t = m();
101
- if (t.length === 0) return;
102
- let n = document.activeElement, r = n ? t.indexOf(n) : -1;
103
- if (e.key === "ArrowDown") {
104
- e.preventDefault(), t[r >= 0 ? (r + 1) % t.length : 0]?.focus();
105
- return;
106
- }
107
- if (e.key === "ArrowUp") {
108
- e.preventDefault(), t[r >= 0 ? (r - 1 + t.length) % t.length : t.length - 1]?.focus();
109
- return;
110
- }
111
- if (e.key === "Home") {
112
- e.preventDefault(), t[0]?.focus();
113
- return;
114
- }
115
- e.key === "End" && (e.preventDefault(), t[t.length - 1]?.focus());
116
- }, [m]);
117
- return typeof document > "u" ? null : S(/* @__PURE__ */ y(C, { children: s && /* @__PURE__ */ y(w.div, {
118
- ref: f,
119
- style: c,
120
- role: "menu",
121
- tabIndex: -1,
122
- className: u(L.menuPanel, t),
123
- onKeyDown: b,
124
- initial: {
125
- opacity: 0,
126
- scale: .96,
127
- y: -2
128
- },
129
- animate: {
130
- opacity: 1,
131
- scale: 1,
132
- y: 0
133
- },
134
- exit: {
135
- opacity: 0,
136
- scale: .96,
137
- y: -2
138
- },
139
- transition: {
140
- duration: .14,
141
- ease: "easeOut"
142
- },
143
- children: /* @__PURE__ */ y("div", {
144
- className: u(L.menuScroller, "scrollable"),
145
- children: typeof e == "function" ? e({ closeMenu: p }) : e
146
- })
147
- }) }), document.body);
148
- }, z = ({ children: t, className: n }) => /* @__PURE__ */ y("div", {
149
- className: u(e.uiPopupGroupLabel, n),
150
- children: t
151
- }), B = ({ children: t, icon: n, hotKey: r, className: a, disabled: o, href: s, target: c, rel: l, closeOnSelect: d = !0, onSelect: f }) => {
152
- let { closeMenu: p } = F(), m = i((e) => {
153
- if (o) {
154
- e.preventDefault(), e.stopPropagation();
155
- return;
156
- }
157
- f?.(e), !e.defaultPrevented && d && p();
158
- }, [
159
- o,
160
- f,
161
- d,
162
- p
163
- ]), h = u(e.uiPopupOption, L.menuItem, a);
164
- return s ? /* @__PURE__ */ b("a", {
165
- href: s,
166
- target: c,
167
- rel: l,
168
- role: "menuitem",
169
- tabIndex: -1,
170
- "aria-disabled": o,
171
- "data-menu-item": "true",
172
- "data-disabled": o ? "true" : void 0,
173
- "data-ui": "context-menu-item",
174
- "data-action": "select-context-menu-item",
175
- className: h,
176
- onClick: m,
177
- children: [
178
- n && /* @__PURE__ */ y("span", {
179
- className: u(e.uiPopupOptionIcon, L.menuItemIcon),
180
- children: n
181
- }),
182
- /* @__PURE__ */ y("span", {
183
- className: u(e.uiOptionText, L.menuItemText),
184
- children: t
185
- }),
186
- r && /* @__PURE__ */ y("kbd", {
187
- className: u(e.keyboard, L.menuItemHotKey),
188
- children: r
189
- })
190
- ]
191
- }) : /* @__PURE__ */ b("button", {
192
- type: "button",
193
- role: "menuitem",
194
- tabIndex: -1,
195
- disabled: o,
196
- "data-menu-item": "true",
197
- "data-disabled": o ? "true" : void 0,
198
- "data-ui": "context-menu-item",
199
- "data-action": "select-context-menu-item",
200
- className: h,
201
- onClick: m,
202
- children: [
203
- n && /* @__PURE__ */ y("span", {
204
- className: u(e.uiPopupOptionIcon, L.menuItemIcon),
205
- children: n
206
- }),
207
- /* @__PURE__ */ y("span", {
208
- className: u(e.uiOptionText, L.menuItemText),
209
- children: t
210
- }),
211
- r && /* @__PURE__ */ y("kbd", {
212
- className: u(e.keyboard, L.menuItemHotKey),
213
- children: r
214
- })
215
- ]
216
- });
217
- }, V = ({ children: e, mode: t, placement: n = t === "click" ? "bottom-start" : "right-start", open: r, defaultOpen: a, onOpenChange: o }) => {
218
- let [u, g] = l(k), [_, v] = l(a ?? !1), b = r !== void 0, x = b ? r : _, S = c(null), { refs: C, floatingStyles: w, update: j } = h({
219
- placement: n,
220
- strategy: t === "contextmenu" ? "fixed" : "absolute",
221
- transform: !1,
222
- middleware: [
223
- p(6),
224
- f({ padding: 8 }),
225
- m({ padding: 8 })
226
- ],
227
- whileElementsMounted: d
228
- }), M = i((e) => {
229
- b || v(e), o?.(e), e || g((e) => T(e));
230
- }, [b, o]), N = i(() => {
231
- M(!1);
232
- }, [M]), F = i((e, t) => {
233
- C.setReference(e), g(A({
234
- source: t,
235
- anchor: {
236
- type: "element",
237
- element: e
238
- }
239
- })), M(!0);
240
- }, [C, M]), I = i((e, t, n) => {
241
- C.setReference(E(e, n)), g(A({
242
- source: t,
243
- anchor: {
244
- type: "point",
245
- point: e,
246
- contextElement: n
247
- }
248
- })), M(!0), j();
249
- }, [
250
- C,
251
- M,
252
- j
253
- ]), L = i((e) => {
254
- S.current = e, t === "click" && C.setReference(e);
255
- }, [t, C]), R = i((e) => {
256
- if (t !== "click") return;
257
- let n = e.currentTarget;
258
- if (x && u.anchor?.type === "element" && u.anchor.element === n) {
259
- N();
260
- return;
261
- }
262
- F(n, "click");
263
- }, [
264
- t,
265
- x,
266
- u.anchor,
267
- N,
268
- F
269
- ]), z = i((e) => {
270
- if (t !== "contextmenu") return;
271
- e.preventDefault();
272
- let n = e.currentTarget, r = D(e);
273
- I(r, "contextmenu", n);
274
- }, [t, I]), B = i((e) => {
275
- if (!(e.key === "ContextMenu" || e.shiftKey && e.key === "F10")) return;
276
- e.preventDefault();
277
- let n = e.currentTarget;
278
- if (t === "click") {
279
- F(n, "keyboard");
280
- return;
281
- }
282
- let r = O(n.getBoundingClientRect());
283
- I(r, "keyboard", n);
284
- }, [
285
- t,
286
- F,
287
- I
288
- ]), V = x && u.anchor !== null, H = s(() => {
289
- if (!u.anchor) return null;
290
- if (u.anchor.type === "point") return u.anchor.point;
291
- let e = u.anchor.element.getBoundingClientRect();
292
- return O(e);
293
- }, [u.anchor]), U = s(() => ({
294
- mode: t,
295
- open: V,
296
- openSource: u.source,
297
- anchorPoint: H,
298
- floatingStyles: w,
299
- floatingRef: C.floating,
300
- triggerRef: S,
301
- setFloating: C.setFloating,
302
- registerTriggerElement: L,
303
- onTriggerClick: R,
304
- onTriggerContextMenu: z,
305
- onTriggerKeyDown: B,
306
- closeMenu: N
307
- }), [
308
- t,
309
- V,
310
- u.source,
311
- H,
312
- w,
313
- C.floating,
314
- C.setFloating,
315
- L,
316
- R,
317
- z,
318
- B,
319
- N
320
- ]);
321
- return /* @__PURE__ */ y(P.Provider, {
322
- value: U,
323
- children: e
324
- });
325
- }, H = ({ className: t }) => /* @__PURE__ */ y("div", {
326
- role: "separator",
327
- className: u(e.uiPopupOptionSeparator, t)
328
- });
329
- //#endregion
330
- //#region src/context-menu/components/RadialMenuContent.tsx
331
- function U(e, t, n) {
332
- return n < t ? t : Math.min(Math.max(e, t), n);
333
- }
334
- var W = Object.assign(({ children: e, placement: t, open: n, defaultOpen: r, onOpenChange: i }) => /* @__PURE__ */ y(V, {
335
- mode: "contextmenu",
336
- placement: t,
337
- open: n,
338
- defaultOpen: r,
339
- onOpenChange: i,
340
- children: e
341
- }), {
342
- Trigger: I,
343
- Content: R,
344
- RadialContent: ({ children: e, className: n, closeOnOutside: r = !0, closeOnEscape: a = !0, disableOutsideClick: c = !1, restoreFocus: l = !0, radius: d = 76, itemSize: f = 64, closeLabel: p = "Закрыть" }) => {
345
- let { open: m, anchorPoint: h, floatingRef: x, triggerRef: T, setFloating: E, closeMenu: D } = F(), O = typeof e == "function" ? e({ closeMenu: D }) : e, k = s(() => t.toArray(O), [O]), A = k.length, j = d * 2 + f, M = s(() => {
346
- if (typeof window > "u" || !h) return null;
347
- let e = j / 2 + 8;
348
- return {
349
- x: U(h.x, e, window.innerWidth - e),
350
- y: U(h.y, e, window.innerHeight - e)
351
- };
352
- }, [h, j]), N = i(() => {
353
- let e = x.current;
354
- return e ? Array.from(e.querySelectorAll("[data-menu-item=\"true\"]:not([data-disabled=\"true\"])")) : [];
355
- }, [x]);
356
- v({
357
- active: m,
358
- initialFocus: (e) => N()[0] ?? e,
359
- restoreFocus: l,
360
- restoreFocusTarget: () => T.current,
361
- containerRef: x
362
- }), o(() => {
363
- if (!m || !h) return;
364
- let e = 0;
365
- return e = window.requestAnimationFrame(() => {
366
- (N()[0] ?? x.current)?.focus();
367
- }), () => window.cancelAnimationFrame(e);
368
- }, [
369
- m,
370
- h,
371
- N,
372
- x
373
- ]), _({
374
- active: m,
375
- enabled: a,
376
- onDismiss: D,
377
- containerRef: x
378
- });
379
- let P = i(() => {
380
- !m || c || r && D();
381
- }, [
382
- m,
383
- c,
384
- r,
385
- D
386
- ]);
387
- g([x, T], P);
388
- let I = i((e) => {
389
- let t = N();
390
- if (t.length === 0) return;
391
- let n = document.activeElement, r = n ? t.indexOf(n) : -1;
392
- if (e.key === "ArrowRight" || e.key === "ArrowDown") {
393
- e.preventDefault(), t[r >= 0 ? (r + 1) % t.length : 0]?.focus();
394
- return;
395
- }
396
- if (e.key === "ArrowLeft" || e.key === "ArrowUp") {
397
- e.preventDefault(), t[r >= 0 ? (r - 1 + t.length) % t.length : t.length - 1]?.focus();
398
- return;
399
- }
400
- if (e.key === "Home") {
401
- e.preventDefault(), t[0]?.focus();
402
- return;
403
- }
404
- e.key === "End" && (e.preventDefault(), t[t.length - 1]?.focus());
405
- }, [N]);
406
- return typeof document > "u" ? null : S(/* @__PURE__ */ y(C, { children: m && M && /* @__PURE__ */ b(w.div, {
407
- ref: E,
408
- style: {
409
- "--radial-panel-size": `${j}px`,
410
- "--radial-radius": `${d}px`,
411
- "--radial-item-size": `${f}px`,
412
- left: M.x - j / 2,
413
- top: M.y - j / 2,
414
- transformOrigin: "center"
415
- },
416
- role: "menu",
417
- tabIndex: -1,
418
- className: u(L.radialPanel, n),
419
- onKeyDown: I,
420
- initial: {
421
- opacity: 0,
422
- scale: .78
423
- },
424
- animate: {
425
- opacity: 1,
426
- scale: 1
427
- },
428
- exit: {
429
- opacity: 0,
430
- scale: .78
431
- },
432
- transition: {
433
- duration: .16,
434
- ease: "easeOut"
435
- },
436
- children: [
437
- /* @__PURE__ */ y("div", {
438
- className: L.radialRing,
439
- "aria-hidden": "true"
440
- }),
441
- /* @__PURE__ */ y("button", {
442
- type: "button",
443
- role: "menuitem",
444
- className: L.radialCenterButton,
445
- "aria-label": p,
446
- "data-menu-item": "true",
447
- "data-radial-close": "true",
448
- onClick: D,
449
- children: /* @__PURE__ */ y("span", {
450
- className: L.radialCenterButtonText,
451
- children: p
452
- })
453
- }),
454
- /* @__PURE__ */ y("div", {
455
- className: L.radialItems,
456
- children: k.map((e, t) => {
457
- let n = A > 0 ? -90 + 360 / A * t : -90;
458
- return /* @__PURE__ */ y("div", {
459
- className: L.radialItemSlot,
460
- style: { "--radial-item-angle": `${n}deg` },
461
- children: e
462
- }, t);
463
- })
464
- })
465
- ]
466
- }) }), document.body);
467
- },
468
- Item: B,
469
- RadialItem: ({ children: e, icon: t, className: n, disabled: r, closeOnSelect: a = !0, onSelect: o }) => {
470
- let { closeMenu: s } = F(), c = i((e) => {
471
- if (r) {
472
- e.preventDefault(), e.stopPropagation();
473
- return;
474
- }
475
- o?.(e), !e.defaultPrevented && a && s();
476
- }, [
477
- r,
478
- o,
479
- a,
480
- s
481
- ]);
482
- return /* @__PURE__ */ b("button", {
483
- type: "button",
484
- role: "menuitem",
485
- tabIndex: -1,
486
- disabled: r,
487
- "aria-disabled": r,
488
- "data-menu-item": "true",
489
- "data-disabled": r ? "true" : void 0,
490
- "data-ui": "radial-menu-item",
491
- "data-action": "select-radial-menu-item",
492
- className: u(L.radialItem, n),
493
- onClick: c,
494
- children: [t && /* @__PURE__ */ y("span", {
495
- className: L.radialItemIcon,
496
- children: t
497
- }), /* @__PURE__ */ y("span", {
498
- className: L.radialItemText,
499
- children: e
500
- })]
501
- });
502
- },
503
- Separator: H,
504
- GroupLabel: z
505
- }), G = Object.assign(({ children: e, placement: t, open: n, defaultOpen: r, onOpenChange: i }) => /* @__PURE__ */ y(V, {
506
- mode: "click",
507
- placement: t,
508
- open: n,
509
- defaultOpen: r,
510
- onOpenChange: i,
511
- children: e
512
- }), {
513
- Trigger: ({ children: e }) => {
514
- let { mode: t, open: r, registerTriggerElement: i, onTriggerClick: a, onTriggerKeyDown: o } = F();
515
- if (t !== "click") throw Error("DropdownMenu.Trigger must be used within <DropdownMenu>");
516
- return n(e, {
517
- ref: (t) => {
518
- let n = e.props.ref;
519
- j(n, t), i(t);
520
- },
521
- "aria-haspopup": "menu",
522
- "aria-expanded": r,
523
- onClick: M(e.props.onClick, a),
524
- onKeyDown: N(e.props.onKeyDown, o)
525
- });
526
- },
527
- Content: R,
528
- Item: B,
529
- Separator: H,
530
- GroupLabel: z
531
- });
532
- //#endregion
533
- export { W as n, G as t };
534
-
535
- //# sourceMappingURL=context-menu-6nJkPmKV.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context-menu-6nJkPmKV.js","names":[],"sources":["../../src/context-menu/components/helpers.ts","../../src/context-menu/components/MenuContext.tsx","../../src/context-menu/components/ContextMenuTrigger.tsx","../../src/context-menu/ContextMenu.module.scss","../../src/context-menu/components/MenuContent.tsx","../../src/context-menu/components/MenuGroupLabel.tsx","../../src/context-menu/components/MenuItem.tsx","../../src/context-menu/components/MenuRoot.tsx","../../src/context-menu/components/MenuSeparator.tsx","../../src/context-menu/components/RadialMenuContent.tsx","../../src/context-menu/components/RadialMenuItem.tsx","../../src/context-menu/components/ContextMenu.tsx","../../src/context-menu/components/DropdownMenuTrigger.tsx","../../src/context-menu/components/DropdownMenu.tsx"],"sourcesContent":["import React from \"react\";\n\nexport function assignRef<T>(ref: React.Ref<T> | undefined, value: T) {\n\tif (!ref) return;\n\n\tif (typeof ref === \"function\") {\n\t\tref(value);\n\t\treturn;\n\t}\n\n\t(ref as React.MutableRefObject<T>).current = value;\n}\n\nexport function composeMouseHandlers<T extends HTMLElement>(\n\tuserHandler: ((event: React.MouseEvent<T>) => void) | undefined,\n\tlibraryHandler: (event: React.MouseEvent<T>) => void\n) {\n\treturn (event: React.MouseEvent<T>) => {\n\t\tuserHandler?.(event);\n\t\tif (event.defaultPrevented) return;\n\t\tlibraryHandler(event);\n\t};\n}\n\nexport function composeKeyboardHandlers<T extends HTMLElement>(\n\tuserHandler: ((event: React.KeyboardEvent<T>) => void) | undefined,\n\tlibraryHandler: (event: React.KeyboardEvent<T>) => void\n) {\n\treturn (event: React.KeyboardEvent<T>) => {\n\t\tuserHandler?.(event);\n\t\tif (event.defaultPrevented) return;\n\t\tlibraryHandler(event);\n\t};\n}\n","import { createContext, useContext } from \"react\";\n\nimport { createMissingContextError } from \"@ryuzaki13/react-foundation-lib/error\";\n\nimport type { MenuOpenSource, MenuPoint } from \"@ryuzaki13/react-foundation-lib/context-menu\";\n\nexport type MenuTriggerMode = \"click\" | \"contextmenu\";\n\ninterface MenuContextValue {\n\tmode: MenuTriggerMode;\n\topen: boolean;\n\topenSource: MenuOpenSource | null;\n\tanchorPoint: MenuPoint | null;\n\tfloatingStyles: React.CSSProperties;\n\tfloatingRef: React.RefObject<HTMLElement | null>;\n\ttriggerRef: React.RefObject<HTMLElement | null>;\n\tsetFloating: (node: HTMLElement | null) => void;\n\tregisterTriggerElement: (node: HTMLElement | null) => void;\n\tonTriggerClick: (event: React.MouseEvent<HTMLElement>) => void;\n\tonTriggerContextMenu: (event: React.MouseEvent<HTMLElement>) => void;\n\tonTriggerKeyDown: (event: React.KeyboardEvent<HTMLElement>) => void;\n\tcloseMenu: () => void;\n}\n\nexport const MenuContext = createContext<MenuContextValue | null>(null);\n\nexport function useMenuContext() {\n\tconst context = useContext(MenuContext);\n\tif (!context) {\n\t\tthrow createMissingContextError({\n\t\t\thookName: \"useMenuContext\",\n\t\t\tproviderName: \"MenuRoot\"\n\t\t});\n\t}\n\treturn context;\n}\n","import React, { cloneElement } from \"react\";\n\nimport { assignRef, composeKeyboardHandlers, composeMouseHandlers } from \"./helpers\";\nimport { useMenuContext } from \"./MenuContext\";\n\nexport interface ContextMenuTriggerProps {\n\tchildren: React.ReactElement<React.HTMLAttributes<HTMLElement> & { ref?: React.Ref<HTMLElement> }>;\n}\n\nexport const ContextMenuTrigger: React.FC<ContextMenuTriggerProps> = ({ children }) => {\n\tconst { mode, open, registerTriggerElement, onTriggerContextMenu, onTriggerKeyDown } = useMenuContext();\n\n\tif (mode !== \"contextmenu\") {\n\t\tthrow new Error(\"ContextMenu.Trigger must be used within <ContextMenu>\");\n\t}\n\n\treturn cloneElement(children, {\n\t\tref: (node: HTMLElement | null) => {\n\t\t\tconst childRef = (children.props as { ref?: React.Ref<HTMLElement> }).ref;\n\t\t\tassignRef(childRef, node);\n\t\t\tregisterTriggerElement(node);\n\t\t},\n\t\t\"aria-haspopup\": \"menu\",\n\t\t\"aria-expanded\": open,\n\t\tonContextMenu: composeMouseHandlers(children.props.onContextMenu, onTriggerContextMenu),\n\t\tonKeyDown: composeKeyboardHandlers(children.props.onKeyDown, onTriggerKeyDown)\n\t});\n};\n","@use \"@/styles/mixins\" as *;\n\n.menuPanel {\n\t--menu-max-height: min(22em, calc(100dvh - var(--space-xl)));\n\t--menu-min-width: 13em;\n\t--menu-max-width: min(22em, calc(100dvw - var(--space-xl)));\n\n\tmin-width: var(--menu-min-width);\n\tmax-width: var(--menu-max-width);\n\tpadding: var(--space-xs);\n\n\tbackground-color: var(--surface-0);\n\tborder: var(--border);\n\tborder-radius: var(--radius-sm);\n\tbox-shadow: var(--shadow-md);\n\n\tz-index: var(--z-dropdown);\n\toutline: none;\n}\n\n.menuScroller {\n\tmax-height: var(--menu-max-height);\n\toverflow: auto;\n}\n\n.menuItem {\n\tgap: var(--space-sm);\n}\n\n.menuItemIcon {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n.menuItemText {\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n}\n\n.menuItemHotKey {\n\tfont-size: var(--font-size-sm);\n}\n\n.radialPanel {\n\tposition: fixed;\n\twidth: var(--radial-panel-size);\n\theight: var(--radial-panel-size);\n\tz-index: var(--z-context-menu, var(--z-dropdown));\n\toutline: none;\n\tpointer-events: none;\n}\n\n.radialRing {\n\tposition: absolute;\n\tinset: calc(var(--radial-item-size) / 2);\n\tborder: var(--border);\n\tborder-radius: 50%;\n\tbackground:\n\t\tradial-gradient(circle, color-mix(in srgb, var(--surface-0) 96%, transparent) 0 36%, transparent 37%),\n\t\tcolor-mix(in srgb, var(--surface-0) 88%, transparent);\n\tbox-shadow: var(--shadow-md);\n\tpointer-events: none;\n}\n\n.radialCenterButton {\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 50%;\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\twidth: calc(var(--radial-item-size) * 0.72);\n\theight: calc(var(--radial-item-size) * 0.72);\n\tpadding: var(--space-xs);\n\ttransform: translate(-50%, -50%);\n\tborder: var(--border);\n\tborder-radius: 50%;\n\tbackground-color: var(--surface-0);\n\tcolor: var(--content-0);\n\tbox-shadow: var(--shadow-sm);\n\tpointer-events: auto;\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\t\ttransform var(--transition-fast) ease;\n\n\t&:focus {\n\t\tbackground-color: var(--surface-1);\n\t\tborder-color: var(--border-1);\n\t}\n\n\t@include hover(true) {\n\t\tbackground-color: var(--surface-accent);\n\t\tcolor: var(--content-accent);\n\t\tcursor: pointer;\n\t\ttransform: translate(-50%, -50%) scale(1.06);\n\t}\n}\n\n.radialCenterButtonText {\n\tmax-width: 100%;\n\toverflow: hidden;\n\ttext-align: center;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n\tfont-size: var(--font-size-sm);\n\tline-height: 1.1;\n}\n\n.radialItems {\n\tposition: absolute;\n\tinset: 0;\n\tpointer-events: none;\n}\n\n.radialItemSlot {\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 50%;\n\twidth: var(--radial-item-size);\n\theight: var(--radial-item-size);\n\ttransform: rotate(var(--radial-item-angle)) translate(var(--radial-radius)) rotate(calc(var(--radial-item-angle) * -1))\n\t\ttranslate(-50%, -50%);\n\tpointer-events: none;\n}\n\n.radialItem {\n\tdisplay: grid;\n\tgrid-template-rows: 1fr auto;\n\talign-items: center;\n\tjustify-items: center;\n\tgap: 0.15rem;\n\twidth: 100%;\n\theight: 100%;\n\tpadding: var(--space-xs);\n\tborder: var(--border);\n\tborder-radius: 50%;\n\tbackground-color: var(--surface-0);\n\tcolor: var(--content-0);\n\tbox-shadow: var(--shadow-sm);\n\tpointer-events: auto;\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\t\ttransform var(--transition-fast) ease;\n\n\t&:focus {\n\t\tbackground-color: var(--surface-1);\n\t\tborder-color: var(--border-1);\n\t}\n\n\t&:disabled,\n\t&[aria-disabled=\"true\"] {\n\t\tcursor: default;\n\t\tcolor: var(--content-2);\n\t\topacity: 0.52;\n\t\tpointer-events: none;\n\t}\n\n\t@include hover(true) {\n\t\tbackground-color: var(--surface-accent);\n\t\tcolor: var(--content-accent);\n\t\tcursor: pointer;\n\t\ttransform: scale(1.06);\n\t}\n}\n\n.radialItemIcon {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\tmin-width: var(--space-md);\n\tmin-height: var(--space-md);\n\n\t> svg {\n\t\twidth: var(--space-md);\n\t\theight: var(--space-md);\n\t}\n}\n\n.radialItemText {\n\tmax-width: 100%;\n\toverflow: hidden;\n\ttext-align: center;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n\tfont-size: var(--font-size-sm);\n}\n","import React, { useCallback } from \"react\";\n\nimport { useClickOutside, useEscapeDismiss, useOverlayFocus } from \"@ryuzaki13/react-foundation-lib/dom\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { AnimatePresence, motion } from \"motion/react\";\nimport { createPortal } from \"react-dom\";\n\nimport styles from \"../ContextMenu.module.scss\";\n\nimport { useMenuContext } from \"./MenuContext\";\n\nexport interface MenuContentProps {\n\tchildren: React.ReactNode | ((ctx: { closeMenu: () => void }) => React.ReactNode);\n\tclassName?: string;\n\tcloseOnOutside?: boolean;\n\tcloseOnEscape?: boolean;\n\tdisableOutsideClick?: boolean;\n\trestoreFocus?: boolean;\n}\n\nexport const MenuContent: React.FC<MenuContentProps> = ({\n\tchildren,\n\tclassName,\n\tcloseOnOutside = true,\n\tcloseOnEscape = true,\n\tdisableOutsideClick = false,\n\trestoreFocus = true\n}) => {\n\tconst { open, floatingStyles, floatingRef, triggerRef, setFloating, closeMenu } = useMenuContext();\n\n\tconst getNavigableItems = useCallback(() => {\n\t\tconst floatingElement = floatingRef.current;\n\t\tif (!floatingElement) return [];\n\n\t\treturn Array.from(floatingElement.querySelectorAll<HTMLElement>('[data-menu-item=\"true\"]:not([data-disabled=\"true\"])'));\n\t}, [floatingRef]);\n\n\tuseOverlayFocus<HTMLElement>({\n\t\tactive: open,\n\t\tinitialFocus: (container) => getNavigableItems()[0] ?? container,\n\t\trestoreFocus,\n\t\trestoreFocusTarget: () => triggerRef.current,\n\t\tcontainerRef: floatingRef\n\t});\n\n\tuseEscapeDismiss({\n\t\tactive: open,\n\t\tenabled: closeOnEscape,\n\t\tonDismiss: closeMenu,\n\t\tcontainerRef: floatingRef\n\t});\n\n\tconst outsideClose = useCallback(() => {\n\t\tif (!open || disableOutsideClick) return;\n\t\tif (closeOnOutside) {\n\t\t\tcloseMenu();\n\t\t}\n\t}, [open, disableOutsideClick, closeOnOutside, closeMenu]);\n\n\tuseClickOutside([floatingRef as React.RefObject<HTMLElement>, triggerRef as React.RefObject<HTMLElement>], outsideClose);\n\n\tconst onMenuKeyDown = useCallback(\n\t\t(event: React.KeyboardEvent<HTMLElement>) => {\n\t\t\tconst items = getNavigableItems();\n\t\t\tif (items.length === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst activeElement = document.activeElement as HTMLElement | null;\n\t\t\tconst currentIndex = activeElement ? items.indexOf(activeElement) : -1;\n\n\t\t\tif (event.key === \"ArrowDown\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst nextIndex = currentIndex >= 0 ? (currentIndex + 1) % items.length : 0;\n\t\t\t\titems[nextIndex]?.focus();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (event.key === \"ArrowUp\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst nextIndex = currentIndex >= 0 ? (currentIndex - 1 + items.length) % items.length : items.length - 1;\n\t\t\t\titems[nextIndex]?.focus();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (event.key === \"Home\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\titems[0]?.focus();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (event.key === \"End\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\titems[items.length - 1]?.focus();\n\t\t\t}\n\t\t},\n\t\t[getNavigableItems]\n\t);\n\n\tif (typeof document === \"undefined\") return null;\n\n\treturn createPortal(\n\t\t<AnimatePresence>\n\t\t\t{open && (\n\t\t\t\t<motion.div\n\t\t\t\t\tref={setFloating}\n\t\t\t\t\tstyle={floatingStyles}\n\t\t\t\t\trole=\"menu\"\n\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\tclassName={cn(styles.menuPanel, className)}\n\t\t\t\t\tonKeyDown={onMenuKeyDown}\n\t\t\t\t\tinitial={{ opacity: 0, scale: 0.96, y: -2 }}\n\t\t\t\t\tanimate={{ opacity: 1, scale: 1, y: 0 }}\n\t\t\t\t\texit={{ opacity: 0, scale: 0.96, y: -2 }}\n\t\t\t\t\ttransition={{ duration: 0.14, ease: \"easeOut\" }}>\n\t\t\t\t\t<div className={cn(styles.menuScroller, \"scrollable\")}>\n\t\t\t\t\t\t{typeof children === \"function\" ? children({ closeMenu }) : children}\n\t\t\t\t\t</div>\n\t\t\t\t</motion.div>\n\t\t\t)}\n\t\t</AnimatePresence>,\n\t\tdocument.body\n\t);\n};\n","import React from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport uiStyles from \"../../ui.module.scss\";\n\nexport interface MenuGroupLabelProps {\n\tchildren: React.ReactNode;\n\tclassName?: string;\n}\n\nexport const MenuGroupLabel: React.FC<MenuGroupLabelProps> = ({ children, className }) => {\n\treturn <div className={cn(uiStyles.uiPopupGroupLabel, className)}>{children}</div>;\n};\n","import React, { useCallback } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport uiStyles from \"../../ui.module.scss\";\nimport styles from \"../ContextMenu.module.scss\";\n\nimport { useMenuContext } from \"./MenuContext\";\n\nexport interface MenuItemProps {\n\tchildren: React.ReactNode;\n\ticon?: React.ReactNode;\n\thotKey?: string;\n\tclassName?: string;\n\tdisabled?: boolean;\n\thref?: string;\n\ttarget?: string;\n\trel?: string;\n\tcloseOnSelect?: boolean;\n\tonSelect?: (event: React.MouseEvent<HTMLElement>) => void;\n}\n\nexport const MenuItem: React.FC<MenuItemProps> = ({\n\tchildren,\n\ticon,\n\thotKey,\n\tclassName,\n\tdisabled,\n\thref,\n\ttarget,\n\trel,\n\tcloseOnSelect = true,\n\tonSelect\n}) => {\n\tconst { closeMenu } = useMenuContext();\n\n\tconst handleClick = useCallback(\n\t\t(event: React.MouseEvent<HTMLElement>) => {\n\t\t\tif (disabled) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tonSelect?.(event);\n\t\t\tif (event.defaultPrevented) return;\n\n\t\t\tif (closeOnSelect) {\n\t\t\t\tcloseMenu();\n\t\t\t}\n\t\t},\n\t\t[disabled, onSelect, closeOnSelect, closeMenu]\n\t);\n\n\tconst rootClassName = cn(uiStyles.uiPopupOption, styles.menuItem, className);\n\n\tif (href) {\n\t\treturn (\n\t\t\t<a\n\t\t\t\thref={href}\n\t\t\t\ttarget={target}\n\t\t\t\trel={rel}\n\t\t\t\trole=\"menuitem\"\n\t\t\t\ttabIndex={-1}\n\t\t\t\taria-disabled={disabled}\n\t\t\t\tdata-menu-item=\"true\"\n\t\t\t\tdata-disabled={disabled ? \"true\" : undefined}\n\t\t\t\tdata-ui=\"context-menu-item\"\n\t\t\t\tdata-action=\"select-context-menu-item\"\n\t\t\t\tclassName={rootClassName}\n\t\t\t\tonClick={handleClick as React.MouseEventHandler<HTMLAnchorElement>}>\n\t\t\t\t{icon && <span className={cn(uiStyles.uiPopupOptionIcon, styles.menuItemIcon)}>{icon}</span>}\n\t\t\t\t<span className={cn(uiStyles.uiOptionText, styles.menuItemText)}>{children}</span>\n\t\t\t\t{hotKey && <kbd className={cn(uiStyles.keyboard, styles.menuItemHotKey)}>{hotKey}</kbd>}\n\t\t\t</a>\n\t\t);\n\t}\n\n\treturn (\n\t\t<button\n\t\t\ttype=\"button\"\n\t\t\trole=\"menuitem\"\n\t\t\ttabIndex={-1}\n\t\t\tdisabled={disabled}\n\t\t\tdata-menu-item=\"true\"\n\t\t\tdata-disabled={disabled ? \"true\" : undefined}\n\t\t\tdata-ui=\"context-menu-item\"\n\t\t\tdata-action=\"select-context-menu-item\"\n\t\t\tclassName={rootClassName}\n\t\t\tonClick={handleClick as React.MouseEventHandler<HTMLButtonElement>}>\n\t\t\t{icon && <span className={cn(uiStyles.uiPopupOptionIcon, styles.menuItemIcon)}>{icon}</span>}\n\t\t\t<span className={cn(uiStyles.uiOptionText, styles.menuItemText)}>{children}</span>\n\t\t\t{hotKey && <kbd className={cn(uiStyles.keyboard, styles.menuItemHotKey)}>{hotKey}</kbd>}\n\t\t</button>\n\t);\n};\n","import React, { useCallback, useMemo, useRef, useState } from \"react\";\n\nimport { autoUpdate, flip, offset, Placement, shift, useFloating } from \"@floating-ui/react\";\nimport {\n\tcloseMenu,\n\tcreateVirtualAnchor,\n\tgetMenuPointFromEvent,\n\tgetMenuPointFromRect,\n\tinitialMenuState,\n\topenMenu\n} from \"@ryuzaki13/react-foundation-lib/context-menu\";\n\nimport { MenuContext, MenuTriggerMode } from \"./MenuContext\";\n\ninterface MenuRootProps {\n\tchildren: React.ReactNode;\n\tmode: MenuTriggerMode;\n\tplacement?: Placement;\n\topen?: boolean;\n\tdefaultOpen?: boolean;\n\tonOpenChange?: (open: boolean) => void;\n}\n\nexport const MenuRoot: React.FC<MenuRootProps> = ({\n\tchildren,\n\tmode,\n\tplacement = mode === \"click\" ? \"bottom-start\" : \"right-start\",\n\topen: controlledOpen,\n\tdefaultOpen,\n\tonOpenChange\n}) => {\n\tconst [menuState, setMenuState] = useState(initialMenuState);\n\tconst [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen ?? false);\n\tconst isControlled = controlledOpen !== undefined;\n\tconst open = isControlled ? controlledOpen : uncontrolledOpen;\n\tconst triggerElementRef = useRef<HTMLElement | null>(null);\n\n\tconst { refs, floatingStyles, update } = useFloating({\n\t\tplacement,\n\t\tstrategy: mode === \"contextmenu\" ? \"fixed\" : \"absolute\",\n\t\ttransform: false,\n\t\tmiddleware: [offset(6), flip({ padding: 8 }), shift({ padding: 8 })],\n\t\twhileElementsMounted: autoUpdate\n\t});\n\n\tconst setOpen = useCallback(\n\t\t(nextOpen: boolean) => {\n\t\t\tif (!isControlled) {\n\t\t\t\tsetUncontrolledOpen(nextOpen);\n\t\t\t}\n\t\t\tonOpenChange?.(nextOpen);\n\t\t\tif (!nextOpen) {\n\t\t\t\tsetMenuState((state) => closeMenu(state));\n\t\t\t}\n\t\t},\n\t\t[isControlled, onOpenChange]\n\t);\n\n\tconst closeMenuHandler = useCallback(() => {\n\t\tsetOpen(false);\n\t}, [setOpen]);\n\n\tconst openAtElement = useCallback(\n\t\t(element: HTMLElement, source: \"click\" | \"keyboard\") => {\n\t\t\trefs.setReference(element);\n\t\t\tsetMenuState(\n\t\t\t\topenMenu({\n\t\t\t\t\tsource,\n\t\t\t\t\tanchor: {\n\t\t\t\t\t\ttype: \"element\",\n\t\t\t\t\t\telement\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t);\n\t\t\tsetOpen(true);\n\t\t},\n\t\t[refs, setOpen]\n\t);\n\n\tconst openAtPoint = useCallback(\n\t\t(point: { x: number; y: number }, source: \"contextmenu\" | \"keyboard\", contextElement?: HTMLElement | null) => {\n\t\t\trefs.setReference(createVirtualAnchor(point, contextElement));\n\t\t\tsetMenuState(\n\t\t\t\topenMenu({\n\t\t\t\t\tsource,\n\t\t\t\t\tanchor: {\n\t\t\t\t\t\ttype: \"point\",\n\t\t\t\t\t\tpoint,\n\t\t\t\t\t\tcontextElement\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t);\n\t\t\tsetOpen(true);\n\t\t\tupdate();\n\t\t},\n\t\t[refs, setOpen, update]\n\t);\n\n\tconst registerTriggerElement = useCallback(\n\t\t(node: HTMLElement | null) => {\n\t\t\ttriggerElementRef.current = node;\n\t\t\tif (mode === \"click\") {\n\t\t\t\trefs.setReference(node);\n\t\t\t}\n\t\t},\n\t\t[mode, refs]\n\t);\n\n\tconst onTriggerClick = useCallback(\n\t\t(event: React.MouseEvent<HTMLElement>) => {\n\t\t\tif (mode !== \"click\") return;\n\t\t\tconst element = event.currentTarget;\n\n\t\t\tif (open && menuState.anchor?.type === \"element\" && menuState.anchor.element === element) {\n\t\t\t\tcloseMenuHandler();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\topenAtElement(element, \"click\");\n\t\t},\n\t\t[mode, open, menuState.anchor, closeMenuHandler, openAtElement]\n\t);\n\n\tconst onTriggerContextMenu = useCallback(\n\t\t(event: React.MouseEvent<HTMLElement>) => {\n\t\t\tif (mode !== \"contextmenu\") return;\n\t\t\tevent.preventDefault();\n\n\t\t\tconst element = event.currentTarget;\n\t\t\tconst point = getMenuPointFromEvent(event);\n\t\t\topenAtPoint(point, \"contextmenu\", element);\n\t\t},\n\t\t[mode, openAtPoint]\n\t);\n\n\tconst onTriggerKeyDown = useCallback(\n\t\t(event: React.KeyboardEvent<HTMLElement>) => {\n\t\t\tconst isContextMenuKeyboardOpen = event.key === \"ContextMenu\" || (event.shiftKey && event.key === \"F10\");\n\t\t\tif (!isContextMenuKeyboardOpen) return;\n\n\t\t\tevent.preventDefault();\n\t\t\tconst element = event.currentTarget;\n\n\t\t\tif (mode === \"click\") {\n\t\t\t\topenAtElement(element, \"keyboard\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst point = getMenuPointFromRect(element.getBoundingClientRect());\n\t\t\topenAtPoint(point, \"keyboard\", element);\n\t\t},\n\t\t[mode, openAtElement, openAtPoint]\n\t);\n\n\tconst visible = open && menuState.anchor !== null;\n\tconst anchorPoint = useMemo(() => {\n\t\tif (!menuState.anchor) return null;\n\n\t\tif (menuState.anchor.type === \"point\") {\n\t\t\treturn menuState.anchor.point;\n\t\t}\n\n\t\tconst rect = menuState.anchor.element.getBoundingClientRect();\n\t\treturn getMenuPointFromRect(rect);\n\t}, [menuState.anchor]);\n\n\tconst value = useMemo(\n\t\t() => ({\n\t\t\tmode,\n\t\t\topen: visible,\n\t\t\topenSource: menuState.source,\n\t\t\tanchorPoint,\n\t\t\tfloatingStyles,\n\t\t\tfloatingRef: refs.floating,\n\t\t\ttriggerRef: triggerElementRef,\n\t\t\tsetFloating: refs.setFloating,\n\t\t\tregisterTriggerElement,\n\t\t\tonTriggerClick,\n\t\t\tonTriggerContextMenu,\n\t\t\tonTriggerKeyDown,\n\t\t\tcloseMenu: closeMenuHandler\n\t\t}),\n\t\t[\n\t\t\tmode,\n\t\t\tvisible,\n\t\t\tmenuState.source,\n\t\t\tanchorPoint,\n\t\t\tfloatingStyles,\n\t\t\trefs.floating,\n\t\t\trefs.setFloating,\n\t\t\tregisterTriggerElement,\n\t\t\tonTriggerClick,\n\t\t\tonTriggerContextMenu,\n\t\t\tonTriggerKeyDown,\n\t\t\tcloseMenuHandler\n\t\t]\n\t);\n\n\treturn <MenuContext.Provider value={value}>{children}</MenuContext.Provider>;\n};\n","import React from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport uiStyles from \"../../ui.module.scss\";\n\nexport interface MenuSeparatorProps {\n\tclassName?: string;\n}\n\nexport const MenuSeparator: React.FC<MenuSeparatorProps> = ({ className }) => {\n\treturn <div role=\"separator\" className={cn(uiStyles.uiPopupOptionSeparator, className)} />;\n};\n","import React, { Children, useCallback, useEffect, useMemo } from \"react\";\n\nimport { useClickOutside, useEscapeDismiss, useOverlayFocus } from \"@ryuzaki13/react-foundation-lib/dom\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { AnimatePresence, motion } from \"motion/react\";\nimport { createPortal } from \"react-dom\";\n\nimport styles from \"../ContextMenu.module.scss\";\n\nimport { useMenuContext } from \"./MenuContext\";\n\nexport interface RadialMenuContentProps {\n\tchildren: React.ReactNode | ((ctx: { closeMenu: () => void }) => React.ReactNode);\n\tclassName?: string;\n\tcloseOnOutside?: boolean;\n\tcloseOnEscape?: boolean;\n\tdisableOutsideClick?: boolean;\n\trestoreFocus?: boolean;\n\tradius?: number;\n\titemSize?: number;\n\tcloseLabel?: string;\n}\n\nfunction clamp(value: number, min: number, max: number) {\n\tif (max < min) return min;\n\treturn Math.min(Math.max(value, min), max);\n}\n\nexport const RadialMenuContent: React.FC<RadialMenuContentProps> = ({\n\tchildren,\n\tclassName,\n\tcloseOnOutside = true,\n\tcloseOnEscape = true,\n\tdisableOutsideClick = false,\n\trestoreFocus = true,\n\tradius = 76,\n\titemSize = 64,\n\tcloseLabel = \"Закрыть\"\n}) => {\n\tconst { open, anchorPoint, floatingRef, triggerRef, setFloating, closeMenu } = useMenuContext();\n\n\tconst resolvedChildren = typeof children === \"function\" ? children({ closeMenu }) : children;\n\tconst itemNodes = useMemo(() => Children.toArray(resolvedChildren), [resolvedChildren]);\n\tconst itemCount = itemNodes.length;\n\tconst panelSize = radius * 2 + itemSize;\n\n\tconst panelPoint = useMemo(() => {\n\t\tif (typeof window === \"undefined\" || !anchorPoint) return null;\n\n\t\t// Радиальное меню центрируется на точке вызова, но не выходит за границы viewport.\n\t\tconst safeOffset = panelSize / 2 + 8;\n\t\treturn {\n\t\t\tx: clamp(anchorPoint.x, safeOffset, window.innerWidth - safeOffset),\n\t\t\ty: clamp(anchorPoint.y, safeOffset, window.innerHeight - safeOffset)\n\t\t};\n\t}, [anchorPoint, panelSize]);\n\n\tconst getNavigableItems = useCallback(() => {\n\t\tconst floatingElement = floatingRef.current;\n\t\tif (!floatingElement) return [];\n\n\t\treturn Array.from(floatingElement.querySelectorAll<HTMLElement>('[data-menu-item=\"true\"]:not([data-disabled=\"true\"])'));\n\t}, [floatingRef]);\n\n\tuseOverlayFocus<HTMLElement>({\n\t\tactive: open,\n\t\tinitialFocus: (container) => getNavigableItems()[0] ?? container,\n\t\trestoreFocus,\n\t\trestoreFocusTarget: () => triggerRef.current,\n\t\tcontainerRef: floatingRef\n\t});\n\n\tuseEffect(() => {\n\t\tif (!open || !anchorPoint) return;\n\n\t\tlet rafId = 0;\n\n\t\t/**\n\t\t * Повторный правый клик при уже открытом меню меняет только якорь, поэтому общий\n\t\t * эффект начального фокуса не перезапускается. Возвращаем фокус в меню явно.\n\t\t */\n\t\tconst focusMenuOnReposition = () => {\n\t\t\tconst focusTarget = getNavigableItems()[0] ?? floatingRef.current;\n\t\t\tfocusTarget?.focus();\n\t\t};\n\n\t\trafId = window.requestAnimationFrame(focusMenuOnReposition);\n\t\treturn () => window.cancelAnimationFrame(rafId);\n\t}, [open, anchorPoint, getNavigableItems, floatingRef]);\n\n\tuseEscapeDismiss({\n\t\tactive: open,\n\t\tenabled: closeOnEscape,\n\t\tonDismiss: closeMenu,\n\t\tcontainerRef: floatingRef\n\t});\n\n\tconst outsideClose = useCallback(() => {\n\t\tif (!open || disableOutsideClick) return;\n\t\tif (closeOnOutside) {\n\t\t\tcloseMenu();\n\t\t}\n\t}, [open, disableOutsideClick, closeOnOutside, closeMenu]);\n\n\tuseClickOutside([floatingRef as React.RefObject<HTMLElement>, triggerRef as React.RefObject<HTMLElement>], outsideClose);\n\n\tconst onMenuKeyDown = useCallback(\n\t\t(event: React.KeyboardEvent<HTMLElement>) => {\n\t\t\tconst items = getNavigableItems();\n\t\t\tif (items.length === 0) return;\n\n\t\t\tconst activeElement = document.activeElement as HTMLElement | null;\n\t\t\tconst currentIndex = activeElement ? items.indexOf(activeElement) : -1;\n\n\t\t\tif (event.key === \"ArrowRight\" || event.key === \"ArrowDown\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst nextIndex = currentIndex >= 0 ? (currentIndex + 1) % items.length : 0;\n\t\t\t\titems[nextIndex]?.focus();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (event.key === \"ArrowLeft\" || event.key === \"ArrowUp\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst nextIndex = currentIndex >= 0 ? (currentIndex - 1 + items.length) % items.length : items.length - 1;\n\t\t\t\titems[nextIndex]?.focus();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (event.key === \"Home\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\titems[0]?.focus();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (event.key === \"End\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\titems[items.length - 1]?.focus();\n\t\t\t}\n\t\t},\n\t\t[getNavigableItems]\n\t);\n\n\tif (typeof document === \"undefined\") return null;\n\n\treturn createPortal(\n\t\t<AnimatePresence>\n\t\t\t{open && panelPoint && (\n\t\t\t\t<motion.div\n\t\t\t\t\tref={setFloating}\n\t\t\t\t\tstyle={\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"--radial-panel-size\": `${panelSize}px`,\n\t\t\t\t\t\t\t\"--radial-radius\": `${radius}px`,\n\t\t\t\t\t\t\t\"--radial-item-size\": `${itemSize}px`,\n\t\t\t\t\t\t\tleft: panelPoint.x - panelSize / 2,\n\t\t\t\t\t\t\ttop: panelPoint.y - panelSize / 2,\n\t\t\t\t\t\t\ttransformOrigin: \"center\"\n\t\t\t\t\t\t} as React.CSSProperties\n\t\t\t\t\t}\n\t\t\t\t\trole=\"menu\"\n\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\tclassName={cn(styles.radialPanel, className)}\n\t\t\t\t\tonKeyDown={onMenuKeyDown}\n\t\t\t\t\tinitial={{ opacity: 0, scale: 0.78 }}\n\t\t\t\t\tanimate={{ opacity: 1, scale: 1 }}\n\t\t\t\t\texit={{ opacity: 0, scale: 0.78 }}\n\t\t\t\t\ttransition={{ duration: 0.16, ease: \"easeOut\" }}>\n\t\t\t\t\t<div className={styles.radialRing} aria-hidden=\"true\" />\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\trole=\"menuitem\"\n\t\t\t\t\t\tclassName={styles.radialCenterButton}\n\t\t\t\t\t\taria-label={closeLabel}\n\t\t\t\t\t\tdata-menu-item=\"true\"\n\t\t\t\t\t\tdata-radial-close=\"true\"\n\t\t\t\t\t\tonClick={closeMenu}>\n\t\t\t\t\t\t<span className={styles.radialCenterButtonText}>{closeLabel}</span>\n\t\t\t\t\t</button>\n\t\t\t\t\t<div className={styles.radialItems}>\n\t\t\t\t\t\t{itemNodes.map((item, index) => {\n\t\t\t\t\t\t\tconst angle = itemCount > 0 ? -90 + (360 / itemCount) * index : -90;\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t// Индекс допустим: порядок пунктов полностью задает геометрию кольца.\n\t\t\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\t\t\tclassName={styles.radialItemSlot}\n\t\t\t\t\t\t\t\t\tstyle={{ \"--radial-item-angle\": `${angle}deg` } as React.CSSProperties}>\n\t\t\t\t\t\t\t\t\t{item}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</div>\n\t\t\t\t</motion.div>\n\t\t\t)}\n\t\t</AnimatePresence>,\n\t\tdocument.body\n\t);\n};\n","import React, { useCallback } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport styles from \"../ContextMenu.module.scss\";\n\nimport { useMenuContext } from \"./MenuContext\";\n\nexport interface RadialMenuItemProps {\n\tchildren: React.ReactNode;\n\ticon?: React.ReactNode;\n\tclassName?: string;\n\tdisabled?: boolean;\n\tcloseOnSelect?: boolean;\n\tonSelect?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n}\n\nexport const RadialMenuItem: React.FC<RadialMenuItemProps> = ({ children, icon, className, disabled, closeOnSelect = true, onSelect }) => {\n\tconst { closeMenu } = useMenuContext();\n\n\tconst handleClick = useCallback(\n\t\t(event: React.MouseEvent<HTMLButtonElement>) => {\n\t\t\tif (disabled) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tonSelect?.(event);\n\t\t\tif (event.defaultPrevented) return;\n\n\t\t\tif (closeOnSelect) {\n\t\t\t\tcloseMenu();\n\t\t\t}\n\t\t},\n\t\t[disabled, onSelect, closeOnSelect, closeMenu]\n\t);\n\n\treturn (\n\t\t<button\n\t\t\ttype=\"button\"\n\t\t\trole=\"menuitem\"\n\t\t\ttabIndex={-1}\n\t\t\tdisabled={disabled}\n\t\t\taria-disabled={disabled}\n\t\t\tdata-menu-item=\"true\"\n\t\t\tdata-disabled={disabled ? \"true\" : undefined}\n\t\t\tdata-ui=\"radial-menu-item\"\n\t\t\tdata-action=\"select-radial-menu-item\"\n\t\t\tclassName={cn(styles.radialItem, className)}\n\t\t\tonClick={handleClick}>\n\t\t\t{icon && <span className={styles.radialItemIcon}>{icon}</span>}\n\t\t\t<span className={styles.radialItemText}>{children}</span>\n\t\t</button>\n\t);\n};\n","/* eslint-disable react-refresh/only-export-components */\nimport React from \"react\";\n\nimport { Placement } from \"@floating-ui/react\";\n\nimport { ContextMenuTrigger } from \"./ContextMenuTrigger\";\nimport { MenuContent } from \"./MenuContent\";\nimport { MenuGroupLabel } from \"./MenuGroupLabel\";\nimport { MenuItem } from \"./MenuItem\";\nimport { MenuRoot } from \"./MenuRoot\";\nimport { MenuSeparator } from \"./MenuSeparator\";\nimport { RadialMenuContent } from \"./RadialMenuContent\";\nimport { RadialMenuItem } from \"./RadialMenuItem\";\n\nexport interface ContextMenuProps {\n\tchildren: React.ReactNode;\n\tplacement?: Placement;\n\topen?: boolean;\n\tdefaultOpen?: boolean;\n\tonOpenChange?: (open: boolean) => void;\n}\n\nconst ContextMenuRoot: React.FC<ContextMenuProps> = ({ children, placement, open, defaultOpen, onOpenChange }) => {\n\treturn (\n\t\t<MenuRoot mode=\"contextmenu\" placement={placement} open={open} defaultOpen={defaultOpen} onOpenChange={onOpenChange}>\n\t\t\t{children}\n\t\t</MenuRoot>\n\t);\n};\n\nexport const ContextMenu = Object.assign(ContextMenuRoot, {\n\tTrigger: ContextMenuTrigger,\n\tContent: MenuContent,\n\tRadialContent: RadialMenuContent,\n\tItem: MenuItem,\n\tRadialItem: RadialMenuItem,\n\tSeparator: MenuSeparator,\n\tGroupLabel: MenuGroupLabel\n});\n","import React, { cloneElement } from \"react\";\n\nimport { assignRef, composeKeyboardHandlers, composeMouseHandlers } from \"./helpers\";\nimport { useMenuContext } from \"./MenuContext\";\n\nexport interface DropdownMenuTriggerProps {\n\tchildren: React.ReactElement<React.HTMLAttributes<HTMLElement> & { ref?: React.Ref<HTMLElement> }>;\n}\n\nexport const DropdownMenuTrigger: React.FC<DropdownMenuTriggerProps> = ({ children }) => {\n\tconst { mode, open, registerTriggerElement, onTriggerClick, onTriggerKeyDown } = useMenuContext();\n\n\tif (mode !== \"click\") {\n\t\tthrow new Error(\"DropdownMenu.Trigger must be used within <DropdownMenu>\");\n\t}\n\n\treturn cloneElement(children, {\n\t\tref: (node: HTMLElement | null) => {\n\t\t\tconst childRef = (children.props as { ref?: React.Ref<HTMLElement> }).ref;\n\t\t\tassignRef(childRef, node);\n\t\t\tregisterTriggerElement(node);\n\t\t},\n\t\t\"aria-haspopup\": \"menu\",\n\t\t\"aria-expanded\": open,\n\t\tonClick: composeMouseHandlers(children.props.onClick, onTriggerClick),\n\t\tonKeyDown: composeKeyboardHandlers(children.props.onKeyDown, onTriggerKeyDown)\n\t});\n};\n","/* eslint-disable react-refresh/only-export-components */\nimport React from \"react\";\n\nimport { Placement } from \"@floating-ui/react\";\n\nimport { DropdownMenuTrigger } from \"./DropdownMenuTrigger\";\nimport { MenuContent } from \"./MenuContent\";\nimport { MenuGroupLabel } from \"./MenuGroupLabel\";\nimport { MenuItem } from \"./MenuItem\";\nimport { MenuRoot } from \"./MenuRoot\";\nimport { MenuSeparator } from \"./MenuSeparator\";\n\nexport interface DropdownMenuProps {\n\tchildren: React.ReactNode;\n\tplacement?: Placement;\n\topen?: boolean;\n\tdefaultOpen?: boolean;\n\tonOpenChange?: (open: boolean) => void;\n}\n\nconst DropdownMenuRoot: React.FC<DropdownMenuProps> = ({ children, placement, open, defaultOpen, onOpenChange }) => {\n\treturn (\n\t\t<MenuRoot mode=\"click\" placement={placement} open={open} defaultOpen={defaultOpen} onOpenChange={onOpenChange}>\n\t\t\t{children}\n\t\t</MenuRoot>\n\t);\n};\n\nexport const DropdownMenu = Object.assign(DropdownMenuRoot, {\n\tTrigger: DropdownMenuTrigger,\n\tContent: MenuContent,\n\tItem: MenuItem,\n\tSeparator: MenuSeparator,\n\tGroupLabel: MenuGroupLabel\n});\n"],"mappings":"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"}