@apia/tree 0.2.4 → 0.3.2

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.
package/dist/index.js CHANGED
@@ -3,7 +3,7 @@ import { useMount, useDebounceFn, useUnmount } from 'ahooks';
3
3
  import React, { useState, useEffect, memo } from 'react';
4
4
  import { shallowEqual } from 'react-redux';
5
5
  import { makeStyledComponent, Spinner, getVariant, Box } from '@apia/theme';
6
- import { EventEmitter, PropsStore, addBoundary, getSpecificParent, usePropsSelector, formatMessage, useLatest } from '@apia/util';
6
+ import { EventEmitter, PropsStore, addBoundary, getSpecificParent, usePropsSelector, formatMessage, useLatest, HashedEventEmitter } from '@apia/util';
7
7
  import { IconButton } from '@apia/components';
8
8
  import { Icon } from '@apia/icons';
9
9
  import { uniqueId } from 'lodash-es';
@@ -228,25 +228,25 @@ const selectAllNodesBetweenTwoNodes = (handler, oneNodeId, anotherNodeId, avoidF
228
228
  }
229
229
  };
230
230
 
231
- var __defProp$7 = Object.defineProperty;
232
- var __defProps$6 = Object.defineProperties;
233
- var __getOwnPropDescs$6 = Object.getOwnPropertyDescriptors;
234
- var __getOwnPropSymbols$7 = Object.getOwnPropertySymbols;
235
- var __hasOwnProp$7 = Object.prototype.hasOwnProperty;
236
- var __propIsEnum$7 = Object.prototype.propertyIsEnumerable;
237
- var __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
238
- var __spreadValues$7 = (a, b) => {
231
+ var __defProp$8 = Object.defineProperty;
232
+ var __defProps$7 = Object.defineProperties;
233
+ var __getOwnPropDescs$7 = Object.getOwnPropertyDescriptors;
234
+ var __getOwnPropSymbols$8 = Object.getOwnPropertySymbols;
235
+ var __hasOwnProp$8 = Object.prototype.hasOwnProperty;
236
+ var __propIsEnum$8 = Object.prototype.propertyIsEnumerable;
237
+ var __defNormalProp$8 = (obj, key, value) => key in obj ? __defProp$8(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
238
+ var __spreadValues$8 = (a, b) => {
239
239
  for (var prop in b || (b = {}))
240
- if (__hasOwnProp$7.call(b, prop))
241
- __defNormalProp$7(a, prop, b[prop]);
242
- if (__getOwnPropSymbols$7)
243
- for (var prop of __getOwnPropSymbols$7(b)) {
244
- if (__propIsEnum$7.call(b, prop))
245
- __defNormalProp$7(a, prop, b[prop]);
240
+ if (__hasOwnProp$8.call(b, prop))
241
+ __defNormalProp$8(a, prop, b[prop]);
242
+ if (__getOwnPropSymbols$8)
243
+ for (var prop of __getOwnPropSymbols$8(b)) {
244
+ if (__propIsEnum$8.call(b, prop))
245
+ __defNormalProp$8(a, prop, b[prop]);
246
246
  }
247
247
  return a;
248
248
  };
249
- var __spreadProps$6 = (a, b) => __defProps$6(a, __getOwnPropDescs$6(b));
249
+ var __spreadProps$7 = (a, b) => __defProps$7(a, __getOwnPropDescs$7(b));
250
250
  const trees = {};
251
251
  const treesRecordEmitter = new class TreesRecordEmitter extends EventEmitter {
252
252
  emit(eventName, params) {
@@ -305,7 +305,7 @@ class TreeDataController extends EventEmitter {
305
305
  this.initRoot();
306
306
  }
307
307
  get configuration() {
308
- return __spreadValues$7({}, this._configuration);
308
+ return __spreadValues$8({}, this._configuration);
309
309
  }
310
310
  get state() {
311
311
  return this.propsStore.getFieldProps(
@@ -320,7 +320,7 @@ class TreeDataController extends EventEmitter {
320
320
  }
321
321
  append(node) {
322
322
  var _a, _b, _c, _d, _e;
323
- const newNode = __spreadProps$6(__spreadValues$7({}, node), { nodeProps: (_a = node.nodeProps) != null ? _a : {} });
323
+ const newNode = __spreadProps$7(__spreadValues$8({}, node), { nodeProps: (_a = node.nodeProps) != null ? _a : {} });
324
324
  let father;
325
325
  if (newNode.parentId !== void 0 && ((_b = this.propsStore.getFieldProps(newNode.parentId)) == null ? void 0 : _b.children)) {
326
326
  father = newNode.parentId;
@@ -333,7 +333,7 @@ class TreeDataController extends EventEmitter {
333
333
  }
334
334
  this.propsStore.updateField(
335
335
  newNode.id,
336
- __spreadProps$6(__spreadValues$7({}, newNode), {
336
+ __spreadProps$7(__spreadValues$8({}, newNode), {
337
337
  children: (_c = newNode.children) != null ? _c : []
338
338
  }),
339
339
  { isUrgent: true }
@@ -355,11 +355,12 @@ class TreeDataController extends EventEmitter {
355
355
  children: [
356
356
  ...this.propsStore.getFieldProps(father).children,
357
357
  newNode.id
358
- ]
358
+ ],
359
+ hasLoaded: true
359
360
  },
360
- { noEmit: !((_d = this._configuration.current) == null ? void 0 : _d.emitUpdates) }
361
+ { noEmit: ((_d = this._configuration.current) == null ? void 0 : _d.emitUpdates) === false }
361
362
  );
362
- if (!((_e = this._configuration.current) == null ? void 0 : _e.emitUpdates))
363
+ if (((_e = this._configuration.current) == null ? void 0 : _e.emitUpdates) === false)
363
364
  this.nonEmittedUpdates.push(father);
364
365
  if (!this.hasApendedFirstChild) {
365
366
  this.hasApendedFirstChild = true;
@@ -376,6 +377,13 @@ class TreeDataController extends EventEmitter {
376
377
  this.config({ emitUpdates: false });
377
378
  this.setState({ isLoading: true }, { isUrgent: true });
378
379
  }
380
+ getNodesRecursive(nodeId = "root") {
381
+ const node = this.propsStore.getFieldProps(nodeId);
382
+ return node.children.reduce(
383
+ (prev, current) => [...prev, ...this.getNodesRecursive(current)],
384
+ [...node.children]
385
+ );
386
+ }
379
387
  /**
380
388
  * Cuando se quieren agregar muchos nodos, es conveniente llamar primero al
381
389
  * método batchInit y luego de finalizar, al método batchFinish()
@@ -383,7 +391,7 @@ class TreeDataController extends EventEmitter {
383
391
  batchFinish() {
384
392
  this.config({ emitUpdates: true });
385
393
  setTimeout(() => this.setState({ isLoading: false }), 0);
386
- const children = [...this.getNodesIds()];
394
+ const children = [...this.getNodesRecursive()];
387
395
  const deleteNodes = this.previousNodes.filter(
388
396
  (current) => !children.find((search) => search === current)
389
397
  );
@@ -393,7 +401,7 @@ class TreeDataController extends EventEmitter {
393
401
  }
394
402
  config(newConf) {
395
403
  var _a;
396
- if (!((_a = this._configuration.current) == null ? void 0 : _a.emitUpdates) && newConf.emitUpdates) {
404
+ if (((_a = this._configuration.current) == null ? void 0 : _a.emitUpdates) === false && newConf.emitUpdates !== false) {
397
405
  this.nonEmittedUpdates.forEach(
398
406
  (current) => this.propsStore.updateField(current, {
399
407
  children: [...this.propsStore.getFieldProps(current).children]
@@ -429,7 +437,7 @@ class TreeDataController extends EventEmitter {
429
437
  };
430
438
  }
431
439
  getNodesAsArray() {
432
- const allFields = __spreadValues$7({}, this.propsStore.fields);
440
+ const allFields = __spreadValues$8({}, this.propsStore.fields);
433
441
  delete allFields[this.stateKey];
434
442
  delete allFields.root;
435
443
  return Object.values(allFields);
@@ -439,7 +447,7 @@ class TreeDataController extends EventEmitter {
439
447
  * árbol
440
448
  */
441
449
  getNodesIds() {
442
- const allFields = __spreadValues$7({}, this.propsStore.fields);
450
+ const allFields = __spreadValues$8({}, this.propsStore.fields);
443
451
  delete allFields[this.stateKey];
444
452
  delete allFields.root;
445
453
  return Object.keys(allFields);
@@ -758,7 +766,7 @@ class TreeDataController extends EventEmitter {
758
766
  setState(updateProps, conf) {
759
767
  this.propsStore.updateField(
760
768
  this.stateKey,
761
- __spreadValues$7(__spreadValues$7({}, this.state), updateProps),
769
+ __spreadValues$8(__spreadValues$8({}, this.state), updateProps),
762
770
  conf
763
771
  );
764
772
  }
@@ -819,7 +827,7 @@ function useTreeSelector(handler, configuration) {
819
827
  var _a;
820
828
  return usePropsSelector(
821
829
  (_a = handler == null ? void 0 : handler.stateKey) != null ? _a : "__NO__TREE__KEY__",
822
- __spreadValues$7({
830
+ __spreadValues$8({
823
831
  propsStore: handler == null ? void 0 : handler.propsStore
824
832
  }, configuration)
825
833
  );
@@ -829,32 +837,32 @@ function useTreeSelectorByName(treeName, configuration) {
829
837
  const handler = useTreeDataController(treeName);
830
838
  const selection = usePropsSelector(
831
839
  (_a = handler == null ? void 0 : handler.stateKey) != null ? _a : "__NO__TREE__KEY__",
832
- __spreadValues$7({
840
+ __spreadValues$8({
833
841
  propsStore: handler == null ? void 0 : handler.propsStore
834
842
  }, configuration)
835
843
  );
836
844
  return { selection, handler };
837
845
  }
838
846
 
839
- var __defProp$6 = Object.defineProperty;
840
- var __defProps$5 = Object.defineProperties;
841
- var __getOwnPropDescs$5 = Object.getOwnPropertyDescriptors;
842
- var __getOwnPropSymbols$6 = Object.getOwnPropertySymbols;
843
- var __hasOwnProp$6 = Object.prototype.hasOwnProperty;
844
- var __propIsEnum$6 = Object.prototype.propertyIsEnumerable;
845
- var __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
846
- var __spreadValues$6 = (a, b) => {
847
+ var __defProp$7 = Object.defineProperty;
848
+ var __defProps$6 = Object.defineProperties;
849
+ var __getOwnPropDescs$6 = Object.getOwnPropertyDescriptors;
850
+ var __getOwnPropSymbols$7 = Object.getOwnPropertySymbols;
851
+ var __hasOwnProp$7 = Object.prototype.hasOwnProperty;
852
+ var __propIsEnum$7 = Object.prototype.propertyIsEnumerable;
853
+ var __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
854
+ var __spreadValues$7 = (a, b) => {
847
855
  for (var prop in b || (b = {}))
848
- if (__hasOwnProp$6.call(b, prop))
849
- __defNormalProp$6(a, prop, b[prop]);
850
- if (__getOwnPropSymbols$6)
851
- for (var prop of __getOwnPropSymbols$6(b)) {
852
- if (__propIsEnum$6.call(b, prop))
853
- __defNormalProp$6(a, prop, b[prop]);
856
+ if (__hasOwnProp$7.call(b, prop))
857
+ __defNormalProp$7(a, prop, b[prop]);
858
+ if (__getOwnPropSymbols$7)
859
+ for (var prop of __getOwnPropSymbols$7(b)) {
860
+ if (__propIsEnum$7.call(b, prop))
861
+ __defNormalProp$7(a, prop, b[prop]);
854
862
  }
855
863
  return a;
856
864
  };
857
- var __spreadProps$5 = (a, b) => __defProps$5(a, __getOwnPropDescs$5(b));
865
+ var __spreadProps$6 = (a, b) => __defProps$6(a, __getOwnPropDescs$6(b));
858
866
  function getActiveDescendantName(treeName, nodeId) {
859
867
  return `${treeName}__${nodeId}`;
860
868
  }
@@ -864,7 +872,7 @@ function getDomProps(_, treeName, type, par) {
864
872
  case "node": {
865
873
  const node = par;
866
874
  const tree = getTreeDataController(treeName);
867
- return __spreadProps$5(__spreadValues$6({
875
+ return __spreadProps$6(__spreadValues$7({
868
876
  "aria-disabled": node.isDisabled,
869
877
  "aria-expanded": node.isLeaf ? void 0 : !!node.isExpanded,
870
878
  "aria-label": node.label
@@ -889,25 +897,25 @@ function getDomProps(_, treeName, type, par) {
889
897
  }
890
898
  }
891
899
 
892
- var __defProp$5 = Object.defineProperty;
893
- var __defProps$4 = Object.defineProperties;
894
- var __getOwnPropDescs$4 = Object.getOwnPropertyDescriptors;
895
- var __getOwnPropSymbols$5 = Object.getOwnPropertySymbols;
896
- var __hasOwnProp$5 = Object.prototype.hasOwnProperty;
897
- var __propIsEnum$5 = Object.prototype.propertyIsEnumerable;
898
- var __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
899
- var __spreadValues$5 = (a, b) => {
900
+ var __defProp$6 = Object.defineProperty;
901
+ var __defProps$5 = Object.defineProperties;
902
+ var __getOwnPropDescs$5 = Object.getOwnPropertyDescriptors;
903
+ var __getOwnPropSymbols$6 = Object.getOwnPropertySymbols;
904
+ var __hasOwnProp$6 = Object.prototype.hasOwnProperty;
905
+ var __propIsEnum$6 = Object.prototype.propertyIsEnumerable;
906
+ var __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
907
+ var __spreadValues$6 = (a, b) => {
900
908
  for (var prop in b || (b = {}))
901
- if (__hasOwnProp$5.call(b, prop))
902
- __defNormalProp$5(a, prop, b[prop]);
903
- if (__getOwnPropSymbols$5)
904
- for (var prop of __getOwnPropSymbols$5(b)) {
905
- if (__propIsEnum$5.call(b, prop))
906
- __defNormalProp$5(a, prop, b[prop]);
909
+ if (__hasOwnProp$6.call(b, prop))
910
+ __defNormalProp$6(a, prop, b[prop]);
911
+ if (__getOwnPropSymbols$6)
912
+ for (var prop of __getOwnPropSymbols$6(b)) {
913
+ if (__propIsEnum$6.call(b, prop))
914
+ __defNormalProp$6(a, prop, b[prop]);
907
915
  }
908
916
  return a;
909
917
  };
910
- var __spreadProps$4 = (a, b) => __defProps$4(a, __getOwnPropDescs$4(b));
918
+ var __spreadProps$5 = (a, b) => __defProps$5(a, __getOwnPropDescs$5(b));
911
919
  const styles = {
912
920
  height: "iconmd",
913
921
  width: "iconmd",
@@ -920,26 +928,26 @@ const LoaderSpinner = makeStyledComponent(
920
928
  ({ className }) => {
921
929
  return /* @__PURE__ */ jsx(
922
930
  Spinner,
923
- __spreadProps$4(__spreadValues$5({}, getVariant("layout.common.components.loaderSpinner")), {
931
+ __spreadProps$5(__spreadValues$6({}, getVariant("layout.common.components.loaderSpinner")), {
924
932
  className
925
933
  })
926
934
  );
927
935
  }
928
936
  );
929
937
 
930
- var __defProp$4 = Object.defineProperty;
931
- var __getOwnPropSymbols$4 = Object.getOwnPropertySymbols;
932
- var __hasOwnProp$4 = Object.prototype.hasOwnProperty;
933
- var __propIsEnum$4 = Object.prototype.propertyIsEnumerable;
934
- var __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
935
- var __spreadValues$4 = (a, b) => {
938
+ var __defProp$5 = Object.defineProperty;
939
+ var __getOwnPropSymbols$5 = Object.getOwnPropertySymbols;
940
+ var __hasOwnProp$5 = Object.prototype.hasOwnProperty;
941
+ var __propIsEnum$5 = Object.prototype.propertyIsEnumerable;
942
+ var __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
943
+ var __spreadValues$5 = (a, b) => {
936
944
  for (var prop in b || (b = {}))
937
- if (__hasOwnProp$4.call(b, prop))
938
- __defNormalProp$4(a, prop, b[prop]);
939
- if (__getOwnPropSymbols$4)
940
- for (var prop of __getOwnPropSymbols$4(b)) {
941
- if (__propIsEnum$4.call(b, prop))
942
- __defNormalProp$4(a, prop, b[prop]);
945
+ if (__hasOwnProp$5.call(b, prop))
946
+ __defNormalProp$5(a, prop, b[prop]);
947
+ if (__getOwnPropSymbols$5)
948
+ for (var prop of __getOwnPropSymbols$5(b)) {
949
+ if (__propIsEnum$5.call(b, prop))
950
+ __defNormalProp$5(a, prop, b[prop]);
943
951
  }
944
952
  return a;
945
953
  };
@@ -954,7 +962,7 @@ const SearchLabel = ({
954
962
  formatMessage(window.LBL_FILTERING_BY, { TOK1: searchString }),
955
963
  /* @__PURE__ */ jsx(
956
964
  IconButton,
957
- __spreadValues$4({
965
+ __spreadValues$5({
958
966
  icon: "Close",
959
967
  "aria-label": window.LBL_DELETE_FILTER,
960
968
  onClick: onDelete,
@@ -989,7 +997,8 @@ const DefaultIconRenderer = (props) => {
989
997
  {
990
998
  name: props.icon,
991
999
  title: "",
992
- size: (_a = props.iconSize) != null ? _a : "iconSm"
1000
+ size: (_a = props.iconSize) != null ? _a : "iconSm",
1001
+ className: "tree__node__icon"
993
1002
  }
994
1003
  );
995
1004
  };
@@ -1002,25 +1011,25 @@ const Spacer = ({ level }) => {
1002
1011
  return /* @__PURE__ */ jsx(Fragment, { children: Array(level).fill("").map((_, i) => i).map((current) => /* @__PURE__ */ jsx(Box, { className: "spacer" }, current)) });
1003
1012
  };
1004
1013
 
1005
- var __defProp$3 = Object.defineProperty;
1006
- var __defProps$3 = Object.defineProperties;
1007
- var __getOwnPropDescs$3 = Object.getOwnPropertyDescriptors;
1008
- var __getOwnPropSymbols$3 = Object.getOwnPropertySymbols;
1009
- var __hasOwnProp$3 = Object.prototype.hasOwnProperty;
1010
- var __propIsEnum$3 = Object.prototype.propertyIsEnumerable;
1011
- var __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1012
- var __spreadValues$3 = (a, b) => {
1014
+ var __defProp$4 = Object.defineProperty;
1015
+ var __defProps$4 = Object.defineProperties;
1016
+ var __getOwnPropDescs$4 = Object.getOwnPropertyDescriptors;
1017
+ var __getOwnPropSymbols$4 = Object.getOwnPropertySymbols;
1018
+ var __hasOwnProp$4 = Object.prototype.hasOwnProperty;
1019
+ var __propIsEnum$4 = Object.prototype.propertyIsEnumerable;
1020
+ var __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1021
+ var __spreadValues$4 = (a, b) => {
1013
1022
  for (var prop in b || (b = {}))
1014
- if (__hasOwnProp$3.call(b, prop))
1015
- __defNormalProp$3(a, prop, b[prop]);
1016
- if (__getOwnPropSymbols$3)
1017
- for (var prop of __getOwnPropSymbols$3(b)) {
1018
- if (__propIsEnum$3.call(b, prop))
1019
- __defNormalProp$3(a, prop, b[prop]);
1023
+ if (__hasOwnProp$4.call(b, prop))
1024
+ __defNormalProp$4(a, prop, b[prop]);
1025
+ if (__getOwnPropSymbols$4)
1026
+ for (var prop of __getOwnPropSymbols$4(b)) {
1027
+ if (__propIsEnum$4.call(b, prop))
1028
+ __defNormalProp$4(a, prop, b[prop]);
1020
1029
  }
1021
1030
  return a;
1022
1031
  };
1023
- var __spreadProps$3 = (a, b) => __defProps$3(a, __getOwnPropDescs$3(b));
1032
+ var __spreadProps$4 = (a, b) => __defProps$4(a, __getOwnPropDescs$4(b));
1024
1033
  const TreeItemLabel = ({ level, treeKey }) => {
1025
1034
  var _a, _b, _c;
1026
1035
  const {
@@ -1063,19 +1072,19 @@ const TreeItemLabel = ({ level, treeKey }) => {
1063
1072
  {
1064
1073
  className: "tree__expandIcon",
1065
1074
  onClick: handleToggle,
1066
- name: props.isExpanded ? "MinusFilled" : "PlusFilled",
1075
+ name: props.isExpanded ? "ArrowDownThin" : "ArrowRightThin",
1067
1076
  title: "",
1068
- size: "iconSm"
1077
+ size: 20
1069
1078
  }
1070
1079
  ) }),
1071
- props.icon && IconRenderer && /* @__PURE__ */ jsx(IconRenderer, __spreadValues$3({}, props)),
1080
+ props.icon && IconRenderer && /* @__PURE__ */ jsx(IconRenderer, __spreadValues$4({}, props)),
1072
1081
  /* @__PURE__ */ jsx(
1073
1082
  Box,
1074
1083
  {
1075
1084
  as: "span",
1076
1085
  className: "tree__nodeItemLabelRenderer",
1077
1086
  onClick: toggleNodesOnLabelClick !== false ? onClick : void 0,
1078
- children: /* @__PURE__ */ jsx(Renderer, __spreadProps$3(__spreadValues$3({}, props), { level }))
1087
+ children: /* @__PURE__ */ jsx(Renderer, __spreadProps$4(__spreadValues$4({}, props), { level }))
1079
1088
  }
1080
1089
  )
1081
1090
  ]
@@ -1084,25 +1093,25 @@ const TreeItemLabel = ({ level, treeKey }) => {
1084
1093
  };
1085
1094
  var TreeItemLabel$1 = React.memo(TreeItemLabel);
1086
1095
 
1087
- var __defProp$2 = Object.defineProperty;
1088
- var __defProps$2 = Object.defineProperties;
1089
- var __getOwnPropDescs$2 = Object.getOwnPropertyDescriptors;
1090
- var __getOwnPropSymbols$2 = Object.getOwnPropertySymbols;
1091
- var __hasOwnProp$2 = Object.prototype.hasOwnProperty;
1092
- var __propIsEnum$2 = Object.prototype.propertyIsEnumerable;
1093
- var __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1094
- var __spreadValues$2 = (a, b) => {
1096
+ var __defProp$3 = Object.defineProperty;
1097
+ var __defProps$3 = Object.defineProperties;
1098
+ var __getOwnPropDescs$3 = Object.getOwnPropertyDescriptors;
1099
+ var __getOwnPropSymbols$3 = Object.getOwnPropertySymbols;
1100
+ var __hasOwnProp$3 = Object.prototype.hasOwnProperty;
1101
+ var __propIsEnum$3 = Object.prototype.propertyIsEnumerable;
1102
+ var __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1103
+ var __spreadValues$3 = (a, b) => {
1095
1104
  for (var prop in b || (b = {}))
1096
- if (__hasOwnProp$2.call(b, prop))
1097
- __defNormalProp$2(a, prop, b[prop]);
1098
- if (__getOwnPropSymbols$2)
1099
- for (var prop of __getOwnPropSymbols$2(b)) {
1100
- if (__propIsEnum$2.call(b, prop))
1101
- __defNormalProp$2(a, prop, b[prop]);
1105
+ if (__hasOwnProp$3.call(b, prop))
1106
+ __defNormalProp$3(a, prop, b[prop]);
1107
+ if (__getOwnPropSymbols$3)
1108
+ for (var prop of __getOwnPropSymbols$3(b)) {
1109
+ if (__propIsEnum$3.call(b, prop))
1110
+ __defNormalProp$3(a, prop, b[prop]);
1102
1111
  }
1103
1112
  return a;
1104
1113
  };
1105
- var __spreadProps$2 = (a, b) => __defProps$2(a, __getOwnPropDescs$2(b));
1114
+ var __spreadProps$3 = (a, b) => __defProps$3(a, __getOwnPropDescs$3(b));
1106
1115
  const TreeItem = ({ level, treeKey }) => {
1107
1116
  const { handler, name, forceUpdate, treeProps } = useTreeContext();
1108
1117
  const props = usePropsSelector(treeKey, {
@@ -1121,9 +1130,9 @@ const TreeItem = ({ level, treeKey }) => {
1121
1130
  },
1122
1131
  [props.children, handler.propsStore]
1123
1132
  );
1124
- return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs(Box, __spreadProps$2(__spreadValues$2({ as: "li" }, getDomProps(treeProps, name, "node", props)), { children: [
1133
+ return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs(Box, __spreadProps$3(__spreadValues$3({ as: "li" }, getDomProps(treeProps, name, "node", props)), { children: [
1125
1134
  /* @__PURE__ */ jsx(TreeItemLabel$1, { level, treeKey }),
1126
- /* @__PURE__ */ jsx(
1135
+ props.isExpanded && /* @__PURE__ */ jsx(
1127
1136
  TreeItemChildren$1,
1128
1137
  {
1129
1138
  forceUpdate,
@@ -1136,33 +1145,33 @@ const TreeItem = ({ level, treeKey }) => {
1136
1145
  };
1137
1146
  var TreeItem$1 = React.memo(TreeItem);
1138
1147
 
1139
- var __defProp$1 = Object.defineProperty;
1140
- var __defProps$1 = Object.defineProperties;
1141
- var __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors;
1142
- var __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;
1143
- var __hasOwnProp$1 = Object.prototype.hasOwnProperty;
1144
- var __propIsEnum$1 = Object.prototype.propertyIsEnumerable;
1145
- var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1146
- var __spreadValues$1 = (a, b) => {
1148
+ var __defProp$2 = Object.defineProperty;
1149
+ var __defProps$2 = Object.defineProperties;
1150
+ var __getOwnPropDescs$2 = Object.getOwnPropertyDescriptors;
1151
+ var __getOwnPropSymbols$2 = Object.getOwnPropertySymbols;
1152
+ var __hasOwnProp$2 = Object.prototype.hasOwnProperty;
1153
+ var __propIsEnum$2 = Object.prototype.propertyIsEnumerable;
1154
+ var __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1155
+ var __spreadValues$2 = (a, b) => {
1147
1156
  for (var prop in b || (b = {}))
1148
- if (__hasOwnProp$1.call(b, prop))
1149
- __defNormalProp$1(a, prop, b[prop]);
1150
- if (__getOwnPropSymbols$1)
1151
- for (var prop of __getOwnPropSymbols$1(b)) {
1152
- if (__propIsEnum$1.call(b, prop))
1153
- __defNormalProp$1(a, prop, b[prop]);
1157
+ if (__hasOwnProp$2.call(b, prop))
1158
+ __defNormalProp$2(a, prop, b[prop]);
1159
+ if (__getOwnPropSymbols$2)
1160
+ for (var prop of __getOwnPropSymbols$2(b)) {
1161
+ if (__propIsEnum$2.call(b, prop))
1162
+ __defNormalProp$2(a, prop, b[prop]);
1154
1163
  }
1155
1164
  return a;
1156
1165
  };
1157
- var __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));
1166
+ var __spreadProps$2 = (a, b) => __defProps$2(a, __getOwnPropDescs$2(b));
1158
1167
  var __objRest = (source, exclude) => {
1159
1168
  var target = {};
1160
1169
  for (var prop in source)
1161
- if (__hasOwnProp$1.call(source, prop) && exclude.indexOf(prop) < 0)
1170
+ if (__hasOwnProp$2.call(source, prop) && exclude.indexOf(prop) < 0)
1162
1171
  target[prop] = source[prop];
1163
- if (source != null && __getOwnPropSymbols$1)
1164
- for (var prop of __getOwnPropSymbols$1(source)) {
1165
- if (exclude.indexOf(prop) < 0 && __propIsEnum$1.call(source, prop))
1172
+ if (source != null && __getOwnPropSymbols$2)
1173
+ for (var prop of __getOwnPropSymbols$2(source)) {
1174
+ if (exclude.indexOf(prop) < 0 && __propIsEnum$2.call(source, prop))
1166
1175
  target[prop] = source[prop];
1167
1176
  }
1168
1177
  return target;
@@ -1170,7 +1179,7 @@ var __objRest = (source, exclude) => {
1170
1179
  const TreeItemChildren = React.forwardRef((_a, ref) => {
1171
1180
  var _b = _a, { level, nodes, forceUpdate } = _b, props = __objRest(_b, ["level", "nodes", "forceUpdate"]);
1172
1181
  const { handler } = useTreeContext();
1173
- return /* @__PURE__ */ jsx(Box, __spreadProps$1(__spreadValues$1({ ref, as: "ul" }, props), { children: nodes == null ? void 0 : nodes.map((current) => {
1182
+ return /* @__PURE__ */ jsx(Box, __spreadProps$2(__spreadValues$2({ ref, as: "ul" }, props), { children: nodes == null ? void 0 : nodes.map((current) => {
1174
1183
  const currentProps = handler.propsStore.getFieldProps(current.id);
1175
1184
  if (!currentProps)
1176
1185
  return null;
@@ -1312,30 +1321,30 @@ function useTreeData({ name, treeProps }) {
1312
1321
  };
1313
1322
  }
1314
1323
 
1315
- var __defProp = Object.defineProperty;
1316
- var __defProps = Object.defineProperties;
1317
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
1318
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
1319
- var __hasOwnProp = Object.prototype.hasOwnProperty;
1320
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
1321
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1322
- var __spreadValues = (a, b) => {
1324
+ var __defProp$1 = Object.defineProperty;
1325
+ var __defProps$1 = Object.defineProperties;
1326
+ var __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors;
1327
+ var __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;
1328
+ var __hasOwnProp$1 = Object.prototype.hasOwnProperty;
1329
+ var __propIsEnum$1 = Object.prototype.propertyIsEnumerable;
1330
+ var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1331
+ var __spreadValues$1 = (a, b) => {
1323
1332
  for (var prop in b || (b = {}))
1324
- if (__hasOwnProp.call(b, prop))
1325
- __defNormalProp(a, prop, b[prop]);
1326
- if (__getOwnPropSymbols)
1327
- for (var prop of __getOwnPropSymbols(b)) {
1328
- if (__propIsEnum.call(b, prop))
1329
- __defNormalProp(a, prop, b[prop]);
1333
+ if (__hasOwnProp$1.call(b, prop))
1334
+ __defNormalProp$1(a, prop, b[prop]);
1335
+ if (__getOwnPropSymbols$1)
1336
+ for (var prop of __getOwnPropSymbols$1(b)) {
1337
+ if (__propIsEnum$1.call(b, prop))
1338
+ __defNormalProp$1(a, prop, b[prop]);
1330
1339
  }
1331
1340
  return a;
1332
1341
  };
1333
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
1342
+ var __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));
1334
1343
  const Tree = (props) => {
1335
1344
  var _a, _b, _c;
1336
1345
  const { data, handler, keyHandler } = useTreeData({
1337
1346
  name: props.name,
1338
- treeProps: __spreadValues({}, props)
1347
+ treeProps: __spreadValues$1({}, props)
1339
1348
  });
1340
1349
  const [isLoading, setIsLoading] = React.useState(false);
1341
1350
  const [currentSearchString, setCurrentSearchString] = React.useState("");
@@ -1411,7 +1420,7 @@ const Tree = (props) => {
1411
1420
  }, [handler, props, data.forceUpdate]);
1412
1421
  return /* @__PURE__ */ jsx(TreeContextProvider, { value: contextValue, children: /* @__PURE__ */ jsxs(
1413
1422
  Box,
1414
- __spreadProps(__spreadValues({
1423
+ __spreadProps$1(__spreadValues$1({
1415
1424
  className: `tree ${(_a = props.className) != null ? _a : ""}`
1416
1425
  }, getVariant((_b = props.variant) != null ? _b : "layout.common.trees.primary")), {
1417
1426
  children: [
@@ -1425,7 +1434,7 @@ const Tree = (props) => {
1425
1434
  ),
1426
1435
  /* @__PURE__ */ jsx(
1427
1436
  TreeItemChildren$1,
1428
- __spreadValues({
1437
+ __spreadValues$1({
1429
1438
  "aria-activedescendant": focusedNode !== null ? getActiveDescendantName(props.name, focusedNode) : void 0,
1430
1439
  "aria-label": props.label,
1431
1440
  as: "ul",
@@ -1447,4 +1456,236 @@ const Tree = (props) => {
1447
1456
  };
1448
1457
  var Tree$1 = memo(Tree);
1449
1458
 
1450
- export { Tree$1 as Tree, TreeDataController, useTreeContext, useTreeData, useTreeDataController, useTreeSelector, useTreeSelectorByName };
1459
+ var __defProp = Object.defineProperty;
1460
+ var __defProps = Object.defineProperties;
1461
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
1462
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
1463
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
1464
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
1465
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
1466
+ var __spreadValues = (a, b) => {
1467
+ for (var prop in b || (b = {}))
1468
+ if (__hasOwnProp.call(b, prop))
1469
+ __defNormalProp(a, prop, b[prop]);
1470
+ if (__getOwnPropSymbols)
1471
+ for (var prop of __getOwnPropSymbols(b)) {
1472
+ if (__propIsEnum.call(b, prop))
1473
+ __defNormalProp(a, prop, b[prop]);
1474
+ }
1475
+ return a;
1476
+ };
1477
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
1478
+ var __accessCheck$1 = (obj, member, msg) => {
1479
+ if (!member.has(obj))
1480
+ throw TypeError("Cannot " + msg);
1481
+ };
1482
+ var __privateGet$1 = (obj, member, getter) => {
1483
+ __accessCheck$1(obj, member, "read from private field");
1484
+ return getter ? getter.call(obj) : member.get(obj);
1485
+ };
1486
+ var __privateAdd$1 = (obj, member, value) => {
1487
+ if (member.has(obj))
1488
+ throw TypeError("Cannot add the same private member more than once");
1489
+ member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
1490
+ };
1491
+ var _getByAbsoluteId;
1492
+ function isOOTreeNode(element) {
1493
+ return typeof element.attachToTree === "function";
1494
+ }
1495
+ const _OOTreeNode = class {
1496
+ constructor(tree, parent, props) {
1497
+ this.tree = tree;
1498
+ this.parent = parent;
1499
+ this.props = props;
1500
+ this.id = "";
1501
+ this.prefix = "";
1502
+ __privateAdd$1(this, _getByAbsoluteId, (id) => {
1503
+ const props = this.tree.getController().propsStore.getFieldProps(id);
1504
+ if (props === void 0)
1505
+ return void 0;
1506
+ return new _OOTreeNode(this.tree, props, props);
1507
+ });
1508
+ if (parent) {
1509
+ if (isOOTreeNode(parent)) {
1510
+ Object.assign(
1511
+ this,
1512
+ this.tree.calculateNodePrefix(props.id, parent == null ? void 0 : parent.prefix)
1513
+ );
1514
+ } else {
1515
+ this.prefix = parent.nodeProps.__prefix;
1516
+ this.id = String(parent.id);
1517
+ }
1518
+ }
1519
+ }
1520
+ attachToTree() {
1521
+ var _a, _b;
1522
+ const parentId = (_b = (_a = this.parent) == null ? void 0 : _a.id) != null ? _b : void 0;
1523
+ this.tree.getController().append(__spreadProps(__spreadValues({}, this.props), {
1524
+ id: this.id,
1525
+ label: this.props.label,
1526
+ parentId,
1527
+ nodeProps: __spreadProps(__spreadValues({}, this.props.nodeProps), {
1528
+ __prefix: this.prefix
1529
+ })
1530
+ }));
1531
+ }
1532
+ append(props) {
1533
+ const newNode = new _OOTreeNode(this.tree, this, props);
1534
+ newNode.attachToTree();
1535
+ return newNode;
1536
+ }
1537
+ getAll() {
1538
+ return this.tree.getController().propsStore.getFieldProps(this.id).children.map((current) => {
1539
+ return () => {
1540
+ return __privateGet$1(this, _getByAbsoluteId).call(this, String(current));
1541
+ };
1542
+ });
1543
+ }
1544
+ getById(id) {
1545
+ const { id: actualId } = this.tree.calculateNodePrefix(id, this.prefix);
1546
+ const props = this.tree.getController().propsStore.getFieldProps(actualId);
1547
+ if (props === void 0)
1548
+ return void 0;
1549
+ return new _OOTreeNode(this.tree, props, props);
1550
+ }
1551
+ getParent() {
1552
+ if (!this.parent)
1553
+ return null;
1554
+ const props = this.tree.getController().propsStore.getFieldProps(this.parent.id);
1555
+ return new _OOTreeNode(this.tree, props, props);
1556
+ }
1557
+ getProps() {
1558
+ return this.tree.getController().propsStore.getFieldProps(this.id);
1559
+ }
1560
+ remove() {
1561
+ this.tree.getController().remove(this.id, true);
1562
+ }
1563
+ update(props) {
1564
+ this.tree.getController().propsStore.updateField(this.id, props);
1565
+ }
1566
+ };
1567
+ let OOTreeNode = _OOTreeNode;
1568
+ _getByAbsoluteId = new WeakMap();
1569
+
1570
+ class OOTreeChildren extends OOTreeNode {
1571
+ constructor(tree) {
1572
+ super(tree, null, {});
1573
+ this.tree = tree;
1574
+ this.prefix = "c";
1575
+ }
1576
+ }
1577
+
1578
+ var __accessCheck = (obj, member, msg) => {
1579
+ if (!member.has(obj))
1580
+ throw TypeError("Cannot " + msg);
1581
+ };
1582
+ var __privateGet = (obj, member, getter) => {
1583
+ __accessCheck(obj, member, "read from private field");
1584
+ return getter ? getter.call(obj) : member.get(obj);
1585
+ };
1586
+ var __privateAdd = (obj, member, value) => {
1587
+ if (member.has(obj))
1588
+ throw TypeError("Cannot add the same private member more than once");
1589
+ member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
1590
+ };
1591
+ var __privateSet = (obj, member, value, setter) => {
1592
+ __accessCheck(obj, member, "write to private field");
1593
+ setter ? setter.call(obj, value) : member.set(obj, value);
1594
+ return value;
1595
+ };
1596
+ var _onReady, _children, _controller;
1597
+ class OOTree extends HashedEventEmitter {
1598
+ constructor(label, name, hashMethod, onReady) {
1599
+ super(hashMethod);
1600
+ this.label = label;
1601
+ this.name = name;
1602
+ __privateAdd(this, _onReady, void 0);
1603
+ /**
1604
+ * Accessors
1605
+ */
1606
+ __privateAdd(this, _children, null);
1607
+ __privateAdd(this, _controller, null);
1608
+ /**
1609
+ * Component
1610
+ */
1611
+ this.getHandler = (handler) => {
1612
+ var _a;
1613
+ __privateSet(this, _controller, handler);
1614
+ __privateSet(this, _children, new OOTreeChildren(this));
1615
+ (_a = __privateGet(this, _onReady)) == null ? void 0 : _a.call(this);
1616
+ };
1617
+ this.Component = () => {
1618
+ return /* @__PURE__ */ jsx(
1619
+ Tree$1,
1620
+ {
1621
+ label: this.label,
1622
+ name: this.name,
1623
+ getHandler: this.getHandler
1624
+ }
1625
+ );
1626
+ };
1627
+ /**
1628
+ * Data manipulation
1629
+ */
1630
+ this.prefixJoinCharacter = "$";
1631
+ this.prefixWithIdJoinCharacter = "__";
1632
+ this.prefixesMap = {};
1633
+ /**
1634
+ * Calcula el prefijo de un nodo que se está agregando al árbol evitando
1635
+ * colisiones. Ese prefijo estará asociado a cada nodo y se utilizará para dar
1636
+ * nombres únicos a sus hijos, no para el nodo en sí. Entonces, cada vez que
1637
+ * se construye un nodo, se le asigna un prefijo considerando el prefijo de su
1638
+ * padre, pero su nombre se hace a partir del prefijo del padre y su id.
1639
+ */
1640
+ this.calculateNodePrefix = (id, prefix) => {
1641
+ const expectedPrefix = [prefix, String(id).charAt(0)].filter(Boolean).join(this.prefixJoinCharacter);
1642
+ let i = 1;
1643
+ let actualPrefix = expectedPrefix;
1644
+ while (this.prefixesMap[actualPrefix] !== void 0) {
1645
+ actualPrefix = `${expectedPrefix}${i++}`;
1646
+ }
1647
+ this.prefixesMap[actualPrefix] = {
1648
+ nodeId: id,
1649
+ prefix: actualPrefix
1650
+ };
1651
+ const data = {
1652
+ prefix: actualPrefix,
1653
+ id: [[prefix].filter(Boolean).join(this.prefixJoinCharacter), id].filter(Boolean).join(this.prefixWithIdJoinCharacter)
1654
+ };
1655
+ return data;
1656
+ };
1657
+ __privateSet(this, _onReady, onReady != null ? onReady : () => {
1658
+ });
1659
+ }
1660
+ getChildren() {
1661
+ if (__privateGet(this, _children) === null)
1662
+ throw new Error(
1663
+ "Children was not assigned yet, maybe you forgot to listen to onReady event on OOTree component."
1664
+ );
1665
+ return __privateGet(this, _children);
1666
+ }
1667
+ getController() {
1668
+ if (__privateGet(this, _controller) === null)
1669
+ throw new Error(
1670
+ "Controller was not assigned yet, maybe you forgot to listen to onReady event on OOTree component."
1671
+ );
1672
+ const c = this;
1673
+ return new Proxy(__privateGet(this, _controller), {
1674
+ get(target, prop) {
1675
+ if (prop === "removeAll") {
1676
+ return () => {
1677
+ var _a;
1678
+ c.prefixesMap = {};
1679
+ (_a = __privateGet(c, _controller)) == null ? void 0 : _a.removeAll();
1680
+ };
1681
+ }
1682
+ return target[prop];
1683
+ }
1684
+ });
1685
+ }
1686
+ }
1687
+ _onReady = new WeakMap();
1688
+ _children = new WeakMap();
1689
+ _controller = new WeakMap();
1690
+
1691
+ export { OOTree, OOTreeNode, Tree$1 as Tree, TreeDataController, isOOTreeNode, useTreeContext, useTreeData, useTreeDataController, useTreeSelector, useTreeSelectorByName };