@itwin/components-react 4.14.1 → 4.15.1

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 (216) hide show
  1. package/CHANGELOG.md +25 -1
  2. package/lib/cjs/components-react/common/ImageRenderer.d.ts.map +1 -1
  3. package/lib/cjs/components-react/common/ImageRenderer.js +5 -1
  4. package/lib/cjs/components-react/common/ImageRenderer.js.map +1 -1
  5. package/lib/cjs/components-react/datepicker/DateField.d.ts.map +1 -1
  6. package/lib/cjs/components-react/datepicker/DateField.js.map +1 -1
  7. package/lib/cjs/components-react/datepicker/DatePicker.d.ts +2 -2
  8. package/lib/cjs/components-react/datepicker/DatePicker.js +1 -1
  9. package/lib/cjs/components-react/datepicker/DatePicker.js.map +1 -1
  10. package/lib/cjs/components-react/datepicker/DatePickerPopupButton.d.ts +2 -2
  11. package/lib/cjs/components-react/datepicker/DatePickerPopupButton.d.ts.map +1 -1
  12. package/lib/cjs/components-react/datepicker/DatePickerPopupButton.js +1 -1
  13. package/lib/cjs/components-react/datepicker/DatePickerPopupButton.js.map +1 -1
  14. package/lib/cjs/components-react/datepicker/IntlFormatter.d.ts +1 -1
  15. package/lib/cjs/components-react/datepicker/IntlFormatter.js +1 -1
  16. package/lib/cjs/components-react/datepicker/IntlFormatter.js.map +1 -1
  17. package/lib/cjs/components-react/editors/EditorContainer.d.ts.map +1 -1
  18. package/lib/cjs/components-react/editors/EditorContainer.js.map +1 -1
  19. package/lib/cjs/components-react/editors/PopupButton.d.ts.map +1 -1
  20. package/lib/cjs/components-react/editors/PopupButton.js +2 -1
  21. package/lib/cjs/components-react/editors/PopupButton.js.map +1 -1
  22. package/lib/cjs/components-react/favorite/FavoritePropertyList.d.ts.map +1 -1
  23. package/lib/cjs/components-react/favorite/FavoritePropertyList.js.map +1 -1
  24. package/lib/cjs/components-react/filter-builder/FilterBuilderState.d.ts +2 -2
  25. package/lib/cjs/components-react/filter-builder/FilterBuilderState.d.ts.map +1 -1
  26. package/lib/cjs/components-react/filter-builder/FilterBuilderState.js +20 -5
  27. package/lib/cjs/components-react/filter-builder/FilterBuilderState.js.map +1 -1
  28. package/lib/cjs/components-react/filtering/FilteringInput.d.ts.map +1 -1
  29. package/lib/cjs/components-react/filtering/FilteringInput.js.map +1 -1
  30. package/lib/cjs/components-react/filtering/ResultSelector.d.ts.map +1 -1
  31. package/lib/cjs/components-react/filtering/ResultSelector.js.map +1 -1
  32. package/lib/cjs/components-react/iconpicker/IconPickerButton.d.ts.map +1 -1
  33. package/lib/cjs/components-react/iconpicker/IconPickerButton.js.map +1 -1
  34. package/lib/cjs/components-react/inputs/ParsedInput.d.ts.map +1 -1
  35. package/lib/cjs/components-react/inputs/ParsedInput.js.map +1 -1
  36. package/lib/cjs/components-react/propertygrid/component/PropertyCategoryBlock.d.ts.map +1 -1
  37. package/lib/cjs/components-react/propertygrid/component/PropertyCategoryBlock.js.map +1 -1
  38. package/lib/cjs/components-react/propertygrid/component/PropertyGridCommons.d.ts.map +1 -1
  39. package/lib/cjs/components-react/propertygrid/component/PropertyGridCommons.js.map +1 -1
  40. package/lib/cjs/components-react/propertygrid/component/PropertyList.d.ts.map +1 -1
  41. package/lib/cjs/components-react/propertygrid/component/PropertyList.js.map +1 -1
  42. package/lib/cjs/components-react/toolbar/InternalToolbarComponent.d.ts +4 -3
  43. package/lib/cjs/components-react/toolbar/InternalToolbarComponent.d.ts.map +1 -1
  44. package/lib/cjs/components-react/toolbar/InternalToolbarComponent.js +10 -3
  45. package/lib/cjs/components-react/toolbar/InternalToolbarComponent.js.map +1 -1
  46. package/lib/cjs/components-react/toolbar/Item.d.ts.map +1 -1
  47. package/lib/cjs/components-react/toolbar/Item.js.map +1 -1
  48. package/lib/cjs/components-react/toolbar/ItemWrapper.d.ts.map +1 -1
  49. package/lib/cjs/components-react/toolbar/ItemWrapper.js.map +1 -1
  50. package/lib/cjs/components-react/toolbar/Items.d.ts.map +1 -1
  51. package/lib/cjs/components-react/toolbar/Items.js.map +1 -1
  52. package/lib/cjs/components-react/toolbar/Overflow.d.ts +2 -1
  53. package/lib/cjs/components-react/toolbar/Overflow.d.ts.map +1 -1
  54. package/lib/cjs/components-react/toolbar/Overflow.js.map +1 -1
  55. package/lib/cjs/components-react/toolbar/OverflowPanel.d.ts.map +1 -1
  56. package/lib/cjs/components-react/toolbar/OverflowPanel.js.map +1 -1
  57. package/lib/cjs/components-react/toolbar/PopupItem.d.ts.map +1 -1
  58. package/lib/cjs/components-react/toolbar/PopupItem.js +3 -1
  59. package/lib/cjs/components-react/toolbar/PopupItem.js.map +1 -1
  60. package/lib/cjs/components-react/toolbar/PopupItemWithDrag.js +1 -1
  61. package/lib/cjs/components-react/toolbar/PopupItemWithDrag.js.map +1 -1
  62. package/lib/cjs/components-react/toolbar/PopupItemsPanel.d.ts.map +1 -1
  63. package/lib/cjs/components-react/toolbar/PopupItemsPanel.js +1 -0
  64. package/lib/cjs/components-react/toolbar/PopupItemsPanel.js.map +1 -1
  65. package/lib/cjs/components-react/toolbar/Toolbar.d.ts +2 -2
  66. package/lib/cjs/components-react/toolbar/Toolbar.js +1 -1
  67. package/lib/cjs/components-react/toolbar/Toolbar.js.map +1 -1
  68. package/lib/cjs/components-react/toolbar/ToolbarWithOverflow.d.ts +2 -2
  69. package/lib/cjs/components-react/toolbar/ToolbarWithOverflow.d.ts.map +1 -1
  70. package/lib/cjs/components-react/toolbar/ToolbarWithOverflow.js +1 -1
  71. package/lib/cjs/components-react/toolbar/ToolbarWithOverflow.js.map +1 -1
  72. package/lib/cjs/components-react/toolbar/groupPanel/BackArrow.d.ts.map +1 -1
  73. package/lib/cjs/components-react/toolbar/groupPanel/BackArrow.js.map +1 -1
  74. package/lib/cjs/components-react/toolbar/groupPanel/Column.d.ts.map +1 -1
  75. package/lib/cjs/components-react/toolbar/groupPanel/Column.js.map +1 -1
  76. package/lib/cjs/components-react/toolbar/groupPanel/Columns.d.ts.map +1 -1
  77. package/lib/cjs/components-react/toolbar/groupPanel/Columns.js.map +1 -1
  78. package/lib/cjs/components-react/toolbar/groupPanel/Panel.d.ts.map +1 -1
  79. package/lib/cjs/components-react/toolbar/groupPanel/Panel.js.map +1 -1
  80. package/lib/cjs/components-react/toolbar/groupPanel/Title.d.ts.map +1 -1
  81. package/lib/cjs/components-react/toolbar/groupPanel/Title.js.map +1 -1
  82. package/lib/cjs/components-react/toolbar/groupPanel/tool/Expander.d.ts +1 -1
  83. package/lib/cjs/components-react/toolbar/groupPanel/tool/Expander.d.ts.map +1 -1
  84. package/lib/cjs/components-react/toolbar/groupPanel/tool/Expander.js.map +1 -1
  85. package/lib/cjs/components-react/toolbar/groupPanel/tool/Tool.d.ts.map +1 -1
  86. package/lib/cjs/components-react/toolbar/groupPanel/tool/Tool.js.map +1 -1
  87. package/lib/cjs/components-react/toolbar/useConditionalSynchedItems.js +2 -2
  88. package/lib/cjs/components-react/toolbar/useConditionalSynchedItems.js.map +1 -1
  89. package/lib/cjs/components-react/toolbar/useDragInteraction.d.ts.map +1 -1
  90. package/lib/cjs/components-react/toolbar/useDragInteraction.js +1 -0
  91. package/lib/cjs/components-react/toolbar/useDragInteraction.js.map +1 -1
  92. package/lib/cjs/components-react/tree/controlled/TreeHooks.d.ts.map +1 -1
  93. package/lib/cjs/components-react/tree/controlled/TreeHooks.js +1 -0
  94. package/lib/cjs/components-react/tree/controlled/TreeHooks.js.map +1 -1
  95. package/lib/cjs/components-react/tree/controlled/component/ControlledTree.d.ts.map +1 -1
  96. package/lib/cjs/components-react/tree/controlled/component/ControlledTree.js.map +1 -1
  97. package/lib/cjs/components-react/tree/controlled/component/NodeContent.d.ts.map +1 -1
  98. package/lib/cjs/components-react/tree/controlled/component/NodeContent.js +3 -1
  99. package/lib/cjs/components-react/tree/controlled/component/NodeContent.js.map +1 -1
  100. package/lib/cjs/components-react/tree/controlled/component/TreeNodeRenderer.d.ts.map +1 -1
  101. package/lib/cjs/components-react/tree/controlled/component/TreeNodeRenderer.js +6 -2
  102. package/lib/cjs/components-react/tree/controlled/component/TreeNodeRenderer.js.map +1 -1
  103. package/lib/cjs/components-react/tree/controlled/component/TreeRenderer.js +6 -1
  104. package/lib/cjs/components-react/tree/controlled/component/TreeRenderer.js.map +1 -1
  105. package/lib/cjs/components-react.d.ts +0 -1
  106. package/lib/cjs/components-react.d.ts.map +1 -1
  107. package/lib/cjs/components-react.js +0 -1
  108. package/lib/cjs/components-react.js.map +1 -1
  109. package/lib/esm/components-react/common/ImageRenderer.d.ts.map +1 -1
  110. package/lib/esm/components-react/common/ImageRenderer.js +5 -1
  111. package/lib/esm/components-react/common/ImageRenderer.js.map +1 -1
  112. package/lib/esm/components-react/datepicker/DateField.d.ts.map +1 -1
  113. package/lib/esm/components-react/datepicker/DateField.js.map +1 -1
  114. package/lib/esm/components-react/datepicker/DatePicker.d.ts +2 -2
  115. package/lib/esm/components-react/datepicker/DatePicker.js +1 -1
  116. package/lib/esm/components-react/datepicker/DatePicker.js.map +1 -1
  117. package/lib/esm/components-react/datepicker/DatePickerPopupButton.d.ts +2 -2
  118. package/lib/esm/components-react/datepicker/DatePickerPopupButton.d.ts.map +1 -1
  119. package/lib/esm/components-react/datepicker/DatePickerPopupButton.js +1 -1
  120. package/lib/esm/components-react/datepicker/DatePickerPopupButton.js.map +1 -1
  121. package/lib/esm/components-react/datepicker/IntlFormatter.d.ts +1 -1
  122. package/lib/esm/components-react/datepicker/IntlFormatter.js +1 -1
  123. package/lib/esm/components-react/datepicker/IntlFormatter.js.map +1 -1
  124. package/lib/esm/components-react/editors/EditorContainer.d.ts.map +1 -1
  125. package/lib/esm/components-react/editors/EditorContainer.js.map +1 -1
  126. package/lib/esm/components-react/editors/PopupButton.d.ts.map +1 -1
  127. package/lib/esm/components-react/editors/PopupButton.js +2 -1
  128. package/lib/esm/components-react/editors/PopupButton.js.map +1 -1
  129. package/lib/esm/components-react/favorite/FavoritePropertyList.d.ts.map +1 -1
  130. package/lib/esm/components-react/favorite/FavoritePropertyList.js.map +1 -1
  131. package/lib/esm/components-react/filter-builder/FilterBuilderState.d.ts +2 -2
  132. package/lib/esm/components-react/filter-builder/FilterBuilderState.d.ts.map +1 -1
  133. package/lib/esm/components-react/filter-builder/FilterBuilderState.js +20 -5
  134. package/lib/esm/components-react/filter-builder/FilterBuilderState.js.map +1 -1
  135. package/lib/esm/components-react/filtering/FilteringInput.d.ts.map +1 -1
  136. package/lib/esm/components-react/filtering/FilteringInput.js.map +1 -1
  137. package/lib/esm/components-react/filtering/ResultSelector.d.ts.map +1 -1
  138. package/lib/esm/components-react/filtering/ResultSelector.js.map +1 -1
  139. package/lib/esm/components-react/iconpicker/IconPickerButton.d.ts.map +1 -1
  140. package/lib/esm/components-react/iconpicker/IconPickerButton.js.map +1 -1
  141. package/lib/esm/components-react/inputs/ParsedInput.d.ts.map +1 -1
  142. package/lib/esm/components-react/inputs/ParsedInput.js.map +1 -1
  143. package/lib/esm/components-react/propertygrid/component/PropertyCategoryBlock.d.ts.map +1 -1
  144. package/lib/esm/components-react/propertygrid/component/PropertyCategoryBlock.js.map +1 -1
  145. package/lib/esm/components-react/propertygrid/component/PropertyGridCommons.d.ts.map +1 -1
  146. package/lib/esm/components-react/propertygrid/component/PropertyGridCommons.js.map +1 -1
  147. package/lib/esm/components-react/propertygrid/component/PropertyList.d.ts.map +1 -1
  148. package/lib/esm/components-react/propertygrid/component/PropertyList.js.map +1 -1
  149. package/lib/esm/components-react/toolbar/InternalToolbarComponent.d.ts +4 -3
  150. package/lib/esm/components-react/toolbar/InternalToolbarComponent.d.ts.map +1 -1
  151. package/lib/esm/components-react/toolbar/InternalToolbarComponent.js +10 -3
  152. package/lib/esm/components-react/toolbar/InternalToolbarComponent.js.map +1 -1
  153. package/lib/esm/components-react/toolbar/Item.d.ts.map +1 -1
  154. package/lib/esm/components-react/toolbar/Item.js.map +1 -1
  155. package/lib/esm/components-react/toolbar/ItemWrapper.d.ts.map +1 -1
  156. package/lib/esm/components-react/toolbar/ItemWrapper.js.map +1 -1
  157. package/lib/esm/components-react/toolbar/Items.d.ts.map +1 -1
  158. package/lib/esm/components-react/toolbar/Items.js.map +1 -1
  159. package/lib/esm/components-react/toolbar/Overflow.d.ts +2 -1
  160. package/lib/esm/components-react/toolbar/Overflow.d.ts.map +1 -1
  161. package/lib/esm/components-react/toolbar/Overflow.js.map +1 -1
  162. package/lib/esm/components-react/toolbar/OverflowPanel.d.ts.map +1 -1
  163. package/lib/esm/components-react/toolbar/OverflowPanel.js.map +1 -1
  164. package/lib/esm/components-react/toolbar/PopupItem.d.ts.map +1 -1
  165. package/lib/esm/components-react/toolbar/PopupItem.js +3 -1
  166. package/lib/esm/components-react/toolbar/PopupItem.js.map +1 -1
  167. package/lib/esm/components-react/toolbar/PopupItemWithDrag.js +1 -1
  168. package/lib/esm/components-react/toolbar/PopupItemWithDrag.js.map +1 -1
  169. package/lib/esm/components-react/toolbar/PopupItemsPanel.d.ts.map +1 -1
  170. package/lib/esm/components-react/toolbar/PopupItemsPanel.js +1 -0
  171. package/lib/esm/components-react/toolbar/PopupItemsPanel.js.map +1 -1
  172. package/lib/esm/components-react/toolbar/Toolbar.d.ts +2 -2
  173. package/lib/esm/components-react/toolbar/Toolbar.js +1 -1
  174. package/lib/esm/components-react/toolbar/Toolbar.js.map +1 -1
  175. package/lib/esm/components-react/toolbar/ToolbarWithOverflow.d.ts +2 -2
  176. package/lib/esm/components-react/toolbar/ToolbarWithOverflow.d.ts.map +1 -1
  177. package/lib/esm/components-react/toolbar/ToolbarWithOverflow.js +1 -1
  178. package/lib/esm/components-react/toolbar/ToolbarWithOverflow.js.map +1 -1
  179. package/lib/esm/components-react/toolbar/groupPanel/BackArrow.d.ts.map +1 -1
  180. package/lib/esm/components-react/toolbar/groupPanel/BackArrow.js.map +1 -1
  181. package/lib/esm/components-react/toolbar/groupPanel/Column.d.ts.map +1 -1
  182. package/lib/esm/components-react/toolbar/groupPanel/Column.js.map +1 -1
  183. package/lib/esm/components-react/toolbar/groupPanel/Columns.d.ts.map +1 -1
  184. package/lib/esm/components-react/toolbar/groupPanel/Columns.js.map +1 -1
  185. package/lib/esm/components-react/toolbar/groupPanel/Panel.d.ts.map +1 -1
  186. package/lib/esm/components-react/toolbar/groupPanel/Panel.js.map +1 -1
  187. package/lib/esm/components-react/toolbar/groupPanel/Title.d.ts.map +1 -1
  188. package/lib/esm/components-react/toolbar/groupPanel/Title.js.map +1 -1
  189. package/lib/esm/components-react/toolbar/groupPanel/tool/Expander.d.ts +1 -1
  190. package/lib/esm/components-react/toolbar/groupPanel/tool/Expander.d.ts.map +1 -1
  191. package/lib/esm/components-react/toolbar/groupPanel/tool/Expander.js.map +1 -1
  192. package/lib/esm/components-react/toolbar/groupPanel/tool/Tool.d.ts.map +1 -1
  193. package/lib/esm/components-react/toolbar/groupPanel/tool/Tool.js.map +1 -1
  194. package/lib/esm/components-react/toolbar/useConditionalSynchedItems.js +2 -2
  195. package/lib/esm/components-react/toolbar/useConditionalSynchedItems.js.map +1 -1
  196. package/lib/esm/components-react/toolbar/useDragInteraction.d.ts.map +1 -1
  197. package/lib/esm/components-react/toolbar/useDragInteraction.js +1 -0
  198. package/lib/esm/components-react/toolbar/useDragInteraction.js.map +1 -1
  199. package/lib/esm/components-react/tree/controlled/TreeHooks.d.ts.map +1 -1
  200. package/lib/esm/components-react/tree/controlled/TreeHooks.js +1 -0
  201. package/lib/esm/components-react/tree/controlled/TreeHooks.js.map +1 -1
  202. package/lib/esm/components-react/tree/controlled/component/ControlledTree.d.ts.map +1 -1
  203. package/lib/esm/components-react/tree/controlled/component/ControlledTree.js.map +1 -1
  204. package/lib/esm/components-react/tree/controlled/component/NodeContent.d.ts.map +1 -1
  205. package/lib/esm/components-react/tree/controlled/component/NodeContent.js +3 -1
  206. package/lib/esm/components-react/tree/controlled/component/NodeContent.js.map +1 -1
  207. package/lib/esm/components-react/tree/controlled/component/TreeNodeRenderer.d.ts.map +1 -1
  208. package/lib/esm/components-react/tree/controlled/component/TreeNodeRenderer.js +6 -2
  209. package/lib/esm/components-react/tree/controlled/component/TreeNodeRenderer.js.map +1 -1
  210. package/lib/esm/components-react/tree/controlled/component/TreeRenderer.js +6 -1
  211. package/lib/esm/components-react/tree/controlled/component/TreeRenderer.js.map +1 -1
  212. package/lib/esm/components-react.d.ts +0 -1
  213. package/lib/esm/components-react.d.ts.map +1 -1
  214. package/lib/esm/components-react.js +0 -1
  215. package/lib/esm/components-react.js.map +1 -1
  216. package/package.json +4 -4
