@neo4j-ndl/react 4.20.1 → 4.21.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 (437) hide show
  1. package/lib/cjs/_common/export-stories-utils.js +1 -1
  2. package/lib/cjs/_common/export-stories-utils.js.map +1 -1
  3. package/lib/cjs/_common/utils.js +3 -3
  4. package/lib/cjs/_common/utils.js.map +1 -1
  5. package/lib/cjs/_generated/style-rules/color-utils.js +3 -0
  6. package/lib/cjs/_generated/style-rules/color-utils.js.map +1 -1
  7. package/lib/cjs/_generated/style-rules/date-utils.js +14 -13
  8. package/lib/cjs/_generated/style-rules/date-utils.js.map +1 -1
  9. package/lib/cjs/_generated/style-rules/literal-schemas.js +5 -3
  10. package/lib/cjs/_generated/style-rules/literal-schemas.js.map +1 -1
  11. package/lib/cjs/ai/code-preview/CodePreview.js +1 -1
  12. package/lib/cjs/ai/code-preview/CodePreview.js.map +1 -1
  13. package/lib/cjs/ai/file-tag/FileTag.js.map +1 -1
  14. package/lib/cjs/ai/image-tag/ImageTag.js.map +1 -1
  15. package/lib/cjs/ai/prompt/Prompt.js +10 -10
  16. package/lib/cjs/ai/prompt/Prompt.js.map +1 -1
  17. package/lib/cjs/ai/prompt/stories/prompt-advanced.story.js +1 -1
  18. package/lib/cjs/ai/prompt/stories/prompt-advanced.story.js.map +1 -1
  19. package/lib/cjs/ai/prompt/stories/prompt-context.story.js +1 -1
  20. package/lib/cjs/ai/prompt/stories/prompt-context.story.js.map +1 -1
  21. package/lib/cjs/ai/prompt/stories/prompt-default.story.js +1 -1
  22. package/lib/cjs/ai/prompt/stories/prompt-default.story.js.map +1 -1
  23. package/lib/cjs/ai/prompt/stories/prompt-header.story.js +1 -1
  24. package/lib/cjs/ai/prompt/stories/prompt-header.story.js.map +1 -1
  25. package/lib/cjs/ai/response/Response.js +4 -4
  26. package/lib/cjs/ai/response/Response.js.map +1 -1
  27. package/lib/cjs/ai/response/stories/response-full-example.story.js +1 -1
  28. package/lib/cjs/ai/response/stories/response-full-example.story.js.map +1 -1
  29. package/lib/cjs/ai/suggestion/Suggestion.js.map +1 -1
  30. package/lib/cjs/ai/thinking/thinking-duration-formatter.js +5 -5
  31. package/lib/cjs/ai/thinking/thinking-duration-formatter.js.map +1 -1
  32. package/lib/cjs/banner/Banner.js +2 -2
  33. package/lib/cjs/banner/Banner.js.map +1 -1
  34. package/lib/cjs/button/ButtonBase.js +4 -4
  35. package/lib/cjs/button/ButtonBase.js.map +1 -1
  36. package/lib/cjs/code/Code.js +3 -3
  37. package/lib/cjs/code/Code.js.map +1 -1
  38. package/lib/cjs/code-block/CodeBlock.js +2 -2
  39. package/lib/cjs/code-block/CodeBlock.js.map +1 -1
  40. package/lib/cjs/color-picker/ColorPicker.js +22 -22
  41. package/lib/cjs/color-picker/ColorPicker.js.map +1 -1
  42. package/lib/cjs/color-picker/stories/color-picker-custom-swatches.story.js +20 -20
  43. package/lib/cjs/color-picker/stories/color-picker-custom-swatches.story.js.map +1 -1
  44. package/lib/cjs/color-picker/stories/color-picker-default.story.js +4 -4
  45. package/lib/cjs/color-picker/stories/color-picker-default.story.js.map +1 -1
  46. package/lib/cjs/color-picker/stories/color-picker-dialog.story.js +4 -4
  47. package/lib/cjs/color-picker/stories/color-picker-dialog.story.js.map +1 -1
  48. package/lib/cjs/color-picker/stories/color-picker-without-eyedropper.story.js +4 -4
  49. package/lib/cjs/color-picker/stories/color-picker-without-eyedropper.story.js.map +1 -1
  50. package/lib/cjs/combobox/stories/combobox-large-data-set.story.js +1 -1
  51. package/lib/cjs/combobox/stories/combobox-large-data-set.story.js.map +1 -1
  52. package/lib/cjs/data-grid/Components.js +20 -20
  53. package/lib/cjs/data-grid/Components.js.map +1 -1
  54. package/lib/cjs/data-grid/DataGrid.js +3 -3
  55. package/lib/cjs/data-grid/DataGrid.js.map +1 -1
  56. package/lib/cjs/data-grid/data-grid-nav/data-grid-nav.js +55 -54
  57. package/lib/cjs/data-grid/data-grid-nav/data-grid-nav.js.map +1 -1
  58. package/lib/cjs/data-grid/data-grid-nav/helpers.js +1 -1
  59. package/lib/cjs/data-grid/data-grid-nav/helpers.js.map +1 -1
  60. package/lib/cjs/data-grid/data-grid-nav/index.js +2 -2
  61. package/lib/cjs/data-grid/data-grid-nav/index.js.map +1 -1
  62. package/lib/cjs/data-grid/helpers/index.js +42 -40
  63. package/lib/cjs/data-grid/helpers/index.js.map +1 -1
  64. package/lib/cjs/data-grid/stories/datagrid-in-dialog.story.js +10 -7
  65. package/lib/cjs/data-grid/stories/datagrid-in-dialog.story.js.map +1 -1
  66. package/lib/cjs/data-grid/stories/datagrid-keyboard-navigation.story.js +10 -7
  67. package/lib/cjs/data-grid/stories/datagrid-keyboard-navigation.story.js.map +1 -1
  68. package/lib/cjs/data-grid/stories/datagrid-rule-based-styling-datetime.story.js +5 -5
  69. package/lib/cjs/data-grid/stories/datagrid-rule-based-styling-datetime.story.js.map +1 -1
  70. package/lib/cjs/data-grid/stories/datagrid-search-and-filters.stories.js +1 -1
  71. package/lib/cjs/data-grid/stories/datagrid-search-and-filters.stories.js.map +1 -1
  72. package/lib/cjs/data-grid/stories/datagrid-virtualization.story.js +5 -5
  73. package/lib/cjs/data-grid/stories/datagrid-virtualization.story.js.map +1 -1
  74. package/lib/cjs/data-grid/style-rules/evaluate.js +23 -23
  75. package/lib/cjs/data-grid/style-rules/evaluate.js.map +1 -1
  76. package/lib/cjs/data-grid/style-rules/types.js +1 -1
  77. package/lib/cjs/data-grid/style-rules/types.js.map +1 -1
  78. package/lib/cjs/dialog/Dialog.js +5 -5
  79. package/lib/cjs/dialog/Dialog.js.map +1 -1
  80. package/lib/cjs/dialog/dialog-types.js.map +1 -1
  81. package/lib/cjs/drawer/Drawer.js +5 -5
  82. package/lib/cjs/drawer/Drawer.js.map +1 -1
  83. package/lib/cjs/dropdown-button/DropdownButton.js +4 -4
  84. package/lib/cjs/dropdown-button/DropdownButton.js.map +1 -1
  85. package/lib/cjs/dropzone/stories/dropzone-full.story.js +1 -1
  86. package/lib/cjs/dropzone/stories/dropzone-full.story.js.map +1 -1
  87. package/lib/cjs/flex/stories/flex-default.story.js +1 -1
  88. package/lib/cjs/flex/stories/flex-default.story.js.map +1 -1
  89. package/lib/cjs/hooks/index.js +3 -3
  90. package/lib/cjs/hooks/index.js.map +1 -1
  91. package/lib/cjs/icon-button-base/IconButtonBase.js +4 -4
  92. package/lib/cjs/icon-button-base/IconButtonBase.js.map +1 -1
  93. package/lib/cjs/icons/generated/custom/ScatterPlot.js +30 -0
  94. package/lib/cjs/icons/generated/custom/ScatterPlot.js.map +1 -0
  95. package/lib/cjs/icons/generated/custom/index.js +4 -2
  96. package/lib/cjs/icons/generated/custom/index.js.map +1 -1
  97. package/lib/cjs/inline-edit/InlineEdit.js +8 -8
  98. package/lib/cjs/inline-edit/InlineEdit.js.map +1 -1
  99. package/lib/cjs/kbd/kbd-utils.js +2 -2
  100. package/lib/cjs/kbd/kbd-utils.js.map +1 -1
  101. package/lib/cjs/modal/Modal.js +6 -6
  102. package/lib/cjs/modal/Modal.js.map +1 -1
  103. package/lib/cjs/next/tree-view/TreeView.js +23 -23
  104. package/lib/cjs/next/tree-view/TreeView.js.map +1 -1
  105. package/lib/cjs/next/tree-view/stories/tree-view-lazy.story.js +1 -1
  106. package/lib/cjs/next/tree-view/stories/tree-view-lazy.story.js.map +1 -1
  107. package/lib/cjs/next/tree-view/stories/tree-view-multi.story.js +6 -6
  108. package/lib/cjs/next/tree-view/stories/tree-view-multi.story.js.map +1 -1
  109. package/lib/cjs/popover/Popover.js.map +1 -1
  110. package/lib/cjs/popover/stories/popover-custom-offset.story.js +3 -3
  111. package/lib/cjs/popover/stories/popover-custom-offset.story.js.map +1 -1
  112. package/lib/cjs/popover/use-popover.js +2 -0
  113. package/lib/cjs/popover/use-popover.js.map +1 -1
  114. package/lib/cjs/segmented-control/SegmentedControl.js.map +1 -1
  115. package/lib/cjs/select/Overrides.js +30 -30
  116. package/lib/cjs/select/Overrides.js.map +1 -1
  117. package/lib/cjs/select-icon-button/SelectIconButton.js +4 -4
  118. package/lib/cjs/select-icon-button/SelectIconButton.js.map +1 -1
  119. package/lib/cjs/selectable-tag/stories/selectable-tag-sizes.story.js +1 -1
  120. package/lib/cjs/selectable-tag/stories/selectable-tag-sizes.story.js.map +1 -1
  121. package/lib/cjs/side-navigation/SideNavigation.js +9 -9
  122. package/lib/cjs/side-navigation/SideNavigation.js.map +1 -1
  123. package/lib/cjs/slider/Slider.js +1 -1
  124. package/lib/cjs/slider/Slider.js.map +1 -1
  125. package/lib/cjs/slider/stories/slider-single-controlled.story.js +2 -2
  126. package/lib/cjs/slider/stories/slider-single-controlled.story.js.map +1 -1
  127. package/lib/cjs/spotlight/Spotlight.js +6 -6
  128. package/lib/cjs/spotlight/Spotlight.js.map +1 -1
  129. package/lib/cjs/spotlight/SpotlightProvider.js +6 -6
  130. package/lib/cjs/spotlight/SpotlightProvider.js.map +1 -1
  131. package/lib/cjs/spotlight/SpotlightTarget.js +18 -16
  132. package/lib/cjs/spotlight/SpotlightTarget.js.map +1 -1
  133. package/lib/cjs/status-indicator/StatusIndicator.js +4 -2
  134. package/lib/cjs/status-indicator/StatusIndicator.js.map +1 -1
  135. package/lib/cjs/tabs/Tabs.js +3 -3
  136. package/lib/cjs/tabs/Tabs.js.map +1 -1
  137. package/lib/cjs/tabs/use-tabs-scroll-overflow.js +2 -2
  138. package/lib/cjs/tabs/use-tabs-scroll-overflow.js.map +1 -1
  139. package/lib/cjs/text-input/stories/text-input-full.story.js +1 -1
  140. package/lib/cjs/text-input/stories/text-input-full.story.js.map +1 -1
  141. package/lib/cjs/text-input/stories/text-input-with-icons.story.js +1 -1
  142. package/lib/cjs/text-input/stories/text-input-with-icons.story.js.map +1 -1
  143. package/lib/cjs/theme/agnostic.js +4 -4
  144. package/lib/cjs/theme/agnostic.js.map +1 -1
  145. package/lib/cjs/time-picker/TimePicker.js +24 -24
  146. package/lib/cjs/time-picker/TimePicker.js.map +1 -1
  147. package/lib/cjs/time-picker/generate-time-options.js +3 -3
  148. package/lib/cjs/time-picker/generate-time-options.js.map +1 -1
  149. package/lib/cjs/timezone-picker/TimeZonePicker.js +44 -44
  150. package/lib/cjs/timezone-picker/TimeZonePicker.js.map +1 -1
  151. package/lib/cjs/timezone-picker/generate-timezone-options.js +5 -5
  152. package/lib/cjs/timezone-picker/generate-timezone-options.js.map +1 -1
  153. package/lib/cjs/toast/ToastControlled.js +1 -1
  154. package/lib/cjs/toast/ToastControlled.js.map +1 -1
  155. package/lib/cjs/tooltip/use-tooltip.js +8 -1
  156. package/lib/cjs/tooltip/use-tooltip.js.map +1 -1
  157. package/lib/cjs/tree-view/TreeItemWrapper.js +8 -8
  158. package/lib/cjs/tree-view/TreeItemWrapper.js.map +1 -1
  159. package/lib/cjs/tree-view/TreeView.js +6 -2
  160. package/lib/cjs/tree-view/TreeView.js.map +1 -1
  161. package/lib/cjs/tree-view/TreeViewTextItem.js +17 -17
  162. package/lib/cjs/tree-view/TreeViewTextItem.js.map +1 -1
  163. package/lib/cjs/tree-view/tree-view-keyboard-coordinates.js +2 -0
  164. package/lib/cjs/tree-view/tree-view-keyboard-coordinates.js.map +1 -1
  165. package/lib/cjs/tree-view/tree-view-utils.js +12 -12
  166. package/lib/cjs/tree-view/tree-view-utils.js.map +1 -1
  167. package/lib/esm/_common/export-stories-utils.js +1 -1
  168. package/lib/esm/_common/export-stories-utils.js.map +1 -1
  169. package/lib/esm/_common/utils.js +3 -3
  170. package/lib/esm/_common/utils.js.map +1 -1
  171. package/lib/esm/_generated/style-rules/color-utils.js +3 -0
  172. package/lib/esm/_generated/style-rules/color-utils.js.map +1 -1
  173. package/lib/esm/_generated/style-rules/date-utils.js +14 -13
  174. package/lib/esm/_generated/style-rules/date-utils.js.map +1 -1
  175. package/lib/esm/_generated/style-rules/literal-schemas.js +5 -3
  176. package/lib/esm/_generated/style-rules/literal-schemas.js.map +1 -1
  177. package/lib/esm/ai/code-preview/CodePreview.js +1 -1
  178. package/lib/esm/ai/code-preview/CodePreview.js.map +1 -1
  179. package/lib/esm/ai/file-tag/FileTag.js.map +1 -1
  180. package/lib/esm/ai/image-tag/ImageTag.js.map +1 -1
  181. package/lib/esm/ai/prompt/Prompt.js +10 -10
  182. package/lib/esm/ai/prompt/Prompt.js.map +1 -1
  183. package/lib/esm/ai/prompt/stories/prompt-advanced.story.js +1 -1
  184. package/lib/esm/ai/prompt/stories/prompt-advanced.story.js.map +1 -1
  185. package/lib/esm/ai/prompt/stories/prompt-context.story.js +1 -1
  186. package/lib/esm/ai/prompt/stories/prompt-context.story.js.map +1 -1
  187. package/lib/esm/ai/prompt/stories/prompt-default.story.js +1 -1
  188. package/lib/esm/ai/prompt/stories/prompt-default.story.js.map +1 -1
  189. package/lib/esm/ai/prompt/stories/prompt-header.story.js +1 -1
  190. package/lib/esm/ai/prompt/stories/prompt-header.story.js.map +1 -1
  191. package/lib/esm/ai/response/Response.js +4 -4
  192. package/lib/esm/ai/response/Response.js.map +1 -1
  193. package/lib/esm/ai/response/stories/response-full-example.story.js +1 -1
  194. package/lib/esm/ai/response/stories/response-full-example.story.js.map +1 -1
  195. package/lib/esm/ai/suggestion/Suggestion.js.map +1 -1
  196. package/lib/esm/ai/thinking/thinking-duration-formatter.js +5 -5
  197. package/lib/esm/ai/thinking/thinking-duration-formatter.js.map +1 -1
  198. package/lib/esm/banner/Banner.js +2 -2
  199. package/lib/esm/banner/Banner.js.map +1 -1
  200. package/lib/esm/button/ButtonBase.js +4 -4
  201. package/lib/esm/button/ButtonBase.js.map +1 -1
  202. package/lib/esm/code/Code.js +3 -3
  203. package/lib/esm/code/Code.js.map +1 -1
  204. package/lib/esm/code-block/CodeBlock.js +2 -2
  205. package/lib/esm/code-block/CodeBlock.js.map +1 -1
  206. package/lib/esm/color-picker/ColorPicker.js +22 -22
  207. package/lib/esm/color-picker/ColorPicker.js.map +1 -1
  208. package/lib/esm/color-picker/stories/color-picker-custom-swatches.story.js +20 -20
  209. package/lib/esm/color-picker/stories/color-picker-custom-swatches.story.js.map +1 -1
  210. package/lib/esm/color-picker/stories/color-picker-default.story.js +4 -4
  211. package/lib/esm/color-picker/stories/color-picker-default.story.js.map +1 -1
  212. package/lib/esm/color-picker/stories/color-picker-dialog.story.js +4 -4
  213. package/lib/esm/color-picker/stories/color-picker-dialog.story.js.map +1 -1
  214. package/lib/esm/color-picker/stories/color-picker-without-eyedropper.story.js +4 -4
  215. package/lib/esm/color-picker/stories/color-picker-without-eyedropper.story.js.map +1 -1
  216. package/lib/esm/combobox/stories/combobox-large-data-set.story.js +1 -1
  217. package/lib/esm/combobox/stories/combobox-large-data-set.story.js.map +1 -1
  218. package/lib/esm/data-grid/Components.js +20 -20
  219. package/lib/esm/data-grid/Components.js.map +1 -1
  220. package/lib/esm/data-grid/DataGrid.js +3 -3
  221. package/lib/esm/data-grid/DataGrid.js.map +1 -1
  222. package/lib/esm/data-grid/data-grid-nav/data-grid-nav.js +55 -54
  223. package/lib/esm/data-grid/data-grid-nav/data-grid-nav.js.map +1 -1
  224. package/lib/esm/data-grid/data-grid-nav/helpers.js +1 -1
  225. package/lib/esm/data-grid/data-grid-nav/helpers.js.map +1 -1
  226. package/lib/esm/data-grid/data-grid-nav/index.js +2 -2
  227. package/lib/esm/data-grid/data-grid-nav/index.js.map +1 -1
  228. package/lib/esm/data-grid/helpers/index.js +42 -40
  229. package/lib/esm/data-grid/helpers/index.js.map +1 -1
  230. package/lib/esm/data-grid/stories/datagrid-in-dialog.story.js +10 -7
  231. package/lib/esm/data-grid/stories/datagrid-in-dialog.story.js.map +1 -1
  232. package/lib/esm/data-grid/stories/datagrid-keyboard-navigation.story.js +10 -7
  233. package/lib/esm/data-grid/stories/datagrid-keyboard-navigation.story.js.map +1 -1
  234. package/lib/esm/data-grid/stories/datagrid-rule-based-styling-datetime.story.js +5 -5
  235. package/lib/esm/data-grid/stories/datagrid-rule-based-styling-datetime.story.js.map +1 -1
  236. package/lib/esm/data-grid/stories/datagrid-search-and-filters.stories.js +1 -1
  237. package/lib/esm/data-grid/stories/datagrid-search-and-filters.stories.js.map +1 -1
  238. package/lib/esm/data-grid/stories/datagrid-virtualization.story.js +5 -5
  239. package/lib/esm/data-grid/stories/datagrid-virtualization.story.js.map +1 -1
  240. package/lib/esm/data-grid/style-rules/evaluate.js +23 -23
  241. package/lib/esm/data-grid/style-rules/evaluate.js.map +1 -1
  242. package/lib/esm/data-grid/style-rules/types.js +1 -1
  243. package/lib/esm/data-grid/style-rules/types.js.map +1 -1
  244. package/lib/esm/dialog/Dialog.js +5 -5
  245. package/lib/esm/dialog/Dialog.js.map +1 -1
  246. package/lib/esm/dialog/dialog-types.js.map +1 -1
  247. package/lib/esm/drawer/Drawer.js +5 -5
  248. package/lib/esm/drawer/Drawer.js.map +1 -1
  249. package/lib/esm/dropdown-button/DropdownButton.js +4 -4
  250. package/lib/esm/dropdown-button/DropdownButton.js.map +1 -1
  251. package/lib/esm/dropzone/stories/dropzone-full.story.js +1 -1
  252. package/lib/esm/dropzone/stories/dropzone-full.story.js.map +1 -1
  253. package/lib/esm/flex/stories/flex-default.story.js +1 -1
  254. package/lib/esm/flex/stories/flex-default.story.js.map +1 -1
  255. package/lib/esm/hooks/index.js +3 -3
  256. package/lib/esm/hooks/index.js.map +1 -1
  257. package/lib/esm/icon-button-base/IconButtonBase.js +4 -4
  258. package/lib/esm/icon-button-base/IconButtonBase.js.map +1 -1
  259. package/lib/esm/icons/generated/custom/ScatterPlot.js +28 -0
  260. package/lib/esm/icons/generated/custom/ScatterPlot.js.map +1 -0
  261. package/lib/esm/icons/generated/custom/index.js +1 -0
  262. package/lib/esm/icons/generated/custom/index.js.map +1 -1
  263. package/lib/esm/inline-edit/InlineEdit.js +8 -8
  264. package/lib/esm/inline-edit/InlineEdit.js.map +1 -1
  265. package/lib/esm/kbd/kbd-utils.js +2 -2
  266. package/lib/esm/kbd/kbd-utils.js.map +1 -1
  267. package/lib/esm/modal/Modal.js +6 -6
  268. package/lib/esm/modal/Modal.js.map +1 -1
  269. package/lib/esm/next/tree-view/TreeView.js +23 -23
  270. package/lib/esm/next/tree-view/TreeView.js.map +1 -1
  271. package/lib/esm/next/tree-view/stories/tree-view-lazy.story.js +1 -1
  272. package/lib/esm/next/tree-view/stories/tree-view-lazy.story.js.map +1 -1
  273. package/lib/esm/next/tree-view/stories/tree-view-multi.story.js +6 -6
  274. package/lib/esm/next/tree-view/stories/tree-view-multi.story.js.map +1 -1
  275. package/lib/esm/popover/Popover.js.map +1 -1
  276. package/lib/esm/popover/stories/popover-custom-offset.story.js +3 -3
  277. package/lib/esm/popover/stories/popover-custom-offset.story.js.map +1 -1
  278. package/lib/esm/popover/use-popover.js +2 -0
  279. package/lib/esm/popover/use-popover.js.map +1 -1
  280. package/lib/esm/segmented-control/SegmentedControl.js.map +1 -1
  281. package/lib/esm/select/Overrides.js +30 -30
  282. package/lib/esm/select/Overrides.js.map +1 -1
  283. package/lib/esm/select-icon-button/SelectIconButton.js +4 -4
  284. package/lib/esm/select-icon-button/SelectIconButton.js.map +1 -1
  285. package/lib/esm/selectable-tag/stories/selectable-tag-sizes.story.js +1 -1
  286. package/lib/esm/selectable-tag/stories/selectable-tag-sizes.story.js.map +1 -1
  287. package/lib/esm/side-navigation/SideNavigation.js +9 -9
  288. package/lib/esm/side-navigation/SideNavigation.js.map +1 -1
  289. package/lib/esm/slider/Slider.js +1 -1
  290. package/lib/esm/slider/Slider.js.map +1 -1
  291. package/lib/esm/slider/stories/slider-single-controlled.story.js +2 -2
  292. package/lib/esm/slider/stories/slider-single-controlled.story.js.map +1 -1
  293. package/lib/esm/spotlight/Spotlight.js +6 -6
  294. package/lib/esm/spotlight/Spotlight.js.map +1 -1
  295. package/lib/esm/spotlight/SpotlightProvider.js +6 -6
  296. package/lib/esm/spotlight/SpotlightProvider.js.map +1 -1
  297. package/lib/esm/spotlight/SpotlightTarget.js +18 -16
  298. package/lib/esm/spotlight/SpotlightTarget.js.map +1 -1
  299. package/lib/esm/status-indicator/StatusIndicator.js +4 -2
  300. package/lib/esm/status-indicator/StatusIndicator.js.map +1 -1
  301. package/lib/esm/tabs/Tabs.js +3 -3
  302. package/lib/esm/tabs/Tabs.js.map +1 -1
  303. package/lib/esm/tabs/use-tabs-scroll-overflow.js +2 -2
  304. package/lib/esm/tabs/use-tabs-scroll-overflow.js.map +1 -1
  305. package/lib/esm/text-input/stories/text-input-full.story.js +1 -1
  306. package/lib/esm/text-input/stories/text-input-full.story.js.map +1 -1
  307. package/lib/esm/text-input/stories/text-input-with-icons.story.js +1 -1
  308. package/lib/esm/text-input/stories/text-input-with-icons.story.js.map +1 -1
  309. package/lib/esm/theme/agnostic.js +3 -3
  310. package/lib/esm/theme/agnostic.js.map +1 -1
  311. package/lib/esm/time-picker/TimePicker.js +24 -24
  312. package/lib/esm/time-picker/TimePicker.js.map +1 -1
  313. package/lib/esm/time-picker/generate-time-options.js +3 -3
  314. package/lib/esm/time-picker/generate-time-options.js.map +1 -1
  315. package/lib/esm/timezone-picker/TimeZonePicker.js +44 -44
  316. package/lib/esm/timezone-picker/TimeZonePicker.js.map +1 -1
  317. package/lib/esm/timezone-picker/generate-timezone-options.js +5 -5
  318. package/lib/esm/timezone-picker/generate-timezone-options.js.map +1 -1
  319. package/lib/esm/toast/ToastControlled.js +1 -1
  320. package/lib/esm/toast/ToastControlled.js.map +1 -1
  321. package/lib/esm/tooltip/use-tooltip.js +8 -1
  322. package/lib/esm/tooltip/use-tooltip.js.map +1 -1
  323. package/lib/esm/tree-view/TreeItemWrapper.js +8 -8
  324. package/lib/esm/tree-view/TreeItemWrapper.js.map +1 -1
  325. package/lib/esm/tree-view/TreeView.js +6 -2
  326. package/lib/esm/tree-view/TreeView.js.map +1 -1
  327. package/lib/esm/tree-view/TreeViewTextItem.js +17 -17
  328. package/lib/esm/tree-view/TreeViewTextItem.js.map +1 -1
  329. package/lib/esm/tree-view/tree-view-keyboard-coordinates.js +2 -0
  330. package/lib/esm/tree-view/tree-view-keyboard-coordinates.js.map +1 -1
  331. package/lib/esm/tree-view/tree-view-utils.js +12 -12
  332. package/lib/esm/tree-view/tree-view-utils.js.map +1 -1
  333. package/lib/types/_common/export-stories-utils.d.ts +1 -1
  334. package/lib/types/_common/utils.d.ts +3 -3
  335. package/lib/types/_generated/style-rules/color-utils.d.ts.map +1 -1
  336. package/lib/types/_generated/style-rules/date-utils.d.ts +3 -3
  337. package/lib/types/_generated/style-rules/date-utils.d.ts.map +1 -1
  338. package/lib/types/_generated/style-rules/literal-schemas.d.ts.map +1 -1
  339. package/lib/types/ai/code-preview/CodePreview.d.ts +1 -1
  340. package/lib/types/ai/file-tag/FileTag.d.ts +1 -1
  341. package/lib/types/ai/file-tag/FileTag.d.ts.map +1 -1
  342. package/lib/types/ai/image-tag/ImageTag.d.ts +1 -1
  343. package/lib/types/ai/image-tag/ImageTag.d.ts.map +1 -1
  344. package/lib/types/ai/prompt/Prompt.d.ts +3 -3
  345. package/lib/types/ai/prompt/Prompt.d.ts.map +1 -1
  346. package/lib/types/ai/suggestion/Suggestion.d.ts +1 -1
  347. package/lib/types/ai/suggestion/Suggestion.d.ts.map +1 -1
  348. package/lib/types/ai/thinking/thinking-duration-formatter.d.ts +5 -5
  349. package/lib/types/banner/Banner.d.ts +1 -1
  350. package/lib/types/banner/Banner.d.ts.map +1 -1
  351. package/lib/types/button/ButtonBase.d.ts +2 -2
  352. package/lib/types/button/ButtonBase.d.ts.map +1 -1
  353. package/lib/types/code/Code.d.ts +1 -1
  354. package/lib/types/code/Code.d.ts.map +1 -1
  355. package/lib/types/data-grid/Components.d.ts +2 -2
  356. package/lib/types/data-grid/Components.d.ts.map +1 -1
  357. package/lib/types/data-grid/DataGrid.d.ts +2 -2
  358. package/lib/types/data-grid/data-grid-nav/data-grid-nav.d.ts +4 -4
  359. package/lib/types/data-grid/data-grid-nav/data-grid-nav.d.ts.map +1 -1
  360. package/lib/types/data-grid/data-grid-nav/helpers.d.ts +1 -1
  361. package/lib/types/data-grid/data-grid-nav/index.d.ts +1 -1
  362. package/lib/types/data-grid/data-grid-nav/index.d.ts.map +1 -1
  363. package/lib/types/data-grid/helpers/index.d.ts +5 -5
  364. package/lib/types/data-grid/helpers/index.d.ts.map +1 -1
  365. package/lib/types/data-grid/stories/datagrid-in-dialog.story.d.ts.map +1 -1
  366. package/lib/types/data-grid/stories/datagrid-keyboard-navigation.story.d.ts.map +1 -1
  367. package/lib/types/data-grid/stories/datagrid-pinned-columns.stories.d.ts +2 -2
  368. package/lib/types/data-grid/stories/datagrid-search-and-filters.stories.d.ts +2 -2
  369. package/lib/types/data-grid/stories/datagrid-virtualization.story.d.ts.map +1 -1
  370. package/lib/types/data-grid/style-rules/evaluate.d.ts +1 -1
  371. package/lib/types/dialog/Dialog.d.ts.map +1 -1
  372. package/lib/types/dialog/dialog-types.d.ts +1 -1
  373. package/lib/types/dialog/dialog-types.d.ts.map +1 -1
  374. package/lib/types/drawer/Drawer.d.ts +1 -1
  375. package/lib/types/drawer/Drawer.d.ts.map +1 -1
  376. package/lib/types/dropdown-button/DropdownButton.d.ts +1 -1
  377. package/lib/types/dropdown-button/DropdownButton.d.ts.map +1 -1
  378. package/lib/types/hooks/index.d.ts +3 -3
  379. package/lib/types/icon-button-base/IconButtonBase.d.ts +1 -1
  380. package/lib/types/icon-button-base/IconButtonBase.d.ts.map +1 -1
  381. package/lib/types/icons/generated/custom/ScatterPlot.d.ts +29 -0
  382. package/lib/types/icons/generated/custom/ScatterPlot.d.ts.map +1 -0
  383. package/lib/types/icons/generated/custom/index.d.ts +1 -0
  384. package/lib/types/icons/generated/custom/index.d.ts.map +1 -1
  385. package/lib/types/modal/Modal.d.ts +1 -1
  386. package/lib/types/modal/Modal.d.ts.map +1 -1
  387. package/lib/types/popover/Popover.d.ts.map +1 -1
  388. package/lib/types/popover/use-popover.d.ts.map +1 -1
  389. package/lib/types/segmented-control/SegmentedControl.d.ts +1 -1
  390. package/lib/types/segmented-control/SegmentedControl.d.ts.map +1 -1
  391. package/lib/types/select/Overrides.d.ts.map +1 -1
  392. package/lib/types/select-icon-button/SelectIconButton.d.ts +1 -1
  393. package/lib/types/select-icon-button/SelectIconButton.d.ts.map +1 -1
  394. package/lib/types/selectable-tag/stories/selectable-tag-sizes.story.d.ts.map +1 -1
  395. package/lib/types/spotlight/SpotlightProvider.d.ts.map +1 -1
  396. package/lib/types/spotlight/SpotlightTarget.d.ts +4 -3
  397. package/lib/types/spotlight/SpotlightTarget.d.ts.map +1 -1
  398. package/lib/types/status-indicator/StatusIndicator.d.ts.map +1 -1
  399. package/lib/types/tabs/Tabs.d.ts +1 -1
  400. package/lib/types/tabs/Tabs.d.ts.map +1 -1
  401. package/lib/types/theme/agnostic.d.ts +2 -2
  402. package/lib/types/theme/agnostic.d.ts.map +1 -1
  403. package/lib/types/tooltip/use-tooltip.d.ts.map +1 -1
  404. package/lib/types/tree-view/TreeView.d.ts.map +1 -1
  405. package/lib/types/tree-view/TreeViewTextItem.d.ts.map +1 -1
  406. package/lib/types/tree-view/tree-view-keyboard-coordinates.d.ts.map +1 -1
  407. package/lib/types/tree-view/tree-view-utils.d.ts +12 -12
  408. package/lib/types/tree-view/tree-view-utils.d.ts.map +1 -1
  409. package/package.json +5 -3
  410. package/skills/ndl-react/components/ai/file-tag.md +1 -1
  411. package/skills/ndl-react/components/ai/image-tag.md +1 -1
  412. package/skills/ndl-react/components/ai/prompt.md +10 -10
  413. package/skills/ndl-react/components/ai/response.md +1 -1
  414. package/skills/ndl-react/components/ai/suggestion.md +1 -1
  415. package/skills/ndl-react/components/banner.md +1 -1
  416. package/skills/ndl-react/components/clean-icon-button.md +1 -1
  417. package/skills/ndl-react/components/code.md +1 -1
  418. package/skills/ndl-react/components/combobox.md +1 -1
  419. package/skills/ndl-react/components/data-grid.md +35 -28
  420. package/skills/ndl-react/components/dialog.md +1 -1
  421. package/skills/ndl-react/components/drawer.md +1 -1
  422. package/skills/ndl-react/components/dropdown-button.md +1 -1
  423. package/skills/ndl-react/components/dropzone.md +1 -1
  424. package/skills/ndl-react/components/filled-button.md +2 -2
  425. package/skills/ndl-react/components/flex.md +2 -2
  426. package/skills/ndl-react/components/icon-button.md +1 -1
  427. package/skills/ndl-react/components/modal.md +1 -1
  428. package/skills/ndl-react/components/next/tree-view.md +8 -8
  429. package/skills/ndl-react/components/outlined-button.md +2 -2
  430. package/skills/ndl-react/components/popover.md +3 -3
  431. package/skills/ndl-react/components/segmented-control.md +1 -1
  432. package/skills/ndl-react/components/select-icon-button.md +1 -1
  433. package/skills/ndl-react/components/selectable-tag.md +10 -4
  434. package/skills/ndl-react/components/slider.md +2 -2
  435. package/skills/ndl-react/components/tabs.md +1 -1
  436. package/skills/ndl-react/components/text-button.md +2 -2
  437. package/skills/ndl-react/components/text-input.md +2 -2
