@apia/tree 2.0.9 → 2.0.11

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/OOTree/OOTreeChildren.d.ts +14 -0
  2. package/dist/OOTree/OOTreeChildren.d.ts.map +1 -0
  3. package/dist/OOTree/OOTreeChildren.js +17 -0
  4. package/dist/OOTree/OOTreeChildren.js.map +1 -0
  5. package/dist/OOTree/OOTreeNode.d.ts +30 -0
  6. package/dist/OOTree/OOTreeNode.d.ts.map +1 -0
  7. package/dist/OOTree/OOTreeNode.js +133 -0
  8. package/dist/OOTree/OOTreeNode.js.map +1 -0
  9. package/dist/OOTree/index.d.ts +36 -0
  10. package/dist/OOTree/index.d.ts.map +1 -0
  11. package/dist/OOTree/index.js +126 -0
  12. package/dist/OOTree/index.js.map +1 -0
  13. package/dist/OOTree/types.d.ts +11 -0
  14. package/dist/OOTree/types.d.ts.map +1 -0
  15. package/dist/SearchLabel.js +31 -0
  16. package/dist/SearchLabel.js.map +1 -0
  17. package/dist/Tree.d.ts +7 -0
  18. package/dist/Tree.d.ts.map +1 -0
  19. package/dist/Tree.js +131 -0
  20. package/dist/Tree.js.map +1 -0
  21. package/dist/TreeContext.d.ts +13 -0
  22. package/dist/TreeContext.d.ts.map +1 -0
  23. package/dist/TreeContext.js +22 -0
  24. package/dist/TreeContext.js.map +1 -0
  25. package/dist/TreeDataController.d.ts +116 -0
  26. package/dist/TreeDataController.d.ts.map +1 -0
  27. package/dist/TreeDataController.js +616 -0
  28. package/dist/TreeDataController.js.map +1 -0
  29. package/dist/TreeItem.js +51 -0
  30. package/dist/TreeItem.js.map +1 -0
  31. package/dist/TreeItemChildren.js +20 -0
  32. package/dist/TreeItemChildren.js.map +1 -0
  33. package/dist/TreeItemLabel.js +72 -0
  34. package/dist/TreeItemLabel.js.map +1 -0
  35. package/dist/getDomProps.js +37 -0
  36. package/dist/getDomProps.js.map +1 -0
  37. package/dist/index.d.ts +7 -417
  38. package/dist/index.js +6 -1546
  39. package/dist/index.js.map +1 -1
  40. package/dist/renderers/DefaultIconRenderer.js +18 -0
  41. package/dist/renderers/DefaultIconRenderer.js.map +1 -0
  42. package/dist/renderers/DefaultLabelRenderer.js +10 -0
  43. package/dist/renderers/DefaultLabelRenderer.js.map +1 -0
  44. package/dist/renderers/Spacer.js +10 -0
  45. package/dist/renderers/Spacer.js.map +1 -0
  46. package/dist/types.d.ts +211 -0
  47. package/dist/types.d.ts.map +1 -0
  48. package/dist/useTreeData.d.ts +25 -0
  49. package/dist/useTreeData.d.ts.map +1 -0
  50. package/dist/useTreeData.js +131 -0
  51. package/dist/useTreeData.js.map +1 -0
  52. package/dist/util.js +220 -0
  53. package/dist/util.js.map +1 -0
  54. package/package.json +6 -6
