@elliemae/ds-shuttle-v2 3.53.1-rc.0 → 3.54.0-beta.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.
Files changed (57) hide show
  1. package/dist/cjs/config/useAutoCalculated/index.js.map +2 -2
  2. package/dist/cjs/config/useFocusTracker/useFocusItemTracker.js +34 -7
  3. package/dist/cjs/config/useFocusTracker/useFocusItemTracker.js.map +2 -2
  4. package/dist/cjs/config/useStore/focusAndTabIndexManager.js.map +2 -2
  5. package/dist/cjs/package.json +4 -1
  6. package/dist/cjs/parts/Item/Item.js +26 -21
  7. package/dist/cjs/parts/Item/Item.js.map +2 -2
  8. package/dist/cjs/parts/Item/useThisItemIsFocused.js +1 -1
  9. package/dist/cjs/parts/Item/useThisItemIsFocused.js.map +2 -2
  10. package/dist/cjs/parts/MainContent.js +8 -7
  11. package/dist/cjs/parts/MainContent.js.map +2 -2
  12. package/dist/cjs/parts/Panel/bottom/LoadMoreBtn.js +29 -5
  13. package/dist/cjs/parts/Panel/bottom/LoadMoreBtn.js.map +2 -2
  14. package/dist/cjs/react-desc-prop-types.js +2 -2
  15. package/dist/cjs/react-desc-prop-types.js.map +2 -2
  16. package/dist/esm/config/useAutoCalculated/index.js.map +2 -2
  17. package/dist/esm/config/useFocusTracker/useFocusItemTracker.js +34 -7
  18. package/dist/esm/config/useFocusTracker/useFocusItemTracker.js.map +2 -2
  19. package/dist/esm/config/useStore/focusAndTabIndexManager.js.map +2 -2
  20. package/dist/esm/package.json +4 -1
  21. package/dist/esm/parts/Item/Item.js +27 -22
  22. package/dist/esm/parts/Item/Item.js.map +2 -2
  23. package/dist/esm/parts/Item/useThisItemIsFocused.js +1 -1
  24. package/dist/esm/parts/Item/useThisItemIsFocused.js.map +2 -2
  25. package/dist/esm/parts/MainContent.js +8 -7
  26. package/dist/esm/parts/MainContent.js.map +2 -2
  27. package/dist/esm/parts/Panel/bottom/LoadMoreBtn.js +29 -5
  28. package/dist/esm/parts/Panel/bottom/LoadMoreBtn.js.map +2 -2
  29. package/dist/esm/react-desc-prop-types.js +5 -5
  30. package/dist/esm/react-desc-prop-types.js.map +2 -2
  31. package/dist/types/config/itemMovementHelpers.d.ts +1 -1
  32. package/dist/types/config/useAutoCalculated/index.d.ts +0 -1
  33. package/dist/types/config/useAutoCalculated/useShuttleVirtualized.d.ts +0 -1
  34. package/dist/types/config/useFocusTracker/useFocusItemTracker.d.ts +2 -0
  35. package/dist/types/config/useFocusTracker/useFocusTracker.d.ts +2 -0
  36. package/dist/types/config/useStore/focusAndTabIndexManager.d.ts +1 -1
  37. package/dist/types/config/useStore/useStore.d.ts +2 -3
  38. package/dist/types/parts/Dnd/DndHandle.d.ts +2 -2
  39. package/dist/types/parts/Item/ItemActions/useActionsHandlers.d.ts +2 -2
  40. package/dist/types/parts/Item/ItemMiddleSection.d.ts +1 -1
  41. package/dist/types/parts/Item/ItemOverlay.d.ts +1 -1
  42. package/dist/types/react-desc-prop-types.d.ts +9 -10
  43. package/dist/types/tests/loadMore/ShuttleV2WithLoadMoreTestable.d.ts +2 -0
  44. package/dist/types/tests/loadMore/shuttle-v2.load-more.focus.test.d.ts +1 -0
  45. package/package.json +24 -23
  46. package/dist/cjs/tests/configs/basic.js +0 -164
  47. package/dist/cjs/tests/configs/basic.js.map +0 -7
  48. package/dist/cjs/tests/configs/filter.js +0 -199
  49. package/dist/cjs/tests/configs/filter.js.map +0 -7
  50. package/dist/cjs/tests/configs/loadMore.js +0 -179
  51. package/dist/cjs/tests/configs/loadMore.js.map +0 -7
  52. package/dist/esm/tests/configs/basic.js +0 -134
  53. package/dist/esm/tests/configs/basic.js.map +0 -7
  54. package/dist/esm/tests/configs/filter.js +0 -169
  55. package/dist/esm/tests/configs/filter.js.map +0 -7
  56. package/dist/esm/tests/configs/loadMore.js +0 -149
  57. package/dist/esm/tests/configs/loadMore.js.map +0 -7