@@ -20,7 +20,7 @@ function gatherSyncIds(eventIds, items) {
20
20
  else if (entry instanceof ConditionalStringValue) {
21
21
  entry.syncEventIds.forEach((eventId) => eventIds.add(eventId.toLowerCase()));
22
22
  }
23
- else if (ConditionalIconItem.isConditionalIconItem(entry)) {
23
+ else if (entry instanceof ConditionalIconItem) {
24
24
  entry.syncEventIds.forEach((eventId) => eventIds.add(eventId.toLowerCase()));
25
25
  }
26
26
  }
@@ -55,7 +55,7 @@ function refreshItems(items, eventIds) {
55
55
  ConditionalBooleanValue.refreshValue(entry, eventIds)) ||
56
56
  (entry instanceof ConditionalStringValue &&
57
57
  ConditionalStringValue.refreshValue(entry, eventIds)) ||
58
- (ConditionalIconItem.isConditionalIconItem(entry) &&
58
+ (entry instanceof ConditionalIconItem &&
59
59
  ConditionalIconItem.refreshValue(entry, eventIds))) {
60
60
  itemsUpdated = true;
61
61
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useConditionalSynchedItems.js","sourceRoot":"","sources":["../../../../src/components-react/toolbar/useConditionalSynchedItems.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nimport {\n ConditionalBooleanValue,\n ConditionalStringValue,\n} from \"@itwin/appui-abstract\";\nimport type { BeEvent } from \"@itwin/core-bentley\";\nimport { ConditionalIconItem } from \"@itwin/core-react\";\nimport * as React from \"react\";\n\n/**\n * From a list of ToolbarItem, recursively return the list of syncIds\n * that are relevant to every Conditional members used in the items.\n * @param eventIds Set to fill with syncIds\n * @param items ToolbarItems list to search through\n */\nfunction gatherSyncIds<T extends {} | { items: T[] }>(\n eventIds: Set<string>,\n items: readonly T[]\n) {\n for (const item of items) {\n for (const [, entry] of Object.entries(item)) {\n if (entry instanceof ConditionalBooleanValue) {\n entry.syncEventIds.forEach((eventId: string) =>\n eventIds.add(eventId.toLowerCase())\n );\n } else if (entry instanceof ConditionalStringValue) {\n entry.syncEventIds.forEach((eventId: string) =>\n eventIds.add(eventId.toLowerCase())\n );\n } else if (ConditionalIconItem.isConditionalIconItem(entry)) {\n entry.syncEventIds.forEach((eventId: string) =>\n eventIds.add(eventId.toLowerCase())\n );\n }\n }\n if (\"items\" in item) {\n gatherSyncIds(eventIds, item.items);\n }\n }\n}\n\n/**\n * Refresh all conditional values interested by the provided eventIds.\n * @param items List of ToolbarItems that may content Conditional properties.\n * @param eventIds Set of triggered eventIds.\n * @returns null if no updates occurred, or the provided items with updated values if ANY were updated.\n */\nfunction refreshItems<T extends {} | { items: T[] }>(\n items: readonly T[],\n eventIds: Set<string>\n): T[] | null {\n if (0 === eventIds.size) return null;\n let itemsUpdated = false;\n const updatedItems: T[] = [];\n\n for (const item of items) {\n let updatedItem = { ...item };\n if (\"items\" in updatedItem) {\n const childItems = refreshItems(updatedItem.items, eventIds);\n updatedItem = {\n ...updatedItem,\n items: childItems ?? updatedItem.items,\n };\n itemsUpdated ||= !!childItems;\n }\n\n for (const [, entry] of Object.entries(updatedItem)) {\n if (\n (entry instanceof ConditionalBooleanValue &&\n ConditionalBooleanValue.refreshValue(entry, eventIds)) ||\n (entry instanceof ConditionalStringValue &&\n ConditionalStringValue.refreshValue(entry, eventIds)) ||\n (ConditionalIconItem.isConditionalIconItem(entry) &&\n ConditionalIconItem.refreshValue(entry, eventIds))\n ) {\n itemsUpdated = true;\n }\n }\n updatedItems.push(updatedItem);\n }\n return itemsUpdated ? updatedItems : null;\n}\n\n/**\n * Register a listener on the syncUiEVent and updates all conditionals within the provided items.\n * @param items Items to keep up to date\n * @param syncUiEvent Event to attach to (because we don't depend on appui-react);\n * @returns Synched items\n * @internal\n */\nexport function useConditionalSynchedItems<T extends {} | { items: T[] }>(\n items: readonly T[],\n syncUiEvent: undefined | BeEvent<(args: { eventIds: Set<string> }) => void>\n) {\n const [eventSynchedItems, setEventSynchedItems] = React.useState<\n readonly T[]\n >([]);\n React.useEffect(() => {\n const ids = new Set<string>();\n gatherSyncIds(ids, items);\n setEventSynchedItems(refreshItems(items, ids) ?? items);\n const syncIdsOfInterest = [...ids.values()];\n return syncUiEvent?.addListener((args) => {\n if (0 === syncIdsOfInterest.length) return;\n\n if (\n syncIdsOfInterest.some((value: string): boolean =>\n args.eventIds.has(value.toLowerCase())\n )\n ) {\n setEventSynchedItems(\n (current) => refreshItems(current, args.eventIds) ?? current\n );\n }\n });\n }, [syncUiEvent, items]);\n return eventSynchedItems;\n}\n"]}
1
+ {"version":3,"file":"useConditionalSynchedItems.js","sourceRoot":"","sources":["../../../../src/components-react/toolbar/useConditionalSynchedItems.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nimport {\n ConditionalBooleanValue,\n ConditionalStringValue,\n} from \"@itwin/appui-abstract\";\nimport type { BeEvent } from \"@itwin/core-bentley\";\nimport { ConditionalIconItem } from \"@itwin/core-react\";\nimport * as React from \"react\";\n\n/**\n * From a list of ToolbarItem, recursively return the list of syncIds\n * that are relevant to every Conditional members used in the items.\n * @param eventIds Set to fill with syncIds\n * @param items ToolbarItems list to search through\n */\nfunction gatherSyncIds<T extends {} | { items: T[] }>(\n eventIds: Set<string>,\n items: readonly T[]\n) {\n for (const item of items) {\n for (const [, entry] of Object.entries(item)) {\n if (entry instanceof ConditionalBooleanValue) {\n entry.syncEventIds.forEach((eventId: string) =>\n eventIds.add(eventId.toLowerCase())\n );\n } else if (entry instanceof ConditionalStringValue) {\n entry.syncEventIds.forEach((eventId: string) =>\n eventIds.add(eventId.toLowerCase())\n );\n } else if (entry instanceof ConditionalIconItem) {\n entry.syncEventIds.forEach((eventId: string) =>\n eventIds.add(eventId.toLowerCase())\n );\n }\n }\n if (\"items\" in item) {\n gatherSyncIds(eventIds, item.items);\n }\n }\n}\n\n/**\n * Refresh all conditional values interested by the provided eventIds.\n * @param items List of ToolbarItems that may content Conditional properties.\n * @param eventIds Set of triggered eventIds.\n * @returns null if no updates occurred, or the provided items with updated values if ANY were updated.\n */\nfunction refreshItems<T extends {} | { items: T[] }>(\n items: readonly T[],\n eventIds: Set<string>\n): T[] | null {\n if (0 === eventIds.size) return null;\n let itemsUpdated = false;\n const updatedItems: T[] = [];\n\n for (const item of items) {\n let updatedItem = { ...item };\n if (\"items\" in updatedItem) {\n const childItems = refreshItems(updatedItem.items, eventIds);\n updatedItem = {\n ...updatedItem,\n items: childItems ?? updatedItem.items,\n };\n itemsUpdated ||= !!childItems;\n }\n\n for (const [, entry] of Object.entries(updatedItem)) {\n if (\n (entry instanceof ConditionalBooleanValue &&\n ConditionalBooleanValue.refreshValue(entry, eventIds)) ||\n (entry instanceof ConditionalStringValue &&\n ConditionalStringValue.refreshValue(entry, eventIds)) ||\n (entry instanceof ConditionalIconItem &&\n ConditionalIconItem.refreshValue(entry, eventIds))\n ) {\n itemsUpdated = true;\n }\n }\n updatedItems.push(updatedItem);\n }\n return itemsUpdated ? updatedItems : null;\n}\n\n/**\n * Register a listener on the syncUiEVent and updates all conditionals within the provided items.\n * @param items Items to keep up to date\n * @param syncUiEvent Event to attach to (because we don't depend on appui-react);\n * @returns Synched items\n * @internal\n */\nexport function useConditionalSynchedItems<T extends {} | { items: T[] }>(\n items: readonly T[],\n syncUiEvent: undefined | BeEvent<(args: { eventIds: Set<string> }) => void>\n) {\n const [eventSynchedItems, setEventSynchedItems] = React.useState<\n readonly T[]\n >([]);\n React.useEffect(() => {\n const ids = new Set<string>();\n gatherSyncIds(ids, items);\n setEventSynchedItems(refreshItems(items, ids) ?? items);\n const syncIdsOfInterest = [...ids.values()];\n return syncUiEvent?.addListener((args) => {\n if (0 === syncIdsOfInterest.length) return;\n\n if (\n syncIdsOfInterest.some((value: string): boolean =>\n args.eventIds.has(value.toLowerCase())\n )\n ) {\n setEventSynchedItems(\n (current) => refreshItems(current, args.eventIds) ?? current\n );\n }\n });\n }, [syncUiEvent, items]);\n return eventSynchedItems;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"useDragInteraction.d.ts","sourceRoot":"","sources":["../../../../src/components-react/toolbar/useDragInteraction.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AA+D/B;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,CAAC,EAAE,MAAM,IAAI,EACpB,WAAW,CAAC,EAAE,MAAM,IAAI;2BA0BlB,kBAAkB;;EA6BzB"}
1
+ {"version":3,"file":"useDragInteraction.d.ts","sourceRoot":"","sources":["../../../../src/components-react/toolbar/useDragInteraction.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAgE/B;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,CAAC,EAAE,MAAM,IAAI,EACpB,WAAW,CAAC,EAAE,MAAM,IAAI;2BA0BlB,kBAAkB;;EA6BzB"}
@@ -25,6 +25,7 @@ function useDrag(args) {
25
25
  return { handlePointerMove };
26
26
  }
27
27
  function useLongPress(args) {
28
+ // eslint-disable-next-line deprecation/deprecation
28
29
  const longPressTimer = React.useRef(new Timer(500));
29
30
  const handlePointerDown = React.useCallback(() => {
30
31
  longPressTimer.current.start();
@@ -1 +1 @@
1
- {"version":3,"file":"useDragInteraction.js","sourceRoot":"","sources":["../../../../src/components-react/toolbar/useDragInteraction.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Toolbar\n */\n\nimport * as React from \"react\";\nimport { Point, Timer } from \"@itwin/core-react\";\n\n/** @internal */\nconst getDragDistance = (from: Point, to: Point) => {\n return from.getDistanceTo(to);\n};\n\ninterface UseDragArgs {\n readonly initialPosition: React.MutableRefObject<Point | undefined>;\n readonly onDrag: () => void;\n}\n\nfunction useDrag(args: UseDragArgs) {\n const { initialPosition, onDrag } = args;\n const handlePointerMove = React.useCallback(\n (e: PointerEvent) => {\n if (!initialPosition.current) return;\n const newPosition = new Point(e.clientX, e.clientY);\n const dragDistance = getDragDistance(\n initialPosition.current,\n newPosition\n );\n if (dragDistance < 20) return;\n onDrag();\n },\n [initialPosition, onDrag]\n );\n return { handlePointerMove };\n}\n\ninterface UseLongPressArgs {\n readonly initialPosition: React.RefObject<Point | undefined>;\n readonly onLongPress: () => void;\n}\n\nfunction useLongPress(args: UseLongPressArgs) {\n const longPressTimer = React.useRef(new Timer(500));\n const handlePointerDown = React.useCallback(() => {\n longPressTimer.current.start();\n }, []);\n const handlePointerUp = React.useCallback(() => {\n longPressTimer.current.stop();\n }, []);\n\n const handlePointerMove = React.useCallback(\n (e: PointerEvent) => {\n if (!args.initialPosition.current) return;\n const newPosition = new Point(e.clientX, e.clientY);\n const distance = args.initialPosition.current.getDistanceTo(newPosition);\n distance >= 10 && longPressTimer.current.stop();\n },\n [args.initialPosition]\n );\n React.useEffect(() => {\n longPressTimer.current.setOnExecute(args.onLongPress);\n return () => {\n longPressTimer.current.setOnExecute(undefined); // eslint-disable-line react-hooks/exhaustive-deps\n };\n }, [args.onLongPress]);\n return { handlePointerDown, handlePointerMove, handlePointerUp };\n}\n\n/**\n * Hook used on expandable item that require drag or long press to open\n * @param onClick Function called when item is clicked.\n * @param onOpenPanel Function called when item is dragged or long pressed to open panel.\n * @public\n */\nexport function useDragInteraction(\n onClick?: () => void,\n onOpenPanel?: () => void\n) {\n const initialPosition = React.useRef<Point | undefined>(undefined);\n const skipClick = React.useRef<boolean>(false);\n const handleOpenPanel = React.useCallback(() => {\n initialPosition.current = undefined;\n skipClick.current = true;\n onOpenPanel && onOpenPanel();\n }, [onOpenPanel]);\n const { handlePointerMove: dragPointerMove } = useDrag({\n initialPosition,\n onDrag: handleOpenPanel,\n });\n const {\n handlePointerDown: longPressPointerDown,\n handlePointerMove: longPressPointerMove,\n handlePointerUp: longPressPointerUp,\n } = useLongPress({\n initialPosition,\n onLongPress: handleOpenPanel,\n });\n const handleButtonClick = React.useCallback(() => {\n if (skipClick.current) return;\n onClick && onClick();\n }, [onClick]);\n const handlePointerDown = React.useCallback(\n (e: React.PointerEvent) => {\n e.target instanceof Element &&\n e.target.releasePointerCapture(e.pointerId);\n initialPosition.current = new Point(e.clientX, e.clientY);\n skipClick.current = false;\n longPressPointerDown();\n },\n [longPressPointerDown]\n );\n const handlePointerMove = React.useCallback(\n (e: PointerEvent) => {\n dragPointerMove(e);\n longPressPointerMove(e);\n },\n [dragPointerMove, longPressPointerMove]\n );\n const handlePointerUp = React.useCallback(() => {\n initialPosition.current = undefined;\n longPressPointerUp();\n }, [longPressPointerUp]);\n React.useEffect(() => {\n document.addEventListener(\"pointermove\", handlePointerMove);\n document.addEventListener(\"pointerup\", handlePointerUp);\n return () => {\n document.removeEventListener(\"pointermove\", handlePointerMove);\n document.removeEventListener(\"pointerup\", handlePointerUp);\n };\n }, [handlePointerMove, handlePointerUp]);\n return { handlePointerDown, handleButtonClick };\n}\n"]}
1
+ {"version":3,"file":"useDragInteraction.js","sourceRoot":"","sources":["../../../../src/components-react/toolbar/useDragInteraction.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Toolbar\n */\n\nimport * as React from \"react\";\nimport { Point, Timer } from \"@itwin/core-react\";\n\n/** @internal */\nconst getDragDistance = (from: Point, to: Point) => {\n return from.getDistanceTo(to);\n};\n\ninterface UseDragArgs {\n readonly initialPosition: React.MutableRefObject<Point | undefined>;\n readonly onDrag: () => void;\n}\n\nfunction useDrag(args: UseDragArgs) {\n const { initialPosition, onDrag } = args;\n const handlePointerMove = React.useCallback(\n (e: PointerEvent) => {\n if (!initialPosition.current) return;\n const newPosition = new Point(e.clientX, e.clientY);\n const dragDistance = getDragDistance(\n initialPosition.current,\n newPosition\n );\n if (dragDistance < 20) return;\n onDrag();\n },\n [initialPosition, onDrag]\n );\n return { handlePointerMove };\n}\n\ninterface UseLongPressArgs {\n readonly initialPosition: React.RefObject<Point | undefined>;\n readonly onLongPress: () => void;\n}\n\nfunction useLongPress(args: UseLongPressArgs) {\n // eslint-disable-next-line deprecation/deprecation\n const longPressTimer = React.useRef(new Timer(500));\n const handlePointerDown = React.useCallback(() => {\n longPressTimer.current.start();\n }, []);\n const handlePointerUp = React.useCallback(() => {\n longPressTimer.current.stop();\n }, []);\n\n const handlePointerMove = React.useCallback(\n (e: PointerEvent) => {\n if (!args.initialPosition.current) return;\n const newPosition = new Point(e.clientX, e.clientY);\n const distance = args.initialPosition.current.getDistanceTo(newPosition);\n distance >= 10 && longPressTimer.current.stop();\n },\n [args.initialPosition]\n );\n React.useEffect(() => {\n longPressTimer.current.setOnExecute(args.onLongPress);\n return () => {\n longPressTimer.current.setOnExecute(undefined); // eslint-disable-line react-hooks/exhaustive-deps\n };\n }, [args.onLongPress]);\n return { handlePointerDown, handlePointerMove, handlePointerUp };\n}\n\n/**\n * Hook used on expandable item that require drag or long press to open\n * @param onClick Function called when item is clicked.\n * @param onOpenPanel Function called when item is dragged or long pressed to open panel.\n * @public\n */\nexport function useDragInteraction(\n onClick?: () => void,\n onOpenPanel?: () => void\n) {\n const initialPosition = React.useRef<Point | undefined>(undefined);\n const skipClick = React.useRef<boolean>(false);\n const handleOpenPanel = React.useCallback(() => {\n initialPosition.current = undefined;\n skipClick.current = true;\n onOpenPanel && onOpenPanel();\n }, [onOpenPanel]);\n const { handlePointerMove: dragPointerMove } = useDrag({\n initialPosition,\n onDrag: handleOpenPanel,\n });\n const {\n handlePointerDown: longPressPointerDown,\n handlePointerMove: longPressPointerMove,\n handlePointerUp: longPressPointerUp,\n } = useLongPress({\n initialPosition,\n onLongPress: handleOpenPanel,\n });\n const handleButtonClick = React.useCallback(() => {\n if (skipClick.current) return;\n onClick && onClick();\n }, [onClick]);\n const handlePointerDown = React.useCallback(\n (e: React.PointerEvent) => {\n e.target instanceof Element &&\n e.target.releasePointerCapture(e.pointerId);\n initialPosition.current = new Point(e.clientX, e.clientY);\n skipClick.current = false;\n longPressPointerDown();\n },\n [longPressPointerDown]\n );\n const handlePointerMove = React.useCallback(\n (e: PointerEvent) => {\n dragPointerMove(e);\n longPressPointerMove(e);\n },\n [dragPointerMove, longPressPointerMove]\n );\n const handlePointerUp = React.useCallback(() => {\n initialPosition.current = undefined;\n longPressPointerUp();\n }, [longPressPointerUp]);\n React.useEffect(() => {\n document.addEventListener(\"pointermove\", handlePointerMove);\n document.addEventListener(\"pointerup\", handlePointerUp);\n return () => {\n document.removeEventListener(\"pointermove\", handlePointerMove);\n document.removeEventListener(\"pointerup\", handlePointerUp);\n };\n }, [handlePointerMove, handlePointerUp]);\n return { handlePointerDown, handleButtonClick };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"TreeHooks.d.ts","sourceRoot":"","sources":["../../../../../src/components-react/tree/controlled/TreeHooks.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvE;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,eAAe,GAAG,SAAS,CAUpE;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,aAAa,SAAS,gBAAgB,EACtE,YAAY,EAAE,aAAa,EAC3B,WAAW,EAAE,eAAe,iCAM7B;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,aAAa,SAAS,gBAAgB,EAC3E,YAAY,EAAE,aAAa,EAC3B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,eAAe,sCAM7B;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,gBAAgB,mBAGhE;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,cAAc,SAAS,gBAAgB,EAC1E,eAAe,EAAE,CAAC,MAAM,cAAc,CAAC,GAAG,sBAAsB,oBAQjE;AAED;;;;;;;;;GASG;AACH,wBAAgB,8BAA8B,CAC5C,cAAc,SAAS,gBAAgB,EACvC,eAAe,EAAE,CAAC,MAAM,cAAc,CAAC,GAAG,sBAAsB,gCAMjE"}
1
+ {"version":3,"file":"TreeHooks.d.ts","sourceRoot":"","sources":["../../../../../src/components-react/tree/controlled/TreeHooks.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvE;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,eAAe,GAAG,SAAS,CAUpE;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,aAAa,SAAS,gBAAgB,EACtE,YAAY,EAAE,aAAa,EAC3B,WAAW,EAAE,eAAe,iCAM7B;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,aAAa,SAAS,gBAAgB,EAC3E,YAAY,EAAE,aAAa,EAC3B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,eAAe,sCAM7B;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,gBAAgB,mBAGhE;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,cAAc,SAAS,gBAAgB,EAC1E,eAAe,EAAE,CAAC,MAAM,cAAc,CAAC,GAAG,sBAAsB,oBAQjE;AAED;;;;;;;;;GASG;AACH,wBAAgB,8BAA8B,CAC5C,cAAc,SAAS,gBAAgB,EACvC,eAAe,EAAE,CAAC,MAAM,cAAc,CAAC,GAAG,sBAAsB,gCAOjE"}
@@ -91,6 +91,7 @@ export function useControlledTreeEventsHandler(factoryOrParams) {
91
91
  return factoryOrParams();
92
92
  return new TreeEventHandler(factoryOrParams);
93
93
  }, [factoryOrParams]);
94
+ // eslint-disable-next-line deprecation/deprecation
94
95
  return useOptionalDisposable(factory);
95
96
  }
96
97
  //# sourceMappingURL=TreeHooks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TreeHooks.js","sourceRoot":"","sources":["../../../../../src/components-react/tree/controlled/TreeHooks.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAGzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvE;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,WAA4B;IACvD,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACnC,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACvC,oGAAoG;QACpG,sDAAsD;QACtD,WAAW,EAAE,CAAC;QACd,OAAO,WAAW,CAAC,cAAc,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IAC7D,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAClB,OAAO,WAAW,CAAC,QAAQ,EAAE,CAAC;AAChC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,YAA2B,EAC3B,WAA4B;IAE5B,OAAO,OAAO,CACZ,GAAG,EAAE,CAAC,IAAI,cAAc,CAAC,YAAY,EAAE,WAAW,CAAC,EACnD,CAAC,YAAY,EAAE,WAAW,CAAC,CAC5B,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CACpC,YAA2B,EAC3B,QAAgB,EAChB,WAA4B;IAE5B,OAAO,OAAO,CACZ,GAAG,EAAE,CAAC,IAAI,mBAAmB,CAAC,YAAY,EAAE,WAAW,EAAE,QAAQ,CAAC,EAClE,CAAC,YAAY,EAAE,WAAW,EAAE,QAAQ,CAAC,CACtC,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,YAA8B;IAC/D,0HAA0H;IAC1H,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,eAAe,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,kDAAkD;AACjH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB,CAClC,eAAgE;IAEhE,MAAM,OAAO,GAAG,WAAW,CAAC,GAAqB,EAAE;QACjD,IAAI,OAAO,eAAe,KAAK,UAAU;YAAE,OAAO,eAAe,EAAE,CAAC;QACpE,OAAO,IAAI,gBAAgB,CAAC,eAAe,CAAC,CAAC;IAC/C,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IACtB,mDAAmD;IACnD,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,8BAA8B,CAE5C,eAAgE;IAChE,MAAM,OAAO,GAAG,WAAW,CAAC,GAAqB,EAAE;QACjD,IAAI,OAAO,eAAe,KAAK,UAAU;YAAE,OAAO,eAAe,EAAE,CAAC;QACpE,OAAO,IAAI,gBAAgB,CAAC,eAAe,CAAC,CAAC;IAC/C,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IACtB,OAAO,qBAAqB,CAAC,OAAO,CAAC,CAAC;AACxC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tree\n */\n\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { useDisposable, useOptionalDisposable } from \"@itwin/core-react\";\nimport type { TreeDataProvider } from \"../TreeDataProvider\";\nimport type { TreeEventHandlerParams } from \"./TreeEventHandler\";\nimport { TreeEventHandler } from \"./TreeEventHandler\";\nimport type { TreeModel } from \"./TreeModel\";\nimport { TreeModelSource } from \"./TreeModelSource\";\nimport { PagedTreeNodeLoader, TreeNodeLoader } from \"./TreeNodeLoader\";\n\n/**\n * React hook that returns an immutable `TreeModel` whenever it changes in the given\n * `TreeModelSource`.\n *\n * @public\n */\nexport function useTreeModel(modelSource: TreeModelSource): TreeModel {\n const [_, setState] = useState({});\n useEffect(() => {\n const forceRender = () => setState({});\n // force one more render when `modelSource` changes in case there were some tree model modifications\n // before listener is added on `onModelChanged` event.\n forceRender();\n return modelSource.onModelChanged.addListener(forceRender);\n }, [modelSource]);\n return modelSource.getModel();\n}\n\n/**\n * Custom hook which creates a nodes' loader using the supplied data provider and model source. The\n * loader pulls nodes from the data provider and puts them into the model source.\n *\n * @public\n */\nexport function useTreeNodeLoader<TDataProvider extends TreeDataProvider>(\n dataProvider: TDataProvider,\n modelSource: TreeModelSource\n) {\n return useMemo(\n () => new TreeNodeLoader(dataProvider, modelSource),\n [dataProvider, modelSource]\n );\n}\n\n/**\n * Custom hook which creates a paging nodes' loader using the supplied data provider and model source. The loader pulls\n * nodes from the data provider and puts them into the model source.\n * @public\n */\nexport function usePagedTreeNodeLoader<TDataProvider extends TreeDataProvider>(\n dataProvider: TDataProvider,\n pageSize: number,\n modelSource: TreeModelSource\n) {\n return useMemo(\n () => new PagedTreeNodeLoader(dataProvider, modelSource, pageSize),\n [dataProvider, modelSource, pageSize]\n );\n}\n\n/**\n * Custom hook which creates a `TreeModelSource`.\n *\n * @note The model source has no direct dependency on the data provider, but we want a fresh model\n * source whenever the data provider changes - that's the reason the hook takes a data provider.\n *\n * @public\n */\nexport function useTreeModelSource(dataProvider: TreeDataProvider) {\n // need to create new model source every time data provider changes although it does not need data provider to be created.\n return useMemo(() => new TreeModelSource(), [dataProvider]); // eslint-disable-line react-hooks/exhaustive-deps\n}\n\n/**\n * Custom hook which creates and takes care of disposing a TreeEventsHandler. The input is either a factory method\n * for a custom `TreeEventHandler` implementation or parameters for the default implementation.\n *\n * @note Caller must ensure `factoryOrParams` changes only when a new handler needs to be created. `useCallback` or `useMemo` can\n * be used for that purpose based on whether the input is a factory function or params object.\n *\n * @public\n * @deprecated in 4.9.0. This hook does not work correctly in React 18 Strict mode. Use [[useControlledTreeEventsHandler]] instead.\n */\nexport function useTreeEventsHandler<TEventsHandler extends TreeEventHandler>(\n factoryOrParams: (() => TEventsHandler) | TreeEventHandlerParams\n) {\n const factory = useCallback((): TreeEventHandler => {\n if (typeof factoryOrParams === \"function\") return factoryOrParams();\n return new TreeEventHandler(factoryOrParams);\n }, [factoryOrParams]);\n // eslint-disable-next-line deprecation/deprecation\n return useDisposable(factory);\n}\n\n/**\n * Custom hook which creates and takes care of disposing a [[TreeEventHandler]]. The input is either a factory method\n * for a custom [[TreeEventHandler]] implementation or parameters for the default implementation.\n *\n * @note Caller must ensure `factoryOrParams` changes only when a new handler needs to be created. `useCallback` or `useMemo` can\n * be used for that purpose based on whether the input is a factory function or params object.\n *\n * @returns `undefined` on first render and a valid [[TreeEventHandler]] on all subsequent renders.\n * @public\n */\nexport function useControlledTreeEventsHandler<\n TEventsHandler extends TreeEventHandler\n>(factoryOrParams: (() => TEventsHandler) | TreeEventHandlerParams) {\n const factory = useCallback((): TreeEventHandler => {\n if (typeof factoryOrParams === \"function\") return factoryOrParams();\n return new TreeEventHandler(factoryOrParams);\n }, [factoryOrParams]);\n return useOptionalDisposable(factory);\n}\n"]}
1
+ {"version":3,"file":"TreeHooks.js","sourceRoot":"","sources":["../../../../../src/components-react/tree/controlled/TreeHooks.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAGzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvE;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,WAA4B;IACvD,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACnC,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACvC,oGAAoG;QACpG,sDAAsD;QACtD,WAAW,EAAE,CAAC;QACd,OAAO,WAAW,CAAC,cAAc,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IAC7D,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAClB,OAAO,WAAW,CAAC,QAAQ,EAAE,CAAC;AAChC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,YAA2B,EAC3B,WAA4B;IAE5B,OAAO,OAAO,CACZ,GAAG,EAAE,CAAC,IAAI,cAAc,CAAC,YAAY,EAAE,WAAW,CAAC,EACnD,CAAC,YAAY,EAAE,WAAW,CAAC,CAC5B,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CACpC,YAA2B,EAC3B,QAAgB,EAChB,WAA4B;IAE5B,OAAO,OAAO,CACZ,GAAG,EAAE,CAAC,IAAI,mBAAmB,CAAC,YAAY,EAAE,WAAW,EAAE,QAAQ,CAAC,EAClE,CAAC,YAAY,EAAE,WAAW,EAAE,QAAQ,CAAC,CACtC,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,YAA8B;IAC/D,0HAA0H;IAC1H,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,eAAe,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,kDAAkD;AACjH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB,CAClC,eAAgE;IAEhE,MAAM,OAAO,GAAG,WAAW,CAAC,GAAqB,EAAE;QACjD,IAAI,OAAO,eAAe,KAAK,UAAU;YAAE,OAAO,eAAe,EAAE,CAAC;QACpE,OAAO,IAAI,gBAAgB,CAAC,eAAe,CAAC,CAAC;IAC/C,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IACtB,mDAAmD;IACnD,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,8BAA8B,CAE5C,eAAgE;IAChE,MAAM,OAAO,GAAG,WAAW,CAAC,GAAqB,EAAE;QACjD,IAAI,OAAO,eAAe,KAAK,UAAU;YAAE,OAAO,eAAe,EAAE,CAAC;QACpE,OAAO,IAAI,gBAAgB,CAAC,eAAe,CAAC,CAAC;IAC/C,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IACtB,mDAAmD;IACnD,OAAO,qBAAqB,CAAC,OAAO,CAAC,CAAC;AACxC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tree\n */\n\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { useDisposable, useOptionalDisposable } from \"@itwin/core-react\";\nimport type { TreeDataProvider } from \"../TreeDataProvider\";\nimport type { TreeEventHandlerParams } from \"./TreeEventHandler\";\nimport { TreeEventHandler } from \"./TreeEventHandler\";\nimport type { TreeModel } from \"./TreeModel\";\nimport { TreeModelSource } from \"./TreeModelSource\";\nimport { PagedTreeNodeLoader, TreeNodeLoader } from \"./TreeNodeLoader\";\n\n/**\n * React hook that returns an immutable `TreeModel` whenever it changes in the given\n * `TreeModelSource`.\n *\n * @public\n */\nexport function useTreeModel(modelSource: TreeModelSource): TreeModel {\n const [_, setState] = useState({});\n useEffect(() => {\n const forceRender = () => setState({});\n // force one more render when `modelSource` changes in case there were some tree model modifications\n // before listener is added on `onModelChanged` event.\n forceRender();\n return modelSource.onModelChanged.addListener(forceRender);\n }, [modelSource]);\n return modelSource.getModel();\n}\n\n/**\n * Custom hook which creates a nodes' loader using the supplied data provider and model source. The\n * loader pulls nodes from the data provider and puts them into the model source.\n *\n * @public\n */\nexport function useTreeNodeLoader<TDataProvider extends TreeDataProvider>(\n dataProvider: TDataProvider,\n modelSource: TreeModelSource\n) {\n return useMemo(\n () => new TreeNodeLoader(dataProvider, modelSource),\n [dataProvider, modelSource]\n );\n}\n\n/**\n * Custom hook which creates a paging nodes' loader using the supplied data provider and model source. The loader pulls\n * nodes from the data provider and puts them into the model source.\n * @public\n */\nexport function usePagedTreeNodeLoader<TDataProvider extends TreeDataProvider>(\n dataProvider: TDataProvider,\n pageSize: number,\n modelSource: TreeModelSource\n) {\n return useMemo(\n () => new PagedTreeNodeLoader(dataProvider, modelSource, pageSize),\n [dataProvider, modelSource, pageSize]\n );\n}\n\n/**\n * Custom hook which creates a `TreeModelSource`.\n *\n * @note The model source has no direct dependency on the data provider, but we want a fresh model\n * source whenever the data provider changes - that's the reason the hook takes a data provider.\n *\n * @public\n */\nexport function useTreeModelSource(dataProvider: TreeDataProvider) {\n // need to create new model source every time data provider changes although it does not need data provider to be created.\n return useMemo(() => new TreeModelSource(), [dataProvider]); // eslint-disable-line react-hooks/exhaustive-deps\n}\n\n/**\n * Custom hook which creates and takes care of disposing a TreeEventsHandler. The input is either a factory method\n * for a custom `TreeEventHandler` implementation or parameters for the default implementation.\n *\n * @note Caller must ensure `factoryOrParams` changes only when a new handler needs to be created. `useCallback` or `useMemo` can\n * be used for that purpose based on whether the input is a factory function or params object.\n *\n * @public\n * @deprecated in 4.9.0. This hook does not work correctly in React 18 Strict mode. Use [[useControlledTreeEventsHandler]] instead.\n */\nexport function useTreeEventsHandler<TEventsHandler extends TreeEventHandler>(\n factoryOrParams: (() => TEventsHandler) | TreeEventHandlerParams\n) {\n const factory = useCallback((): TreeEventHandler => {\n if (typeof factoryOrParams === \"function\") return factoryOrParams();\n return new TreeEventHandler(factoryOrParams);\n }, [factoryOrParams]);\n // eslint-disable-next-line deprecation/deprecation\n return useDisposable(factory);\n}\n\n/**\n * Custom hook which creates and takes care of disposing a [[TreeEventHandler]]. The input is either a factory method\n * for a custom [[TreeEventHandler]] implementation or parameters for the default implementation.\n *\n * @note Caller must ensure `factoryOrParams` changes only when a new handler needs to be created. `useCallback` or `useMemo` can\n * be used for that purpose based on whether the input is a factory function or params object.\n *\n * @returns `undefined` on first render and a valid [[TreeEventHandler]] on all subsequent renders.\n * @public\n */\nexport function useControlledTreeEventsHandler<\n TEventsHandler extends TreeEventHandler\n>(factoryOrParams: (() => TEventsHandler) | TreeEventHandlerParams) {\n const factory = useCallback((): TreeEventHandler => {\n if (typeof factoryOrParams === \"function\") return factoryOrParams();\n return new TreeEventHandler(factoryOrParams);\n }, [factoryOrParams]);\n // eslint-disable-next-line deprecation/deprecation\n return useOptionalDisposable(factory);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ControlledTree.d.ts","sourceRoot":"","sources":["../../../../../../src/components-react/tree/controlled/component/ControlledTree.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EACV,SAAS,EAIV,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAK5E;;;GAGG;AACH,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IACtD,oCAAoC;IACpC,KAAK,EAAE,SAAS,CAAC;IACjB,iEAAiE;IACjE,UAAU,EAAE,eAAe,CAAC;IAC5B,2BAA2B;IAC3B,aAAa,EAAE,UAAU,CAAC;IAC1B,wCAAwC;IACxC,aAAa,EAAE,aAAa,CAAC;IAC7B;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,qBAAqB,CAAC,EAAE,sBAAsB,CAAC;IAC/C,mDAAmD;IACnD,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,KAAK,CAAC,YAAY,CAAC;IAChE,8DAA8D;IAC9D,eAAe,CAAC,EAAE,MAAM,KAAK,CAAC,YAAY,CAAC;IAC3C,wEAAwE;IACxE,cAAc,CAAC,EAAE,MAAM,KAAK,CAAC,YAAY,CAAC;IAC1C,kEAAkE;IAClE,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACtD,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,qBA2DxD;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,CAAC,SAAS,OAAO;;;;EAE/D"}
1
+ {"version":3,"file":"ControlledTree.d.ts","sourceRoot":"","sources":["../../../../../../src/components-react/tree/controlled/component/ControlledTree.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EACV,SAAS,EAIV,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAK5E;;;GAGG;AAEH,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IACtD,oCAAoC;IACpC,KAAK,EAAE,SAAS,CAAC;IACjB,iEAAiE;IACjE,UAAU,EAAE,eAAe,CAAC;IAC5B,2BAA2B;IAC3B,aAAa,EAAE,UAAU,CAAC;IAC1B,wCAAwC;IACxC,aAAa,EAAE,aAAa,CAAC;IAC7B;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,qBAAqB,CAAC,EAAE,sBAAsB,CAAC;IAC/C,mDAAmD;IACnD,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,KAAK,CAAC,YAAY,CAAC;IAChE,8DAA8D;IAC9D,eAAe,CAAC,EAAE,MAAM,KAAK,CAAC,YAAY,CAAC;IAC3C,wEAAwE;IACxE,cAAc,CAAC,EAAE,MAAM,KAAK,CAAC,YAAY,CAAC;IAC1C,kEAAkE;IAClE,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACtD,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,qBA2DxD;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,CAAC,SAAS,OAAO;;;;EAE/D"}
@@ -1 +1 @@
1
- {"version":3,"file":"ControlledTree.js","sourceRoot":"","sources":["../../../../../../src/components-react/tree/controlled/component/ControlledTree.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tree\n */\n\nimport * as React from \"react\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport { FillCentered } from \"@itwin/core-react\";\nimport { DelayedSpinner } from \"../../../common/DelayedSpinner\";\nimport type { SelectionMode } from \"../../../common/selection/SelectionModes\";\nimport type { HighlightableTreeProps } from \"../../HighlightingEngine\";\nimport { TreeImageLoader } from \"../../ImageLoader\";\nimport { TreeEventDispatcher } from \"../TreeEventDispatcher\";\nimport type { TreeEvents } from \"../TreeEvents\";\nimport type {\n TreeModel,\n TreeModelNode,\n TreeModelNodePlaceholder,\n VisibleTreeNodes,\n} from \"../TreeModel\";\nimport { computeVisibleNodes, isTreeModelNode } from \"../TreeModel\";\nimport type { ITreeNodeLoader } from \"../TreeNodeLoader\";\nimport type { TreeNodeRendererProps } from \"./TreeNodeRenderer\";\nimport { TreeNodeRenderer } from \"./TreeNodeRenderer\";\nimport type { RenderedItemsRange, TreeRendererProps } from \"./TreeRenderer\";\nimport { TreeRenderer } from \"./TreeRenderer\";\nimport { useElementsScrollStorage } from \"../../../common/UseElementsScrollStorage\";\nimport { useTranslation } from \"../../../useTranslation\";\n\n/**\n * Properties for [[ControlledTree]]\n * @public\n */\nexport interface ControlledTreeProps extends CommonProps {\n /** Model of the tree to display. */\n model: TreeModel;\n /** Node loader used to load root nodes and placeholder nodes. */\n nodeLoader: ITreeNodeLoader;\n /** Tree events handler. */\n eventsHandler: TreeEvents;\n /** Mode of nodes' selection in tree. */\n selectionMode: SelectionMode;\n /**\n * Specifies whether to show node description or not. It is used in default node renderer and to determine node height.\n * If custom node renderer and node height callbacks are used it does nothing.\n */\n descriptionsEnabled?: boolean;\n /**\n * Specifies whether to show node icon or not. It is used in default node renderer.\n * If custom node renderer is used it does nothing.\n */\n iconsEnabled?: boolean;\n /**\n * Used to highlight matches when filtering tree.\n * It is passed to treeRenderer.\n */\n nodeHighlightingProps?: HighlightableTreeProps;\n /** Custom renderer to be used to render a tree. */\n treeRenderer?: (props: TreeRendererProps) => React.ReactElement;\n /** Custom renderer to be used while root nodes is loading. */\n spinnerRenderer?: () => React.ReactElement;\n /** Custom renderer to be used when there is no data to show in tree. */\n noDataRenderer?: () => React.ReactElement;\n /** Callback that is invoked when rendered items range changes. */\n onItemsRendered?: (items: RenderedItemsRange) => void;\n /** Width of the tree renderer. */\n width: number;\n /** Height of the tree renderer. */\n height: number;\n}\n\n/**\n * React tree component which rendering is fully controlled from outside.\n * @public\n */\nexport function ControlledTree(props: ControlledTreeProps) {\n const nodeHeight = useNodeHeight(!!props.descriptionsEnabled);\n const imageLoader = React.useMemo(() => new TreeImageLoader(), []);\n const nodeRenderer = React.useCallback(\n (nodeProps: TreeNodeRendererProps) => (\n <TreeNodeRenderer\n {...nodeProps}\n descriptionEnabled={props.descriptionsEnabled}\n imageLoader={props.iconsEnabled ? imageLoader : undefined}\n />\n ),\n [props.descriptionsEnabled, props.iconsEnabled, imageLoader]\n );\n\n const visibleNodesRef = React.useRef<VisibleTreeNodes>();\n visibleNodesRef.current = React.useMemo(\n () => computeVisibleNodes(props.model),\n [props.model]\n );\n\n const eventDispatcher = React.useMemo(\n () =>\n new TreeEventDispatcher(\n props.eventsHandler,\n props.nodeLoader,\n props.selectionMode,\n () => visibleNodesRef.current!\n ),\n [props.eventsHandler, props.nodeLoader, props.selectionMode]\n );\n\n const treeProps: TreeRendererProps = {\n nodeRenderer,\n nodeHeight,\n visibleNodes: visibleNodesRef.current,\n treeActions: eventDispatcher,\n nodeLoader: props.nodeLoader,\n nodeHighlightingProps: props.nodeHighlightingProps,\n onItemsRendered: props.onItemsRendered,\n width: props.width,\n height: props.height,\n };\n\n const loading = useRootNodeLoader(visibleNodesRef.current, props.nodeLoader);\n const noData = visibleNodesRef.current.getNumRootNodes() === 0;\n return (\n <Loader\n loading={loading}\n noData={noData}\n spinnerRenderer={props.spinnerRenderer}\n noDataRenderer={props.noDataRenderer}\n >\n {props.treeRenderer ? (\n props.treeRenderer(treeProps)\n ) : (\n <TreeRenderer {...treeProps} />\n )}\n </Loader>\n );\n}\n\n/**\n * Returns callbacks for persisting and restoring [[ControlledTree]] layout state.\n * Returned `ref` should be set on container containing ControlledTree.\n * @public\n */\nexport function useControlledTreeLayoutStorage<T extends Element>() {\n return useElementsScrollStorage<T>(\"ReactWindow__VariableSizeList\");\n}\n\nfunction useRootNodeLoader(\n visibleNodes: VisibleTreeNodes,\n nodeLoader: ITreeNodeLoader\n): boolean {\n React.useEffect(() => {\n if (visibleNodes.getNumRootNodes() === undefined) {\n const subscription = nodeLoader\n .loadNode(visibleNodes.getModel().getRootNode(), 0)\n .subscribe();\n return () => subscription.unsubscribe();\n }\n\n return () => {};\n }, [visibleNodes, nodeLoader]);\n\n return visibleNodes.getNumRootNodes() === undefined;\n}\n\ninterface LoaderProps {\n loading: boolean;\n noData: boolean;\n spinnerRenderer?: () => React.ReactElement;\n noDataRenderer?: () => React.ReactElement;\n children: React.ReactElement;\n}\n\nfunction Loader(props: LoaderProps) {\n const { translate } = useTranslation();\n if (props.loading) {\n return props.spinnerRenderer ? (\n props.spinnerRenderer()\n ) : (\n <div className=\"components-controlledTree-loader\">\n <DelayedSpinner size=\"large\" />\n </div>\n );\n }\n if (props.noData) {\n return props.noDataRenderer ? (\n props.noDataRenderer()\n ) : (\n // eslint-disable-next-line deprecation/deprecation\n <FillCentered>\n <p className=\"components-controlledTree-errorMessage\">\n {translate(\"general.noData\")}\n </p>\n </FillCentered>\n );\n }\n\n return props.children;\n}\n\nfunction useNodeHeight(\n descriptionsEnabled: boolean\n): (node: TreeModelNode | TreeModelNodePlaceholder) => number {\n return React.useCallback(\n (node: TreeModelNode | TreeModelNodePlaceholder): number => {\n const contentHeight =\n isTreeModelNode(node) && descriptionsEnabled && node && node.description\n ? 43\n : 24;\n const borderSize = 1;\n // Not counting node's border size twice because we want neighboring borders to overlap\n return contentHeight + borderSize;\n },\n [descriptionsEnabled]\n );\n}\n"]}
1
+ {"version":3,"file":"ControlledTree.js","sourceRoot":"","sources":["../../../../../../src/components-react/tree/controlled/component/ControlledTree.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tree\n */\n\nimport * as React from \"react\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport { FillCentered } from \"@itwin/core-react\";\nimport { DelayedSpinner } from \"../../../common/DelayedSpinner\";\nimport type { SelectionMode } from \"../../../common/selection/SelectionModes\";\nimport type { HighlightableTreeProps } from \"../../HighlightingEngine\";\nimport { TreeImageLoader } from \"../../ImageLoader\";\nimport { TreeEventDispatcher } from \"../TreeEventDispatcher\";\nimport type { TreeEvents } from \"../TreeEvents\";\nimport type {\n TreeModel,\n TreeModelNode,\n TreeModelNodePlaceholder,\n VisibleTreeNodes,\n} from \"../TreeModel\";\nimport { computeVisibleNodes, isTreeModelNode } from \"../TreeModel\";\nimport type { ITreeNodeLoader } from \"../TreeNodeLoader\";\nimport type { TreeNodeRendererProps } from \"./TreeNodeRenderer\";\nimport { TreeNodeRenderer } from \"./TreeNodeRenderer\";\nimport type { RenderedItemsRange, TreeRendererProps } from \"./TreeRenderer\";\nimport { TreeRenderer } from \"./TreeRenderer\";\nimport { useElementsScrollStorage } from \"../../../common/UseElementsScrollStorage\";\nimport { useTranslation } from \"../../../useTranslation\";\n\n/**\n * Properties for [[ControlledTree]]\n * @public\n */\n// eslint-disable-next-line deprecation/deprecation\nexport interface ControlledTreeProps extends CommonProps {\n /** Model of the tree to display. */\n model: TreeModel;\n /** Node loader used to load root nodes and placeholder nodes. */\n nodeLoader: ITreeNodeLoader;\n /** Tree events handler. */\n eventsHandler: TreeEvents;\n /** Mode of nodes' selection in tree. */\n selectionMode: SelectionMode;\n /**\n * Specifies whether to show node description or not. It is used in default node renderer and to determine node height.\n * If custom node renderer and node height callbacks are used it does nothing.\n */\n descriptionsEnabled?: boolean;\n /**\n * Specifies whether to show node icon or not. It is used in default node renderer.\n * If custom node renderer is used it does nothing.\n */\n iconsEnabled?: boolean;\n /**\n * Used to highlight matches when filtering tree.\n * It is passed to treeRenderer.\n */\n nodeHighlightingProps?: HighlightableTreeProps;\n /** Custom renderer to be used to render a tree. */\n treeRenderer?: (props: TreeRendererProps) => React.ReactElement;\n /** Custom renderer to be used while root nodes is loading. */\n spinnerRenderer?: () => React.ReactElement;\n /** Custom renderer to be used when there is no data to show in tree. */\n noDataRenderer?: () => React.ReactElement;\n /** Callback that is invoked when rendered items range changes. */\n onItemsRendered?: (items: RenderedItemsRange) => void;\n /** Width of the tree renderer. */\n width: number;\n /** Height of the tree renderer. */\n height: number;\n}\n\n/**\n * React tree component which rendering is fully controlled from outside.\n * @public\n */\nexport function ControlledTree(props: ControlledTreeProps) {\n const nodeHeight = useNodeHeight(!!props.descriptionsEnabled);\n const imageLoader = React.useMemo(() => new TreeImageLoader(), []);\n const nodeRenderer = React.useCallback(\n (nodeProps: TreeNodeRendererProps) => (\n <TreeNodeRenderer\n {...nodeProps}\n descriptionEnabled={props.descriptionsEnabled}\n imageLoader={props.iconsEnabled ? imageLoader : undefined}\n />\n ),\n [props.descriptionsEnabled, props.iconsEnabled, imageLoader]\n );\n\n const visibleNodesRef = React.useRef<VisibleTreeNodes>();\n visibleNodesRef.current = React.useMemo(\n () => computeVisibleNodes(props.model),\n [props.model]\n );\n\n const eventDispatcher = React.useMemo(\n () =>\n new TreeEventDispatcher(\n props.eventsHandler,\n props.nodeLoader,\n props.selectionMode,\n () => visibleNodesRef.current!\n ),\n [props.eventsHandler, props.nodeLoader, props.selectionMode]\n );\n\n const treeProps: TreeRendererProps = {\n nodeRenderer,\n nodeHeight,\n visibleNodes: visibleNodesRef.current,\n treeActions: eventDispatcher,\n nodeLoader: props.nodeLoader,\n nodeHighlightingProps: props.nodeHighlightingProps,\n onItemsRendered: props.onItemsRendered,\n width: props.width,\n height: props.height,\n };\n\n const loading = useRootNodeLoader(visibleNodesRef.current, props.nodeLoader);\n const noData = visibleNodesRef.current.getNumRootNodes() === 0;\n return (\n <Loader\n loading={loading}\n noData={noData}\n spinnerRenderer={props.spinnerRenderer}\n noDataRenderer={props.noDataRenderer}\n >\n {props.treeRenderer ? (\n props.treeRenderer(treeProps)\n ) : (\n <TreeRenderer {...treeProps} />\n )}\n </Loader>\n );\n}\n\n/**\n * Returns callbacks for persisting and restoring [[ControlledTree]] layout state.\n * Returned `ref` should be set on container containing ControlledTree.\n * @public\n */\nexport function useControlledTreeLayoutStorage<T extends Element>() {\n return useElementsScrollStorage<T>(\"ReactWindow__VariableSizeList\");\n}\n\nfunction useRootNodeLoader(\n visibleNodes: VisibleTreeNodes,\n nodeLoader: ITreeNodeLoader\n): boolean {\n React.useEffect(() => {\n if (visibleNodes.getNumRootNodes() === undefined) {\n const subscription = nodeLoader\n .loadNode(visibleNodes.getModel().getRootNode(), 0)\n .subscribe();\n return () => subscription.unsubscribe();\n }\n\n return () => {};\n }, [visibleNodes, nodeLoader]);\n\n return visibleNodes.getNumRootNodes() === undefined;\n}\n\ninterface LoaderProps {\n loading: boolean;\n noData: boolean;\n spinnerRenderer?: () => React.ReactElement;\n noDataRenderer?: () => React.ReactElement;\n children: React.ReactElement;\n}\n\nfunction Loader(props: LoaderProps) {\n const { translate } = useTranslation();\n if (props.loading) {\n return props.spinnerRenderer ? (\n props.spinnerRenderer()\n ) : (\n <div className=\"components-controlledTree-loader\">\n <DelayedSpinner size=\"large\" />\n </div>\n );\n }\n if (props.noData) {\n return props.noDataRenderer ? (\n props.noDataRenderer()\n ) : (\n // eslint-disable-next-line deprecation/deprecation\n <FillCentered>\n <p className=\"components-controlledTree-errorMessage\">\n {translate(\"general.noData\")}\n </p>\n </FillCentered>\n );\n }\n\n return props.children;\n}\n\nfunction useNodeHeight(\n descriptionsEnabled: boolean\n): (node: TreeModelNode | TreeModelNodePlaceholder) => number {\n return React.useCallback(\n (node: TreeModelNode | TreeModelNodePlaceholder): number => {\n const contentHeight =\n isTreeModelNode(node) && descriptionsEnabled && node && node.description\n ? 43\n : 24;\n const borderSize = 1;\n // Not counting node's border size twice because we want neighboring borders to overlap\n return contentHeight + borderSize;\n },\n [descriptionsEnabled]\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"NodeContent.d.ts","sourceRoot":"","sources":["../../../../../../src/components-react/tree/controlled/component/NodeContent.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,oBAAoB,CAAC;AAE5B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAOrD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAE3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAG/D;;;GAGG;AACH,MAAM,WAAW,oBAAqB,SAAQ,WAAW;IACvD,qCAAqC;IACrC,IAAI,EAAE,aAAa,CAAC;IACpB,0EAA0E;IAC1E,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,oFAAoF;IACpF,cAAc,CAAC,EAAE,0BAA0B,CAAC;IAC5C,sDAAsD;IACtD,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IAChD,0EAA0E;IAC1E,kBAAkB,CAAC,EAAE,sBAAsB,CAAC;CAC7C;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,qBAuD1D"}
1
+ {"version":3,"file":"NodeContent.d.ts","sourceRoot":"","sources":["../../../../../../src/components-react/tree/controlled/component/NodeContent.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,oBAAoB,CAAC;AAE5B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAOrD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAE3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAG/D;;;GAGG;AAEH,MAAM,WAAW,oBAAqB,SAAQ,WAAW;IACvD,qCAAqC;IACrC,IAAI,EAAE,aAAa,CAAC;IACpB,0EAA0E;IAC1E,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,oFAAoF;IACpF,cAAc,CAAC,EAAE,0BAA0B,CAAC;IAC5C,sDAAsD;IACtD,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IAChD,0EAA0E;IAC1E,kBAAkB,CAAC,EAAE,sBAAsB,CAAC;CAC7C;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,qBAuD1D"}
@@ -57,7 +57,9 @@ function getLabel(node, highlightProps) {
57
57
  containerType: PropertyContainerType.Tree,
58
58
  style: getStyle(node.item.style, node.isSelected),
59
59
  textHighlighter: highlightCallback,
60
- defaultValue: (React.createElement(TreeNodePlaceholder, { level: 0, "data-testid": "node-label-placeholder" })),
60
+ defaultValue: (
61
+ // eslint-disable-next-line deprecation/deprecation
62
+ React.createElement(TreeNodePlaceholder, { level: 0, "data-testid": "node-label-placeholder" })),
61
63
  };
62
64
  return PropertyValueRendererManager.defaultManager.render(node.item.label, context);
63
65
  }
@@ -1 +1 @@
1
- {"version":3,"file":"NodeContent.js","sourceRoot":"","sources":["../../../../../../src/components-react/tree/controlled/component/NodeContent.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tree\n */\n\nimport \"./NodeContent.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport { TreeNodePlaceholder } from \"@itwin/core-react\";\nimport type { ItemStyle } from \"../../../properties/ItemStyle\";\nimport { ItemStyleProvider } from \"../../../properties/ItemStyle\";\nimport type { PropertyValueRendererContext } from \"../../../properties/ValueRendererManager\";\nimport { PropertyValueRendererManager } from \"../../../properties/ValueRendererManager\";\nimport { PropertyContainerType } from \"../../../properties/ValueRendererManager\";\nimport type { HighlightableTreeNodeProps } from \"../../HighlightingEngine\";\nimport { HighlightingEngine } from \"../../HighlightingEngine\";\nimport type { TreeModelNode } from \"../TreeModel\";\nimport type { TreeNodeEditorRenderer } from \"./TreeNodeEditor\";\nimport { TreeNodeEditor } from \"./TreeNodeEditor\";\n\n/**\n * Properties for [[TreeNodeContent]] component\n * @public\n */\nexport interface TreeNodeContentProps extends CommonProps {\n /** Tree node to render label for. */\n node: TreeModelNode;\n /** Flag that specified whether the description should be shown or not. */\n showDescription?: boolean;\n /** Props for highlighting label parts that matches filter when tree is filtered. */\n highlightProps?: HighlightableTreeNodeProps;\n /** Callback used to detect when label is rendered. */\n onLabelRendered?: (node: TreeModelNode) => void;\n /** Callback to render custom node editor when node is in editing mode. */\n nodeEditorRenderer?: TreeNodeEditorRenderer;\n}\n\n/**\n * React component for displaying [[TreeNode]] label\n * @public\n */\nexport function TreeNodeContent(props: TreeNodeContentProps) {\n const { node, onLabelRendered, highlightProps } = props;\n const label = React.useMemo(\n // eslint-disable-next-line @typescript-eslint/promise-function-async\n () => getLabel(node, highlightProps),\n [node, highlightProps]\n );\n React.useEffect(() => {\n onLabelRendered && onLabelRendered(node);\n }, [label, node, onLabelRendered]);\n\n // handle cell editing\n let editor: React.ReactNode;\n if (props.node.editingInfo) {\n // if cell editing is enabled, return editor instead of the label\n const style = getStyle(props.node.item.style, props.node.isSelected);\n const editorProps = {\n node: props.node,\n onCancel: props.node.editingInfo.onCancel,\n onCommit: props.node.editingInfo.onCommit,\n style,\n };\n editor = props.nodeEditorRenderer ? (\n props.nodeEditorRenderer(editorProps)\n ) : (\n <TreeNodeEditor {...editorProps} />\n );\n }\n\n const isDescriptionEnabled =\n props.node.item.description && props.showDescription;\n\n const containerClassName = classnames(\n \"components-controlledTree-node-content\",\n isDescriptionEnabled ? \"with-description\" : undefined,\n props.className\n );\n\n const descriptionClassName = classnames(\n \"components-controlledTree-node-description\",\n editor ? \"with-editor\" : undefined\n );\n\n return (\n <div className={containerClassName} style={props.style}>\n <>\n {editor ? editor : label}\n {isDescriptionEnabled ? (\n <div className={descriptionClassName}>\n {props.node.item.description}\n </div>\n ) : undefined}\n </>\n </div>\n );\n}\n\nfunction getLabel(\n node: TreeModelNode,\n highlightProps?: HighlightableTreeNodeProps\n): React.ReactNode | Promise<React.ReactNode> {\n // handle filtered matches' highlighting\n const highlightCallback = highlightProps\n ? (text: string) => HighlightingEngine.renderNodeLabel(text, highlightProps)\n : undefined;\n\n // handle custom cell rendering\n const context: PropertyValueRendererContext = {\n containerType: PropertyContainerType.Tree,\n style: getStyle(node.item.style, node.isSelected),\n textHighlighter: highlightCallback,\n defaultValue: (\n <TreeNodePlaceholder level={0} data-testid={\"node-label-placeholder\"} />\n ),\n };\n\n return PropertyValueRendererManager.defaultManager.render(\n node.item.label,\n context\n );\n}\n\nfunction getStyle(\n style?: ItemStyle,\n isSelected?: boolean\n): React.CSSProperties {\n return ItemStyleProvider.createStyle(style ? style : {}, isSelected);\n}\n"]}
1
+ {"version":3,"file":"NodeContent.js","sourceRoot":"","sources":["../../../../../../src/components-react/tree/controlled/component/NodeContent.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tree\n */\n\nimport \"./NodeContent.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport { TreeNodePlaceholder } from \"@itwin/core-react\";\nimport type { ItemStyle } from \"../../../properties/ItemStyle\";\nimport { ItemStyleProvider } from \"../../../properties/ItemStyle\";\nimport type { PropertyValueRendererContext } from \"../../../properties/ValueRendererManager\";\nimport { PropertyValueRendererManager } from \"../../../properties/ValueRendererManager\";\nimport { PropertyContainerType } from \"../../../properties/ValueRendererManager\";\nimport type { HighlightableTreeNodeProps } from \"../../HighlightingEngine\";\nimport { HighlightingEngine } from \"../../HighlightingEngine\";\nimport type { TreeModelNode } from \"../TreeModel\";\nimport type { TreeNodeEditorRenderer } from \"./TreeNodeEditor\";\nimport { TreeNodeEditor } from \"./TreeNodeEditor\";\n\n/**\n * Properties for [[TreeNodeContent]] component\n * @public\n */\n// eslint-disable-next-line deprecation/deprecation\nexport interface TreeNodeContentProps extends CommonProps {\n /** Tree node to render label for. */\n node: TreeModelNode;\n /** Flag that specified whether the description should be shown or not. */\n showDescription?: boolean;\n /** Props for highlighting label parts that matches filter when tree is filtered. */\n highlightProps?: HighlightableTreeNodeProps;\n /** Callback used to detect when label is rendered. */\n onLabelRendered?: (node: TreeModelNode) => void;\n /** Callback to render custom node editor when node is in editing mode. */\n nodeEditorRenderer?: TreeNodeEditorRenderer;\n}\n\n/**\n * React component for displaying [[TreeNode]] label\n * @public\n */\nexport function TreeNodeContent(props: TreeNodeContentProps) {\n const { node, onLabelRendered, highlightProps } = props;\n const label = React.useMemo(\n // eslint-disable-next-line @typescript-eslint/promise-function-async\n () => getLabel(node, highlightProps),\n [node, highlightProps]\n );\n React.useEffect(() => {\n onLabelRendered && onLabelRendered(node);\n }, [label, node, onLabelRendered]);\n\n // handle cell editing\n let editor: React.ReactNode;\n if (props.node.editingInfo) {\n // if cell editing is enabled, return editor instead of the label\n const style = getStyle(props.node.item.style, props.node.isSelected);\n const editorProps = {\n node: props.node,\n onCancel: props.node.editingInfo.onCancel,\n onCommit: props.node.editingInfo.onCommit,\n style,\n };\n editor = props.nodeEditorRenderer ? (\n props.nodeEditorRenderer(editorProps)\n ) : (\n <TreeNodeEditor {...editorProps} />\n );\n }\n\n const isDescriptionEnabled =\n props.node.item.description && props.showDescription;\n\n const containerClassName = classnames(\n \"components-controlledTree-node-content\",\n isDescriptionEnabled ? \"with-description\" : undefined,\n props.className\n );\n\n const descriptionClassName = classnames(\n \"components-controlledTree-node-description\",\n editor ? \"with-editor\" : undefined\n );\n\n return (\n <div className={containerClassName} style={props.style}>\n <>\n {editor ? editor : label}\n {isDescriptionEnabled ? (\n <div className={descriptionClassName}>\n {props.node.item.description}\n </div>\n ) : undefined}\n </>\n </div>\n );\n}\n\nfunction getLabel(\n node: TreeModelNode,\n highlightProps?: HighlightableTreeNodeProps\n): React.ReactNode | Promise<React.ReactNode> {\n // handle filtered matches' highlighting\n const highlightCallback = highlightProps\n ? (text: string) => HighlightingEngine.renderNodeLabel(text, highlightProps)\n : undefined;\n\n // handle custom cell rendering\n const context: PropertyValueRendererContext = {\n containerType: PropertyContainerType.Tree,\n style: getStyle(node.item.style, node.isSelected),\n textHighlighter: highlightCallback,\n defaultValue: (\n // eslint-disable-next-line deprecation/deprecation\n <TreeNodePlaceholder level={0} data-testid={\"node-label-placeholder\"} />\n ),\n };\n\n return PropertyValueRendererManager.defaultManager.render(\n node.item.label,\n context\n );\n}\n\nfunction getStyle(\n style?: ItemStyle,\n isSelected?: boolean\n): React.CSSProperties {\n return ItemStyleProvider.createStyle(style ? style : {}, isSelected);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"TreeNodeRenderer.d.ts","sourceRoot":"","sources":["../../../../../../src/components-react/tree/controlled/component/TreeNodeRenderer.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EACV,WAAW,EAEX,oBAAoB,EACrB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAgB,aAAa,EAAE,MAAM,cAAc,CAAC;AAEhE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE/D;;;GAGG;AACH,MAAM,WAAW,qBAAsB,SAAQ,WAAW;IACxD,2BAA2B;IAC3B,IAAI,EAAE,aAAa,CAAC;IAEpB,sBAAsB;IACtB,WAAW,EAAE,WAAW,CAAC;IAEzB,kEAAkE;IAClE,kBAAkB,CAAC,EAAE,0BAA0B,CAAC;IAEhD,qDAAqD;IACrD,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B,mCAAmC;IACnC,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAE/B,0CAA0C;IAC1C,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;IAExC,0EAA0E;IAC1E,kBAAkB,CAAC,EAAE,sBAAsB,CAAC;IAE5C;;;OAGG;IACH,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IAEhD,mEAAmE;IACnE,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IAEnE,iDAAiD;IACjD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,mDAiE3B,CAAC;AAEH;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,oCAAoC;IACpC,IAAI,EAAE,aAAa,CAAC;IACpB,gDAAgD;IAChD,WAAW,EAAE,gBAAgB,CAAC;CAC/B;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,4BAQpD"}
1
+ {"version":3,"file":"TreeNodeRenderer.d.ts","sourceRoot":"","sources":["../../../../../../src/components-react/tree/controlled/component/TreeNodeRenderer.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EACV,WAAW,EAEX,oBAAoB,EACrB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAgB,aAAa,EAAE,MAAM,cAAc,CAAC;AAEhE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE/D;;;GAGG;AAEH,MAAM,WAAW,qBAAsB,SAAQ,WAAW;IACxD,2BAA2B;IAC3B,IAAI,EAAE,aAAa,CAAC;IAEpB,sBAAsB;IACtB,WAAW,EAAE,WAAW,CAAC;IAEzB,kEAAkE;IAClE,kBAAkB,CAAC,EAAE,0BAA0B,CAAC;IAEhD,qDAAqD;IACrD,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B,mCAAmC;IACnC,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAE/B,0CAA0C;IAC1C,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;IAExC,0EAA0E;IAC1E,kBAAkB,CAAC,EAAE,sBAAsB,CAAC;IAE5C;;;OAGG;IACH,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IAEhD,mEAAmE;IACnE,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IAEnE,iDAAiD;IACjD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,mDAmE3B,CAAC;AAEH;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,oCAAoC;IACpC,IAAI,EAAE,aAAa,CAAC;IACpB,gDAAgD;IAChD,WAAW,EAAE,gBAAgB,CAAC;CAC/B;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,4BAQpD"}
@@ -26,13 +26,17 @@ export const TreeNodeRenderer = React.memo(function TreeNodeRenderer(props) {
26
26
  e.preventDefault();
27
27
  props.onContextMenu && props.onContextMenu(e, props.node);
28
28
  }
29
- const createCheckboxProps = (checkboxInfo) => ({
29
+ const createCheckboxProps = (checkboxInfo
30
+ // eslint-disable-next-line deprecation/deprecation
31
+ ) => ({
30
32
  state: checkboxInfo.state,
31
33
  tooltip: checkboxInfo.tooltip,
32
34
  isDisabled: checkboxInfo.isDisabled,
33
35
  onClick: (newState) => props.treeActions.onNodeCheckboxClicked(props.node.id, newState),
34
36
  });
35
- return (React.createElement(TreeNode, { "data-testid": TreeComponentTestId.Node, className: props.className, checkboxProps: props.node.checkbox.isVisible
37
+ return (
38
+ // eslint-disable-next-line deprecation/deprecation
39
+ React.createElement(TreeNode, { "data-testid": TreeComponentTestId.Node, className: props.className, checkboxProps: props.node.checkbox.isVisible
36
40
  ? createCheckboxProps(props.node.checkbox)
37
41
  : undefined, style: props.style, isExpanded: props.node.isExpanded, isSelected: props.node.isSelected, isLoading: props.node.isLoading, isLeaf: props.node.numChildren === 0, icon: props.imageLoader ? (React.createElement(TreeNodeIcon, { node: props.node, imageLoader: props.imageLoader })) : undefined, label: label, level: props.node.depth, onClick: (event) => props.treeActions.onNodeClicked(props.node.id, event), onMouseDown: () => props.treeActions.onNodeMouseDown(props.node.id), onMouseMove: () => props.treeActions.onNodeMouseMove(props.node.id), onClickExpansionToggle: onExpansionToggle, onContextMenu: onContextMenu, renderOverrides: { renderCheckbox: props.checkboxRenderer } }, props.children));
38
42
  });
@@ -1 +1 @@
1
- {"version":3,"file":"TreeNodeRenderer.js","sourceRoot":"","sources":["../../../../../../src/components-react/tree/controlled/component/TreeNodeRenderer.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tree\n */\n\nimport * as React from \"react\";\nimport type {\n CommonProps,\n NodeCheckboxProps,\n NodeCheckboxRenderer,\n} from \"@itwin/core-react\";\nimport { TreeNode } from \"@itwin/core-react\";\nimport { ImageRenderer } from \"../../../common/ImageRenderer\";\nimport type { HighlightableTreeNodeProps } from \"../../HighlightingEngine\";\nimport type { ITreeImageLoader } from \"../../ImageLoader\";\nimport { TreeComponentTestId } from \"../../TreeComponentTestId\";\nimport type { TreeActions } from \"../TreeActions\";\nimport type { CheckBoxInfo, TreeModelNode } from \"../TreeModel\";\nimport { TreeNodeContent } from \"./NodeContent\";\nimport type { TreeNodeEditorRenderer } from \"./TreeNodeEditor\";\n\n/**\n * Properties for [[TreeNodeRenderer]].\n * @public\n */\nexport interface TreeNodeRendererProps extends CommonProps {\n /** Tree node to render. */\n node: TreeModelNode;\n\n /** Action handler. */\n treeActions: TreeActions;\n\n /** Properties used to highlight matches when tree is filtered. */\n nodeHighlightProps?: HighlightableTreeNodeProps;\n\n /** Specifies whether to show descriptions or not. */\n descriptionEnabled?: boolean;\n\n /** Image loader for node icons. */\n imageLoader?: ITreeImageLoader;\n\n /** Callback to render custom checkbox. */\n checkboxRenderer?: NodeCheckboxRenderer;\n\n /** Callback to render custom node editor when node is in editing mode. */\n nodeEditorRenderer?: TreeNodeEditorRenderer;\n\n /**\n * Callback used to detect when label is rendered. It is used by TreeRenderer for scrolling to active match.\n * @internal\n */\n onLabelRendered?: (node: TreeModelNode) => void;\n\n /** Callback that is invoked when context menu should be opened. */\n onContextMenu?: (e: React.MouseEvent, node: TreeModelNode) => void;\n\n /** Child components to render inside the node.*/\n children?: React.ReactNode;\n}\n\n/**\n * Default component for rendering tree node.\n * @public\n */\nexport const TreeNodeRenderer = React.memo(function TreeNodeRenderer(\n props: TreeNodeRendererProps\n) {\n const label = (\n <TreeNodeContent\n key={props.node.id}\n node={props.node}\n showDescription={props.descriptionEnabled}\n highlightProps={props.nodeHighlightProps}\n onLabelRendered={props.onLabelRendered}\n nodeEditorRenderer={props.nodeEditorRenderer}\n />\n );\n\n function onExpansionToggle() {\n if (props.node.isExpanded) props.treeActions.onNodeCollapsed(props.node.id);\n else props.treeActions.onNodeExpanded(props.node.id);\n }\n\n function onContextMenu(e: React.MouseEvent) {\n e.preventDefault();\n props.onContextMenu && props.onContextMenu(e, props.node);\n }\n\n const createCheckboxProps = (\n checkboxInfo: CheckBoxInfo\n ): NodeCheckboxProps => ({\n state: checkboxInfo.state,\n tooltip: checkboxInfo.tooltip,\n isDisabled: checkboxInfo.isDisabled,\n onClick: (newState) =>\n props.treeActions.onNodeCheckboxClicked(props.node.id, newState),\n });\n\n return (\n <TreeNode\n data-testid={TreeComponentTestId.Node}\n className={props.className}\n checkboxProps={\n props.node.checkbox.isVisible\n ? createCheckboxProps(props.node.checkbox)\n : undefined\n }\n style={props.style}\n isExpanded={props.node.isExpanded}\n isSelected={props.node.isSelected}\n isLoading={props.node.isLoading}\n isLeaf={props.node.numChildren === 0}\n icon={\n props.imageLoader ? (\n <TreeNodeIcon node={props.node} imageLoader={props.imageLoader} />\n ) : undefined\n }\n label={label}\n level={props.node.depth}\n onClick={(event) => props.treeActions.onNodeClicked(props.node.id, event)}\n onMouseDown={() => props.treeActions.onNodeMouseDown(props.node.id)}\n onMouseMove={() => props.treeActions.onNodeMouseMove(props.node.id)}\n onClickExpansionToggle={onExpansionToggle}\n onContextMenu={onContextMenu}\n renderOverrides={{ renderCheckbox: props.checkboxRenderer }}\n >\n {props.children}\n </TreeNode>\n );\n});\n\n/**\n * Props for [[TreeNodeIcon]] component.\n * @public\n */\nexport interface TreeNodeIconProps {\n /** Tree node to render icon for. */\n node: TreeModelNode;\n /** Image loader used to load tree node icon. */\n imageLoader: ITreeImageLoader;\n}\n\n/**\n * React component that renders icon for [[TreeNode]].\n * @public\n */\nexport function TreeNodeIcon(props: TreeNodeIconProps) {\n const { imageLoader, node } = props;\n const image = imageLoader.load(node.item);\n\n if (!image) return null;\n\n const renderer = new ImageRenderer();\n return <>{renderer.render(image)}</>;\n}\n"]}
1
+ {"version":3,"file":"TreeNodeRenderer.js","sourceRoot":"","sources":["../../../../../../src/components-react/tree/controlled/component/TreeNodeRenderer.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tree\n */\n\nimport * as React from \"react\";\nimport type {\n CommonProps,\n NodeCheckboxProps,\n NodeCheckboxRenderer,\n} from \"@itwin/core-react\";\nimport { TreeNode } from \"@itwin/core-react\";\nimport { ImageRenderer } from \"../../../common/ImageRenderer\";\nimport type { HighlightableTreeNodeProps } from \"../../HighlightingEngine\";\nimport type { ITreeImageLoader } from \"../../ImageLoader\";\nimport { TreeComponentTestId } from \"../../TreeComponentTestId\";\nimport type { TreeActions } from \"../TreeActions\";\nimport type { CheckBoxInfo, TreeModelNode } from \"../TreeModel\";\nimport { TreeNodeContent } from \"./NodeContent\";\nimport type { TreeNodeEditorRenderer } from \"./TreeNodeEditor\";\n\n/**\n * Properties for [[TreeNodeRenderer]].\n * @public\n */\n// eslint-disable-next-line deprecation/deprecation\nexport interface TreeNodeRendererProps extends CommonProps {\n /** Tree node to render. */\n node: TreeModelNode;\n\n /** Action handler. */\n treeActions: TreeActions;\n\n /** Properties used to highlight matches when tree is filtered. */\n nodeHighlightProps?: HighlightableTreeNodeProps;\n\n /** Specifies whether to show descriptions or not. */\n descriptionEnabled?: boolean;\n\n /** Image loader for node icons. */\n imageLoader?: ITreeImageLoader;\n\n /** Callback to render custom checkbox. */\n checkboxRenderer?: NodeCheckboxRenderer;\n\n /** Callback to render custom node editor when node is in editing mode. */\n nodeEditorRenderer?: TreeNodeEditorRenderer;\n\n /**\n * Callback used to detect when label is rendered. It is used by TreeRenderer for scrolling to active match.\n * @internal\n */\n onLabelRendered?: (node: TreeModelNode) => void;\n\n /** Callback that is invoked when context menu should be opened. */\n onContextMenu?: (e: React.MouseEvent, node: TreeModelNode) => void;\n\n /** Child components to render inside the node.*/\n children?: React.ReactNode;\n}\n\n/**\n * Default component for rendering tree node.\n * @public\n */\nexport const TreeNodeRenderer = React.memo(function TreeNodeRenderer(\n props: TreeNodeRendererProps\n) {\n const label = (\n <TreeNodeContent\n key={props.node.id}\n node={props.node}\n showDescription={props.descriptionEnabled}\n highlightProps={props.nodeHighlightProps}\n onLabelRendered={props.onLabelRendered}\n nodeEditorRenderer={props.nodeEditorRenderer}\n />\n );\n\n function onExpansionToggle() {\n if (props.node.isExpanded) props.treeActions.onNodeCollapsed(props.node.id);\n else props.treeActions.onNodeExpanded(props.node.id);\n }\n\n function onContextMenu(e: React.MouseEvent) {\n e.preventDefault();\n props.onContextMenu && props.onContextMenu(e, props.node);\n }\n\n const createCheckboxProps = (\n checkboxInfo: CheckBoxInfo\n // eslint-disable-next-line deprecation/deprecation\n ): NodeCheckboxProps => ({\n state: checkboxInfo.state,\n tooltip: checkboxInfo.tooltip,\n isDisabled: checkboxInfo.isDisabled,\n onClick: (newState) =>\n props.treeActions.onNodeCheckboxClicked(props.node.id, newState),\n });\n\n return (\n // eslint-disable-next-line deprecation/deprecation\n <TreeNode\n data-testid={TreeComponentTestId.Node}\n className={props.className}\n checkboxProps={\n props.node.checkbox.isVisible\n ? createCheckboxProps(props.node.checkbox)\n : undefined\n }\n style={props.style}\n isExpanded={props.node.isExpanded}\n isSelected={props.node.isSelected}\n isLoading={props.node.isLoading}\n isLeaf={props.node.numChildren === 0}\n icon={\n props.imageLoader ? (\n <TreeNodeIcon node={props.node} imageLoader={props.imageLoader} />\n ) : undefined\n }\n label={label}\n level={props.node.depth}\n onClick={(event) => props.treeActions.onNodeClicked(props.node.id, event)}\n onMouseDown={() => props.treeActions.onNodeMouseDown(props.node.id)}\n onMouseMove={() => props.treeActions.onNodeMouseMove(props.node.id)}\n onClickExpansionToggle={onExpansionToggle}\n onContextMenu={onContextMenu}\n renderOverrides={{ renderCheckbox: props.checkboxRenderer }}\n >\n {props.children}\n </TreeNode>\n );\n});\n\n/**\n * Props for [[TreeNodeIcon]] component.\n * @public\n */\nexport interface TreeNodeIconProps {\n /** Tree node to render icon for. */\n node: TreeModelNode;\n /** Image loader used to load tree node icon. */\n imageLoader: ITreeImageLoader;\n}\n\n/**\n * React component that renders icon for [[TreeNode]].\n * @public\n */\nexport function TreeNodeIcon(props: TreeNodeIconProps) {\n const { imageLoader, node } = props;\n const image = imageLoader.load(node.item);\n\n if (!image) return null;\n\n const renderer = new ImageRenderer();\n return <>{renderer.render(image)}</>;\n}\n"]}
@@ -58,6 +58,7 @@ const TreeRendererInner = React.forwardRef((props, ref) => {
58
58
  variableSizeListRef.current.resetAfterIndex(0, false);
59
59
  }
60
60
  }
61
+ // eslint-disable-next-line deprecation/deprecation
61
62
  const coreTreeRef = React.useRef(null);
62
63
  const onLabelRendered = useScrollToActiveMatch(coreTreeRef, props.nodeHighlightingProps);
63
64
  const highlightingEngine = React.useMemo(() => props.nodeHighlightingProps &&
@@ -147,6 +148,7 @@ const Node = React.memo(function Node(props) {
147
148
  nodeHighlightProps,
148
149
  });
149
150
  }
151
+ // eslint-disable-next-line deprecation/deprecation
150
152
  return React.createElement(TreeNodePlaceholder, { level: node.depth });
151
153
  }, [
152
154
  node,
@@ -200,7 +202,9 @@ function getHighlightedNodeId(highlightableTreeProps) {
200
202
  ? highlightableTreeProps.activeMatch.nodeId
201
203
  : undefined;
202
204
  }
203
- function useScrollToActiveMatch(treeRef, highlightableTreeProps) {
205
+ function useScrollToActiveMatch(
206
+ // eslint-disable-next-line deprecation/deprecation
207
+ treeRef, highlightableTreeProps) {
204
208
  const scrollToActive = React.useRef(false);
205
209
  React.useEffect(() => {
206
210
  scrollToActive.current = true;
@@ -225,6 +229,7 @@ function useScrollToActiveMatch(treeRef, highlightableTreeProps) {
225
229
  }, [highlightableTreeProps, treeRef]);
226
230
  return onLabelRendered;
227
231
  }
232
+ // eslint-disable-next-line deprecation/deprecation
228
233
  function setFocusToSelected(treeRef) {
229
234
  if (treeRef.current)
230
235
  treeRef.current.setFocusByClassName(".core-tree-node.is-selected");
@@ -1 +1 @@
1
- {"version":3,"file":"TreeRenderer.js","sourceRoot":"","sources":["../../../../../../src/components-react/tree/controlled/component/TreeRenderer.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tree\n */\n\nimport \"./ControlledTree.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport type {\n ListChildComponentProps,\n ListOnItemsRenderedProps,\n} from \"react-window\";\nimport { areEqual, VariableSizeList } from \"react-window\";\nimport { concat, timer } from \"rxjs\";\nimport { assert } from \"@itwin/core-bentley\";\nimport { Tree as CoreTree, TreeNodePlaceholder } from \"@itwin/core-react\";\nimport { createContextWithMandatoryProvider } from \"../../../common/UseContextWithMandatoryProvider\";\nimport type { HighlightableTreeProps } from \"../../HighlightingEngine\";\nimport { HighlightingEngine } from \"../../HighlightingEngine\";\nimport type { TreeActions } from \"../TreeActions\";\nimport type {\n TreeModelNode,\n TreeModelNodePlaceholder,\n VisibleTreeNodes,\n} from \"../TreeModel\";\nimport {\n isTreeModelNode,\n isTreeModelNodePlaceholder,\n isTreeModelRootNode,\n} from \"../TreeModel\";\nimport type { ITreeNodeLoader } from \"../TreeNodeLoader\";\nimport type { TreeNodeRendererProps } from \"./TreeNodeRenderer\";\nimport { TreeNodeRenderer } from \"./TreeNodeRenderer\";\nimport { toRxjsObservable } from \"../Observable\";\n\nconst NODE_LOAD_DELAY = 500;\n\n/**\n * Data structure that describes range of rendered items in the tree.\n * @public\n */\nexport interface RenderedItemsRange {\n overscanStartIndex: number;\n overscanStopIndex: number;\n visibleStartIndex: number;\n visibleStopIndex: number;\n}\n\n/**\n * Properties for [[TreeRenderer]] component.\n * @public\n */\nexport interface TreeRendererProps {\n treeActions: TreeActions;\n nodeLoader: ITreeNodeLoader;\n\n /** Callback that is used to determine node height. */\n nodeHeight: (\n node: TreeModelNode | TreeModelNodePlaceholder,\n index: number\n ) => number;\n\n /** Flat list of nodes to be rendered. */\n visibleNodes: VisibleTreeNodes;\n\n /** Callback to render custom node. */\n nodeRenderer?: (props: TreeNodeRendererProps) => React.ReactNode;\n\n /** Properties used to highlight nodes and scroll to active match while filtering. */\n nodeHighlightingProps?: HighlightableTreeProps;\n\n /** Callback that is called when rendered items range changes. */\n onItemsRendered?: (renderedItems: RenderedItemsRange) => void;\n\n /**\n * Callback used when an editor closes\n * @internal\n */\n onNodeEditorClosed?: () => void;\n\n /** Width of the tree area. */\n width: number;\n\n /** Height of the tree area. */\n height: number;\n}\n\n/**\n * Attributes found on TreeRenderer component\n * @public\n */\nexport interface TreeRendererAttributes {\n /**\n * Scroll to the specified node.\n * @param nodeId Id of the target node to scroll to.\n * @param alignment Controls scrolling behavior. See [react-window](https://github.com/bvaughn/react-window) documentation\n * on `scrollToItem` for details.\n */\n scrollToNode(nodeId: string, alignment?: Alignment): void;\n}\n\ntype Alignment = \"auto\" | \"smart\" | \"center\" | \"end\" | \"start\";\n\n/** [[TreeRenderer]] context that is provided to each rendered node. */\ninterface TreeRendererContext {\n /** Callback to render custom node. */\n nodeRenderer: (props: TreeNodeRendererProps) => React.ReactNode;\n\n treeActions: TreeActions;\n nodeLoader: ITreeNodeLoader;\n\n /** Flat list of nodes to be rendered. */\n visibleNodes: VisibleTreeNodes;\n\n /** Engine used to created node highlighting properties. */\n highlightingEngine?: HighlightingEngine;\n\n /** Callback used detect when label is rendered. It is used by TreeRenderer for scrolling to active match. */\n onLabelRendered?: (node: TreeModelNode) => void;\n\n /** Callback used when an editor closes */\n onNodeEditorClosed?: () => void;\n}\n\n/** [[TreeRenderer]] context provider, consumer and custom hook. */\nconst [\n /** Context of [[TreeRenderer]] provider. */\n TreeRendererContextProvider,\n\n /** Context of [[TreeRenderer]] consumer. */\n _TreeRendererContextConsumer,\n\n /** Custom hook to use [[TreeRenderer]] context. */\n useTreeRendererContext,\n] = createContextWithMandatoryProvider<TreeRendererContext>(\n \"TreeRendererContext\"\n);\n\n/**\n * Default tree rendering component.\n * @public\n */\nexport class TreeRenderer\n extends React.Component<TreeRendererProps>\n implements TreeRendererAttributes\n{\n private _ref = React.createRef<TreeRendererAttributes>();\n\n /** @inheritdoc */\n public scrollToNode(nodeId: string, alignment?: Alignment) {\n if (this._ref.current) this._ref.current.scrollToNode(nodeId, alignment);\n }\n\n public override render() {\n return <TreeRendererInner ref={this._ref} {...this.props} />;\n }\n}\n\n// eslint-disable-next-line react/display-name\nconst TreeRendererInner = React.forwardRef<\n TreeRendererAttributes,\n TreeRendererProps\n>((props, ref) => {\n const variableSizeListRef = React.useRef<VariableSizeList>(null);\n useTreeRendererAttributes(ref, variableSizeListRef, props.visibleNodes);\n\n const previousVisibleNodes = usePrevious(props.visibleNodes);\n const previousNodeHeight = usePrevious(props.nodeHeight);\n if (\n (previousVisibleNodes !== undefined &&\n previousVisibleNodes !== props.visibleNodes) ||\n (previousNodeHeight !== undefined &&\n previousNodeHeight !== props.nodeHeight)\n ) {\n if (variableSizeListRef.current) {\n variableSizeListRef.current.resetAfterIndex(0, false);\n }\n }\n\n const coreTreeRef = React.useRef<CoreTree>(null);\n const onLabelRendered = useScrollToActiveMatch(\n coreTreeRef,\n props.nodeHighlightingProps\n );\n const highlightingEngine = React.useMemo(\n () =>\n props.nodeHighlightingProps &&\n new HighlightingEngine(props.nodeHighlightingProps),\n [props.nodeHighlightingProps]\n );\n\n const rendererContext = React.useMemo<TreeRendererContext>(\n () => ({\n nodeRenderer: props.nodeRenderer\n ? props.nodeRenderer\n : (nodeProps) => <TreeNodeRenderer {...nodeProps} />,\n treeActions: props.treeActions,\n nodeLoader: props.nodeLoader,\n visibleNodes: props.visibleNodes,\n onLabelRendered,\n highlightingEngine,\n onNodeEditorClosed: () => {\n setFocusToSelected(coreTreeRef);\n props.onNodeEditorClosed && props.onNodeEditorClosed();\n },\n }),\n [props, onLabelRendered, highlightingEngine]\n );\n\n const itemKey = React.useCallback(\n (index: number) => getNodeKey(props.visibleNodes.getAtIndex(index)!),\n [props.visibleNodes]\n );\n\n const { nodeHeight, visibleNodes } = props;\n const itemSize = React.useCallback(\n (index: number) => nodeHeight(visibleNodes.getAtIndex(index)!, index),\n [nodeHeight, visibleNodes]\n );\n\n const { nodeHighlightingProps } = props;\n React.useEffect(() => {\n const highlightedNodeId = getHighlightedNodeId(nodeHighlightingProps);\n if (!highlightedNodeId) return;\n\n let index = 0;\n for (const node of visibleNodes) {\n if (isTreeModelNode(node) && node.id === highlightedNodeId) break;\n\n index++;\n }\n\n assert(variableSizeListRef.current !== null);\n variableSizeListRef.current.scrollToItem(index);\n }, [nodeHighlightingProps]); // eslint-disable-line react-hooks/exhaustive-deps\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent) => {\n props.treeActions.onTreeKeyDown(e);\n },\n [props.treeActions]\n );\n\n const handleKeyUp = React.useCallback(\n (e: React.KeyboardEvent) => {\n props.treeActions.onTreeKeyUp(e);\n },\n [props.treeActions]\n );\n\n const onItemsRendered = props.onItemsRendered;\n const handleRenderedItemsChange = React.useCallback(\n (onItemsRenderedProps: ListOnItemsRenderedProps) => {\n onItemsRendered && onItemsRendered({ ...onItemsRenderedProps });\n },\n [onItemsRendered]\n );\n\n return (\n <TreeRendererContextProvider value={rendererContext}>\n <CoreTree\n ref={coreTreeRef}\n className={classnames(\n \"components-controlledTree\",\n \"components-smallEditor-host\"\n )}\n onKeyDown={handleKeyDown}\n onKeyUp={handleKeyUp}\n >\n <VariableSizeList\n ref={variableSizeListRef}\n className={\"ReactWindow__VariableSizeList\"}\n width={props.width}\n height={props.height}\n itemCount={props.visibleNodes.getNumNodes()}\n itemSize={itemSize}\n estimatedItemSize={25}\n overscanCount={10}\n itemKey={itemKey}\n onItemsRendered={handleRenderedItemsChange}\n >\n {Node}\n </VariableSizeList>\n </CoreTree>\n </TreeRendererContextProvider>\n );\n});\n\nfunction getNodeKey(node: TreeModelNode | TreeModelNodePlaceholder): string {\n if (isTreeModelNode(node)) {\n return node.id;\n }\n return `${node.parentId || \"\"}-${node.childIndex}`;\n}\n\nconst Node = React.memo<React.FC<ListChildComponentProps>>(function Node(\n props: ListChildComponentProps\n) {\n const { index, style } = props;\n\n const {\n nodeRenderer,\n visibleNodes,\n treeActions,\n nodeLoader,\n onLabelRendered,\n highlightingEngine,\n onNodeEditorClosed,\n } = useTreeRendererContext(Node);\n const node = visibleNodes.getAtIndex(index)!;\n\n useNodeLoading(node, visibleNodes, nodeLoader);\n\n // Mark selected node's wrapper to make detecting consecutively selected nodes with css selectors possible\n const className = classnames(\"node-wrapper\", {\n \"is-selected\": isTreeModelNode(node) && node.isSelected,\n });\n\n const isEditing = React.useRef(false);\n React.useEffect(() => {\n if (!isTreeModelNode(node)) return;\n\n if (!isEditing.current && node.editingInfo) {\n isEditing.current = true;\n } else if (isEditing.current && node.editingInfo === undefined) {\n isEditing.current = false;\n\n if (onNodeEditorClosed) onNodeEditorClosed();\n }\n }, [node, onNodeEditorClosed]);\n\n return (\n <div className={className} style={style}>\n {React.useMemo(() => {\n if (isTreeModelNode(node)) {\n const nodeHighlightProps = highlightingEngine\n ? highlightingEngine.createRenderProps(node)\n : undefined;\n return nodeRenderer({\n node,\n treeActions,\n onLabelRendered,\n nodeHighlightProps,\n });\n }\n\n return <TreeNodePlaceholder level={node.depth} />;\n }, [\n node,\n treeActions,\n nodeRenderer,\n onLabelRendered,\n highlightingEngine,\n ])}\n </div>\n );\n},\nareEqual);\n\nfunction useNodeLoading(\n node: TreeModelNode | TreeModelNodePlaceholder,\n visibleNodes: VisibleTreeNodes,\n nodeLoader: ITreeNodeLoader\n): void {\n React.useEffect(\n () => {\n if (!isTreeModelNodePlaceholder(node)) {\n return;\n }\n\n const treeModel = visibleNodes.getModel();\n const parentNode = node.parentId\n ? treeModel.getNode(node.parentId)\n : treeModel.getRootNode();\n if (!isTreeModelNode(parentNode) && !isTreeModelRootNode(parentNode)) {\n return;\n }\n\n const subscription = concat(\n timer(NODE_LOAD_DELAY),\n toRxjsObservable(nodeLoader.loadNode(parentNode, node.childIndex))\n ).subscribe();\n return () => subscription.unsubscribe();\n },\n // Mounted node component never changes its node key, thus it's safe to run this effect only once for every\n // nodeLoader change.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [nodeLoader]\n );\n}\n\nfunction useTreeRendererAttributes(\n ref: React.Ref<TreeRendererAttributes>,\n variableSizeListRef: React.RefObject<VariableSizeList>,\n visibleNodes: VisibleTreeNodes\n) {\n const visibleNodesRef = React.useRef(visibleNodes);\n visibleNodesRef.current = visibleNodes;\n React.useImperativeHandle(\n ref,\n () => ({\n scrollToNode: (nodeId, alignment) => {\n assert(variableSizeListRef.current !== null);\n variableSizeListRef.current.scrollToItem(\n visibleNodesRef.current.getIndexOfNode(nodeId),\n alignment\n );\n },\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n}\n\nfunction usePrevious<T>(value: T): T | undefined {\n const ref = React.useRef<T>();\n\n React.useEffect(() => {\n ref.current = value;\n }, [value]);\n\n return ref.current;\n}\n\nfunction getHighlightedNodeId(highlightableTreeProps?: HighlightableTreeProps) {\n return highlightableTreeProps && highlightableTreeProps.activeMatch\n ? highlightableTreeProps.activeMatch.nodeId\n : undefined;\n}\n\nfunction useScrollToActiveMatch(\n treeRef: React.RefObject<CoreTree>,\n highlightableTreeProps?: HighlightableTreeProps\n) {\n const scrollToActive = React.useRef(false);\n React.useEffect(() => {\n scrollToActive.current = true;\n }, [highlightableTreeProps]);\n\n const onLabelRendered = React.useCallback(\n (node: TreeModelNode) => {\n const highlightedNodeId = getHighlightedNodeId(highlightableTreeProps);\n if (\n !treeRef.current ||\n !scrollToActive.current ||\n !highlightedNodeId ||\n highlightedNodeId !== node.id\n )\n return;\n\n scrollToActive.current = false;\n const scrollTo = [\n ...treeRef.current.getElementsByClassName(\n HighlightingEngine.ACTIVE_CLASS_NAME\n ),\n ];\n if (scrollTo.length > 0 && scrollTo[0].scrollIntoView !== undefined)\n scrollTo[0].scrollIntoView({\n behavior: \"auto\",\n block: \"nearest\",\n inline: \"end\",\n });\n },\n [highlightableTreeProps, treeRef]\n );\n\n return onLabelRendered;\n}\n\nfunction setFocusToSelected(treeRef: React.RefObject<CoreTree>) {\n if (treeRef.current)\n treeRef.current.setFocusByClassName(\".core-tree-node.is-selected\");\n}\n"]}
1
+ {"version":3,"file":"TreeRenderer.js","sourceRoot":"","sources":["../../../../../../src/components-react/tree/controlled/component/TreeRenderer.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,uBAAuB,CAAC;AAC/B,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,kCAAkC,EAAE,MAAM,iDAAiD,CAAC;AAErG,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAO9D,OAAO,EACL,eAAe,EACf,0BAA0B,EAC1B,mBAAmB,GACpB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,MAAM,eAAe,GAAG,GAAG,CAAC;AAyF5B,mEAAmE;AACnE,MAAM;AACJ,4CAA4C;AAC5C,2BAA2B;AAE3B,4CAA4C;AAC5C,4BAA4B;AAE5B,mDAAmD;AACnD,sBAAsB,EACvB,GAAG,kCAAkC,CACpC,qBAAqB,CACtB,CAAC;AAEF;;;GAGG;AACH,MAAM,OAAO,YACX,SAAQ,KAAK,CAAC,SAA4B;IAD5C;;QAIU,SAAI,GAAG,KAAK,CAAC,SAAS,EAA0B,CAAC;IAU3D,CAAC;IARC,kBAAkB;IACX,YAAY,CAAC,MAAc,EAAE,SAAqB;QACvD,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC3E,CAAC;IAEe,MAAM;QACpB,OAAO,oBAAC,iBAAiB,IAAC,GAAG,EAAE,IAAI,CAAC,IAAI,KAAM,IAAI,CAAC,KAAK,GAAI,CAAC;IAC/D,CAAC;CACF;AAED,8CAA8C;AAC9C,MAAM,iBAAiB,GAAG,KAAK,CAAC,UAAU,CAGxC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACf,MAAM,mBAAmB,GAAG,KAAK,CAAC,MAAM,CAAmB,IAAI,CAAC,CAAC;IACjE,yBAAyB,CAAC,GAAG,EAAE,mBAAmB,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAExE,MAAM,oBAAoB,GAAG,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC7D,MAAM,kBAAkB,GAAG,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACzD,IACE,CAAC,oBAAoB,KAAK,SAAS;QACjC,oBAAoB,KAAK,KAAK,CAAC,YAAY,CAAC;QAC9C,CAAC,kBAAkB,KAAK,SAAS;YAC/B,kBAAkB,KAAK,KAAK,CAAC,UAAU,CAAC,EAC1C,CAAC;QACD,IAAI,mBAAmB,CAAC,OAAO,EAAE,CAAC;YAChC,mBAAmB,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED,mDAAmD;IACnD,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAW,IAAI,CAAC,CAAC;IACjD,MAAM,eAAe,GAAG,sBAAsB,CAC5C,WAAW,EACX,KAAK,CAAC,qBAAqB,CAC5B,CAAC;IACF,MAAM,kBAAkB,GAAG,KAAK,CAAC,OAAO,CACtC,GAAG,EAAE,CACH,KAAK,CAAC,qBAAqB;QAC3B,IAAI,kBAAkB,CAAC,KAAK,CAAC,qBAAqB,CAAC,EACrD,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAC9B,CAAC;IAEF,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CACnC,GAAG,EAAE,CAAC,CAAC;QACL,YAAY,EAAE,KAAK,CAAC,YAAY;YAC9B,CAAC,CAAC,KAAK,CAAC,YAAY;YACpB,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,oBAAC,gBAAgB,OAAK,SAAS,GAAI;QACtD,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,eAAe;QACf,kBAAkB;QAClB,kBAAkB,EAAE,GAAG,EAAE;YACvB,kBAAkB,CAAC,WAAW,CAAC,CAAC;YAChC,KAAK,CAAC,kBAAkB,IAAI,KAAK,CAAC,kBAAkB,EAAE,CAAC;QACzD,CAAC;KACF,CAAC,EACF,CAAC,KAAK,EAAE,eAAe,EAAE,kBAAkB,CAAC,CAC7C,CAAC;IAEF,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAC/B,CAAC,KAAa,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAE,CAAC,EACpE,CAAC,KAAK,CAAC,YAAY,CAAC,CACrB,CAAC;IAEF,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IAC3C,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAChC,CAAC,KAAa,EAAE,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAE,EAAE,KAAK,CAAC,EACrE,CAAC,UAAU,EAAE,YAAY,CAAC,CAC3B,CAAC;IAEF,MAAM,EAAE,qBAAqB,EAAE,GAAG,KAAK,CAAC;IACxC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,qBAAqB,CAAC,CAAC;QACtE,IAAI,CAAC,iBAAiB;YAAE,OAAO;QAE/B,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YAChC,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,iBAAiB;gBAAE,MAAM;YAElE,KAAK,EAAE,CAAC;QACV,CAAC;QAED,MAAM,CAAC,mBAAmB,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;QAC7C,mBAAmB,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC,EAAE,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,kDAAkD;IAE/E,MAAM,aAAa,GAAG,KAAK,CAAC,WAAW,CACrC,CAAC,CAAsB,EAAE,EAAE;QACzB,KAAK,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC,EACD,CAAC,KAAK,CAAC,WAAW,CAAC,CACpB,CAAC;IAEF,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CACnC,CAAC,CAAsB,EAAE,EAAE;QACzB,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC,EACD,CAAC,KAAK,CAAC,WAAW,CAAC,CACpB,CAAC;IAEF,MAAM,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC;IAC9C,MAAM,yBAAyB,GAAG,KAAK,CAAC,WAAW,CACjD,CAAC,oBAA8C,EAAE,EAAE;QACjD,eAAe,IAAI,eAAe,CAAC,EAAE,GAAG,oBAAoB,EAAE,CAAC,CAAC;IAClE,CAAC,EACD,CAAC,eAAe,CAAC,CAClB,CAAC;IAEF,OAAO,CACL,oBAAC,2BAA2B,IAAC,KAAK,EAAE,eAAe;QAEjD,oBAAC,QAAQ,IACP,GAAG,EAAE,WAAW,EAChB,SAAS,EAAE,UAAU,CACnB,2BAA2B,EAC3B,6BAA6B,CAC9B,EACD,SAAS,EAAE,aAAa,EACxB,OAAO,EAAE,WAAW;YAEpB,oBAAC,gBAAgB,IACf,GAAG,EAAE,mBAAmB,EACxB,SAAS,EAAE,+BAA+B,EAC1C,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,EAC3C,QAAQ,EAAE,QAAQ,EAClB,iBAAiB,EAAE,EAAE,EACrB,aAAa,EAAE,EAAE,EACjB,OAAO,EAAE,OAAO,EAChB,eAAe,EAAE,yBAAyB,IAEzC,IAAI,CACY,CACV,CACiB,CAC/B,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,SAAS,UAAU,CAAC,IAA8C;IAChE,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IACD,OAAO,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;AACrD,CAAC;AAED,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAoC,SAAS,IAAI,CACtE,KAA8B;IAE9B,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IAE/B,MAAM,EACJ,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,UAAU,EACV,eAAe,EACf,kBAAkB,EAClB,kBAAkB,GACnB,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,IAAI,GAAG,YAAY,CAAC,UAAU,CAAC,KAAK,CAAE,CAAC;IAE7C,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;IAE/C,0GAA0G;IAC1G,MAAM,SAAS,GAAG,UAAU,CAAC,cAAc,EAAE;QAC3C,aAAa,EAAE,eAAe,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU;KACxD,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;YAAE,OAAO;QAEnC,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAC3C,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC;QAC3B,CAAC;aAAM,IAAI,SAAS,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YAC/D,SAAS,CAAC,OAAO,GAAG,KAAK,CAAC;YAE1B,IAAI,kBAAkB;gBAAE,kBAAkB,EAAE,CAAC;QAC/C,CAAC;IACH,CAAC,EAAE,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAE/B,OAAO,CACL,6BAAK,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,IACpC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QAClB,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,MAAM,kBAAkB,GAAG,kBAAkB;gBAC3C,CAAC,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,IAAI,CAAC;gBAC5C,CAAC,CAAC,SAAS,CAAC;YACd,OAAO,YAAY,CAAC;gBAClB,IAAI;gBACJ,WAAW;gBACX,eAAe;gBACf,kBAAkB;aACnB,CAAC,CAAC;QACL,CAAC;QAED,mDAAmD;QACnD,OAAO,oBAAC,mBAAmB,IAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAI,CAAC;IACpD,CAAC,EAAE;QACD,IAAI;QACJ,WAAW;QACX,YAAY;QACZ,eAAe;QACf,kBAAkB;KACnB,CAAC,CACE,CACP,CAAC;AACJ,CAAC,EACD,QAAQ,CAAC,CAAC;AAEV,SAAS,cAAc,CACrB,IAA8C,EAC9C,YAA8B,EAC9B,UAA2B;IAE3B,KAAK,CAAC,SAAS,CACb,GAAG,EAAE;QACH,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;QAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ;YAC9B,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;YAClC,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;QAC5B,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAAE,CAAC;YACrE,OAAO;QACT,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,CACzB,KAAK,CAAC,eAAe,CAAC,EACtB,gBAAgB,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CACnE,CAAC,SAAS,EAAE,CAAC;QACd,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;IAC1C,CAAC;IACD,2GAA2G;IAC3G,qBAAqB;IACrB,uDAAuD;IACvD,CAAC,UAAU,CAAC,CACb,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAChC,GAAsC,EACtC,mBAAsD,EACtD,YAA8B;IAE9B,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACnD,eAAe,CAAC,OAAO,GAAG,YAAY,CAAC;IACvC,KAAK,CAAC,mBAAmB,CACvB,GAAG,EACH,GAAG,EAAE,CAAC,CAAC;QACL,YAAY,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE;YAClC,MAAM,CAAC,mBAAmB,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;YAC7C,mBAAmB,CAAC,OAAO,CAAC,YAAY,CACtC,eAAe,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,EAC9C,SAAS,CACV,CAAC;QACJ,CAAC;KACF,CAAC;IACF,uDAAuD;IACvD,EAAE,CACH,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAI,KAAQ;IAC9B,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,EAAK,CAAC;IAE9B,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;IACtB,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,OAAO,GAAG,CAAC,OAAO,CAAC;AACrB,CAAC;AAED,SAAS,oBAAoB,CAAC,sBAA+C;IAC3E,OAAO,sBAAsB,IAAI,sBAAsB,CAAC,WAAW;QACjE,CAAC,CAAC,sBAAsB,CAAC,WAAW,CAAC,MAAM;QAC3C,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,SAAS,sBAAsB;AAC7B,mDAAmD;AACnD,OAAkC,EAClC,sBAA+C;IAE/C,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3C,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC;IAChC,CAAC,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAE7B,MAAM,eAAe,GAAG,KAAK,CAAC,WAAW,CACvC,CAAC,IAAmB,EAAE,EAAE;QACtB,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,sBAAsB,CAAC,CAAC;QACvE,IACE,CAAC,OAAO,CAAC,OAAO;YAChB,CAAC,cAAc,CAAC,OAAO;YACvB,CAAC,iBAAiB;YAClB,iBAAiB,KAAK,IAAI,CAAC,EAAE;YAE7B,OAAO;QAET,cAAc,CAAC,OAAO,GAAG,KAAK,CAAC;QAC/B,MAAM,QAAQ,GAAG;YACf,GAAG,OAAO,CAAC,OAAO,CAAC,sBAAsB,CACvC,kBAAkB,CAAC,iBAAiB,CACrC;SACF,CAAC;QACF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,cAAc,KAAK,SAAS;YACjE,QAAQ,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;gBACzB,QAAQ,EAAE,MAAM;gBAChB,KAAK,EAAE,SAAS;gBAChB,MAAM,EAAE,KAAK;aACd,CAAC,CAAC;IACP,CAAC,EACD,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAClC,CAAC;IAEF,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,mDAAmD;AACnD,SAAS,kBAAkB,CAAC,OAAkC;IAC5D,IAAI,OAAO,CAAC,OAAO;QACjB,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,6BAA6B,CAAC,CAAC;AACvE,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tree\n */\n\nimport \"./ControlledTree.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport type {\n ListChildComponentProps,\n ListOnItemsRenderedProps,\n} from \"react-window\";\nimport { areEqual, VariableSizeList } from \"react-window\";\nimport { concat, timer } from \"rxjs\";\nimport { assert } from \"@itwin/core-bentley\";\nimport { Tree as CoreTree, TreeNodePlaceholder } from \"@itwin/core-react\";\nimport { createContextWithMandatoryProvider } from \"../../../common/UseContextWithMandatoryProvider\";\nimport type { HighlightableTreeProps } from \"../../HighlightingEngine\";\nimport { HighlightingEngine } from \"../../HighlightingEngine\";\nimport type { TreeActions } from \"../TreeActions\";\nimport type {\n TreeModelNode,\n TreeModelNodePlaceholder,\n VisibleTreeNodes,\n} from \"../TreeModel\";\nimport {\n isTreeModelNode,\n isTreeModelNodePlaceholder,\n isTreeModelRootNode,\n} from \"../TreeModel\";\nimport type { ITreeNodeLoader } from \"../TreeNodeLoader\";\nimport type { TreeNodeRendererProps } from \"./TreeNodeRenderer\";\nimport { TreeNodeRenderer } from \"./TreeNodeRenderer\";\nimport { toRxjsObservable } from \"../Observable\";\n\nconst NODE_LOAD_DELAY = 500;\n\n/**\n * Data structure that describes range of rendered items in the tree.\n * @public\n */\nexport interface RenderedItemsRange {\n overscanStartIndex: number;\n overscanStopIndex: number;\n visibleStartIndex: number;\n visibleStopIndex: number;\n}\n\n/**\n * Properties for [[TreeRenderer]] component.\n * @public\n */\nexport interface TreeRendererProps {\n treeActions: TreeActions;\n nodeLoader: ITreeNodeLoader;\n\n /** Callback that is used to determine node height. */\n nodeHeight: (\n node: TreeModelNode | TreeModelNodePlaceholder,\n index: number\n ) => number;\n\n /** Flat list of nodes to be rendered. */\n visibleNodes: VisibleTreeNodes;\n\n /** Callback to render custom node. */\n nodeRenderer?: (props: TreeNodeRendererProps) => React.ReactNode;\n\n /** Properties used to highlight nodes and scroll to active match while filtering. */\n nodeHighlightingProps?: HighlightableTreeProps;\n\n /** Callback that is called when rendered items range changes. */\n onItemsRendered?: (renderedItems: RenderedItemsRange) => void;\n\n /**\n * Callback used when an editor closes\n * @internal\n */\n onNodeEditorClosed?: () => void;\n\n /** Width of the tree area. */\n width: number;\n\n /** Height of the tree area. */\n height: number;\n}\n\n/**\n * Attributes found on TreeRenderer component\n * @public\n */\nexport interface TreeRendererAttributes {\n /**\n * Scroll to the specified node.\n * @param nodeId Id of the target node to scroll to.\n * @param alignment Controls scrolling behavior. See [react-window](https://github.com/bvaughn/react-window) documentation\n * on `scrollToItem` for details.\n */\n scrollToNode(nodeId: string, alignment?: Alignment): void;\n}\n\ntype Alignment = \"auto\" | \"smart\" | \"center\" | \"end\" | \"start\";\n\n/** [[TreeRenderer]] context that is provided to each rendered node. */\ninterface TreeRendererContext {\n /** Callback to render custom node. */\n nodeRenderer: (props: TreeNodeRendererProps) => React.ReactNode;\n\n treeActions: TreeActions;\n nodeLoader: ITreeNodeLoader;\n\n /** Flat list of nodes to be rendered. */\n visibleNodes: VisibleTreeNodes;\n\n /** Engine used to created node highlighting properties. */\n highlightingEngine?: HighlightingEngine;\n\n /** Callback used detect when label is rendered. It is used by TreeRenderer for scrolling to active match. */\n onLabelRendered?: (node: TreeModelNode) => void;\n\n /** Callback used when an editor closes */\n onNodeEditorClosed?: () => void;\n}\n\n/** [[TreeRenderer]] context provider, consumer and custom hook. */\nconst [\n /** Context of [[TreeRenderer]] provider. */\n TreeRendererContextProvider,\n\n /** Context of [[TreeRenderer]] consumer. */\n _TreeRendererContextConsumer,\n\n /** Custom hook to use [[TreeRenderer]] context. */\n useTreeRendererContext,\n] = createContextWithMandatoryProvider<TreeRendererContext>(\n \"TreeRendererContext\"\n);\n\n/**\n * Default tree rendering component.\n * @public\n */\nexport class TreeRenderer\n extends React.Component<TreeRendererProps>\n implements TreeRendererAttributes\n{\n private _ref = React.createRef<TreeRendererAttributes>();\n\n /** @inheritdoc */\n public scrollToNode(nodeId: string, alignment?: Alignment) {\n if (this._ref.current) this._ref.current.scrollToNode(nodeId, alignment);\n }\n\n public override render() {\n return <TreeRendererInner ref={this._ref} {...this.props} />;\n }\n}\n\n// eslint-disable-next-line react/display-name\nconst TreeRendererInner = React.forwardRef<\n TreeRendererAttributes,\n TreeRendererProps\n>((props, ref) => {\n const variableSizeListRef = React.useRef<VariableSizeList>(null);\n useTreeRendererAttributes(ref, variableSizeListRef, props.visibleNodes);\n\n const previousVisibleNodes = usePrevious(props.visibleNodes);\n const previousNodeHeight = usePrevious(props.nodeHeight);\n if (\n (previousVisibleNodes !== undefined &&\n previousVisibleNodes !== props.visibleNodes) ||\n (previousNodeHeight !== undefined &&\n previousNodeHeight !== props.nodeHeight)\n ) {\n if (variableSizeListRef.current) {\n variableSizeListRef.current.resetAfterIndex(0, false);\n }\n }\n\n // eslint-disable-next-line deprecation/deprecation\n const coreTreeRef = React.useRef<CoreTree>(null);\n const onLabelRendered = useScrollToActiveMatch(\n coreTreeRef,\n props.nodeHighlightingProps\n );\n const highlightingEngine = React.useMemo(\n () =>\n props.nodeHighlightingProps &&\n new HighlightingEngine(props.nodeHighlightingProps),\n [props.nodeHighlightingProps]\n );\n\n const rendererContext = React.useMemo<TreeRendererContext>(\n () => ({\n nodeRenderer: props.nodeRenderer\n ? props.nodeRenderer\n : (nodeProps) => <TreeNodeRenderer {...nodeProps} />,\n treeActions: props.treeActions,\n nodeLoader: props.nodeLoader,\n visibleNodes: props.visibleNodes,\n onLabelRendered,\n highlightingEngine,\n onNodeEditorClosed: () => {\n setFocusToSelected(coreTreeRef);\n props.onNodeEditorClosed && props.onNodeEditorClosed();\n },\n }),\n [props, onLabelRendered, highlightingEngine]\n );\n\n const itemKey = React.useCallback(\n (index: number) => getNodeKey(props.visibleNodes.getAtIndex(index)!),\n [props.visibleNodes]\n );\n\n const { nodeHeight, visibleNodes } = props;\n const itemSize = React.useCallback(\n (index: number) => nodeHeight(visibleNodes.getAtIndex(index)!, index),\n [nodeHeight, visibleNodes]\n );\n\n const { nodeHighlightingProps } = props;\n React.useEffect(() => {\n const highlightedNodeId = getHighlightedNodeId(nodeHighlightingProps);\n if (!highlightedNodeId) return;\n\n let index = 0;\n for (const node of visibleNodes) {\n if (isTreeModelNode(node) && node.id === highlightedNodeId) break;\n\n index++;\n }\n\n assert(variableSizeListRef.current !== null);\n variableSizeListRef.current.scrollToItem(index);\n }, [nodeHighlightingProps]); // eslint-disable-line react-hooks/exhaustive-deps\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent) => {\n props.treeActions.onTreeKeyDown(e);\n },\n [props.treeActions]\n );\n\n const handleKeyUp = React.useCallback(\n (e: React.KeyboardEvent) => {\n props.treeActions.onTreeKeyUp(e);\n },\n [props.treeActions]\n );\n\n const onItemsRendered = props.onItemsRendered;\n const handleRenderedItemsChange = React.useCallback(\n (onItemsRenderedProps: ListOnItemsRenderedProps) => {\n onItemsRendered && onItemsRendered({ ...onItemsRenderedProps });\n },\n [onItemsRendered]\n );\n\n return (\n <TreeRendererContextProvider value={rendererContext}>\n {/* eslint-disable-next-line deprecation/deprecation */}\n <CoreTree\n ref={coreTreeRef}\n className={classnames(\n \"components-controlledTree\",\n \"components-smallEditor-host\"\n )}\n onKeyDown={handleKeyDown}\n onKeyUp={handleKeyUp}\n >\n <VariableSizeList\n ref={variableSizeListRef}\n className={\"ReactWindow__VariableSizeList\"}\n width={props.width}\n height={props.height}\n itemCount={props.visibleNodes.getNumNodes()}\n itemSize={itemSize}\n estimatedItemSize={25}\n overscanCount={10}\n itemKey={itemKey}\n onItemsRendered={handleRenderedItemsChange}\n >\n {Node}\n </VariableSizeList>\n </CoreTree>\n </TreeRendererContextProvider>\n );\n});\n\nfunction getNodeKey(node: TreeModelNode | TreeModelNodePlaceholder): string {\n if (isTreeModelNode(node)) {\n return node.id;\n }\n return `${node.parentId || \"\"}-${node.childIndex}`;\n}\n\nconst Node = React.memo<React.FC<ListChildComponentProps>>(function Node(\n props: ListChildComponentProps\n) {\n const { index, style } = props;\n\n const {\n nodeRenderer,\n visibleNodes,\n treeActions,\n nodeLoader,\n onLabelRendered,\n highlightingEngine,\n onNodeEditorClosed,\n } = useTreeRendererContext(Node);\n const node = visibleNodes.getAtIndex(index)!;\n\n useNodeLoading(node, visibleNodes, nodeLoader);\n\n // Mark selected node's wrapper to make detecting consecutively selected nodes with css selectors possible\n const className = classnames(\"node-wrapper\", {\n \"is-selected\": isTreeModelNode(node) && node.isSelected,\n });\n\n const isEditing = React.useRef(false);\n React.useEffect(() => {\n if (!isTreeModelNode(node)) return;\n\n if (!isEditing.current && node.editingInfo) {\n isEditing.current = true;\n } else if (isEditing.current && node.editingInfo === undefined) {\n isEditing.current = false;\n\n if (onNodeEditorClosed) onNodeEditorClosed();\n }\n }, [node, onNodeEditorClosed]);\n\n return (\n <div className={className} style={style}>\n {React.useMemo(() => {\n if (isTreeModelNode(node)) {\n const nodeHighlightProps = highlightingEngine\n ? highlightingEngine.createRenderProps(node)\n : undefined;\n return nodeRenderer({\n node,\n treeActions,\n onLabelRendered,\n nodeHighlightProps,\n });\n }\n\n // eslint-disable-next-line deprecation/deprecation\n return <TreeNodePlaceholder level={node.depth} />;\n }, [\n node,\n treeActions,\n nodeRenderer,\n onLabelRendered,\n highlightingEngine,\n ])}\n </div>\n );\n},\nareEqual);\n\nfunction useNodeLoading(\n node: TreeModelNode | TreeModelNodePlaceholder,\n visibleNodes: VisibleTreeNodes,\n nodeLoader: ITreeNodeLoader\n): void {\n React.useEffect(\n () => {\n if (!isTreeModelNodePlaceholder(node)) {\n return;\n }\n\n const treeModel = visibleNodes.getModel();\n const parentNode = node.parentId\n ? treeModel.getNode(node.parentId)\n : treeModel.getRootNode();\n if (!isTreeModelNode(parentNode) && !isTreeModelRootNode(parentNode)) {\n return;\n }\n\n const subscription = concat(\n timer(NODE_LOAD_DELAY),\n toRxjsObservable(nodeLoader.loadNode(parentNode, node.childIndex))\n ).subscribe();\n return () => subscription.unsubscribe();\n },\n // Mounted node component never changes its node key, thus it's safe to run this effect only once for every\n // nodeLoader change.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [nodeLoader]\n );\n}\n\nfunction useTreeRendererAttributes(\n ref: React.Ref<TreeRendererAttributes>,\n variableSizeListRef: React.RefObject<VariableSizeList>,\n visibleNodes: VisibleTreeNodes\n) {\n const visibleNodesRef = React.useRef(visibleNodes);\n visibleNodesRef.current = visibleNodes;\n React.useImperativeHandle(\n ref,\n () => ({\n scrollToNode: (nodeId, alignment) => {\n assert(variableSizeListRef.current !== null);\n variableSizeListRef.current.scrollToItem(\n visibleNodesRef.current.getIndexOfNode(nodeId),\n alignment\n );\n },\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n}\n\nfunction usePrevious<T>(value: T): T | undefined {\n const ref = React.useRef<T>();\n\n React.useEffect(() => {\n ref.current = value;\n }, [value]);\n\n return ref.current;\n}\n\nfunction getHighlightedNodeId(highlightableTreeProps?: HighlightableTreeProps) {\n return highlightableTreeProps && highlightableTreeProps.activeMatch\n ? highlightableTreeProps.activeMatch.nodeId\n : undefined;\n}\n\nfunction useScrollToActiveMatch(\n // eslint-disable-next-line deprecation/deprecation\n treeRef: React.RefObject<CoreTree>,\n highlightableTreeProps?: HighlightableTreeProps\n) {\n const scrollToActive = React.useRef(false);\n React.useEffect(() => {\n scrollToActive.current = true;\n }, [highlightableTreeProps]);\n\n const onLabelRendered = React.useCallback(\n (node: TreeModelNode) => {\n const highlightedNodeId = getHighlightedNodeId(highlightableTreeProps);\n if (\n !treeRef.current ||\n !scrollToActive.current ||\n !highlightedNodeId ||\n highlightedNodeId !== node.id\n )\n return;\n\n scrollToActive.current = false;\n const scrollTo = [\n ...treeRef.current.getElementsByClassName(\n HighlightingEngine.ACTIVE_CLASS_NAME\n ),\n ];\n if (scrollTo.length > 0 && scrollTo[0].scrollIntoView !== undefined)\n scrollTo[0].scrollIntoView({\n behavior: \"auto\",\n block: \"nearest\",\n inline: \"end\",\n });\n },\n [highlightableTreeProps, treeRef]\n );\n\n return onLabelRendered;\n}\n\n// eslint-disable-next-line deprecation/deprecation\nfunction setFocusToSelected(treeRef: React.RefObject<CoreTree>) {\n if (treeRef.current)\n treeRef.current.setFocusByClassName(\".core-tree-node.is-selected\");\n}\n"]}
@@ -141,7 +141,6 @@ export * from "./components-react/tree/controlled/component/TreeRenderer";
141
141
  export * from "./components-react/tree/controlled/internal/SparseTree";
142
142
  /** @docs-package-description
143
143
  * The components-react package contains React components that are data-oriented, such as PropertyGrid, Table and Tree.
144
- * For more information, see [learning about components-react]($docs/learning/ui/components/index.md).
145
144
  */
146
145
  /**
147
146
  * @docs-group-description Common
@@ -1 +1 @@
1
- {"version":3,"file":"components-react.d.ts","sourceRoot":"","sources":["../../src/components-react.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"components-react.d.ts","sourceRoot":"","sources":["../../src/components-react.ts"],"names":[],"mappings":"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"}
@@ -147,7 +147,6 @@ export * from "./components-react/tree/controlled/component/TreeRenderer";
147
147
  export * from "./components-react/tree/controlled/internal/SparseTree";
148
148
  /** @docs-package-description
149
149
  * The components-react package contains React components that are data-oriented, such as PropertyGrid, Table and Tree.
150
- * For more information, see [learning about components-react]($docs/learning/ui/components/index.md).
151
150
  */
152
151
  /**
153
152
  * @docs-group-description Common