@@ -0,0 +1,22 @@
1
+ import { jsx } from '@apia/theme/jsx-runtime';
2
+ import React from 'react';
3
+
4
+ const TreeContext = React.createContext({});
5
+ function useTreeContext() {
6
+ const context = React.useContext(TreeContext);
7
+ if (!context)
8
+ throw new Error("There is no tree context");
9
+ return context;
10
+ }
11
+ const TreeContextProvider = ({
12
+ children,
13
+ value
14
+ }) => {
15
+ const Provider = React.useMemo(() => {
16
+ return TreeContext.Provider;
17
+ }, []);
18
+ return /* @__PURE__ */ jsx(Provider, { value, children });
19
+ };
20
+
21
+ export { TreeContextProvider, TreeContext as default, useTreeContext };
22
+ //# sourceMappingURL=TreeContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeContext.js","sources":["../src/TreeContext.tsx"],"sourcesContent":["import React from 'react';\r\nimport TreeDataController from './TreeDataController';\r\nimport { TDataNode, TTreeProps } from './types';\r\n\r\nexport type TTreeContext<\r\n NodeProps extends Record<string, unknown> = Record<string, unknown>,\r\n NodeType extends TDataNode<NodeProps> = TDataNode<NodeProps>,\r\n> = {\r\n forceUpdate: number;\r\n name: string;\r\n handler: TreeDataController<NodeProps, NodeType>;\r\n treeProps: TTreeProps<NodeProps, NodeType>;\r\n} & Pick<TTreeProps, 'focusGetter'>;\r\n\r\nconst TreeContext = React.createContext({} as TTreeContext);\r\n\r\nexport function useTreeContext<\r\n NodeProps extends Record<string, unknown> = Record<string, unknown>,\r\n NodeType extends TDataNode<NodeProps> = TDataNode<NodeProps>,\r\n>() {\r\n const context = React.useContext(TreeContext);\r\n if (!context) throw new Error('There is no tree context');\r\n return context as unknown as TTreeContext<NodeProps, NodeType>;\r\n}\r\n\r\nexport const TreeContextProvider = <\r\n NodeProps extends Record<string, unknown> = Record<string, unknown>,\r\n NodeType extends TDataNode<NodeProps> = TDataNode<NodeProps>,\r\n>({\r\n children,\r\n value,\r\n}: {\r\n children: React.ReactNode;\r\n value: TTreeContext<NodeProps, NodeType>;\r\n}) => {\r\n const Provider = React.useMemo(() => {\r\n return TreeContext.Provider as unknown as React.Provider<\r\n TTreeContext<NodeProps, NodeType>\r\n >;\r\n }, []);\r\n\r\n return <Provider value={value}>{children}</Provider>;\r\n};\r\n\r\nexport default TreeContext;\r\n"],"names":[],"mappings":";;;AAcA,MAAM,WAAc,GAAA,KAAA,CAAM,aAAc,CAAA,EAAkB,EAAA;AAEnD,SAAS,cAGZ,GAAA;AACF,EAAM,MAAA,OAAA,GAAU,KAAM,CAAA,UAAA,CAAW,WAAW,CAAA,CAAA;AAC5C,EAAA,IAAI,CAAC,OAAA;AAAS,IAAM,MAAA,IAAI,MAAM,0BAA0B,CAAA,CAAA;AACxD,EAAO,OAAA,OAAA,CAAA;AACT,CAAA;AAEO,MAAM,sBAAsB,CAGjC;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AACF,CAGM,KAAA;AACJ,EAAM,MAAA,QAAA,GAAW,KAAM,CAAA,OAAA,CAAQ,MAAM;AACnC,IAAA,OAAO,WAAY,CAAA,QAAA,CAAA;AAAA,GAGrB,EAAG,EAAE,CAAA,CAAA;AAEL,EAAO,uBAAA,GAAA,CAAC,QAAS,EAAA,EAAA,KAAA,EAAe,QAAS,EAAA,CAAA,CAAA;AAC3C;;;;"}
@@ -0,0 +1,116 @@
1
+ import React__default, { RefObject } from 'react';
2
+ import { TDataNode, TId, TTreeDataControllerConfig, TTreeDataControllerState, TDataNodeContainer } from './types.js';
3
+ import { EventEmitter, PropsStore, TModify, TRequireOnlyOne, TUpdateFieldConfiguration, TPropsConfiguration } from '@apia/util';
4
+
5
+ declare function useTreeDataController<TreeType extends TreeDataController<any, any> = TreeDataController<any, any>>(name: string): TreeType;
6
+ declare class TreeDataController<NodeProps extends Record<string, unknown> = Record<string, unknown>, NodeType extends TDataNode<NodeProps> = TDataNode<NodeProps>> extends EventEmitter<{
7
+ onArrowUpOnFirstElement: boolean;
8
+ expandNode: NodeType;
9
+ mustFocus: TId;
10
+ stateUpdate: null;
11
+ }> {
12
+ name: string;
13
+ propsStore: PropsStore<NodeType>;
14
+ _configuration: RefObject<TTreeDataControllerConfig<NodeProps, NodeType>>;
15
+ get configuration(): {
16
+ current: TTreeDataControllerConfig<NodeProps, NodeType> | null;
17
+ };
18
+ hasApendedFirstChild: boolean;
19
+ /**
20
+ * Este array se usa para conocer los padres faltantes al momento de la
21
+ * construcción del árbol, de forma de optimizar el proceso
22
+ */
23
+ missingParents: TId[];
24
+ nonEmittedUpdates: TId[];
25
+ get state(): TTreeDataControllerState;
26
+ stateKey: string;
27
+ get stateStore(): PropsStore<TTreeDataControllerState>;
28
+ constructor(name: string, configuration: RefObject<Partial<TTreeDataControllerConfig<NodeProps, NodeType>>>, propsStore?: PropsStore<NodeType>);
29
+ destructor(): void;
30
+ append(node: Omit<TModify<NodeType, {
31
+ children?: NodeType['children'];
32
+ parentId?: NodeType['parentId'];
33
+ }>, 'nodeProps' | 'actualParentId'> & Partial<Pick<NodeType, 'nodeProps'>>): void;
34
+ /**
35
+ * Cuando se quieren agregar muchos nodos, es conveniente llamar primero al
36
+ * método batchInit y luego de finalizar, al método batchFinish()
37
+ */
38
+ batchInit(): void;
39
+ private getNodesRecursive;
40
+ /**
41
+ * Cuando se quieren agregar muchos nodos, es conveniente llamar primero al
42
+ * método batchInit y luego de finalizar, al método batchFinish()
43
+ */
44
+ batchFinish(): void;
45
+ config(newConf: Partial<TTreeDataControllerConfig<NodeProps, NodeType>>): void;
46
+ deselectAll(): void;
47
+ forceEmitUpdate(): void;
48
+ getInitialState(): TTreeDataControllerState;
49
+ getNodesAsArray(): NodeType[];
50
+ /**
51
+ * Devuelve un array que contiene el id de todos los nodos pertenecientes al
52
+ * árbol
53
+ */
54
+ getNodesIds(): string[];
55
+ getParentId(parentId: TId): TId;
56
+ /**
57
+ * Este método permite controlar el comportamiento con el teclado desde fuera
58
+ * del componente.
59
+ */
60
+ handleKey(ev: React__default.KeyboardEvent): void;
61
+ isNode(node: NodeType | TDataNodeContainer<NodeProps> | TId): node is NodeType;
62
+ isNodeContainer(node: NodeType | TDataNodeContainer<NodeProps> | TId): node is TDataNodeContainer<NodeProps>;
63
+ includes(searchNode: NodeType): boolean;
64
+ initRoot(): void;
65
+ move(moveNode: TId, destinationNode: TId, afterOrBefore?: TRequireOnlyOne<{
66
+ after: NodeType | TId;
67
+ before: NodeType | TId;
68
+ position: number;
69
+ }>): void;
70
+ /**
71
+ * Borra el nodo del árbol, y dependiendo del parámetro removeChildren, borra
72
+ * también sus hijos.
73
+ *
74
+ * @param removeChildren - Si se pasa en false, los nodos hijos son movidos al root
75
+ */
76
+ remove(removeNode: NodeType | TId, removeChildren?: boolean): void;
77
+ removeMultiple(nodes: TId[], removeChildren?: boolean): void;
78
+ previousNodes: TId[];
79
+ /**
80
+ * Borra todos los nodos del árbol.
81
+ */
82
+ removeAll(): void;
83
+ selectAll(): void;
84
+ setExpandedNodes(nodes: TId[]): void;
85
+ setFocusedNode(key: TId, avoidSelection?: boolean): void;
86
+ setSelectedNodes(nodes: TId[], force?: boolean): void;
87
+ setSelectedNodesByClickEvent(ev: React__default.MouseEvent): void;
88
+ setState: (updateProps: Partial<TTreeDataControllerState>, conf?: TUpdateFieldConfiguration) => void;
89
+ useState: <T>(selector: (state: TTreeDataControllerState) => T) => T;
90
+ toggleNodeExpandedState(key: TId, shouldExpand?: boolean): void;
91
+ toggleNodeSelectedState(key: TId, isSelected?: boolean): void;
92
+ }
93
+ /**
94
+ * Este hook permite escuchar las props de un árbol, para ello es necesario
95
+ * pasar el handler.
96
+ *
97
+ * @param handler
98
+ * @param configuration
99
+ * @returns
100
+ */
101
+ 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;
102
+ /**
103
+ * Este hook permite escuchar las props de un árbol, para ello es necesario
104
+ * pasar el handler.
105
+ *
106
+ * @param handler
107
+ * @param configuration
108
+ * @returns
109
+ */
110
+ 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>): {
111
+ handler: TreeDataController<NodeProps, NodeType>;
112
+ selection: Selected;
113
+ };
114
+
115
+ export { TreeDataController as default, useTreeDataController, useTreeSelector, useTreeSelectorByName };
116
+ //# sourceMappingURL=TreeDataController.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeDataController.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}