@@ -1,134 +0,0 @@
1
- import * as React from "react";
2
- import { jsx } from "react/jsx-runtime";
3
- import React2, { useMemo, useState, useCallback } from "react";
4
- import { DSBreadcrumb } from "@elliemae/ds-breadcrumb";
5
- import { useDSTree } from "@elliemae/ds-tree-model";
6
- import { uid } from "uid";
7
- const genTreeOfData = ({ prefix, depth = 0, parent = null, childIndex = 0, finalDepth = 2 }) => {
8
- const node = {
9
- id: uid(),
10
- label: parent ? `${parent.label}.${childIndex}` : `${prefix} 0`,
11
- parent: parent ? parent.id : null
12
- };
13
- if (depth <= finalDepth) {
14
- node.subitems = Array.from(
15
- { length: 2 },
16
- (_, i) => genTreeOfData({ prefix, depth: depth + 1, parent: node, childIndex: i, finalDepth })
17
- );
18
- }
19
- return node;
20
- };
21
- const options = {
22
- getUniqueId: (item) => item.id
23
- };
24
- const startingSourceData = genTreeOfData({ prefix: "Source" });
25
- const startingDestinationData = genTreeOfData({ prefix: "Destination" });
26
- const BreadCrumb = (props) => {
27
- const { breadCrumbPath, setCurrentNode, ...rest } = props;
28
- return /* @__PURE__ */ jsx(DSBreadcrumb, { isTitle: true, ...rest, children: breadCrumbPath.map((node) => /* @__PURE__ */ jsx(
29
- DSBreadcrumb.Item,
30
- {
31
- label: node.plainItem.label,
32
- onClick: () => setCurrentNode(node),
33
- dataTestId: "amigo"
34
- },
35
- `${node.dsId}`
36
- )) });
37
- };
38
- const BreadCrumbHoc = ({ path, setCurrentNode }) => {
39
- const WrappedBreadCrumb = (props) => /* @__PURE__ */ jsx(BreadCrumb, { ...props, breadCrumbPath: path, setCurrentNode });
40
- return WrappedBreadCrumb;
41
- };
42
- const useListData = (startingData) => {
43
- const { hash, getRoot, getNode, getPath, addNode, replaceNode, removeNode } = useDSTree(startingData, options);
44
- const [currentNode, setCurrentNode] = useState(getRoot());
45
- const [selection, setSelection] = useState({});
46
- const breadcrumbPath = useMemo(() => getPath(currentNode.dsId), [currentNode, getPath]);
47
- const displayedData = useMemo(
48
- () => currentNode.children.map((node) => node.getJson()),
49
- // eslint-disable-next-line react-hooks/exhaustive-deps
50
- [currentNode, hash]
51
- );
52
- const onDrilldown = useCallback((item) => setCurrentNode(getNode(item.id)), [getNode]);
53
- return useMemo(
54
- () => ({
55
- getNode,
56
- addNode,
57
- replaceNode,
58
- removeNode,
59
- currentNode,
60
- setCurrentNode,
61
- selection,
62
- setSelection,
63
- breadcrumbPath,
64
- displayedData,
65
- onDrilldown
66
- }),
67
- [addNode, breadcrumbPath, currentNode, displayedData, getNode, onDrilldown, removeNode, replaceNode, selection]
68
- );
69
- };
70
- const useShuttle = () => {
71
- const {
72
- currentNode: currentSourceNode,
73
- setCurrentNode: setCurrentSourceNode,
74
- selection: sourceSelection,
75
- setSelection: setSourceSelection,
76
- breadcrumbPath: sourceBreadCrumbPath,
77
- displayedData: sourceDisplayedData,
78
- onDrilldown: onSourceDrilldown,
79
- addNode: addSourceNode,
80
- removeNode: removeSourceNode
81
- } = useListData(startingSourceData);
82
- const {
83
- currentNode: currentDestinationNode,
84
- setCurrentNode: setCurrentDestinationNode,
85
- selection: destinationSelection,
86
- setSelection: setDestinationSelection,
87
- breadcrumbPath: destinationBreadCrumbPath,
88
- displayedData: destinationDisplayedData,
89
- onDrilldown: onDestinationDrilldown,
90
- addNode: addDestinationNode,
91
- removeNode: removeDestinationNode
92
- } = useListData(startingDestinationData);
93
- const onSourceAdd = useCallback(
94
- (items) => items.forEach((item) => addSourceNode(item, { parent: currentSourceNode })),
95
- [addSourceNode, currentSourceNode]
96
- );
97
- const onSourceRemove = useCallback(
98
- (items) => items.forEach((item) => removeSourceNode(item.id, item)),
99
- [removeSourceNode]
100
- );
101
- const onDestinationAdd = useCallback(
102
- (items) => items.forEach((item) => addDestinationNode(item, { parent: currentDestinationNode })),
103
- [addDestinationNode, currentDestinationNode]
104
- );
105
- const onDestinationRemove = useCallback(
106
- (items) => items.forEach((item) => removeDestinationNode(item.id)),
107
- [removeDestinationNode]
108
- );
109
- return {
110
- setCurrentSourceNode,
111
- setCurrentDestinationNode,
112
- sourceDisplayedData,
113
- destinationDisplayedData,
114
- sourceSelection,
115
- destinationSelection,
116
- setSourceSelection,
117
- setDestinationSelection,
118
- onSourceDrilldown,
119
- onDestinationDrilldown,
120
- onSourceAdd,
121
- onSourceRemove,
122
- onDestinationAdd,
123
- onDestinationRemove,
124
- sourceBreadCrumbPath,
125
- destinationBreadCrumbPath,
126
- currentSourceNode,
127
- currentDestinationNode
128
- };
129
- };
130
- export {
131
- BreadCrumbHoc,
132
- useShuttle
133
- };
134
- //# sourceMappingURL=basic.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/tests/configs/basic.js"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable max-lines */\nimport React, { useMemo, useState, useCallback } from 'react';\nimport { DSBreadcrumb } from '@elliemae/ds-breadcrumb';\nimport { useDSTree } from '@elliemae/ds-tree-model';\nimport { uid } from 'uid';\n\nconst genTreeOfData = ({ prefix, depth = 0, parent = null, childIndex = 0, finalDepth = 2 }) => {\n const node = {\n id: uid(),\n label: parent ? `${parent.label}.${childIndex}` : `${prefix} 0`,\n parent: parent ? parent.id : null,\n };\n\n if (depth <= finalDepth) {\n node.subitems = Array.from({ length: 2 }, (_, i) =>\n genTreeOfData({ prefix, depth: depth + 1, parent: node, childIndex: i, finalDepth }),\n );\n }\n return node;\n};\n\nconst options = {\n getUniqueId: (item) => item.id,\n};\n\nconst startingSourceData = genTreeOfData({ prefix: 'Source' });\nconst startingDestinationData = genTreeOfData({ prefix: 'Destination' });\n\nconst BreadCrumb = (props) => {\n const { breadCrumbPath, setCurrentNode, ...rest } = props;\n\n return (\n <DSBreadcrumb isTitle {...rest}>\n {breadCrumbPath.map((node) => (\n <DSBreadcrumb.Item\n key={`${node.dsId}`}\n label={node.plainItem.label}\n onClick={() => setCurrentNode(node)}\n dataTestId=\"amigo\"\n />\n ))}\n </DSBreadcrumb>\n );\n};\n\nexport const BreadCrumbHoc = ({ path, setCurrentNode }) => {\n const WrappedBreadCrumb = (props) => <BreadCrumb {...props} breadCrumbPath={path} setCurrentNode={setCurrentNode} />;\n return WrappedBreadCrumb;\n};\n\nconst useListData = (startingData) => {\n const { hash, getRoot, getNode, getPath, addNode, replaceNode, removeNode } = useDSTree(startingData, options);\n const [currentNode, setCurrentNode] = useState(getRoot());\n const [selection, setSelection] = useState({});\n\n const breadcrumbPath = useMemo(() => getPath(currentNode.dsId), [currentNode, getPath]);\n\n const displayedData = useMemo(\n () => currentNode.children.map((node) => node.getJson()),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [currentNode, hash],\n );\n\n const onDrilldown = useCallback((item) => setCurrentNode(getNode(item.id)), [getNode]);\n\n return useMemo(\n () => ({\n getNode,\n addNode,\n replaceNode,\n removeNode,\n currentNode,\n setCurrentNode,\n selection,\n setSelection,\n\n breadcrumbPath,\n displayedData,\n onDrilldown,\n }),\n [addNode, breadcrumbPath, currentNode, displayedData, getNode, onDrilldown, removeNode, replaceNode, selection],\n );\n};\n\nexport const useShuttle = () => {\n const {\n currentNode: currentSourceNode,\n setCurrentNode: setCurrentSourceNode,\n selection: sourceSelection,\n setSelection: setSourceSelection,\n breadcrumbPath: sourceBreadCrumbPath,\n displayedData: sourceDisplayedData,\n onDrilldown: onSourceDrilldown,\n addNode: addSourceNode,\n removeNode: removeSourceNode,\n } = useListData(startingSourceData);\n\n const {\n currentNode: currentDestinationNode,\n setCurrentNode: setCurrentDestinationNode,\n selection: destinationSelection,\n setSelection: setDestinationSelection,\n breadcrumbPath: destinationBreadCrumbPath,\n displayedData: destinationDisplayedData,\n onDrilldown: onDestinationDrilldown,\n addNode: addDestinationNode,\n removeNode: removeDestinationNode,\n } = useListData(startingDestinationData);\n\n const onSourceAdd = useCallback(\n (items) => items.forEach((item) => addSourceNode(item, { parent: currentSourceNode })),\n [addSourceNode, currentSourceNode],\n );\n\n const onSourceRemove = useCallback(\n (items) => items.forEach((item) => removeSourceNode(item.id, item)),\n [removeSourceNode],\n );\n\n const onDestinationAdd = useCallback(\n (items) => items.forEach((item) => addDestinationNode(item, { parent: currentDestinationNode })),\n [addDestinationNode, currentDestinationNode],\n );\n\n const onDestinationRemove = useCallback(\n (items) => items.forEach((item) => removeDestinationNode(item.id)),\n [removeDestinationNode],\n );\n\n return {\n setCurrentSourceNode,\n setCurrentDestinationNode,\n sourceDisplayedData,\n destinationDisplayedData,\n sourceSelection,\n destinationSelection,\n setSourceSelection,\n setDestinationSelection,\n onSourceDrilldown,\n onDestinationDrilldown,\n onSourceAdd,\n onSourceRemove,\n onDestinationAdd,\n onDestinationRemove,\n sourceBreadCrumbPath,\n destinationBreadCrumbPath,\n\n currentSourceNode,\n currentDestinationNode,\n };\n};\n"],
5
- "mappings": "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",
6
- "names": ["React"]
7
- }
@@ -1,169 +0,0 @@
1
- import * as React from "react";
2
- import { jsx } from "react/jsx-runtime";
3
- import React2, { useMemo, useState, useCallback } from "react";
4
- import { DSBreadcrumb } from "@elliemae/ds-breadcrumb";
5
- import { useDSTree } from "@elliemae/ds-tree-model";
6
- import { uid } from "uid";
7
- const genTreeOfData = ({ prefix, depth = 0, parent = null, childIndex = 0, finalDepth = 2 }) => {
8
- const node = {
9
- id: uid(),
10
- label: parent ? `${parent.label}.${childIndex}` : `${prefix} 0`,
11
- parent: parent ? parent.id : null
12
- };
13
- if (depth <= finalDepth) {
14
- node.subitems = Array.from(
15
- { length: 2 },
16
- (_, i) => genTreeOfData({ prefix, depth: depth + 1, parent: node, childIndex: i, finalDepth })
17
- );
18
- }
19
- return node;
20
- };
21
- const options = {
22
- getUniqueId: (item) => item.id
23
- };
24
- const startingSourceData = genTreeOfData({ prefix: "Source" });
25
- const startingDestinationData = genTreeOfData({ prefix: "Destination" });
26
- const matcheslenientStringSearch = (filter, str) => {
27
- const regexpString = `[\\s\\S]*${filter.replace(/\s/g, "").split("").join("[\\s\\S]*")}[\\s\\S]*`;
28
- const regexpFilter = new RegExp(regexpString);
29
- return regexpFilter.test(str);
30
- };
31
- const BreadCrumb = (props) => {
32
- const { breadCrumbPath, setCurrentNode, ...rest } = props;
33
- return /* @__PURE__ */ jsx(DSBreadcrumb, { isTitle: true, ...rest, children: breadCrumbPath.map((node) => /* @__PURE__ */ jsx(DSBreadcrumb.Item, { label: node.plainItem.label, onClick: () => setCurrentNode(node) }, `${node.dsId}`)) });
34
- };
35
- const BreadCrumbHoc = ({ path, setCurrentNode }) => {
36
- const WrappedBreadCrumb = (props) => /* @__PURE__ */ jsx(BreadCrumb, { ...props, breadCrumbPath: path, setCurrentNode });
37
- return WrappedBreadCrumb;
38
- };
39
- const useListData = (startingData) => {
40
- const { hash, getRoot, getNode, getPath, addNode, replaceNode, removeNode } = useDSTree(startingData, options);
41
- const [currentNode, setCurrentNode] = useState(getRoot());
42
- const [filterValue, setFilterValue] = useState("");
43
- const [selection, setSelection] = useState({});
44
- const breadcrumbPath = useMemo(() => getPath(currentNode.dsId), [currentNode, getPath]);
45
- const displayedData = useMemo(
46
- () => currentNode.children.map((node) => node.getJson()).filter((item) => matcheslenientStringSearch(filterValue, item.label)),
47
- // eslint-disable-next-line react-hooks/exhaustive-deps
48
- [currentNode, hash, filterValue]
49
- );
50
- const onDrilldown = useCallback((item) => setCurrentNode(getNode(item.id)), [getNode]);
51
- return {
52
- getNode,
53
- addNode,
54
- replaceNode,
55
- removeNode,
56
- currentNode,
57
- setCurrentNode,
58
- selection,
59
- setSelection,
60
- filterValue,
61
- setFilterValue,
62
- breadcrumbPath,
63
- displayedData,
64
- onDrilldown
65
- };
66
- };
67
- const useShuttle = () => {
68
- const {
69
- currentNode: currentSourceNode,
70
- setCurrentNode: setCurrentSourceNode,
71
- selection: sourceSelection,
72
- setSelection: setSourceSelection,
73
- breadcrumbPath: sourceBreadCrumbPath,
74
- displayedData: sourceDisplayedData,
75
- filterValue: sourceFilterValue,
76
- setFilterValue: setSourceFilterValue,
77
- onDrilldown: onSourceDrilldown,
78
- getNode: getSourceNode,
79
- addNode: addSourceNode,
80
- removeNode: removeSourceNode
81
- } = useListData(startingSourceData);
82
- const {
83
- currentNode: currentDestinationNode,
84
- setCurrentNode: setCurrentDestinationNode,
85
- selection: destinationSelection,
86
- setSelection: setDestinationSelection,
87
- breadcrumbPath: destinationBreadCrumbPath,
88
- displayedData: destinationDisplayedData,
89
- filterValue: destinationFilterValue,
90
- setFilterValue: setDestinationFilterValue,
91
- onDrilldown: onDestinationDrilldown,
92
- getNode: getDestinationNode,
93
- addNode: addDestinationNode,
94
- removeNode: removeDestinationNode
95
- } = useListData(startingDestinationData);
96
- const onSourceAdd = useCallback(
97
- (items) => items.forEach((item) => addSourceNode(item, { parent: getSourceNode(item.parent) ?? currentSourceNode })),
98
- [addSourceNode, currentSourceNode, getSourceNode]
99
- );
100
- const onSourceRemove = useCallback(
101
- (items) => items.forEach((item) => removeSourceNode(item.id, item)),
102
- [removeSourceNode]
103
- );
104
- const onDestinationAdd = useCallback(
105
- (items) => items.forEach(
106
- (item) => addDestinationNode(item, { parent: getDestinationNode(item.parent) ?? currentDestinationNode })
107
- ),
108
- [addDestinationNode, currentDestinationNode, getDestinationNode]
109
- );
110
- const onDestinationRemove = useCallback(
111
- (items) => items.forEach((item) => removeDestinationNode(item.id)),
112
- [removeDestinationNode]
113
- );
114
- return useMemo(
115
- () => ({
116
- setCurrentSourceNode,
117
- setCurrentDestinationNode,
118
- sourceDisplayedData,
119
- destinationDisplayedData,
120
- sourceSelection,
121
- destinationSelection,
122
- setSourceSelection,
123
- setDestinationSelection,
124
- sourceFilterValue,
125
- destinationFilterValue,
126
- setSourceFilterValue,
127
- setDestinationFilterValue,
128
- onSourceDrilldown,
129
- onDestinationDrilldown,
130
- onSourceAdd,
131
- onSourceRemove,
132
- onDestinationAdd,
133
- onDestinationRemove,
134
- sourceBreadCrumbPath,
135
- destinationBreadCrumbPath,
136
- currentSourceNode,
137
- currentDestinationNode
138
- }),
139
- [
140
- setCurrentSourceNode,
141
- setCurrentDestinationNode,
142
- sourceDisplayedData,
143
- destinationDisplayedData,
144
- sourceSelection,
145
- destinationSelection,
146
- setSourceSelection,
147
- setDestinationSelection,
148
- sourceFilterValue,
149
- destinationFilterValue,
150
- setSourceFilterValue,
151
- setDestinationFilterValue,
152
- onSourceDrilldown,
153
- onDestinationDrilldown,
154
- onSourceAdd,
155
- onSourceRemove,
156
- onDestinationAdd,
157
- onDestinationRemove,
158
- sourceBreadCrumbPath,
159
- destinationBreadCrumbPath,
160
- currentSourceNode,
161
- currentDestinationNode
162
- ]
163
- );
164
- };
165
- export {
166
- BreadCrumbHoc,
167
- useShuttle
168
- };
169
- //# sourceMappingURL=filter.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/tests/configs/filter.js"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable max-lines */\nimport React, { useMemo, useState, useCallback } from 'react';\nimport { DSBreadcrumb } from '@elliemae/ds-breadcrumb';\nimport { useDSTree } from '@elliemae/ds-tree-model';\nimport { uid } from 'uid';\n\nconst genTreeOfData = ({ prefix, depth = 0, parent = null, childIndex = 0, finalDepth = 2 }) => {\n const node = {\n id: uid(),\n label: parent ? `${parent.label}.${childIndex}` : `${prefix} 0`,\n parent: parent ? parent.id : null,\n };\n\n if (depth <= finalDepth) {\n node.subitems = Array.from({ length: 2 }, (_, i) =>\n genTreeOfData({ prefix, depth: depth + 1, parent: node, childIndex: i, finalDepth }),\n );\n }\n return node;\n};\n\nconst options = {\n getUniqueId: (item) => item.id,\n};\n\nconst startingSourceData = genTreeOfData({ prefix: 'Source' });\nconst startingDestinationData = genTreeOfData({ prefix: 'Destination' });\n\nconst matcheslenientStringSearch = (filter, str) => {\n const regexpString = `[\\\\s\\\\S]*${filter.replace(/\\s/g, '').split('').join('[\\\\s\\\\S]*')}[\\\\s\\\\S]*`;\n const regexpFilter = new RegExp(regexpString);\n return regexpFilter.test(str);\n};\n\nconst BreadCrumb = (props) => {\n const { breadCrumbPath, setCurrentNode, ...rest } = props;\n\n return (\n <DSBreadcrumb isTitle {...rest}>\n {breadCrumbPath.map((node) => (\n <DSBreadcrumb.Item key={`${node.dsId}`} label={node.plainItem.label} onClick={() => setCurrentNode(node)} />\n ))}\n </DSBreadcrumb>\n );\n};\n\nexport const BreadCrumbHoc = ({ path, setCurrentNode }) => {\n const WrappedBreadCrumb = (props) => <BreadCrumb {...props} breadCrumbPath={path} setCurrentNode={setCurrentNode} />;\n return WrappedBreadCrumb;\n};\n\nconst useListData = (startingData) => {\n const { hash, getRoot, getNode, getPath, addNode, replaceNode, removeNode } = useDSTree(startingData, options);\n const [currentNode, setCurrentNode] = useState(getRoot());\n const [filterValue, setFilterValue] = useState('');\n\n const [selection, setSelection] = useState({});\n\n const breadcrumbPath = useMemo(() => getPath(currentNode.dsId), [currentNode, getPath]);\n\n const displayedData = useMemo(\n () =>\n currentNode.children\n .map((node) => node.getJson())\n .filter((item) => matcheslenientStringSearch(filterValue, item.label)),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [currentNode, hash, filterValue],\n );\n\n const onDrilldown = useCallback((item) => setCurrentNode(getNode(item.id)), [getNode]);\n\n return {\n getNode,\n addNode,\n replaceNode,\n removeNode,\n currentNode,\n setCurrentNode,\n selection,\n setSelection,\n filterValue,\n setFilterValue,\n breadcrumbPath,\n displayedData,\n onDrilldown,\n };\n};\n\nexport const useShuttle = () => {\n const {\n currentNode: currentSourceNode,\n setCurrentNode: setCurrentSourceNode,\n selection: sourceSelection,\n setSelection: setSourceSelection,\n breadcrumbPath: sourceBreadCrumbPath,\n displayedData: sourceDisplayedData,\n filterValue: sourceFilterValue,\n setFilterValue: setSourceFilterValue,\n onDrilldown: onSourceDrilldown,\n getNode: getSourceNode,\n addNode: addSourceNode,\n removeNode: removeSourceNode,\n } = useListData(startingSourceData);\n\n const {\n currentNode: currentDestinationNode,\n setCurrentNode: setCurrentDestinationNode,\n selection: destinationSelection,\n setSelection: setDestinationSelection,\n breadcrumbPath: destinationBreadCrumbPath,\n displayedData: destinationDisplayedData,\n filterValue: destinationFilterValue,\n setFilterValue: setDestinationFilterValue,\n onDrilldown: onDestinationDrilldown,\n getNode: getDestinationNode,\n addNode: addDestinationNode,\n removeNode: removeDestinationNode,\n } = useListData(startingDestinationData);\n\n const onSourceAdd = useCallback(\n (items) =>\n items.forEach((item) => addSourceNode(item, { parent: getSourceNode(item.parent) ?? currentSourceNode })),\n [addSourceNode, currentSourceNode, getSourceNode],\n );\n\n const onSourceRemove = useCallback(\n (items) => items.forEach((item) => removeSourceNode(item.id, item)),\n [removeSourceNode],\n );\n\n const onDestinationAdd = useCallback(\n (items) =>\n items.forEach((item) =>\n addDestinationNode(item, { parent: getDestinationNode(item.parent) ?? currentDestinationNode }),\n ),\n [addDestinationNode, currentDestinationNode, getDestinationNode],\n );\n\n const onDestinationRemove = useCallback(\n (items) => items.forEach((item) => removeDestinationNode(item.id)),\n [removeDestinationNode],\n );\n\n return useMemo(\n () => ({\n setCurrentSourceNode,\n setCurrentDestinationNode,\n sourceDisplayedData,\n destinationDisplayedData,\n sourceSelection,\n destinationSelection,\n setSourceSelection,\n setDestinationSelection,\n sourceFilterValue,\n destinationFilterValue,\n setSourceFilterValue,\n setDestinationFilterValue,\n onSourceDrilldown,\n onDestinationDrilldown,\n onSourceAdd,\n onSourceRemove,\n onDestinationAdd,\n onDestinationRemove,\n sourceBreadCrumbPath,\n destinationBreadCrumbPath,\n\n currentSourceNode,\n currentDestinationNode,\n }),\n [\n setCurrentSourceNode,\n setCurrentDestinationNode,\n sourceDisplayedData,\n destinationDisplayedData,\n sourceSelection,\n destinationSelection,\n setSourceSelection,\n setDestinationSelection,\n sourceFilterValue,\n destinationFilterValue,\n setSourceFilterValue,\n setDestinationFilterValue,\n onSourceDrilldown,\n onDestinationDrilldown,\n onSourceAdd,\n onSourceRemove,\n onDestinationAdd,\n onDestinationRemove,\n sourceBreadCrumbPath,\n destinationBreadCrumbPath,\n\n currentSourceNode,\n currentDestinationNode,\n ],\n );\n};\n"],
5
- "mappings": "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",
6
- "names": ["React"]
7
- }
@@ -1,149 +0,0 @@
1
- import * as React from "react";
2
- import { jsx } from "react/jsx-runtime";
3
- import React2, { useMemo, useState, useCallback } from "react";
4
- import { DSBreadcrumb } from "@elliemae/ds-breadcrumb";
5
- import { useDSTree } from "@elliemae/ds-tree-model";
6
- import { uid } from "uid";
7
- const genTreeOfData = ({ prefix, depth = 0, parent = null, childIndex = 0, finalDepth = 2 }) => {
8
- const node = {
9
- id: uid(),
10
- label: parent ? `${parent.label}.${childIndex}` : `${prefix} 0`,
11
- parent: parent ? parent.id : null
12
- };
13
- if (depth <= finalDepth) {
14
- node.subitems = Array.from(
15
- { length: 2 },
16
- (_, i) => genTreeOfData({ prefix, depth: depth + 1, parent: node, childIndex: i, finalDepth })
17
- );
18
- }
19
- return node;
20
- };
21
- const options = {
22
- getUniqueId: (item) => item.id
23
- };
24
- const startingSourceData = genTreeOfData({ prefix: "Source" });
25
- const startingDestinationData = genTreeOfData({ prefix: "Destination" });
26
- const BreadCrumb = (props) => {
27
- const { breadCrumbPath, setCurrentNode, ...rest } = props;
28
- return /* @__PURE__ */ jsx(DSBreadcrumb, { isTitle: true, ...rest, children: breadCrumbPath.map((node) => /* @__PURE__ */ jsx(DSBreadcrumb.Item, { label: node.plainItem.label, onClick: () => setCurrentNode(node) }, `${node.dsId}`)) });
29
- };
30
- const BreadCrumbHoc = ({ path, setCurrentNode }) => {
31
- const WrappedBreadCrumb = (props) => /* @__PURE__ */ jsx(BreadCrumb, { ...props, breadCrumbPath: path, setCurrentNode });
32
- return WrappedBreadCrumb;
33
- };
34
- const useListData = (startingData) => {
35
- const { hash, getRoot, getNode, getPath, addNode, replaceNode, removeNode } = useDSTree(startingData, options);
36
- const [currentNode, setCurrentNode] = useState(getRoot());
37
- const [selection, setSelection] = useState({});
38
- const [isLoadingMore, setIsLoadingMore] = useState(false);
39
- const breadcrumbPath = useMemo(() => getPath(currentNode.dsId), [currentNode, getPath]);
40
- const displayedData = useMemo(
41
- () => currentNode.children.map((node) => node.getJson()),
42
- // eslint-disable-next-line react-hooks/exhaustive-deps
43
- [currentNode, hash]
44
- );
45
- const onDrilldown = useCallback((item) => setCurrentNode(getNode(item.id)), [getNode]);
46
- const onLoadMore = useCallback(() => {
47
- setIsLoadingMore(true);
48
- setTimeout(() => {
49
- const newChildren = Array.from(
50
- { length: 1 },
51
- (_, i) => genTreeOfData({ parent: currentNode.plainItem, childIndex: currentNode.children.length + i })
52
- );
53
- newChildren.forEach((child) => addNode(child, { parent: currentNode }));
54
- setIsLoadingMore(false);
55
- }, 1e3);
56
- }, [addNode, currentNode]);
57
- return {
58
- getNode,
59
- addNode,
60
- replaceNode,
61
- removeNode,
62
- currentNode,
63
- setCurrentNode,
64
- selection,
65
- setSelection,
66
- isLoadingMore,
67
- onLoadMore,
68
- breadcrumbPath,
69
- displayedData,
70
- onDrilldown
71
- };
72
- };
73
- const useShuttle = () => {
74
- const {
75
- currentNode: currentSourceNode,
76
- setCurrentNode: setCurrentSourceNode,
77
- selection: sourceSelection,
78
- setSelection: setSourceSelection,
79
- breadcrumbPath: sourceBreadCrumbPath,
80
- displayedData: sourceDisplayedData,
81
- onDrilldown: onSourceDrilldown,
82
- getNode: getSourceNode,
83
- addNode: addSourceNode,
84
- removeNode: removeSourceNode,
85
- isLoadingMore: isSourceLoadingMore,
86
- onLoadMore: onLoadMoreSource
87
- } = useListData(startingSourceData, "S");
88
- const {
89
- currentNode: currentDestinationNode,
90
- setCurrentNode: setCurrentDestinationNode,
91
- selection: destinationSelection,
92
- setSelection: setDestinationSelection,
93
- breadcrumbPath: destinationBreadCrumbPath,
94
- displayedData: destinationDisplayedData,
95
- onDrilldown: onDestinationDrilldown,
96
- getNode: getDestinationNode,
97
- addNode: addDestinationNode,
98
- removeNode: removeDestinationNode,
99
- isLoadingMore: isDestinationLoadingMore,
100
- onLoadMore: onLoadMoreDestination
101
- } = useListData(startingDestinationData, "D");
102
- const onSourceAdd = useCallback(
103
- (items) => items.forEach((item) => addSourceNode(item, { parent: getSourceNode(item.parent) ?? currentSourceNode })),
104
- [addSourceNode, currentSourceNode, getSourceNode]
105
- );
106
- const onSourceRemove = useCallback(
107
- (items) => items.forEach((item) => removeSourceNode(item.id, item)),
108
- [removeSourceNode]
109
- );
110
- const onDestinationAdd = useCallback(
111
- (items) => items.forEach(
112
- (item) => addDestinationNode(item, { parent: getDestinationNode(item.parent) ?? currentDestinationNode })
113
- ),
114
- [addDestinationNode, currentDestinationNode, getDestinationNode]
115
- );
116
- const onDestinationRemove = useCallback(
117
- (items) => items.forEach((item) => removeDestinationNode(item.id)),
118
- [removeDestinationNode]
119
- );
120
- return {
121
- setCurrentSourceNode,
122
- setCurrentDestinationNode,
123
- sourceDisplayedData,
124
- destinationDisplayedData,
125
- sourceSelection,
126
- destinationSelection,
127
- setSourceSelection,
128
- setDestinationSelection,
129
- onSourceDrilldown,
130
- onDestinationDrilldown,
131
- onSourceAdd,
132
- onSourceRemove,
133
- onDestinationAdd,
134
- onDestinationRemove,
135
- sourceBreadCrumbPath,
136
- destinationBreadCrumbPath,
137
- isSourceLoadingMore,
138
- onLoadMoreSource,
139
- isDestinationLoadingMore,
140
- onLoadMoreDestination,
141
- currentSourceNode,
142
- currentDestinationNode
143
- };
144
- };
145
- export {
146
- BreadCrumbHoc,
147
- useShuttle
148
- };
149
- //# sourceMappingURL=loadMore.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/tests/configs/loadMore.js"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable max-lines */\nimport React, { useMemo, useState, useCallback } from 'react';\nimport { DSBreadcrumb } from '@elliemae/ds-breadcrumb';\nimport { useDSTree } from '@elliemae/ds-tree-model';\nimport { uid } from 'uid';\n\nconst genTreeOfData = ({ prefix, depth = 0, parent = null, childIndex = 0, finalDepth = 2 }) => {\n const node = {\n id: uid(),\n label: parent ? `${parent.label}.${childIndex}` : `${prefix} 0`,\n parent: parent ? parent.id : null,\n };\n\n if (depth <= finalDepth) {\n node.subitems = Array.from({ length: 2 }, (_, i) =>\n genTreeOfData({ prefix, depth: depth + 1, parent: node, childIndex: i, finalDepth }),\n );\n }\n return node;\n};\n\nconst options = {\n getUniqueId: (item) => item.id,\n};\n\nconst startingSourceData = genTreeOfData({ prefix: 'Source' });\nconst startingDestinationData = genTreeOfData({ prefix: 'Destination' });\n\nconst BreadCrumb = (props) => {\n const { breadCrumbPath, setCurrentNode, ...rest } = props;\n\n return (\n <DSBreadcrumb isTitle {...rest}>\n {breadCrumbPath.map((node) => (\n <DSBreadcrumb.Item key={`${node.dsId}`} label={node.plainItem.label} onClick={() => setCurrentNode(node)} />\n ))}\n </DSBreadcrumb>\n );\n};\n\nexport const BreadCrumbHoc = ({ path, setCurrentNode }) => {\n const WrappedBreadCrumb = (props) => <BreadCrumb {...props} breadCrumbPath={path} setCurrentNode={setCurrentNode} />;\n return WrappedBreadCrumb;\n};\n\nconst useListData = (startingData) => {\n const { hash, getRoot, getNode, getPath, addNode, replaceNode, removeNode } = useDSTree(startingData, options);\n const [currentNode, setCurrentNode] = useState(getRoot());\n const [selection, setSelection] = useState({});\n const [isLoadingMore, setIsLoadingMore] = useState(false);\n\n const breadcrumbPath = useMemo(() => getPath(currentNode.dsId), [currentNode, getPath]);\n\n const displayedData = useMemo(\n () => currentNode.children.map((node) => node.getJson()),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [currentNode, hash],\n );\n\n const onDrilldown = useCallback((item) => setCurrentNode(getNode(item.id)), [getNode]);\n\n const onLoadMore = useCallback(() => {\n setIsLoadingMore(true);\n setTimeout(() => {\n const newChildren = Array.from({ length: 1 }, (_, i) =>\n genTreeOfData({ parent: currentNode.plainItem, childIndex: currentNode.children.length + i }),\n );\n newChildren.forEach((child) => addNode(child, { parent: currentNode }));\n setIsLoadingMore(false);\n }, 1000);\n }, [addNode, currentNode]);\n\n return {\n getNode,\n addNode,\n replaceNode,\n removeNode,\n currentNode,\n setCurrentNode,\n selection,\n setSelection,\n isLoadingMore,\n onLoadMore,\n breadcrumbPath,\n displayedData,\n onDrilldown,\n };\n};\n\nexport const useShuttle = () => {\n const {\n currentNode: currentSourceNode,\n setCurrentNode: setCurrentSourceNode,\n selection: sourceSelection,\n setSelection: setSourceSelection,\n breadcrumbPath: sourceBreadCrumbPath,\n displayedData: sourceDisplayedData,\n onDrilldown: onSourceDrilldown,\n getNode: getSourceNode,\n addNode: addSourceNode,\n removeNode: removeSourceNode,\n isLoadingMore: isSourceLoadingMore,\n onLoadMore: onLoadMoreSource,\n } = useListData(startingSourceData, 'S');\n\n const {\n currentNode: currentDestinationNode,\n setCurrentNode: setCurrentDestinationNode,\n selection: destinationSelection,\n setSelection: setDestinationSelection,\n breadcrumbPath: destinationBreadCrumbPath,\n displayedData: destinationDisplayedData,\n onDrilldown: onDestinationDrilldown,\n getNode: getDestinationNode,\n addNode: addDestinationNode,\n removeNode: removeDestinationNode,\n isLoadingMore: isDestinationLoadingMore,\n onLoadMore: onLoadMoreDestination,\n } = useListData(startingDestinationData, 'D');\n\n const onSourceAdd = useCallback(\n (items) =>\n items.forEach((item) => addSourceNode(item, { parent: getSourceNode(item.parent) ?? currentSourceNode })),\n [addSourceNode, currentSourceNode, getSourceNode],\n );\n\n const onSourceRemove = useCallback(\n (items) => items.forEach((item) => removeSourceNode(item.id, item)),\n [removeSourceNode],\n );\n\n const onDestinationAdd = useCallback(\n (items) =>\n items.forEach((item) =>\n addDestinationNode(item, { parent: getDestinationNode(item.parent) ?? currentDestinationNode }),\n ),\n [addDestinationNode, currentDestinationNode, getDestinationNode],\n );\n\n const onDestinationRemove = useCallback(\n (items) => items.forEach((item) => removeDestinationNode(item.id)),\n [removeDestinationNode],\n );\n\n return {\n setCurrentSourceNode,\n setCurrentDestinationNode,\n sourceDisplayedData,\n destinationDisplayedData,\n sourceSelection,\n destinationSelection,\n setSourceSelection,\n setDestinationSelection,\n onSourceDrilldown,\n onDestinationDrilldown,\n onSourceAdd,\n onSourceRemove,\n onDestinationAdd,\n onDestinationRemove,\n sourceBreadCrumbPath,\n destinationBreadCrumbPath,\n isSourceLoadingMore,\n onLoadMoreSource,\n isDestinationLoadingMore,\n onLoadMoreDestination,\n\n currentSourceNode,\n currentDestinationNode,\n };\n};\n"],
5
- "mappings": "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",
6
- "names": ["React"]
7
- }