@@ -39,11 +39,11 @@ import { Trail } from './TreeViewTrail';
39
39
  /**
40
40
  * Handles keydown events for when the item itself is focused (wrapperRef.current)
41
41
  * Moves the focus between the item and its children as well as toggles collapsing of the item
42
- * @param event
43
- * @param shouldDisableInteraction
44
- * @param wrapperRef
45
- * @param onCollapse
46
- * @param item
42
+ * @param event - Keyboard event
43
+ * @param shouldDisableInteraction - Whether interaction is disabled
44
+ * @param wrapperRef - Ref to the wrapper element
45
+ * @param onCollapse - Collapse handler
46
+ * @param item - Tree item
47
47
  * @returns
48
48
  */
49
49
  const onWrapperKeyDown = (event, shouldDisableInteraction, wrapperRef, onCollapse, item) => {
@@ -90,9 +90,9 @@ const onWrapperKeyDown = (event, shouldDisableInteraction, wrapperRef, onCollaps
90
90
  * Moves the focus between the children of the item and up to the parent if needed.
91
91
  * Stops the event from propagating to the parent since it has it own keydown handler
92
92
  * The parent is the wrapperRef.current and uses onWrapperKeyDown
93
- * @param event
94
- * @param shouldDisableInteraction
95
- * @param wrapperRef
93
+ * @param event - Keyboard event
94
+ * @param shouldDisableInteraction - Whether interaction is disabled
95
+ * @param wrapperRef - Ref to the wrapper element
96
96
  */
97
97
  const onInnerDivKeyDown = (event, shouldDisableInteraction, wrapperRef) => {
98
98
  var _a;
@@ -1 +1 @@
1
- {"version":3,"file":"TreeItemWrapper.js","sourceRoot":"","sources":["../../../src/tree-view/TreeItemWrapper.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n *\n * Copyright (c) \"Neo4j\"\n * Neo4j Sweden AB [http://neo4j.com]\n *\n * This file is part of Neo4j.\n *\n * Neo4j is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\nimport classNames from 'classnames';\nimport type React from 'react';\nimport { useRef } from 'react';\n\nimport { findFocusableChildren, findFocusableSibling } from '../_common/utils';\nimport DragIcon from '../icons/generated/custom/Drag';\nimport {\n focusCellInNextRow,\n focusCellInPreviousRow,\n focusNextRow,\n focusPreviousRow,\n} from './tree-view-keyboard-helpers';\nimport { type TreeItem, type TreeItemComponentProps } from './tree-view-types';\nimport { Trail } from './TreeViewTrail';\n\n/**\n * Handles keydown events for when the item itself is focused (wrapperRef.current)\n * Moves the focus between the item and its children as well as toggles collapsing of the item\n * @param event\n * @param shouldDisableInteraction\n * @param wrapperRef\n * @param onCollapse\n * @param item\n * @returns\n */\n\nconst onWrapperKeyDown = (\n event: React.KeyboardEvent,\n shouldDisableInteraction: boolean,\n wrapperRef: React.RefObject<HTMLElement | null>,\n onCollapse: (() => void) | undefined,\n item: TreeItem<Record<string, unknown>>,\n) => {\n if (shouldDisableInteraction || wrapperRef.current === null) {\n return;\n }\n\n if (event.key === 'Enter' && onCollapse) {\n onCollapse();\n } else if (event.key === 'ArrowRight') {\n event.preventDefault();\n if (item.canHaveSubItems && item.isCollapsed && onCollapse) {\n onCollapse();\n } else {\n const focusable = findFocusableChildren(wrapperRef.current);\n const [firstElement] = focusable;\n if (firstElement instanceof HTMLElement) {\n firstElement.focus();\n }\n }\n\n event.preventDefault();\n } else if (event.key === 'ArrowLeft') {\n event.preventDefault();\n if (item.canHaveSubItems && !item.isCollapsed && onCollapse) {\n onCollapse();\n } else {\n focusPreviousRow(wrapperRef.current);\n }\n } else if (event.key === 'ArrowDown') {\n event.preventDefault();\n focusNextRow(wrapperRef.current);\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n focusPreviousRow(wrapperRef.current);\n }\n};\n\n/**\n * Handles keydown events for when one of the items children is focused\n * Moves the focus between the children of the item and up to the parent if needed.\n * Stops the event from propagating to the parent since it has it own keydown handler\n * The parent is the wrapperRef.current and uses onWrapperKeyDown\n * @param event\n * @param shouldDisableInteraction\n * @param wrapperRef\n */\nconst onInnerDivKeyDown = (\n event: React.KeyboardEvent,\n shouldDisableInteraction: boolean,\n wrapperRef: React.RefObject<HTMLElement | null>,\n) => {\n if (shouldDisableInteraction) {\n return;\n }\n event.stopPropagation();\n if (event.key === 'ArrowRight') {\n event.preventDefault();\n const nextElement = findFocusableSibling(wrapperRef, 'next');\n if (nextElement) {\n nextElement.focus();\n }\n } else if (event.key === 'ArrowLeft') {\n event.preventDefault();\n const previousElement = findFocusableSibling(wrapperRef, 'prev');\n if (previousElement) {\n previousElement.focus();\n } else {\n wrapperRef.current?.focus();\n }\n } else if (event.key === 'ArrowDown' && wrapperRef.current !== null) {\n event.preventDefault();\n focusCellInNextRow(wrapperRef.current);\n } else if (event.key === 'ArrowUp' && wrapperRef.current !== null) {\n event.preventDefault();\n focusCellInPreviousRow(wrapperRef.current);\n } else if (event.shiftKey && event.key === 'Tab') {\n const previousElement = findFocusableSibling(wrapperRef, 'prev');\n if (previousElement) {\n event.preventDefault();\n previousElement.focus();\n }\n } else if (event.key === 'Tab') {\n if (event.shiftKey) {\n return;\n }\n\n const nextElement = findFocusableSibling(wrapperRef, 'next');\n if (nextElement) {\n nextElement.focus();\n event.preventDefault();\n }\n }\n};\n\n/**\n * Used as a helper function to wrap the TreeItem component\n * This adds the drag handle and trail to the start of a tree item.\n * Useful if you want to add additional functionality to the tree item but still keep the drag handle and trail\n * Is also used internally to create the TreeViewTextItem component\n */\nfunction TreeItemWrapperInner<T extends Record<string, unknown>>({\n depth,\n shouldDisableInteraction,\n shouldDisableSorting,\n isGhost,\n isIndicator,\n onCollapse,\n item,\n setNodeRef,\n setActivatorNodeRef,\n dragHandleProps,\n style,\n className,\n trails,\n children,\n indentationWidth,\n ariaLevel,\n ariaPosInSet,\n ariaSetSize,\n tabIndex,\n onFocus,\n ref,\n // Need to destruct to avoid passing it to the component\n // oxlint-disable-next-line no-unused-vars\n ...restProps\n}: React.PropsWithChildren<TreeItemComponentProps<T>>) {\n const wrapperRef = useRef<HTMLElement | null>(null);\n\n return (\n <li\n ref={(el) => {\n wrapperRef.current = el;\n\n if (el === null) {\n return;\n }\n setNodeRef(el);\n }}\n className={classNames({\n className,\n indicator: isIndicator,\n 'ndl-tree-view-list-item': true,\n 'ndl-tree-view-list-item-disable-interaction': shouldDisableInteraction,\n 'ndl-tree-view-list-item-placeholder': isGhost,\n })}\n style={{\n ...style,\n paddingLeft: isIndicator ? `${depth * indentationWidth}px` : 0,\n }}\n role=\"treeitem\"\n onFocus={onFocus}\n aria-level={ariaLevel}\n aria-posinset={ariaPosInSet}\n aria-setsize={ariaSetSize}\n aria-selected={undefined}\n aria-checked={item.isSelected && !item.isSkeletonLoading}\n aria-expanded={item.canHaveSubItems ? !item.isCollapsed : undefined}\n onKeyDown={(event) =>\n onWrapperKeyDown(\n event,\n shouldDisableInteraction ?? false,\n wrapperRef,\n onCollapse,\n item,\n )\n }\n >\n <div\n role=\"presentation\"\n className=\"ndl-tree-view-list-item-content\"\n ref={ref}\n onKeyDown={(event) =>\n onInnerDivKeyDown(\n event,\n shouldDisableInteraction ?? false,\n wrapperRef,\n )\n }\n >\n {!shouldDisableSorting && (\n <button\n type=\"button\"\n className=\"ndl-tree-view-drag-handle\"\n ref={setActivatorNodeRef}\n aria-label=\"Pick up\"\n {...dragHandleProps}\n tabIndex={tabIndex}\n >\n <DragIcon />\n </button>\n )}\n {trails.map((trail, index) => {\n return <Trail key={index} variant={trail} />;\n })}\n\n {children}\n </div>\n </li>\n );\n}\n\nexport const TreeItemWrapper = TreeItemWrapperInner;\n"]}
1
+ {"version":3,"file":"TreeItemWrapper.js","sourceRoot":"","sources":["../../../src/tree-view/TreeItemWrapper.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n *\n * Copyright (c) \"Neo4j\"\n * Neo4j Sweden AB [http://neo4j.com]\n *\n * This file is part of Neo4j.\n *\n * Neo4j is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\nimport classNames from 'classnames';\nimport type React from 'react';\nimport { useRef } from 'react';\n\nimport { findFocusableChildren, findFocusableSibling } from '../_common/utils';\nimport DragIcon from '../icons/generated/custom/Drag';\nimport {\n focusCellInNextRow,\n focusCellInPreviousRow,\n focusNextRow,\n focusPreviousRow,\n} from './tree-view-keyboard-helpers';\nimport { type TreeItem, type TreeItemComponentProps } from './tree-view-types';\nimport { Trail } from './TreeViewTrail';\n\n/**\n * Handles keydown events for when the item itself is focused (wrapperRef.current)\n * Moves the focus between the item and its children as well as toggles collapsing of the item\n * @param event - Keyboard event\n * @param shouldDisableInteraction - Whether interaction is disabled\n * @param wrapperRef - Ref to the wrapper element\n * @param onCollapse - Collapse handler\n * @param item - Tree item\n * @returns\n */\n\nconst onWrapperKeyDown = (\n event: React.KeyboardEvent,\n shouldDisableInteraction: boolean,\n wrapperRef: React.RefObject<HTMLElement | null>,\n onCollapse: (() => void) | undefined,\n item: TreeItem<Record<string, unknown>>,\n) => {\n if (shouldDisableInteraction || wrapperRef.current === null) {\n return;\n }\n\n if (event.key === 'Enter' && onCollapse) {\n onCollapse();\n } else if (event.key === 'ArrowRight') {\n event.preventDefault();\n if (item.canHaveSubItems && item.isCollapsed && onCollapse) {\n onCollapse();\n } else {\n const focusable = findFocusableChildren(wrapperRef.current);\n const [firstElement] = focusable;\n if (firstElement instanceof HTMLElement) {\n firstElement.focus();\n }\n }\n\n event.preventDefault();\n } else if (event.key === 'ArrowLeft') {\n event.preventDefault();\n if (item.canHaveSubItems && !item.isCollapsed && onCollapse) {\n onCollapse();\n } else {\n focusPreviousRow(wrapperRef.current);\n }\n } else if (event.key === 'ArrowDown') {\n event.preventDefault();\n focusNextRow(wrapperRef.current);\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n focusPreviousRow(wrapperRef.current);\n }\n};\n\n/**\n * Handles keydown events for when one of the items children is focused\n * Moves the focus between the children of the item and up to the parent if needed.\n * Stops the event from propagating to the parent since it has it own keydown handler\n * The parent is the wrapperRef.current and uses onWrapperKeyDown\n * @param event - Keyboard event\n * @param shouldDisableInteraction - Whether interaction is disabled\n * @param wrapperRef - Ref to the wrapper element\n */\nconst onInnerDivKeyDown = (\n event: React.KeyboardEvent,\n shouldDisableInteraction: boolean,\n wrapperRef: React.RefObject<HTMLElement | null>,\n) => {\n if (shouldDisableInteraction) {\n return;\n }\n event.stopPropagation();\n if (event.key === 'ArrowRight') {\n event.preventDefault();\n const nextElement = findFocusableSibling(wrapperRef, 'next');\n if (nextElement) {\n nextElement.focus();\n }\n } else if (event.key === 'ArrowLeft') {\n event.preventDefault();\n const previousElement = findFocusableSibling(wrapperRef, 'prev');\n if (previousElement) {\n previousElement.focus();\n } else {\n wrapperRef.current?.focus();\n }\n } else if (event.key === 'ArrowDown' && wrapperRef.current !== null) {\n event.preventDefault();\n focusCellInNextRow(wrapperRef.current);\n } else if (event.key === 'ArrowUp' && wrapperRef.current !== null) {\n event.preventDefault();\n focusCellInPreviousRow(wrapperRef.current);\n } else if (event.shiftKey && event.key === 'Tab') {\n const previousElement = findFocusableSibling(wrapperRef, 'prev');\n if (previousElement) {\n event.preventDefault();\n previousElement.focus();\n }\n } else if (event.key === 'Tab') {\n if (event.shiftKey) {\n return;\n }\n\n const nextElement = findFocusableSibling(wrapperRef, 'next');\n if (nextElement) {\n nextElement.focus();\n event.preventDefault();\n }\n }\n};\n\n/**\n * Used as a helper function to wrap the TreeItem component\n * This adds the drag handle and trail to the start of a tree item.\n * Useful if you want to add additional functionality to the tree item but still keep the drag handle and trail\n * Is also used internally to create the TreeViewTextItem component\n */\nfunction TreeItemWrapperInner<T extends Record<string, unknown>>({\n depth,\n shouldDisableInteraction,\n shouldDisableSorting,\n isGhost,\n isIndicator,\n onCollapse,\n item,\n setNodeRef,\n setActivatorNodeRef,\n dragHandleProps,\n style,\n className,\n trails,\n children,\n indentationWidth,\n ariaLevel,\n ariaPosInSet,\n ariaSetSize,\n tabIndex,\n onFocus,\n ref,\n // Need to destruct to avoid passing it to the component\n // oxlint-disable-next-line no-unused-vars\n ...restProps\n}: React.PropsWithChildren<TreeItemComponentProps<T>>) {\n const wrapperRef = useRef<HTMLElement | null>(null);\n\n return (\n <li\n ref={(el) => {\n wrapperRef.current = el;\n\n if (el === null) {\n return;\n }\n setNodeRef(el);\n }}\n className={classNames({\n className,\n indicator: isIndicator,\n 'ndl-tree-view-list-item': true,\n 'ndl-tree-view-list-item-disable-interaction': shouldDisableInteraction,\n 'ndl-tree-view-list-item-placeholder': isGhost,\n })}\n style={{\n ...style,\n paddingLeft: isIndicator ? `${depth * indentationWidth}px` : 0,\n }}\n role=\"treeitem\"\n onFocus={onFocus}\n aria-level={ariaLevel}\n aria-posinset={ariaPosInSet}\n aria-setsize={ariaSetSize}\n aria-selected={undefined}\n aria-checked={item.isSelected && !item.isSkeletonLoading}\n aria-expanded={item.canHaveSubItems ? !item.isCollapsed : undefined}\n onKeyDown={(event) =>\n onWrapperKeyDown(\n event,\n shouldDisableInteraction ?? false,\n wrapperRef,\n onCollapse,\n item,\n )\n }\n >\n <div\n role=\"presentation\"\n className=\"ndl-tree-view-list-item-content\"\n ref={ref}\n onKeyDown={(event) =>\n onInnerDivKeyDown(\n event,\n shouldDisableInteraction ?? false,\n wrapperRef,\n )\n }\n >\n {!shouldDisableSorting && (\n <button\n type=\"button\"\n className=\"ndl-tree-view-drag-handle\"\n ref={setActivatorNodeRef}\n aria-label=\"Pick up\"\n {...dragHandleProps}\n tabIndex={tabIndex}\n >\n <DragIcon />\n </button>\n )}\n {trails.map((trail, index) => {\n return <Trail key={index} variant={trail} />;\n })}\n\n {children}\n </div>\n </li>\n );\n}\n\nexport const TreeItemWrapper = TreeItemWrapperInner;\n"]}
@@ -51,7 +51,11 @@ const dropAnimationConfig = {
51
51
  },
52
52
  {
53
53
  opacity: 0,
54
- transform: transformToString(Object.assign(Object.assign({}, transform.final), { y: transform.final.y + 5, x: transform.final.x + 5 })),
54
+ transform: transformToString(Object.assign(Object.assign({}, transform.final), {
55
+ // oxlint-disable-next-line id-length
56
+ y: transform.final.y + 5,
57
+ // oxlint-disable-next-line id-length
58
+ x: transform.final.x + 5 })),
55
59
  },
56
60
  ];
57
61
  },
@@ -314,7 +318,7 @@ const TreeViewComponent = function TreeView(_a) {
314
318
  const rowIdWithFocus = focusedRowId !== null && focusedRowId !== void 0 ? focusedRowId : (_b = flattenedAndRemovedCollapsedItemsWithActive[0]) === null || _b === void 0 ? void 0 : _b.id;
315
319
  return (_jsx(DndContext, { accessibility: { announcements }, sensors: sensors, collisionDetection: closestCenter, onDragEnd: handleDragEnd, onDragStart: handleDragStart, onDragMove: handleDragMove, onDragOver: handleDragOver, onDragCancel: handleDragCancel, measuring: measuring, children: _jsxs(SortableContext, { items: flattenedAndRemovedCollapsedItemsWithActive.map((item) => item.id), strategy: verticalListSortingStrategy, children: [_jsx("ol", Object.assign({ className: "ndl-tree-view-list", role: "tree", "aria-multiselectable": hasSelectableItems ? true : undefined }, restProps, htmlAttributes, { children: flattenedAndRemovedCollapsedItemsWithActive.map((item) => {
316
320
  var _a, _b, _c;
317
- return (_jsx(SortableTreeViewItem, { depth: item.id === activeId && projected ? projected.depth : item.depth, indentationWidth: indentationWidth, item: item, isLast: false, parent: (_a = flattenItems.find((i) => i.id === item.parentId)) !== null && _a !== void 0 ? _a : null, id: item.id, trails: trails[item.id], keepGhostInPlace: item.id === ACTIVE_PLACEHOLDER_ID, TreeItemComponent: TreeItemComponent === undefined
321
+ return (_jsx(SortableTreeViewItem, { depth: item.id === activeId && projected ? projected.depth : item.depth, indentationWidth: indentationWidth, item: item, isLast: false, parent: (_a = flattenItems.find((flatItem) => flatItem.id === item.parentId)) !== null && _a !== void 0 ? _a : null, id: item.id, trails: trails[item.id], keepGhostInPlace: item.id === ACTIVE_PLACEHOLDER_ID, TreeItemComponent: TreeItemComponent === undefined
318
322
  ? TreeViewTextItem
319
323
  : TreeItemComponent, onCollapse: () => handleToggleCollapse(item.id), onItemsChanged: (newItems, itemChangedReason) => onItemsChanged(buildTree(newItems), itemChangedReason), items: flattenItems, ariaLevel: item.id === ACTIVE_PLACEHOLDER_ID ? undefined : item.depth + 1, ariaPosInSet: item.id === ACTIVE_PLACEHOLDER_ID
320
324
  ? undefined
@@ -1 +1 @@
1
- {"version":3,"file":"TreeView.js","sourceRoot":"","sources":["../../../src/tree-view/TreeView.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n *\n * Copyright (c) \"Neo4j\"\n * Neo4j Sweden AB [http://neo4j.com]\n *\n * This file is part of Neo4j.\n *\n * Neo4j is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\nimport {\n type Announcements,\n closestCenter,\n defaultDropAnimation,\n DndContext,\n type DragEndEvent,\n type DragMoveEvent,\n type DragOverEvent,\n DragOverlay,\n type DragStartEvent,\n type DropAnimation,\n KeyboardSensor,\n MeasuringStrategy,\n PointerSensor,\n type UniqueIdentifier,\n useSensor,\n useSensors,\n} from '@dnd-kit/core';\nimport {\n arrayMove,\n SortableContext,\n verticalListSortingStrategy,\n} from '@dnd-kit/sortable';\nimport type React from 'react';\nimport { useCallback, useMemo, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { type HtmlAttributes } from '../_common/types';\nimport { sortableTreeKeyboardCoordinates } from './tree-view-keyboard-coordinates';\nimport {\n type FlattenedTreeItem,\n type ItemChangedReason,\n type TreeItem,\n type TreeItemComponent,\n} from './tree-view-types';\nimport {\n buildTree,\n flattenTree,\n getProjection,\n removeChildrenOf,\n type SensorContext,\n transformToString,\n} from './tree-view-utils';\nimport { TreeItemWrapper } from './TreeItemWrapper';\nimport { SortableTreeViewItem } from './TreeViewItem';\nimport { TreeViewTextItem } from './TreeViewTextItem';\n\nconst indentationWidth = 20;\nconst ACTIVE_PLACEHOLDER_ID = 'ndl-active-tree-item';\n\nconst dropAnimationConfig: DropAnimation = {\n easing: 'ease-out',\n keyframes({ transform }) {\n return [\n {\n opacity: 1,\n transform: transformToString(transform.initial),\n },\n {\n opacity: 0,\n transform: transformToString({\n ...transform.final,\n y: transform.final.y + 5,\n x: transform.final.x + 5,\n }),\n },\n ];\n },\n sideEffects({ active }) {\n active.node.animate([{ opacity: 0 }, { opacity: 1 }], {\n duration: defaultDropAnimation.duration,\n easing: defaultDropAnimation.easing,\n });\n },\n};\n\nexport interface TreeViewProps<\n T extends Record<string, unknown>,\n E extends HTMLElement,\n> extends React.HTMLAttributes<HTMLOListElement> {\n /** The items to be displayed in the tree view */\n items: TreeItem<T>[];\n /** A function that is called when the items in the tree view change */\n onItemsChanged: (\n newItems: TreeItem<T>[],\n itemChangedReason: ItemChangedReason<T>,\n ) => void;\n /** The component to use for the tree items, if not provided the default component will be used */\n TreeItemComponent?: TreeItemComponent<T, E>;\n /** HTML attributes */\n htmlAttributes?: HtmlAttributes<'ol'>;\n}\n\nconst TreeViewComponent = function TreeView<\n T extends Record<string, unknown>,\n E extends HTMLElement,\n>({\n items,\n TreeItemComponent,\n onItemsChanged,\n htmlAttributes,\n ...restProps\n}: TreeViewProps<T, E>) {\n const flattenItems = useMemo(() => flattenTree(items), [items]);\n const [activeId, setActiveId] = useState<UniqueIdentifier | null>(null);\n const [overId, setOverId] = useState<UniqueIdentifier | null>(null);\n const [focusedRowId, setFocusedRowId] = useState<UniqueIdentifier | null>(\n null,\n );\n\n const [currentPosition, setCurrentPosition] = useState<{\n parentId: UniqueIdentifier | null;\n overId: UniqueIdentifier;\n } | null>(null);\n const [offsetLeft, setOffsetLeft] = useState(0);\n\n /* ------------------------------ Setup of Data ------------------------------ */\n\n const flattenedAndRemovedCollapsedItems = useMemo(() => {\n const collapsedItemsIds = flattenItems\n .filter((item) => item.canHaveSubItems && item.isCollapsed)\n .map((item) => item.id);\n\n return removeChildrenOf(\n [...flattenItems],\n activeId !== null ? [activeId, ...collapsedItemsIds] : collapsedItemsIds,\n );\n }, [activeId, flattenItems]);\n\n const activeItem = useMemo(\n () => (activeId ? flattenItems.find(({ id }) => id === activeId) : null),\n [activeId, flattenItems],\n );\n\n const flattenedAndRemovedCollapsedItemsWithActive = useMemo(() => {\n const collapsedItems = flattenItems.reduce<UniqueIdentifier[]>(\n (acc, item) => {\n if (item.canHaveSubItems && item.isCollapsed) {\n return [...acc, item.id];\n }\n return acc;\n },\n [],\n );\n\n const ItemsWithCollapsedRemoved = removeChildrenOf(\n flattenItems,\n activeId ? [activeId, ...collapsedItems] : collapsedItems,\n );\n const newArray: FlattenedTreeItem<T>[] = [];\n for (const item of ItemsWithCollapsedRemoved) {\n newArray.push(item);\n if (item.id === activeId) {\n newArray.push({\n ...item,\n id: ACTIVE_PLACEHOLDER_ID,\n });\n }\n }\n\n return newArray;\n }, [flattenItems, activeId]);\n\n if (activeItem?.canHaveSubItems && !activeItem?.isCollapsed) {\n flattenedAndRemovedCollapsedItems.push({\n ...activeItem,\n id: ACTIVE_PLACEHOLDER_ID,\n });\n }\n\n const sensorContext: SensorContext<T> = useRef({\n items: flattenedAndRemovedCollapsedItemsWithActive,\n offset: offsetLeft,\n });\n\n const coordinateGetter = useMemo(() => {\n sensorContext.current.items = flattenedAndRemovedCollapsedItemsWithActive;\n sensorContext.current.offset = offsetLeft;\n\n return sortableTreeKeyboardCoordinates<T>(\n sensorContext,\n true,\n indentationWidth,\n );\n }, [flattenedAndRemovedCollapsedItemsWithActive, offsetLeft]);\n\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: coordinateGetter,\n }),\n );\n\n const projected = useMemo(\n () =>\n activeId && overId\n ? getProjection(\n flattenedAndRemovedCollapsedItemsWithActive,\n activeId,\n overId,\n offsetLeft,\n indentationWidth,\n )\n : null,\n [activeId, overId, flattenedAndRemovedCollapsedItemsWithActive, offsetLeft],\n );\n\n const hasSelectableItems = useMemo(\n () => flattenItems.some((item) => item.isSelected !== undefined),\n [flattenItems],\n );\n\n const itemAriaData = useMemo(() => {\n const visibleItems = flattenedAndRemovedCollapsedItemsWithActive.filter(\n (item) => item.id !== ACTIVE_PLACEHOLDER_ID,\n );\n\n return visibleItems.reduce<\n Record<UniqueIdentifier, { posInSet: number; setSize: number }>\n >((acc, item) => {\n const siblings = visibleItems.filter(\n (sibling) => sibling.parentId === item.parentId,\n );\n\n acc[item.id] = {\n posInSet: siblings.findIndex((sibling) => sibling.id === item.id) + 1,\n setSize: siblings.length,\n };\n\n return acc;\n }, {});\n }, [flattenedAndRemovedCollapsedItemsWithActive]);\n\n /* ------------------------------ Handlers ------------------------------ */\n function handleDragStart({ active }: DragStartEvent) {\n const activeId = active.id;\n setActiveId(activeId);\n setOverId(activeId);\n\n const activeItem = flattenItems.find(({ id }) => id === activeId);\n if (activeItem) {\n setCurrentPosition({\n overId: activeId,\n parentId: activeItem.parentId,\n });\n }\n\n document.body.style.setProperty('cursor', 'grabbing');\n }\n\n function handleDragMove({ delta }: DragMoveEvent) {\n setOffsetLeft(delta.x);\n }\n\n function handleDragOver({ over }: DragOverEvent) {\n setOverId(over?.id ?? null);\n }\n\n function resetState() {\n setOverId(null);\n setActiveId(null);\n setOffsetLeft(0);\n setCurrentPosition(null);\n\n document.body.style.setProperty('cursor', '');\n }\n\n const handleDragEnd = useCallback(\n (event: DragEndEvent) => {\n const { active, over } = event;\n resetState();\n let overIndex = flattenItems.findIndex((item) => item.id === over?.id);\n\n if (over?.id === ACTIVE_PLACEHOLDER_ID) {\n overIndex = flattenItems.findIndex((item) => item.id === active.id);\n }\n if (projected && over) {\n const { depth, parentId } = projected;\n const clonedItems: FlattenedTreeItem<T>[] = [...flattenItems];\n\n const parentIndex = clonedItems.findIndex(\n (item) => item.id === parentId,\n );\n const activeIndex = clonedItems.findIndex(({ id }) => id === active.id);\n const activeTreeItem = clonedItems[activeIndex];\n\n clonedItems[activeIndex] = { ...activeTreeItem, depth, parentId };\n const parentItem = clonedItems[parentIndex];\n if (parentItem && parentItem.canHaveSubItems) {\n clonedItems[parentIndex] = { ...parentItem, isCollapsed: false };\n }\n const newItems = buildTree(\n arrayMove(clonedItems, activeIndex, overIndex),\n );\n\n onItemsChanged(newItems, {\n item: activeTreeItem,\n reason: 'dropped',\n });\n }\n },\n [flattenItems, onItemsChanged, projected],\n );\n\n function handleToggleCollapse(id: UniqueIdentifier) {\n const item = flattenItems.find((item) => item.id === id);\n if (!item || item.canHaveSubItems !== true) {\n return;\n }\n\n onItemsChanged(\n buildTree(\n flattenItems.map((item) => {\n if (item.id === id && item.canHaveSubItems === true) {\n return { ...item, isCollapsed: !item.isCollapsed };\n }\n return item;\n }),\n ),\n {\n item,\n reason: item.isCollapsed ? 'expanded' : 'collapsed',\n },\n );\n }\n\n function handleDragCancel() {\n resetState();\n }\n\n /* ------------------------------ Keyboard functions ------------------------------ */\n const getMovementAnnouncement = (\n eventName: string,\n activeId: UniqueIdentifier,\n overId?: UniqueIdentifier,\n ) => {\n if (overId && projected) {\n if (eventName !== 'onDragEnd') {\n if (\n currentPosition &&\n projected.parentId === currentPosition.parentId &&\n overId === currentPosition.overId\n ) {\n return;\n } else {\n setCurrentPosition({\n overId,\n parentId: projected.parentId,\n });\n }\n }\n\n const clonedItems: FlattenedTreeItem<T>[] = [\n ...flattenedAndRemovedCollapsedItemsWithActive,\n ];\n const overIndex = clonedItems.findIndex(({ id }) => id === overId);\n const activeIndex = clonedItems.findIndex(({ id }) => id === activeId);\n const sortedItems = arrayMove(clonedItems, activeIndex, overIndex);\n\n const previousItem = sortedItems[overIndex - 1];\n\n let announcement;\n const movedVerb = eventName === 'onDragEnd' ? 'dropped' : 'moved';\n const nestedVerb = eventName === 'onDragEnd' ? 'dropped' : 'nested';\n\n if (!previousItem) {\n const nextItem = sortedItems[overIndex + 1];\n announcement = `${activeId} was ${movedVerb} before ${nextItem.id}.`;\n } else {\n if (projected.depth > previousItem.depth) {\n announcement = `${activeId} was ${nestedVerb} under ${previousItem.id}.`;\n } else {\n let previousSibling: FlattenedTreeItem<T> | undefined = previousItem;\n while (previousSibling && projected.depth < previousSibling.depth) {\n const parentId: UniqueIdentifier | null = previousSibling.parentId;\n previousSibling = sortedItems.find(({ id }) => id === parentId);\n }\n\n if (previousSibling) {\n announcement = `${activeId} was ${movedVerb} after ${previousSibling.id}.`;\n }\n }\n }\n\n return announcement;\n }\n\n return;\n };\n\n const announcements: Announcements = {\n onDragCancel({ active }) {\n return `Moving was cancelled. ${active.id} was dropped in its original position.`;\n },\n onDragEnd({ active, over }) {\n return getMovementAnnouncement('onDragEnd', active.id, over?.id);\n },\n onDragMove({ active, over }) {\n return getMovementAnnouncement('onDragMove', active.id, over?.id);\n },\n onDragOver({ active, over }) {\n return getMovementAnnouncement('onDragOver', active.id, over?.id);\n },\n onDragStart({ active }) {\n return `Picked up ${active.id}.`;\n },\n };\n /* ------------------------------ Visual ------------------------------ */\n function getTrailList() {\n const trails: Record<\n UniqueIdentifier,\n ('none' | 'straight' | 'straight-curved' | 'curved')[]\n > = {};\n // Loop through the items in reverse\n [...flattenedAndRemovedCollapsedItemsWithActive]\n .reverse()\n .forEach((item, itemIndex, reversedList) => {\n const trailList: (\n | 'none'\n | 'straight'\n | 'straight-curved'\n | 'curved'\n )[] = [];\n const nextItem = reversedList[itemIndex - 1];\n // Loop through the depth of the item\n\n for (let trailDepth = 0; trailDepth < item.depth; trailDepth++) {\n // Not closest to the item so should be straight or none\n if (trailDepth < item.depth - 1) {\n if (nextItem === undefined) {\n trailList.push('none');\n continue;\n } else if (trails[nextItem?.id][trailDepth] === 'none') {\n trailList.push('none');\n continue;\n } else if (nextItem && nextItem.depth <= trailDepth) {\n trailList.push('none');\n continue;\n }\n trailList.push('straight');\n } else {\n if (\n (nextItem && trails[nextItem?.id][trailDepth] === 'none') ||\n nextItem === undefined ||\n nextItem.depth <= trailDepth\n ) {\n trailList.push('curved');\n } else {\n trailList.push('straight-curved');\n }\n }\n }\n trails[item.id] = trailList;\n });\n return trails;\n }\n\n const measuring = {\n droppable: {\n strategy: MeasuringStrategy.Always,\n },\n };\n\n const trails = getTrailList();\n const rowIdWithFocus =\n focusedRowId ?? flattenedAndRemovedCollapsedItemsWithActive[0]?.id;\n return (\n <DndContext\n accessibility={{ announcements }}\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n onDragStart={handleDragStart}\n onDragMove={handleDragMove}\n onDragOver={handleDragOver}\n onDragCancel={handleDragCancel}\n measuring={measuring}\n >\n <SortableContext\n items={flattenedAndRemovedCollapsedItemsWithActive.map(\n (item) => item.id,\n )}\n strategy={verticalListSortingStrategy}\n >\n <ol\n className=\"ndl-tree-view-list\"\n role=\"tree\"\n aria-multiselectable={hasSelectableItems ? true : undefined}\n {...restProps}\n {...htmlAttributes}\n >\n {flattenedAndRemovedCollapsedItemsWithActive.map((item) => (\n <SortableTreeViewItem<T, E>\n key={item.id}\n depth={\n item.id === activeId && projected ? projected.depth : item.depth\n }\n indentationWidth={indentationWidth}\n item={item}\n isLast={false}\n parent={flattenItems.find((i) => i.id === item.parentId) ?? null}\n id={item.id}\n trails={trails[item.id]}\n keepGhostInPlace={item.id === ACTIVE_PLACEHOLDER_ID}\n TreeItemComponent={\n TreeItemComponent === undefined\n ? (TreeViewTextItem as TreeItemComponent<T, E>)\n : TreeItemComponent\n }\n onCollapse={() => handleToggleCollapse(item.id)}\n onItemsChanged={(newItems, itemChangedReason) =>\n onItemsChanged(buildTree(newItems), itemChangedReason)\n }\n items={flattenItems}\n ariaLevel={\n item.id === ACTIVE_PLACEHOLDER_ID ? undefined : item.depth + 1\n }\n ariaPosInSet={\n item.id === ACTIVE_PLACEHOLDER_ID\n ? undefined\n : itemAriaData[item.id]?.posInSet\n }\n ariaSetSize={\n item.id === ACTIVE_PLACEHOLDER_ID\n ? undefined\n : itemAriaData[item.id]?.setSize\n }\n tabIndex={item.id === rowIdWithFocus ? 0 : -1}\n onFocus={() => setFocusedRowId(item.id)}\n shouldDisableSorting={item.isSortable === false}\n />\n ))}\n </ol>\n {/* Portal is used to show the item the user drags */}\n {createPortal(\n <DragOverlay dropAnimation={dropAnimationConfig}></DragOverlay>,\n document.body,\n )}\n </SortableContext>\n </DndContext>\n );\n};\n\nconst TreeViewComponents = {\n SortableTreeViewItem,\n TreeItemWrapper,\n TreeViewTextItem,\n};\n\nexport const TreeView = Object.assign(TreeViewComponent, TreeViewComponents);\n"]}
1
+ {"version":3,"file":"TreeView.js","sourceRoot":"","sources":["../../../src/tree-view/TreeView.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n *\n * Copyright (c) \"Neo4j\"\n * Neo4j Sweden AB [http://neo4j.com]\n *\n * This file is part of Neo4j.\n *\n * Neo4j is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\nimport {\n type Announcements,\n closestCenter,\n defaultDropAnimation,\n DndContext,\n type DragEndEvent,\n type DragMoveEvent,\n type DragOverEvent,\n DragOverlay,\n type DragStartEvent,\n type DropAnimation,\n KeyboardSensor,\n MeasuringStrategy,\n PointerSensor,\n type UniqueIdentifier,\n useSensor,\n useSensors,\n} from '@dnd-kit/core';\nimport {\n arrayMove,\n SortableContext,\n verticalListSortingStrategy,\n} from '@dnd-kit/sortable';\nimport type React from 'react';\nimport { useCallback, useMemo, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { type HtmlAttributes } from '../_common/types';\nimport { sortableTreeKeyboardCoordinates } from './tree-view-keyboard-coordinates';\nimport {\n type FlattenedTreeItem,\n type ItemChangedReason,\n type TreeItem,\n type TreeItemComponent,\n} from './tree-view-types';\nimport {\n buildTree,\n flattenTree,\n getProjection,\n removeChildrenOf,\n type SensorContext,\n transformToString,\n} from './tree-view-utils';\nimport { TreeItemWrapper } from './TreeItemWrapper';\nimport { SortableTreeViewItem } from './TreeViewItem';\nimport { TreeViewTextItem } from './TreeViewTextItem';\n\nconst indentationWidth = 20;\nconst ACTIVE_PLACEHOLDER_ID = 'ndl-active-tree-item';\n\nconst dropAnimationConfig: DropAnimation = {\n easing: 'ease-out',\n keyframes({ transform }) {\n return [\n {\n opacity: 1,\n transform: transformToString(transform.initial),\n },\n {\n opacity: 0,\n transform: transformToString({\n ...transform.final,\n // oxlint-disable-next-line id-length\n y: transform.final.y + 5,\n // oxlint-disable-next-line id-length\n x: transform.final.x + 5,\n }),\n },\n ];\n },\n sideEffects({ active }) {\n active.node.animate([{ opacity: 0 }, { opacity: 1 }], {\n duration: defaultDropAnimation.duration,\n easing: defaultDropAnimation.easing,\n });\n },\n};\n\nexport interface TreeViewProps<\n T extends Record<string, unknown>,\n E extends HTMLElement,\n> extends React.HTMLAttributes<HTMLOListElement> {\n /** The items to be displayed in the tree view */\n items: TreeItem<T>[];\n /** A function that is called when the items in the tree view change */\n onItemsChanged: (\n newItems: TreeItem<T>[],\n itemChangedReason: ItemChangedReason<T>,\n ) => void;\n /** The component to use for the tree items, if not provided the default component will be used */\n TreeItemComponent?: TreeItemComponent<T, E>;\n /** HTML attributes */\n htmlAttributes?: HtmlAttributes<'ol'>;\n}\n\nconst TreeViewComponent = function TreeView<\n T extends Record<string, unknown>,\n E extends HTMLElement,\n>({\n items,\n TreeItemComponent,\n onItemsChanged,\n htmlAttributes,\n ...restProps\n}: TreeViewProps<T, E>) {\n const flattenItems = useMemo(() => flattenTree(items), [items]);\n const [activeId, setActiveId] = useState<UniqueIdentifier | null>(null);\n const [overId, setOverId] = useState<UniqueIdentifier | null>(null);\n const [focusedRowId, setFocusedRowId] = useState<UniqueIdentifier | null>(\n null,\n );\n\n const [currentPosition, setCurrentPosition] = useState<{\n parentId: UniqueIdentifier | null;\n overId: UniqueIdentifier;\n } | null>(null);\n const [offsetLeft, setOffsetLeft] = useState(0);\n\n /* ------------------------------ Setup of Data ------------------------------ */\n\n const flattenedAndRemovedCollapsedItems = useMemo(() => {\n const collapsedItemsIds = flattenItems\n .filter((item) => item.canHaveSubItems && item.isCollapsed)\n .map((item) => item.id);\n\n return removeChildrenOf(\n [...flattenItems],\n activeId !== null ? [activeId, ...collapsedItemsIds] : collapsedItemsIds,\n );\n }, [activeId, flattenItems]);\n\n const activeItem = useMemo(\n () => (activeId ? flattenItems.find(({ id }) => id === activeId) : null),\n [activeId, flattenItems],\n );\n\n const flattenedAndRemovedCollapsedItemsWithActive = useMemo(() => {\n const collapsedItems = flattenItems.reduce<UniqueIdentifier[]>(\n (acc, item) => {\n if (item.canHaveSubItems && item.isCollapsed) {\n return [...acc, item.id];\n }\n return acc;\n },\n [],\n );\n\n const ItemsWithCollapsedRemoved = removeChildrenOf(\n flattenItems,\n activeId ? [activeId, ...collapsedItems] : collapsedItems,\n );\n const newArray: FlattenedTreeItem<T>[] = [];\n for (const item of ItemsWithCollapsedRemoved) {\n newArray.push(item);\n if (item.id === activeId) {\n newArray.push({\n ...item,\n id: ACTIVE_PLACEHOLDER_ID,\n });\n }\n }\n\n return newArray;\n }, [flattenItems, activeId]);\n\n if (activeItem?.canHaveSubItems && !activeItem?.isCollapsed) {\n flattenedAndRemovedCollapsedItems.push({\n ...activeItem,\n id: ACTIVE_PLACEHOLDER_ID,\n });\n }\n\n const sensorContext: SensorContext<T> = useRef({\n items: flattenedAndRemovedCollapsedItemsWithActive,\n offset: offsetLeft,\n });\n\n const coordinateGetter = useMemo(() => {\n sensorContext.current.items = flattenedAndRemovedCollapsedItemsWithActive;\n sensorContext.current.offset = offsetLeft;\n\n return sortableTreeKeyboardCoordinates<T>(\n sensorContext,\n true,\n indentationWidth,\n );\n }, [flattenedAndRemovedCollapsedItemsWithActive, offsetLeft]);\n\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: coordinateGetter,\n }),\n );\n\n const projected = useMemo(\n () =>\n activeId && overId\n ? getProjection(\n flattenedAndRemovedCollapsedItemsWithActive,\n activeId,\n overId,\n offsetLeft,\n indentationWidth,\n )\n : null,\n [activeId, overId, flattenedAndRemovedCollapsedItemsWithActive, offsetLeft],\n );\n\n const hasSelectableItems = useMemo(\n () => flattenItems.some((item) => item.isSelected !== undefined),\n [flattenItems],\n );\n\n const itemAriaData = useMemo(() => {\n const visibleItems = flattenedAndRemovedCollapsedItemsWithActive.filter(\n (item) => item.id !== ACTIVE_PLACEHOLDER_ID,\n );\n\n return visibleItems.reduce<\n Record<UniqueIdentifier, { posInSet: number; setSize: number }>\n >((acc, item) => {\n const siblings = visibleItems.filter(\n (sibling) => sibling.parentId === item.parentId,\n );\n\n acc[item.id] = {\n posInSet: siblings.findIndex((sibling) => sibling.id === item.id) + 1,\n setSize: siblings.length,\n };\n\n return acc;\n }, {});\n }, [flattenedAndRemovedCollapsedItemsWithActive]);\n\n /* ------------------------------ Handlers ------------------------------ */\n function handleDragStart({ active }: DragStartEvent) {\n const activeId = active.id;\n setActiveId(activeId);\n setOverId(activeId);\n\n const activeItem = flattenItems.find(({ id }) => id === activeId);\n if (activeItem) {\n setCurrentPosition({\n overId: activeId,\n parentId: activeItem.parentId,\n });\n }\n\n document.body.style.setProperty('cursor', 'grabbing');\n }\n\n function handleDragMove({ delta }: DragMoveEvent) {\n setOffsetLeft(delta.x);\n }\n\n function handleDragOver({ over }: DragOverEvent) {\n setOverId(over?.id ?? null);\n }\n\n function resetState() {\n setOverId(null);\n setActiveId(null);\n setOffsetLeft(0);\n setCurrentPosition(null);\n\n document.body.style.setProperty('cursor', '');\n }\n\n const handleDragEnd = useCallback(\n (event: DragEndEvent) => {\n const { active, over } = event;\n resetState();\n let overIndex = flattenItems.findIndex((item) => item.id === over?.id);\n\n if (over?.id === ACTIVE_PLACEHOLDER_ID) {\n overIndex = flattenItems.findIndex((item) => item.id === active.id);\n }\n if (projected && over) {\n const { depth, parentId } = projected;\n const clonedItems: FlattenedTreeItem<T>[] = [...flattenItems];\n\n const parentIndex = clonedItems.findIndex(\n (item) => item.id === parentId,\n );\n const activeIndex = clonedItems.findIndex(({ id }) => id === active.id);\n const activeTreeItem = clonedItems[activeIndex];\n\n clonedItems[activeIndex] = { ...activeTreeItem, depth, parentId };\n const parentItem = clonedItems[parentIndex];\n if (parentItem && parentItem.canHaveSubItems) {\n clonedItems[parentIndex] = { ...parentItem, isCollapsed: false };\n }\n const newItems = buildTree(\n arrayMove(clonedItems, activeIndex, overIndex),\n );\n\n onItemsChanged(newItems, {\n item: activeTreeItem,\n reason: 'dropped',\n });\n }\n },\n [flattenItems, onItemsChanged, projected],\n );\n\n function handleToggleCollapse(id: UniqueIdentifier) {\n const item = flattenItems.find((item) => item.id === id);\n if (!item || item.canHaveSubItems !== true) {\n return;\n }\n\n onItemsChanged(\n buildTree(\n flattenItems.map((item) => {\n if (item.id === id && item.canHaveSubItems === true) {\n return { ...item, isCollapsed: !item.isCollapsed };\n }\n return item;\n }),\n ),\n {\n item,\n reason: item.isCollapsed ? 'expanded' : 'collapsed',\n },\n );\n }\n\n function handleDragCancel() {\n resetState();\n }\n\n /* ------------------------------ Keyboard functions ------------------------------ */\n const getMovementAnnouncement = (\n eventName: string,\n activeId: UniqueIdentifier,\n overId?: UniqueIdentifier,\n ) => {\n if (overId && projected) {\n if (eventName !== 'onDragEnd') {\n if (\n currentPosition &&\n projected.parentId === currentPosition.parentId &&\n overId === currentPosition.overId\n ) {\n return;\n } else {\n setCurrentPosition({\n overId,\n parentId: projected.parentId,\n });\n }\n }\n\n const clonedItems: FlattenedTreeItem<T>[] = [\n ...flattenedAndRemovedCollapsedItemsWithActive,\n ];\n const overIndex = clonedItems.findIndex(({ id }) => id === overId);\n const activeIndex = clonedItems.findIndex(({ id }) => id === activeId);\n const sortedItems = arrayMove(clonedItems, activeIndex, overIndex);\n\n const previousItem = sortedItems[overIndex - 1];\n\n let announcement;\n const movedVerb = eventName === 'onDragEnd' ? 'dropped' : 'moved';\n const nestedVerb = eventName === 'onDragEnd' ? 'dropped' : 'nested';\n\n if (!previousItem) {\n const nextItem = sortedItems[overIndex + 1];\n announcement = `${activeId} was ${movedVerb} before ${nextItem.id}.`;\n } else {\n if (projected.depth > previousItem.depth) {\n announcement = `${activeId} was ${nestedVerb} under ${previousItem.id}.`;\n } else {\n let previousSibling: FlattenedTreeItem<T> | undefined = previousItem;\n while (previousSibling && projected.depth < previousSibling.depth) {\n const parentId: UniqueIdentifier | null = previousSibling.parentId;\n previousSibling = sortedItems.find(({ id }) => id === parentId);\n }\n\n if (previousSibling) {\n announcement = `${activeId} was ${movedVerb} after ${previousSibling.id}.`;\n }\n }\n }\n\n return announcement;\n }\n\n return;\n };\n\n const announcements: Announcements = {\n onDragCancel({ active }) {\n return `Moving was cancelled. ${active.id} was dropped in its original position.`;\n },\n onDragEnd({ active, over }) {\n return getMovementAnnouncement('onDragEnd', active.id, over?.id);\n },\n onDragMove({ active, over }) {\n return getMovementAnnouncement('onDragMove', active.id, over?.id);\n },\n onDragOver({ active, over }) {\n return getMovementAnnouncement('onDragOver', active.id, over?.id);\n },\n onDragStart({ active }) {\n return `Picked up ${active.id}.`;\n },\n };\n /* ------------------------------ Visual ------------------------------ */\n function getTrailList() {\n const trails: Record<\n UniqueIdentifier,\n ('none' | 'straight' | 'straight-curved' | 'curved')[]\n > = {};\n // Loop through the items in reverse\n [...flattenedAndRemovedCollapsedItemsWithActive]\n .reverse()\n .forEach((item, itemIndex, reversedList) => {\n const trailList: (\n | 'none'\n | 'straight'\n | 'straight-curved'\n | 'curved'\n )[] = [];\n const nextItem = reversedList[itemIndex - 1];\n // Loop through the depth of the item\n\n for (let trailDepth = 0; trailDepth < item.depth; trailDepth++) {\n // Not closest to the item so should be straight or none\n if (trailDepth < item.depth - 1) {\n if (nextItem === undefined) {\n trailList.push('none');\n continue;\n } else if (trails[nextItem?.id][trailDepth] === 'none') {\n trailList.push('none');\n continue;\n } else if (nextItem && nextItem.depth <= trailDepth) {\n trailList.push('none');\n continue;\n }\n trailList.push('straight');\n } else {\n if (\n (nextItem && trails[nextItem?.id][trailDepth] === 'none') ||\n nextItem === undefined ||\n nextItem.depth <= trailDepth\n ) {\n trailList.push('curved');\n } else {\n trailList.push('straight-curved');\n }\n }\n }\n trails[item.id] = trailList;\n });\n return trails;\n }\n\n const measuring = {\n droppable: {\n strategy: MeasuringStrategy.Always,\n },\n };\n\n const trails = getTrailList();\n const rowIdWithFocus =\n focusedRowId ?? flattenedAndRemovedCollapsedItemsWithActive[0]?.id;\n return (\n <DndContext\n accessibility={{ announcements }}\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n onDragStart={handleDragStart}\n onDragMove={handleDragMove}\n onDragOver={handleDragOver}\n onDragCancel={handleDragCancel}\n measuring={measuring}\n >\n <SortableContext\n items={flattenedAndRemovedCollapsedItemsWithActive.map(\n (item) => item.id,\n )}\n strategy={verticalListSortingStrategy}\n >\n <ol\n className=\"ndl-tree-view-list\"\n role=\"tree\"\n aria-multiselectable={hasSelectableItems ? true : undefined}\n {...restProps}\n {...htmlAttributes}\n >\n {flattenedAndRemovedCollapsedItemsWithActive.map((item) => (\n <SortableTreeViewItem<T, E>\n key={item.id}\n depth={\n item.id === activeId && projected ? projected.depth : item.depth\n }\n indentationWidth={indentationWidth}\n item={item}\n isLast={false}\n parent={\n flattenItems.find(\n (flatItem) => flatItem.id === item.parentId,\n ) ?? null\n }\n id={item.id}\n trails={trails[item.id]}\n keepGhostInPlace={item.id === ACTIVE_PLACEHOLDER_ID}\n TreeItemComponent={\n TreeItemComponent === undefined\n ? (TreeViewTextItem as TreeItemComponent<T, E>)\n : TreeItemComponent\n }\n onCollapse={() => handleToggleCollapse(item.id)}\n onItemsChanged={(newItems, itemChangedReason) =>\n onItemsChanged(buildTree(newItems), itemChangedReason)\n }\n items={flattenItems}\n ariaLevel={\n item.id === ACTIVE_PLACEHOLDER_ID ? undefined : item.depth + 1\n }\n ariaPosInSet={\n item.id === ACTIVE_PLACEHOLDER_ID\n ? undefined\n : itemAriaData[item.id]?.posInSet\n }\n ariaSetSize={\n item.id === ACTIVE_PLACEHOLDER_ID\n ? undefined\n : itemAriaData[item.id]?.setSize\n }\n tabIndex={item.id === rowIdWithFocus ? 0 : -1}\n onFocus={() => setFocusedRowId(item.id)}\n shouldDisableSorting={item.isSortable === false}\n />\n ))}\n </ol>\n {/* Portal is used to show the item the user drags */}\n {createPortal(\n <DragOverlay dropAnimation={dropAnimationConfig}></DragOverlay>,\n document.body,\n )}\n </SortableContext>\n </DndContext>\n );\n};\n\nconst TreeViewComponents = {\n SortableTreeViewItem,\n TreeItemWrapper,\n TreeViewTextItem,\n};\n\nexport const TreeView = Object.assign(TreeViewComponent, TreeViewComponents);\n"]}
@@ -41,12 +41,12 @@ import { Typography } from '../typography';
41
41
  import { TreeItemWrapper } from './TreeItemWrapper';
42
42
  /**
43
43
  * checks if any parent is checked
44
- * @param item
45
- * @param items
44
+ * @param item - Tree item
45
+ * @param items - Flattened tree items
46
46
  * @returns
47
47
  */
48
48
  const parentIsCheckedRecursively = (item, items) => {
49
- const parent = items.find((i) => i.id === item.parentId);
49
+ const parent = items.find((parentItem) => parentItem.id === item.parentId);
50
50
  if (parent) {
51
51
  if (parent.isSelected) {
52
52
  return true;
@@ -57,16 +57,16 @@ const parentIsCheckedRecursively = (item, items) => {
57
57
  };
58
58
  /**
59
59
  * checks if any children are checked
60
- * @param item
61
- * @param items
60
+ * @param item - Tree item
61
+ * @param items - Flattened tree items
62
62
  * @returns
63
63
  */
64
64
  const childrenCheckedRecursively = (item, items) => {
65
- const children = items.filter((i) => i.parentId === item.id);
65
+ const children = items.filter((childItem) => childItem.parentId === item.id);
66
66
  if (children.length === 0) {
67
67
  return false;
68
68
  }
69
- return children.some((i) => i.isSelected || childrenCheckedRecursively(i, items));
69
+ return children.some((childItem) => childItem.isSelected || childrenCheckedRecursively(childItem, items));
70
70
  };
71
71
  export const TreeViewTextItem = (_a) => {
72
72
  var { depth, shouldDisableInteraction, shouldDisableSorting, isGhost, indentationWidth, isIndicator, isCollapsed, onCollapse, item, parent, isOver, isOverParent, setNodeRef, setActivatorNodeRef, dragHandleProps, style, trails, onItemsChanged, items, tabIndex, ref } = _a, restProps = __rest(_a, ["depth", "shouldDisableInteraction", "shouldDisableSorting", "isGhost", "indentationWidth", "isIndicator", "isCollapsed", "onCollapse", "item", "parent", "isOver", "isOverParent", "setNodeRef", "setActivatorNodeRef", "dragHandleProps", "style", "trails", "onItemsChanged", "items", "tabIndex", "ref"]);
@@ -87,11 +87,11 @@ export const TreeViewTextItem = (_a) => {
87
87
  tabIndex: tabIndex, children: [item.isCollapsed && _jsx(ChevronRightIconOutline, { className: "ndl-icon" }), !item.isCollapsed && _jsx(ChevronDownIconOutline, { className: "ndl-icon" })] })), item.isSelected !== undefined && (_jsx(Skeleton, Object.assign({ onBackground: "weak", shape: "rectangular" }, item.skeletonProps, { isLoading: item.isSkeletonLoading, children: _jsx(Checkbox, { isIndeterminate: isIndeterminate, isChecked: item.isSelected, ariaLabel: item.data.text, htmlAttributes: {
88
88
  tabIndex,
89
89
  }, onChange: (event) => {
90
- const newItems = items.map((i) => {
91
- if (i.id === item.id) {
92
- return Object.assign(Object.assign({}, i), { isSelected: event.target.checked });
90
+ const newItems = items.map((treeItem) => {
91
+ if (treeItem.id === item.id) {
92
+ return Object.assign(Object.assign({}, treeItem), { isSelected: event.target.checked });
93
93
  }
94
- return i;
94
+ return treeItem;
95
95
  });
96
96
  // Uncheck parents if a child is unchecked
97
97
  if (!event.target.checked) {
@@ -114,11 +114,11 @@ export const TreeViewTextItem = (_a) => {
114
114
  // Check children if a parent is checked
115
115
  if (item.canHaveSubItems) {
116
116
  const childIdsToUncheck = items
117
- .filter((i) => i.parentId === item.id)
118
- .map((i) => i.id);
117
+ .filter((childItem) => childItem.parentId === item.id)
118
+ .map((childItem) => childItem.id);
119
119
  while (childIdsToUncheck.length > 0) {
120
120
  const childId = childIdsToUncheck.pop();
121
- const child = items.find((i) => i.id === childId);
121
+ const child = items.find((childItem) => childItem.id === childId);
122
122
  if (child) {
123
123
  newItems.forEach((newItem) => {
124
124
  if (newItem.id === child.id) {
@@ -126,9 +126,9 @@ export const TreeViewTextItem = (_a) => {
126
126
  }
127
127
  });
128
128
  newItems
129
- .filter((i) => i.parentId === child.id)
130
- .forEach((i) => {
131
- childIdsToUncheck.push(i.id);
129
+ .filter((childItem) => childItem.parentId === child.id)
130
+ .forEach((childItem) => {
131
+ childIdsToUncheck.push(childItem.id);
132
132
  });
133
133
  }
134
134
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TreeViewTextItem.js","sourceRoot":"","sources":["../../../src/tree-view/TreeViewTextItem.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n *\n * Copyright (c) \"Neo4j\"\n * Neo4j Sweden AB [http://neo4j.com]\n *\n * This file is part of Neo4j.\n *\n * Neo4j is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\nimport type React from 'react';\n\nimport { Checkbox } from '../checkbox';\nimport { CleanIconButton } from '../clean-icon-button';\nimport { ConditionalWrap } from '../conditional-wrap';\nimport { ChevronDownIconOutline } from '../icons/generated/heroIcons/ChevronDownIconOutline';\nimport { ChevronRightIconOutline } from '../icons/generated/heroIcons/ChevronRightIconOutline';\nimport { Skeleton } from '../skeleton';\nimport { Typography } from '../typography';\nimport {\n type FlattenedTreeItem,\n type TextItemData,\n type TreeItemComponentProps,\n} from './tree-view-types';\nimport { TreeItemWrapper } from './TreeItemWrapper';\n\n/**\n * checks if any parent is checked\n * @param item\n * @param items\n * @returns\n */\nconst parentIsCheckedRecursively = (\n item: FlattenedTreeItem<TextItemData>,\n items: FlattenedTreeItem<TextItemData>[],\n): boolean => {\n const parent = items.find((i) => i.id === item.parentId);\n if (parent) {\n if (parent.isSelected) {\n return true;\n }\n return parentIsCheckedRecursively(parent, items);\n }\n return false;\n};\n\n/**\n * checks if any children are checked\n * @param item\n * @param items\n * @returns\n */\nconst childrenCheckedRecursively = (\n item: FlattenedTreeItem<TextItemData>,\n items: FlattenedTreeItem<TextItemData>[],\n): boolean => {\n const children = items.filter((i) => i.parentId === item.id);\n if (children.length === 0) {\n return false;\n }\n return children.some(\n (i) => i.isSelected || childrenCheckedRecursively(i, items),\n );\n};\n\nexport const TreeViewTextItem = <T extends TextItemData>({\n depth,\n shouldDisableInteraction,\n shouldDisableSorting,\n isGhost,\n indentationWidth,\n isIndicator,\n isCollapsed,\n onCollapse,\n item,\n parent,\n isOver,\n isOverParent,\n setNodeRef,\n setActivatorNodeRef,\n dragHandleProps,\n style,\n trails,\n onItemsChanged,\n items,\n tabIndex,\n ref,\n ...restProps\n}: TreeItemComponentProps<T> & { ref?: React.Ref<HTMLElement> }) => {\n const isAnyParentChecked = parentIsCheckedRecursively(item, items);\n const isAnyChildChecked = childrenCheckedRecursively(item, items);\n\n const isIndeterminate =\n isAnyChildChecked === true &&\n isAnyParentChecked === false &&\n item.isSelected === false\n ? true\n : false;\n\n return (\n <TreeItemWrapper\n depth={depth}\n shouldDisableInteraction={shouldDisableInteraction}\n shouldDisableSorting={shouldDisableSorting}\n isGhost={isGhost}\n indentationWidth={indentationWidth}\n isIndicator={isIndicator}\n isCollapsed={isCollapsed}\n onCollapse={onCollapse}\n item={item}\n parent={parent}\n isOver={isOver}\n isOverParent={isOverParent}\n setNodeRef={setNodeRef}\n setActivatorNodeRef={setActivatorNodeRef}\n dragHandleProps={dragHandleProps}\n style={style}\n trails={trails}\n // oxlint-disable-next-line @typescript-eslint/no-empty-function\n onItemsChanged={() => {}}\n ref={ref}\n items={items}\n tabIndex={tabIndex}\n {...restProps}\n >\n {item.canHaveSubItems && onCollapse && (\n <button\n type=\"button\"\n className=\"ndl-tree-view-collapse-button\"\n onClick={() => onCollapse()}\n aria-label={item.isCollapsed ? 'Expand' : 'Collapse'}\n aria-expanded={item.isCollapsed ? 'false' : 'true'}\n /**\n * Tab index is set to -1 to prevent the item from being focused when the tree is navigated with tab\n * since we use the arrow keys instead\n */\n tabIndex={tabIndex}\n >\n {item.isCollapsed && <ChevronRightIconOutline className=\"ndl-icon\" />}\n {!item.isCollapsed && <ChevronDownIconOutline className=\"ndl-icon\" />}\n </button>\n )}\n {item.isSelected !== undefined && (\n <Skeleton\n onBackground=\"weak\"\n shape=\"rectangular\"\n {...item.skeletonProps}\n isLoading={item.isSkeletonLoading}\n >\n <Checkbox\n isIndeterminate={isIndeterminate}\n isChecked={item.isSelected}\n ariaLabel={item.data.text}\n htmlAttributes={{\n tabIndex,\n }}\n onChange={(event) => {\n const newItems = items.map((i) => {\n if (i.id === item.id) {\n return {\n ...i,\n isSelected: event.target.checked,\n };\n }\n return i;\n });\n\n // Uncheck parents if a child is unchecked\n if (!event.target.checked) {\n let parentId = item.parentId;\n while (parentId !== null) {\n const parent = newItems.find(\n (newItem) => newItem.id === parentId,\n );\n if (parent) {\n newItems.forEach((newItem) => {\n if (newItem.id === parent.id) {\n newItem.isSelected = false;\n }\n });\n parentId = parent.parentId;\n } else {\n parentId = null;\n }\n }\n }\n // Check children if a parent is checked\n if (item.canHaveSubItems) {\n const childIdsToUncheck = items\n .filter((i) => i.parentId === item.id)\n .map((i) => i.id);\n while (childIdsToUncheck.length > 0) {\n const childId = childIdsToUncheck.pop();\n const child = items.find((i) => i.id === childId);\n if (child) {\n newItems.forEach((newItem) => {\n if (newItem.id === child.id) {\n newItem.isSelected = event.target.checked;\n }\n });\n newItems\n .filter((i) => i.parentId === child.id)\n .forEach((i) => {\n childIdsToUncheck.push(i.id);\n });\n }\n }\n }\n onItemsChanged(newItems, { item, reason: 'selected' });\n }}\n aria-label={item.data.text}\n />\n </Skeleton>\n )}\n\n <Skeleton\n onBackground=\"weak\"\n shape=\"rectangular\"\n height=\"20px\"\n {...item.skeletonProps}\n isLoading={item.isSkeletonLoading}\n >\n <ConditionalWrap\n shouldWrap={item.data.onTextClick !== undefined}\n wrap={(children) => (\n <button\n type=\"button\"\n onClick={item.data.onTextClick}\n className=\"ndl-tree-view-text-clickable\"\n tabIndex={tabIndex}\n >\n {children}\n </button>\n )}\n >\n <Typography\n variant={item.canHaveSubItems ? 'subheading-small' : 'body-medium'}\n htmlAttributes={{\n style: {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n }}\n >\n {item.data.text}\n </Typography>\n </ConditionalWrap>\n </Skeleton>\n <div className=\"ndl-tree-view-actions\">\n {item.data.actions &&\n item.data.actions.map((action, index) => {\n return (\n <CleanIconButton\n key={index}\n className=\"ndl-tree-view-action\"\n size=\"small\"\n {...action.buttonProps}\n htmlAttributes={{\n tabIndex,\n ...action.buttonProps.htmlAttributes,\n }}\n >\n {action.icon}\n </CleanIconButton>\n );\n })}\n </div>\n </TreeItemWrapper>\n );\n};\n"]}
1
+ {"version":3,"file":"TreeViewTextItem.js","sourceRoot":"","sources":["../../../src/tree-view/TreeViewTextItem.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAsBA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qDAAqD,CAAC;AAC7F,OAAO,EAAE,uBAAuB,EAAE,MAAM,sDAAsD,CAAC;AAC/F,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAM3C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;;;;GAKG;AACH,MAAM,0BAA0B,GAAG,CACjC,IAAqC,EACrC,KAAwC,EAC/B,EAAE;IACX,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3E,IAAI,MAAM,EAAE,CAAC;QACX,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,0BAA0B,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,0BAA0B,GAAG,CACjC,IAAqC,EACrC,KAAwC,EAC/B,EAAE;IACX,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7E,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,CAClB,CAAC,SAAS,EAAE,EAAE,CACZ,SAAS,CAAC,UAAU,IAAI,0BAA0B,CAAC,SAAS,EAAE,KAAK,CAAC,CACvE,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAyB,EAuBM,EAAE,EAAE;QAvBV,EACvD,KAAK,EACL,wBAAwB,EACxB,oBAAoB,EACpB,OAAO,EACP,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,UAAU,EACV,IAAI,EACJ,MAAM,EACN,MAAM,EACN,YAAY,EACZ,UAAU,EACV,mBAAmB,EACnB,eAAe,EACf,KAAK,EACL,MAAM,EACN,cAAc,EACd,KAAK,EACL,QAAQ,EACR,GAAG,OAE0D,EAD1D,SAAS,cAtB2C,6SAuBxD,CADa;IAEZ,MAAM,kBAAkB,GAAG,0BAA0B,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACnE,MAAM,iBAAiB,GAAG,0BAA0B,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAElE,MAAM,eAAe,GACnB,iBAAiB,KAAK,IAAI;QAC1B,kBAAkB,KAAK,KAAK;QAC5B,IAAI,CAAC,UAAU,KAAK,KAAK;QACvB,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,KAAK,CAAC;IAEZ,OAAO,CACL,MAAC,eAAe,kBACd,KAAK,EAAE,KAAK,EACZ,wBAAwB,EAAE,wBAAwB,EAClD,oBAAoB,EAAE,oBAAoB,EAC1C,OAAO,EAAE,OAAO,EAChB,gBAAgB,EAAE,gBAAgB,EAClC,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,UAAU,EACtB,mBAAmB,EAAE,mBAAmB,EACxC,eAAe,EAAE,eAAe,EAChC,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM;QACd,gEAAgE;QAChE,cAAc,EAAE,GAAG,EAAE,GAAE,CAAC,EACxB,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,IACd,SAAS,eAEZ,IAAI,CAAC,eAAe,IAAI,UAAU,IAAI,CACrC,kBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,+BAA+B,EACzC,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE,gBACf,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,mBACrC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;gBAClD;;;mBAGG;gBACH,QAAQ,EAAE,QAAQ,aAEjB,IAAI,CAAC,WAAW,IAAI,KAAC,uBAAuB,IAAC,SAAS,EAAC,UAAU,GAAG,EACpE,CAAC,IAAI,CAAC,WAAW,IAAI,KAAC,sBAAsB,IAAC,SAAS,EAAC,UAAU,GAAG,IAC9D,CACV,EACA,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,CAChC,KAAC,QAAQ,kBACP,YAAY,EAAC,MAAM,EACnB,KAAK,EAAC,aAAa,IACf,IAAI,CAAC,aAAa,IACtB,SAAS,EAAE,IAAI,CAAC,iBAAiB,YAEjC,KAAC,QAAQ,IACP,eAAe,EAAE,eAAe,EAChC,SAAS,EAAE,IAAI,CAAC,UAAU,EAC1B,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EACzB,cAAc,EAAE;wBACd,QAAQ;qBACT,EACD,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;wBAClB,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;4BACtC,IAAI,QAAQ,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;gCAC5B,uCACK,QAAQ,KACX,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,IAChC;4BACJ,CAAC;4BACD,OAAO,QAAQ,CAAC;wBAClB,CAAC,CAAC,CAAC;wBAEH,0CAA0C;wBAC1C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;4BAC1B,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;4BAC7B,OAAO,QAAQ,KAAK,IAAI,EAAE,CAAC;gCACzB,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAC1B,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,QAAQ,CACrC,CAAC;gCACF,IAAI,MAAM,EAAE,CAAC;oCACX,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;wCAC3B,IAAI,OAAO,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC;4CAC7B,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC;wCAC7B,CAAC;oCACH,CAAC,CAAC,CAAC;oCACH,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;gCAC7B,CAAC;qCAAM,CAAC;oCACN,QAAQ,GAAG,IAAI,CAAC;gCAClB,CAAC;4BACH,CAAC;wBACH,CAAC;wBACD,wCAAwC;wBACxC,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;4BACzB,MAAM,iBAAiB,GAAG,KAAK;iCAC5B,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,KAAK,IAAI,CAAC,EAAE,CAAC;iCACrD,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;4BACpC,OAAO,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gCACpC,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,EAAE,CAAC;gCACxC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CACtB,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,OAAO,CACxC,CAAC;gCACF,IAAI,KAAK,EAAE,CAAC;oCACV,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;wCAC3B,IAAI,OAAO,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,EAAE,CAAC;4CAC5B,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;wCAC5C,CAAC;oCACH,CAAC,CAAC,CAAC;oCACH,QAAQ;yCACL,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,KAAK,KAAK,CAAC,EAAE,CAAC;yCACtD,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;wCACrB,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;oCACvC,CAAC,CAAC,CAAC;gCACP,CAAC;4BACH,CAAC;wBACH,CAAC;wBACD,cAAc,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;oBACzD,CAAC,gBACW,IAAI,CAAC,IAAI,CAAC,IAAI,GAC1B,IACO,CACZ,EAED,KAAC,QAAQ,kBACP,YAAY,EAAC,MAAM,EACnB,KAAK,EAAC,aAAa,EACnB,MAAM,EAAC,MAAM,IACT,IAAI,CAAC,aAAa,IACtB,SAAS,EAAE,IAAI,CAAC,iBAAiB,YAEjC,KAAC,eAAe,IACd,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,EAC/C,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAClB,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAC9B,SAAS,EAAC,8BAA8B,EACxC,QAAQ,EAAE,QAAQ,YAEjB,QAAQ,GACF,CACV,YAED,KAAC,UAAU,IACT,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,aAAa,EAClE,cAAc,EAAE;4BACd,KAAK,EAAE;gCACL,QAAQ,EAAE,QAAQ;gCAClB,YAAY,EAAE,UAAU;gCACxB,UAAU,EAAE,QAAQ;6BACrB;yBACF,YAEA,IAAI,CAAC,IAAI,CAAC,IAAI,GACJ,GACG,IACT,EACX,cAAK,SAAS,EAAC,uBAAuB,YACnC,IAAI,CAAC,IAAI,CAAC,OAAO;oBAChB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;wBACtC,OAAO,CACL,KAAC,eAAe,kBAEd,SAAS,EAAC,sBAAsB,EAChC,IAAI,EAAC,OAAO,IACR,MAAM,CAAC,WAAW,IACtB,cAAc,kBACZ,QAAQ,IACL,MAAM,CAAC,WAAW,CAAC,cAAc,aAGrC,MAAM,CAAC,IAAI,KATP,KAAK,CAUM,CACnB,CAAC;oBACJ,CAAC,CAAC,GACA,KACU,CACnB,CAAC;AACJ,CAAC,CAAC","sourcesContent":["/**\n *\n * Copyright (c) \"Neo4j\"\n * Neo4j Sweden AB [http://neo4j.com]\n *\n * This file is part of Neo4j.\n *\n * Neo4j is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\nimport type React from 'react';\n\nimport { Checkbox } from '../checkbox';\nimport { CleanIconButton } from '../clean-icon-button';\nimport { ConditionalWrap } from '../conditional-wrap';\nimport { ChevronDownIconOutline } from '../icons/generated/heroIcons/ChevronDownIconOutline';\nimport { ChevronRightIconOutline } from '../icons/generated/heroIcons/ChevronRightIconOutline';\nimport { Skeleton } from '../skeleton';\nimport { Typography } from '../typography';\nimport {\n type FlattenedTreeItem,\n type TextItemData,\n type TreeItemComponentProps,\n} from './tree-view-types';\nimport { TreeItemWrapper } from './TreeItemWrapper';\n\n/**\n * checks if any parent is checked\n * @param item - Tree item\n * @param items - Flattened tree items\n * @returns\n */\nconst parentIsCheckedRecursively = (\n item: FlattenedTreeItem<TextItemData>,\n items: FlattenedTreeItem<TextItemData>[],\n): boolean => {\n const parent = items.find((parentItem) => parentItem.id === item.parentId);\n if (parent) {\n if (parent.isSelected) {\n return true;\n }\n return parentIsCheckedRecursively(parent, items);\n }\n return false;\n};\n\n/**\n * checks if any children are checked\n * @param item - Tree item\n * @param items - Flattened tree items\n * @returns\n */\nconst childrenCheckedRecursively = (\n item: FlattenedTreeItem<TextItemData>,\n items: FlattenedTreeItem<TextItemData>[],\n): boolean => {\n const children = items.filter((childItem) => childItem.parentId === item.id);\n if (children.length === 0) {\n return false;\n }\n return children.some(\n (childItem) =>\n childItem.isSelected || childrenCheckedRecursively(childItem, items),\n );\n};\n\nexport const TreeViewTextItem = <T extends TextItemData>({\n depth,\n shouldDisableInteraction,\n shouldDisableSorting,\n isGhost,\n indentationWidth,\n isIndicator,\n isCollapsed,\n onCollapse,\n item,\n parent,\n isOver,\n isOverParent,\n setNodeRef,\n setActivatorNodeRef,\n dragHandleProps,\n style,\n trails,\n onItemsChanged,\n items,\n tabIndex,\n ref,\n ...restProps\n}: TreeItemComponentProps<T> & { ref?: React.Ref<HTMLElement> }) => {\n const isAnyParentChecked = parentIsCheckedRecursively(item, items);\n const isAnyChildChecked = childrenCheckedRecursively(item, items);\n\n const isIndeterminate =\n isAnyChildChecked === true &&\n isAnyParentChecked === false &&\n item.isSelected === false\n ? true\n : false;\n\n return (\n <TreeItemWrapper\n depth={depth}\n shouldDisableInteraction={shouldDisableInteraction}\n shouldDisableSorting={shouldDisableSorting}\n isGhost={isGhost}\n indentationWidth={indentationWidth}\n isIndicator={isIndicator}\n isCollapsed={isCollapsed}\n onCollapse={onCollapse}\n item={item}\n parent={parent}\n isOver={isOver}\n isOverParent={isOverParent}\n setNodeRef={setNodeRef}\n setActivatorNodeRef={setActivatorNodeRef}\n dragHandleProps={dragHandleProps}\n style={style}\n trails={trails}\n // oxlint-disable-next-line @typescript-eslint/no-empty-function\n onItemsChanged={() => {}}\n ref={ref}\n items={items}\n tabIndex={tabIndex}\n {...restProps}\n >\n {item.canHaveSubItems && onCollapse && (\n <button\n type=\"button\"\n className=\"ndl-tree-view-collapse-button\"\n onClick={() => onCollapse()}\n aria-label={item.isCollapsed ? 'Expand' : 'Collapse'}\n aria-expanded={item.isCollapsed ? 'false' : 'true'}\n /**\n * Tab index is set to -1 to prevent the item from being focused when the tree is navigated with tab\n * since we use the arrow keys instead\n */\n tabIndex={tabIndex}\n >\n {item.isCollapsed && <ChevronRightIconOutline className=\"ndl-icon\" />}\n {!item.isCollapsed && <ChevronDownIconOutline className=\"ndl-icon\" />}\n </button>\n )}\n {item.isSelected !== undefined && (\n <Skeleton\n onBackground=\"weak\"\n shape=\"rectangular\"\n {...item.skeletonProps}\n isLoading={item.isSkeletonLoading}\n >\n <Checkbox\n isIndeterminate={isIndeterminate}\n isChecked={item.isSelected}\n ariaLabel={item.data.text}\n htmlAttributes={{\n tabIndex,\n }}\n onChange={(event) => {\n const newItems = items.map((treeItem) => {\n if (treeItem.id === item.id) {\n return {\n ...treeItem,\n isSelected: event.target.checked,\n };\n }\n return treeItem;\n });\n\n // Uncheck parents if a child is unchecked\n if (!event.target.checked) {\n let parentId = item.parentId;\n while (parentId !== null) {\n const parent = newItems.find(\n (newItem) => newItem.id === parentId,\n );\n if (parent) {\n newItems.forEach((newItem) => {\n if (newItem.id === parent.id) {\n newItem.isSelected = false;\n }\n });\n parentId = parent.parentId;\n } else {\n parentId = null;\n }\n }\n }\n // Check children if a parent is checked\n if (item.canHaveSubItems) {\n const childIdsToUncheck = items\n .filter((childItem) => childItem.parentId === item.id)\n .map((childItem) => childItem.id);\n while (childIdsToUncheck.length > 0) {\n const childId = childIdsToUncheck.pop();\n const child = items.find(\n (childItem) => childItem.id === childId,\n );\n if (child) {\n newItems.forEach((newItem) => {\n if (newItem.id === child.id) {\n newItem.isSelected = event.target.checked;\n }\n });\n newItems\n .filter((childItem) => childItem.parentId === child.id)\n .forEach((childItem) => {\n childIdsToUncheck.push(childItem.id);\n });\n }\n }\n }\n onItemsChanged(newItems, { item, reason: 'selected' });\n }}\n aria-label={item.data.text}\n />\n </Skeleton>\n )}\n\n <Skeleton\n onBackground=\"weak\"\n shape=\"rectangular\"\n height=\"20px\"\n {...item.skeletonProps}\n isLoading={item.isSkeletonLoading}\n >\n <ConditionalWrap\n shouldWrap={item.data.onTextClick !== undefined}\n wrap={(children) => (\n <button\n type=\"button\"\n onClick={item.data.onTextClick}\n className=\"ndl-tree-view-text-clickable\"\n tabIndex={tabIndex}\n >\n {children}\n </button>\n )}\n >\n <Typography\n variant={item.canHaveSubItems ? 'subheading-small' : 'body-medium'}\n htmlAttributes={{\n style: {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n }}\n >\n {item.data.text}\n </Typography>\n </ConditionalWrap>\n </Skeleton>\n <div className=\"ndl-tree-view-actions\">\n {item.data.actions &&\n item.data.actions.map((action, index) => {\n return (\n <CleanIconButton\n key={index}\n className=\"ndl-tree-view-action\"\n size=\"small\"\n {...action.buttonProps}\n htmlAttributes={{\n tabIndex,\n ...action.buttonProps.htmlAttributes,\n }}\n >\n {action.icon}\n </CleanIconButton>\n );\n })}\n </div>\n </TreeItemWrapper>\n );\n};\n"]}
@@ -102,7 +102,9 @@ export const sortableTreeKeyboardCoordinates = (context, indicator, indentationW
102
102
  ? (collisionRect.height - activeRect.height) / 2
103
103
  : 0;
104
104
  const newCoordinates = {
105
+ // oxlint-disable-next-line id-length
105
106
  x: newRect.left + depth * indentationWidth,
107
+ // oxlint-disable-next-line id-length
106
108
  y: newRect.top + modifier * offset,
107
109
  };
108
110
  return newCoordinates;
@@ -1 +1 @@
1
- {"version":3,"file":"tree-view-keyboard-coordinates.js","sourceRoot":"","sources":["../../../src/tree-view/tree-view-keyboard-coordinates.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n *\n * Copyright (c) \"Neo4j\"\n * Neo4j Sweden AB [http://neo4j.com]\n *\n * This file is part of Neo4j.\n *\n * Neo4j is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\nimport {\n closestCorners,\n type DroppableContainer,\n getFirstCollision,\n KeyboardCode,\n type KeyboardCoordinateGetter,\n} from '@dnd-kit/core';\n\nimport { getProjection, type SensorContext } from './tree-view-utils';\n\nconst directions: string[] = [\n KeyboardCode.Down,\n KeyboardCode.Right,\n KeyboardCode.Up,\n KeyboardCode.Left,\n];\n\nconst horizontal: string[] = [KeyboardCode.Left, KeyboardCode.Right];\n\nexport const sortableTreeKeyboardCoordinates: <T>(\n context: SensorContext<T>,\n indicator: boolean,\n indentationWidth: number,\n) => KeyboardCoordinateGetter =\n (context, indicator, indentationWidth) =>\n (\n event,\n {\n currentCoordinates,\n context: {\n active,\n over,\n collisionRect,\n droppableRects,\n droppableContainers,\n },\n },\n ) => {\n if (directions.includes(event.code)) {\n if (!active || !collisionRect) {\n return;\n }\n event.preventDefault();\n\n const {\n current: { items, offset },\n } = context;\n if (horizontal.includes(event.code) && over?.id) {\n const { depth, maxDepth, minDepth } = getProjection(\n items,\n active.id,\n over.id,\n offset,\n indentationWidth,\n );\n\n switch (event.code) {\n case KeyboardCode.Left:\n if (depth > minDepth) {\n return {\n ...currentCoordinates,\n x: currentCoordinates.x - indentationWidth,\n };\n }\n break;\n case KeyboardCode.Right:\n if (depth < maxDepth) {\n return {\n ...currentCoordinates,\n x: currentCoordinates.x + indentationWidth,\n };\n }\n break;\n }\n\n return undefined;\n }\n\n const containers: DroppableContainer[] = [];\n\n droppableContainers.forEach((container) => {\n if (\n container?.disabled ||\n container.id === over?.id ||\n container?.id === 'ndl-active-tree-item'\n ) {\n return;\n }\n const rect = droppableRects.get(container.id);\n\n if (!rect) {\n return;\n }\n\n switch (event.code) {\n case KeyboardCode.Down:\n if (collisionRect.top < rect.top) {\n containers.push(container);\n }\n break;\n case KeyboardCode.Up:\n if (collisionRect.top > rect.top) {\n containers.push(container);\n }\n break;\n }\n });\n\n const collisions = closestCorners({\n active,\n collisionRect,\n droppableContainers: containers,\n droppableRects,\n pointerCoordinates: null,\n });\n let closestId = getFirstCollision(collisions, 'id');\n if (closestId === over?.id && collisions.length > 1) {\n closestId = collisions[1].id;\n }\n\n if (closestId && over?.id) {\n const activeRect = droppableRects.get(active.id);\n const newRect = droppableRects.get(closestId);\n const newDroppable = droppableContainers.get(closestId);\n\n if (activeRect && newRect && newDroppable) {\n const newIndex = items.findIndex(({ id }) => id === closestId);\n const newItem = items[newIndex];\n const activeIndex = items.findIndex(({ id }) => id === active.id);\n const activeItem = items[activeIndex];\n\n if (newItem && activeItem) {\n const { depth } = getProjection(\n items,\n active.id,\n closestId,\n (newItem.depth - activeItem.depth) * indentationWidth,\n indentationWidth,\n );\n const isBelow = newIndex > activeIndex;\n const modifier = isBelow ? 1 : -1;\n const offset = indicator\n ? (collisionRect.height - activeRect.height) / 2\n : 0;\n\n const newCoordinates = {\n x: newRect.left + depth * indentationWidth,\n y: newRect.top + modifier * offset,\n };\n\n return newCoordinates;\n }\n }\n }\n }\n\n return undefined;\n };\n"]}
1
+ {"version":3,"file":"tree-view-keyboard-coordinates.js","sourceRoot":"","sources":["../../../src/tree-view/tree-view-keyboard-coordinates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EACL,cAAc,EAEd,iBAAiB,EACjB,YAAY,GAEb,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,aAAa,EAAsB,MAAM,mBAAmB,CAAC;AAEtE,MAAM,UAAU,GAAa;IAC3B,YAAY,CAAC,IAAI;IACjB,YAAY,CAAC,KAAK;IAClB,YAAY,CAAC,EAAE;IACf,YAAY,CAAC,IAAI;CAClB,CAAC;AAEF,MAAM,UAAU,GAAa,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;AAErE,MAAM,CAAC,MAAM,+BAA+B,GAK1C,CAAC,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,EAAE,CACzC,CACE,KAAK,EACL,EACE,kBAAkB,EAClB,OAAO,EAAE,EACP,MAAM,EACN,IAAI,EACJ,aAAa,EACb,cAAc,EACd,mBAAmB,GACpB,GACF,EACD,EAAE;IACF,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,IAAI,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;YAC9B,OAAO;QACT,CAAC;QACD,KAAK,CAAC,cAAc,EAAE,CAAC;QAEvB,MAAM,EACJ,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAC3B,GAAG,OAAO,CAAC;QACZ,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,EAAE,CAAA,EAAE,CAAC;YAChD,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,aAAa,CACjD,KAAK,EACL,MAAM,CAAC,EAAE,EACT,IAAI,CAAC,EAAE,EACP,MAAM,EACN,gBAAgB,CACjB,CAAC;YAEF,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;gBACnB,KAAK,YAAY,CAAC,IAAI;oBACpB,IAAI,KAAK,GAAG,QAAQ,EAAE,CAAC;wBACrB,uCACK,kBAAkB,KACrB,CAAC,EAAE,kBAAkB,CAAC,CAAC,GAAG,gBAAgB,IAC1C;oBACJ,CAAC;oBACD,MAAM;gBACR,KAAK,YAAY,CAAC,KAAK;oBACrB,IAAI,KAAK,GAAG,QAAQ,EAAE,CAAC;wBACrB,uCACK,kBAAkB,KACrB,CAAC,EAAE,kBAAkB,CAAC,CAAC,GAAG,gBAAgB,IAC1C;oBACJ,CAAC;oBACD,MAAM;YACV,CAAC;YAED,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,UAAU,GAAyB,EAAE,CAAC;QAE5C,mBAAmB,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;YACxC,IACE,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,QAAQ;gBACnB,SAAS,CAAC,EAAE,MAAK,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,EAAE,CAAA;gBACzB,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,EAAE,MAAK,sBAAsB,EACxC,CAAC;gBACD,OAAO;YACT,CAAC;YACD,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAE9C,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO;YACT,CAAC;YAED,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;gBACnB,KAAK,YAAY,CAAC,IAAI;oBACpB,IAAI,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;wBACjC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAC7B,CAAC;oBACD,MAAM;gBACR,KAAK,YAAY,CAAC,EAAE;oBAClB,IAAI,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;wBACjC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAC7B,CAAC;oBACD,MAAM;YACV,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,cAAc,CAAC;YAChC,MAAM;YACN,aAAa;YACb,mBAAmB,EAAE,UAAU;YAC/B,cAAc;YACd,kBAAkB,EAAE,IAAI;SACzB,CAAC,CAAC;QACH,IAAI,SAAS,GAAG,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACpD,IAAI,SAAS,MAAK,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,EAAE,CAAA,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpD,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/B,CAAC;QAED,IAAI,SAAS,KAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,EAAE,CAAA,EAAE,CAAC;YAC1B,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACjD,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC9C,MAAM,YAAY,GAAG,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAExD,IAAI,UAAU,IAAI,OAAO,IAAI,YAAY,EAAE,CAAC;gBAC1C,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;gBAC/D,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAChC,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC;gBAClE,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;gBAEtC,IAAI,OAAO,IAAI,UAAU,EAAE,CAAC;oBAC1B,MAAM,EAAE,KAAK,EAAE,GAAG,aAAa,CAC7B,KAAK,EACL,MAAM,CAAC,EAAE,EACT,SAAS,EACT,CAAC,OAAO,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,gBAAgB,EACrD,gBAAgB,CACjB,CAAC;oBACF,MAAM,OAAO,GAAG,QAAQ,GAAG,WAAW,CAAC;oBACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAClC,MAAM,MAAM,GAAG,SAAS;wBACtB,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC;wBAChD,CAAC,CAAC,CAAC,CAAC;oBAEN,MAAM,cAAc,GAAG;wBACrB,qCAAqC;wBACrC,CAAC,EAAE,OAAO,CAAC,IAAI,GAAG,KAAK,GAAG,gBAAgB;wBAC1C,qCAAqC;wBACrC,CAAC,EAAE,OAAO,CAAC,GAAG,GAAG,QAAQ,GAAG,MAAM;qBACnC,CAAC;oBAEF,OAAO,cAAc,CAAC;gBACxB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC","sourcesContent":["/**\n *\n * Copyright (c) \"Neo4j\"\n * Neo4j Sweden AB [http://neo4j.com]\n *\n * This file is part of Neo4j.\n *\n * Neo4j is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\nimport {\n closestCorners,\n type DroppableContainer,\n getFirstCollision,\n KeyboardCode,\n type KeyboardCoordinateGetter,\n} from '@dnd-kit/core';\n\nimport { getProjection, type SensorContext } from './tree-view-utils';\n\nconst directions: string[] = [\n KeyboardCode.Down,\n KeyboardCode.Right,\n KeyboardCode.Up,\n KeyboardCode.Left,\n];\n\nconst horizontal: string[] = [KeyboardCode.Left, KeyboardCode.Right];\n\nexport const sortableTreeKeyboardCoordinates: <T>(\n context: SensorContext<T>,\n indicator: boolean,\n indentationWidth: number,\n) => KeyboardCoordinateGetter =\n (context, indicator, indentationWidth) =>\n (\n event,\n {\n currentCoordinates,\n context: {\n active,\n over,\n collisionRect,\n droppableRects,\n droppableContainers,\n },\n },\n ) => {\n if (directions.includes(event.code)) {\n if (!active || !collisionRect) {\n return;\n }\n event.preventDefault();\n\n const {\n current: { items, offset },\n } = context;\n if (horizontal.includes(event.code) && over?.id) {\n const { depth, maxDepth, minDepth } = getProjection(\n items,\n active.id,\n over.id,\n offset,\n indentationWidth,\n );\n\n switch (event.code) {\n case KeyboardCode.Left:\n if (depth > minDepth) {\n return {\n ...currentCoordinates,\n x: currentCoordinates.x - indentationWidth, // oxlint-disable-line id-length\n };\n }\n break;\n case KeyboardCode.Right:\n if (depth < maxDepth) {\n return {\n ...currentCoordinates,\n x: currentCoordinates.x + indentationWidth, // oxlint-disable-line id-length\n };\n }\n break;\n }\n\n return undefined;\n }\n\n const containers: DroppableContainer[] = [];\n\n droppableContainers.forEach((container) => {\n if (\n container?.disabled ||\n container.id === over?.id ||\n container?.id === 'ndl-active-tree-item'\n ) {\n return;\n }\n const rect = droppableRects.get(container.id);\n\n if (!rect) {\n return;\n }\n\n switch (event.code) {\n case KeyboardCode.Down:\n if (collisionRect.top < rect.top) {\n containers.push(container);\n }\n break;\n case KeyboardCode.Up:\n if (collisionRect.top > rect.top) {\n containers.push(container);\n }\n break;\n }\n });\n\n const collisions = closestCorners({\n active,\n collisionRect,\n droppableContainers: containers,\n droppableRects,\n pointerCoordinates: null,\n });\n let closestId = getFirstCollision(collisions, 'id');\n if (closestId === over?.id && collisions.length > 1) {\n closestId = collisions[1].id;\n }\n\n if (closestId && over?.id) {\n const activeRect = droppableRects.get(active.id);\n const newRect = droppableRects.get(closestId);\n const newDroppable = droppableContainers.get(closestId);\n\n if (activeRect && newRect && newDroppable) {\n const newIndex = items.findIndex(({ id }) => id === closestId);\n const newItem = items[newIndex];\n const activeIndex = items.findIndex(({ id }) => id === active.id);\n const activeItem = items[activeIndex];\n\n if (newItem && activeItem) {\n const { depth } = getProjection(\n items,\n active.id,\n closestId,\n (newItem.depth - activeItem.depth) * indentationWidth,\n indentationWidth,\n );\n const isBelow = newIndex > activeIndex;\n const modifier = isBelow ? 1 : -1;\n const offset = indicator\n ? (collisionRect.height - activeRect.height) / 2\n : 0;\n\n const newCoordinates = {\n // oxlint-disable-next-line id-length\n x: newRect.left + depth * indentationWidth,\n // oxlint-disable-next-line id-length\n y: newRect.top + modifier * offset,\n };\n\n return newCoordinates;\n }\n }\n }\n }\n\n return undefined;\n };\n"]}
@@ -23,9 +23,9 @@ import { arrayMove } from '@dnd-kit/sortable';
23
23
  /**
24
24
  * Takes a tree and flattens it into a list of item
25
25
  * where each item has a depth and a parentId.
26
- * @param tree the tree to flatten
27
- * @param depth the depth of the root of the tree (default 0)
28
- * @param parentId the id of the parent of the root of the tree (default null)
26
+ * @param tree - The tree to flatten
27
+ * @param depth - The depth of the root of the tree (default 0)
28
+ * @param parentId - The id of the parent of the root of the tree (default null)
29
29
  * @returns a list of items with depth and parentId
30
30
  */
31
31
  export const flattenTree = (tree, depth = 0, parentId = null) => {
@@ -43,8 +43,8 @@ export const flattenTree = (tree, depth = 0, parentId = null) => {
43
43
  };
44
44
  /**
45
45
  * Removes the children of the items with the given ids
46
- * @param items the flattened tree items to remove the children from
47
- * @param ids the ids of the items to remove the children from
46
+ * @param items - The flattened tree items to remove the children from
47
+ * @param ids - The ids of the items to remove the children from
48
48
  * @returns a new list of items with the children of the items with the given ids removed
49
49
  */
50
50
  export function removeChildrenOf(items, ids) {
@@ -61,7 +61,7 @@ export function removeChildrenOf(items, ids) {
61
61
  }
62
62
  /**
63
63
  * Builds a tree from a list of flattened tree items
64
- * @param items the flattened tree items
64
+ * @param items - The flattened tree items
65
65
  * @returns the items as a tree data structure
66
66
  */
67
67
  export function buildTree(items) {
@@ -110,11 +110,11 @@ function getMinDepth({ nextItem }) {
110
110
  * Calculates the new depth, max depth, min depth and parent id of the item being dragged
111
111
  * Used to project the position of the dragged item. For example, to convert the item being dragged into a placeholder.
112
112
  * such as the line that appears when dragging an item in a tree view.
113
- * @param items the flattened tree items
114
- * @param activeId the id of the item being dragged
115
- * @param overId the id of the item that the dragged item is being dragged over
116
- * @param dragOffset the offset of the drag in pixels
117
- * @param indentationWidth the width of the indentation in pixels
113
+ * @param items - The flattened tree items
114
+ * @param activeId - The id of the item being dragged
115
+ * @param overId - The id of the item that the dragged item is being dragged over
116
+ * @param dragOffset - The offset of the drag in pixels
117
+ * @param indentationWidth - The width of the indentation in pixels
118
118
  * @returns the depth, max depth, min depth and parent id of the item being dragged
119
119
  */
120
120
  export function getProjection(items, activeId, overId, dragOffset, indentationWidth) {
@@ -158,7 +158,7 @@ export function getProjection(items, activeId, overId, dragOffset, indentationWi
158
158
  }
159
159
  /**
160
160
  *
161
- * @param transform a transform object
161
+ * @param transform - A transform object
162
162
  * @returns a css transform string
163
163
  */
164
164
  export const transformToString = (transform) => {