@elliemae/ds-legacy-tree-model 1.0.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/dist/cjs/DSTree.js +111 -0
  2. package/dist/cjs/DSTree.js.map +7 -0
  3. package/dist/cjs/Node.js +154 -0
  4. package/dist/cjs/Node.js.map +7 -0
  5. package/dist/cjs/adapters/arraish-tree/fromDSTreeToTreeishArray.js +83 -0
  6. package/dist/cjs/adapters/arraish-tree/fromDSTreeToTreeishArray.js.map +7 -0
  7. package/dist/cjs/adapters/arraish-tree/fromTreeishArrayToDSTree.js +82 -0
  8. package/dist/cjs/adapters/arraish-tree/fromTreeishArrayToDSTree.js.map +7 -0
  9. package/dist/cjs/adapters/arraish-tree/useArraishAsDSTree.js +116 -0
  10. package/dist/cjs/adapters/arraish-tree/useArraishAsDSTree.js.map +7 -0
  11. package/dist/cjs/adapters/treeview/useTreeviewAsDSTree.js +47 -0
  12. package/dist/cjs/adapters/treeview/useTreeviewAsDSTree.js.map +7 -0
  13. package/dist/cjs/index.js +46 -0
  14. package/dist/cjs/index.js.map +7 -0
  15. package/dist/cjs/package.json +7 -0
  16. package/dist/cjs/types.js +28 -0
  17. package/dist/cjs/types.js.map +7 -0
  18. package/dist/cjs/useDSTree.js +97 -0
  19. package/dist/cjs/useDSTree.js.map +7 -0
  20. package/dist/esm/DSTree.js +81 -0
  21. package/dist/esm/DSTree.js.map +7 -0
  22. package/dist/esm/Node.js +124 -0
  23. package/dist/esm/Node.js.map +7 -0
  24. package/dist/esm/adapters/arraish-tree/fromDSTreeToTreeishArray.js +53 -0
  25. package/dist/esm/adapters/arraish-tree/fromDSTreeToTreeishArray.js.map +7 -0
  26. package/dist/esm/adapters/arraish-tree/fromTreeishArrayToDSTree.js +52 -0
  27. package/dist/esm/adapters/arraish-tree/fromTreeishArrayToDSTree.js.map +7 -0
  28. package/dist/esm/adapters/arraish-tree/useArraishAsDSTree.js +86 -0
  29. package/dist/esm/adapters/arraish-tree/useArraishAsDSTree.js.map +7 -0
  30. package/dist/esm/adapters/treeview/useTreeviewAsDSTree.js +17 -0
  31. package/dist/esm/adapters/treeview/useTreeviewAsDSTree.js.map +7 -0
  32. package/dist/esm/index.js +16 -0
  33. package/dist/esm/index.js.map +7 -0
  34. package/dist/esm/package.json +7 -0
  35. package/dist/esm/types.js +2 -0
  36. package/dist/esm/types.js.map +7 -0
  37. package/dist/esm/useDSTree.js +67 -0
  38. package/dist/esm/useDSTree.js.map +7 -0
  39. package/dist/types/DSTree.d.ts +28 -0
  40. package/dist/types/Node.d.ts +25 -0
  41. package/dist/types/adapters/arraish-tree/fromDSTreeToTreeishArray.d.ts +9 -0
  42. package/dist/types/adapters/arraish-tree/fromTreeishArrayToDSTree.d.ts +9 -0
  43. package/dist/types/adapters/arraish-tree/useArraishAsDSTree.d.ts +22 -0
  44. package/dist/types/adapters/treeview/useTreeviewAsDSTree.d.ts +23 -0
  45. package/dist/types/index.d.ts +8 -0
  46. package/dist/types/tests/adapters/arraish-tree/fromDSTreeToTreeishArray.test.d.ts +1 -0
  47. package/dist/types/tests/adapters/arraish-tree/fromTreeishArrayToDSTree.test.d.ts +1 -0
  48. package/dist/types/tests/model.read.test.d.ts +1 -0
  49. package/dist/types/tests/model.write.test.d.ts +1 -0
  50. package/dist/types/tests/tree.read.test.d.ts +1 -0
  51. package/dist/types/tests/tree.write.test.d.ts +1 -0
  52. package/dist/types/types.d.ts +33 -0
  53. package/dist/types/useDSTree.d.ts +19 -0
  54. package/package.json +61 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/adapters/arraish-tree/fromTreeishArrayToDSTree.ts"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable max-statements */\nimport { DSTree } from '../../DSTree.js';\nimport type { OverloadedItem } from '../../types.js';\n\n// we don't really need a 100% sure unique id, since we prepend a string that is most likely unique already\n// we just need to reduce the risk of collisions\n// we avoid depending on a library for this:\nconst unsecureUuid = () =>\n 'xxxxxxxx-xxxx-xxxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c == 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n\n/*\n * @param {Object} args\n * @param {Function} args.callback - a function that will be called for each node in the treeish data-structure\n * @param {Object} args.node - the node that is being currently visited\n * @param {Object} args.opts - an object that holds the opinions of the caller on how to walk the treeish data-structure\n * @param {Function} args.opts.getChildren - a function that given a node returns an array of children\n * @returns {void}\n */\nconst walkTreeish = <T extends object>({\n callback,\n node,\n opts,\n}: {\n callback: (node: T) => void;\n node: T;\n opts?: {\n getChildren: (node: T) => T[];\n };\n}): void => {\n callback(node);\n const children = opts?.getChildren(node);\n if (Array.isArray(children) && children.length > 0) {\n for (let i = 0; i < children.length; i += 1) {\n walkTreeish<T>({ callback, node: children[i], opts });\n }\n }\n};\n\n/*\n * a function that given a treeish array and some options returns a DSTree datastructure that compltely preserves the treeish array\n * but still allows to use the full power of the DSTree datastructure\n * NOTE: This create a deep clone of the treeish array, so it's not suitable for large trees and will not preserve any reference to the original treeish array\n * @param {Array} treeish - an array of items that rapresents a tree, this will be used to create a DSTree datastructure\n * @param {Object} opts - an object that governs how the treeish array will be converted to a DSTree datastructure\n * @param {Function} opts.getChildrenKey - a function that given a node returns the key used to access the node children\n * @param {Function} opts.getUniqueId - a function that given a node returns a unique string used to identify the node\n * @returns {DSTree} - a DSTree datastructure\n */\nexport const fromTreeishArrayToDSTree = <T extends object = object>(args: {\n treeish: T[];\n opts: {\n getChildrenKey: (node: T) => keyof T;\n getUniqueId: (item: T) => string;\n };\n}): DSTree<OverloadedItem<T>> => {\n // we use crypto to generate a unique id for the root, this is important for reduce the risk of collisions with any user provided id\n const rootId = `_autogenerated-ds-pseudoRoot-${unsecureUuid()}`;\n const { opts, treeish } = args;\n const { getUniqueId, getChildrenKey } = opts;\n\n // a DSTree compatible datastructure has the following characteristics:\n // - it has a \"subitems\" property that contains an array of children\n // - it has a property that holds a unique string used to identify the node (accessed via the getUniqueId function)\n // - it is in an object format\n const pseudoRoot: OverloadedItem<T> = {\n id: rootId,\n subitems: structuredClone(treeish) as unknown as OverloadedItem<T>[],\n originalNodeData: {} as T,\n };\n // we now create an over-charged getChildren function\n // this is because we mutate the object every step during the walk\n //. this function is going to receive the OverloadedItem<T> each step\n const overloadedGetChildren = (node: OverloadedItem<T>) => node.subitems;\n const overloadedGetUniqueId = (node: OverloadedItem<T>) => node.id;\n // we now create a \"callback\" function that will be used when walking the pseudoRoot object.\n // this callback will mutate the pseudoRoot object, making sure that after the mutation it will be compatible with the DSTree datastructure\n // we can't really make an assumption that the subitems key isn't somehow already part of the data from the user,\n // so to avoid any collision we will create an extra-level of nesting, in this layer only 3 properties will be allowed:\n // - id: a unique string used to identify the node, this is already a requirement from the treeish datastructure provided by the user\n // - subitems: an array of children\n // - original: the original data provided by the user\n // we remove the original tree rapresentation from the node, we only want one source of truth for the tree\n // if we don't remove this, when operating the DSTree we would have to somehow also propagate the changes to the original tree\n // the way this is intended to be used is instead to convert back and forth between the DSTree and the treeish array\n // the conversion will restore the treeish structure with the updated tree after operating on the DSTree\n const callback = (node: OverloadedItem<T>) => {\n // we skip the root node\n if (node.id === rootId) return;\n // we safe-keep the original data provided by the user\n const originalNodeData = structuredClone(node) as unknown as T;\n // we now mutate the node, making it compatible with the DSTree datastructure\n // first we clean all the properties\n Object.keys(node).forEach((key) => {\n delete node[key];\n });\n // we now add the properties that are required by the DSTree datastructure\n const overloadedNode = node as unknown as OverloadedItem<T>;\n const childrenKey = getChildrenKey(originalNodeData);\n overloadedNode.id = getUniqueId(originalNodeData);\n overloadedNode.subitems = originalNodeData[childrenKey] as OverloadedItem<T>[];\n delete originalNodeData[childrenKey];\n overloadedNode.originalNodeData = originalNodeData;\n };\n // we now walk the pseudoRoot object, mutating it in the process\n walkTreeish<OverloadedItem<T>>({ callback, node: pseudoRoot, opts: { getChildren: overloadedGetChildren } });\n\n // we know that pseudoRoot is an item after we have walked and mutated it, so we can safely cast it\n return new DSTree<OverloadedItem<T>>(pseudoRoot, { getUniqueId: overloadedGetUniqueId });\n};\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACCvB,SAAS,cAAc;AAMvB,MAAM,eAAe,MACnB,uCAAuC,QAAQ,SAAS,CAAC,MAAM;AAC7D,QAAM,IAAK,KAAK,OAAO,IAAI,KAAM;AACjC,QAAM,IAAI,KAAK,MAAM,IAAK,IAAI,IAAO;AACrC,SAAO,EAAE,SAAS,EAAE;AACtB,CAAC;AAUH,MAAM,cAAc,CAAmB;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AACF,MAMY;AACV,WAAS,IAAI;AACb,QAAM,WAAW,MAAM,YAAY,IAAI;AACvC,MAAI,MAAM,QAAQ,QAAQ,KAAK,SAAS,SAAS,GAAG;AAClD,aAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK,GAAG;AAC3C,kBAAe,EAAE,UAAU,MAAM,SAAS,CAAC,GAAG,KAAK,CAAC;AAAA,IACtD;AAAA,EACF;AACF;AAYO,MAAM,2BAA2B,CAA4B,SAMnC;AAE/B,QAAM,SAAS,gCAAgC,aAAa;AAC5D,QAAM,EAAE,MAAM,QAAQ,IAAI;AAC1B,QAAM,EAAE,aAAa,eAAe,IAAI;AAMxC,QAAM,aAAgC;AAAA,IACpC,IAAI;AAAA,IACJ,UAAU,gBAAgB,OAAO;AAAA,IACjC,kBAAkB,CAAC;AAAA,EACrB;AAIA,QAAM,wBAAwB,CAAC,SAA4B,KAAK;AAChE,QAAM,wBAAwB,CAAC,SAA4B,KAAK;AAYhE,QAAM,WAAW,CAAC,SAA4B;AAE5C,QAAI,KAAK,OAAO;AAAQ;AAExB,UAAM,mBAAmB,gBAAgB,IAAI;AAG7C,WAAO,KAAK,IAAI,EAAE,QAAQ,CAAC,QAAQ;AACjC,aAAO,KAAK,GAAG;AAAA,IACjB,CAAC;AAED,UAAM,iBAAiB;AACvB,UAAM,cAAc,eAAe,gBAAgB;AACnD,mBAAe,KAAK,YAAY,gBAAgB;AAChD,mBAAe,WAAW,iBAAiB,WAAW;AACtD,WAAO,iBAAiB,WAAW;AACnC,mBAAe,mBAAmB;AAAA,EACpC;AAEA,cAA+B,EAAE,UAAU,MAAM,YAAY,MAAM,EAAE,aAAa,sBAAsB,EAAE,CAAC;AAG3G,SAAO,IAAI,OAA0B,YAAY,EAAE,aAAa,sBAAsB,CAAC;AACzF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,86 @@
