@apia/tree 3.0.1 → 3.0.6

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 (54) hide show
  1. package/dist/index.d.ts +415 -7
  2. package/dist/index.js +1547 -6
  3. package/dist/index.js.map +1 -1
  4. package/package.json +11 -7
  5. package/dist/OOTree/OOTreeChildren.d.ts +0 -14
  6. package/dist/OOTree/OOTreeChildren.d.ts.map +0 -1
  7. package/dist/OOTree/OOTreeChildren.js +0 -17
  8. package/dist/OOTree/OOTreeChildren.js.map +0 -1
  9. package/dist/OOTree/OOTreeNode.d.ts +0 -30
  10. package/dist/OOTree/OOTreeNode.d.ts.map +0 -1
  11. package/dist/OOTree/OOTreeNode.js +0 -133
  12. package/dist/OOTree/OOTreeNode.js.map +0 -1
  13. package/dist/OOTree/index.d.ts +0 -36
  14. package/dist/OOTree/index.d.ts.map +0 -1
  15. package/dist/OOTree/index.js +0 -126
  16. package/dist/OOTree/index.js.map +0 -1
  17. package/dist/OOTree/types.d.ts +0 -11
  18. package/dist/OOTree/types.d.ts.map +0 -1
  19. package/dist/SearchLabel.js +0 -32
  20. package/dist/SearchLabel.js.map +0 -1
  21. package/dist/Tree.d.ts +0 -7
  22. package/dist/Tree.d.ts.map +0 -1
  23. package/dist/Tree.js +0 -131
  24. package/dist/Tree.js.map +0 -1
  25. package/dist/TreeContext.d.ts +0 -13
  26. package/dist/TreeContext.d.ts.map +0 -1
  27. package/dist/TreeContext.js +0 -22
  28. package/dist/TreeContext.js.map +0 -1
  29. package/dist/TreeDataController.d.ts +0 -116
  30. package/dist/TreeDataController.d.ts.map +0 -1
  31. package/dist/TreeDataController.js +0 -616
  32. package/dist/TreeDataController.js.map +0 -1
  33. package/dist/TreeItem.js +0 -51
  34. package/dist/TreeItem.js.map +0 -1
  35. package/dist/TreeItemChildren.js +0 -20
  36. package/dist/TreeItemChildren.js.map +0 -1
  37. package/dist/TreeItemLabel.js +0 -72
  38. package/dist/TreeItemLabel.js.map +0 -1
  39. package/dist/getDomProps.js +0 -37
  40. package/dist/getDomProps.js.map +0 -1
  41. package/dist/renderers/DefaultIconRenderer.js +0 -18
  42. package/dist/renderers/DefaultIconRenderer.js.map +0 -1
  43. package/dist/renderers/DefaultLabelRenderer.js +0 -10
  44. package/dist/renderers/DefaultLabelRenderer.js.map +0 -1
  45. package/dist/renderers/Spacer.js +0 -10
  46. package/dist/renderers/Spacer.js.map +0 -1
  47. package/dist/types.d.ts +0 -211
  48. package/dist/types.d.ts.map +0 -1
  49. package/dist/useTreeData.d.ts +0 -25
  50. package/dist/useTreeData.d.ts.map +0 -1
  51. package/dist/useTreeData.js +0 -131
  52. package/dist/useTreeData.js.map +0 -1
  53. package/dist/util.js +0 -220
  54. package/dist/util.js.map +0 -1
