@neovici/cosmoz-treenode-navigator 6.0.2 → 7.0.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 (33) hide show
  1. package/README.md +4 -12
  2. package/dist/cosmoz-treenode-button-view.d.ts +2 -0
  3. package/dist/cosmoz-treenode-button-view.d.ts.map +1 -0
  4. package/dist/cosmoz-treenode-button-view.js +198 -0
  5. package/dist/cosmoz-treenode-button-view.js.map +1 -0
  6. package/dist/cosmoz-treenode-button-view.styles.d.ts +3 -0
  7. package/dist/cosmoz-treenode-button-view.styles.d.ts.map +1 -0
  8. package/dist/cosmoz-treenode-button-view.styles.js +216 -0
  9. package/dist/cosmoz-treenode-button-view.styles.js.map +1 -0
  10. package/dist/cosmoz-treenode-navigator.d.ts +2 -0
  11. package/dist/cosmoz-treenode-navigator.d.ts.map +1 -0
  12. package/dist/cosmoz-treenode-navigator.js +246 -0
  13. package/dist/cosmoz-treenode-navigator.js.map +1 -0
  14. package/dist/cosmoz-treenode-navigator.styles.d.ts +3 -0
  15. package/dist/cosmoz-treenode-navigator.styles.d.ts.map +1 -0
  16. package/{cosmoz-treenode-navigator.styles.js → dist/cosmoz-treenode-navigator.styles.js} +11 -7
  17. package/dist/cosmoz-treenode-navigator.styles.js.map +1 -0
  18. package/dist/hooks/useKeyDown.d.ts +2 -0
  19. package/dist/hooks/useKeyDown.d.ts.map +1 -0
  20. package/dist/hooks/useKeyDown.js +16 -0
  21. package/dist/hooks/useKeyDown.js.map +1 -0
  22. package/dist/util/helpers.d.ts +51 -0
  23. package/dist/util/helpers.d.ts.map +1 -0
  24. package/dist/util/helpers.js +125 -0
  25. package/dist/util/helpers.js.map +1 -0
  26. package/package.json +61 -21
  27. package/test/data/basicTree.js +34 -34
  28. package/test/data/rtlTest.js +6 -7
  29. package/cosmoz-treenode-button-view.js +0 -445
  30. package/cosmoz-treenode-navigator.js +0 -297
  31. package/helpers.js +0 -124
  32. package/test/cosmoz-treenode-button-view.test.js +0 -52
  33. package/test/cosmoz-treenode-navigator.test.js +0 -102
