@signalsafe/tree-spec-editor 0.2.1 → 0.2.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.
- package/LICENSE +21 -0
- package/README.md +186 -59
- package/dist/index.d.ts +10 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/lib/PanelHeaderCollapseCarets.d.ts +1 -1
- package/dist/lib/PanelHeaderCollapseCarets.d.ts.map +1 -1
- package/dist/lib/buildDefaultToolbarSpec.d.ts +3 -79
- package/dist/lib/buildDefaultToolbarSpec.d.ts.map +1 -1
- package/dist/lib/buildDefaultToolbarSpec.js +9 -155
- package/dist/lib/panelNodeLink.d.ts +13 -0
- package/dist/lib/panelNodeLink.d.ts.map +1 -0
- package/dist/lib/panelNodeLink.js +12 -0
- package/dist/lib/selectionStyles.d.ts +9 -0
- package/dist/lib/selectionStyles.d.ts.map +1 -0
- package/dist/lib/selectionStyles.js +8 -0
- package/dist/lib/toolbar/defaultToolbarTypes.d.ts +89 -0
- package/dist/lib/toolbar/defaultToolbarTypes.d.ts.map +1 -0
- package/dist/lib/toolbar/defaultToolbarTypes.js +1 -0
- package/dist/lib/toolbar/toolbarSectionBuilders.d.ts +10 -0
- package/dist/lib/toolbar/toolbarSectionBuilders.d.ts.map +1 -0
- package/dist/lib/toolbar/toolbarSectionBuilders.js +153 -0
- package/dist/modals/AuditLogModal.d.ts +1 -1
- package/dist/modals/AuditLogModal.d.ts.map +1 -1
- package/dist/modals/AuditLogModal.js +1 -1
- package/dist/modals/DraftHistoryModal.d.ts +1 -1
- package/dist/modals/DraftHistoryModal.d.ts.map +1 -1
- package/dist/modals/DraftHistoryModal.js +1 -1
- package/dist/modals/PublishReviewModal.d.ts +1 -1
- package/dist/modals/PublishReviewModal.d.ts.map +1 -1
- package/dist/panels/AdvancedJsonPanel.d.ts +1 -1
- package/dist/panels/AdvancedJsonPanel.d.ts.map +1 -1
- package/dist/panels/AppearancePanel.d.ts +26 -0
- package/dist/panels/AppearancePanel.d.ts.map +1 -0
- package/dist/panels/AppearancePanel.js +76 -0
- package/dist/panels/ChoiceEdgeAppearanceFields.d.ts +10 -0
- package/dist/panels/ChoiceEdgeAppearanceFields.d.ts.map +1 -0
- package/dist/panels/ChoiceEdgeAppearanceFields.js +13 -0
- package/dist/panels/ChoiceTemplatesPanel.d.ts +27 -0
- package/dist/panels/ChoiceTemplatesPanel.d.ts.map +1 -0
- package/dist/panels/ChoiceTemplatesPanel.js +9 -0
- package/dist/panels/GraphEditorInfoPanel.d.ts +5 -2
- package/dist/panels/GraphEditorInfoPanel.d.ts.map +1 -1
- package/dist/panels/GraphEditorInfoPanel.js +6 -6
- package/dist/panels/InspectorPanel.d.ts +3 -78
- package/dist/panels/InspectorPanel.d.ts.map +1 -1
- package/dist/panels/InspectorPanel.js +20 -60
- package/dist/panels/IssuesPanel.d.ts +6 -2
- package/dist/panels/IssuesPanel.d.ts.map +1 -1
- package/dist/panels/IssuesPanel.js +15 -3
- package/dist/panels/NodesPanel.d.ts +3 -1
- package/dist/panels/NodesPanel.d.ts.map +1 -1
- package/dist/panels/NodesPanel.js +12 -6
- package/dist/panels/SelectedEdgePanel.d.ts +10 -3
- package/dist/panels/SelectedEdgePanel.d.ts.map +1 -1
- package/dist/panels/SelectedEdgePanel.js +5 -6
- package/dist/panels/ToolbarPanel.d.ts +1 -1
- package/dist/panels/ToolbarPanel.d.ts.map +1 -1
- package/dist/panels/ToolbarPanel.js +2 -4
- package/dist/panels/inspector/ChoiceEditorCard.d.ts +28 -0
- package/dist/panels/inspector/ChoiceEditorCard.d.ts.map +1 -0
- package/dist/panels/inspector/ChoiceEditorCard.js +36 -0
- package/dist/panels/inspector/ChoiceEditorList.d.ts +25 -0
- package/dist/panels/inspector/ChoiceEditorList.d.ts.map +1 -0
- package/dist/panels/inspector/ChoiceEditorList.js +10 -0
- package/dist/panels/inspector/NodeTypeField.d.ts +8 -0
- package/dist/panels/inspector/NodeTypeField.d.ts.map +1 -0
- package/dist/panels/inspector/NodeTypeField.js +12 -0
- package/dist/panels/inspector/RequiredNodeCard.d.ts +14 -0
- package/dist/panels/inspector/RequiredNodeCard.d.ts.map +1 -0
- package/dist/panels/inspector/RequiredNodeCard.js +16 -0
- package/dist/panels/inspector/choiceActionIconProps.d.ts +12 -0
- package/dist/panels/inspector/choiceActionIconProps.d.ts.map +1 -0
- package/dist/panels/inspector/choiceActionIconProps.js +26 -0
- package/dist/panels/inspector/types.d.ts +77 -0
- package/dist/panels/inspector/types.d.ts.map +1 -0
- package/dist/panels/inspector/types.js +11 -0
- package/package.json +83 -65
|
@@ -1,167 +1,21 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { TOOLBAR_ITEM_KIND } from '../panels/ToolbarPanel.js';
|
|
1
|
+
import { appendAddDropdown, appendBackSlot, appendCapabilityButtons, appendLayoutButtons, appendSaveAndPublish, appendTemplatesDropdown, appendUndoRedo, } from './toolbar/toolbarSectionBuilders.js';
|
|
3
2
|
export { AUTOSAVE_STATUS } from '@signalsafe/tree-spec-editor-core';
|
|
4
|
-
function appendBackSlot(items, backSlot) {
|
|
5
|
-
items.push({
|
|
6
|
-
kind: TOOLBAR_ITEM_KIND.CUSTOM,
|
|
7
|
-
id: backSlot.id ?? 'back',
|
|
8
|
-
render: backSlot.render,
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
function appendAddDropdown(items, nodeTypes, actions, labels, isPublished) {
|
|
12
|
-
const addEntries = nodeTypes.map((entry, index) => {
|
|
13
|
-
if (entry.divider) {
|
|
14
|
-
return { id: entry.id ?? `divider-${index}`, label: '', divider: true };
|
|
15
|
-
}
|
|
16
|
-
const type = entry.type ?? 'prompt';
|
|
17
|
-
return {
|
|
18
|
-
id: entry.id ?? `add-${type}`,
|
|
19
|
-
label: entry.label ?? type,
|
|
20
|
-
onClick: () => actions.addNodeOfType(type, entry.patch),
|
|
21
|
-
};
|
|
22
|
-
});
|
|
23
|
-
if (addEntries.length === 0)
|
|
24
|
-
return;
|
|
25
|
-
items.push({
|
|
26
|
-
kind: TOOLBAR_ITEM_KIND.DROPDOWN,
|
|
27
|
-
id: 'add',
|
|
28
|
-
label: labels.add ?? '+ Add',
|
|
29
|
-
disabled: isPublished,
|
|
30
|
-
entries: addEntries,
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
function appendTemplatesDropdown(items, templates, actions, labels, isPublished) {
|
|
34
|
-
if (templates.length === 0)
|
|
35
|
-
return;
|
|
36
|
-
items.push({
|
|
37
|
-
kind: TOOLBAR_ITEM_KIND.DROPDOWN,
|
|
38
|
-
id: 'templates',
|
|
39
|
-
label: labels.templates ?? 'Templates',
|
|
40
|
-
disabled: isPublished,
|
|
41
|
-
entries: templates.map((t) => ({
|
|
42
|
-
id: t.id,
|
|
43
|
-
label: t.label,
|
|
44
|
-
onClick: () => actions.insertTemplate(t.spec),
|
|
45
|
-
})),
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
function appendLayoutButtons(items, state, actions, labels) {
|
|
49
|
-
const { isPublished, hasTree } = state;
|
|
50
|
-
items.push({
|
|
51
|
-
kind: TOOLBAR_ITEM_KIND.BUTTON,
|
|
52
|
-
id: 'reset-view',
|
|
53
|
-
label: labels.resetView ?? 'Reset view',
|
|
54
|
-
disabled: !hasTree,
|
|
55
|
-
onClick: () => actions.triggerResetView(),
|
|
56
|
-
}, {
|
|
57
|
-
kind: TOOLBAR_ITEM_KIND.BUTTON,
|
|
58
|
-
id: 'auto-layout',
|
|
59
|
-
label: labels.autoLayout ?? 'Auto layout',
|
|
60
|
-
disabled: !hasTree || isPublished,
|
|
61
|
-
onClick: () => actions.autoLayout(),
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
function appendCapabilityButtons(items, capabilities, state, actions, labels) {
|
|
65
|
-
const { isPublished, creatingSnapshot, cloning, hasTree } = state;
|
|
66
|
-
if (capabilities.canValidate) {
|
|
67
|
-
items.push({
|
|
68
|
-
kind: TOOLBAR_ITEM_KIND.BUTTON,
|
|
69
|
-
id: 'validate',
|
|
70
|
-
label: labels.validate ?? 'Validate',
|
|
71
|
-
disabled: !hasTree,
|
|
72
|
-
onClick: () => void actions.validate(),
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
if (capabilities.canListSnapshots) {
|
|
76
|
-
items.push({
|
|
77
|
-
kind: TOOLBAR_ITEM_KIND.BUTTON,
|
|
78
|
-
id: 'draft-history',
|
|
79
|
-
label: labels.history ?? 'Draft history',
|
|
80
|
-
onClick: () => actions.setShowDraftHistory(true),
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
if (capabilities.canListAudit) {
|
|
84
|
-
items.push({
|
|
85
|
-
kind: TOOLBAR_ITEM_KIND.BUTTON,
|
|
86
|
-
id: 'audit',
|
|
87
|
-
label: labels.audit ?? 'Audit log',
|
|
88
|
-
onClick: () => actions.setShowAudit(true),
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
if (capabilities.canCreateSnapshot) {
|
|
92
|
-
items.push({
|
|
93
|
-
kind: TOOLBAR_ITEM_KIND.BUTTON,
|
|
94
|
-
id: 'snapshot',
|
|
95
|
-
label: creatingSnapshot ? 'Creating…' : (labels.snapshot ?? 'Snapshot'),
|
|
96
|
-
disabled: isPublished || creatingSnapshot || !hasTree,
|
|
97
|
-
onClick: () => void actions.createSnapshot(),
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
if (capabilities.canCloneToDraft) {
|
|
101
|
-
items.push({
|
|
102
|
-
kind: TOOLBAR_ITEM_KIND.BUTTON,
|
|
103
|
-
id: 'clone-to-draft',
|
|
104
|
-
label: cloning ? 'Cloning…' : (labels.clone ?? 'Clone to draft'),
|
|
105
|
-
disabled: cloning,
|
|
106
|
-
onClick: () => void actions.cloneToDraft(),
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
function appendSaveAndPublish(items, capabilities, state, actions, labels, preview) {
|
|
111
|
-
const { isPublished, saving, publishing, canPublish, hasTree } = state;
|
|
112
|
-
items.push({
|
|
113
|
-
kind: TOOLBAR_ITEM_KIND.BUTTON,
|
|
114
|
-
id: 'save-draft',
|
|
115
|
-
label: saving ? 'Saving…' : (labels.save ?? 'Save draft'),
|
|
116
|
-
disabled: isPublished || saving || !hasTree,
|
|
117
|
-
onClick: () => void actions.saveDraft(),
|
|
118
|
-
});
|
|
119
|
-
if (capabilities.canPublish) {
|
|
120
|
-
items.push({
|
|
121
|
-
kind: TOOLBAR_ITEM_KIND.BUTTON,
|
|
122
|
-
id: 'publish',
|
|
123
|
-
label: publishing ? 'Publishing…' : (labels.publish ?? 'Publish'),
|
|
124
|
-
disabled: isPublished || publishing || !canPublish,
|
|
125
|
-
onClick: () => actions.setShowPublishModal(true),
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
if (preview) {
|
|
129
|
-
items.push({
|
|
130
|
-
kind: TOOLBAR_ITEM_KIND.BUTTON,
|
|
131
|
-
id: 'preview',
|
|
132
|
-
label: labels.preview ?? 'Preview',
|
|
133
|
-
disabled: preview.disabled ?? false,
|
|
134
|
-
onClick: preview.onClick,
|
|
135
|
-
});
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
function appendStatusFooter(items, state, labels, extraItems) {
|
|
139
|
-
const { isPublished, autosaveStatus } = state;
|
|
140
|
-
items.push({
|
|
141
|
-
kind: TOOLBAR_ITEM_KIND.BADGE,
|
|
142
|
-
id: 'status',
|
|
143
|
-
label: isPublished
|
|
144
|
-
? (labels.publishedBadge ?? 'Published')
|
|
145
|
-
: (labels.draftBadge ?? 'Draft'),
|
|
146
|
-
variant: isPublished ? 'success' : 'secondary',
|
|
147
|
-
}, {
|
|
148
|
-
kind: TOOLBAR_ITEM_KIND.TEXT,
|
|
149
|
-
id: 'autosave',
|
|
150
|
-
content: getAutosaveStatusLabel(autosaveStatus),
|
|
151
|
-
}, ...extraItems);
|
|
152
|
-
}
|
|
153
3
|
/** Build the default TreeSpec editor toolbar item list from state, actions, and capability flags. */
|
|
154
4
|
export function buildDefaultToolbarSpec(options) {
|
|
155
|
-
const { state, actions, capabilities = {}, nodeTypes = [], templates = [],
|
|
5
|
+
const { state, actions, capabilities = {}, nodeTypes = [], templates = [], preview, labels = {}, extraItems = [], showUndoRedo = true, } = options;
|
|
156
6
|
const items = [];
|
|
157
|
-
|
|
158
|
-
|
|
7
|
+
const toolbarBackSlot = options.toolbarBackSlot;
|
|
8
|
+
if (toolbarBackSlot) {
|
|
9
|
+
appendBackSlot(items, toolbarBackSlot);
|
|
159
10
|
}
|
|
160
11
|
appendAddDropdown(items, nodeTypes, actions, labels, state.isPublished);
|
|
161
12
|
appendTemplatesDropdown(items, templates, actions, labels, state.isPublished);
|
|
162
13
|
appendLayoutButtons(items, state, actions, labels);
|
|
14
|
+
if (showUndoRedo) {
|
|
15
|
+
appendUndoRedo(items, state, actions, labels);
|
|
16
|
+
}
|
|
163
17
|
appendCapabilityButtons(items, capabilities, state, actions, labels);
|
|
164
18
|
appendSaveAndPublish(items, capabilities, state, actions, labels, preview);
|
|
165
|
-
|
|
19
|
+
items.push(...extraItems);
|
|
166
20
|
return items;
|
|
167
21
|
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { EditorTransition } from '@signalsafe/tree-spec-editor-core';
|
|
3
|
+
export interface PanelNodeLinkContext {
|
|
4
|
+
onNodeSelect?: (nodeId: string) => void;
|
|
5
|
+
}
|
|
6
|
+
/** Clickable node id for panel breadcrumb lines; plain text when `onNodeSelect` is unset. */
|
|
7
|
+
export declare function PanelNodeLink({ nodeId, onNodeSelect, }: Readonly<{
|
|
8
|
+
nodeId: string;
|
|
9
|
+
onNodeSelect?: (nodeId: string) => void;
|
|
10
|
+
}>): ReactNode;
|
|
11
|
+
/** Default `from · choice → to` line for selected transitions. */
|
|
12
|
+
export declare function renderDefaultEdgeBreadcrumb(edge: EditorTransition, { onNodeSelect }: PanelNodeLinkContext): ReactNode;
|
|
13
|
+
//# sourceMappingURL=panelNodeLink.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"panelNodeLink.d.ts","sourceRoot":"","sources":["../../src/lib/panelNodeLink.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAE1E,MAAM,WAAW,oBAAoB;IACjC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C;AAED,6FAA6F;AAC7F,wBAAgB,aAAa,CAAC,EAC1B,MAAM,EACN,YAAY,GACf,EAAE,QAAQ,CAAC;IACR,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C,CAAC,GAAG,SAAS,CAcb;AAED,kEAAkE;AAClE,wBAAgB,2BAA2B,CACvC,IAAI,EAAE,gBAAgB,EACtB,EAAE,YAAY,EAAE,EAAE,oBAAoB,GACvC,SAAS,CAUX"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/** Clickable node id for panel breadcrumb lines; plain text when `onNodeSelect` is unset. */
|
|
3
|
+
export function PanelNodeLink({ nodeId, onNodeSelect, }) {
|
|
4
|
+
if (!onNodeSelect) {
|
|
5
|
+
return nodeId;
|
|
6
|
+
}
|
|
7
|
+
return (_jsx("button", { type: "button", className: "btn btn-link p-0 align-baseline font-size-12", onClick: () => onNodeSelect(nodeId), children: nodeId }));
|
|
8
|
+
}
|
|
9
|
+
/** Default `from · choice → to` line for selected transitions. */
|
|
10
|
+
export function renderDefaultEdgeBreadcrumb(edge, { onNodeSelect }) {
|
|
11
|
+
return (_jsxs(_Fragment, { children: [_jsx(PanelNodeLink, { nodeId: edge.fromNodeId, onNodeSelect: onNodeSelect }), ' · ', edge.fromChoiceId, ' → ', _jsx(PanelNodeLink, { nodeId: edge.toNodeId, onNodeSelect: onNodeSelect })] }));
|
|
12
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** Bootstrap list-group selection highlight (subtle primary background). */
|
|
2
|
+
export declare const LIST_SELECTION_CLASS = "list-group-item-primary";
|
|
3
|
+
/** Dark readable text on {@link LIST_SELECTION_CLASS} rows (sidebar Nodes / Issues). */
|
|
4
|
+
export declare const LIST_SELECTION_TEXT_CLASS = "graph-editor-sidebar-selected";
|
|
5
|
+
/** Canvas / card selection highlight matching list selection. */
|
|
6
|
+
export declare const CANVAS_SELECTION_CLASS = "bg-primary-subtle";
|
|
7
|
+
/** Dark readable text on {@link CANVAS_SELECTION_CLASS} graph nodes. */
|
|
8
|
+
export declare const CANVAS_SELECTION_TEXT_CLASS = "graph-editor-canvas-selected";
|
|
9
|
+
//# sourceMappingURL=selectionStyles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectionStyles.d.ts","sourceRoot":"","sources":["../../src/lib/selectionStyles.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,eAAO,MAAM,oBAAoB,4BAA4B,CAAC;AAE9D,wFAAwF;AACxF,eAAO,MAAM,yBAAyB,kCAAkC,CAAC;AAEzE,iEAAiE;AACjE,eAAO,MAAM,sBAAsB,sBAAsB,CAAC;AAE1D,wEAAwE;AACxE,eAAO,MAAM,2BAA2B,iCAAiC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** Bootstrap list-group selection highlight (subtle primary background). */
|
|
2
|
+
export const LIST_SELECTION_CLASS = 'list-group-item-primary';
|
|
3
|
+
/** Dark readable text on {@link LIST_SELECTION_CLASS} rows (sidebar Nodes / Issues). */
|
|
4
|
+
export const LIST_SELECTION_TEXT_CLASS = 'graph-editor-sidebar-selected';
|
|
5
|
+
/** Canvas / card selection highlight matching list selection. */
|
|
6
|
+
export const CANVAS_SELECTION_CLASS = 'bg-primary-subtle';
|
|
7
|
+
/** Dark readable text on {@link CANVAS_SELECTION_CLASS} graph nodes. */
|
|
8
|
+
export const CANVAS_SELECTION_TEXT_CLASS = 'graph-editor-canvas-selected';
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import { type AutosaveStatus, type TreeTemplateSpec } from '@signalsafe/tree-spec-editor-core';
|
|
3
|
+
import type { ToolbarItem } from '../../panels/ToolbarPanel.js';
|
|
4
|
+
export { AUTOSAVE_STATUS } from '@signalsafe/tree-spec-editor-core';
|
|
5
|
+
export interface DefaultToolbarCapabilities {
|
|
6
|
+
canValidate?: boolean;
|
|
7
|
+
canListSnapshots?: boolean;
|
|
8
|
+
canListAudit?: boolean;
|
|
9
|
+
canCreateSnapshot?: boolean;
|
|
10
|
+
canCloneToDraft?: boolean;
|
|
11
|
+
canPublish?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export interface DefaultToolbarNodeType {
|
|
14
|
+
type?: string;
|
|
15
|
+
label?: string;
|
|
16
|
+
divider?: boolean;
|
|
17
|
+
id?: string;
|
|
18
|
+
patch?: Record<string, unknown>;
|
|
19
|
+
}
|
|
20
|
+
export interface DefaultToolbarTemplate {
|
|
21
|
+
id: string;
|
|
22
|
+
label: string;
|
|
23
|
+
spec: TreeTemplateSpec;
|
|
24
|
+
}
|
|
25
|
+
export interface DefaultToolbarLabels {
|
|
26
|
+
add?: string;
|
|
27
|
+
templates?: string;
|
|
28
|
+
validate?: string;
|
|
29
|
+
autoLayout?: string;
|
|
30
|
+
resetView?: string;
|
|
31
|
+
preview?: string;
|
|
32
|
+
save?: string;
|
|
33
|
+
publish?: string;
|
|
34
|
+
history?: string;
|
|
35
|
+
audit?: string;
|
|
36
|
+
snapshot?: string;
|
|
37
|
+
clone?: string;
|
|
38
|
+
undo?: string;
|
|
39
|
+
redo?: string;
|
|
40
|
+
}
|
|
41
|
+
export interface DefaultToolbarState {
|
|
42
|
+
isPublished: boolean;
|
|
43
|
+
saving: boolean;
|
|
44
|
+
publishing: boolean;
|
|
45
|
+
creatingSnapshot: boolean;
|
|
46
|
+
cloning: boolean;
|
|
47
|
+
canPublish: boolean;
|
|
48
|
+
hasTree: boolean;
|
|
49
|
+
autosaveStatus: AutosaveStatus;
|
|
50
|
+
canUndo?: boolean;
|
|
51
|
+
canRedo?: boolean;
|
|
52
|
+
}
|
|
53
|
+
export interface DefaultToolbarActions {
|
|
54
|
+
addNodeOfType: (type: string, patch?: Record<string, unknown>) => void;
|
|
55
|
+
insertTemplate: (spec: TreeTemplateSpec) => void;
|
|
56
|
+
triggerResetView: () => void;
|
|
57
|
+
autoLayout: () => void;
|
|
58
|
+
validate: () => void | Promise<void>;
|
|
59
|
+
saveDraft: () => void | Promise<void>;
|
|
60
|
+
setShowDraftHistory: (show: boolean) => void;
|
|
61
|
+
setShowAudit: (show: boolean) => void;
|
|
62
|
+
createSnapshot: () => void | Promise<void>;
|
|
63
|
+
cloneToDraft: () => void | Promise<void>;
|
|
64
|
+
setShowPublishModal: (show: boolean) => void;
|
|
65
|
+
undo?: () => void;
|
|
66
|
+
redo?: () => void;
|
|
67
|
+
}
|
|
68
|
+
export type DefaultToolbarBackSlot = {
|
|
69
|
+
id?: string;
|
|
70
|
+
render: () => ReactNode;
|
|
71
|
+
};
|
|
72
|
+
export interface BuildDefaultToolbarSpecOptions {
|
|
73
|
+
state: DefaultToolbarState;
|
|
74
|
+
actions: DefaultToolbarActions;
|
|
75
|
+
capabilities?: DefaultToolbarCapabilities;
|
|
76
|
+
nodeTypes?: DefaultToolbarNodeType[];
|
|
77
|
+
templates?: DefaultToolbarTemplate[];
|
|
78
|
+
/** Optional legacy toolbar back control when page breadcrumbs are not used. */
|
|
79
|
+
toolbarBackSlot?: DefaultToolbarBackSlot;
|
|
80
|
+
preview?: {
|
|
81
|
+
onClick: () => void;
|
|
82
|
+
disabled?: boolean;
|
|
83
|
+
};
|
|
84
|
+
labels?: DefaultToolbarLabels;
|
|
85
|
+
extraItems?: ToolbarItem[];
|
|
86
|
+
/** When false, omit Undo/Redo buttons even if `actions.undo` / `actions.redo` are set. Default true. */
|
|
87
|
+
showUndoRedo?: boolean;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=defaultToolbarTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaultToolbarTypes.d.ts","sourceRoot":"","sources":["../../../src/lib/toolbar/defaultToolbarTypes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { AUTOSAVE_STATUS } from '@signalsafe/tree-spec-editor-core';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type ToolbarItem } from '../../panels/ToolbarPanel.js';
|
|
2
|
+
import type { BuildDefaultToolbarSpecOptions, DefaultToolbarActions, DefaultToolbarBackSlot, DefaultToolbarCapabilities, DefaultToolbarLabels, DefaultToolbarNodeType, DefaultToolbarState, DefaultToolbarTemplate } from './defaultToolbarTypes.js';
|
|
3
|
+
export declare function appendBackSlot(items: ToolbarItem[], slot: DefaultToolbarBackSlot): void;
|
|
4
|
+
export declare function appendAddDropdown(items: ToolbarItem[], nodeTypes: DefaultToolbarNodeType[], actions: DefaultToolbarActions, labels: DefaultToolbarLabels, isPublished: boolean): void;
|
|
5
|
+
export declare function appendTemplatesDropdown(items: ToolbarItem[], templates: DefaultToolbarTemplate[], actions: DefaultToolbarActions, labels: DefaultToolbarLabels, isPublished: boolean): void;
|
|
6
|
+
export declare function appendLayoutButtons(items: ToolbarItem[], state: DefaultToolbarState, actions: DefaultToolbarActions, labels: DefaultToolbarLabels): void;
|
|
7
|
+
export declare function appendUndoRedo(items: ToolbarItem[], state: DefaultToolbarState, actions: DefaultToolbarActions, labels: DefaultToolbarLabels): void;
|
|
8
|
+
export declare function appendCapabilityButtons(items: ToolbarItem[], capabilities: DefaultToolbarCapabilities, state: DefaultToolbarState, actions: DefaultToolbarActions, labels: DefaultToolbarLabels): void;
|
|
9
|
+
export declare function appendSaveAndPublish(items: ToolbarItem[], capabilities: DefaultToolbarCapabilities, state: DefaultToolbarState, actions: DefaultToolbarActions, labels: DefaultToolbarLabels, preview: BuildDefaultToolbarSpecOptions['preview']): void;
|
|
10
|
+
//# sourceMappingURL=toolbarSectionBuilders.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolbarSectionBuilders.d.ts","sourceRoot":"","sources":["../../../src/lib/toolbar/toolbarSectionBuilders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAEnF,OAAO,KAAK,EACR,8BAA8B,EAC9B,qBAAqB,EACrB,sBAAsB,EACtB,0BAA0B,EAC1B,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,EACzB,MAAM,0BAA0B,CAAC;AAElC,wBAAgB,cAAc,CAC1B,KAAK,EAAE,WAAW,EAAE,EACpB,IAAI,EAAE,sBAAsB,GAC7B,IAAI,CAMN;AAED,wBAAgB,iBAAiB,CAC7B,KAAK,EAAE,WAAW,EAAE,EACpB,SAAS,EAAE,sBAAsB,EAAE,EACnC,OAAO,EAAE,qBAAqB,EAC9B,MAAM,EAAE,oBAAoB,EAC5B,WAAW,EAAE,OAAO,GACrB,IAAI,CAsBN;AAED,wBAAgB,uBAAuB,CACnC,KAAK,EAAE,WAAW,EAAE,EACpB,SAAS,EAAE,sBAAsB,EAAE,EACnC,OAAO,EAAE,qBAAqB,EAC9B,MAAM,EAAE,oBAAoB,EAC5B,WAAW,EAAE,OAAO,GACrB,IAAI,CAcN;AAED,wBAAgB,mBAAmB,CAC/B,KAAK,EAAE,WAAW,EAAE,EACpB,KAAK,EAAE,mBAAmB,EAC1B,OAAO,EAAE,qBAAqB,EAC9B,MAAM,EAAE,oBAAoB,GAC7B,IAAI,CAkBN;AAED,wBAAgB,cAAc,CAC1B,KAAK,EAAE,WAAW,EAAE,EACpB,KAAK,EAAE,mBAAmB,EAC1B,OAAO,EAAE,qBAAqB,EAC9B,MAAM,EAAE,oBAAoB,GAC7B,IAAI,CAoBN;AAED,wBAAgB,uBAAuB,CACnC,KAAK,EAAE,WAAW,EAAE,EACpB,YAAY,EAAE,0BAA0B,EACxC,KAAK,EAAE,mBAAmB,EAC1B,OAAO,EAAE,qBAAqB,EAC9B,MAAM,EAAE,oBAAoB,GAC7B,IAAI,CAkDN;AAED,wBAAgB,oBAAoB,CAChC,KAAK,EAAE,WAAW,EAAE,EACpB,YAAY,EAAE,0BAA0B,EACxC,KAAK,EAAE,mBAAmB,EAC1B,OAAO,EAAE,qBAAqB,EAC9B,MAAM,EAAE,oBAAoB,EAC5B,OAAO,EAAE,8BAA8B,CAAC,SAAS,CAAC,GACnD,IAAI,CA8BN"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { TOOLBAR_ITEM_KIND } from '../../panels/ToolbarPanel.js';
|
|
2
|
+
export function appendBackSlot(items, slot) {
|
|
3
|
+
items.push({
|
|
4
|
+
kind: TOOLBAR_ITEM_KIND.CUSTOM,
|
|
5
|
+
id: slot.id ?? 'back',
|
|
6
|
+
render: slot.render,
|
|
7
|
+
});
|
|
8
|
+
}
|
|
9
|
+
export function appendAddDropdown(items, nodeTypes, actions, labels, isPublished) {
|
|
10
|
+
const addEntries = nodeTypes.map((entry, index) => {
|
|
11
|
+
if (entry.divider) {
|
|
12
|
+
return { id: entry.id ?? `divider-${index}`, label: '', divider: true };
|
|
13
|
+
}
|
|
14
|
+
const type = entry.type ?? 'prompt';
|
|
15
|
+
return {
|
|
16
|
+
id: entry.id ?? `add-${type}`,
|
|
17
|
+
label: entry.label ?? type,
|
|
18
|
+
onClick: () => actions.addNodeOfType(type, entry.patch),
|
|
19
|
+
};
|
|
20
|
+
});
|
|
21
|
+
if (addEntries.length === 0)
|
|
22
|
+
return;
|
|
23
|
+
items.push({
|
|
24
|
+
kind: TOOLBAR_ITEM_KIND.DROPDOWN,
|
|
25
|
+
id: 'add',
|
|
26
|
+
label: labels.add ?? '+ Add',
|
|
27
|
+
disabled: isPublished,
|
|
28
|
+
entries: addEntries,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
export function appendTemplatesDropdown(items, templates, actions, labels, isPublished) {
|
|
32
|
+
if (templates.length === 0)
|
|
33
|
+
return;
|
|
34
|
+
items.push({
|
|
35
|
+
kind: TOOLBAR_ITEM_KIND.DROPDOWN,
|
|
36
|
+
id: 'templates',
|
|
37
|
+
label: labels.templates ?? 'Templates',
|
|
38
|
+
disabled: isPublished,
|
|
39
|
+
entries: templates.map((t) => ({
|
|
40
|
+
id: t.id,
|
|
41
|
+
label: t.label,
|
|
42
|
+
onClick: () => actions.insertTemplate(t.spec),
|
|
43
|
+
})),
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
export function appendLayoutButtons(items, state, actions, labels) {
|
|
47
|
+
const { isPublished, hasTree } = state;
|
|
48
|
+
items.push({
|
|
49
|
+
kind: TOOLBAR_ITEM_KIND.BUTTON,
|
|
50
|
+
id: 'reset-view',
|
|
51
|
+
label: labels.resetView ?? 'Reset view',
|
|
52
|
+
disabled: !hasTree,
|
|
53
|
+
onClick: () => actions.triggerResetView(),
|
|
54
|
+
}, {
|
|
55
|
+
kind: TOOLBAR_ITEM_KIND.BUTTON,
|
|
56
|
+
id: 'auto-layout',
|
|
57
|
+
label: labels.autoLayout ?? 'Auto layout',
|
|
58
|
+
disabled: !hasTree || isPublished,
|
|
59
|
+
onClick: () => actions.autoLayout(),
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
export function appendUndoRedo(items, state, actions, labels) {
|
|
63
|
+
if (!actions.undo || !actions.redo)
|
|
64
|
+
return;
|
|
65
|
+
const { isPublished, canUndo = false, canRedo = false } = state;
|
|
66
|
+
items.push({
|
|
67
|
+
kind: TOOLBAR_ITEM_KIND.BUTTON,
|
|
68
|
+
id: 'undo',
|
|
69
|
+
label: labels.undo ?? 'Undo',
|
|
70
|
+
disabled: isPublished || !canUndo,
|
|
71
|
+
onClick: () => actions.undo(),
|
|
72
|
+
}, {
|
|
73
|
+
kind: TOOLBAR_ITEM_KIND.BUTTON,
|
|
74
|
+
id: 'redo',
|
|
75
|
+
label: labels.redo ?? 'Redo',
|
|
76
|
+
disabled: isPublished || !canRedo,
|
|
77
|
+
onClick: () => actions.redo(),
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
export function appendCapabilityButtons(items, capabilities, state, actions, labels) {
|
|
81
|
+
const { isPublished, creatingSnapshot, cloning, hasTree } = state;
|
|
82
|
+
if (capabilities.canValidate) {
|
|
83
|
+
items.push({
|
|
84
|
+
kind: TOOLBAR_ITEM_KIND.BUTTON,
|
|
85
|
+
id: 'validate',
|
|
86
|
+
label: labels.validate ?? 'Validate',
|
|
87
|
+
disabled: !hasTree,
|
|
88
|
+
onClick: () => void actions.validate(),
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
if (capabilities.canListSnapshots) {
|
|
92
|
+
items.push({
|
|
93
|
+
kind: TOOLBAR_ITEM_KIND.BUTTON,
|
|
94
|
+
id: 'draft-history',
|
|
95
|
+
label: labels.history ?? 'Draft history',
|
|
96
|
+
onClick: () => actions.setShowDraftHistory(true),
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
if (capabilities.canListAudit) {
|
|
100
|
+
items.push({
|
|
101
|
+
kind: TOOLBAR_ITEM_KIND.BUTTON,
|
|
102
|
+
id: 'audit',
|
|
103
|
+
label: labels.audit ?? 'Audit log',
|
|
104
|
+
onClick: () => actions.setShowAudit(true),
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
if (capabilities.canCreateSnapshot) {
|
|
108
|
+
items.push({
|
|
109
|
+
kind: TOOLBAR_ITEM_KIND.BUTTON,
|
|
110
|
+
id: 'snapshot',
|
|
111
|
+
label: creatingSnapshot ? 'Creating…' : (labels.snapshot ?? 'Snapshot'),
|
|
112
|
+
disabled: isPublished || creatingSnapshot || !hasTree,
|
|
113
|
+
onClick: () => void actions.createSnapshot(),
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
if (capabilities.canCloneToDraft) {
|
|
117
|
+
items.push({
|
|
118
|
+
kind: TOOLBAR_ITEM_KIND.BUTTON,
|
|
119
|
+
id: 'clone-to-draft',
|
|
120
|
+
label: cloning ? 'Cloning…' : (labels.clone ?? 'Clone to draft'),
|
|
121
|
+
disabled: cloning,
|
|
122
|
+
onClick: () => void actions.cloneToDraft(),
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
export function appendSaveAndPublish(items, capabilities, state, actions, labels, preview) {
|
|
127
|
+
const { isPublished, saving, publishing, canPublish, hasTree } = state;
|
|
128
|
+
items.push({
|
|
129
|
+
kind: TOOLBAR_ITEM_KIND.BUTTON,
|
|
130
|
+
id: 'save-draft',
|
|
131
|
+
label: saving ? 'Saving…' : (labels.save ?? 'Save draft'),
|
|
132
|
+
disabled: isPublished || saving || !hasTree,
|
|
133
|
+
onClick: () => void actions.saveDraft(),
|
|
134
|
+
});
|
|
135
|
+
if (capabilities.canPublish) {
|
|
136
|
+
items.push({
|
|
137
|
+
kind: TOOLBAR_ITEM_KIND.BUTTON,
|
|
138
|
+
id: 'publish',
|
|
139
|
+
label: publishing ? 'Publishing…' : (labels.publish ?? 'Publish'),
|
|
140
|
+
disabled: isPublished || publishing || !canPublish,
|
|
141
|
+
onClick: () => actions.setShowPublishModal(true),
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
if (preview) {
|
|
145
|
+
items.push({
|
|
146
|
+
kind: TOOLBAR_ITEM_KIND.BUTTON,
|
|
147
|
+
id: 'preview',
|
|
148
|
+
label: labels.preview ?? 'Preview',
|
|
149
|
+
disabled: preview.disabled ?? false,
|
|
150
|
+
onClick: preview.onClick,
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
}
|
|
@@ -17,5 +17,5 @@ export interface AuditLogModalProps {
|
|
|
17
17
|
/** Override the Close button label in the footer. */
|
|
18
18
|
closeLabel?: string;
|
|
19
19
|
}
|
|
20
|
-
export default function AuditLogModal({ show, loadingAudit, auditEvents, onClose, title, subtitle, loadingText, emptyStateText, actorLabel, closeLabel, }: Readonly<AuditLogModalProps>): import("react
|
|
20
|
+
export default function AuditLogModal({ show, loadingAudit, auditEvents, onClose, title, subtitle, loadingText, emptyStateText, actorLabel, closeLabel, }: Readonly<AuditLogModalProps>): import("react").JSX.Element | null;
|
|
21
21
|
//# sourceMappingURL=AuditLogModal.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuditLogModal.d.ts","sourceRoot":"","sources":["../../src/modals/AuditLogModal.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAEhF,MAAM,WAAW,kBAAkB;IAC/B,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,sBAAsB,EAAE,CAAC;IACtC,OAAO,EAAE,MAAM,IAAI,CAAC;IAEpB,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iFAAiF;IACjF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AASD,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EAClC,IAAI,EACJ,YAAY,EACZ,WAAW,EACX,OAAO,EACP,KAAqB,EACrB,QAA2B,EAC3B,WAAkC,EAClC,cAAyC,EACzC,UAAgC,EAChC,UAAgC,GACnC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,
|
|
1
|
+
{"version":3,"file":"AuditLogModal.d.ts","sourceRoot":"","sources":["../../src/modals/AuditLogModal.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAEhF,MAAM,WAAW,kBAAkB;IAC/B,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,sBAAsB,EAAE,CAAC;IACtC,OAAO,EAAE,MAAM,IAAI,CAAC;IAEpB,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iFAAiF;IACjF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AASD,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EAClC,IAAI,EACJ,YAAY,EACZ,WAAW,EACX,OAAO,EACP,KAAqB,EACrB,QAA2B,EAC3B,WAAkC,EAClC,cAAyC,EACzC,UAAgC,EAChC,UAAgC,GACnC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,sCAwD9B"}
|
|
@@ -17,7 +17,7 @@ export default function AuditLogModal({ show, loadingAudit, auditEvents, onClose
|
|
|
17
17
|
auditContent = (_jsx("div", { className: "text-muted", children: _jsx("em", { children: emptyStateText }) }));
|
|
18
18
|
}
|
|
19
19
|
else {
|
|
20
|
-
auditContent = (_jsx("ul", { className: "list-unstyled mb-0 overflow-auto-max-h-400", children: auditEvents.map((e) => (_jsxs("li", { className: "border-bottom py-2", children: [_jsxs("div", { className: "d-flex justify-content-between align-items-start", children: [_jsx("span", { className: "badge bg-secondary me-2", children: e.action }), _jsx("span", { className: "text-muted font-size-12", children: new Date(e.
|
|
20
|
+
auditContent = (_jsx("ul", { className: "list-unstyled mb-0 overflow-auto-max-h-400", children: auditEvents.map((e) => (_jsxs("li", { className: "border-bottom py-2", children: [_jsxs("div", { className: "d-flex justify-content-between align-items-start", children: [_jsx("span", { className: "badge bg-secondary me-2", children: e.action }), _jsx("span", { className: "text-muted font-size-12", children: new Date(e.created_on).toLocaleString() })] }), e.actor == null ? null : (_jsxs("span", { className: "text-muted font-size-12", children: [actorLabel, " ", e.actor] })), e.detail && Object.keys(e.detail).length > 0 ? (_jsx("pre", { className: "mb-0 mt-1 small text-muted font-size-11", children: JSON.stringify(e.detail) })) : null] }, e.id))) }));
|
|
21
21
|
}
|
|
22
22
|
return (_jsx("dialog", { className: "modal d-block modal-backdrop-dark", open: true, children: _jsx("div", { className: "modal-dialog modal-lg", children: _jsxs("div", { className: "modal-content", children: [_jsxs("div", { className: "modal-header", children: [_jsx("h5", { className: "modal-title", children: title }), _jsx(CloseButton, { "aria-label": "Close", onClick: onClose })] }), _jsxs("div", { className: "modal-body", children: [_jsx("p", { className: "text-muted font-size-13", children: subtitle }), auditContent] }), _jsx("div", { className: "modal-footer", children: _jsx(Button, { variant: "secondary", onClick: onClose, children: closeLabel }) })] }) }) }));
|
|
23
23
|
}
|
|
@@ -30,5 +30,5 @@ export interface DraftHistoryModalProps {
|
|
|
30
30
|
/** Override the Close button label in the footer. */
|
|
31
31
|
closeLabel?: string;
|
|
32
32
|
}
|
|
33
|
-
export default function DraftHistoryModal({ show, loadingSnapshots, snapshots, restoringSnapshotId, creatingSnapshot, tree, onClose, onCreateSnapshot, onRestoreSnapshot, title, subtitle, listCaption, createSnapshotLabel, creatingSnapshotLabel, restoreLabel, restoringLabel, loadingText, emptyStateText, closeLabel, }: Readonly<DraftHistoryModalProps>): import("react
|
|
33
|
+
export default function DraftHistoryModal({ show, loadingSnapshots, snapshots, restoringSnapshotId, creatingSnapshot, tree, onClose, onCreateSnapshot, onRestoreSnapshot, title, subtitle, listCaption, createSnapshotLabel, creatingSnapshotLabel, restoreLabel, restoringLabel, loadingText, emptyStateText, closeLabel, }: Readonly<DraftHistoryModalProps>): import("react").JSX.Element | null;
|
|
34
34
|
//# sourceMappingURL=DraftHistoryModal.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DraftHistoryModal.d.ts","sourceRoot":"","sources":["../../src/modals/DraftHistoryModal.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAE1F,MAAM,WAAW,sBAAsB;IACnC,IAAI,EAAE,OAAO,CAAC;IACd,gBAAgB,EAAE,OAAO,CAAC;IAC1B,SAAS,EAAE,oBAAoB,EAAE,CAAC;IAClC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,iBAAiB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAEhD,0DAA0D;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,uEAAuE;IACvE,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,2CAA2C;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gFAAgF;IAChF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qEAAqE;IACrE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAcD,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EACtC,IAAI,EACJ,gBAAgB,EAChB,SAAS,EACT,mBAAmB,EACnB,gBAAgB,EAChB,IAAI,EACJ,OAAO,EACP,gBAAgB,EAChB,iBAAiB,EACjB,KAAqB,EACrB,QAA2B,EAC3B,WAAkC,EAClC,mBAA0C,EAC1C,qBAA8C,EAC9C,YAAoC,EACpC,cAAwC,EACxC,WAAkC,EAClC,cAAyC,EACzC,UAAgC,GACnC,EAAE,QAAQ,CAAC,sBAAsB,CAAC,
|
|
1
|
+
{"version":3,"file":"DraftHistoryModal.d.ts","sourceRoot":"","sources":["../../src/modals/DraftHistoryModal.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAE1F,MAAM,WAAW,sBAAsB;IACnC,IAAI,EAAE,OAAO,CAAC;IACd,gBAAgB,EAAE,OAAO,CAAC;IAC1B,SAAS,EAAE,oBAAoB,EAAE,CAAC;IAClC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,iBAAiB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAEhD,0DAA0D;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,uEAAuE;IACvE,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,2CAA2C;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gFAAgF;IAChF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qEAAqE;IACrE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAcD,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EACtC,IAAI,EACJ,gBAAgB,EAChB,SAAS,EACT,mBAAmB,EACnB,gBAAgB,EAChB,IAAI,EACJ,OAAO,EACP,gBAAgB,EAChB,iBAAiB,EACjB,KAAqB,EACrB,QAA2B,EAC3B,WAAkC,EAClC,mBAA0C,EAC1C,qBAA8C,EAC9C,YAAoC,EACpC,cAAwC,EACxC,WAAkC,EAClC,cAAyC,EACzC,UAAgC,GACnC,EAAE,QAAQ,CAAC,sBAAsB,CAAC,sCAuElC"}
|
|
@@ -21,7 +21,7 @@ export default function DraftHistoryModal({ show, loadingSnapshots, snapshots, r
|
|
|
21
21
|
snapshotsContent = (_jsx("div", { className: "text-muted", children: _jsx("em", { children: emptyStateText }) }));
|
|
22
22
|
}
|
|
23
23
|
else {
|
|
24
|
-
snapshotsContent = (_jsx("ul", { className: "list-unstyled mb-0 overflow-auto-max-h-320", children: snapshots.map((s) => (_jsxs("li", { className: "d-flex justify-content-between align-items-center border-bottom py-2", children: [_jsxs("div", { children: [_jsx("span", { className: "text-muted font-size-12", children: new Date(s.
|
|
24
|
+
snapshotsContent = (_jsx("ul", { className: "list-unstyled mb-0 overflow-auto-max-h-320", children: snapshots.map((s) => (_jsxs("li", { className: "d-flex justify-content-between align-items-center border-bottom py-2", children: [_jsxs("div", { children: [_jsx("span", { className: "text-muted font-size-12", children: new Date(s.created_on).toLocaleString() }), s.label ? _jsx("span", { className: "ms-2", children: s.label }) : null, s.spec_hash ? (_jsxs("span", { className: "ms-2 text-muted font-size-11", children: [s.spec_hash.slice(0, 8), "\u2026"] })) : null] }), _jsx(Button, { variant: "outline-warning", onClick: () => onRestoreSnapshot(s.id), disabled: restoringSnapshotId !== null, children: restoringSnapshotId === s.id ? restoringLabel : restoreLabel })] }, s.id))) }));
|
|
25
25
|
}
|
|
26
26
|
return (_jsx("dialog", { className: "modal d-block modal-backdrop-dark", open: true, children: _jsx("div", { className: "modal-dialog modal-lg", children: _jsxs("div", { className: "modal-content", children: [_jsxs("div", { className: "modal-header", children: [_jsx("h5", { className: "modal-title", children: title }), _jsx(CloseButton, { "aria-label": "Close", onClick: onClose })] }), _jsxs("div", { className: "modal-body", children: [_jsx("p", { className: "text-muted font-size-13", children: subtitle }), _jsxs("div", { className: "d-flex justify-content-between align-items-center mb-3", children: [_jsx("span", { className: "text-muted font-size-13", children: listCaption }), _jsx(Button, { variant: "outline-primary", onClick: onCreateSnapshot, disabled: !tree || creatingSnapshot, children: creatingSnapshot ? creatingSnapshotLabel : createSnapshotLabel })] }), snapshotsContent] }), _jsx("div", { className: "modal-footer", children: _jsx(Button, { variant: "secondary", onClick: onClose, children: closeLabel }) })] }) }) }));
|
|
27
27
|
}
|
|
@@ -33,5 +33,5 @@ export interface PublishReviewModalProps {
|
|
|
33
33
|
/** Override the Publish button label while publishing (default "Publishing\u2026"). */
|
|
34
34
|
publishingLabel?: string;
|
|
35
35
|
}
|
|
36
|
-
export default function PublishReviewModal({ show, tree, baselineTree, issues, publishing, onClose, onPublish, computeDiffSummary, title, summaryText, errorAlertText, cancelLabel, publishLabel, publishingLabel, }: Readonly<PublishReviewModalProps>): import("react
|
|
36
|
+
export default function PublishReviewModal({ show, tree, baselineTree, issues, publishing, onClose, onPublish, computeDiffSummary, title, summaryText, errorAlertText, cancelLabel, publishLabel, publishingLabel, }: Readonly<PublishReviewModalProps>): import("react").JSX.Element | null;
|
|
37
37
|
//# sourceMappingURL=PublishReviewModal.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PublishReviewModal.d.ts","sourceRoot":"","sources":["../../src/modals/PublishReviewModal.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAA4B,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAGrF,OAAO,EAAsB,KAAK,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAExF,MAAM,WAAW,uBAAuB;IACpC,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IACxB,YAAY,EAAE,UAAU,GAAG,IAAI,CAAC;IAChC,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,kBAAkB,EAAE,CAChB,MAAM,EAAE,UAAU,GAAG,IAAI,EACzB,KAAK,EAAE,UAAU,KAChB;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,UAAU,EAAE,OAAO,CAAA;KAAE,CAAC;IAE9C,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mEAAmE;IACnE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iEAAiE;IACjE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uFAAuF;IACvF,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAUD,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,EACvC,IAAI,EACJ,IAAI,EACJ,YAAY,EACZ,MAAM,EACN,UAAU,EACV,OAAO,EACP,SAAS,EACT,kBAAkB,EAClB,KAAqB,EACrB,WAAkC,EAClC,cAAyC,EACzC,WAAkC,EAClC,YAAoC,EACpC,eAA0C,GAC7C,EAAE,QAAQ,CAAC,uBAAuB,CAAC,
|
|
1
|
+
{"version":3,"file":"PublishReviewModal.d.ts","sourceRoot":"","sources":["../../src/modals/PublishReviewModal.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAA4B,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAGrF,OAAO,EAAsB,KAAK,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAExF,MAAM,WAAW,uBAAuB;IACpC,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IACxB,YAAY,EAAE,UAAU,GAAG,IAAI,CAAC;IAChC,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,kBAAkB,EAAE,CAChB,MAAM,EAAE,UAAU,GAAG,IAAI,EACzB,KAAK,EAAE,UAAU,KAChB;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,UAAU,EAAE,OAAO,CAAA;KAAE,CAAC;IAE9C,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mEAAmE;IACnE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iEAAiE;IACjE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uFAAuF;IACvF,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAUD,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,EACvC,IAAI,EACJ,IAAI,EACJ,YAAY,EACZ,MAAM,EACN,UAAU,EACV,OAAO,EACP,SAAS,EACT,kBAAkB,EAClB,KAAqB,EACrB,WAAkC,EAClC,cAAyC,EACzC,WAAkC,EAClC,YAAoC,EACpC,eAA0C,GAC7C,EAAE,QAAQ,CAAC,uBAAuB,CAAC,sCAyCnC"}
|
|
@@ -23,5 +23,5 @@ export interface AdvancedJsonPanelProps {
|
|
|
23
23
|
/** Optional extra class names applied to the outer `card` element. */
|
|
24
24
|
className?: string;
|
|
25
25
|
}
|
|
26
|
-
export default function AdvancedJsonPanel({ children, title, subtitle, onExpandAll, onCollapseAll, expandAllLabel, collapseAllLabel, className, }: Readonly<AdvancedJsonPanelProps>): import("react
|
|
26
|
+
export default function AdvancedJsonPanel({ children, title, subtitle, onExpandAll, onCollapseAll, expandAllLabel, collapseAllLabel, className, }: Readonly<AdvancedJsonPanelProps>): import("react").JSX.Element;
|
|
27
27
|
//# sourceMappingURL=AdvancedJsonPanel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdvancedJsonPanel.d.ts","sourceRoot":"","sources":["../../src/panels/AdvancedJsonPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,MAAM,WAAW,sBAAsB;IACnC,uEAAuE;IACvE,QAAQ,EAAE,SAAS,CAAC;IACpB,sEAAsE;IACtE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,4EAA4E;IAC5E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gFAAgF;IAChF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAID,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EACtC,QAAQ,EACR,KAAqB,EACrB,QAAQ,EACR,WAAW,EACX,aAAa,EACb,cAA6B,EAC7B,gBAAiC,EACjC,SAAS,GACZ,EAAE,QAAQ,CAAC,sBAAsB,CAAC
|
|
1
|
+
{"version":3,"file":"AdvancedJsonPanel.d.ts","sourceRoot":"","sources":["../../src/panels/AdvancedJsonPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,MAAM,WAAW,sBAAsB;IACnC,uEAAuE;IACvE,QAAQ,EAAE,SAAS,CAAC;IACpB,sEAAsE;IACtE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,4EAA4E;IAC5E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gFAAgF;IAChF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAID,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EACtC,QAAQ,EACR,KAAqB,EACrB,QAAQ,EACR,WAAW,EACX,aAAa,EACb,cAA6B,EAC7B,gBAAiC,EACjC,SAAS,GACZ,EAAE,QAAQ,CAAC,sBAAsB,CAAC,+BAsClC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Right-rail panel for canvas-only node appearance (colors, size, text wrap, lock)
|
|
3
|
+
* and per-choice edge styling. Hosts inject node field UI via `renderAppearanceFields`.
|
|
4
|
+
*/
|
|
5
|
+
import type { ReactNode } from 'react';
|
|
6
|
+
import { type ChoiceEdgeHints, type EditorNode, type EditorTransition, type EditorTree } from '@signalsafe/tree-spec-editor-core';
|
|
7
|
+
import type { InspectorNodeRenderContext } from './InspectorPanel';
|
|
8
|
+
export interface AppearancePanelProps {
|
|
9
|
+
tree: EditorTree;
|
|
10
|
+
selectedNode: EditorNode | null;
|
|
11
|
+
selectedEdge?: EditorTransition | null;
|
|
12
|
+
focusChoiceId?: string | null;
|
|
13
|
+
isPublished?: boolean;
|
|
14
|
+
onUpdateSelectedNode: (patch: Partial<EditorNode>) => void;
|
|
15
|
+
/** Render appearance controls for the selected node. Hidden when an edge is selected. */
|
|
16
|
+
renderAppearanceFields: (ctx: InspectorNodeRenderContext) => ReactNode;
|
|
17
|
+
onUpdateChoiceEdgeHints?: (nodeId: string, choiceId: string, patch: Partial<ChoiceEdgeHints>) => void;
|
|
18
|
+
/** Jump to a node from the selected-edge summary line. */
|
|
19
|
+
onNodeSelect?: (nodeId: string) => void;
|
|
20
|
+
title?: string;
|
|
21
|
+
emptyStateText?: string;
|
|
22
|
+
/** Shown above node fields when a node is selected. */
|
|
23
|
+
helperText?: string;
|
|
24
|
+
}
|
|
25
|
+
export default function AppearancePanel({ tree, selectedNode, selectedEdge, focusChoiceId, isPublished, onUpdateSelectedNode, renderAppearanceFields, onUpdateChoiceEdgeHints, onNodeSelect, title, emptyStateText, helperText, }: Readonly<AppearancePanelProps>): import("react").JSX.Element;
|
|
26
|
+
//# sourceMappingURL=AppearancePanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AppearancePanel.d.ts","sourceRoot":"","sources":["../../src/panels/AppearancePanel.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,EAEH,KAAK,eAAe,EAEpB,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,UAAU,EAClB,MAAM,mCAAmC,CAAC;AAK3C,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAEnE,MAAM,WAAW,oBAAoB;IACjC,IAAI,EAAE,UAAU,CAAC;IACjB,YAAY,EAAE,UAAU,GAAG,IAAI,CAAC;IAChC,YAAY,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACvC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,oBAAoB,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;IAC3D,yFAAyF;IACzF,sBAAsB,EAAE,CAAC,GAAG,EAAE,0BAA0B,KAAK,SAAS,CAAC;IACvE,uBAAuB,CAAC,EAAE,CACtB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC,KAC9B,IAAI,CAAC;IACV,0DAA0D;IAC1D,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAmID,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EACpC,IAAI,EACJ,YAAY,EACZ,YAAmB,EACnB,aAAoB,EACpB,WAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACtB,uBAAuB,EACvB,YAAY,EACZ,KAAoB,EACpB,cAA4D,EAC5D,UAAkE,GACrE,EAAE,QAAQ,CAAC,oBAAoB,CAAC,+BA0EhC"}
|