@chayns-components/core 5.3.9 → 5.3.11-alpha.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 (495) hide show
  1. package/AGENTS.md +73 -2
  2. package/lib/cjs/components/accordion/Accordion.js +107 -12
  3. package/lib/cjs/components/accordion/Accordion.js.map +1 -1
  4. package/lib/cjs/components/accordion/Accordion.styles.js +23 -3
  5. package/lib/cjs/components/accordion/Accordion.styles.js.map +1 -1
  6. package/lib/cjs/components/accordion/accordion-body/AccordionBody.styles.js +3 -1
  7. package/lib/cjs/components/accordion/accordion-body/AccordionBody.styles.js.map +1 -1
  8. package/lib/cjs/components/accordion/accordion-group/AccordionGroup.js +36 -19
  9. package/lib/cjs/components/accordion/accordion-group/AccordionGroup.js.map +1 -1
  10. package/lib/cjs/components/accordion/accordion-head/AccordionHead.js +6 -3
  11. package/lib/cjs/components/accordion/accordion-head/AccordionHead.js.map +1 -1
  12. package/lib/cjs/components/accordion/accordion-head/AccordionHead.styles.js +14 -0
  13. package/lib/cjs/components/accordion/accordion-head/AccordionHead.styles.js.map +1 -1
  14. package/lib/cjs/components/amount-control/AmountControl.js +31 -17
  15. package/lib/cjs/components/amount-control/AmountControl.js.map +1 -1
  16. package/lib/cjs/components/amount-control/AmountControl.styles.js +18 -2
  17. package/lib/cjs/components/amount-control/AmountControl.styles.js.map +1 -1
  18. package/lib/cjs/components/button/Button.js +5 -1
  19. package/lib/cjs/components/button/Button.js.map +1 -1
  20. package/lib/cjs/components/button/Button.styles.js +17 -0
  21. package/lib/cjs/components/button/Button.styles.js.map +1 -1
  22. package/lib/cjs/components/button/Button.types.js.map +1 -1
  23. package/lib/cjs/components/checkbox/Checkbox.js +5 -1
  24. package/lib/cjs/components/checkbox/Checkbox.js.map +1 -1
  25. package/lib/cjs/components/checkbox/Checkbox.styles.js +29 -2
  26. package/lib/cjs/components/checkbox/Checkbox.styles.js.map +1 -1
  27. package/lib/cjs/components/color-scheme-provider/ColorSchemeProvider.js +7 -2
  28. package/lib/cjs/components/color-scheme-provider/ColorSchemeProvider.js.map +1 -1
  29. package/lib/cjs/components/color-scheme-provider/ColorSchemeProvider.styles.js +8 -2
  30. package/lib/cjs/components/color-scheme-provider/ColorSchemeProvider.styles.js.map +1 -1
  31. package/lib/cjs/components/combobox/ComboBox.js +52 -5
  32. package/lib/cjs/components/combobox/ComboBox.js.map +1 -1
  33. package/lib/cjs/components/combobox/ComboBox.styles.js +11 -0
  34. package/lib/cjs/components/combobox/ComboBox.styles.js.map +1 -1
  35. package/lib/cjs/components/combobox/ComboBox.types.js.map +1 -1
  36. package/lib/cjs/components/context-menu/ContextMenu.js +100 -6
  37. package/lib/cjs/components/context-menu/ContextMenu.js.map +1 -1
  38. package/lib/cjs/components/context-menu/ContextMenu.styles.js +38 -0
  39. package/lib/cjs/components/context-menu/ContextMenu.styles.js.map +1 -1
  40. package/lib/cjs/components/context-menu/ContextMenu.types.js.map +1 -1
  41. package/lib/cjs/components/file-input/FileInput.js +4 -2
  42. package/lib/cjs/components/file-input/FileInput.js.map +1 -1
  43. package/lib/cjs/components/file-list/file-item/FileItem.js +23 -2
  44. package/lib/cjs/components/file-list/file-item/FileItem.js.map +1 -1
  45. package/lib/cjs/components/file-list/file-item/FileItem.styles.js +19 -1
  46. package/lib/cjs/components/file-list/file-item/FileItem.styles.js.map +1 -1
  47. package/lib/cjs/components/file-select/FileSelect.js +27 -4
  48. package/lib/cjs/components/file-select/FileSelect.js.map +1 -1
  49. package/lib/cjs/components/file-select/FileSelect.styles.js +10 -0
  50. package/lib/cjs/components/file-select/FileSelect.styles.js.map +1 -1
  51. package/lib/cjs/components/filter/Filter.js +51 -16
  52. package/lib/cjs/components/filter/Filter.js.map +1 -1
  53. package/lib/cjs/components/filter/Filter.styles.js +9 -0
  54. package/lib/cjs/components/filter/Filter.styles.js.map +1 -1
  55. package/lib/cjs/components/filter/filter-content/FilterContent.js +14 -5
  56. package/lib/cjs/components/filter/filter-content/FilterContent.js.map +1 -1
  57. package/lib/cjs/components/filter/filter-content/FilterContent.types.js.map +1 -1
  58. package/lib/cjs/components/filter-buttons/FilterButtons.js +69 -4
  59. package/lib/cjs/components/filter-buttons/FilterButtons.js.map +1 -1
  60. package/lib/cjs/components/filter-buttons/filter-button/FilterButton.js +40 -2
  61. package/lib/cjs/components/filter-buttons/filter-button/FilterButton.js.map +1 -1
  62. package/lib/cjs/components/filter-buttons/filter-button/FilterButton.styles.js +11 -0
  63. package/lib/cjs/components/filter-buttons/filter-button/FilterButton.styles.js.map +1 -1
  64. package/lib/cjs/components/grid-image/GridImage.js +20 -2
  65. package/lib/cjs/components/grid-image/GridImage.js.map +1 -1
  66. package/lib/cjs/components/grid-image/GridImage.styles.js +11 -2
  67. package/lib/cjs/components/grid-image/GridImage.styles.js.map +1 -1
  68. package/lib/cjs/components/grouped-image/GroupedImage.js +23 -4
  69. package/lib/cjs/components/grouped-image/GroupedImage.js.map +1 -1
  70. package/lib/cjs/components/grouped-image/GroupedImage.styles.js +9 -0
  71. package/lib/cjs/components/grouped-image/GroupedImage.styles.js.map +1 -1
  72. package/lib/cjs/components/highlight-slider/HighlightSlider.js +10 -3
  73. package/lib/cjs/components/highlight-slider/HighlightSlider.js.map +1 -1
  74. package/lib/cjs/components/highlight-slider/highlight-slider-item/HighlightSliderItem.js +21 -4
  75. package/lib/cjs/components/highlight-slider/highlight-slider-item/HighlightSliderItem.js.map +1 -1
  76. package/lib/cjs/components/highlight-slider/highlight-slider-item/HighlightSliderItem.styles.js +11 -2
  77. package/lib/cjs/components/highlight-slider/highlight-slider-item/HighlightSliderItem.styles.js.map +1 -1
  78. package/lib/cjs/components/icon/Icon.js +24 -5
  79. package/lib/cjs/components/icon/Icon.js.map +1 -1
  80. package/lib/cjs/components/icon/Icon.styles.js +23 -0
  81. package/lib/cjs/components/icon/Icon.styles.js.map +1 -1
  82. package/lib/cjs/components/input/Input.js +29 -8
  83. package/lib/cjs/components/input/Input.js.map +1 -1
  84. package/lib/cjs/components/input/Input.styles.js +33 -3
  85. package/lib/cjs/components/input/Input.styles.js.map +1 -1
  86. package/lib/cjs/components/list/List.js +124 -37
  87. package/lib/cjs/components/list/List.js.map +1 -1
  88. package/lib/cjs/components/list/List.utils.js +107 -1
  89. package/lib/cjs/components/list/List.utils.js.map +1 -1
  90. package/lib/cjs/components/list/list-item/ListItem.js +82 -3
  91. package/lib/cjs/components/list/list-item/ListItem.js.map +1 -1
  92. package/lib/cjs/components/list/list-item/ListItem.styles.js +9 -0
  93. package/lib/cjs/components/list/list-item/ListItem.styles.js.map +1 -1
  94. package/lib/cjs/components/list/list-item/list-item-head/ListItemHead.js +40 -5
  95. package/lib/cjs/components/list/list-item/list-item-head/ListItemHead.js.map +1 -1
  96. package/lib/cjs/components/list/list-item/list-item-head/ListItemHead.styles.js +5 -1
  97. package/lib/cjs/components/list/list-item/list-item-head/ListItemHead.styles.js.map +1 -1
  98. package/lib/cjs/components/list/list-item/list-item-head/list-item-right-element/ListItemRightElement.js +32 -1
  99. package/lib/cjs/components/list/list-item/list-item-head/list-item-right-element/ListItemRightElement.js.map +1 -1
  100. package/lib/cjs/components/list/list-item/list-item-head/list-item-subtitle/ListItemSubtitle.js +32 -1
  101. package/lib/cjs/components/list/list-item/list-item-head/list-item-subtitle/ListItemSubtitle.js.map +1 -1
  102. package/lib/cjs/components/list/list-item/list-item-head/list-item-title/ListItemTitle.js +30 -1
  103. package/lib/cjs/components/list/list-item/list-item-head/list-item-title/ListItemTitle.js.map +1 -1
  104. package/lib/cjs/components/list/list-item/useListItemFocus.js +47 -0
  105. package/lib/cjs/components/list/list-item/useListItemFocus.js.map +1 -0
  106. package/lib/cjs/components/masonry/Masonry.context.js +17 -0
  107. package/lib/cjs/components/masonry/Masonry.context.js.map +1 -0
  108. package/lib/cjs/components/masonry/Masonry.hooks.js +53 -0
  109. package/lib/cjs/components/masonry/Masonry.hooks.js.map +1 -0
  110. package/lib/cjs/components/masonry/Masonry.js +81 -0
  111. package/lib/cjs/components/masonry/Masonry.js.map +1 -0
  112. package/lib/cjs/components/masonry/Masonry.styles.js +16 -0
  113. package/lib/cjs/components/masonry/Masonry.styles.js.map +1 -0
  114. package/lib/cjs/components/masonry/Masonry.types.js +6 -0
  115. package/lib/cjs/components/masonry/Masonry.types.js.map +1 -0
  116. package/lib/cjs/components/masonry/Masonry.utils.js +121 -0
  117. package/lib/cjs/components/masonry/Masonry.utils.js.map +1 -0
  118. package/lib/cjs/components/masonry/masonry-item/MasonryItem.js +77 -0
  119. package/lib/cjs/components/masonry/masonry-item/MasonryItem.js.map +1 -0
  120. package/lib/cjs/components/masonry/masonry-item/MasonryItem.styles.js +17 -0
  121. package/lib/cjs/components/masonry/masonry-item/MasonryItem.styles.js.map +1 -0
  122. package/lib/cjs/components/mention-finder/MentionFinder.js +31 -2
  123. package/lib/cjs/components/mention-finder/MentionFinder.js.map +1 -1
  124. package/lib/cjs/components/mention-finder/mention-finder-item/MentionFinderItem.styles.js.map +1 -1
  125. package/lib/cjs/components/multi-action-button/MultiActionButton.js +36 -3
  126. package/lib/cjs/components/multi-action-button/MultiActionButton.js.map +1 -1
  127. package/lib/cjs/components/multi-action-button/MultiActionButton.types.js.map +1 -1
  128. package/lib/cjs/components/multi-action-button/action-button/ActionButton.js +7 -1
  129. package/lib/cjs/components/multi-action-button/action-button/ActionButton.js.map +1 -1
  130. package/lib/cjs/components/multi-action-button/action-button/ActionButton.styles.js +12 -0
  131. package/lib/cjs/components/multi-action-button/action-button/ActionButton.styles.js.map +1 -1
  132. package/lib/cjs/components/number-input/NumberInput.js +13 -10
  133. package/lib/cjs/components/number-input/NumberInput.js.map +1 -1
  134. package/lib/cjs/components/page-provider/PageProvider.js +4 -2
  135. package/lib/cjs/components/page-provider/PageProvider.js.map +1 -1
  136. package/lib/cjs/components/popup/Popup.js +8 -1
  137. package/lib/cjs/components/popup/Popup.js.map +1 -1
  138. package/lib/cjs/components/radio-button/RadioButton.js +29 -15
  139. package/lib/cjs/components/radio-button/RadioButton.js.map +1 -1
  140. package/lib/cjs/components/radio-button/RadioButton.styles.js +19 -8
  141. package/lib/cjs/components/radio-button/RadioButton.styles.js.map +1 -1
  142. package/lib/cjs/components/radio-button/radio-button-group/RadioButtonGroup.js +7 -4
  143. package/lib/cjs/components/radio-button/radio-button-group/RadioButtonGroup.js.map +1 -1
  144. package/lib/cjs/components/search-box/SearchBox.js +5 -2
  145. package/lib/cjs/components/search-box/SearchBox.js.map +1 -1
  146. package/lib/cjs/components/search-input/SearchInput.js +40 -41
  147. package/lib/cjs/components/search-input/SearchInput.js.map +1 -1
  148. package/lib/cjs/components/search-input/SearchInput.styles.js +25 -2
  149. package/lib/cjs/components/search-input/SearchInput.styles.js.map +1 -1
  150. package/lib/cjs/components/select-button/SelectButton.js +4 -2
  151. package/lib/cjs/components/select-button/SelectButton.js.map +1 -1
  152. package/lib/cjs/components/setup-wizard/SetupWizard.js +7 -4
  153. package/lib/cjs/components/setup-wizard/SetupWizard.js.map +1 -1
  154. package/lib/cjs/components/setup-wizard/setup-wizard-item/SetupWizardItem.js +5 -3
  155. package/lib/cjs/components/setup-wizard/setup-wizard-item/SetupWizardItem.js.map +1 -1
  156. package/lib/cjs/components/sharing-bar/SharingBar.js +31 -6
  157. package/lib/cjs/components/sharing-bar/SharingBar.js.map +1 -1
  158. package/lib/cjs/components/sharing-bar/SharingBar.styles.js +5 -0
  159. package/lib/cjs/components/sharing-bar/SharingBar.styles.js.map +1 -1
  160. package/lib/cjs/components/sharing-button/SharingButton.js +4 -2
  161. package/lib/cjs/components/sharing-button/SharingButton.js.map +1 -1
  162. package/lib/cjs/components/sharing-context-menu/SharingContextMenu.js +3 -1
  163. package/lib/cjs/components/sharing-context-menu/SharingContextMenu.js.map +1 -1
  164. package/lib/cjs/components/signature/Signature.js +6 -3
  165. package/lib/cjs/components/signature/Signature.js.map +1 -1
  166. package/lib/cjs/components/slider/Slider.js +30 -7
  167. package/lib/cjs/components/slider/Slider.js.map +1 -1
  168. package/lib/cjs/components/slider/Slider.styles.js +9 -2
  169. package/lib/cjs/components/slider/Slider.styles.js.map +1 -1
  170. package/lib/cjs/components/slider-button/SliderButton.js +63 -6
  171. package/lib/cjs/components/slider-button/SliderButton.js.map +1 -1
  172. package/lib/cjs/components/slider-button/SliderButton.styles.js +19 -2
  173. package/lib/cjs/components/slider-button/SliderButton.styles.js.map +1 -1
  174. package/lib/cjs/components/slider-button/SliderButton.types.js +6 -0
  175. package/lib/cjs/components/slider-button/SliderButton.types.js.map +1 -0
  176. package/lib/cjs/components/slider-button/useSliderButtonPopupKeyboard.js +66 -0
  177. package/lib/cjs/components/slider-button/useSliderButtonPopupKeyboard.js.map +1 -0
  178. package/lib/cjs/components/slider-button/useSliderButtonThumbKeyboard.js +47 -0
  179. package/lib/cjs/components/slider-button/useSliderButtonThumbKeyboard.js.map +1 -0
  180. package/lib/cjs/components/tag-input/TagInput.js +91 -36
  181. package/lib/cjs/components/tag-input/TagInput.js.map +1 -1
  182. package/lib/cjs/components/tag-input/TagInput.styles.js +31 -3
  183. package/lib/cjs/components/tag-input/TagInput.styles.js.map +1 -1
  184. package/lib/cjs/components/text-area/TextArea.js +17 -8
  185. package/lib/cjs/components/text-area/TextArea.js.map +1 -1
  186. package/lib/cjs/components/text-area/TextArea.styles.js +15 -1
  187. package/lib/cjs/components/text-area/TextArea.styles.js.map +1 -1
  188. package/lib/cjs/components/truncation/Truncation.js +17 -3
  189. package/lib/cjs/components/truncation/Truncation.js.map +1 -1
  190. package/lib/cjs/components/truncation/Truncation.styles.js +19 -1
  191. package/lib/cjs/components/truncation/Truncation.styles.js.map +1 -1
  192. package/lib/cjs/hooks/useKeyboardFocusHighlighting.js +68 -0
  193. package/lib/cjs/hooks/useKeyboardFocusHighlighting.js.map +1 -0
  194. package/lib/cjs/index.js +7 -0
  195. package/lib/cjs/index.js.map +1 -1
  196. package/lib/cjs/utils/file.js.map +1 -1
  197. package/lib/cjs/utils/keyboardFocusHighlighting.styles.js +30 -0
  198. package/lib/cjs/utils/keyboardFocusHighlighting.styles.js.map +1 -0
  199. package/lib/esm/components/accordion/Accordion.js +105 -12
  200. package/lib/esm/components/accordion/Accordion.js.map +1 -1
  201. package/lib/esm/components/accordion/Accordion.styles.js +23 -3
  202. package/lib/esm/components/accordion/Accordion.styles.js.map +1 -1
  203. package/lib/esm/components/accordion/accordion-body/AccordionBody.styles.js +3 -1
  204. package/lib/esm/components/accordion/accordion-body/AccordionBody.styles.js.map +1 -1
  205. package/lib/esm/components/accordion/accordion-group/AccordionGroup.js +33 -19
  206. package/lib/esm/components/accordion/accordion-group/AccordionGroup.js.map +1 -1
  207. package/lib/esm/components/accordion/accordion-head/AccordionHead.js +6 -3
  208. package/lib/esm/components/accordion/accordion-head/AccordionHead.js.map +1 -1
  209. package/lib/esm/components/accordion/accordion-head/AccordionHead.styles.js +14 -0
  210. package/lib/esm/components/accordion/accordion-head/AccordionHead.styles.js.map +1 -1
  211. package/lib/esm/components/amount-control/AmountControl.js +30 -16
  212. package/lib/esm/components/amount-control/AmountControl.js.map +1 -1
  213. package/lib/esm/components/amount-control/AmountControl.styles.js +18 -2
  214. package/lib/esm/components/amount-control/AmountControl.styles.js.map +1 -1
  215. package/lib/esm/components/button/Button.js +5 -1
  216. package/lib/esm/components/button/Button.js.map +1 -1
  217. package/lib/esm/components/button/Button.styles.js +17 -0
  218. package/lib/esm/components/button/Button.styles.js.map +1 -1
  219. package/lib/esm/components/button/Button.types.js.map +1 -1
  220. package/lib/esm/components/checkbox/Checkbox.js +5 -1
  221. package/lib/esm/components/checkbox/Checkbox.js.map +1 -1
  222. package/lib/esm/components/checkbox/Checkbox.styles.js +29 -2
  223. package/lib/esm/components/checkbox/Checkbox.styles.js.map +1 -1
  224. package/lib/esm/components/color-scheme-provider/ColorSchemeProvider.js +7 -2
  225. package/lib/esm/components/color-scheme-provider/ColorSchemeProvider.js.map +1 -1
  226. package/lib/esm/components/color-scheme-provider/ColorSchemeProvider.styles.js +8 -2
  227. package/lib/esm/components/color-scheme-provider/ColorSchemeProvider.styles.js.map +1 -1
  228. package/lib/esm/components/combobox/ComboBox.js +50 -5
  229. package/lib/esm/components/combobox/ComboBox.js.map +1 -1
  230. package/lib/esm/components/combobox/ComboBox.styles.js +11 -0
  231. package/lib/esm/components/combobox/ComboBox.styles.js.map +1 -1
  232. package/lib/esm/components/combobox/ComboBox.types.js.map +1 -1
  233. package/lib/esm/components/context-menu/ContextMenu.js +99 -5
  234. package/lib/esm/components/context-menu/ContextMenu.js.map +1 -1
  235. package/lib/esm/components/context-menu/ContextMenu.styles.js +38 -0
  236. package/lib/esm/components/context-menu/ContextMenu.styles.js.map +1 -1
  237. package/lib/esm/components/context-menu/ContextMenu.types.js.map +1 -1
  238. package/lib/esm/components/file-input/FileInput.js +4 -2
  239. package/lib/esm/components/file-input/FileInput.js.map +1 -1
  240. package/lib/esm/components/file-list/file-item/FileItem.js +24 -3
  241. package/lib/esm/components/file-list/file-item/FileItem.js.map +1 -1
  242. package/lib/esm/components/file-list/file-item/FileItem.styles.js +18 -0
  243. package/lib/esm/components/file-list/file-item/FileItem.styles.js.map +1 -1
  244. package/lib/esm/components/file-select/FileSelect.js +27 -4
  245. package/lib/esm/components/file-select/FileSelect.js.map +1 -1
  246. package/lib/esm/components/file-select/FileSelect.styles.js +10 -0
  247. package/lib/esm/components/file-select/FileSelect.styles.js.map +1 -1
  248. package/lib/esm/components/filter/Filter.js +52 -16
  249. package/lib/esm/components/filter/Filter.js.map +1 -1
  250. package/lib/esm/components/filter/Filter.styles.js +9 -0
  251. package/lib/esm/components/filter/Filter.styles.js.map +1 -1
  252. package/lib/esm/components/filter/filter-content/FilterContent.js +15 -5
  253. package/lib/esm/components/filter/filter-content/FilterContent.js.map +1 -1
  254. package/lib/esm/components/filter/filter-content/FilterContent.types.js.map +1 -1
  255. package/lib/esm/components/filter-buttons/FilterButtons.js +69 -5
  256. package/lib/esm/components/filter-buttons/FilterButtons.js.map +1 -1
  257. package/lib/esm/components/filter-buttons/filter-button/FilterButton.js +40 -2
  258. package/lib/esm/components/filter-buttons/filter-button/FilterButton.js.map +1 -1
  259. package/lib/esm/components/filter-buttons/filter-button/FilterButton.styles.js +11 -0
  260. package/lib/esm/components/filter-buttons/filter-button/FilterButton.styles.js.map +1 -1
  261. package/lib/esm/components/grid-image/GridImage.js +20 -2
  262. package/lib/esm/components/grid-image/GridImage.js.map +1 -1
  263. package/lib/esm/components/grid-image/GridImage.styles.js +10 -1
  264. package/lib/esm/components/grid-image/GridImage.styles.js.map +1 -1
  265. package/lib/esm/components/grouped-image/GroupedImage.js +22 -4
  266. package/lib/esm/components/grouped-image/GroupedImage.js.map +1 -1
  267. package/lib/esm/components/grouped-image/GroupedImage.styles.js +9 -0
  268. package/lib/esm/components/grouped-image/GroupedImage.styles.js.map +1 -1
  269. package/lib/esm/components/highlight-slider/HighlightSlider.js +10 -3
  270. package/lib/esm/components/highlight-slider/HighlightSlider.js.map +1 -1
  271. package/lib/esm/components/highlight-slider/highlight-slider-item/HighlightSliderItem.js +20 -3
  272. package/lib/esm/components/highlight-slider/highlight-slider-item/HighlightSliderItem.js.map +1 -1
  273. package/lib/esm/components/highlight-slider/highlight-slider-item/HighlightSliderItem.styles.js +10 -1
  274. package/lib/esm/components/highlight-slider/highlight-slider-item/HighlightSliderItem.styles.js.map +1 -1
  275. package/lib/esm/components/icon/Icon.js +26 -7
  276. package/lib/esm/components/icon/Icon.js.map +1 -1
  277. package/lib/esm/components/icon/Icon.styles.js +23 -0
  278. package/lib/esm/components/icon/Icon.styles.js.map +1 -1
  279. package/lib/esm/components/input/Input.js +24 -4
  280. package/lib/esm/components/input/Input.js.map +1 -1
  281. package/lib/esm/components/input/Input.styles.js +33 -3
  282. package/lib/esm/components/input/Input.styles.js.map +1 -1
  283. package/lib/esm/components/list/List.js +123 -37
  284. package/lib/esm/components/list/List.js.map +1 -1
  285. package/lib/esm/components/list/List.utils.js +99 -0
  286. package/lib/esm/components/list/List.utils.js.map +1 -1
  287. package/lib/esm/components/list/list-item/ListItem.js +83 -4
  288. package/lib/esm/components/list/list-item/ListItem.js.map +1 -1
  289. package/lib/esm/components/list/list-item/ListItem.styles.js +9 -0
  290. package/lib/esm/components/list/list-item/ListItem.styles.js.map +1 -1
  291. package/lib/esm/components/list/list-item/list-item-head/ListItemHead.js +41 -6
  292. package/lib/esm/components/list/list-item/list-item-head/ListItemHead.js.map +1 -1
  293. package/lib/esm/components/list/list-item/list-item-head/ListItemHead.styles.js +4 -0
  294. package/lib/esm/components/list/list-item/list-item-head/ListItemHead.styles.js.map +1 -1
  295. package/lib/esm/components/list/list-item/list-item-head/list-item-right-element/ListItemRightElement.js +33 -2
  296. package/lib/esm/components/list/list-item/list-item-head/list-item-right-element/ListItemRightElement.js.map +1 -1
  297. package/lib/esm/components/list/list-item/list-item-head/list-item-subtitle/ListItemSubtitle.js +33 -2
  298. package/lib/esm/components/list/list-item/list-item-head/list-item-subtitle/ListItemSubtitle.js.map +1 -1
  299. package/lib/esm/components/list/list-item/list-item-head/list-item-title/ListItemTitle.js +30 -1
  300. package/lib/esm/components/list/list-item/list-item-head/list-item-title/ListItemTitle.js.map +1 -1
  301. package/lib/esm/components/list/list-item/useListItemFocus.js +40 -0
  302. package/lib/esm/components/list/list-item/useListItemFocus.js.map +1 -0
  303. package/lib/esm/components/masonry/Masonry.context.js +10 -0
  304. package/lib/esm/components/masonry/Masonry.context.js.map +1 -0
  305. package/lib/esm/components/masonry/Masonry.hooks.js +44 -0
  306. package/lib/esm/components/masonry/Masonry.hooks.js.map +1 -0
  307. package/lib/esm/components/masonry/Masonry.js +74 -0
  308. package/lib/esm/components/masonry/Masonry.js.map +1 -0
  309. package/lib/esm/components/masonry/Masonry.styles.js +9 -0
  310. package/lib/esm/components/masonry/Masonry.styles.js.map +1 -0
  311. package/lib/esm/components/masonry/Masonry.types.js +2 -0
  312. package/lib/esm/components/masonry/Masonry.types.js.map +1 -0
  313. package/lib/esm/components/masonry/Masonry.utils.js +110 -0
  314. package/lib/esm/components/masonry/Masonry.utils.js.map +1 -0
  315. package/lib/esm/components/masonry/masonry-item/MasonryItem.js +69 -0
  316. package/lib/esm/components/masonry/masonry-item/MasonryItem.js.map +1 -0
  317. package/lib/esm/components/masonry/masonry-item/MasonryItem.styles.js +10 -0
  318. package/lib/esm/components/masonry/masonry-item/MasonryItem.styles.js.map +1 -0
  319. package/lib/esm/components/mention-finder/MentionFinder.js +30 -2
  320. package/lib/esm/components/mention-finder/MentionFinder.js.map +1 -1
  321. package/lib/esm/components/mention-finder/mention-finder-item/MentionFinderItem.styles.js.map +1 -1
  322. package/lib/esm/components/multi-action-button/MultiActionButton.js +36 -3
  323. package/lib/esm/components/multi-action-button/MultiActionButton.js.map +1 -1
  324. package/lib/esm/components/multi-action-button/MultiActionButton.types.js.map +1 -1
  325. package/lib/esm/components/multi-action-button/action-button/ActionButton.js +7 -1
  326. package/lib/esm/components/multi-action-button/action-button/ActionButton.js.map +1 -1
  327. package/lib/esm/components/multi-action-button/action-button/ActionButton.styles.js +12 -0
  328. package/lib/esm/components/multi-action-button/action-button/ActionButton.styles.js.map +1 -1
  329. package/lib/esm/components/number-input/NumberInput.js +13 -10
  330. package/lib/esm/components/number-input/NumberInput.js.map +1 -1
  331. package/lib/esm/components/page-provider/PageProvider.js +4 -2
  332. package/lib/esm/components/page-provider/PageProvider.js.map +1 -1
  333. package/lib/esm/components/popup/Popup.js +8 -1
  334. package/lib/esm/components/popup/Popup.js.map +1 -1
  335. package/lib/esm/components/radio-button/RadioButton.js +29 -15
  336. package/lib/esm/components/radio-button/RadioButton.js.map +1 -1
  337. package/lib/esm/components/radio-button/RadioButton.styles.js +19 -8
  338. package/lib/esm/components/radio-button/RadioButton.styles.js.map +1 -1
  339. package/lib/esm/components/radio-button/radio-button-group/RadioButtonGroup.js +7 -4
  340. package/lib/esm/components/radio-button/radio-button-group/RadioButtonGroup.js.map +1 -1
  341. package/lib/esm/components/search-box/SearchBox.js +5 -2
  342. package/lib/esm/components/search-box/SearchBox.js.map +1 -1
  343. package/lib/esm/components/search-input/SearchInput.js +41 -42
  344. package/lib/esm/components/search-input/SearchInput.js.map +1 -1
  345. package/lib/esm/components/search-input/SearchInput.styles.js +24 -1
  346. package/lib/esm/components/search-input/SearchInput.styles.js.map +1 -1
  347. package/lib/esm/components/select-button/SelectButton.js +4 -2
  348. package/lib/esm/components/select-button/SelectButton.js.map +1 -1
  349. package/lib/esm/components/setup-wizard/SetupWizard.js +7 -4
  350. package/lib/esm/components/setup-wizard/SetupWizard.js.map +1 -1
  351. package/lib/esm/components/setup-wizard/setup-wizard-item/SetupWizardItem.js +5 -3
  352. package/lib/esm/components/setup-wizard/setup-wizard-item/SetupWizardItem.js.map +1 -1
  353. package/lib/esm/components/sharing-bar/SharingBar.js +30 -5
  354. package/lib/esm/components/sharing-bar/SharingBar.js.map +1 -1
  355. package/lib/esm/components/sharing-bar/SharingBar.styles.js +5 -0
  356. package/lib/esm/components/sharing-bar/SharingBar.styles.js.map +1 -1
  357. package/lib/esm/components/sharing-button/SharingButton.js +4 -2
  358. package/lib/esm/components/sharing-button/SharingButton.js.map +1 -1
  359. package/lib/esm/components/sharing-context-menu/SharingContextMenu.js +3 -1
  360. package/lib/esm/components/sharing-context-menu/SharingContextMenu.js.map +1 -1
  361. package/lib/esm/components/signature/Signature.js +6 -3
  362. package/lib/esm/components/signature/Signature.js.map +1 -1
  363. package/lib/esm/components/slider/Slider.js +30 -7
  364. package/lib/esm/components/slider/Slider.js.map +1 -1
  365. package/lib/esm/components/slider/Slider.styles.js +8 -1
  366. package/lib/esm/components/slider/Slider.styles.js.map +1 -1
  367. package/lib/esm/components/slider-button/SliderButton.js +62 -6
  368. package/lib/esm/components/slider-button/SliderButton.js.map +1 -1
  369. package/lib/esm/components/slider-button/SliderButton.styles.js +18 -1
  370. package/lib/esm/components/slider-button/SliderButton.styles.js.map +1 -1
  371. package/lib/esm/components/slider-button/SliderButton.types.js +2 -0
  372. package/lib/esm/components/slider-button/SliderButton.types.js.map +1 -0
  373. package/lib/esm/components/slider-button/useSliderButtonPopupKeyboard.js +56 -0
  374. package/lib/esm/components/slider-button/useSliderButtonPopupKeyboard.js.map +1 -0
  375. package/lib/esm/components/slider-button/useSliderButtonThumbKeyboard.js +38 -0
  376. package/lib/esm/components/slider-button/useSliderButtonThumbKeyboard.js.map +1 -0
  377. package/lib/esm/components/tag-input/TagInput.js +85 -35
  378. package/lib/esm/components/tag-input/TagInput.js.map +1 -1
  379. package/lib/esm/components/tag-input/TagInput.styles.js +29 -1
  380. package/lib/esm/components/tag-input/TagInput.styles.js.map +1 -1
  381. package/lib/esm/components/text-area/TextArea.js +18 -9
  382. package/lib/esm/components/text-area/TextArea.js.map +1 -1
  383. package/lib/esm/components/text-area/TextArea.styles.js +14 -0
  384. package/lib/esm/components/text-area/TextArea.styles.js.map +1 -1
  385. package/lib/esm/components/truncation/Truncation.js +18 -4
  386. package/lib/esm/components/truncation/Truncation.js.map +1 -1
  387. package/lib/esm/components/truncation/Truncation.styles.js +18 -0
  388. package/lib/esm/components/truncation/Truncation.styles.js.map +1 -1
  389. package/lib/esm/hooks/useKeyboardFocusHighlighting.js +61 -0
  390. package/lib/esm/hooks/useKeyboardFocusHighlighting.js.map +1 -0
  391. package/lib/esm/index.js +1 -0
  392. package/lib/esm/index.js.map +1 -1
  393. package/lib/esm/utils/file.js.map +1 -1
  394. package/lib/esm/utils/keyboardFocusHighlighting.styles.js +25 -0
  395. package/lib/esm/utils/keyboardFocusHighlighting.styles.js.map +1 -0
  396. package/lib/types/components/accordion/Accordion.d.ts +5 -0
  397. package/lib/types/components/accordion/Accordion.styles.d.ts +8 -4
  398. package/lib/types/components/accordion/accordion-body/AccordionBody.styles.d.ts +2 -2
  399. package/lib/types/components/accordion/accordion-group/AccordionGroup.d.ts +7 -2
  400. package/lib/types/components/accordion/accordion-head/AccordionHead.d.ts +1 -0
  401. package/lib/types/components/accordion/accordion-head/AccordionHead.styles.d.ts +18 -18
  402. package/lib/types/components/amount-control/AmountControl.d.ts +5 -0
  403. package/lib/types/components/amount-control/AmountControl.styles.d.ts +8 -4
  404. package/lib/types/components/button/Button.styles.d.ts +8 -6
  405. package/lib/types/components/button/Button.types.d.ts +8 -0
  406. package/lib/types/components/checkbox/Checkbox.d.ts +4 -0
  407. package/lib/types/components/checkbox/Checkbox.styles.d.ts +5 -1
  408. package/lib/types/components/color-scheme-provider/ColorSchemeProvider.d.ts +5 -0
  409. package/lib/types/components/combobox/ComboBox.styles.d.ts +4 -2
  410. package/lib/types/components/combobox/ComboBox.types.d.ts +5 -0
  411. package/lib/types/components/context-menu/ContextMenu.styles.d.ts +4 -2
  412. package/lib/types/components/context-menu/ContextMenu.types.d.ts +6 -0
  413. package/lib/types/components/context-menu/context-menu-content/ContextMenuContent.styles.d.ts +2 -2
  414. package/lib/types/components/dropdown-body-wrapper/delayed-dropdown-content/DelayedDropdownContent.styles.d.ts +2 -2
  415. package/lib/types/components/expandable-content/ExpandableContent.styles.d.ts +2 -2
  416. package/lib/types/components/file-input/FileInput.d.ts +4 -0
  417. package/lib/types/components/file-input/FileInput.styles.d.ts +2 -2
  418. package/lib/types/components/file-list/file-item/FileItem.styles.d.ts +3 -0
  419. package/lib/types/components/file-select/FileSelect.d.ts +4 -0
  420. package/lib/types/components/file-select/FileSelect.styles.d.ts +6 -4
  421. package/lib/types/components/filter/Filter.d.ts +1 -0
  422. package/lib/types/components/filter/Filter.styles.d.ts +6 -4
  423. package/lib/types/components/filter/filter-content/FilterContent.types.d.ts +4 -0
  424. package/lib/types/components/filter-buttons/FilterButtons.d.ts +4 -0
  425. package/lib/types/components/filter-buttons/filter-button/FilterButton.d.ts +5 -0
  426. package/lib/types/components/filter-buttons/filter-button/FilterButton.styles.d.ts +12 -8
  427. package/lib/types/components/grid-image/GridImage.d.ts +4 -0
  428. package/lib/types/components/grid-image/GridImage.styles.d.ts +4 -2
  429. package/lib/types/components/grouped-image/GroupedImage.d.ts +4 -0
  430. package/lib/types/components/grouped-image/GroupedImage.styles.d.ts +8 -6
  431. package/lib/types/components/highlight-slider/HighlightSlider.d.ts +4 -0
  432. package/lib/types/components/highlight-slider/highlight-slider-item/HighlightSliderItem.d.ts +3 -0
  433. package/lib/types/components/highlight-slider/highlight-slider-item/HighlightSliderItem.styles.d.ts +9 -5
  434. package/lib/types/components/icon/Icon.d.ts +4 -0
  435. package/lib/types/components/icon/Icon.styles.d.ts +1 -0
  436. package/lib/types/components/input/Input.d.ts +4 -0
  437. package/lib/types/components/input/Input.styles.d.ts +17 -9
  438. package/lib/types/components/list/List.d.ts +11 -0
  439. package/lib/types/components/list/List.utils.d.ts +16 -1
  440. package/lib/types/components/list/list-item/ListItem.styles.d.ts +64 -64
  441. package/lib/types/components/list/list-item/list-item-body/ListItemBody.styles.d.ts +2 -2
  442. package/lib/types/components/list/list-item/list-item-head/ListItemHead.d.ts +1 -0
  443. package/lib/types/components/list/list-item/list-item-head/ListItemHead.styles.d.ts +195 -194
  444. package/lib/types/components/list/list-item/list-item-head/list-item-right-element/ListItemRightElement.d.ts +1 -0
  445. package/lib/types/components/list/list-item/list-item-head/list-item-subtitle/ListItemSubtitle.d.ts +1 -0
  446. package/lib/types/components/list/list-item/list-item-head/list-item-title/ListItemTitle.d.ts +1 -0
  447. package/lib/types/components/list/list-item/useListItemFocus.d.ts +13 -0
  448. package/lib/types/components/masonry/Masonry.context.d.ts +3 -0
  449. package/lib/types/components/masonry/Masonry.d.ts +3 -0
  450. package/lib/types/components/masonry/Masonry.hooks.d.ts +22 -0
  451. package/lib/types/components/masonry/Masonry.styles.d.ts +5 -0
  452. package/lib/types/components/masonry/Masonry.types.d.ts +40 -0
  453. package/lib/types/components/masonry/Masonry.utils.d.ts +22 -0
  454. package/lib/types/components/masonry/masonry-item/MasonryItem.d.ts +5 -0
  455. package/lib/types/components/masonry/masonry-item/MasonryItem.styles.d.ts +5 -0
  456. package/lib/types/components/mention-finder/MentionFinder.styles.d.ts +4 -4
  457. package/lib/types/components/multi-action-button/MultiActionButton.styles.d.ts +2 -2
  458. package/lib/types/components/multi-action-button/MultiActionButton.types.d.ts +7 -0
  459. package/lib/types/components/multi-action-button/action-button/ActionButton.d.ts +4 -1
  460. package/lib/types/components/multi-action-button/action-button/ActionButton.styles.d.ts +4 -2
  461. package/lib/types/components/number-input/NumberInput.d.ts +4 -0
  462. package/lib/types/components/popup/popup-content-wrapper/PopupContentWrapper.styles.d.ts +2 -2
  463. package/lib/types/components/progress-bar/ProgressBar.styles.d.ts +6 -6
  464. package/lib/types/components/radio-button/RadioButton.d.ts +4 -0
  465. package/lib/types/components/radio-button/RadioButton.styles.d.ts +15 -9
  466. package/lib/types/components/radio-button/radio-button-group/RadioButtonGroup.d.ts +5 -0
  467. package/lib/types/components/search-box/SearchBox.d.ts +4 -0
  468. package/lib/types/components/search-box/SearchBox.styles.d.ts +2 -2
  469. package/lib/types/components/search-input/SearchInput.d.ts +4 -0
  470. package/lib/types/components/search-input/SearchInput.styles.d.ts +17 -9
  471. package/lib/types/components/select-button/SelectButton.d.ts +4 -0
  472. package/lib/types/components/setup-wizard/SetupWizard.d.ts +5 -0
  473. package/lib/types/components/sharing-bar/SharingBar.d.ts +4 -0
  474. package/lib/types/components/sharing-button/SharingButton.d.ts +1 -1
  475. package/lib/types/components/sharing-context-menu/SharingContextMenu.d.ts +10 -2
  476. package/lib/types/components/signature/Signature.d.ts +4 -0
  477. package/lib/types/components/skeleton/base-skeleton/BaseSkeleton.styles.d.ts +4 -4
  478. package/lib/types/components/slider/Slider.d.ts +8 -0
  479. package/lib/types/components/slider/Slider.styles.d.ts +18 -14
  480. package/lib/types/components/slider-button/SliderButton.d.ts +1 -28
  481. package/lib/types/components/slider-button/SliderButton.styles.d.ts +6 -4
  482. package/lib/types/components/slider-button/SliderButton.types.d.ts +32 -0
  483. package/lib/types/components/slider-button/useSliderButtonPopupKeyboard.d.ts +17 -0
  484. package/lib/types/components/slider-button/useSliderButtonThumbKeyboard.d.ts +13 -0
  485. package/lib/types/components/tag-input/TagInput.d.ts +4 -0
  486. package/lib/types/components/tag-input/TagInput.styles.d.ts +12 -2
  487. package/lib/types/components/text-area/TextArea.d.ts +4 -0
  488. package/lib/types/components/text-area/TextArea.styles.d.ts +1 -0
  489. package/lib/types/components/truncation/Truncation.d.ts +4 -0
  490. package/lib/types/components/truncation/Truncation.styles.d.ts +7 -2
  491. package/lib/types/hooks/useKeyboardFocusHighlighting.d.ts +5 -0
  492. package/lib/types/index.d.ts +1 -0
  493. package/lib/types/utils/file.d.ts +1 -1
  494. package/lib/types/utils/keyboardFocusHighlighting.styles.d.ts +9 -0
  495. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"ListItemSubtitle.js","names":["_react","_interopRequireWildcard","require","_ListItemSubtitle","_accordion","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ListItemSubtitle","rightElements","subtitle","isOpen","handlePreventClick","event","stopPropagation","preventDefault","bottomElement","useMemo","bottom","undefined","shouldPreventRightElementClick","getElementClickEvent","createElement","StyledListItemSubtitle","StyledListItemHeadSubtitleText","$isOpen","StyledListItemBottomRightElement","onClick","displayName","_default","exports"],"sources":["../../../../../../../src/components/list/list-item/list-item-head/list-item-subtitle/ListItemSubtitle.tsx"],"sourcesContent":["import React, { FC, ReactNode, useMemo } from 'react';\nimport type { IListItemRightElement, IListItemRightElements } from '../../../../../types/list';\nimport {\n StyledListItemHeadSubtitleText,\n StyledListItemSubtitle,\n StyledListItemBottomRightElement,\n} from './ListItemSubtitle.styles';\nimport { getElementClickEvent } from '../../../../../utils/accordion';\n\ntype ListItemSubtitleProps = {\n rightElements?: IListItemRightElements;\n subtitle?: ReactNode;\n isOpen: boolean;\n};\n\nconst ListItemSubtitle: FC<ListItemSubtitleProps> = ({ rightElements, subtitle, isOpen }) => {\n const handlePreventClick = (event: React.MouseEvent) => {\n event.stopPropagation();\n event.preventDefault();\n };\n\n const bottomElement = useMemo(() => {\n if (typeof rightElements === 'object' && rightElements && 'bottom' in rightElements) {\n return (rightElements as unknown as IListItemRightElement).bottom;\n }\n\n return undefined;\n }, [rightElements]);\n\n const shouldPreventRightElementClick = useMemo(() => {\n if (bottomElement) {\n return getElementClickEvent(bottomElement);\n }\n\n return false;\n }, [bottomElement]);\n\n return (\n <StyledListItemSubtitle>\n <StyledListItemHeadSubtitleText $isOpen={isOpen}>\n {subtitle}\n </StyledListItemHeadSubtitleText>\n {bottomElement && (\n <StyledListItemBottomRightElement\n onClick={shouldPreventRightElementClick ? handlePreventClick : undefined}\n >\n {bottomElement}\n </StyledListItemBottomRightElement>\n )}\n </StyledListItemSubtitle>\n );\n};\n\nListItemSubtitle.displayName = 'ListItemSubtitle';\n\nexport default ListItemSubtitle;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AAEA,IAAAC,iBAAA,GAAAD,OAAA;AAKA,IAAAE,UAAA,GAAAF,OAAA;AAAsE,SAAAD,wBAAAI,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAN,uBAAA,YAAAA,CAAAI,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAQtE,MAAMkB,gBAA2C,GAAGA,CAAC;EAAEC,aAAa;EAAEC,QAAQ;EAAEC;AAAO,CAAC,KAAK;EACzF,MAAMC,kBAAkB,GAAIC,KAAuB,IAAK;IACpDA,KAAK,CAACC,eAAe,CAAC,CAAC;IACvBD,KAAK,CAACE,cAAc,CAAC,CAAC;EAC1B,CAAC;EAED,MAAMC,aAAa,GAAG,IAAAC,cAAO,EAAC,MAAM;IAChC,IAAI,OAAOR,aAAa,KAAK,QAAQ,IAAIA,aAAa,IAAI,QAAQ,IAAIA,aAAa,EAAE;MACjF,OAAQA,aAAa,CAAsCS,MAAM;IACrE;IAEA,OAAOC,SAAS;EACpB,CAAC,EAAE,CAACV,aAAa,CAAC,CAAC;EAEnB,MAAMW,8BAA8B,GAAG,IAAAH,cAAO,EAAC,MAAM;IACjD,IAAID,aAAa,EAAE;MACf,OAAO,IAAAK,+BAAoB,EAACL,aAAa,CAAC;IAC9C;IAEA,OAAO,KAAK;EAChB,CAAC,EAAE,CAACA,aAAa,CAAC,CAAC;EAEnB,oBACIhC,MAAA,CAAAe,OAAA,CAAAuB,aAAA,CAACnC,iBAAA,CAAAoC,sBAAsB,qBACnBvC,MAAA,CAAAe,OAAA,CAAAuB,aAAA,CAACnC,iBAAA,CAAAqC,8BAA8B;IAACC,OAAO,EAAEd;EAAO,GAC3CD,QAC2B,CAAC,EAChCM,aAAa,iBACVhC,MAAA,CAAAe,OAAA,CAAAuB,aAAA,CAACnC,iBAAA,CAAAuC,gCAAgC;IAC7BC,OAAO,EAAEP,8BAA8B,GAAGR,kBAAkB,GAAGO;EAAU,GAExEH,aAC6B,CAElB,CAAC;AAEjC,CAAC;AAEDR,gBAAgB,CAACoB,WAAW,GAAG,kBAAkB;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAA/B,OAAA,GAEnCS,gBAAgB","ignoreList":[]}