@@ -0,0 +1,246 @@
1
+ import { component, useCallback, useEffect, useMemo, useProperty, useRef, useState, } from '@pionjs/pion';
2
+ import { html, nothing } from 'lit-html';
3
+ import { when } from 'lit-html/directives/when.js';
4
+ import { guard } from 'lit-html/directives/guard.js';
5
+ import { ref } from 'lit-html/directives/ref.js';
6
+ import { virtualize } from '@lit-labs/virtualizer/virtualize.js';
7
+ import '@neovici/cosmoz-input';
8
+ import { useMeta } from '@neovici/cosmoz-utils/hooks/use-meta';
9
+ import { computeDataPlane, computeRowClass, getParentPath, onNodeDblClicked, } from './util/helpers';
10
+ import style from './cosmoz-treenode-navigator.styles';
11
+ import { useHost } from '@neovici/cosmoz-utils/hooks/use-host';
12
+ import { notifyProperty } from '@neovici/cosmoz-utils/hooks/use-notify-property';
13
+ const NodeNavigator = ({
14
+ /**
15
+ * The main node structure
16
+ */
17
+ tree,
18
+ /**
19
+ * Placeholder for search field.
20
+ */
21
+ searchPlaceholder,
22
+ /**
23
+ * Text displayed when local search has finished
24
+ * to suggest a search on the entire tree
25
+ */
26
+ searchGlobalPlaceholder,
27
+ /**
28
+ * Minimum length of searchValue to trigger a search
29
+ */
30
+ searchMinLength, opened, nodesOnNodePath, }) => {
31
+ const listRef = useRef();
32
+ const host = useHost();
33
+ const [highlightedNode, setHighlightedNode] = useProperty('highlightedNode');
34
+ const [searchValue, setSearchValue] = useState('');
35
+ const [openNodePath, setOpenNodePath] = useState('');
36
+ const search = useMemo(() => (searchValue?.length > (searchMinLength ?? 2) - 1 && searchValue) ||
37
+ undefined, [searchValue, searchMinLength]);
38
+ const dataPlane = useMemo(() => computeDataPlane(tree, search, openNodePath), [tree, search, openNodePath]);
39
+ /**
40
+ * Opens a node (renderLevel) based on a given path
41
+ * @param clickedNode - The clicked node
42
+ * @return undefined
43
+ */
44
+ const onNodeClick = useCallback((clickedNode) => {
45
+ setOpenNodePath(clickedNode?.pathLocator || '');
46
+ setSearchValue('');
47
+ setHighlightedNode(null);
48
+ }, []);
49
+ useEffect(() => {
50
+ if (!openNodePath) {
51
+ return;
52
+ }
53
+ notifyProperty(host, 'highlightedNodePath', '');
54
+ }, [openNodePath]);
55
+ useEffect(() => {
56
+ if (!nodesOnNodePath?.length || !tree || !opened) {
57
+ return;
58
+ }
59
+ const lastNode = nodesOnNodePath[nodesOnNodePath.length - 1];
60
+ if (!lastNode?.pathLocator) {
61
+ return;
62
+ }
63
+ if (tree.hasChildren(lastNode)) {
64
+ setOpenNodePath(lastNode.pathLocator);
65
+ return;
66
+ }
67
+ const parentPath = getParentPath(tree, lastNode);
68
+ setOpenNodePath(parentPath);
69
+ setHighlightedNode(lastNode);
70
+ }, [nodesOnNodePath, tree, opened]);
71
+ useEffect(() => {
72
+ notifyProperty(host, 'highlightedNodePath', highlightedNode?.pathLocator || '');
73
+ }, [highlightedNode]);
74
+ const meta = useMeta({
75
+ dataPlane,
76
+ highlightedNode: highlightedNode ?? null,
77
+ onNodeClick,
78
+ });
79
+ useEffect(() => {
80
+ if (!opened) {
81
+ return;
82
+ }
83
+ const getVlist = () => {
84
+ const list = listRef.current;
85
+ if (!list)
86
+ return null;
87
+ return list[Object.getOwnPropertySymbols(list)[0]];
88
+ };
89
+ const vlist = getVlist();
90
+ if (vlist && meta.highlightedNode) {
91
+ const index = meta.dataPlane?.indexOf(meta.highlightedNode);
92
+ if (index !== undefined && index >= 0) {
93
+ vlist.scrollToIndex = {
94
+ index,
95
+ position: 'center',
96
+ };
97
+ }
98
+ }
99
+ const handler = (e) => {
100
+ if ((e.ctrlKey && e.altKey) || e.defaultPrevented) {
101
+ return;
102
+ }
103
+ const { dataPlane: items, highlightedNode: node, onNodeClick: open, } = meta;
104
+ const vlist = getVlist();
105
+ if (!vlist)
106
+ return;
107
+ const currentIndex = items.findIndex((i) => i.pathLocator === node?.pathLocator);
108
+ const navigateToIndex = (newIndex, position) => {
109
+ if (newIndex >= 0 && newIndex < items.length) {
110
+ setHighlightedNode(items[newIndex]);
111
+ const needsScroll = position === 'start'
112
+ ? newIndex < vlist._firstVisible
113
+ : newIndex > vlist._lastVisible;
114
+ if (needsScroll) {
115
+ vlist.scrollToIndex = { index: newIndex, position };
116
+ }
117
+ return true;
118
+ }
119
+ return false;
120
+ };
121
+ switch (e.key) {
122
+ case 'Up':
123
+ case 'ArrowUp': {
124
+ e.preventDefault();
125
+ navigateToIndex(Math.max(currentIndex - 1, 0), 'start');
126
+ break;
127
+ }
128
+ case 'Down':
129
+ case 'ArrowDown': {
130
+ e.preventDefault();
131
+ if (currentIndex < items.length - 1) {
132
+ navigateToIndex(currentIndex + 1, 'end');
133
+ }
134
+ break;
135
+ }
136
+ case 'Enter':
137
+ e.preventDefault();
138
+ if (node) {
139
+ host.dispatchEvent(new CustomEvent('node-dblclicked'));
140
+ }
141
+ break;
142
+ case 'Right':
143
+ case 'ArrowRight':
144
+ e.preventDefault();
145
+ if (node && tree.hasChildren(node)) {
146
+ open(node);
147
+ }
148
+ break;
149
+ default:
150
+ break;
151
+ }
152
+ };
153
+ document.addEventListener('keydown', handler, true);
154
+ return () => document.removeEventListener('keydown', handler, true);
155
+ }, [opened, meta]);
156
+ const renderItem = (node, index) => {
157
+ if (!node) {
158
+ return nothing;
159
+ }
160
+ return html ` <div class="item">
161
+ ${((parentPath) => when(search &&
162
+ (index === 0 ||
163
+ parentPath !== getParentPath(tree, dataPlane[index - 1])), () => html `
164
+ <div class="section">
165
+ ${tree.getPathString(parentPath, tree.searchProperty)}
166
+ </div>
167
+ `))(getParentPath(tree, node))}
168
+ <div
169
+ class=${computeRowClass('node', node, highlightedNode)}
170
+ @click=${() => setHighlightedNode(node)}
171
+ @dblclick=${(e) => onNodeDblClicked(e, host)}
172
+ >
173
+ <div class="name">${node[tree.searchProperty]}</div>
174
+ ${when(tree.hasChildren(node), () => html `
175
+ <span class="icon" @click=${() => onNodeClick(node)}>
176
+ <svg
177
+ viewBox="0 0 24 24"
178
+ preserveAspectRatio="xMidYMid meet"
179
+ focusable="false"
180
+ style="pointer-events: none; display: block; width: 100%; height: 100%;"
181
+ >
182
+ <g>
183
+ <path
184
+ d="M12 4l-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8z"
185
+ ></path>
186
+ </g>
187
+ </svg>
188
+ </span>
189
+ `)}
190
+ </div>
191
+ </div>`;
192
+ };
193
+ return html `
194
+ <div class="header">
195
+ <h3 class="path">
196
+ <span class="icon" @click=${() => onNodeClick()}>
197
+ <svg
198
+ viewBox="0 0 24 24"
199
+ preserveAspectRatio="xMidYMid meet"
200
+ focusable="false"
201
+ style="pointer-events: none; display: block; width: 100%; height: 100%;"
202
+ >
203
+ <g><path d="M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z"></path></g>
204
+ </svg>
205
+ </span>
206
+ ${guard([tree, openNodePath], () => ((openNodePath && tree?.getPathNodes(openNodePath)) || [])
207
+ .filter((node) => node !== undefined)
208
+ .map((node) => html `
209
+ <span class="slash">/</span>
210
+ <span
211
+ class="pointer"
212
+ tabindex="0"
213
+ @click=${() => onNodeClick(node)}
214
+ >${node[tree.searchProperty]}</span
215
+ >
216
+ `))}
217
+ </h3>
218
+ <cosmoz-input
219
+ tabindex="0"
220
+ .value=${searchValue}
221
+ .placeholder=${searchPlaceholder}
222
+ @input=${(e) => setSearchValue(e.target.value)}
223
+ />
224
+ </div>
225
+ ${when(tree, () => html ` <div
226
+ class="items"
227
+ ${ref((el) => (listRef.current = el))}
228
+ >
229
+ <div virtualizer-sizer></div>
230
+ ${virtualize({
231
+ items: dataPlane,
232
+ renderItem,
233
+ scroller: true,
234
+ })}
235
+ </div>`)}
236
+ ${when(search && openNodePath, () => html `
237
+ <button class="btn-ghost" @click=${() => setOpenNodePath('')}>
238
+ ${searchGlobalPlaceholder}
239
+ </button>
240
+ `)}
241
+ `;
242
+ };
243
+ customElements.define('cosmoz-treenode-navigator', component(NodeNavigator, {
244
+ styleSheets: [style],
245
+ }));
246
+ //# sourceMappingURL=cosmoz-treenode-navigator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cosmoz-treenode-navigator.js","sourceRoot":"","sources":["../src/cosmoz-treenode-navigator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ declare const _default: string;
2
+ export default _default;
3
+ //# sourceMappingURL=cosmoz-treenode-navigator.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cosmoz-treenode-navigator.styles.d.ts","sourceRoot":"","sources":["../src/cosmoz-treenode-navigator.styles.ts"],"names":[],"mappings":";AAEA,wBA4HE"}
@@ -1,6 +1,5 @@
1
- import { tagged as css } from '@neovici/cosmoz-utils';
2
-
3
- export default css`
1
+ import { css } from '@pionjs/pion';
2
+ export default css `
4
3
  :host {
5
4
  --cosmoz-treenode-navigator-select-node-icon-color: var(
6
5
  --primary-color,
@@ -36,6 +35,7 @@ export default css`
36
35
  display: flex;
37
36
  align-items: center;
38
37
  flex-wrap: wrap;
38
+ margin: 0;
39
39
  }
40
40
 
41
41
  .slash {
@@ -71,12 +71,14 @@ export default css`
71
71
  font-weight: 400;
72
72
  height: 40px;
73
73
  line-height: 24px;
74
- padding: 6px 12px;
74
+ padding: 6px 12px 6px 16px;
75
75
  cursor: pointer;
76
76
  }
77
+
77
78
  .name {
78
79
  flex: auto;
79
80
  }
81
+
80
82
  .icon {
81
83
  box-sizing: border-box;
82
84
  cursor: pointer;
@@ -117,7 +119,9 @@ export default css`
117
119
  font-family: inherit;
118
120
  }
119
121
 
120
- .path>.pointer:hover, .path>.pointer:has(~.pointer:hover) {
121
- text-decoration: underline;
122
- }
122
+ .path > .pointer:hover,
123
+ .path > .pointer:has(~ .pointer:hover) {
124
+ text-decoration: underline;
125
+ }
123
126
  `;
127
+ //# sourceMappingURL=cosmoz-treenode-navigator.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cosmoz-treenode-navigator.styles.js","sourceRoot":"","sources":["../src/cosmoz-treenode-navigator.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAEnC,eAAe,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4HjB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const useKeyDown: (key: string, callback: () => void) => void;
2
+ //# sourceMappingURL=useKeyDown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useKeyDown.d.ts","sourceRoot":"","sources":["../../src/hooks/useKeyDown.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,UAAU,GAAI,KAAK,MAAM,EAAE,UAAU,MAAM,IAAI,KAAG,IAe9D,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { useEffect } from '@pionjs/pion';
2
+ export const useKeyDown = (key, callback) => {
3
+ const onKeyDown = (e) => {
4
+ if (e.key === key && callback instanceof Function) {
5
+ e.preventDefault();
6
+ return callback();
7
+ }
8
+ };
9
+ useEffect(() => {
10
+ document.addEventListener('keydown', onKeyDown);
11
+ return () => {
12
+ document.removeEventListener('keydown', onKeyDown);
13
+ };
14
+ });
15
+ };
16
+ //# sourceMappingURL=useKeyDown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useKeyDown.js","sourceRoot":"","sources":["../../src/hooks/useKeyDown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,QAAoB,EAAQ,EAAE;IACrE,MAAM,SAAS,GAAG,CAAC,CAAgB,EAAQ,EAAE;QAC5C,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,QAAQ,YAAY,QAAQ,EAAE,CAAC;YACnD,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,OAAO,QAAQ,EAAE,CAAC;QACnB,CAAC;IACF,CAAC,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACd,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAEhD,OAAO,GAAG,EAAE;YACX,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACpD,CAAC,CAAC;IACH,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,51 @@
1
+ import { Node, Tree } from '@neovici/cosmoz-tree';
2
+ export declare const //
3
+ getParentPath: (tree: Tree, node: Node) => string,
4
+ /**
5
+ * Returns a node array with the children of a node on the given path
6
+ * If the node doesn't have children, the node gets returned
7
+ * @param tree - The main tree
8
+ * @param pathLocator - The separated address parts of a node
9
+ * @return - Nodes
10
+ */
11
+ renderLevel: (tree: Tree, pathLocator: string) => Node[] | Node | null | undefined,
12
+ /**
13
+ * Returns the found nodes based on a search string and a given tree to be searched
14
+ * @param tree - The main tree
15
+ * @param search - The search string
16
+ * @param pathLocator - The separated address parts of a node
17
+ * @return - The found nodes
18
+ */
19
+ computeDataPlane: (tree: Tree, search: string | undefined, pathLocator: string) => Node[],
20
+ /**
21
+ * Returns the classes of a row based its selection state
22
+ * @param classes - The default classes
23
+ * @param node - Node to check
24
+ * @param highlightedNode - Currently highlighted node
25
+ * @return - The CSS classes
26
+ */
27
+ computeRowClass: (classes: string, node: Node, highlightedNode?: Node | null) => string,
28
+ /**
29
+ * Selects the doubled clicked node and dispatches a node-dblclicked event.
30
+ * @param event The triggering event
31
+ * @param host Host
32
+ * @return undefined
33
+ */
34
+ onNodeDblClicked: (event: Event, host: HTMLElement) => void,
35
+ /**
36
+ * Returns the nodes on a path specified by a given path locator
37
+ * @param pathLocator - The separated address parts of a node
38
+ * @param tree - The main tree
39
+ * @return - The found nodes or empty array
40
+ */
41
+ getTreePathParts: (pathLocator: string, tree: Tree) => Node[],
42
+ /**
43
+ * Returns a node based on a given path locator.
44
+ * If pathLocator is empty or not defined, null gets returned.
45
+ * If pathLocator is only partly valid, the last valid node gets returned.
46
+ * @param pathLocator - The separated address parts of a node
47
+ * @param tree - The main tree
48
+ * @return - The found node
49
+ */
50
+ getNode: (pathLocator: string, tree: Tree) => Node | null;
51
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/util/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAElD,eAAO,MAAM,EAAE;AACd,aAAa,GAAI,MAAM,IAAI,EAAE,MAAM,IAAI,KAAG,MAOzC;AACD;;;;;;GAMG;AACH,WAAW,GACV,MAAM,IAAI,EACV,aAAa,MAAM,KACjB,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,SA+BzB;AACD;;;;;;GAMG;AACH,gBAAgB,GACf,MAAM,IAAI,EACV,QAAQ,MAAM,GAAG,SAAS,EAC1B,aAAa,MAAM,KACjB,IAAI,EAUN;AACD;;;;;;GAMG;AACH,eAAe,GACd,SAAS,MAAM,EACf,MAAM,IAAI,EACV,kBAAkB,IAAI,GAAG,IAAI,KAC3B,MASF;AACD;;;;;GAKG;AACH,gBAAgB,GAAI,OAAO,KAAK,EAAE,MAAM,WAAW,KAAG,IAQrD;AACD;;;;;GAKG;AACH,gBAAgB,GAAI,aAAa,MAAM,EAAE,MAAM,IAAI,KAAG,IAAI,EAOzD;AACD;;;;;;;GAOG;AACH,OAAO,GAAI,aAAa,MAAM,EAAE,MAAM,IAAI,KAAG,IAAI,GAAG,IAcnD,CAAC"}
@@ -0,0 +1,125 @@
1
+ export const //
2
+ getParentPath = (tree, node) => {
3
+ const path = node.pathLocator || node.path || '';
4
+ const { pathLocatorSeparator } = tree;
5
+ return path.includes(pathLocatorSeparator)
6
+ ? path.substring(0, path.lastIndexOf(pathLocatorSeparator))
7
+ : path;
8
+ },
9
+ /**
10
+ * Returns a node array with the children of a node on the given path
11
+ * If the node doesn't have children, the node gets returned
12
+ * @param tree - The main tree
13
+ * @param pathLocator - The separated address parts of a node
14
+ * @return - Nodes
15
+ */
16
+ renderLevel = (tree, pathLocator) => {
17
+ if (!tree) {
18
+ return undefined;
19
+ }
20
+ const node = tree.getNodeByPathLocator(pathLocator);
21
+ const children = node ? tree.getChildren(node) : [];
22
+ const { searchProperty } = tree, sortFunc = (a, b) => {
23
+ // First sort based on "folder" status (containing children)
24
+ if (tree.hasChildren(a)) {
25
+ if (!tree.hasChildren(b)) {
26
+ return -1;
27
+ }
28
+ }
29
+ else if (tree.hasChildren(b)) {
30
+ return 1;
31
+ }
32
+ // Then sort on searchProperty
33
+ const val1 = a[searchProperty], val2 = b[searchProperty];
34
+ if (val1 > val2) {
35
+ return 1;
36
+ }
37
+ if (val1 < val2) {
38
+ return -1;
39
+ }
40
+ return 0;
41
+ };
42
+ return children.length > 0 ? children.sort(sortFunc) : node;
43
+ },
44
+ /**
45
+ * Returns the found nodes based on a search string and a given tree to be searched
46
+ * @param tree - The main tree
47
+ * @param search - The search string
48
+ * @param pathLocator - The separated address parts of a node
49
+ * @return - The found nodes
50
+ */
51
+ computeDataPlane = (tree, search, pathLocator) => {
52
+ if (!tree) {
53
+ return [];
54
+ }
55
+ const nodes = renderLevel(tree, pathLocator);
56
+ return search
57
+ ? tree.searchNodes(search, nodes, false)
58
+ : nodes;
59
+ },
60
+ /**
61
+ * Returns the classes of a row based its selection state
62
+ * @param classes - The default classes
63
+ * @param node - Node to check
64
+ * @param highlightedNode - Currently highlighted node
65
+ * @return - The CSS classes
66
+ */
67
+ computeRowClass = (classes, node, highlightedNode) => {
68
+ let selected = false;
69
+ if (highlightedNode) {
70
+ selected =
71
+ node === highlightedNode ||
72
+ (node.id && node.id === highlightedNode.id) ||
73
+ node.pathLocator === highlightedNode.pathLocator;
74
+ }
75
+ return selected ? `${classes} selected` : classes;
76
+ },
77
+ /**
78
+ * Selects the doubled clicked node and dispatches a node-dblclicked event.
79
+ * @param event The triggering event
80
+ * @param host Host
81
+ * @return undefined
82
+ */
83
+ onNodeDblClicked = (event, host) => {
84
+ host.dispatchEvent(new CustomEvent('node-dblclicked', {
85
+ detail: {
86
+ model: event.model,
87
+ },
88
+ }));
89
+ },
90
+ /**
91
+ * Returns the nodes on a path specified by a given path locator
92
+ * @param pathLocator - The separated address parts of a node
93
+ * @param tree - The main tree
94
+ * @return - The found nodes or empty array
95
+ */
96
+ getTreePathParts = (pathLocator, tree) => {
97
+ if (!tree || !pathLocator) {
98
+ return [];
99
+ }
100
+ return tree
101
+ .getPathNodes(pathLocator)
102
+ .filter((node) => node !== undefined);
103
+ },
104
+ /**
105
+ * Returns a node based on a given path locator.
106
+ * If pathLocator is empty or not defined, null gets returned.
107
+ * If pathLocator is only partly valid, the last valid node gets returned.
108
+ * @param pathLocator - The separated address parts of a node
109
+ * @param tree - The main tree
110
+ * @return - The found node
111
+ */
112
+ getNode = (pathLocator, tree) => {
113
+ if (!tree || !pathLocator) {
114
+ return null;
115
+ }
116
+ const node = tree.getNodeByPathLocator(pathLocator);
117
+ let nodes;
118
+ if (!node) {
119
+ nodes = tree.getPathNodes(pathLocator).filter((n) => n != null);
120
+ }
121
+ return nodes && nodes.length > 0
122
+ ? nodes.pop() || null
123
+ : node || null;
124
+ };
125
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/util/helpers.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,9 +1,13 @@
1
1
  {
2
2
  "name": "@neovici/cosmoz-treenode-navigator",
3
- "version": "6.0.2",
4
- "description": "A Polymer component that lets you navigate and search through hierarchically structured data-nodes and select one of them.",
3
+ "version": "7.0.1",
4
+ "type": "module",
5
+ "description": "A Pion component that lets you navigate and search through hierarchically structured data-nodes and select one of them.",
5
6
  "keywords": [
6
- "polymer",
7
+ "pion",
8
+ "pionjs",
9
+ "haunted",
10
+ "lit-html",
7
11
  "web-components"
8
12
  ],
9
13
  "homepage": "https://github.com/neovici/cosmoz-treenode-navigator#readme",
@@ -16,21 +20,28 @@
16
20
  },
17
21
  "license": "Apache-2.0",
18
22
  "author": "",
19
- "main": "cosmoz-treenode-navigator.js",
23
+ "main": "dist/cosmoz-treenode-navigator.js",
24
+ "types": "dist/cosmoz-treenode-navigator.d.ts",
20
25
  "directories": {
21
26
  "test": "test"
22
27
  },
23
28
  "files": [
24
- "cosmoz-*.js",
25
- "helpers.js",
29
+ "dist",
26
30
  "test/data"
27
31
  ],
28
32
  "scripts": {
29
- "lint": "eslint --cache --ext .js .",
30
- "start": "wds",
33
+ "lint": "eslint --cache --ext .js,.ts .",
34
+ "start": "npm run storybook:start",
31
35
  "test": "wtr --coverage",
32
36
  "test:watch": "wtr --watch",
33
- "prepare": "husky install"
37
+ "prepare": "husky install && npm run build",
38
+ "prettier": "prettier --write \"**/*.{js,ts,json,css,md}\"",
39
+ "prettier:check": "prettier --check \"**/*.{js,ts,json,css,md}\"",
40
+ "build": "tsc",
41
+ "storybook:start": "storybook dev -p 8000",
42
+ "storybook:build": "storybook build",
43
+ "storybook:deploy": "storybook-to-ghpages",
44
+ "storybook:preview": "npm run storybook:build && web-dev-server --root-dir ./storybook-static/ --open"
34
45
  },
35
46
  "release": {
36
47
  "plugins": [
@@ -58,25 +69,35 @@
58
69
  ]
59
70
  }
60
71
  },
72
+ "exports": {
73
+ ".": {
74
+ "types": "./dist/cosmoz-treenode-navigator.d.ts",
75
+ "default": "./dist/cosmoz-treenode-navigator.js"
76
+ },
77
+ "./cosmoz-treenode-navigator": {
78
+ "types": "./dist/cosmoz-treenode-navigator.d.ts",
79
+ "default": "./dist/cosmoz-treenode-navigator.js"
80
+ },
81
+ "./cosmoz-treenode-button-view": {
82
+ "types": "./dist/cosmoz-treenode-button-view.d.ts",
83
+ "default": "./dist/cosmoz-treenode-button-view.js"
84
+ }
85
+ },
61
86
  "dependencies": {
62
87
  "@lit-labs/virtualizer": "^2.0.0",
63
- "@neovici/cfg": "^1.33.0",
64
- "@neovici/cosmoz-dialog": "^3.0.0",
65
- "@neovici/cosmoz-i18next": "^3.2.0",
88
+ "@neovici/cosmoz-i18next": "^3.4.0",
66
89
  "@neovici/cosmoz-input": "^5.0.0",
67
- "@neovici/cosmoz-tree": "^3.0.0",
68
- "@neovici/cosmoz-utils": "^6.0.0",
69
- "@pionjs/pion": "^2.0.0",
70
- "@polymer/iron-icons": "^3.0.0",
71
- "@polymer/paper-button": "^3.0.0",
72
- "@polymer/paper-icon-button": "^3.0.0",
73
- "@polymer/paper-input": "^3.2.0",
74
- "@polymer/polymer": "^3.4.0",
90
+ "@neovici/cosmoz-tree": "^3.6.1",
91
+ "@neovici/cosmoz-utils": "^6.8.1",
92
+ "@pionjs/pion": "^2.7.1",
75
93
  "lit-html": "^2.0.0 || ^3.0.0"
76
94
  },
77
95
  "devDependencies": {
78
96
  "@commitlint/cli": "^18.0.0",
79
97
  "@commitlint/config-conventional": "^18.0.0",
98
+ "@eslint/eslintrc": "^3.3.0",
99
+ "@eslint/js": "^9.21.0",
100
+ "@neovici/cfg": "^2.1.0",
80
101
  "@open-wc/testing": "^4.0.0",
81
102
  "@polymer/iron-ajax": "^3.0.0",
82
103
  "@polymer/iron-component-page": "^4.0.0",
@@ -85,8 +106,27 @@
85
106
  "@polymer/test-fixture": "^4.0.2",
86
107
  "@semantic-release/changelog": "^6.0.0",
87
108
  "@semantic-release/git": "^10.0.0",
109
+ "@storybook/addon-essentials": "^8.6.4",
110
+ "@storybook/addon-links": "^8.6.4",
111
+ "@storybook/blocks": "^8.6.4",
112
+ "@storybook/builder-vite": "^8.6.4",
113
+ "@storybook/storybook-deployer": "^2.8.16",
114
+ "@storybook/web-components": "^8.6.4",
115
+ "@storybook/web-components-vite": "^8.6.4",
116
+ "@types/mocha": "^10.0.10",
117
+ "@types/node": "^22.13.10",
118
+ "@typescript-eslint/eslint-plugin": "^8.26.0",
119
+ "@typescript-eslint/parser": "^8.26.1",
120
+ "@web/dev-server-esbuild": "^1.0.4",
88
121
  "@webcomponents/webcomponentsjs": "^2.0.0",
122
+ "eslint-config-prettier": "^10.1.1",
123
+ "eslint-plugin-html": "^8.1.2",
124
+ "eslint-plugin-import": "^2.31.0",
125
+ "eslint-plugin-mocha": "^10.5.0",
126
+ "globals": "^16.0.0",
89
127
  "husky": "^8.0.0",
90
- "semantic-release": "^22.0.0"
128
+ "lit": "^3.2.1",
129
+ "semantic-release": "^22.0.0",
130
+ "typescript": "^5.8.2"
91
131
  }
92
132
  }