1
+ import * as React from "react";
2
+ import { useCallback, useMemo, useState } from "react";
3
+ import { fromDSTreeToTreeishArray } from "./fromDSTreeToTreeishArray.js";
4
+ import { fromTreeishArrayToDSTree } from "./fromTreeishArrayToDSTree.js";
5
+ const useArraishAsDSTree = (treeData, opts) => {
6
+ const tree = useMemo(
7
+ () => fromTreeishArrayToDSTree({
8
+ treeish: treeData,
9
+ opts
10
+ }),
11
+ [opts, treeData]
12
+ );
13
+ const [hash, setHash] = useState(tree.hash);
14
+ const addNode = useCallback(
15
+ (item, options) => {
16
+ const cb = (node, treecb) => {
17
+ options?.callback?.(node, treecb);
18
+ setHash(treecb.hash);
19
+ };
20
+ return tree.addNode(item, { ...options, callback: cb });
21
+ },
22
+ [tree]
23
+ );
24
+ const removeNode = useCallback(
25
+ (id, options) => {
26
+ const cb = (node, treecb) => {
27
+ options?.callback?.(node, treecb);
28
+ setHash(treecb.hash);
29
+ };
30
+ return tree.removeNode(id, { ...options, callback: cb });
31
+ },
32
+ [tree]
33
+ );
34
+ const moveNode = useCallback(
35
+ (id, options) => {
36
+ const cb = (node, treecb) => {
37
+ options?.callback?.(node, treecb);
38
+ setHash(treecb.hash);
39
+ };
40
+ return tree.moveNode(id, { ...options, callback: cb });
41
+ },
42
+ [tree]
43
+ );
44
+ const replaceNode = useCallback(
45
+ (id, item, options) => {
46
+ const cb = (node, treecb) => {
47
+ options?.callback?.(node, treecb);
48
+ setHash(treecb.hash);
49
+ };
50
+ return tree.replaceNode(id, item, { ...options, callback: cb });
51
+ },
52
+ [tree]
53
+ );
54
+ const getRestoredTree = useCallback(
55
+ () => fromDSTreeToTreeishArray({
56
+ tree,
57
+ opts
58
+ }),
59
+ [opts, tree]
60
+ );
61
+ return useMemo(
62
+ () => ({
63
+ hash,
64
+ tree,
65
+ getRoot: tree.getRoot,
66
+ getNode: tree.getNode,
67
+ walk: tree.walk,
68
+ walkParents: tree.walkParents,
69
+ findNode: tree.findNode,
70
+ findAllNodes: tree.findAllNodes,
71
+ flatten: tree.flatten,
72
+ addNode,
73
+ removeNode,
74
+ moveNode,
75
+ replaceNode,
76
+ getPath: tree.getPath,
77
+ getPathIds: tree.getPathIds,
78
+ getRestoredTree
79
+ }),
80
+ [addNode, getRestoredTree, hash, moveNode, removeNode, replaceNode, tree]
81
+ );
82
+ };
83
+ export {
84
+ useArraishAsDSTree
85
+ };
86
+ //# sourceMappingURL=useArraishAsDSTree.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/adapters/arraish-tree/useArraishAsDSTree.ts"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { useCallback, useMemo, useState } from 'react';\nimport { fromDSTreeToTreeishArray } from './fromDSTreeToTreeishArray.js';\nimport { fromTreeishArrayToDSTree } from './fromTreeishArrayToDSTree.js';\nimport type { AddOptions, MoveOptions, MutateOptions, RemoveOptions, OverloadedItem } from '../../types.js';\n\nexport const useArraishAsDSTree = <T extends object = object>(\n treeData: T[],\n opts: {\n getChildrenKey: (node: T) => keyof T;\n getUniqueId: (node: T) => string;\n },\n) => {\n const tree = useMemo(\n () =>\n fromTreeishArrayToDSTree<T>({\n treeish: treeData,\n opts,\n }),\n [opts, treeData],\n );\n const [hash, setHash] = useState(tree.hash);\n\n const addNode = useCallback(\n (item: OverloadedItem<T>, options?: AddOptions<OverloadedItem<T>>) => {\n const cb: AddOptions<OverloadedItem<T>>['callback'] = (node, treecb) => {\n options?.callback?.(node, treecb);\n setHash(treecb.hash);\n };\n return tree.addNode(item, { ...options, callback: cb });\n },\n [tree],\n );\n\n const removeNode = useCallback(\n (id: string, options?: RemoveOptions<OverloadedItem<T>>) => {\n const cb: RemoveOptions<OverloadedItem<T>>['callback'] = (node, treecb) => {\n options?.callback?.(node, treecb);\n setHash(treecb.hash);\n };\n return tree.removeNode(id, { ...options, callback: cb });\n },\n [tree],\n );\n\n const moveNode = useCallback(\n (id: string, options?: MoveOptions<OverloadedItem<T>>) => {\n const cb: MoveOptions<OverloadedItem<T>>['callback'] = (node, treecb) => {\n options?.callback?.(node, treecb);\n setHash(treecb.hash);\n };\n return tree.moveNode(id, { ...options, callback: cb });\n },\n [tree],\n );\n\n const replaceNode = useCallback(\n (id: string, item: OverloadedItem<T>, options?: MutateOptions<OverloadedItem<T>>) => {\n const cb: MutateOptions<OverloadedItem<T>>['callback'] = (node, treecb) => {\n options?.callback?.(node, treecb);\n setHash(treecb.hash);\n };\n return tree.replaceNode(id, item, { ...options, callback: cb });\n },\n [tree],\n );\n\n const getRestoredTree = useCallback(\n () =>\n fromDSTreeToTreeishArray({\n tree,\n opts,\n }),\n [opts, tree],\n );\n\n return useMemo(\n () => ({\n hash,\n tree,\n getRoot: tree.getRoot,\n getNode: tree.getNode,\n walk: tree.walk,\n walkParents: tree.walkParents,\n findNode: tree.findNode,\n findAllNodes: tree.findAllNodes,\n flatten: tree.flatten,\n addNode,\n removeNode,\n moveNode,\n replaceNode,\n getPath: tree.getPath,\n getPathIds: tree.getPathIds,\n getRestoredTree,\n }),\n [addNode, getRestoredTree, hash, moveNode, removeNode, replaceNode, tree],\n );\n};\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACAvB,SAAS,aAAa,SAAS,gBAAgB;AAC/C,SAAS,gCAAgC;AACzC,SAAS,gCAAgC;AAGlC,MAAM,qBAAqB,CAChC,UACA,SAIG;AACH,QAAM,OAAO;AAAA,IACX,MACE,yBAA4B;AAAA,MAC1B,SAAS;AAAA,MACT;AAAA,IACF,CAAC;AAAA,IACH,CAAC,MAAM,QAAQ;AAAA,EACjB;AACA,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,KAAK,IAAI;AAE1C,QAAM,UAAU;AAAA,IACd,CAAC,MAAyB,YAA4C;AACpE,YAAM,KAAgD,CAAC,MAAM,WAAW;AACtE,iBAAS,WAAW,MAAM,MAAM;AAChC,gBAAQ,OAAO,IAAI;AAAA,MACrB;AACA,aAAO,KAAK,QAAQ,MAAM,EAAE,GAAG,SAAS,UAAU,GAAG,CAAC;AAAA,IACxD;AAAA,IACA,CAAC,IAAI;AAAA,EACP;AAEA,QAAM,aAAa;AAAA,IACjB,CAAC,IAAY,YAA+C;AAC1D,YAAM,KAAmD,CAAC,MAAM,WAAW;AACzE,iBAAS,WAAW,MAAM,MAAM;AAChC,gBAAQ,OAAO,IAAI;AAAA,MACrB;AACA,aAAO,KAAK,WAAW,IAAI,EAAE,GAAG,SAAS,UAAU,GAAG,CAAC;AAAA,IACzD;AAAA,IACA,CAAC,IAAI;AAAA,EACP;AAEA,QAAM,WAAW;AAAA,IACf,CAAC,IAAY,YAA6C;AACxD,YAAM,KAAiD,CAAC,MAAM,WAAW;AACvE,iBAAS,WAAW,MAAM,MAAM;AAChC,gBAAQ,OAAO,IAAI;AAAA,MACrB;AACA,aAAO,KAAK,SAAS,IAAI,EAAE,GAAG,SAAS,UAAU,GAAG,CAAC;AAAA,IACvD;AAAA,IACA,CAAC,IAAI;AAAA,EACP;AAEA,QAAM,cAAc;AAAA,IAClB,CAAC,IAAY,MAAyB,YAA+C;AACnF,YAAM,KAAmD,CAAC,MAAM,WAAW;AACzE,iBAAS,WAAW,MAAM,MAAM;AAChC,gBAAQ,OAAO,IAAI;AAAA,MACrB;AACA,aAAO,KAAK,YAAY,IAAI,MAAM,EAAE,GAAG,SAAS,UAAU,GAAG,CAAC;AAAA,IAChE;AAAA,IACA,CAAC,IAAI;AAAA,EACP;AAEA,QAAM,kBAAkB;AAAA,IACtB,MACE,yBAAyB;AAAA,MACvB;AAAA,MACA;AAAA,IACF,CAAC;AAAA,IACH,CAAC,MAAM,IAAI;AAAA,EACb;AAEA,SAAO;AAAA,IACL,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,SAAS,KAAK;AAAA,MACd,SAAS,KAAK;AAAA,MACd,MAAM,KAAK;AAAA,MACX,aAAa,KAAK;AAAA,MAClB,UAAU,KAAK;AAAA,MACf,cAAc,KAAK;AAAA,MACnB,SAAS,KAAK;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,SAAS,KAAK;AAAA,MACd,YAAY,KAAK;AAAA,MACjB;AAAA,IACF;AAAA,IACA,CAAC,SAAS,iBAAiB,MAAM,UAAU,YAAY,aAAa,IAAI;AAAA,EAC1E;AACF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,17 @@
1
+ import * as React from "react";
2
+ import { useMemo } from "react";
3
+ import { useArraishAsDSTree } from "../arraish-tree/useArraishAsDSTree.js";
4
+ const useTreeviewAsDSTree = (treeData) => {
5
+ const opts = useMemo(
6
+ () => ({
7
+ getChildrenKey: () => "children",
8
+ getUniqueId: (node) => `${node.id}`
9
+ }),
10
+ []
11
+ );
12
+ return useArraishAsDSTree(treeData, opts);
13
+ };
14
+ export {
15
+ useTreeviewAsDSTree
16
+ };
17
+ //# sourceMappingURL=useTreeviewAsDSTree.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/adapters/treeview/useTreeviewAsDSTree.ts"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { useMemo } from 'react';\nimport { useArraishAsDSTree } from '../arraish-tree/useArraishAsDSTree.js';\n\ntype TreeviewItem<T extends object = object> = T & {\n id: string | number;\n children?: TreeviewItem[];\n};\n\nexport const useTreeviewAsDSTree = <T extends TreeviewItem<object> = TreeviewItem<object>>(treeData: T[]) => {\n const opts = useMemo(\n () => ({\n getChildrenKey: () => 'children',\n getUniqueId: (node: T) => `${node.id}`,\n }),\n [],\n );\n return useArraishAsDSTree(treeData, opts);\n};\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACAvB,SAAS,eAAe;AACxB,SAAS,0BAA0B;AAO5B,MAAM,sBAAsB,CAAwD,aAAkB;AAC3G,QAAM,OAAO;AAAA,IACX,OAAO;AAAA,MACL,gBAAgB,MAAM;AAAA,MACtB,aAAa,CAAC,SAAY,GAAG,KAAK;AAAA,IACpC;AAAA,IACA,CAAC;AAAA,EACH;AACA,SAAO,mBAAmB,UAAU,IAAI;AAC1C;",
6
+ "names": []
7
+ }
@@ -0,0 +1,16 @@
1
+ import * as React from "react";
2
+ import { DSTree } from "./DSTree.js";
3
+ import { useDSTree } from "./useDSTree.js";
4
+ import { fromTreeishArrayToDSTree } from "./adapters/arraish-tree/fromTreeishArrayToDSTree.js";
5
+ import { fromDSTreeToTreeishArray } from "./adapters/arraish-tree/fromDSTreeToTreeishArray.js";
6
+ import { useArraishAsDSTree } from "./adapters/arraish-tree/useArraishAsDSTree.js";
7
+ import { useTreeviewAsDSTree } from "./adapters/treeview/useTreeviewAsDSTree.js";
8
+ export {
9
+ DSTree,
10
+ fromDSTreeToTreeishArray,
11
+ fromTreeishArrayToDSTree,
12
+ useArraishAsDSTree,
13
+ useDSTree,
14
+ useTreeviewAsDSTree
15
+ };
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../src/index.ts"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "export type { Item } from './types.js';\nexport type { Node } from './Node.js';\nexport { DSTree } from './DSTree.js';\nexport { useDSTree } from './useDSTree.js';\nexport { fromTreeishArrayToDSTree } from './adapters/arraish-tree/fromTreeishArrayToDSTree.js';\nexport { fromDSTreeToTreeishArray } from './adapters/arraish-tree/fromDSTreeToTreeishArray.js';\nexport { useArraishAsDSTree } from './adapters/arraish-tree/useArraishAsDSTree.js';\nexport { useTreeviewAsDSTree } from './adapters/treeview/useTreeviewAsDSTree.js';\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACEvB,SAAS,cAAc;AACvB,SAAS,iBAAiB;AAC1B,SAAS,gCAAgC;AACzC,SAAS,gCAAgC;AACzC,SAAS,0BAA0B;AACnC,SAAS,2BAA2B;",
6
+ "names": []
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "type": "module",
3
+ "sideEffects": [
4
+ "*.css",
5
+ "*.scss"
6
+ ]
7
+ }
@@ -0,0 +1,2 @@
1
+ import * as React from "react";
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;",
6
+ "names": []
7
+ }
@@ -0,0 +1,67 @@
1
+ import * as React from "react";
2
+ import { useCallback, useMemo, useState } from "react";
3
+ import { DSTree } from "./DSTree.js";
4
+ const useDSTree = (rootItem, opts) => {
5
+ const tree = useMemo(() => new DSTree(rootItem, opts), [opts, rootItem]);
6
+ const [hash, setHash] = useState(tree.hash);
7
+ const addNode = useCallback(
8
+ (item, options) => {
9
+ const cb = (node, treecb) => {
10
+ options?.callback?.(node, treecb);
11
+ setHash(treecb.hash);
12
+ };
13
+ return tree.addNode(item, { ...options, callback: cb });
14
+ },
15
+ [tree]
16
+ );
17
+ const removeNode = useCallback(
18
+ (id, options) => {
19
+ const cb = (node, treecb) => {
20
+ options?.callback?.(node, treecb);
21
+ setHash(treecb.hash);
22
+ };
23
+ return tree.removeNode(id, { ...options, callback: cb });
24
+ },
25
+ [tree]
26
+ );
27
+ const moveNode = useCallback(
28
+ (id, options) => {
29
+ const cb = (node, treecb) => {
30
+ options?.callback?.(node, treecb);
31
+ setHash(treecb.hash);
32
+ };
33
+ return tree.moveNode(id, { ...options, callback: cb });
34
+ },
35
+ [tree]
36
+ );
37
+ const replaceNode = useCallback(
38
+ (id, item, options) => {
39
+ const cb = (node, treecb) => {
40
+ options?.callback?.(node, treecb);
41
+ setHash(treecb.hash);
42
+ };
43
+ return tree.replaceNode(id, item, { ...options, callback: cb });
44
+ },
45
+ [tree]
46
+ );
47
+ return {
48
+ hash,
49
+ getRoot: tree.getRoot,
50
+ getNode: tree.getNode,
51
+ walk: tree.walk,
52
+ walkParents: tree.walkParents,
53
+ findNode: tree.findNode,
54
+ findAllNodes: tree.findAllNodes,
55
+ flatten: tree.flatten,
56
+ addNode,
57
+ removeNode,
58
+ moveNode,
59
+ replaceNode,
60
+ getPath: tree.getPath,
61
+ getPathIds: tree.getPathIds
62
+ };
63
+ };
64
+ export {
65
+ useDSTree
66
+ };
67
+ //# sourceMappingURL=useDSTree.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../src/useDSTree.ts"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { useCallback, useMemo, useState } from 'react';\nimport { DSTree } from './DSTree.js';\nimport type { AddOptions, Item, MoveOptions, MutateOptions, RemoveOptions } from './types.js';\n\nexport const useDSTree = <T extends Item>(rootItem: T, opts: { getUniqueId: (item: T) => string }) => {\n const tree = useMemo(() => new DSTree(rootItem, opts), [opts, rootItem]);\n const [hash, setHash] = useState(tree.hash);\n\n const addNode = useCallback(\n (item: T, options?: AddOptions<T>) => {\n const cb: AddOptions<T>['callback'] = (node, treecb) => {\n options?.callback?.(node, treecb);\n setHash(treecb.hash);\n };\n return tree.addNode(item, { ...options, callback: cb });\n },\n [tree],\n );\n\n const removeNode = useCallback(\n (id: string, options?: RemoveOptions<T>) => {\n const cb: RemoveOptions<T>['callback'] = (node, treecb) => {\n options?.callback?.(node, treecb);\n setHash(treecb.hash);\n };\n return tree.removeNode(id, { ...options, callback: cb });\n },\n [tree],\n );\n\n const moveNode = useCallback(\n (id: string, options?: MoveOptions<T>) => {\n const cb: MoveOptions<T>['callback'] = (node, treecb) => {\n options?.callback?.(node, treecb);\n setHash(treecb.hash);\n };\n return tree.moveNode(id, { ...options, callback: cb });\n },\n [tree],\n );\n\n const replaceNode = useCallback(\n (id: string, item: T, options?: MutateOptions<T>) => {\n const cb: MutateOptions<T>['callback'] = (node, treecb) => {\n options?.callback?.(node, treecb);\n setHash(treecb.hash);\n };\n return tree.replaceNode(id, item, { ...options, callback: cb });\n },\n [tree],\n );\n\n return {\n hash,\n getRoot: tree.getRoot,\n getNode: tree.getNode,\n walk: tree.walk,\n walkParents: tree.walkParents,\n findNode: tree.findNode,\n findAllNodes: tree.findAllNodes,\n flatten: tree.flatten,\n addNode,\n removeNode,\n moveNode,\n replaceNode,\n getPath: tree.getPath,\n getPathIds: tree.getPathIds,\n };\n};\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACAvB,SAAS,aAAa,SAAS,gBAAgB;AAC/C,SAAS,cAAc;AAGhB,MAAM,YAAY,CAAiB,UAAa,SAA+C;AACpG,QAAM,OAAO,QAAQ,MAAM,IAAI,OAAO,UAAU,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC;AACvE,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,KAAK,IAAI;AAE1C,QAAM,UAAU;AAAA,IACd,CAAC,MAAS,YAA4B;AACpC,YAAM,KAAgC,CAAC,MAAM,WAAW;AACtD,iBAAS,WAAW,MAAM,MAAM;AAChC,gBAAQ,OAAO,IAAI;AAAA,MACrB;AACA,aAAO,KAAK,QAAQ,MAAM,EAAE,GAAG,SAAS,UAAU,GAAG,CAAC;AAAA,IACxD;AAAA,IACA,CAAC,IAAI;AAAA,EACP;AAEA,QAAM,aAAa;AAAA,IACjB,CAAC,IAAY,YAA+B;AAC1C,YAAM,KAAmC,CAAC,MAAM,WAAW;AACzD,iBAAS,WAAW,MAAM,MAAM;AAChC,gBAAQ,OAAO,IAAI;AAAA,MACrB;AACA,aAAO,KAAK,WAAW,IAAI,EAAE,GAAG,SAAS,UAAU,GAAG,CAAC;AAAA,IACzD;AAAA,IACA,CAAC,IAAI;AAAA,EACP;AAEA,QAAM,WAAW;AAAA,IACf,CAAC,IAAY,YAA6B;AACxC,YAAM,KAAiC,CAAC,MAAM,WAAW;AACvD,iBAAS,WAAW,MAAM,MAAM;AAChC,gBAAQ,OAAO,IAAI;AAAA,MACrB;AACA,aAAO,KAAK,SAAS,IAAI,EAAE,GAAG,SAAS,UAAU,GAAG,CAAC;AAAA,IACvD;AAAA,IACA,CAAC,IAAI;AAAA,EACP;AAEA,QAAM,cAAc;AAAA,IAClB,CAAC,IAAY,MAAS,YAA+B;AACnD,YAAM,KAAmC,CAAC,MAAM,WAAW;AACzD,iBAAS,WAAW,MAAM,MAAM;AAChC,gBAAQ,OAAO,IAAI;AAAA,MACrB;AACA,aAAO,KAAK,YAAY,IAAI,MAAM,EAAE,GAAG,SAAS,UAAU,GAAG,CAAC;AAAA,IAChE;AAAA,IACA,CAAC,IAAI;AAAA,EACP;AAEA,SAAO;AAAA,IACL;AAAA,IACA,SAAS,KAAK;AAAA,IACd,SAAS,KAAK;AAAA,IACd,MAAM,KAAK;AAAA,IACX,aAAa,KAAK;AAAA,IAClB,UAAU,KAAK;AAAA,IACf,cAAc,KAAK;AAAA,IACnB,SAAS,KAAK;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS,KAAK;AAAA,IACd,YAAY,KAAK;AAAA,EACnB;AACF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,28 @@
1
+ import type { AddOptions, Item, MoveOptions, MutateOptions, RemoveOptions } from './types.js';
2
+ import { Node } from './Node.js';
3
+ export declare class DSTree<T extends Item> {
4
+ private root;
5
+ private _hash;
6
+ private nodes;
7
+ getUniqueId: (item: T) => string;
8
+ constructor(item: T, options: {
9
+ getUniqueId: (item: T) => string;
10
+ });
11
+ addNodeToNodesDictionary(node: Node<T>): void;
12
+ removeNodeFromNodesDictionary(node: Node<T>): void;
13
+ get hash(): number;
14
+ getRoot: () => Node<T>;
15
+ getNode: (id: string) => Node<T>;
16
+ getNodes: () => Record<string, Node<T>>;
17
+ walk: (callback: (node: Node<T>) => boolean) => void;
18
+ walkParents: (callback: (node: Node<T>) => boolean) => void;
19
+ findNode: (callback: (node: Node<T>) => boolean) => Node<T> | null;
20
+ findAllNodes: (callback: (node: Node<T>) => boolean) => Node<T>[];
21
+ flatten: () => Node<T>[];
22
+ addNode: (item: T, options?: AddOptions<T>) => Node<T>;
23
+ removeNode: (id: string, options?: RemoveOptions<T>) => Node<T>;
24
+ moveNode: (id: string, options?: MoveOptions<T>) => Node<T>;
25
+ replaceNode: (id: string, item: T, options?: MutateOptions<T>) => Node<T>;
26
+ getPath: (id: string) => Node<T>[];
27
+ getPathIds: (id: string) => string[];
28
+ }
@@ -0,0 +1,25 @@
1
+ import type { Item, NodeConstructorOptions } from './types.js';
2
+ export declare class Node<T extends Item> {
3
+ dsId: string;
4
+ plainItem: T;
5
+ childIndex: number;
6
+ depth: number;
7
+ parent: Node<T> | null;
8
+ children: Node<T>[];
9
+ private tree;
10
+ private _hash;
11
+ constructor(item: T, { childIndex, depth, parent, tree }: NodeConstructorOptions<T>);
12
+ fixChildIndexes: () => void;
13
+ getCleanItem: (item: T) => T;
14
+ get hash(): number;
15
+ walk: (callback: (node: Node<T>) => boolean) => void;
16
+ walkParents: (callback: (node: Node<T>) => boolean) => void;
17
+ findNode: (callback: (node: Node<T>) => boolean) => Node<T> | null;
18
+ findAllNodes: (callback: (node: Node<T>) => boolean) => Node<T>[];
19
+ flatten: () => Node<T>[];
20
+ getPath: (id: string) => Node<T>[];
21
+ getPathIds: (id: string) => string[];
22
+ getJson: () => T;
23
+ addNode: (node: Node<T>) => void;
24
+ removeNode: () => void;
25
+ }
@@ -0,0 +1,9 @@
1
+ import type { DSTree } from '../../DSTree.js';
2
+ import type { OverloadedItem } from '../../types.js';
3
+ export declare const fromDSTreeToTreeishArray: <T extends object = object>(args: {
4
+ tree: DSTree<OverloadedItem<T>>;
5
+ opts: {
6
+ getChildrenKey: (node: T) => keyof T;
7
+ getUniqueId: (node: T) => string;
8
+ };
9
+ }) => T[];
@@ -0,0 +1,9 @@
1
+ import { DSTree } from '../../DSTree.js';
2
+ import type { OverloadedItem } from '../../types.js';
3
+ export declare const fromTreeishArrayToDSTree: <T extends object = object>(args: {
4
+ treeish: T[];
5
+ opts: {
6
+ getChildrenKey: (node: T) => keyof T;
7
+ getUniqueId: (item: T) => string;
8
+ };
9
+ }) => DSTree<OverloadedItem<T>>;
@@ -0,0 +1,22 @@
1
+ import type { AddOptions, MoveOptions, MutateOptions, RemoveOptions, OverloadedItem } from '../../types.js';
2
+ export declare const useArraishAsDSTree: <T extends object = object>(treeData: T[], opts: {
3
+ getChildrenKey: (node: T) => keyof T;
4
+ getUniqueId: (node: T) => string;
5
+ }) => {
6
+ hash: number;
7
+ tree: import("../../DSTree.js").DSTree<OverloadedItem<T>>;
8
+ getRoot: () => import("../../Node.js").Node<OverloadedItem<T>>;
9
+ getNode: (id: string) => import("../../Node.js").Node<OverloadedItem<T>>;
10
+ walk: (callback: (node: import("../../Node.js").Node<OverloadedItem<T>>) => boolean) => void;
11
+ walkParents: (callback: (node: import("../../Node.js").Node<OverloadedItem<T>>) => boolean) => void;
12
+ findNode: (callback: (node: import("../../Node.js").Node<OverloadedItem<T>>) => boolean) => import("../../Node.js").Node<OverloadedItem<T>> | null;
13
+ findAllNodes: (callback: (node: import("../../Node.js").Node<OverloadedItem<T>>) => boolean) => import("../../Node.js").Node<OverloadedItem<T>>[];
14
+ flatten: () => import("../../Node.js").Node<OverloadedItem<T>>[];
15
+ addNode: (item: OverloadedItem<T>, options?: AddOptions<OverloadedItem<T>> | undefined) => import("../../Node.js").Node<OverloadedItem<T>>;
16
+ removeNode: (id: string, options?: RemoveOptions<OverloadedItem<T>> | undefined) => import("../../Node.js").Node<OverloadedItem<T>>;
17
+ moveNode: (id: string, options?: MoveOptions<OverloadedItem<T>> | undefined) => import("../../Node.js").Node<OverloadedItem<T>>;
18
+ replaceNode: (id: string, item: OverloadedItem<T>, options?: MutateOptions<OverloadedItem<T>> | undefined) => import("../../Node.js").Node<OverloadedItem<T>>;
19
+ getPath: (id: string) => import("../../Node.js").Node<OverloadedItem<T>>[];
20
+ getPathIds: (id: string) => string[];
21
+ getRestoredTree: () => T[];
22
+ };
@@ -0,0 +1,23 @@
1
+ type TreeviewItem<T extends object = object> = T & {
2
+ id: string | number;
3
+ children?: TreeviewItem[];
4
+ };
5
+ export declare const useTreeviewAsDSTree: <T extends TreeviewItem<object> = TreeviewItem<object>>(treeData: T[]) => {
6
+ hash: number;
7
+ tree: import("../../DSTree.js").DSTree<import("../../types.js").OverloadedItem<T>>;
8
+ getRoot: () => import("../../Node.js").Node<import("../../types.js").OverloadedItem<T>>;
9
+ getNode: (id: string) => import("../../Node.js").Node<import("../../types.js").OverloadedItem<T>>;
10
+ walk: (callback: (node: import("../../Node.js").Node<import("../../types.js").OverloadedItem<T>>) => boolean) => void;
11
+ walkParents: (callback: (node: import("../../Node.js").Node<import("../../types.js").OverloadedItem<T>>) => boolean) => void;
12
+ findNode: (callback: (node: import("../../Node.js").Node<import("../../types.js").OverloadedItem<T>>) => boolean) => import("../../Node.js").Node<import("../../types.js").OverloadedItem<T>> | null;
13
+ findAllNodes: (callback: (node: import("../../Node.js").Node<import("../../types.js").OverloadedItem<T>>) => boolean) => import("../../Node.js").Node<import("../../types.js").OverloadedItem<T>>[];
14
+ flatten: () => import("../../Node.js").Node<import("../../types.js").OverloadedItem<T>>[];
15
+ addNode: (item: import("../../types.js").OverloadedItem<T>, options?: import("../../types.js").AddOptions<import("../../types.js").OverloadedItem<T>> | undefined) => import("../../Node.js").Node<import("../../types.js").OverloadedItem<T>>;
16
+ removeNode: (id: string, options?: import("../../types.js").RemoveOptions<import("../../types.js").OverloadedItem<T>> | undefined) => import("../../Node.js").Node<import("../../types.js").OverloadedItem<T>>;
17
+ moveNode: (id: string, options?: import("../../types.js").MoveOptions<import("../../types.js").OverloadedItem<T>> | undefined) => import("../../Node.js").Node<import("../../types.js").OverloadedItem<T>>;
18
+ replaceNode: (id: string, item: import("../../types.js").OverloadedItem<T>, options?: import("../../types.js").MutateOptions<import("../../types.js").OverloadedItem<T>> | undefined) => import("../../Node.js").Node<import("../../types.js").OverloadedItem<T>>;
19
+ getPath: (id: string) => import("../../Node.js").Node<import("../../types.js").OverloadedItem<T>>[];
20
+ getPathIds: (id: string) => string[];
21
+ getRestoredTree: () => T[];
22
+ };
23
+ export {};
@@ -0,0 +1,8 @@
1
+ export type { Item } from './types.js';
2
+ export type { Node } from './Node.js';
3
+ export { DSTree } from './DSTree.js';
4
+ export { useDSTree } from './useDSTree.js';
5
+ export { fromTreeishArrayToDSTree } from './adapters/arraish-tree/fromTreeishArrayToDSTree.js';
6
+ export { fromDSTreeToTreeishArray } from './adapters/arraish-tree/fromDSTreeToTreeishArray.js';
7
+ export { useArraishAsDSTree } from './adapters/arraish-tree/useArraishAsDSTree.js';
8
+ export { useTreeviewAsDSTree } from './adapters/treeview/useTreeviewAsDSTree.js';
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,33 @@
1
+ import type { DSTree } from './DSTree.js';
2
+ import type { Node } from './Node.js';
3
+ export interface Item {
4
+ subitems?: Item[];
5
+ [key: string]: unknown;
6
+ }
7
+ export interface NodeConstructorOptions<T extends Item> {
8
+ childIndex: number;
9
+ depth: number;
10
+ tree: DSTree<T>;
11
+ parent?: Node<T> | null;
12
+ }
13
+ export interface AddOptions<T extends Item> {
14
+ position?: number;
15
+ parent?: Node<T> | null;
16
+ callback?: (node: Node<T>, tree: DSTree<T>) => void;
17
+ }
18
+ export interface RemoveOptions<T extends Item> {
19
+ callback?: (node: Node<T>, tree: DSTree<T>) => void;
20
+ }
21
+ export interface MoveOptions<T extends Item> {
22
+ position?: number;
23
+ parent?: Node<T>;
24
+ callback?: (node: Node<T>, tree: DSTree<T>) => void;
25
+ }
26
+ export interface MutateOptions<T extends Item> {
27
+ callback?: (node: Node<T>, tree: DSTree<T>) => void;
28
+ }
29
+ export interface OverloadedItem<T extends object = object> extends Item {
30
+ id: string;
31
+ subitems: OverloadedItem<T>[];
32
+ originalNodeData: T;
33
+ }
@@ -0,0 +1,19 @@
1
+ import type { AddOptions, Item, MoveOptions, MutateOptions, RemoveOptions } from './types.js';
2
+ export declare const useDSTree: <T extends Item>(rootItem: T, opts: {
3
+ getUniqueId: (item: T) => string;
4
+ }) => {
5
+ hash: number;
6
+ getRoot: () => import("./Node.js").Node<T>;
7
+ getNode: (id: string) => import("./Node.js").Node<T>;
8
+ walk: (callback: (node: import("./Node.js").Node<T>) => boolean) => void;
9
+ walkParents: (callback: (node: import("./Node.js").Node<T>) => boolean) => void;
10
+ findNode: (callback: (node: import("./Node.js").Node<T>) => boolean) => import("./Node.js").Node<T> | null;
11
+ findAllNodes: (callback: (node: import("./Node.js").Node<T>) => boolean) => import("./Node.js").Node<T>[];
12
+ flatten: () => import("./Node.js").Node<T>[];
13
+ addNode: (item: T, options?: AddOptions<T> | undefined) => import("./Node.js").Node<T>;
14
+ removeNode: (id: string, options?: RemoveOptions<T> | undefined) => import("./Node.js").Node<T>;
15
+ moveNode: (id: string, options?: MoveOptions<T> | undefined) => import("./Node.js").Node<T>;
16
+ replaceNode: (id: string, item: T, options?: MutateOptions<T> | undefined) => import("./Node.js").Node<T>;
17
+ getPath: (id: string) => import("./Node.js").Node<T>[];
18
+ getPathIds: (id: string) => string[];
19
+ };
package/package.json ADDED
@@ -0,0 +1,61 @@
1
+ {
2
+ "name": "@elliemae/ds-legacy-tree-model",
3
+ "version": "1.0.0-rc.1",
4
+ "license": "MIT",
5
+ "description": "ICE MT - Dimsum - Tree Model",
6
+ "files": [
7
+ "dist"
8
+ ],
9
+ "module": "./dist/esm/index.js",
10
+ "main": "./dist/cjs/index.js",
11
+ "types": "./dist/types/index.d.ts",
12
+ "exports": {
13
+ ".": {
14
+ "import": "./dist/esm/index.js",
15
+ "require": "./dist/cjs/index.js"
16
+ }
17
+ },
18
+ "sideEffects": [
19
+ "*.css",
20
+ "*.scss"
21
+ ],
22
+ "repository": {
23
+ "type": "git",
24
+ "url": "https://git.elliemae.io/platform-ui/dimsum-legacy.git"
25
+ },
26
+ "engines": {
27
+ "pnpm": ">=6",
28
+ "node": ">=16"
29
+ },
30
+ "author": "ICE MT",
31
+ "jestSonar": {
32
+ "sonar56x": true,
33
+ "reportPath": "reports",
34
+ "reportFile": "tests.xml",
35
+ "indent": 4
36
+ },
37
+ "publishConfig": {
38
+ "access": "public",
39
+ "typeSafety": false
40
+ },
41
+ "devDependencies": {
42
+ "@elliemae/pui-cli": "~9.0.0-next.31",
43
+ "@elliemae/ds-legacy-monorepo-devops": "1.0.0-rc.1"
44
+ },
45
+ "peerDependencies": {
46
+ "lodash": "^4.17.21",
47
+ "react": "~17.0.2",
48
+ "react-dom": "^17.0.2"
49
+ },
50
+ "scripts": {
51
+ "test": "pui-cli test --passWithNoTests",
52
+ "lint": "node ../../../scripts/lint.mjs",
53
+ "eslint:fix": "eslint --ext='.js,.jsx,.test.js,.ts,.tsx' --fix --config='../../../.eslintrc.js' src/",
54
+ "dts": "node ../../../scripts/dts.mjs",
55
+ "build": "cross-env NODE_ENV=production node ../../../scripts/build/build.mjs",
56
+ "dev:build": "pnpm --filter {.}... build",
57
+ "dev:install": "pnpm --filter {.}... i --no-lockfile && pnpm run dev:build",
58
+ "checkDeps": "npm exec ../../util/ds-codemods -- check-missing-packages --projectFolderPath=\"./\" --ignorePackagesGlobPattern=\"\" --ignoreFilesGlobPattern=\"**/test-ables/*,**/tests/*\"",
59
+ "dev": "cross-env NODE_ENV=development node ../../../scripts/build/build.mjs --watch"
60
+ }
61
+ }