@elliemae/ds-treeview 2.0.1 → 2.1.0-rc.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/cjs/TreeView.js +5 -103
  2. package/cjs/TreeViewContext.js +44 -47
  3. package/cjs/config/useTreeview.js +137 -0
  4. package/cjs/index.js +1 -7
  5. package/cjs/parts/CheckboxSelectable.js +7 -9
  6. package/cjs/parts/ExpandCaret.js +17 -11
  7. package/cjs/parts/Icon.js +4 -0
  8. package/cjs/parts/NestingSpace.js +15 -22
  9. package/cjs/parts/RadioSelectable.js +7 -9
  10. package/cjs/parts/TreeItem.js +16 -13
  11. package/cjs/parts/TreeList.js +6 -4
  12. package/cjs/plugins/dnd/TreeDndPlugin.js +1 -1
  13. package/cjs/react-desc-prop-types.js +28 -27
  14. package/cjs/related-components/TreeViewSearchBar.js +9 -1
  15. package/cjs/{deprecated/plugins/selectable/helper.js → sharedTypes.js} +0 -0
  16. package/cjs/utils/dnd-helpers.js +2 -4
  17. package/cjs/utils/group-expands-helpers.js +34 -8
  18. package/cjs/utils/keyboard-helpers.js +64 -60
  19. package/cjs/utils/object-helpers.js +25 -7
  20. package/cjs/utils/refs-helpers.js +2 -2
  21. package/cjs/utils/selectable-helper.js +2 -2
  22. package/cjs/utils/tree-helpers.js +42 -27
  23. package/cjs/utils/useDnDHelpers.js +107 -100
  24. package/cjs/utils/useInstanceRefActions.js +3 -2
  25. package/cjs/utils/useTree.js +27 -8
  26. package/esm/TreeView.js +6 -103
  27. package/esm/TreeViewContext.js +44 -47
  28. package/esm/config/useTreeview.js +129 -0
  29. package/esm/index.js +0 -8
  30. package/esm/parts/CheckboxSelectable.js +7 -9
  31. package/esm/parts/ExpandCaret.js +17 -11
  32. package/esm/parts/Icon.js +4 -0
  33. package/esm/parts/NestingSpace.js +15 -21
  34. package/esm/parts/RadioSelectable.js +7 -9
  35. package/esm/parts/TreeItem.js +16 -13
  36. package/esm/parts/TreeList.js +6 -4
  37. package/esm/plugins/dnd/TreeDndPlugin.js +1 -1
  38. package/esm/react-desc-prop-types.js +28 -27
  39. package/esm/related-components/TreeViewSearchBar.js +9 -1
  40. package/esm/{deprecated/plugins/selectable/helper.js → sharedTypes.js} +0 -0
  41. package/esm/utils/dnd-helpers.js +2 -4
  42. package/esm/utils/group-expands-helpers.js +34 -9
  43. package/esm/utils/keyboard-helpers.js +62 -58
  44. package/esm/utils/object-helpers.js +25 -7
  45. package/esm/utils/refs-helpers.js +2 -2
  46. package/esm/utils/selectable-helper.js +2 -2
  47. package/esm/utils/tree-helpers.js +42 -27
  48. package/esm/utils/useDnDHelpers.js +107 -100
  49. package/esm/utils/useInstanceRefActions.js +3 -2
  50. package/esm/utils/useTree.js +27 -8
  51. package/package.json +17 -128
  52. package/types/TreeView.d.ts +4 -148
  53. package/types/TreeViewContext.d.ts +4 -106
  54. package/types/config/useTreeview.d.ts +7 -0
  55. package/types/index.d.ts +0 -1
  56. package/types/parts/CheckboxSelectable.d.ts +5 -6
  57. package/types/parts/ChildrenCountDisplayer.d.ts +6 -6
  58. package/types/parts/ExpandCaret.d.ts +6 -6
  59. package/types/parts/Icon.d.ts +7 -5
  60. package/types/parts/NestingSpace.d.ts +3 -8
  61. package/types/parts/RadioSelectable.d.ts +5 -6
  62. package/types/parts/TreeItem.d.ts +22 -14
  63. package/types/parts/TreeItemText.d.ts +5 -5
  64. package/types/parts/TreeList.d.ts +22 -9
  65. package/types/react-desc-prop-types.d.ts +124 -43
  66. package/types/related-components/TreeViewSearchBar.d.ts +14 -11
  67. package/types/sharedTypes.d.ts +54 -0
  68. package/types/utils/array-helpers.d.ts +2 -2
  69. package/types/utils/dnd-helpers.d.ts +26 -25
  70. package/types/utils/group-expands-helpers.d.ts +13 -10
  71. package/types/utils/keyboard-helpers.d.ts +5 -3
  72. package/types/utils/object-helpers.d.ts +6 -2
  73. package/types/utils/refs-helpers.d.ts +4 -1
  74. package/types/utils/selectable-helper.d.ts +7 -3
  75. package/types/utils/string-helpers.d.ts +1 -1
  76. package/types/utils/tree-helpers.d.ts +25 -11
  77. package/types/utils/useDnDHelpers.d.ts +23 -3
  78. package/types/utils/useInstanceRefActions.d.ts +3 -3
  79. package/types/utils/useTree.d.ts +8 -7
  80. package/cjs/deprecated/TreeView.js +0 -72
  81. package/cjs/deprecated/__testUtils__/utils.js +0 -89
  82. package/cjs/deprecated/index.js +0 -27
  83. package/cjs/deprecated/plugins/dnd/TreeDndPlugin.js +0 -119
  84. package/cjs/deprecated/plugins/dnd/index.js +0 -9
  85. package/cjs/deprecated/plugins/dnd/renderers/DraggableItem.js +0 -67
  86. package/cjs/deprecated/plugins/dnd/renderers/DroppableList.js +0 -181
  87. package/cjs/deprecated/plugins/dnd/utils.js +0 -157
  88. package/cjs/deprecated/plugins/index.js +0 -21
  89. package/cjs/deprecated/plugins/roving/TreeRovingPlugin.js +0 -109
  90. package/cjs/deprecated/plugins/roving/index.js +0 -9
  91. package/cjs/deprecated/plugins/searchable/SearchableTreePlugin.js +0 -109
  92. package/cjs/deprecated/plugins/searchable/index.js +0 -9
  93. package/cjs/deprecated/plugins/searchable/utils.js +0 -7
  94. package/cjs/deprecated/plugins/selectable/SelectablePluginTree.js +0 -290
  95. package/cjs/deprecated/plugins/selectable/index.js +0 -9
  96. package/cjs/deprecated/plugins/selectable/utils.js +0 -19
  97. package/cjs/deprecated/plugins/toolbar/TreeToolbarPlugin.js +0 -128
  98. package/cjs/deprecated/plugins/toolbar/index.js +0 -9
  99. package/cjs/deprecated/plugins/tree/TreeDataPlugin.js +0 -281
  100. package/cjs/deprecated/plugins/tree/index.js +0 -9
  101. package/cjs/deprecated/plugins/tree/useExpandTreeState.js +0 -143
  102. package/cjs/deprecated/plugins/tree/utils.js +0 -43
  103. package/cjs/deprecated/plugins/tree/walkTreeStrategy.js +0 -60
  104. package/cjs/deprecated/plugins/virtualization/TreeVirtualizationPlugin.js +0 -209
  105. package/cjs/deprecated/plugins/virtualization/index.js +0 -9
  106. package/cjs/deprecated/renderers.js +0 -76
  107. package/cjs/prop-types.js +0 -61
  108. package/esm/deprecated/TreeView.js +0 -61
  109. package/esm/deprecated/__testUtils__/utils.js +0 -79
  110. package/esm/deprecated/index.js +0 -14
  111. package/esm/deprecated/plugins/dnd/TreeDndPlugin.js +0 -110
  112. package/esm/deprecated/plugins/dnd/index.js +0 -1
  113. package/esm/deprecated/plugins/dnd/renderers/DraggableItem.js +0 -59
  114. package/esm/deprecated/plugins/dnd/renderers/DroppableList.js +0 -172
  115. package/esm/deprecated/plugins/dnd/utils.js +0 -139
  116. package/esm/deprecated/plugins/index.js +0 -7
  117. package/esm/deprecated/plugins/roving/TreeRovingPlugin.js +0 -96
  118. package/esm/deprecated/plugins/roving/index.js +0 -1
  119. package/esm/deprecated/plugins/searchable/SearchableTreePlugin.js +0 -99
  120. package/esm/deprecated/plugins/searchable/index.js +0 -1
  121. package/esm/deprecated/plugins/searchable/utils.js +0 -3
  122. package/esm/deprecated/plugins/selectable/SelectablePluginTree.js +0 -280
  123. package/esm/deprecated/plugins/selectable/index.js +0 -1
  124. package/esm/deprecated/plugins/selectable/utils.js +0 -15
  125. package/esm/deprecated/plugins/toolbar/TreeToolbarPlugin.js +0 -114
  126. package/esm/deprecated/plugins/toolbar/index.js +0 -1
  127. package/esm/deprecated/plugins/tree/TreeDataPlugin.js +0 -269
  128. package/esm/deprecated/plugins/tree/index.js +0 -1
  129. package/esm/deprecated/plugins/tree/useExpandTreeState.js +0 -135
  130. package/esm/deprecated/plugins/tree/utils.js +0 -28
  131. package/esm/deprecated/plugins/tree/walkTreeStrategy.js +0 -56
  132. package/esm/deprecated/plugins/virtualization/TreeVirtualizationPlugin.js +0 -197
  133. package/esm/deprecated/plugins/virtualization/index.js +0 -1
  134. package/esm/deprecated/renderers.js +0 -59
  135. package/esm/prop-types.js +0 -46
  136. package/types/deprecated/TreeView.d.ts +0 -8
  137. package/types/deprecated/__testUtils__/utils.d.ts +0 -72
  138. package/types/deprecated/index.d.ts +0 -2
  139. package/types/deprecated/plugins/dnd/TreeDndPlugin.d.ts +0 -1
  140. package/types/deprecated/plugins/dnd/index.d.ts +0 -1
  141. package/types/deprecated/plugins/dnd/renderers/DraggableItem.d.ts +0 -3
  142. package/types/deprecated/plugins/dnd/renderers/DroppableList.d.ts +0 -6
  143. package/types/deprecated/plugins/dnd/tests/TreeDndPlugin.test.d.ts +0 -0
  144. package/types/deprecated/plugins/dnd/utils.d.ts +0 -28
  145. package/types/deprecated/plugins/index.d.ts +0 -7
  146. package/types/deprecated/plugins/roving/TreeRovingPlugin.d.ts +0 -1
  147. package/types/deprecated/plugins/roving/index.d.ts +0 -1
  148. package/types/deprecated/plugins/searchable/SearchableTreePlugin.d.ts +0 -1
  149. package/types/deprecated/plugins/searchable/index.d.ts +0 -1
  150. package/types/deprecated/plugins/searchable/utils.d.ts +0 -1
  151. package/types/deprecated/plugins/selectable/SelectablePluginTree.d.ts +0 -1
  152. package/types/deprecated/plugins/selectable/helper.d.ts +0 -0
  153. package/types/deprecated/plugins/selectable/index.d.ts +0 -1
  154. package/types/deprecated/plugins/selectable/tests/SelectablePluginTree.test.d.ts +0 -1
  155. package/types/deprecated/plugins/selectable/utils.d.ts +0 -1
  156. package/types/deprecated/plugins/toolbar/TreeToolbarPlugin.d.ts +0 -1
  157. package/types/deprecated/plugins/toolbar/index.d.ts +0 -1
  158. package/types/deprecated/plugins/tree/TreeDataPlugin.d.ts +0 -1
  159. package/types/deprecated/plugins/tree/index.d.ts +0 -1
  160. package/types/deprecated/plugins/tree/tests/TreeDataPlugin.test.d.ts +0 -1
  161. package/types/deprecated/plugins/tree/useExpandTreeState.d.ts +0 -14
  162. package/types/deprecated/plugins/tree/utils.d.ts +0 -8
  163. package/types/deprecated/plugins/tree/walkTreeStrategy.d.ts +0 -9
  164. package/types/deprecated/plugins/virtualization/TreeVirtualizationPlugin.d.ts +0 -1
  165. package/types/deprecated/plugins/virtualization/index.d.ts +0 -1
  166. package/types/deprecated/renderers.d.ts +0 -19
  167. package/types/prop-types.d.ts +0 -26