package/dist/index.d.ts CHANGED
@@ -1,8 +1,416 @@
1
- export { default as Tree } from './Tree.js';
2
- export { useTreeContext } from './TreeContext.js';
3
- export { default as TreeDataController, useTreeDataController, useTreeSelector, useTreeSelectorByName } from './TreeDataController.js';
4
- export { default as useTreeData } from './useTreeData.js';
5
- export { TDataNode, TTreeLabelRenderer, TTreeProps } from './types.js';
6
- export { OOTree } from './OOTree/index.js';
7
- export { OOTreeNode, isOOTreeNode } from './OOTree/OOTreeNode.js';
1
+ import * as React from 'react';
2
+ import React__default, { RefObject } from 'react';
3
+ import { EventEmitter, PropsStore, TModify, TRequireOnlyOne, TUpdateFieldConfiguration, TPropsConfiguration, TId as TId$1 } from '@apia/util';
4
+ import { TIconName } from '@apia/icons';
5
+
6
+ declare function useTreeDataController<TreeType extends TreeDataController<any, any> = TreeDataController<any, any>>(name: string): TreeType;
7
+ declare class TreeDataController<NodeProps extends Record<string, unknown> = Record<string, unknown>, NodeType extends TDataNode<NodeProps> = TDataNode<NodeProps>> extends EventEmitter<{
8
+ onArrowUpOnFirstElement: boolean;
9
+ expandNode: NodeType;
10
+ mustFocus: TId;
11
+ stateUpdate: null;
12
+ }> {
13
+ name: string;
14
+ propsStore: PropsStore<NodeType>;
15
+ _configuration: RefObject<TTreeDataControllerConfig<NodeProps, NodeType>>;
16
+ get configuration(): {
17
+ current: TTreeDataControllerConfig<NodeProps, NodeType> | null;
18
+ };
19
+ hasApendedFirstChild: boolean;
20
+ /**
21
+ * Este array se usa para conocer los padres faltantes al momento de la
22
+ * construcción del árbol, de forma de optimizar el proceso
23
+ */
24
+ missingParents: TId[];
25
+ nonEmittedUpdates: TId[];
26
+ get state(): TTreeDataControllerState;
27
+ stateKey: string;
28
+ get stateStore(): PropsStore<TTreeDataControllerState>;
29
+ constructor(name: string, configuration: RefObject<Partial<TTreeDataControllerConfig<NodeProps, NodeType>>>, propsStore?: PropsStore<NodeType>);
30
+ destructor(): void;
31
+ append(node: Omit<TModify<NodeType, {
32
+ children?: NodeType['children'];
33
+ parentId?: NodeType['parentId'];
34
+ }>, 'nodeProps' | 'actualParentId'> & Partial<Pick<NodeType, 'nodeProps'>>): void;
35
+ /**
36
+ * Cuando se quieren agregar muchos nodos, es conveniente llamar primero al
37
+ * método batchInit y luego de finalizar, al método batchFinish()
38
+ */
39
+ batchInit(): void;
40
+ private getNodesRecursive;
41
+ /**
42
+ * Cuando se quieren agregar muchos nodos, es conveniente llamar primero al
43
+ * método batchInit y luego de finalizar, al método batchFinish()
44
+ */
45
+ batchFinish(): void;
46
+ config(newConf: Partial<TTreeDataControllerConfig<NodeProps, NodeType>>): void;
47
+ deselectAll(): void;
48
+ forceEmitUpdate(): void;
49
+ getInitialState(): TTreeDataControllerState;
50
+ getNodesAsArray(): NodeType[];
51
+ /**
52
+ * Devuelve un array que contiene el id de todos los nodos pertenecientes al
53
+ * árbol
54
+ */
55
+ getNodesIds(): string[];
56
+ getParentId(parentId: TId): TId;
57
+ /**
58
+ * Este método permite controlar el comportamiento con el teclado desde fuera
59
+ * del componente.
60
+ */
61
+ handleKey(ev: React__default.KeyboardEvent): void;
62
+ isNode(node: NodeType | TDataNodeContainer<NodeProps> | TId): node is NodeType;
63
+ isNodeContainer(node: NodeType | TDataNodeContainer<NodeProps> | TId): node is TDataNodeContainer<NodeProps>;
64
+ includes(searchNode: NodeType): boolean;
65
+ initRoot(): void;
66
+ move(moveNode: TId, destinationNode: TId, afterOrBefore?: TRequireOnlyOne<{
67
+ after: NodeType | TId;
68
+ before: NodeType | TId;
69
+ position: number;
70
+ }>): void;
71
+ /**
72
+ * Borra el nodo del árbol, y dependiendo del parámetro removeChildren, borra
73
+ * también sus hijos.
74
+ *
75
+ * @param removeChildren - Si se pasa en false, los nodos hijos son movidos al root
76
+ */
77
+ remove(removeNode: NodeType | TId, removeChildren?: boolean): void;
78
+ removeMultiple(nodes: TId[], removeChildren?: boolean): void;
79
+ previousNodes: TId[];
80
+ /**
81
+ * Borra todos los nodos del árbol.
82
+ */
83
+ removeAll(): void;
84
+ selectAll(): void;
85
+ setExpandedNodes(nodes: TId[]): void;
86
+ setFocusedNode(key: TId, avoidSelection?: boolean): void;
87
+ setSelectedNodes(nodes: TId[], force?: boolean): void;
88
+ setSelectedNodesByClickEvent(ev: React__default.MouseEvent): void;
89
+ setState: (updateProps: Partial<TTreeDataControllerState>, conf?: TUpdateFieldConfiguration) => void;
90
+ useState: <T>(selector: (state: TTreeDataControllerState) => T) => T;
91
+ toggleNodeExpandedState(key: TId, shouldExpand?: boolean): void;
92
+ toggleNodeSelectedState(key: TId, isSelected?: boolean): void;
93
+ }
94
+ /**
95
+ * Este hook permite escuchar las props de un árbol, para ello es necesario
96
+ * pasar el handler.
97
+ *
98
+ * @param handler
99
+ * @param configuration
100
+ * @returns
101
+ */
102
+ declare function useTreeSelector<NodeProps extends Record<string, unknown> = Record<string, unknown>, NodeType extends TDataNode<NodeProps> = TDataNode<NodeProps>, Selected = Record<string, unknown>, PropsType extends Record<string, unknown> = TTreeDataControllerState>(handler: TreeDataController<NodeProps, NodeType>, configuration?: TPropsConfiguration<Selected, PropsType>): Selected;
103
+ /**
104
+ * Este hook permite escuchar las props de un árbol, para ello es necesario
105
+ * pasar el handler.
106
+ *
107
+ * @param handler
108
+ * @param configuration
109
+ * @returns
110
+ */
111
+ declare function useTreeSelectorByName<NodeProps extends Record<string, unknown> = Record<string, unknown>, NodeType extends TDataNode<NodeProps> = TDataNode<NodeProps>, Selected = Record<string, unknown>, PropsType extends Record<string, unknown> = TTreeDataControllerState>(treeName: string, configuration?: TPropsConfiguration<Selected, PropsType>): {
112
+ handler: TreeDataController<NodeProps, NodeType>;
113
+ selection: Selected;
114
+ };
115
+
116
+ type TId = string | number;
117
+ type TDataNodeContainer<NodeProps extends Record<string, unknown> = Record<string, unknown>> = Pick<TDataNode<NodeProps>, 'children' | 'id'>;
118
+ type TTreeDataControllerConfig<NodeProps extends Record<string, unknown> = Record<string, unknown>, NodeType extends TDataNode<NodeProps> = TDataNode<NodeProps>> = {
119
+ emitUpdates?: boolean;
120
+ } & Pick<TTreeProps<NodeProps, NodeType>, 'isMultiple' | 'onLoadData' | 'onExpand' | 'disableSelection' | 'selectionMode'>;
121
+ type TTreeDataControllerState = {
122
+ expandedNodes: TId[];
123
+ filteredNodes: TId[];
124
+ focusedNode: TId | null;
125
+ isLoading: boolean;
126
+ length: number;
127
+ selectedNodes: TId[];
128
+ };
129
+ type TTreeLabelRenderer<NodeProps extends Record<string, unknown> = Record<string, unknown>> = React__default.FunctionComponent<TDataNode<NodeProps>>;
130
+ type TNodesExpandEvent<NodeProps extends Record<string, unknown> = Record<string, unknown>> = TDataNode<NodeProps>;
131
+ type TNodesSelectionEvent<NodeProps extends Record<string, unknown> = Record<string, unknown>> = TDataNode<NodeProps>[];
132
+ type TTreeProps<NodeProps extends Record<string, unknown> = Record<string, unknown>, NodeType extends TDataNode<NodeProps> = TDataNode<NodeProps>> = {
133
+ /**
134
+ * Debe ser un texto descriptivo, se usa para las personas no videntes
135
+ * principalmente.
136
+ */
137
+ label: string;
138
+ name: string;
139
+ } & Partial<{
140
+ className: string;
141
+ /**
142
+ * Permite pasar un controller propio.
143
+ */
144
+ controller?: TreeDataController<NodeProps, NodeType>;
145
+ disableSelection: boolean;
146
+ /**
147
+ * Si se pasa un filterString !== undefined => los nodos del árbol cuyo label
148
+ * no coincida serán ocultados, a menos que alguno de sus hijos si coincida.
149
+ */
150
+ filterString: string;
151
+ /**
152
+ * Es posible alterar el comportamiento por defecto cada vez que el usuario
153
+ * selecciona un elemento de la lista mediante esta función, indicando al tree
154
+ * sobre qué elemento debe colocar el foco.
155
+ *
156
+ * Esta función debe tomar el liElement que recibe como parámetro y mediante
157
+ * querySelectors o el método que se considere correcto devolver la referencia
158
+ * al hijo sobre el cual se desea colocar el foco.
159
+ *
160
+ * @param liElement - Es el li que renderiza el nodo. Los hijos más importantes de este li son:
161
+ *
162
+ * - .tree__nodeItemLabel: Es el wrapper del botón de expandir, del ícono
163
+ * del nodo y del (custom?)Renderer. - ul[role="group"]: Es el wrapper de
164
+ * todos los hijos del nodo actual.*/
165
+ focusGetter: (liElement: HTMLElement) => HTMLElement;
166
+ /**
167
+ * Esta función es llamada cuando el árbol inicializó con la referencia al
168
+ * handler como parámetro.
169
+ */
170
+ getHandler: (handler: TreeDataController<NodeProps, NodeType>) => unknown;
171
+ /**
172
+ * Permite ocultar todos los nodos de tipo folder que no tengan hijos.
173
+ */
174
+ hideEmptyFolders: boolean;
175
+ /**
176
+ * Permite ocultar la etiqueta de búsqueda
177
+ */
178
+ hideSearchLabel: boolean;
179
+ initialNodes: NodeType[];
180
+ /**
181
+ * Pone el mismo spinner que mientras está en modo batch.
182
+ */
183
+ isLoading: boolean;
184
+ /**
185
+ * Habilita la selección múltiple, por defecto está deshabilitada.
186
+ */
187
+ isMultiple: boolean;
188
+ /**
189
+ * Este callback es llamado cuando se presiona la flecha arriba en el primer
190
+ * elemento del árbol. Está pensado para mover el foco hacia el cuadro de
191
+ * búsqueda.
192
+ */
193
+ onArrowUpOnFirstElement?: () => unknown;
194
+ onDeleteFilterString?: () => unknown;
195
+ onExpand: (ev: TNodesExpandEvent<NodeProps>) => unknown;
196
+ /**
197
+ * Esta función debe devolver una promesa. Cuando se expande un nodo que no
198
+ * tiene hijos, esta función es llamada y el nodo es puesto en estado de carga
199
+ * hasta que la promesa se resuelve.
200
+ */
201
+ onLoadData: (node: NodeType) => Promise<void>;
202
+ /**
203
+ * Cada vez que se hace click sobre un nodo o se presiona enter estando
204
+ * éste en foco, se llama este callback informando de la acción.
205
+ */
206
+ onNodeClick: (ev: React__default.KeyboardEvent | React__default.MouseEvent, node: NodeType) => unknown;
207
+ onSelect: (ev: TNodesSelectionEvent<NodeProps>) => unknown;
208
+ /**
209
+ * Si se pasa **onFocus**, el nodo será seleccionado al recibir foco (por
210
+ * ejemplo, al navegarlo con las flechas).
211
+ *
212
+ * Si se pasa **explicit**, solamente se
213
+ * hará seleccionará al hacerle click (o presionar enter o espacio).
214
+ *
215
+ * Si se pasa **explicitMultiple**, solamente se hará selección al hacer
216
+ * click o presionar enter o espacio, y además la selección múltiple solamente
217
+ * funcionará si las teclas Shift o Ctrl están presionadas.
218
+ *
219
+ * @default "onFocus"
220
+ */
221
+ selectionMode: 'onFocus' | 'explicit' | 'explicitMultiple';
222
+ /**
223
+ * Si se pasa en false, los nodos padre solamente se podrán expandir/colapsar
224
+ * al hacer click en los íconos.
225
+ */
226
+ toggleNodesOnLabelClick: boolean;
227
+ variant: string;
228
+ }>;
229
+ type TTreeIconRenderer<NodeProps extends Record<string, unknown> = Record<string, unknown>> = React__default.FunctionComponent<TDataNode<NodeProps>>;
230
+ type TDataNode<NodeProps extends Record<string, unknown> = Record<string, unknown>> = {
231
+ actualParentId?: TId;
232
+ children: TId[];
233
+ id: TId;
234
+ label: string;
235
+ /**
236
+ * Un objeto arbitrario con propiedades de nodo que no están relacionados a
237
+ * la estructura del árbol, sino de la estructura de información que
238
+ * representa.
239
+ */
240
+ nodeProps: NodeProps;
241
+ parentId: TId;
242
+ } & Partial<{
243
+ /**
244
+ * Con esta prop se puede evitar que el nodo sea colapsado desde el label
245
+ */
246
+ allowToggleExpandedFromLabel?: boolean;
247
+ className?: string;
248
+ color?: string;
249
+ /**
250
+ * Esta prop marca que ya se pidieron los datos mediante onLoadData para este
251
+ * nodo.
252
+ */
253
+ hasLoaded: boolean;
254
+ /**
255
+ * El icon puede ser el nombre de uno de los elementos del mapa de íconos de
256
+ * Icon.tsx o un TTreeIconRenderer que permite utilizar un componente para
257
+ * renderizar el ícono.*/
258
+ icon: TIconName | TTreeIconRenderer<NodeProps>;
259
+ /**
260
+ * Este string se usa como height y width del ícono, de modo que se puede
261
+ * pasar cualquier expresión válida de ThemeUI.
262
+ */
263
+ iconSize: string;
264
+ /**
265
+ * Cuando un nodo está deshabilitado, no se pondrá foco en él.
266
+ */
267
+ isDisabled: boolean;
268
+ /**
269
+ * Indica si un nodo está o no expandido, en caso de que se establezca en
270
+ * true, el mismo será expandido. Esto puede ser útil para controlar el árbol
271
+ * desde fuera, en cuyo caso se deben modificar las propiedades mediante
272
+ * handler.propsStore.updateField(node.id, { newProps }).
273
+ */
274
+ isExpanded: boolean;
275
+ /**
276
+ * Indica que el nodo no debe mostrarse ya que no coincide con los criterios
277
+ * de filtrado.
278
+ */
279
+ isFiltered: boolean;
280
+ /**
281
+ * Indica si un nodo está en foco, es importante notar que alterar esta
282
+ * propiedad no va a alterar qué nodo del árbol está en foco ya que ese
283
+ * control lo hace internamente el árbol. En caso de querer modificar esto en
284
+ * forma externa, se deben usar los métodos correspondientes del handler.
285
+ */
286
+ isFocused: boolean;
287
+ /**
288
+ * Esta prop se usa para decir que un nodo es un sub-árbol, aún cuando no
289
+ * tiene hijos. Esto es especialmente útil cuando se quiere hacer carga
290
+ * asíncrona de datos, ya que al expandirse, se llamará al método onLoadData
291
+ * del tree.
292
+ */
293
+ isLeaf: boolean;
294
+ /**
295
+ * Se setea en true al momento de llamar a onLoadData y en false al finalizar
296
+ * la carga de datos.
297
+ */
298
+ isLoading: boolean;
299
+ /**
300
+ * Por defecto todos los nodos son seleccionables, se debe pasar false
301
+ * explícitamente para deshabilitar la selección.
302
+ */
303
+ isSelectable: boolean;
304
+ /**
305
+ * Indica si un nodo está o no seleccionado. Esto puede ser útil para
306
+ * controlar el árbol desde fuera, en cuyo caso se deben modificar las
307
+ * propiedades mediante handler.propsStore.updateField(node.id, { newProps }).
308
+ */
309
+ isSelected: boolean;
310
+ /**
311
+ * Si se pasa un labelRenderer se utilizará en lugar de
312
+ * DefaultLabelRenderer.tsx. El labelRenderer es el responsable de hacer caso
313
+ * de los eventos de click para la selección del nodo.
314
+ */
315
+ labelRenderer: TTreeLabelRenderer<NodeProps>;
316
+ title: string;
317
+ }>;
318
+
319
+ declare const _default: <NodeProps extends Record<string, unknown> = Record<string, unknown>, NodeType extends TDataNode<NodeProps> = TDataNode<NodeProps>>(props: TTreeProps<NodeProps, NodeType>) => React__default.JSX.Element;
320
+
321
+ type TTreeContext<NodeProps extends Record<string, unknown> = Record<string, unknown>, NodeType extends TDataNode<NodeProps> = TDataNode<NodeProps>> = {
322
+ forceUpdate: number;
323
+ name: string;
324
+ handler: TreeDataController<NodeProps, NodeType>;
325
+ treeProps: TTreeProps<NodeProps, NodeType>;
326
+ } & Pick<TTreeProps, 'focusGetter'>;
327
+ declare function useTreeContext<NodeProps extends Record<string, unknown> = Record<string, unknown>, NodeType extends TDataNode<NodeProps> = TDataNode<NodeProps>>(): TTreeContext<NodeProps, NodeType>;
328
+
329
+ interface IUseTreeData<NodeProps extends Record<string, unknown> = Record<string, unknown>, NodeType extends TDataNode<NodeProps> = TDataNode<NodeProps>> {
330
+ name: string;
331
+ treeProps: TTreeProps<NodeProps, NodeType>;
332
+ }
333
+ declare function useTreeData<NodeProps extends Record<string, unknown> = Record<string, unknown>, NodeType extends TDataNode<NodeProps> = TDataNode<NodeProps>>({ name, treeProps }: IUseTreeData<NodeProps, NodeType>): {
334
+ data: {
335
+ children: number[];
336
+ forceUpdate: number;
337
+ };
338
+ handler: TreeDataController<NodeProps, NodeType>;
339
+ keyHandler: {
340
+ id: string;
341
+ onKeyDown: (ev: React__default.KeyboardEvent) => void;
342
+ onMouseDown: (ev: React__default.MouseEvent) => void;
343
+ onClick: (ev: React__default.MouseEvent) => void;
344
+ ref: React__default.MutableRefObject<HTMLDivElement | null>;
345
+ };
346
+ };
347
+
348
+ type PrefixMapEntry = {
349
+ nodeId: TId;
350
+ prefix: string;
351
+ };
352
+ type TOOTreeNodeProps<NodeProps extends Record<string, unknown> = Record<string, unknown>> = Omit<TDataNode<NodeProps>, 'actualParentId' | 'parentId' | 'children' | 'hasLoaded'>;
353
+ type TSortOOTreeChildren<NodeProps extends Record<string, unknown> = Record<string, unknown>> = (a: TDataNode<NodeProps>, b: TDataNode<NodeProps>) => number;
354
+
355
+ declare function isOOTreeNode<NodeProps extends Record<string, unknown> = Record<string, unknown>>(element: OOTreeNode<NodeProps> | TDataNode<NodeProps>): element is OOTreeNode<NodeProps>;
356
+ declare class OOTreeNode<NodeProps extends Record<string, unknown> = Record<string, unknown>> {
357
+ #private;
358
+ protected tree: OOTree<NodeProps>;
359
+ protected parent: OOTreeNode<NodeProps> | TDataNode<NodeProps> | null;
360
+ protected props: TOOTreeNodeProps<NodeProps>;
361
+ id: string;
362
+ prefix: string;
363
+ constructor(tree: OOTree<NodeProps>, parent: OOTreeNode<NodeProps> | TDataNode<NodeProps> | null, props: TOOTreeNodeProps<NodeProps>);
364
+ attachToTree(): void;
365
+ append(props: TOOTreeNodeProps<NodeProps>): OOTreeNode<NodeProps>;
366
+ collapse(): void;
367
+ expand(): void;
368
+ focus(expand?: boolean): void;
369
+ getAll(): (() => OOTreeNode<NodeProps> | undefined)[];
370
+ getById(id: TId): OOTreeNode<NodeProps> | undefined;
371
+ getOriginalId(): string;
372
+ getParent(): OOTreeNode<NodeProps> | null;
373
+ getProps(): TDataNode<NodeProps>;
374
+ remove(): void;
375
+ sort(sortFunction: TSortOOTreeChildren<NodeProps>): void;
376
+ update(props: Partial<Omit<TOOTreeNodeProps<NodeProps>, 'id'>>): void;
377
+ }
378
+
379
+ declare class OOTreeChildren<NodeProps extends Record<string, unknown> = Record<string, unknown>> extends OOTreeNode<NodeProps> {
380
+ protected tree: OOTree<NodeProps, any>;
381
+ constructor(tree: OOTree<NodeProps, any>);
382
+ /**
383
+ * Se sobreescribe para evitar problemas
384
+ */
385
+ expand(): void;
386
+ }
387
+
388
+ declare class OOTree<NodeProps extends Record<string, unknown> = Record<string, unknown>, Events extends Record<string, unknown> = Record<string, unknown>> extends EventEmitter<Events> {
389
+ #private;
390
+ props: TTreeProps<NodeProps>;
391
+ constructor(props: TTreeProps<NodeProps>);
392
+ getChildren: () => OOTreeChildren<NodeProps>;
393
+ getController: () => TreeDataController<NodeProps, TDataNode<NodeProps>>;
394
+ Component: (props: Partial<TTreeProps<NodeProps>>) => React.JSX.Element;
395
+ /**
396
+ * Data manipulation
397
+ */
398
+ private prefixJoinCharacter;
399
+ private prefixWithIdJoinCharacter;
400
+ protected prefixesMap: Record<string, PrefixMapEntry>;
401
+ calculateDepth: (id: TId$1) => number;
402
+ /**
403
+ * Calcula el prefijo de un nodo que se está agregando al árbol evitando
404
+ * colisiones. Ese prefijo estará asociado a cada nodo y se utilizará para dar
405
+ * nombres únicos a sus hijos, no para el nodo en sí. Entonces, cada vez que
406
+ * se construye un nodo, se le asigna un prefijo considerando el prefijo de su
407
+ * padre, pero su nombre se hace a partir del prefijo del padre y su id.
408
+ */
409
+ calculateNodePrefix: (id: TId$1, prefix?: string) => {
410
+ prefix: string;
411
+ id: string;
412
+ };
413
+ }
414
+
415
+ export { OOTree, OOTreeNode, type TDataNode, type TNodesSelectionEvent, type TTreeLabelRenderer, type TTreeProps, _default as Tree, TreeDataController, isOOTreeNode, useTreeContext, useTreeData, useTreeDataController, useTreeSelector, useTreeSelectorByName };
8
416
  //# sourceMappingURL=index.d.ts.map