@phoenix-wing/code-core 0.6.3 → 0.6.5

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.
@@ -0,0 +1,100 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ export const PNW_NAVIGATION_TREE_ICON_KEYS = [
3
+ "catalog",
4
+ "folder",
5
+ "folder-open",
6
+ "file",
7
+ "info",
8
+ "settings",
9
+ "search",
10
+ "warning",
11
+ "error",
12
+ ];
13
+ function pnwNavigationTreeVisibleSiblings(nodes) {
14
+ return nodes.filter((node) => node.hidden !== true);
15
+ }
16
+ function pnwAssertNavigationTreeNodeIds(nodes, seenIds) {
17
+ for (const node of nodes) {
18
+ if (!node.id.trim()) {
19
+ throw new TypeError("PnwNavigationTreeNode.id 不能为空");
20
+ }
21
+ if (seenIds.has(node.id)) {
22
+ throw new TypeError(`PnwNavigationTreeNode.id 必须唯一:${node.id}`);
23
+ }
24
+ seenIds.add(node.id);
25
+ pnwAssertNavigationTreeNodeIds(node.children ?? [], seenIds);
26
+ }
27
+ }
28
+ export function pnwProjectNavigationTreeRows(model) {
29
+ pnwAssertNavigationTreeNodeIds(model.nodes, new Set());
30
+ const expandedIds = new Set(model.expandedNodeIds ?? []);
31
+ const rows = [];
32
+ const visit = (nodes, level, parentId) => {
33
+ const siblings = pnwNavigationTreeVisibleSiblings(nodes);
34
+ siblings.forEach((node, index) => {
35
+ const children = pnwNavigationTreeVisibleSiblings(node.children ?? []);
36
+ const hasChildren = children.length > 0;
37
+ const expanded = hasChildren && expandedIds.has(node.id);
38
+ rows.push({
39
+ node,
40
+ parentId,
41
+ level,
42
+ positionInSet: index + 1,
43
+ setSize: siblings.length,
44
+ hasChildren,
45
+ expanded,
46
+ selected: node.id === model.selectedNodeId,
47
+ });
48
+ if (expanded) {
49
+ visit(children, level + 1, node.id);
50
+ }
51
+ });
52
+ };
53
+ visit(model.nodes, 1);
54
+ return rows;
55
+ }
56
+ export function pnwFindNavigationTreeRow(rows, nodeId) {
57
+ if (!nodeId)
58
+ return undefined;
59
+ return rows.find((row) => row.node.id === nodeId);
60
+ }
61
+ export function pnwNavigationTreeInitialFocusId(rows, model) {
62
+ const preferredIds = [model.focusedNodeId, model.selectedNodeId];
63
+ for (const nodeId of preferredIds) {
64
+ const row = pnwFindNavigationTreeRow(rows, nodeId);
65
+ if (row && row.node.disabled !== true)
66
+ return row.node.id;
67
+ }
68
+ return rows.find((row) => row.node.disabled !== true)?.node.id;
69
+ }
70
+ export function pnwNavigationTreeMoveFocus(rows, currentNodeId, direction) {
71
+ const enabledRows = rows.filter((row) => row.node.disabled !== true);
72
+ if (!enabledRows.length)
73
+ return undefined;
74
+ if (direction === "first")
75
+ return enabledRows[0]?.node.id;
76
+ if (direction === "last")
77
+ return enabledRows.at(-1)?.node.id;
78
+ const currentIndex = enabledRows.findIndex((row) => row.node.id === currentNodeId);
79
+ if (currentIndex < 0) {
80
+ return direction === "previous" ? enabledRows.at(-1)?.node.id : enabledRows[0]?.node.id;
81
+ }
82
+ const delta = direction === "next" ? 1 : -1;
83
+ const nextIndex = Math.min(enabledRows.length - 1, Math.max(0, currentIndex + delta));
84
+ return enabledRows[nextIndex]?.node.id;
85
+ }
86
+ export function pnwNavigationTreeChildFocusId(rows, nodeId) {
87
+ const rowIndex = rows.findIndex((row) => row.node.id === nodeId);
88
+ if (rowIndex < 0)
89
+ return undefined;
90
+ const row = rows[rowIndex];
91
+ return rows
92
+ .slice(rowIndex + 1)
93
+ .find((candidate) => candidate.parentId === row?.node.id && candidate.node.disabled !== true)
94
+ ?.node.id;
95
+ }
96
+ export function pnwNavigationTreeParentFocusId(rows, nodeId) {
97
+ const parentId = pnwFindNavigationTreeRow(rows, nodeId)?.parentId;
98
+ return pnwFindNavigationTreeRow(rows, parentId)?.node.id;
99
+ }
100
+ //# sourceMappingURL=PnwNavigationTreeModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PnwNavigationTreeModel.js","sourceRoot":"","sources":["../../../src/ui/model/PnwNavigationTreeModel.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  export * from "./PnwCodeReorderMembersPanelState.js";
2
2
  export * from "./PnwCodeUuidResultsState.js";
3
3
  export * from "./PnwCodeRenameResultsState.js";
4
+ export * from "./model/PnwNavigationTreeModel.js";
4
5
  //# sourceMappingURL=model.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/ui/model.ts"],"names":[],"mappings":"AAEA,cAAc,sCAAsC,CAAC;AACrD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC"}
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/ui/model.ts"],"names":[],"mappings":"AAEA,cAAc,sCAAsC,CAAC;AACrD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mCAAmC,CAAC"}
package/dist/ui/model.js CHANGED
@@ -2,4 +2,5 @@
2
2
  export * from "./PnwCodeReorderMembersPanelState.js";
3
3
  export * from "./PnwCodeUuidResultsState.js";
4
4
  export * from "./PnwCodeRenameResultsState.js";
5
+ export * from "./model/PnwNavigationTreeModel.js";
5
6
  //# sourceMappingURL=model.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/ui/model.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC,cAAc,sCAAsC,CAAC;AACrD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC"}
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/ui/model.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC,cAAc,sCAAsC,CAAC;AACrD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mCAAmC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@phoenix-wing/code-core",
3
- "version": "0.6.3",
3
+ "version": "0.6.5",
4
4
  "description": "Phoenix Code 跨宿主纯 TypeScript 算法与契约",
5
5
  "type": "module",
6
6
  "sideEffects": false,