@@ -31,14 +31,16 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
31
31
  var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
32
32
  var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
33
33
 
34
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
34
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
35
35
 
36
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
36
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
37
37
  const TreeListItem = dsClassnames.aggregatedClasses('li', {
38
38
  'data-testid': cssClassesConstants.treeItemBlockName,
39
- role: 'treeitem'
39
+ role: 'treeitem' // temp fix untill we move to styled components
40
+
40
41
  })(cssClassesConstants.treeItemBlockName);
41
- const TreeListItemAddonsWrapper = dsClassnames.aggregatedClasses('div')(cssClassesConstants.treeItemBlockName, 'addons');
42
+ const TreeListItemAddonsWrapper = dsClassnames.aggregatedClasses('div')(cssClassesConstants.treeItemBlockName, 'addons' // temp fix untill we move to styled components
43
+ );
42
44
  const DnDHandle = reactSortableHoc.SortableHandle(_ref => {
43
45
  let {
44
46
  id
@@ -72,7 +74,7 @@ const TreeItem = props => {
72
74
  const {
73
75
  nodeItemRef
74
76
  } = node.model;
75
- const openFolderOnHoverTimeout = React.useRef();
77
+ const openFolderOnHoverTimeout = React.useRef(null);
76
78
  const [isDraggingOverThis, setIsDraggingOverThis] = React.useState(false);
77
79
  const onItemKeyDown = keyboardHelpers.useOnItemKeyDown(item);
78
80
  const ctx = React.useContext(TreeViewContext["default"]);
@@ -118,8 +120,8 @@ const TreeItem = props => {
118
120
  if (isBefore) className += '-drop-before';else if (isAfter) className += '-drop-after';else className += '-drop-in';
119
121
  return className;
120
122
  }, [withDragAndDrop, relativeMouseCord, isDraggingOverThis]);
121
- const selectedClassName = React.useMemo(() => (selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.id) === item.id ? 'selected' : '', [selectedItem]);
122
- const hoverClassName = React.useMemo(() => (hoverItem === null || hoverItem === void 0 ? void 0 : hoverItem.id) !== item.id || withDragAndDrop && isDragging ? '' : 'hover', [hoverItem, withDragAndDrop, isDragging]);
123
+ const selectedClassName = React.useMemo(() => (selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.id) === item.id ? 'selected' : '', [item.id, selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.id]);
124
+ const hoverClassName = React.useMemo(() => (hoverItem === null || hoverItem === void 0 ? void 0 : hoverItem.id) !== item.id || withDragAndDrop && isDragging ? '' : 'hover', [hoverItem === null || hoverItem === void 0 ? void 0 : hoverItem.id, item.id, withDragAndDrop, isDragging]);
123
125
  const fixedHeightClassname = React.useMemo(() => {
124
126
  if (labelOverflow === 'truncate') {
125
127
  if (rowSize === 'compact') return "".concat(cssClassesConstants.DSTreeViewPrefix, "-").concat(cssClassesConstants.treeItemBlockName, "--fixed-height-compact");
@@ -133,21 +135,22 @@ const TreeItem = props => {
133
135
  onItemClick(item, e);
134
136
  setFocusedItem(item);
135
137
  setSelectedItem(item);
138
+ const itemVirtualIndex = typeof item.virtualIndex === 'number' ? item.virtualIndex : -1;
136
139
  onItemFocus({
137
- itemIndex: item.virtualIndex,
140
+ itemIndex: itemVirtualIndex,
138
141
  scrollToItem: function () {
139
142
  let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
140
143
  align: 'start'
141
144
  };
142
- return scrollToIndex(item.virtualIndex, opts);
145
+ return scrollToIndex(itemVirtualIndex, opts);
143
146
  },
144
147
  item
145
148
  });
146
149
  }, [item, scrollToIndex, onItemClick, onItemFocus, setSelectedItem, setFocusedItem]);
147
150
  return /*#__PURE__*/jsxRuntime.jsxs(TreeListItem, {
148
- tabIndex: "0",
151
+ tabIndex: 0,
149
152
  onMouseMove: event => {
150
- if (withDragAndDrop) {
153
+ if (withDragAndDrop && onMouseDragOverItem) {
151
154
  onMouseDragOverItem({
152
155
  event,
153
156
  item,
@@ -174,8 +177,8 @@ const TreeItem = props => {
174
177
  ref: setItemRefs,
175
178
  style: _objectSpread({}, itemWrapperStyle),
176
179
  className: finalClassName,
177
- "aria-expanded": item.isExpanded,
178
- "aria-selected": selectedCheckboxes[item.id],
180
+ "aria-expanded": !!item.isExpanded,
181
+ "aria-selected": !!selectedCheckboxes[item.id],
179
182
  "data-id": item.id,
180
183
  "data-index": item.virtualIndex,
181
184
  onKeyDown: onItemKeyDown,
@@ -16,8 +16,8 @@ var reactSortableHoc = require('@elliemae/react-sortable-hoc');
16
16
  var dsClassnames = require('@elliemae/ds-classnames');
17
17
  var dsCircularProgressIndicator = require('@elliemae/ds-circular-progress-indicator');
18
18
  var TreeViewContext = require('../TreeViewContext.js');
19
- var TreeItem = require('./TreeItem.js');
20
19
  var cssClassesConstants = require('../config/cssClassesConstants.js');
20
+ var TreeItem = require('./TreeItem.js');
21
21
  var jsxRuntime = require('react/jsx-runtime');
22
22
 
23
23
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -25,13 +25,15 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
25
25
  var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
26
26
  var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
27
27
 
28
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
28
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
29
29
 
30
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
30
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
31
31
  const treeListNoItemsBn = "".concat(cssClassesConstants.treeListBlockName, "-no-items");
32
32
  const TreeListNoItems = dsClassnames.aggregatedClasses('div', {
33
33
  'data-testid': treeListNoItemsBn
34
- })(treeListNoItemsBn);
34
+ })(treeListNoItemsBn); // React.ComponentProps<'ul'> uses LegacyRef typings that existed pre-hook era
35
+ // we omit the LegacyRef typings in favor of hook-era typings
36
+
35
37
  const TreeListWrapper = dsClassnames.aggregatedClasses('ul', {
36
38
  'data-testid': cssClassesConstants.treeListBlockName,
37
39
  role: 'tree'
@@ -34,7 +34,7 @@ const TreeDnD = () => {
34
34
  onSortStart: onSortStart,
35
35
  onMouseDragOverItem: onMouseDragOverItem,
36
36
  onSortEnd: onSortEnd,
37
- getContainer: () => virtualListRef.current,
37
+ getContainer: () => virtualListRef === null || virtualListRef === void 0 ? void 0 : virtualListRef.current,
38
38
  keyCodes: dndHelpers.keyCodes
39
39
  });
40
40
  };
@@ -5,49 +5,50 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var reactDesc = require('react-desc');
6
6
 
7
7
  /* eslint-disable max-lines */
8
- const InstanceActionsPropTypes = reactDesc.PropTypes.shape({
9
- toggleExpandAll: reactDesc.PropTypes.func,
10
- scrollTo: reactDesc.PropTypes.func
11
- });
12
- const TreeViewItemPropType = reactDesc.PropTypes.shape({
13
- children: reactDesc.PropTypes.arrayOf(reactDesc.PropTypes.object),
14
- id: reactDesc.PropTypes.oneOfType([reactDesc.PropTypes.string, reactDesc.PropTypes.number]),
15
- isGroup: reactDesc.PropTypes.oneOfType([reactDesc.PropTypes.oneOf([undefined, null]), reactDesc.PropTypes.bool]),
16
- name: reactDesc.PropTypes.string,
17
- node: reactDesc.PropTypes.object
18
- });
19
- const TreeViewInstancePropType = reactDesc.PropTypes.shape({
20
- current: reactDesc.PropTypes.oneOfType([reactDesc.PropTypes.oneOf([null]), reactDesc.PropTypes.shape({
21
- actions: InstanceActionsPropTypes.isRequired
22
- })])
23
- });
24
8
  const TreeViewPropTypes = {
25
- data: reactDesc.PropTypes.arrayOf(TreeViewItemPropType).description('data to populate tree view').isRequired,
9
+ data: reactDesc.PropTypes.arrayOf(reactDesc.PropTypes.shape({
10
+ children: reactDesc.PropTypes.arrayOf(reactDesc.PropTypes.object),
11
+ id: reactDesc.PropTypes.oneOfType([reactDesc.PropTypes.string, reactDesc.PropTypes.number]),
12
+ isGroup: reactDesc.PropTypes.oneOfType([reactDesc.PropTypes.oneOf([undefined, null]), reactDesc.PropTypes.bool]),
13
+ name: reactDesc.PropTypes.string,
14
+ node: reactDesc.PropTypes.object
15
+ })).description('data to populate tree view').isRequired,
26
16
  plugins: reactDesc.PropTypes.arrayOf(reactDesc.PropTypes.string).description('list of enabled plugins').defaultValue([]),
27
17
  selection: reactDesc.PropTypes.object.description('pre selected items').defaultValue({}),
28
- instanceRef: TreeViewInstancePropType.description('instance ref'),
29
- disableGroups: reactDesc.PropTypes.bool.description('disable grouping funcionality').defaultValue(false),
30
- disableLeafs: reactDesc.PropTypes.bool.description('disable leaf items').defaultValue(false),
18
+ expanded: reactDesc.PropTypes.object.description('control what items are expanded').defaultValue(undefined),
19
+ instanceRef: reactDesc.PropTypes.shape({
20
+ current: reactDesc.PropTypes.oneOfType([reactDesc.PropTypes.oneOf([null, undefined]), reactDesc.PropTypes.shape({
21
+ actions: reactDesc.PropTypes.shape({
22
+ toggleExpandAll: reactDesc.PropTypes.func,
23
+ scrollTo: reactDesc.PropTypes.func
24
+ }).description('').isRequired
25
+ })])
26
+ }).description('instance ref'),
27
+ isItemDisabled: reactDesc.PropTypes.func.description('Function that receives an item, and returns whether that item should be disabled').defaultValue('() => false'),
31
28
  disableIcons: reactDesc.PropTypes.bool.description('disable icons').defaultValue(false),
32
29
  fluid: reactDesc.PropTypes.bool.description('whether is fluid or not').defaultValue(false),
33
30
  isMultiSelect: reactDesc.PropTypes.bool.description('whether the tree view is multi select or not').defaultValue(false),
34
31
  isSingleSelect: reactDesc.PropTypes.bool.description('wheter the tree view is single select or not').defaultValue(false),
32
+ isLoading: reactDesc.PropTypes.bool.description('wheter the tree should show the loading state or not').defaultValue(false),
35
33
  restrictDragAndDrop: reactDesc.PropTypes.bool.description('whether to restrict DnD functionality or not').defaultValue(false),
36
34
  showChildrenAmount: reactDesc.PropTypes.bool.description('whether to show the amount of children or not').defaultValue(false),
37
35
  sortable: reactDesc.PropTypes.bool.description('whether the sortable functionality is active or not').defaultValue(false),
38
- labelRenderer: reactDesc.PropTypes.func.description('custom renderer for labels'),
39
- onItemClick: reactDesc.PropTypes.func.description('function executed when clicking on an item'),
40
- onItemFocus: reactDesc.PropTypes.func.description('function executed when focusing on an item'),
41
- onVisibleItemsChange: reactDesc.PropTypes.func.description('function executed when the visible items change'),
42
- onOrderChange: reactDesc.PropTypes.func.description('function executed when the items order changes'),
43
- onSelectionChange: reactDesc.PropTypes.func.description('function executed when the selection changes'),
44
- onExpandChange: reactDesc.PropTypes.func.description('function executed when expanding an item'),
36
+ onItemClick: reactDesc.PropTypes.func.description('function executed when clicking on an item').defaultValue('() => {}'),
37
+ onItemFocus: reactDesc.PropTypes.func.description('function executed when focusing on an item').defaultValue('() => {}'),
38
+ onVisibleItemsChange: reactDesc.PropTypes.func.description('function executed when the visible items change').defaultValue('() => {}'),
39
+ onOrderChange: reactDesc.PropTypes.func.description('function executed when the items order changes').defaultValue('() => {}'),
40
+ onSelectionChange: reactDesc.PropTypes.func.description('function executed when the selection changes').defaultValue('() => {}'),
41
+ onExpandChange: reactDesc.PropTypes.func.description('function executed when expanding an item').defaultValue('() => {}'),
42
+ onInstanceRefInitialized: reactDesc.PropTypes.func.description('function executed when instanceRef has terminated instanciation').defaultValue('() => {}'),
45
43
  rowSize: reactDesc.PropTypes.oneOf(['normal', 'compact']).description('size of the row').defaultValue('normal'),
44
+ labelOverflow: reactDesc.PropTypes.oneOf(['wrap', 'wrap-all', 'truncate']).description('label truncation preference').defaultValue('wrap'),
46
45
  width: reactDesc.PropTypes.oneOfType([reactDesc.PropTypes.number, reactDesc.PropTypes.string]).description('components width').defaultValue('100%'),
47
46
  height: reactDesc.PropTypes.oneOfType([reactDesc.PropTypes.number, reactDesc.PropTypes.string]).description('components height').defaultValue('100%'),
48
47
  groupIcon: reactDesc.PropTypes.node.description('icon for groups'),
49
48
  itemIcon: reactDesc.PropTypes.node.description('icon for items'),
50
49
  searchQuery: reactDesc.PropTypes.string.description('search query value'),
50
+ noItemsPlaceholder: reactDesc.PropTypes.string.description('message to be shown when there are no items in the treeview to be displayed').defaultValue('No items found'),
51
+ name: reactDesc.PropTypes.string.description('property key to identifier for items labels').defaultValue('name'),
51
52
  highlightOnlyQuery: reactDesc.PropTypes.bool.description('whether to highlight results or not').defaultValue(false)
52
53
  };
53
54
 
@@ -35,6 +35,14 @@ function TreeViewSearchBar(props) {
35
35
  totalResults: totalResults,
36
36
  value: value
37
37
  });
38
- }
38
+ } // TreeViewSearchBar.propTypes = {
39
+ // value: PropTypes.string.isRequired,
40
+ // handleChange: PropTypes.func.isRequired,
41
+ // onNext: PropTypes.func.isRequired,
42
+ // onPrevious: PropTypes.func.isRequired,
43
+ // onClear: PropTypes.func.isRequired,
44
+ // currentResultIndex: PropTypes.number.isRequired,
45
+ // totalResults: PropTypes.number.isRequired,
46
+ // };
39
47
 
40
48
  exports.TreeViewSearchBar = TreeViewSearchBar;
@@ -115,11 +115,9 @@ const isDropValid = _ref3 => {
115
115
  const inferKeyboardKinshipDrop = _ref4 => {
116
116
  let {
117
117
  items,
118
- newIndex // movementDirection,
119
-
118
+ newIndex
120
119
  } = _ref4;
121
- const kinship = {}; // const directionOffset = movementDirection === 'topToBottom' ? 0 : 0;
122
-
120
+ const kinship = {};
123
121
  const itemBefore = items[newIndex];
124
122
  const itemBeforeModel = itemBefore.node.model;
125
123
  const isGroupAndIsExpanded = itemBeforeModel.isExpanded && itemBeforeModel.children.length > 0;
@@ -5,8 +5,22 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var React = require('react');
6
6
 
7
7
  /* eslint-disable max-params */
8
- const toggleItemExpand = function (itemToToggle, triggerTreeRerender) {
9
- let scrollTo = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : () => {};
8
+ const updateExpandedState = (treeRoot, onExpandChange) => {
9
+ const shouldContinueWalking = true;
10
+ const newExpandedHashMap = {
11
+ __ds_tree_root: true
12
+ };
13
+ treeRoot.walk(node => {
14
+ if (!node.isRoot() && node.model.isGroup && node.model.isExpanded) {
15
+ newExpandedHashMap[node.model.id] = true;
16
+ }
17
+
18
+ return shouldContinueWalking;
19
+ });
20
+ if (onExpandChange) onExpandChange(newExpandedHashMap, null);
21
+ };
22
+ const toggleItemExpand = function (itemToToggle, triggerTreeRerender, updateUserExpandedState) {
23
+ let scrollTo = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : () => {};
10
24
  const {
11
25
  node: {
12
26
  model: {
@@ -19,8 +33,9 @@ const toggleItemExpand = function (itemToToggle, triggerTreeRerender) {
19
33
  if (itemToToggle.node.model.isGroup) {
20
34
  itemToToggle.node.model.isExpanded = !isExpanded;
21
35
  triggerTreeRerender();
36
+ updateUserExpandedState();
22
37
  setTimeout(() => {
23
- scrollTo(virtualIndex, {
38
+ if (typeof virtualIndex === 'number') scrollTo(virtualIndex, {
24
39
  align: 'start'
25
40
  });
26
41
  });
@@ -33,46 +48,56 @@ const collapseItemModel = modelToCollapse => {
33
48
  if (modelToCollapse.isGroup) modelToCollapse.isExpanded = false;
34
49
  };
35
50
  const expandAll = (treeRoot, triggerTreeRerender) => {
51
+ const shouldContinueWalking = true;
36
52
  treeRoot.walk(node => {
37
53
  if (!node.isRoot()) expandItemModel(node.model);
54
+ return shouldContinueWalking;
38
55
  });
39
56
  triggerTreeRerender();
40
57
  };
41
58
  const collapseAll = (treeRoot, triggerTreeRerender) => {
59
+ const shouldContinueWalking = true; // tree-model ask we return true if we want to continue walking
60
+
42
61
  treeRoot.walk(node => {
43
62
  if (!node.isRoot()) collapseItemModel(node.model);
63
+ return shouldContinueWalking;
44
64
  });
45
65
  triggerTreeRerender();
46
66
  };
47
67
  const getToggleExpandShouldExpand = treeRoot => {
48
68
  let shouldExpand = false;
69
+ const shouldContinueWalking = true; // tree-model ask we return true if we want to continue walking
70
+
49
71
  treeRoot.walk(node => {
50
72
  if (!node.isRoot()) {
51
73
  if (!node.model.isExpanded && node.model.isGroup) {
52
74
  shouldExpand = true; // eslint-disable-next-line no-useless-return
53
75
 
54
- return;
76
+ return shouldContinueWalking;
55
77
  }
56
78
  }
79
+
80
+ return shouldContinueWalking;
57
81
  });
58
82
  return shouldExpand;
59
83
  };
60
- const toggleExpandAllHelper = (isExpand, treeRoot, triggerTreeRerender, setLatestToggledItem) => {
84
+ const toggleExpandAllHelper = (isExpand, treeRoot, triggerTreeRerender, setLatestToggledItem, updateUserExpandedState) => {
61
85
  if (isExpand === true) expandAll(treeRoot, triggerTreeRerender);else if (isExpand === false) collapseAll(treeRoot, triggerTreeRerender);else {
62
86
  const shouldExpand = getToggleExpandShouldExpand(treeRoot);
63
87
  if (shouldExpand === true) expandAll(treeRoot, triggerTreeRerender);else collapseAll(treeRoot, triggerTreeRerender);
64
88
  }
65
89
  setLatestToggledItem(null);
90
+ updateUserExpandedState();
66
91
  };
67
92
  const useNotifyExpandedChange = (propsWithDefaults, _ref) => {
68
93
  let {
69
94
  latestToggledItem,
70
95
  expandedGroups
71
96
  } = _ref;
72
- const notifyExpandedChange = React.useCallback(expandedGroupHashmap => propsWithDefaults.onExpandChange(expandedGroupHashmap, latestToggledItem), [propsWithDefaults, latestToggledItem]);
97
+ const notifyExpandedChange = React.useCallback(expandedGroupHashmap => propsWithDefaults === null || propsWithDefaults === void 0 ? void 0 : propsWithDefaults.onExpandChange(expandedGroupHashmap || {}, latestToggledItem), [propsWithDefaults, latestToggledItem]);
73
98
  React.useEffect(() => {
74
- notifyExpandedChange(expandedGroups);
75
- }, [expandedGroups]);
99
+ if (!propsWithDefaults.expanded) notifyExpandedChange(expandedGroups);
100
+ }, [expandedGroups, notifyExpandedChange, propsWithDefaults.expanded]);
76
101
  };
77
102
 
78
103
  exports.collapseAll = collapseAll;
@@ -82,4 +107,5 @@ exports.expandItemModel = expandItemModel;
82
107
  exports.getToggleExpandShouldExpand = getToggleExpandShouldExpand;
83
108
  exports.toggleExpandAllHelper = toggleExpandAllHelper;
84
109
  exports.toggleItemExpand = toggleItemExpand;
110
+ exports.updateExpandedState = updateExpandedState;
85
111
  exports.useNotifyExpandedChange = useNotifyExpandedChange;
@@ -7,7 +7,8 @@ var TreeViewContext = require('../TreeViewContext.js');
7
7
  var treeHelpers = require('./tree-helpers.js');
8
8
  var groupExpandsHelpers = require('./group-expands-helpers.js');
9
9
 
10
- /* eslint-disable max-lines */
10
+ /* eslint-disable max-params */
11
+ // 9 tab
11
12
  // 13 enter
12
13
  // 32 space
13
14
  // 37 left arrow
@@ -18,7 +19,6 @@ var groupExpandsHelpers = require('./group-expands-helpers.js');
18
19
  // 36 home
19
20
  // 56 number 8
20
21
  // 106 (NumPad) *
21
-
22
22
  const useOnItemKeyDown = item => {
23
23
  const ctx = React.useContext(TreeViewContext["default"]);
24
24
  const {
@@ -31,6 +31,7 @@ const useOnItemKeyDown = item => {
31
31
  setFocusedItem,
32
32
  setSelectedItem,
33
33
  setLatestToggledItem,
34
+ updateUserExpandedState,
34
35
  virtualListHelpers: {
35
36
  scrollToIndex
36
37
  }
@@ -48,7 +49,7 @@ const useOnItemKeyDown = item => {
48
49
  return scrollToIndex(newFocusItem.virtualIndex, opts);
49
50
  },
50
51
  item: newFocusItem
51
- }), [onItemFocus]);
52
+ }), [onItemFocus, scrollToIndex]);
52
53
  const onItemKeyDown = React.useCallback(e => {
53
54
  const {
54
55
  keyCode
@@ -61,14 +62,14 @@ const useOnItemKeyDown = item => {
61
62
 
62
63
  if (keyCode === 37) {
63
64
  if (isGroup && isExpanded) {
64
- groupExpandsHelpers.toggleItemExpand(item, triggerTreeRerender, scrollToIndex);
65
+ groupExpandsHelpers.toggleItemExpand(item, triggerTreeRerender, updateUserExpandedState, scrollToIndex);
65
66
  setLatestToggledItem(item);
66
67
  }
67
68
  }
68
69
 
69
70
  if (keyCode === 39) {
70
71
  if (isGroup && !isExpanded) {
71
- groupExpandsHelpers.toggleItemExpand(item, triggerTreeRerender, scrollToIndex);
72
+ groupExpandsHelpers.toggleItemExpand(item, triggerTreeRerender, updateUserExpandedState, scrollToIndex);
72
73
  setLatestToggledItem(item);
73
74
  }
74
75
  }
@@ -76,73 +77,76 @@ const useOnItemKeyDown = item => {
76
77
  const {
77
78
  virtualIndex
78
79
  } = item;
79
- const lastItemIndex = visibleItems.length - 1;
80
-
81
- if (keyCode === 38) {
82
- const isLoopedFocus = virtualIndex === 0;
83
- const newFocusIndex = isLoopedFocus ? lastItemIndex : virtualIndex - 1;
84
- const newFocusItem = visibleItems[newFocusIndex];
85
- scrollToIndex(newFocusIndex);
86
80
 
87
- if (isLoopedFocus) {
88
- // when looping the list from start to end we need to wait a bit before focusing
89
- setTimeout(() => {
81
+ if (typeof virtualIndex === 'number') {
82
+ const lastItemIndex = visibleItems.length - 1;
83
+
84
+ if (keyCode === 38) {
85
+ const isLoopedFocus = virtualIndex === 0;
86
+ const newFocusIndex = isLoopedFocus ? lastItemIndex : virtualIndex - 1;
87
+ const newFocusItem = visibleItems[newFocusIndex];
88
+ scrollToIndex(newFocusIndex);
89
+
90
+ if (isLoopedFocus) {
91
+ // when looping the list from start to end we need to wait a bit before focusing
92
+ setTimeout(() => {
93
+ setFocusedItem(newFocusItem);
94
+ treeHelpers.focusItem(newFocusItem);
95
+ onItemFocusCurry(newFocusItem);
96
+ }, 300);
97
+ } else {
90
98
  setFocusedItem(newFocusItem);
91
- treeHelpers.focusItem(newFocusItem);
92
99
  onItemFocusCurry(newFocusItem);
93
- }, 300);
94
- } else {
95
- setFocusedItem(newFocusItem);
96
- onItemFocusCurry(newFocusItem);
97
- treeHelpers.focusItem(newFocusItem);
100
+ treeHelpers.focusItem(newFocusItem);
101
+ }
98
102
  }
99
- }
100
-
101
- if (keyCode === 40) {
102
- const isLoopedFocus = virtualIndex === lastItemIndex;
103
- const newFocusIndex = isLoopedFocus ? 0 : virtualIndex + 1;
104
- const newFocusItem = visibleItems[newFocusIndex];
105
- scrollToIndex(newFocusIndex);
106
103
 
107
- if (isLoopedFocus) {
108
- // when looping the list from start to end we need to wait a bit before focusing
109
- setTimeout(() => {
104
+ if (keyCode === 40) {
105
+ const isLoopedFocus = virtualIndex === lastItemIndex;
106
+ const newFocusIndex = isLoopedFocus ? 0 : virtualIndex + 1;
107
+ const newFocusItem = visibleItems[newFocusIndex];
108
+ scrollToIndex(newFocusIndex);
109
+
110
+ if (isLoopedFocus) {
111
+ // when looping the list from start to end we need to wait a bit before focusing
112
+ setTimeout(() => {
113
+ setFocusedItem(newFocusItem);
114
+ onItemFocusCurry(newFocusItem);
115
+ treeHelpers.focusItem(newFocusItem);
116
+ }, 300);
117
+ } else {
110
118
  setFocusedItem(newFocusItem);
111
119
  onItemFocusCurry(newFocusItem);
112
120
  treeHelpers.focusItem(newFocusItem);
113
- }, 300);
114
- } else {
115
- setFocusedItem(newFocusItem);
116
- onItemFocusCurry(newFocusItem);
117
- treeHelpers.focusItem(newFocusItem);
121
+ }
118
122
  }
119
- }
120
123
 
121
- if (keyCode === 35) {
122
- if (virtualIndex !== lastItemIndex) {
123
- const newFocusItem = visibleItems[lastItemIndex];
124
- scrollToIndex(lastItemIndex);
125
- setTimeout(() => {
126
- setFocusedItem(newFocusItem);
127
- onItemFocusCurry(newFocusItem);
128
- treeHelpers.focusItem(newFocusItem);
129
- }, 300);
124
+ if (keyCode === 35) {
125
+ if (virtualIndex !== lastItemIndex) {
126
+ const newFocusItem = visibleItems[lastItemIndex];
127
+ scrollToIndex(lastItemIndex);
128
+ setTimeout(() => {
129
+ setFocusedItem(newFocusItem);
130
+ onItemFocusCurry(newFocusItem);
131
+ treeHelpers.focusItem(newFocusItem);
132
+ }, 300);
133
+ }
130
134
  }
131
- }
132
135
 
133
- if (keyCode === 36) {
134
- if (virtualIndex !== 0) {
135
- const newFocusItem = visibleItems[0];
136
- scrollToIndex(0);
137
- setTimeout(() => {
138
- setFocusedItem(newFocusItem);
139
- onItemFocusCurry(newFocusItem);
140
- treeHelpers.focusItem(newFocusItem);
141
- }, 300);
136
+ if (keyCode === 36) {
137
+ if (virtualIndex !== 0) {
138
+ const newFocusItem = visibleItems[0];
139
+ scrollToIndex(0);
140
+ setTimeout(() => {
141
+ setFocusedItem(newFocusItem);
142
+ onItemFocusCurry(newFocusItem);
143
+ treeHelpers.focusItem(newFocusItem);
144
+ }, 300);
145
+ }
142
146
  }
143
147
  }
144
148
  }
145
- }, [item, visibleItems, isGroup, isDragging, onItemFocusCurry, setFocusedItem, setSelectedItem]);
149
+ }, [isDragging, setSelectedItem, item, isGroup, isExpanded, triggerTreeRerender, scrollToIndex, setLatestToggledItem, visibleItems, setFocusedItem, onItemFocusCurry, updateUserExpandedState]);
146
150
  return onItemKeyDown;
147
151
  };
148
152
  const useGlobalKeyboardListener = func => {
@@ -151,7 +155,7 @@ const useGlobalKeyboardListener = func => {
151
155
  return () => document.removeEventListener('keydown', func);
152
156
  }, [func]);
153
157
  };
154
- const useGlobalToggleAllExpandShortcut = (treeRoot, triggerTreeRerender, setLatestToggledItem) => {
158
+ const useGlobalToggleAllExpandShortcut = (treeRoot, triggerTreeRerender, setLatestToggledItem, updateUserExpandedState) => {
155
159
  const memoizedToggleAllKeyboardShortcut = React.useCallback(e => {
156
160
  const {
157
161
  shiftKey,
@@ -159,9 +163,9 @@ const useGlobalToggleAllExpandShortcut = (treeRoot, triggerTreeRerender, setLate
159
163
  } = e;
160
164
 
161
165
  if (shiftKey && keyCode === 56) {
162
- groupExpandsHelpers.toggleExpandAllHelper('toggle', treeRoot, triggerTreeRerender, setLatestToggledItem);
166
+ groupExpandsHelpers.toggleExpandAllHelper('toggle', treeRoot, triggerTreeRerender, setLatestToggledItem, updateUserExpandedState);
163
167
  }
164
- }, [treeRoot, triggerTreeRerender]);
168
+ }, [setLatestToggledItem, treeRoot, triggerTreeRerender, updateUserExpandedState]);
165
169
  return useGlobalKeyboardListener(memoizedToggleAllKeyboardShortcut);
166
170
  };
167
171
 
@@ -7,8 +7,6 @@ require('core-js/modules/esnext.iterator.constructor.js');
7
7
  require('core-js/modules/esnext.iterator.for-each.js');
8
8
  require('core-js/modules/esnext.async-iterator.reduce.js');
9
9
  require('core-js/modules/esnext.iterator.reduce.js');
10
- require('core-js/modules/esnext.async-iterator.filter.js');
11
- require('core-js/modules/esnext.iterator.filter.js');
12
10
 
13
11
  /* eslint-disable no-sequences */
14
12
 
@@ -17,6 +15,20 @@ require('core-js/modules/esnext.iterator.filter.js');
17
15
  /* eslint-disable no-restricted-syntax */
18
16
 
19
17
  /* eslint-disable guard-for-in */
18
+ function isObjectADate(o) {
19
+ var _o$constructor;
20
+
21
+ return (o === null || o === void 0 ? void 0 : (_o$constructor = o.constructor) === null || _o$constructor === void 0 ? void 0 : _o$constructor.name) === 'Date';
22
+ }
23
+
24
+ function isObjectAnArray(o) {
25
+ return Array.isArray(o);
26
+ }
27
+
28
+ function isObjectAString(o) {
29
+ return typeof o === 'object';
30
+ }
31
+
20
32
  const unfreeze = o => {
21
33
  let oo;
22
34
 
@@ -24,16 +36,16 @@ const unfreeze = o => {
24
36
  oo = null;
25
37
  } else if (o === undefined) {
26
38
  oo = undefined;
27
- } else if (o.constructor.name === 'Date') {
39
+ } else if (isObjectADate(o)) {
28
40
  oo = new Date(o);
29
- } else if (o instanceof Array) {
41
+ } else if (isObjectAnArray(o)) {
30
42
  oo = [];
31
43
  o.forEach(v => {
32
44
  oo.push(v);
33
45
  });
34
- } else if (o instanceof String) {
46
+ } else if (isObjectAString(o)) {
35
47
  oo = String(o);
36
- } else if (typeof o === 'object') {
48
+ } else if (isObjectAString(o)) {
37
49
  oo = {};
38
50
 
39
51
  for (const property in o) {
@@ -45,7 +57,13 @@ const unfreeze = o => {
45
57
 
46
58
  return oo;
47
59
  };
48
- const filterObject = (obj, predicate) => Object.keys(obj).filter(key => predicate(obj[key])).reduce((res, key) => (res[key] = obj[key], res), {});
60
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
61
+ function filterObject(obj, predicate) {
62
+ return Object.keys(obj).reduce((res, key) => {
63
+ if (predicate(obj[key])) res[key] = obj[key];
64
+ return res;
65
+ }, {});
66
+ }
49
67
 
50
68
  exports.filterObject = filterObject;
51
69
  exports.unfreeze = unfreeze;
@@ -15,8 +15,8 @@ const setMultipleRefs = function () {
15
15
  }
16
16
 
17
17
  const filteredRefs = refs.filter(Boolean);
18
- if (!filteredRefs.length) return null;
19
- if (filteredRefs.length === 0) return filteredRefs[0];
18
+ if (!filteredRefs.length) return () => {};
19
+ if (filteredRefs.length === 0) return () => {};
20
20
  return newRef => {
21
21
  filteredRefs.forEach(refToBeUpdated => {
22
22
  if (typeof refToBeUpdated === 'function') {
@@ -14,9 +14,9 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
14
14
 
15
15
  var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
16
16
 
17
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
17
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
18
18
 
19
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
19
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
20
20
  const getGroupCheckState = node => {
21
21
  let childAllChecked = true;
22
22
  let anyChildChecked = false;