@pstdio/workbench 0.35.0 → 0.36.0
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.
- package/dist/extensions.d.ts +8 -7
- package/dist/extensions.js +374 -368
- package/dist/extensions.js.map +1 -1
- package/dist/file-renderer-view-DKu2l8bT.js +637 -0
- package/dist/file-renderer-view-DKu2l8bT.js.map +1 -0
- package/dist/{index-DDmpcM-n.d.ts → index-DSsmgN2a.d.ts} +54 -5
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1402 -1493
- package/dist/index.js.map +1 -1
- package/dist/{kanban-presentation-CX6Smht6.d.ts → kanban-presentation-BWhkLbw3.d.ts} +1 -1
- package/dist/navigation-tree-registry-CTidmvVs.js +91 -0
- package/dist/navigation-tree-registry-CTidmvVs.js.map +1 -0
- package/dist/{react-C8jwnIWT.js → react-BxrTklvM.js} +2807 -2640
- package/dist/react-BxrTklvM.js.map +1 -0
- package/dist/react.d.ts +3 -3
- package/dist/react.js +1 -1
- package/dist/storage.d.ts +1 -1
- package/dist/{workbench-renderers-BK6g8mG_.js → workbench-renderers-RPeMVtTc.js} +206 -101
- package/dist/workbench-renderers-RPeMVtTc.js.map +1 -0
- package/package.json +3 -3
- package/dist/file-renderer-view-CZhPOpNc.js +0 -628
- package/dist/file-renderer-view-CZhPOpNc.js.map +0 -1
- package/dist/react-C8jwnIWT.js.map +0 -1
- package/dist/workbench-renderers-BK6g8mG_.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { $n as AttributeDescriptor, Zn as KanbanRendererContribution, _r as ResourceContextAction, ar as BoardColumnConfig, hr as KanbanRendererRow, rr as AttributesSource } from "./index-DSsmgN2a.js";
|
|
2
2
|
import { ComponentType, ReactNode } from "react";
|
|
3
3
|
//#region src/react/renderers/kanban/kanban-presentation.d.ts
|
|
4
4
|
type ReactColumnIcon = ComponentType<{
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { yt as e } from "./workbench-renderers-RPeMVtTc.js";
|
|
2
|
+
//#region src/core/registries/navigation/navigation-tree-registry.ts
|
|
3
|
+
var t = "navigation.root", n = (e) => `${e.kind}:${e.extensionId}:${e.id}`, r = (e, t) => n(e) === n(t), i = (e) => (t, n) => {
|
|
4
|
+
let r = t.sourceExtensionId === e.extensionId;
|
|
5
|
+
if (r !== (n.sourceExtensionId === e.extensionId)) return r ? -1 : 1;
|
|
6
|
+
if (!r) {
|
|
7
|
+
let e = t.sourceExtensionId.localeCompare(n.sourceExtensionId);
|
|
8
|
+
if (e !== 0) return e;
|
|
9
|
+
}
|
|
10
|
+
return t.declarationIndex - n.declarationIndex || t.id.localeCompare(n.id);
|
|
11
|
+
}, a = (e, t) => e ? `${e}:${t}` : t, o = (e, t) => {
|
|
12
|
+
let n = e.findIndex((e) => e.id === t.id);
|
|
13
|
+
if (n < 0) {
|
|
14
|
+
e.push(t);
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
let r = e[n];
|
|
18
|
+
e[n] = {
|
|
19
|
+
...r,
|
|
20
|
+
nodes: [...r.nodes, ...t.nodes]
|
|
21
|
+
};
|
|
22
|
+
}, s = (s = {}) => {
|
|
23
|
+
let c = /* @__PURE__ */ new Map(), l = /* @__PURE__ */ new WeakMap(), u = /* @__PURE__ */ new Set(), d = () => {
|
|
24
|
+
for (let e of u) e();
|
|
25
|
+
}, f = (e, t) => [...c.values()].filter((n) => r(n.owner, e) && (n.slot ?? "content") === t).sort(i(e)), p = (e, t, n) => {
|
|
26
|
+
let r = {
|
|
27
|
+
...e,
|
|
28
|
+
id: a(t.idScope, e.id),
|
|
29
|
+
moveScope: n,
|
|
30
|
+
canHide: e.canHide ?? !0,
|
|
31
|
+
canReorder: e.canReorder ?? !0,
|
|
32
|
+
children: e.children?.map((e) => p(e, t, n))
|
|
33
|
+
};
|
|
34
|
+
return l.set(r, {
|
|
35
|
+
contribution: t,
|
|
36
|
+
node: e
|
|
37
|
+
}), r;
|
|
38
|
+
}, m = (e, r, i) => ({
|
|
39
|
+
...e,
|
|
40
|
+
id: r.sourceExtensionId !== i.extensionId && !e.label ? t : a(r.idScope, e.id),
|
|
41
|
+
moveScope: n(i),
|
|
42
|
+
canHide: e.canHide ?? !0,
|
|
43
|
+
canReorder: e.canReorder ?? !0,
|
|
44
|
+
nodes: e.nodes.map((e) => p(e, r, n(i)))
|
|
45
|
+
});
|
|
46
|
+
return {
|
|
47
|
+
registerContribution(t) {
|
|
48
|
+
if (c.has(t.id)) throw Error(`Navigation tree contribution already registered: ${t.id}`);
|
|
49
|
+
if (!t.viewId && !t.getSections) throw Error(`Navigation tree contribution must declare a viewId or getSections: ${t.id}`);
|
|
50
|
+
c.set(t.id, t);
|
|
51
|
+
let n = t.viewId ? s.subscribeViewRefresh?.(t.viewId, d) : void 0;
|
|
52
|
+
return d(), e(() => {
|
|
53
|
+
c.get(t.id) === t && (n?.dispose(), c.delete(t.id), d());
|
|
54
|
+
});
|
|
55
|
+
},
|
|
56
|
+
resolveOwner(e, t) {
|
|
57
|
+
return [...c.values()].find((n) => n.owner.kind === e && n.owner.id === t)?.owner;
|
|
58
|
+
},
|
|
59
|
+
async getSections(e, t = "content", n = {}) {
|
|
60
|
+
let r = [];
|
|
61
|
+
for (let i of f(e, t)) {
|
|
62
|
+
n.signal?.throwIfAborted();
|
|
63
|
+
let t = i.viewId ? await s.getViewSections?.(i.viewId, n) : await i.getSections?.(n);
|
|
64
|
+
n.signal?.throwIfAborted();
|
|
65
|
+
for (let n of t ?? []) o(r, m(n, i, e));
|
|
66
|
+
}
|
|
67
|
+
return r;
|
|
68
|
+
},
|
|
69
|
+
async getChildren(e, t = {}) {
|
|
70
|
+
t.signal?.throwIfAborted();
|
|
71
|
+
let r = l.get(e);
|
|
72
|
+
if (!r) return e.children ?? [];
|
|
73
|
+
let i = e.moveScope ?? n(r.contribution.owner), a = r.contribution.viewId ? await s.getViewChildren?.(r.contribution.viewId, r.node, t) : await r.contribution.getChildren?.(r.node, t);
|
|
74
|
+
return a ? a.map((e) => p(e, r.contribution, i)) : e.children ?? [];
|
|
75
|
+
},
|
|
76
|
+
getDefaultExpandedSectionIds(e) {
|
|
77
|
+
return [
|
|
78
|
+
"header",
|
|
79
|
+
"content",
|
|
80
|
+
"footer"
|
|
81
|
+
].flatMap((t) => f(e, t).flatMap((e) => (e.defaultExpandedSectionIds ?? (e.viewId ? s.getViewDefaultExpandedSectionIds?.(e.viewId) : void 0) ?? []).map((t) => a(e.idScope, t))));
|
|
82
|
+
},
|
|
83
|
+
onDidChange(t) {
|
|
84
|
+
return u.add(t), e(() => u.delete(t));
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
};
|
|
88
|
+
//#endregion
|
|
89
|
+
export { t as n, s as t };
|
|
90
|
+
|
|
91
|
+
//# sourceMappingURL=navigation-tree-registry-CTidmvVs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigation-tree-registry-CTidmvVs.js","names":["createDisposable","Disposable","TreeNode","TreeViewSection","ResourceRef","NavigationTreeSlot","NavigationTreeOwner","kind","id","extensionId","NavigationTreeContext","resource","signal","AbortSignal","NavigationTreeContribution","idScope","owner","sourceExtensionId","declarationIndex","slot","viewId","defaultExpandedSectionIds","getSections","context","Promise","getChildren","node","CreateNavigationTreeRegistryInput","subscribeViewRefresh","listener","getViewDefaultExpandedSectionIds","getViewSections","getViewChildren","NavigationTreeRegistry","registerContribution","contribution","resolveOwner","getDefaultExpandedSectionIds","onDidChange","navigationRootSectionId","ownerId","ownersEqual","left","right","contributionOrder","leftOwn","rightOwn","extensionOrder","localeCompare","scopedId","scope","mergeSection","sections","section","index","findIndex","candidate","push","current","nodes","createNavigationTreeRegistry","input","contributions","Map","nodeSources","WeakMap","listeners","Set","emit","matching","values","filter","sort","projectNode","moveScope","projected","canHide","canReorder","children","map","child","set","projectSection","label","has","Error","refreshSubscription","undefined","get","dispose","delete","find","throwIfAborted","sourceSections","source","const","flatMap","add","createDisposable","navigationRootSectionId","ownerId","owner","ownersEqual","left","right","contributionOrder","leftOwn","extensionOrder","scopedId","scope","id","mergeSection","index","sections","candidate","section","current","createNavigationTreeRegistry","contributions","nodeSources","listeners","emit","listener","matching","contribution","slot","projectNode","projected","node","child","moveScope","projectSection","refreshSubscription","input","kind","sourceSections","context","source","children"],"sources":["../src/core/registries/navigation/navigation-tree-registry.ts"],"sourcesContent":["import { createDisposable, type Disposable } from \"../../shared/disposable\";\nimport type { TreeNode, TreeViewSection } from \"../renderers/tree-renderer-registry\";\nimport type { ResourceRef } from \"../resources/resource-registry\";\n\nexport type NavigationTreeSlot = \"header\" | \"content\" | \"footer\";\n\nexport interface NavigationTreeOwner {\n kind: \"mode\" | \"page\";\n id: string;\n extensionId: string;\n}\n\nexport interface NavigationTreeContext {\n resource?: ResourceRef;\n signal?: AbortSignal;\n}\n\nexport interface NavigationTreeContribution {\n id: string;\n /** Prefix projected section and node ids when they come from an independent tree renderer. */\n idScope?: string;\n owner: NavigationTreeOwner;\n sourceExtensionId: string;\n declarationIndex: number;\n slot?: NavigationTreeSlot;\n viewId?: string;\n defaultExpandedSectionIds?: string[];\n getSections?(context: NavigationTreeContext): Promise<TreeViewSection[]> | TreeViewSection[];\n getChildren?(node: TreeNode, context: NavigationTreeContext): Promise<TreeNode[]> | TreeNode[];\n}\n\nexport interface CreateNavigationTreeRegistryInput {\n subscribeViewRefresh?(viewId: string, listener: () => void): Disposable;\n getViewDefaultExpandedSectionIds?(viewId: string): readonly string[] | undefined;\n getViewSections?(viewId: string, context: NavigationTreeContext): Promise<TreeViewSection[]> | TreeViewSection[];\n getViewChildren?(viewId: string, node: TreeNode, context: NavigationTreeContext): Promise<TreeNode[]> | TreeNode[];\n}\n\nexport interface NavigationTreeRegistry {\n registerContribution(contribution: NavigationTreeContribution): Disposable;\n resolveOwner(kind: NavigationTreeOwner[\"kind\"], id: string): NavigationTreeOwner | undefined;\n getSections(\n owner: NavigationTreeOwner,\n slot?: NavigationTreeSlot,\n context?: NavigationTreeContext,\n ): Promise<TreeViewSection[]>;\n getChildren(node: TreeNode, context?: NavigationTreeContext): Promise<TreeNode[]>;\n getDefaultExpandedSectionIds(owner: NavigationTreeOwner): string[];\n onDidChange(listener: () => void): Disposable;\n}\n\n// The owner's top-level section. Extensions add ungrouped entries here and use a labeled section for a named group.\nexport const navigationRootSectionId = \"navigation.root\";\n\nconst ownerId = (owner: NavigationTreeOwner) => `${owner.kind}:${owner.extensionId}:${owner.id}`;\n\nconst ownersEqual = (left: NavigationTreeOwner, right: NavigationTreeOwner) => ownerId(left) === ownerId(right);\n\nconst contributionOrder =\n (owner: NavigationTreeOwner) => (left: NavigationTreeContribution, right: NavigationTreeContribution) => {\n const leftOwn = left.sourceExtensionId === owner.extensionId;\n const rightOwn = right.sourceExtensionId === owner.extensionId;\n if (leftOwn !== rightOwn) return leftOwn ? -1 : 1;\n if (!leftOwn) {\n const extensionOrder = left.sourceExtensionId.localeCompare(right.sourceExtensionId);\n if (extensionOrder !== 0) return extensionOrder;\n }\n return left.declarationIndex - right.declarationIndex || left.id.localeCompare(right.id);\n };\n\nconst scopedId = (scope: string | undefined, id: string) => (scope ? `${scope}:${id}` : id);\n\nconst mergeSection = (sections: TreeViewSection[], section: TreeViewSection) => {\n const index = sections.findIndex((candidate) => candidate.id === section.id);\n if (index < 0) {\n sections.push(section);\n return;\n }\n const current = sections[index]!;\n sections[index] = { ...current, nodes: [...current.nodes, ...section.nodes] };\n};\n\nexport const createNavigationTreeRegistry = (input: CreateNavigationTreeRegistryInput = {}): NavigationTreeRegistry => {\n const contributions = new Map<string, NavigationTreeContribution>();\n const nodeSources = new WeakMap<TreeNode, { contribution: NavigationTreeContribution; node: TreeNode }>();\n const listeners = new Set<() => void>();\n const emit = () => {\n for (const listener of listeners) listener();\n };\n\n const matching = (owner: NavigationTreeOwner, slot: NavigationTreeSlot) =>\n [...contributions.values()]\n .filter((contribution) => ownersEqual(contribution.owner, owner) && (contribution.slot ?? \"content\") === slot)\n .sort(contributionOrder(owner));\n\n const projectNode = (node: TreeNode, contribution: NavigationTreeContribution, moveScope: string): TreeNode => {\n const projected: TreeNode = {\n ...node,\n id: scopedId(contribution.idScope, node.id),\n moveScope,\n canHide: node.canHide ?? true,\n canReorder: node.canReorder ?? true,\n children: node.children?.map((child) => projectNode(child, contribution, moveScope)),\n };\n nodeSources.set(projected, { contribution, node });\n return projected;\n };\n\n const projectSection = (\n section: TreeViewSection,\n contribution: NavigationTreeContribution,\n owner: NavigationTreeOwner,\n ): TreeViewSection => ({\n ...section,\n id:\n contribution.sourceExtensionId !== owner.extensionId && !section.label\n ? navigationRootSectionId\n : scopedId(contribution.idScope, section.id),\n moveScope: ownerId(owner),\n canHide: section.canHide ?? true,\n canReorder: section.canReorder ?? true,\n nodes: section.nodes.map((node) => projectNode(node, contribution, ownerId(owner))),\n });\n\n return {\n registerContribution(contribution) {\n if (contributions.has(contribution.id)) {\n throw new Error(`Navigation tree contribution already registered: ${contribution.id}`);\n }\n if (!contribution.viewId && !contribution.getSections) {\n throw new Error(`Navigation tree contribution must declare a viewId or getSections: ${contribution.id}`);\n }\n contributions.set(contribution.id, contribution);\n const refreshSubscription = contribution.viewId\n ? input.subscribeViewRefresh?.(contribution.viewId, emit)\n : undefined;\n emit();\n return createDisposable(() => {\n if (contributions.get(contribution.id) !== contribution) return;\n refreshSubscription?.dispose();\n contributions.delete(contribution.id);\n emit();\n });\n },\n\n resolveOwner(kind, id) {\n return [...contributions.values()].find(\n (contribution) => contribution.owner.kind === kind && contribution.owner.id === id,\n )?.owner;\n },\n\n async getSections(owner, slot = \"content\", context = {}) {\n const sections: TreeViewSection[] = [];\n for (const contribution of matching(owner, slot)) {\n context.signal?.throwIfAborted();\n const sourceSections = contribution.viewId\n ? await input.getViewSections?.(contribution.viewId, context)\n : await contribution.getSections?.(context);\n context.signal?.throwIfAborted();\n for (const section of sourceSections ?? []) {\n mergeSection(sections, projectSection(section, contribution, owner));\n }\n }\n return sections;\n },\n\n async getChildren(node, context = {}) {\n context.signal?.throwIfAborted();\n const source = nodeSources.get(node);\n if (!source) return node.children ?? [];\n const moveScope = node.moveScope ?? ownerId(source.contribution.owner);\n const children = source.contribution.viewId\n ? await input.getViewChildren?.(source.contribution.viewId, source.node, context)\n : await source.contribution.getChildren?.(source.node, context);\n if (!children) return node.children ?? [];\n return children.map((child) => projectNode(child, source.contribution, moveScope));\n },\n\n getDefaultExpandedSectionIds(owner) {\n return ([\"header\", \"content\", \"footer\"] as const).flatMap((slot) =>\n matching(owner, slot).flatMap((contribution) =>\n (\n contribution.defaultExpandedSectionIds ??\n (contribution.viewId ? input.getViewDefaultExpandedSectionIds?.(contribution.viewId) : undefined) ??\n []\n ).map((id) => scopedId(contribution.idScope, id)),\n ),\n );\n },\n\n onDidChange(listener) {\n listeners.add(listener);\n return createDisposable(() => listeners.delete(listener));\n },\n };\n};\n"],"mappings":"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"}
|