1
+ {"version":3,"file":"ListItemSubtitle.js","names":["_react","_interopRequireWildcard","require","_ListItemSubtitle","_accordion","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ListItemSubtitle","rightElements","subtitle","isOpen","shouldAllowRightElementFocus","bottomElementRef","useRef","handlePreventClick","event","stopPropagation","preventDefault","bottomElement","useMemo","bottom","undefined","shouldPreventRightElementClick","getElementClickEvent","useEffect","bottomElementWrapper","current","focusableElements","Array","from","querySelectorAll","forEach","element","currentElement","datasetKey","originalTabIndex","dataset","removeAttribute","setAttribute","getAttribute","createElement","StyledListItemSubtitle","StyledListItemHeadSubtitleText","$isOpen","StyledListItemBottomRightElement","ref","onClick","displayName","_default","exports"],"sources":["../../../../../../../src/components/list/list-item/list-item-head/list-item-subtitle/ListItemSubtitle.tsx"],"sourcesContent":["import React, { FC, ReactNode, useEffect, useMemo, useRef } from 'react';\nimport type { IListItemRightElement, IListItemRightElements } from '../../../../../types/list';\nimport {\n StyledListItemHeadSubtitleText,\n StyledListItemSubtitle,\n StyledListItemBottomRightElement,\n} from './ListItemSubtitle.styles';\nimport { getElementClickEvent } from '../../../../../utils/accordion';\n\ntype ListItemSubtitleProps = {\n rightElements?: IListItemRightElements;\n subtitle?: ReactNode;\n isOpen: boolean;\n shouldAllowRightElementFocus?: boolean;\n};\n\nconst ListItemSubtitle: FC<ListItemSubtitleProps> = ({\n rightElements,\n subtitle,\n isOpen,\n shouldAllowRightElementFocus = true,\n}) => {\n const bottomElementRef = useRef<HTMLDivElement>(null);\n\n const handlePreventClick = (event: React.MouseEvent) => {\n event.stopPropagation();\n event.preventDefault();\n };\n\n const bottomElement = useMemo(() => {\n if (typeof rightElements === 'object' && rightElements && 'bottom' in rightElements) {\n return (rightElements as unknown as IListItemRightElement).bottom;\n }\n\n return undefined;\n }, [rightElements]);\n\n const shouldPreventRightElementClick = useMemo(() => {\n if (bottomElement) {\n return getElementClickEvent(bottomElement);\n }\n\n return false;\n }, [bottomElement]);\n\n useEffect(() => {\n const bottomElementWrapper = bottomElementRef.current;\n\n if (!bottomElementWrapper) {\n return;\n }\n\n const focusableElements = Array.from(\n bottomElementWrapper.querySelectorAll<HTMLElement>(\n 'a[href], button, input, select, textarea, [tabindex], [contenteditable=\"true\"]',\n ),\n );\n\n focusableElements.forEach((element) => {\n const currentElement = element;\n const datasetKey = 'listItemRightElementOriginalTabIndex';\n\n if (shouldAllowRightElementFocus) {\n const originalTabIndex = currentElement.dataset[datasetKey];\n\n if (typeof originalTabIndex === 'string') {\n if (originalTabIndex === '') {\n currentElement.removeAttribute('tabindex');\n } else {\n currentElement.setAttribute('tabindex', originalTabIndex);\n }\n\n delete currentElement.dataset[datasetKey];\n }\n } else {\n if (typeof currentElement.dataset[datasetKey] !== 'string') {\n currentElement.dataset[datasetKey] =\n currentElement.getAttribute('tabindex') ?? '';\n }\n\n currentElement.setAttribute('tabindex', '-1');\n }\n });\n }, [bottomElement, shouldAllowRightElementFocus]);\n\n return (\n <StyledListItemSubtitle>\n <StyledListItemHeadSubtitleText $isOpen={isOpen}>\n {subtitle}\n </StyledListItemHeadSubtitleText>\n {bottomElement && (\n <StyledListItemBottomRightElement\n data-right-element=\"true\"\n ref={bottomElementRef}\n onClick={shouldPreventRightElementClick ? handlePreventClick : undefined}\n >\n {bottomElement}\n </StyledListItemBottomRightElement>\n )}\n </StyledListItemSubtitle>\n );\n};\n\nListItemSubtitle.displayName = 'ListItemSubtitle';\n\nexport default ListItemSubtitle;\n"],"mappings":"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","ignoreList":[]}
@@ -15,7 +15,8 @@ const ListItemTitle = ({
15
15
  shouldShowMultilineTitle,
16
16
  isOpen,
17
17
  onResize,
18
- onTitleWidthChange
18
+ onTitleWidthChange,
19
+ shouldAllowRightElementFocus = true
19
20
  }) => {
20
21
  const titleWrapperRef = (0, _react.useRef)(null);
21
22
  const wrapperRef = (0, _react.useRef)(null);
@@ -60,6 +61,33 @@ const ListItemTitle = ({
60
61
  }
61
62
  return false;
62
63
  }, [topElement]);
64
+ (0, _react.useEffect)(() => {
65
+ const topElementWrapper = topElementWrapperRef.current;
66
+ if (!topElementWrapper) {
67
+ return;
68
+ }
69
+ const focusableElements = Array.from(topElementWrapper.querySelectorAll('a[href], button, input, select, textarea, [tabindex], [contenteditable="true"]'));
70
+ focusableElements.forEach(element => {
71
+ const currentElement = element;
72
+ const datasetKey = 'listItemRightElementOriginalTabIndex';
73
+ if (shouldAllowRightElementFocus) {
74
+ const originalTabIndex = currentElement.dataset[datasetKey];
75
+ if (typeof originalTabIndex === 'string') {
76
+ if (originalTabIndex === '') {
77
+ currentElement.removeAttribute('tabindex');
78
+ } else {
79
+ currentElement.setAttribute('tabindex', originalTabIndex);
80
+ }
81
+ delete currentElement.dataset[datasetKey];
82
+ }
83
+ } else {
84
+ if (typeof currentElement.dataset[datasetKey] !== 'string') {
85
+ currentElement.dataset[datasetKey] = currentElement.getAttribute('tabindex') ?? '';
86
+ }
87
+ currentElement.setAttribute('tabindex', '-1');
88
+ }
89
+ });
90
+ }, [shouldAllowRightElementFocus, topElement]);
63
91
  return /*#__PURE__*/_react.default.createElement(_ListItemTitle.StyledListItemTitle, {
64
92
  ref: wrapperRef
65
93
  }, /*#__PURE__*/_react.default.createElement(_ListItemTitle.StyledListItemTitleLeftWrapper, null, /*#__PURE__*/_react.default.createElement(_ListItemTitle.StyledListItemHeadTitleText, {
@@ -69,6 +97,7 @@ const ListItemTitle = ({
69
97
  }, title), /*#__PURE__*/_react.default.createElement(_ListItemTitle.StyledListItemHeadTitleElement, {
70
98
  ref: elementWrapperRef
71
99
  }, titleElement)), topElement && /*#__PURE__*/_react.default.createElement(_ListItemTitle.StyledListItemTopRightElement, {
100
+ "data-right-element": "true",
72
101
  ref: topElementWrapperRef,
73
102
  onClick: shouldPreventRightElementClick ? handlePreventClick : undefined
74
103
  }, topElement));
@@ -1 +1 @@
1
- {"version":3,"file":"ListItemTitle.js","names":["_react","_interopRequireWildcard","require","_ListItemTitle","_accordion","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ListItemTitle","rightElements","titleElement","title","shouldShowMultilineTitle","isOpen","onResize","onTitleWidthChange","titleWrapperRef","useRef","wrapperRef","elementWrapperRef","topElementWrapperRef","useEffect","element","current","undefined","resizeObserver","ResizeObserver","observe","disconnect","_topElementWrapperRef","fullWidth","clientWidth","rightElementWidth","topElementWidth","width","handlePreventClick","event","stopPropagation","preventDefault","topElement","useMemo","top","shouldPreventRightElementClick","getElementClickEvent","createElement","StyledListItemTitle","ref","StyledListItemTitleLeftWrapper","StyledListItemHeadTitleText","$isEllipsis","$shouldShowMultilineTitle","StyledListItemHeadTitleElement","StyledListItemTopRightElement","onClick","displayName","_default","exports"],"sources":["../../../../../../../src/components/list/list-item/list-item-head/list-item-title/ListItemTitle.tsx"],"sourcesContent":["import React, { FC, ReactNode, useEffect, useMemo, useRef } from 'react';\nimport type { IListItemRightElement, IListItemRightElements } from '../../../../../types/list';\nimport {\n StyledListItemHeadTitleElement,\n StyledListItemHeadTitleText,\n StyledListItemTitle,\n StyledListItemTitleLeftWrapper,\n StyledListItemTopRightElement,\n} from './ListItemTitle.styles';\nimport { getElementClickEvent } from '../../../../../utils/accordion';\n\ntype ListItemTitleProps = {\n rightElements?: IListItemRightElements;\n title: ReactNode;\n titleElement?: ReactNode;\n shouldShowMultilineTitle: boolean;\n isOpen: boolean;\n onResize?: (entries: ResizeObserverEntry[]) => void;\n onTitleWidthChange: (width: number) => void;\n};\n\nconst ListItemTitle: FC<ListItemTitleProps> = ({\n rightElements,\n titleElement,\n title,\n shouldShowMultilineTitle,\n isOpen,\n onResize,\n onTitleWidthChange,\n}) => {\n const titleWrapperRef = useRef<HTMLDivElement>(null);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const elementWrapperRef = useRef<HTMLDivElement>(null);\n const topElementWrapperRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const element = titleWrapperRef?.current;\n if (!element || typeof onResize !== 'function') return undefined;\n\n const resizeObserver = new ResizeObserver(onResize);\n resizeObserver.observe(element);\n\n return () => resizeObserver.disconnect();\n }, [onResize]);\n\n useEffect(() => {\n if (wrapperRef.current && elementWrapperRef.current) {\n const fullWidth = wrapperRef.current.clientWidth;\n const rightElementWidth = elementWrapperRef.current.clientWidth;\n const topElementWidth = topElementWrapperRef.current?.clientWidth;\n\n let width = fullWidth;\n\n if (rightElementWidth > 0) {\n width -= rightElementWidth + 8;\n }\n\n if (topElementWidth) {\n width -= topElementWidth + 12;\n }\n\n onTitleWidthChange(width);\n }\n }, [onTitleWidthChange]);\n\n const handlePreventClick = (event: React.MouseEvent) => {\n event.stopPropagation();\n event.preventDefault();\n };\n\n const topElement = useMemo(() => {\n if (typeof rightElements === 'object' && rightElements && 'top' in rightElements) {\n return (rightElements as unknown as IListItemRightElement).top;\n }\n\n return undefined;\n }, [rightElements]);\n\n const shouldPreventRightElementClick = useMemo(() => {\n if (topElement) {\n return getElementClickEvent(topElement);\n }\n\n return false;\n }, [topElement]);\n\n return (\n <StyledListItemTitle ref={wrapperRef}>\n <StyledListItemTitleLeftWrapper>\n <StyledListItemHeadTitleText\n $isEllipsis={!isOpen}\n ref={titleWrapperRef}\n $shouldShowMultilineTitle={shouldShowMultilineTitle}\n >\n {title}\n </StyledListItemHeadTitleText>\n <StyledListItemHeadTitleElement ref={elementWrapperRef}>\n {titleElement}\n </StyledListItemHeadTitleElement>\n </StyledListItemTitleLeftWrapper>\n {topElement && (\n <StyledListItemTopRightElement\n ref={topElementWrapperRef}\n onClick={shouldPreventRightElementClick ? handlePreventClick : undefined}\n >\n {topElement}\n </StyledListItemTopRightElement>\n )}\n </StyledListItemTitle>\n );\n};\n\nListItemTitle.displayName = 'ListItemTitle';\n\nexport default ListItemTitle;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ListItemTitle.js","names":["_react","_interopRequireWildcard","require","_ListItemTitle","_accordion","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ListItemTitle","rightElements","titleElement","title","shouldShowMultilineTitle","isOpen","onResize","onTitleWidthChange","shouldAllowRightElementFocus","titleWrapperRef","useRef","wrapperRef","elementWrapperRef","topElementWrapperRef","useEffect","element","current","undefined","resizeObserver","ResizeObserver","observe","disconnect","_topElementWrapperRef","fullWidth","clientWidth","rightElementWidth","topElementWidth","width","handlePreventClick","event","stopPropagation","preventDefault","topElement","useMemo","top","shouldPreventRightElementClick","getElementClickEvent","topElementWrapper","focusableElements","Array","from","querySelectorAll","forEach","currentElement","datasetKey","originalTabIndex","dataset","removeAttribute","setAttribute","getAttribute","createElement","StyledListItemTitle","ref","StyledListItemTitleLeftWrapper","StyledListItemHeadTitleText","$isEllipsis","$shouldShowMultilineTitle","StyledListItemHeadTitleElement","StyledListItemTopRightElement","onClick","displayName","_default","exports"],"sources":["../../../../../../../src/components/list/list-item/list-item-head/list-item-title/ListItemTitle.tsx"],"sourcesContent":["import React, { FC, ReactNode, useEffect, useMemo, useRef } from 'react';\nimport type { IListItemRightElement, IListItemRightElements } from '../../../../../types/list';\nimport {\n StyledListItemHeadTitleElement,\n StyledListItemHeadTitleText,\n StyledListItemTitle,\n StyledListItemTitleLeftWrapper,\n StyledListItemTopRightElement,\n} from './ListItemTitle.styles';\nimport { getElementClickEvent } from '../../../../../utils/accordion';\n\ntype ListItemTitleProps = {\n rightElements?: IListItemRightElements;\n title: ReactNode;\n titleElement?: ReactNode;\n shouldShowMultilineTitle: boolean;\n isOpen: boolean;\n onResize?: (entries: ResizeObserverEntry[]) => void;\n onTitleWidthChange: (width: number) => void;\n shouldAllowRightElementFocus?: boolean;\n};\n\nconst ListItemTitle: FC<ListItemTitleProps> = ({\n rightElements,\n titleElement,\n title,\n shouldShowMultilineTitle,\n isOpen,\n onResize,\n onTitleWidthChange,\n shouldAllowRightElementFocus = true,\n}) => {\n const titleWrapperRef = useRef<HTMLDivElement>(null);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const elementWrapperRef = useRef<HTMLDivElement>(null);\n const topElementWrapperRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const element = titleWrapperRef?.current;\n if (!element || typeof onResize !== 'function') return undefined;\n\n const resizeObserver = new ResizeObserver(onResize);\n resizeObserver.observe(element);\n\n return () => resizeObserver.disconnect();\n }, [onResize]);\n\n useEffect(() => {\n if (wrapperRef.current && elementWrapperRef.current) {\n const fullWidth = wrapperRef.current.clientWidth;\n const rightElementWidth = elementWrapperRef.current.clientWidth;\n const topElementWidth = topElementWrapperRef.current?.clientWidth;\n\n let width = fullWidth;\n\n if (rightElementWidth > 0) {\n width -= rightElementWidth + 8;\n }\n\n if (topElementWidth) {\n width -= topElementWidth + 12;\n }\n\n onTitleWidthChange(width);\n }\n }, [onTitleWidthChange]);\n\n const handlePreventClick = (event: React.MouseEvent) => {\n event.stopPropagation();\n event.preventDefault();\n };\n\n const topElement = useMemo(() => {\n if (typeof rightElements === 'object' && rightElements && 'top' in rightElements) {\n return (rightElements as unknown as IListItemRightElement).top;\n }\n\n return undefined;\n }, [rightElements]);\n\n const shouldPreventRightElementClick = useMemo(() => {\n if (topElement) {\n return getElementClickEvent(topElement);\n }\n\n return false;\n }, [topElement]);\n\n useEffect(() => {\n const topElementWrapper = topElementWrapperRef.current;\n\n if (!topElementWrapper) {\n return;\n }\n\n const focusableElements = Array.from(\n topElementWrapper.querySelectorAll<HTMLElement>(\n 'a[href], button, input, select, textarea, [tabindex], [contenteditable=\"true\"]',\n ),\n );\n\n focusableElements.forEach((element) => {\n const currentElement = element;\n const datasetKey = 'listItemRightElementOriginalTabIndex';\n\n if (shouldAllowRightElementFocus) {\n const originalTabIndex = currentElement.dataset[datasetKey];\n\n if (typeof originalTabIndex === 'string') {\n if (originalTabIndex === '') {\n currentElement.removeAttribute('tabindex');\n } else {\n currentElement.setAttribute('tabindex', originalTabIndex);\n }\n\n delete currentElement.dataset[datasetKey];\n }\n } else {\n if (typeof currentElement.dataset[datasetKey] !== 'string') {\n currentElement.dataset[datasetKey] =\n currentElement.getAttribute('tabindex') ?? '';\n }\n\n currentElement.setAttribute('tabindex', '-1');\n }\n });\n }, [shouldAllowRightElementFocus, topElement]);\n\n return (\n <StyledListItemTitle ref={wrapperRef}>\n <StyledListItemTitleLeftWrapper>\n <StyledListItemHeadTitleText\n $isEllipsis={!isOpen}\n ref={titleWrapperRef}\n $shouldShowMultilineTitle={shouldShowMultilineTitle}\n >\n {title}\n </StyledListItemHeadTitleText>\n <StyledListItemHeadTitleElement ref={elementWrapperRef}>\n {titleElement}\n </StyledListItemHeadTitleElement>\n </StyledListItemTitleLeftWrapper>\n {topElement && (\n <StyledListItemTopRightElement\n data-right-element=\"true\"\n ref={topElementWrapperRef}\n onClick={shouldPreventRightElementClick ? handlePreventClick : undefined}\n >\n {topElement}\n </StyledListItemTopRightElement>\n )}\n </StyledListItemTitle>\n );\n};\n\nListItemTitle.displayName = 'ListItemTitle';\n\nexport default ListItemTitle;\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useListItemFocus = void 0;
7
+ var _react = require("react");
8
+ const useListItemFocus = ({
9
+ uuid,
10
+ listGroupUuid,
11
+ isInKeyboardNavigationGroup,
12
+ updateActiveListItemUuid
13
+ }) => {
14
+ const [isFocusWithinListItem, setIsFocusWithinListItem] = (0, _react.useState)(false);
15
+ const handleFocus = (0, _react.useCallback)(event => {
16
+ setIsFocusWithinListItem(true);
17
+ if (event.currentTarget === event.target && isInKeyboardNavigationGroup && typeof updateActiveListItemUuid === 'function') {
18
+ updateActiveListItemUuid(uuid);
19
+ }
20
+ }, [isInKeyboardNavigationGroup, updateActiveListItemUuid, uuid]);
21
+ const handleBlur = (0, _react.useCallback)(event => {
22
+ const nextFocusedElement = event.relatedTarget;
23
+ const currentListItemElement = event.currentTarget;
24
+ if (nextFocusedElement && currentListItemElement.contains(nextFocusedElement)) {
25
+ return;
26
+ }
27
+ setIsFocusWithinListItem(false);
28
+ if (!isInKeyboardNavigationGroup || typeof updateActiveListItemUuid !== 'function' || typeof listGroupUuid !== 'string') {
29
+ return;
30
+ }
31
+ if (!nextFocusedElement) {
32
+ updateActiveListItemUuid(undefined);
33
+ return;
34
+ }
35
+ const nextFocusedListItem = nextFocusedElement.closest(`[data-uuid^="${listGroupUuid}---"]`);
36
+ if (!nextFocusedListItem) {
37
+ updateActiveListItemUuid(undefined);
38
+ }
39
+ }, [isInKeyboardNavigationGroup, listGroupUuid, updateActiveListItemUuid]);
40
+ return {
41
+ isFocusWithinListItem,
42
+ handleFocus,
43
+ handleBlur
44
+ };
45
+ };
46
+ exports.useListItemFocus = useListItemFocus;
47
+ //# sourceMappingURL=useListItemFocus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useListItemFocus.js","names":["_react","require","useListItemFocus","uuid","listGroupUuid","isInKeyboardNavigationGroup","updateActiveListItemUuid","isFocusWithinListItem","setIsFocusWithinListItem","useState","handleFocus","useCallback","event","currentTarget","target","handleBlur","nextFocusedElement","relatedTarget","currentListItemElement","contains","undefined","nextFocusedListItem","closest","exports"],"sources":["../../../../../src/components/list/list-item/useListItemFocus.ts"],"sourcesContent":["import { type FocusEvent, useCallback, useState } from 'react';\n\ntype UseListItemFocusParams = {\n uuid: string;\n listGroupUuid?: string;\n isInKeyboardNavigationGroup: boolean;\n updateActiveListItemUuid?: (uuid?: string) => void;\n};\n\nexport const useListItemFocus = ({\n uuid,\n listGroupUuid,\n isInKeyboardNavigationGroup,\n updateActiveListItemUuid,\n}: UseListItemFocusParams) => {\n const [isFocusWithinListItem, setIsFocusWithinListItem] = useState(false);\n\n const handleFocus = useCallback(\n (event: FocusEvent<HTMLDivElement>) => {\n setIsFocusWithinListItem(true);\n\n if (\n event.currentTarget === event.target &&\n isInKeyboardNavigationGroup &&\n typeof updateActiveListItemUuid === 'function'\n ) {\n updateActiveListItemUuid(uuid);\n }\n },\n [isInKeyboardNavigationGroup, updateActiveListItemUuid, uuid],\n );\n\n const handleBlur = useCallback(\n (event: FocusEvent<HTMLDivElement>) => {\n const nextFocusedElement = event.relatedTarget as HTMLElement | null;\n const currentListItemElement = event.currentTarget as HTMLElement;\n\n if (nextFocusedElement && currentListItemElement.contains(nextFocusedElement)) {\n return;\n }\n\n setIsFocusWithinListItem(false);\n\n if (\n !isInKeyboardNavigationGroup ||\n typeof updateActiveListItemUuid !== 'function' ||\n typeof listGroupUuid !== 'string'\n ) {\n return;\n }\n\n if (!nextFocusedElement) {\n updateActiveListItemUuid(undefined);\n return;\n }\n\n const nextFocusedListItem = nextFocusedElement.closest<HTMLElement>(\n `[data-uuid^=\"${listGroupUuid}---\"]`,\n );\n\n if (!nextFocusedListItem) {\n updateActiveListItemUuid(undefined);\n }\n },\n [isInKeyboardNavigationGroup, listGroupUuid, updateActiveListItemUuid],\n );\n\n return {\n isFocusWithinListItem,\n handleFocus,\n handleBlur,\n };\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AASO,MAAMC,gBAAgB,GAAGA,CAAC;EAC7BC,IAAI;EACJC,aAAa;EACbC,2BAA2B;EAC3BC;AACoB,CAAC,KAAK;EAC1B,MAAM,CAACC,qBAAqB,EAAEC,wBAAwB,CAAC,GAAG,IAAAC,eAAQ,EAAC,KAAK,CAAC;EAEzE,MAAMC,WAAW,GAAG,IAAAC,kBAAW,EAC1BC,KAAiC,IAAK;IACnCJ,wBAAwB,CAAC,IAAI,CAAC;IAE9B,IACII,KAAK,CAACC,aAAa,KAAKD,KAAK,CAACE,MAAM,IACpCT,2BAA2B,IAC3B,OAAOC,wBAAwB,KAAK,UAAU,EAChD;MACEA,wBAAwB,CAACH,IAAI,CAAC;IAClC;EACJ,CAAC,EACD,CAACE,2BAA2B,EAAEC,wBAAwB,EAAEH,IAAI,CAChE,CAAC;EAED,MAAMY,UAAU,GAAG,IAAAJ,kBAAW,EACzBC,KAAiC,IAAK;IACnC,MAAMI,kBAAkB,GAAGJ,KAAK,CAACK,aAAmC;IACpE,MAAMC,sBAAsB,GAAGN,KAAK,CAACC,aAA4B;IAEjE,IAAIG,kBAAkB,IAAIE,sBAAsB,CAACC,QAAQ,CAACH,kBAAkB,CAAC,EAAE;MAC3E;IACJ;IAEAR,wBAAwB,CAAC,KAAK,CAAC;IAE/B,IACI,CAACH,2BAA2B,IAC5B,OAAOC,wBAAwB,KAAK,UAAU,IAC9C,OAAOF,aAAa,KAAK,QAAQ,EACnC;MACE;IACJ;IAEA,IAAI,CAACY,kBAAkB,EAAE;MACrBV,wBAAwB,CAACc,SAAS,CAAC;MACnC;IACJ;IAEA,MAAMC,mBAAmB,GAAGL,kBAAkB,CAACM,OAAO,CAClD,gBAAgBlB,aAAa,OACjC,CAAC;IAED,IAAI,CAACiB,mBAAmB,EAAE;MACtBf,wBAAwB,CAACc,SAAS,CAAC;IACvC;EACJ,CAAC,EACD,CAACf,2BAA2B,EAAED,aAAa,EAAEE,wBAAwB,CACzE,CAAC;EAED,OAAO;IACHC,qBAAqB;IACrBG,WAAW;IACXK;EACJ,CAAC;AACL,CAAC;AAACQ,OAAA,CAAArB,gBAAA,GAAAA,gBAAA","ignoreList":[]}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useMasonryContext = exports.MasonryContext = void 0;
7
+ var _react = require("react");
8
+ const MasonryContext = exports.MasonryContext = /*#__PURE__*/(0, _react.createContext)(undefined);
9
+ const useMasonryContext = () => {
10
+ const context = (0, _react.useContext)(MasonryContext);
11
+ if (!context) {
12
+ throw new Error('Masonry.Item must be used inside Masonry.');
13
+ }
14
+ return context;
15
+ };
16
+ exports.useMasonryContext = useMasonryContext;
17
+ //# sourceMappingURL=Masonry.context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Masonry.context.js","names":["_react","require","MasonryContext","exports","createContext","undefined","useMasonryContext","context","useContext","Error"],"sources":["../../../../src/components/masonry/Masonry.context.ts"],"sourcesContent":["import { createContext, useContext } from 'react';\nimport { MasonryContextValue } from './Masonry.types';\n\nexport const MasonryContext = createContext<MasonryContextValue | undefined>(undefined);\n\nexport const useMasonryContext = () => {\n const context = useContext(MasonryContext);\n\n if (!context) {\n throw new Error('Masonry.Item must be used inside Masonry.');\n }\n\n return context;\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAGO,MAAMC,cAAc,GAAAC,OAAA,CAAAD,cAAA,gBAAG,IAAAE,oBAAa,EAAkCC,SAAS,CAAC;AAEhF,MAAMC,iBAAiB,GAAGA,CAAA,KAAM;EACnC,MAAMC,OAAO,GAAG,IAAAC,iBAAU,EAACN,cAAc,CAAC;EAE1C,IAAI,CAACK,OAAO,EAAE;IACV,MAAM,IAAIE,KAAK,CAAC,2CAA2C,CAAC;EAChE;EAEA,OAAOF,OAAO;AAClB,CAAC;AAACJ,OAAA,CAAAG,iBAAA,GAAAA,iBAAA","ignoreList":[]}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useMasonryLayout = exports.useMasonryItems = exports.useMasonryColumnCount = void 0;
7
+ var _react = require("react");
8
+ var _Masonry = require("./Masonry.utils");
9
+ const useMasonryItems = ({
10
+ children
11
+ }) => (0, _react.useMemo)(() => _react.Children.toArray(children), [children]);
12
+ exports.useMasonryItems = useMasonryItems;
13
+ const useMasonryLayout = ({
14
+ items,
15
+ itemHeights,
16
+ columnCount,
17
+ columnWidth,
18
+ rowHeight,
19
+ gap
20
+ }) => (0, _react.useMemo)(() => {
21
+ const layoutItems = items.map((item, index) => {
22
+ const key = (0, _Masonry.getMasonryItemKey)(item, index);
23
+ const height = itemHeights[key] ?? rowHeight;
24
+ return {
25
+ key,
26
+ columns: item.props.columns ?? 1,
27
+ rows: (0, _Masonry.calculateRowSpan)({
28
+ height,
29
+ rowHeight,
30
+ gap
31
+ })
32
+ };
33
+ });
34
+ return (0, _Masonry.packMasonryGrid)({
35
+ items: layoutItems,
36
+ columnCount,
37
+ columnWidth,
38
+ rowHeight,
39
+ gap
40
+ });
41
+ }, [items, itemHeights, columnCount, columnWidth, rowHeight, gap]);
42
+ exports.useMasonryLayout = useMasonryLayout;
43
+ const useMasonryColumnCount = ({
44
+ containerWidth,
45
+ columnWidth,
46
+ gap
47
+ }) => (0, _react.useMemo)(() => (0, _Masonry.calculateColumnCount)({
48
+ containerWidth,
49
+ columnWidth,
50
+ gap
51
+ }), [containerWidth, columnWidth, gap]);
52
+ exports.useMasonryColumnCount = useMasonryColumnCount;
53
+ //# sourceMappingURL=Masonry.hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Masonry.hooks.js","names":["_react","require","_Masonry","useMasonryItems","children","useMemo","Children","toArray","exports","useMasonryLayout","items","itemHeights","columnCount","columnWidth","rowHeight","gap","layoutItems","map","item","index","key","getMasonryItemKey","height","columns","props","rows","calculateRowSpan","packMasonryGrid","useMasonryColumnCount","containerWidth","calculateColumnCount"],"sources":["../../../../src/components/masonry/Masonry.hooks.ts"],"sourcesContent":["import { Children, ReactNode, useMemo } from 'react';\nimport { MasonryChild, MasonryItemProps, MasonryLayoutItem } from './Masonry.types';\nimport {\n calculateColumnCount,\n calculateRowSpan,\n getMasonryItemKey,\n packMasonryGrid,\n} from './Masonry.utils';\n\ninterface UseMasonryItemsParams {\n children: ReactNode;\n}\n\nexport const useMasonryItems = ({ children }: UseMasonryItemsParams) =>\n useMemo(() => Children.toArray(children) as MasonryChild[], [children]);\n\ninterface UseMasonryLayoutParams {\n items: MasonryChild[];\n itemHeights: Record<string, number>;\n columnCount: number;\n columnWidth: number;\n rowHeight: number;\n gap: number;\n}\n\nexport const useMasonryLayout = ({\n items,\n itemHeights,\n columnCount,\n columnWidth,\n rowHeight,\n gap,\n}: UseMasonryLayoutParams) =>\n useMemo(() => {\n const layoutItems: MasonryLayoutItem[] = items.map((item, index) => {\n const key = getMasonryItemKey(item as React.ReactElement<MasonryItemProps>, index);\n\n const height = itemHeights[key] ?? rowHeight;\n\n return {\n key,\n columns: item.props.columns ?? 1,\n rows: calculateRowSpan({\n height,\n rowHeight,\n gap,\n }),\n };\n });\n\n return packMasonryGrid({\n items: layoutItems,\n columnCount,\n columnWidth,\n rowHeight,\n gap,\n });\n }, [items, itemHeights, columnCount, columnWidth, rowHeight, gap]);\n\ninterface UseMasonryColumnCountParams {\n containerWidth: number;\n columnWidth: number;\n gap: number;\n}\n\nexport const useMasonryColumnCount = ({\n containerWidth,\n columnWidth,\n gap,\n}: UseMasonryColumnCountParams) =>\n useMemo(\n () =>\n calculateColumnCount({\n containerWidth,\n columnWidth,\n gap,\n }),\n [containerWidth, columnWidth, gap],\n );\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,QAAA,GAAAD,OAAA;AAWO,MAAME,eAAe,GAAGA,CAAC;EAAEC;AAAgC,CAAC,KAC/D,IAAAC,cAAO,EAAC,MAAMC,eAAQ,CAACC,OAAO,CAACH,QAAQ,CAAmB,EAAE,CAACA,QAAQ,CAAC,CAAC;AAACI,OAAA,CAAAL,eAAA,GAAAA,eAAA;AAWrE,MAAMM,gBAAgB,GAAGA,CAAC;EAC7BC,KAAK;EACLC,WAAW;EACXC,WAAW;EACXC,WAAW;EACXC,SAAS;EACTC;AACoB,CAAC,KACrB,IAAAV,cAAO,EAAC,MAAM;EACV,MAAMW,WAAgC,GAAGN,KAAK,CAACO,GAAG,CAAC,CAACC,IAAI,EAAEC,KAAK,KAAK;IAChE,MAAMC,GAAG,GAAG,IAAAC,0BAAiB,EAACH,IAAI,EAA0CC,KAAK,CAAC;IAElF,MAAMG,MAAM,GAAGX,WAAW,CAACS,GAAG,CAAC,IAAIN,SAAS;IAE5C,OAAO;MACHM,GAAG;MACHG,OAAO,EAAEL,IAAI,CAACM,KAAK,CAACD,OAAO,IAAI,CAAC;MAChCE,IAAI,EAAE,IAAAC,yBAAgB,EAAC;QACnBJ,MAAM;QACNR,SAAS;QACTC;MACJ,CAAC;IACL,CAAC;EACL,CAAC,CAAC;EAEF,OAAO,IAAAY,wBAAe,EAAC;IACnBjB,KAAK,EAAEM,WAAW;IAClBJ,WAAW;IACXC,WAAW;IACXC,SAAS;IACTC;EACJ,CAAC,CAAC;AACN,CAAC,EAAE,CAACL,KAAK,EAAEC,WAAW,EAAEC,WAAW,EAAEC,WAAW,EAAEC,SAAS,EAAEC,GAAG,CAAC,CAAC;AAACP,OAAA,CAAAC,gBAAA,GAAAA,gBAAA;AAQhE,MAAMmB,qBAAqB,GAAGA,CAAC;EAClCC,cAAc;EACdhB,WAAW;EACXE;AACyB,CAAC,KAC1B,IAAAV,cAAO,EACH,MACI,IAAAyB,6BAAoB,EAAC;EACjBD,cAAc;EACdhB,WAAW;EACXE;AACJ,CAAC,CAAC,EACN,CAACc,cAAc,EAAEhB,WAAW,EAAEE,GAAG,CACrC,CAAC;AAACP,OAAA,CAAAoB,qBAAA,GAAAA,qBAAA","ignoreList":[]}
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _react2 = require("motion/react");
9
+ var _element = require("../../hooks/element");
10
+ var _Masonry = require("./Masonry.context");
11
+ var _Masonry2 = require("./Masonry.styles");
12
+ var _Masonry3 = require("./Masonry.hooks");
13
+ var _Masonry4 = require("./Masonry.utils");
14
+ var _MasonryItem = _interopRequireWildcard(require("./masonry-item/MasonryItem"));
15
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
16
+ const MasonryBase = ({
17
+ children,
18
+ gap = 8,
19
+ columnWidth = 80,
20
+ rowHeight = 80
21
+ }) => {
22
+ const ref = (0, _react.useRef)(null);
23
+ const size = (0, _element.useElementSize)(ref);
24
+ const containerWidth = (size === null || size === void 0 ? void 0 : size.width) ?? 0;
25
+ const [itemHeights, setItemHeights] = (0, _react.useState)({});
26
+ const items = (0, _Masonry3.useMasonryItems)({
27
+ children
28
+ });
29
+ const columnCount = (0, _Masonry3.useMasonryColumnCount)({
30
+ containerWidth,
31
+ columnWidth,
32
+ gap
33
+ });
34
+ const layout = (0, _Masonry3.useMasonryLayout)({
35
+ items,
36
+ itemHeights,
37
+ columnCount,
38
+ columnWidth,
39
+ rowHeight,
40
+ gap
41
+ });
42
+ const registerItem = (0, _react.useCallback)((key, height) => {
43
+ setItemHeights(currentHeights => {
44
+ if (currentHeights[key] === height) {
45
+ return currentHeights;
46
+ }
47
+ return {
48
+ ...currentHeights,
49
+ [key]: height
50
+ };
51
+ });
52
+ }, []);
53
+ const contextValue = (0, _react.useMemo)(() => ({
54
+ registerItem
55
+ }), [registerItem]);
56
+ return /*#__PURE__*/_react.default.createElement(_Masonry.MasonryContext.Provider, {
57
+ value: contextValue
58
+ }, /*#__PURE__*/_react.default.createElement(_Masonry2.StyledMasonry, {
59
+ ref: ref,
60
+ $height: layout.height
61
+ }, /*#__PURE__*/_react.default.createElement(_react2.AnimatePresence, null, items.map((item, index) => {
62
+ const key = (0, _Masonry4.getMasonryItemKey)(item, index);
63
+ const packedItem = layout.items[key];
64
+ if (!packedItem) {
65
+ return null;
66
+ }
67
+ return /*#__PURE__*/_react.default.createElement(_MasonryItem.InternalMasonryItem, {
68
+ key: key,
69
+ itemKey: key,
70
+ x: packedItem.x,
71
+ y: packedItem.y,
72
+ width: packedItem.width
73
+ }, item.props.children);
74
+ }))));
75
+ };
76
+ MasonryBase.displayName = 'Masonry';
77
+ const Masonry = Object.assign(MasonryBase, {
78
+ Item: _MasonryItem.default
79
+ });
80
+ var _default = exports.default = Masonry;
81
+ //# sourceMappingURL=Masonry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Masonry.js","names":["_react","_interopRequireWildcard","require","_react2","_element","_Masonry","_Masonry2","_Masonry3","_Masonry4","_MasonryItem","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","MasonryBase","children","gap","columnWidth","rowHeight","ref","useRef","size","useElementSize","containerWidth","width","itemHeights","setItemHeights","useState","items","useMasonryItems","columnCount","useMasonryColumnCount","layout","useMasonryLayout","registerItem","useCallback","key","height","currentHeights","contextValue","useMemo","createElement","MasonryContext","Provider","value","StyledMasonry","$height","AnimatePresence","map","item","index","getMasonryItemKey","packedItem","InternalMasonryItem","itemKey","x","y","props","displayName","Masonry","assign","Item","MasonryItem","_default","exports"],"sources":["../../../../src/components/masonry/Masonry.tsx"],"sourcesContent":["import React, { FC, useCallback, useMemo, useRef, useState } from 'react';\nimport { AnimatePresence } from 'motion/react';\nimport { useElementSize } from '../../hooks/element';\nimport { MasonryComponent, MasonryItemProps, MasonryProps } from './Masonry.types';\nimport { MasonryContext } from './Masonry.context';\nimport { StyledMasonry } from './Masonry.styles';\nimport { useMasonryColumnCount, useMasonryItems, useMasonryLayout } from './Masonry.hooks';\nimport { getMasonryItemKey } from './Masonry.utils';\nimport MasonryItem, { InternalMasonryItem } from './masonry-item/MasonryItem';\n\nconst MasonryBase: FC<MasonryProps> = ({ children, gap = 8, columnWidth = 80, rowHeight = 80 }) => {\n const ref = useRef<HTMLDivElement | null>(null);\n const size = useElementSize(ref);\n\n const containerWidth = size?.width ?? 0;\n\n const [itemHeights, setItemHeights] = useState<Record<string, number>>({});\n\n const items = useMasonryItems({ children });\n\n const columnCount = useMasonryColumnCount({\n containerWidth,\n columnWidth,\n gap,\n });\n\n const layout = useMasonryLayout({\n items,\n itemHeights,\n columnCount,\n columnWidth,\n rowHeight,\n gap,\n });\n\n const registerItem = useCallback((key: string, height: number) => {\n setItemHeights((currentHeights) => {\n if (currentHeights[key] === height) {\n return currentHeights;\n }\n\n return {\n ...currentHeights,\n [key]: height,\n };\n });\n }, []);\n\n const contextValue = useMemo(\n () => ({\n registerItem,\n }),\n [registerItem],\n );\n\n return (\n <MasonryContext.Provider value={contextValue}>\n <StyledMasonry ref={ref} $height={layout.height}>\n <AnimatePresence>\n {items.map((item, index) => {\n const key = getMasonryItemKey(\n item as React.ReactElement<MasonryItemProps>,\n index,\n );\n\n const packedItem = layout.items[key];\n\n if (!packedItem) {\n return null;\n }\n\n return (\n <InternalMasonryItem\n key={key}\n itemKey={key}\n x={packedItem.x}\n y={packedItem.y}\n width={packedItem.width}\n >\n {item.props.children}\n </InternalMasonryItem>\n );\n })}\n </AnimatePresence>\n </StyledMasonry>\n </MasonryContext.Provider>\n );\n};\n\nMasonryBase.displayName = 'Masonry';\n\nconst Masonry = Object.assign(MasonryBase, {\n Item: MasonryItem,\n}) as MasonryComponent;\n\nexport default Masonry;\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.StyledMasonry = void 0;
7
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
+ const StyledMasonry = exports.StyledMasonry = _styledComponents.default.div`
10
+ position: relative;
11
+ width: 100%;
12
+ height: ${({
13
+ $height
14
+ }) => $height}px;
15
+ `;
16
+ //# sourceMappingURL=Masonry.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Masonry.styles.js","names":["_styledComponents","_interopRequireDefault","require","e","__esModule","default","StyledMasonry","exports","styled","div","$height"],"sources":["../../../../src/components/masonry/Masonry.styles.ts"],"sourcesContent":["import styled from 'styled-components';\n\nexport const StyledMasonry = styled.div<{ $height: number }>`\n position: relative;\n width: 100%;\n height: ${({ $height }) => $height}px;\n`;\n"],"mappings":";;;;;;AAAA,IAAAA,iBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAuC,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEhC,MAAMG,aAAa,GAAAC,OAAA,CAAAD,aAAA,GAAGE,yBAAM,CAACC,GAAwB;AAC5D;AACA;AACA,cAAc,CAAC;EAAEC;AAAQ,CAAC,KAAKA,OAAO;AACtC,CAAC","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=Masonry.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Masonry.types.js","names":[],"sources":["../../../../src/components/masonry/Masonry.types.ts"],"sourcesContent":["import { ReactElement, ReactNode } from 'react';\n\nexport interface MasonryProps {\n children: ReactNode;\n gap?: number;\n columnWidth?: number;\n rowHeight?: number;\n}\n\nexport interface MasonryItemProps {\n children: ReactNode;\n columns?: number;\n}\n\nexport interface MasonryContextValue {\n registerItem: (key: string, height: number) => void;\n}\n\nexport interface MasonryLayoutItem {\n key: string;\n columns: number;\n rows: number;\n}\n\nexport interface PackedMasonryItem {\n key: string;\n x: number;\n y: number;\n width: number;\n}\n\nexport interface PackedMasonryGrid {\n items: Record<string, PackedMasonryItem>;\n height: number;\n}\n\nexport interface InternalMasonryItemProps {\n children: ReactNode;\n itemKey: string;\n x: number;\n y: number;\n width: number;\n}\n\nexport type MasonryChild = ReactElement<MasonryItemProps>;\n\nexport type MasonryComponent = React.FC<MasonryProps> & {\n Item: React.FC<MasonryItemProps>;\n};\n"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.packMasonryGrid = exports.getMasonryItemKey = exports.calculateRowSpan = exports.calculateColumnCount = void 0;
7
+ const getMasonryItemKey = (item, index) => item.key != null ? String(item.key) : String(index);
8
+ exports.getMasonryItemKey = getMasonryItemKey;
9
+ const isAreaFree = ({
10
+ grid,
11
+ startColumn,
12
+ startRow,
13
+ columns,
14
+ rows,
15
+ columnCount
16
+ }) => {
17
+ if (startColumn + columns > columnCount) {
18
+ return false;
19
+ }
20
+ for (let row = startRow; row < startRow + rows; row += 1) {
21
+ for (let column = startColumn; column < startColumn + columns; column += 1) {
22
+ var _grid$row;
23
+ if ((_grid$row = grid[row]) !== null && _grid$row !== void 0 && _grid$row[column]) {
24
+ return false;
25
+ }
26
+ }
27
+ }
28
+ return true;
29
+ };
30
+ const occupyArea = ({
31
+ grid,
32
+ startColumn,
33
+ startRow,
34
+ columns,
35
+ rows
36
+ }) => {
37
+ for (let row = startRow; row < startRow + rows; row += 1) {
38
+ if (!grid[row]) {
39
+ // eslint-disable-next-line no-param-reassign
40
+ grid[row] = [];
41
+ }
42
+ for (let column = startColumn; column < startColumn + columns; column += 1) {
43
+ // eslint-disable-next-line no-param-reassign
44
+ grid[row][column] = true;
45
+ }
46
+ }
47
+ };
48
+ const packMasonryGrid = ({
49
+ items,
50
+ columnCount,
51
+ columnWidth,
52
+ rowHeight,
53
+ gap
54
+ }) => {
55
+ const grid = [];
56
+ const packedItems = {};
57
+ let maxRow = 0;
58
+ items.forEach(item => {
59
+ const columns = Math.min(Math.max(item.columns, 1), columnCount);
60
+ const rows = Math.max(item.rows, 1);
61
+ let placed = false;
62
+ let row = 0;
63
+ while (!placed) {
64
+ for (let column = 0; column < columnCount; column += 1) {
65
+ const canPlaceItem = isAreaFree({
66
+ grid,
67
+ startColumn: column,
68
+ startRow: row,
69
+ columns,
70
+ rows,
71
+ columnCount
72
+ });
73
+ if (!canPlaceItem) {
74
+ continue;
75
+ }
76
+ occupyArea({
77
+ grid,
78
+ startColumn: column,
79
+ startRow: row,
80
+ columns,
81
+ rows
82
+ });
83
+ packedItems[item.key] = {
84
+ key: item.key,
85
+ x: column * (columnWidth + gap),
86
+ y: row * (rowHeight + gap),
87
+ width: columns * columnWidth + (columns - 1) * gap
88
+ };
89
+ maxRow = Math.max(maxRow, row + rows);
90
+ placed = true;
91
+ break;
92
+ }
93
+ if (!placed) {
94
+ row += 1;
95
+ }
96
+ }
97
+ });
98
+ return {
99
+ items: packedItems,
100
+ height: maxRow * rowHeight + Math.max(0, maxRow - 1) * gap
101
+ };
102
+ };
103
+ exports.packMasonryGrid = packMasonryGrid;
104
+ const calculateColumnCount = ({
105
+ containerWidth,
106
+ columnWidth,
107
+ gap
108
+ }) => {
109
+ if (!containerWidth) {
110
+ return 1;
111
+ }
112
+ return Math.max(1, Math.floor((containerWidth + gap) / (columnWidth + gap)));
113
+ };
114
+ exports.calculateColumnCount = calculateColumnCount;
115
+ const calculateRowSpan = ({
116
+ height,
117
+ rowHeight,
118
+ gap
119
+ }) => Math.max(1, Math.ceil((height + gap) / (rowHeight + gap)));
120
+ exports.calculateRowSpan = calculateRowSpan;
121
+ //# sourceMappingURL=Masonry.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Masonry.utils.js","names":["getMasonryItemKey","item","index","key","String","exports","isAreaFree","grid","startColumn","startRow","columns","rows","columnCount","row","column","_grid$row","occupyArea","packMasonryGrid","items","columnWidth","rowHeight","gap","packedItems","maxRow","forEach","Math","min","max","placed","canPlaceItem","x","y","width","height","calculateColumnCount","containerWidth","floor","calculateRowSpan","ceil"],"sources":["../../../../src/components/masonry/Masonry.utils.ts"],"sourcesContent":["import { ReactElement } from 'react';\nimport {\n MasonryItemProps,\n MasonryLayoutItem,\n PackedMasonryGrid,\n PackedMasonryItem,\n} from './Masonry.types';\n\nexport const getMasonryItemKey = (item: ReactElement<MasonryItemProps>, index: number) =>\n item.key != null ? String(item.key) : String(index);\n\ninterface IsAreaFreeParams {\n grid: boolean[][];\n startColumn: number;\n startRow: number;\n columns: number;\n rows: number;\n columnCount: number;\n}\n\nconst isAreaFree = ({\n grid,\n startColumn,\n startRow,\n columns,\n rows,\n columnCount,\n}: IsAreaFreeParams) => {\n if (startColumn + columns > columnCount) {\n return false;\n }\n\n for (let row = startRow; row < startRow + rows; row += 1) {\n for (let column = startColumn; column < startColumn + columns; column += 1) {\n if (grid[row]?.[column]) {\n return false;\n }\n }\n }\n\n return true;\n};\n\ninterface OccupyAreaParams {\n grid: boolean[][];\n startColumn: number;\n startRow: number;\n columns: number;\n rows: number;\n}\n\nconst occupyArea = ({ grid, startColumn, startRow, columns, rows }: OccupyAreaParams) => {\n for (let row = startRow; row < startRow + rows; row += 1) {\n if (!grid[row]) {\n // eslint-disable-next-line no-param-reassign\n grid[row] = [];\n }\n\n for (let column = startColumn; column < startColumn + columns; column += 1) {\n // eslint-disable-next-line no-param-reassign\n (grid[row] as boolean[])[column] = true;\n }\n }\n};\n\ninterface PackMasonryGridParams {\n items: MasonryLayoutItem[];\n columnCount: number;\n columnWidth: number;\n rowHeight: number;\n gap: number;\n}\n\nexport const packMasonryGrid = ({\n items,\n columnCount,\n columnWidth,\n rowHeight,\n gap,\n}: PackMasonryGridParams): PackedMasonryGrid => {\n const grid: boolean[][] = [];\n const packedItems: Record<string, PackedMasonryItem> = {};\n\n let maxRow = 0;\n\n items.forEach((item) => {\n const columns = Math.min(Math.max(item.columns, 1), columnCount);\n const rows = Math.max(item.rows, 1);\n\n let placed = false;\n let row = 0;\n\n while (!placed) {\n for (let column = 0; column < columnCount; column += 1) {\n const canPlaceItem = isAreaFree({\n grid,\n startColumn: column,\n startRow: row,\n columns,\n rows,\n columnCount,\n });\n\n if (!canPlaceItem) {\n continue;\n }\n\n occupyArea({\n grid,\n startColumn: column,\n startRow: row,\n columns,\n rows,\n });\n\n packedItems[item.key] = {\n key: item.key,\n x: column * (columnWidth + gap),\n y: row * (rowHeight + gap),\n width: columns * columnWidth + (columns - 1) * gap,\n };\n\n maxRow = Math.max(maxRow, row + rows);\n placed = true;\n break;\n }\n\n if (!placed) {\n row += 1;\n }\n }\n });\n\n return {\n items: packedItems,\n height: maxRow * rowHeight + Math.max(0, maxRow - 1) * gap,\n };\n};\n\nexport const calculateColumnCount = ({\n containerWidth,\n columnWidth,\n gap,\n}: {\n containerWidth: number;\n columnWidth: number;\n gap: number;\n}) => {\n if (!containerWidth) {\n return 1;\n }\n\n return Math.max(1, Math.floor((containerWidth + gap) / (columnWidth + gap)));\n};\n\nexport const calculateRowSpan = ({\n height,\n rowHeight,\n gap,\n}: {\n height: number;\n rowHeight: number;\n gap: number;\n}) => Math.max(1, Math.ceil((height + gap) / (rowHeight + gap)));\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.InternalMasonryItem = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _Masonry = require("../Masonry.context");
9
+ var _MasonryItem = require("./MasonryItem.styles");
10
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
11
+ const MasonryItem = ({
12
+ children
13
+ }) => /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, children);
14
+ const InternalMasonryItem = ({
15
+ children,
16
+ itemKey,
17
+ x,
18
+ y,
19
+ width
20
+ }) => {
21
+ const ref = (0, _react.useRef)(null);
22
+ const {
23
+ registerItem
24
+ } = (0, _Masonry.useMasonryContext)();
25
+ (0, _react.useEffect)(() => {
26
+ const element = ref.current;
27
+ if (!element) {
28
+ return undefined;
29
+ }
30
+ let frameId;
31
+ const updateHeight = () => {
32
+ if (frameId) {
33
+ window.cancelAnimationFrame(frameId);
34
+ }
35
+ frameId = window.requestAnimationFrame(() => {
36
+ registerItem(itemKey, element.getBoundingClientRect().height);
37
+ });
38
+ };
39
+ updateHeight();
40
+ const observer = new ResizeObserver(updateHeight);
41
+ observer.observe(element);
42
+ return () => {
43
+ if (frameId) {
44
+ window.cancelAnimationFrame(frameId);
45
+ }
46
+ observer.disconnect();
47
+ };
48
+ }, [itemKey, registerItem, width]);
49
+ return /*#__PURE__*/_react.default.createElement(_MasonryItem.StyledMasonryItem, {
50
+ ref: ref,
51
+ initial: {
52
+ opacity: 0,
53
+ scale: 0.96
54
+ },
55
+ animate: {
56
+ opacity: 1,
57
+ scale: 1,
58
+ x,
59
+ y,
60
+ width
61
+ },
62
+ exit: {
63
+ opacity: 0,
64
+ scale: 0.96
65
+ },
66
+ transition: {
67
+ type: 'spring',
68
+ stiffness: 320,
69
+ damping: 34,
70
+ mass: 0.85
71
+ }
72
+ }, children);
73
+ };
74
+ exports.InternalMasonryItem = InternalMasonryItem;
75
+ MasonryItem.displayName = 'Masonry.Item';
76
+ var _default = exports.default = MasonryItem;
77
+ //# sourceMappingURL=MasonryItem.js.map