@signalsafe/tree-spec-editor 0.2.0 → 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.
Files changed (82) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +186 -59
  3. package/dist/index.d.ts +11 -3
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +5 -1
  6. package/dist/lib/PanelHeaderCollapseCarets.d.ts +4 -7
  7. package/dist/lib/PanelHeaderCollapseCarets.d.ts.map +1 -1
  8. package/dist/lib/PanelHeaderCollapseCarets.js +2 -10
  9. package/dist/lib/buildDefaultToolbarSpec.d.ts +5 -155
  10. package/dist/lib/buildDefaultToolbarSpec.d.ts.map +1 -1
  11. package/dist/lib/buildDefaultToolbarSpec.js +17 -198
  12. package/dist/lib/panelHelpers.d.ts +1 -7
  13. package/dist/lib/panelHelpers.d.ts.map +1 -1
  14. package/dist/lib/panelHelpers.js +11 -19
  15. package/dist/lib/panelNodeLink.d.ts +13 -0
  16. package/dist/lib/panelNodeLink.d.ts.map +1 -0
  17. package/dist/lib/panelNodeLink.js +12 -0
  18. package/dist/lib/selectionStyles.d.ts +9 -0
  19. package/dist/lib/selectionStyles.d.ts.map +1 -0
  20. package/dist/lib/selectionStyles.js +8 -0
  21. package/dist/lib/toolbar/defaultToolbarTypes.d.ts +89 -0
  22. package/dist/lib/toolbar/defaultToolbarTypes.d.ts.map +1 -0
  23. package/dist/lib/toolbar/defaultToolbarTypes.js +1 -0
  24. package/dist/lib/toolbar/toolbarSectionBuilders.d.ts +10 -0
  25. package/dist/lib/toolbar/toolbarSectionBuilders.d.ts.map +1 -0
  26. package/dist/lib/toolbar/toolbarSectionBuilders.js +153 -0
  27. package/dist/modals/AuditLogModal.d.ts +1 -1
  28. package/dist/modals/AuditLogModal.d.ts.map +1 -1
  29. package/dist/modals/AuditLogModal.js +1 -1
  30. package/dist/modals/DraftHistoryModal.d.ts +1 -1
  31. package/dist/modals/DraftHistoryModal.d.ts.map +1 -1
  32. package/dist/modals/DraftHistoryModal.js +1 -1
  33. package/dist/modals/PublishReviewModal.d.ts +1 -1
  34. package/dist/modals/PublishReviewModal.d.ts.map +1 -1
  35. package/dist/panels/AdvancedJsonPanel.d.ts +1 -1
  36. package/dist/panels/AdvancedJsonPanel.d.ts.map +1 -1
  37. package/dist/panels/AppearancePanel.d.ts +26 -0
  38. package/dist/panels/AppearancePanel.d.ts.map +1 -0
  39. package/dist/panels/AppearancePanel.js +76 -0
  40. package/dist/panels/ChoiceEdgeAppearanceFields.d.ts +10 -0
  41. package/dist/panels/ChoiceEdgeAppearanceFields.d.ts.map +1 -0
  42. package/dist/panels/ChoiceEdgeAppearanceFields.js +13 -0
  43. package/dist/panels/ChoiceTemplatesPanel.d.ts +27 -0
  44. package/dist/panels/ChoiceTemplatesPanel.d.ts.map +1 -0
  45. package/dist/panels/ChoiceTemplatesPanel.js +9 -0
  46. package/dist/panels/GraphEditorInfoPanel.d.ts +5 -2
  47. package/dist/panels/GraphEditorInfoPanel.d.ts.map +1 -1
  48. package/dist/panels/GraphEditorInfoPanel.js +6 -6
  49. package/dist/panels/InspectorPanel.d.ts +3 -78
  50. package/dist/panels/InspectorPanel.d.ts.map +1 -1
  51. package/dist/panels/InspectorPanel.js +20 -60
  52. package/dist/panels/IssuesPanel.d.ts +6 -2
  53. package/dist/panels/IssuesPanel.d.ts.map +1 -1
  54. package/dist/panels/IssuesPanel.js +15 -8
  55. package/dist/panels/NodesPanel.d.ts +3 -1
  56. package/dist/panels/NodesPanel.d.ts.map +1 -1
  57. package/dist/panels/NodesPanel.js +12 -14
  58. package/dist/panels/SelectedEdgePanel.d.ts +10 -3
  59. package/dist/panels/SelectedEdgePanel.d.ts.map +1 -1
  60. package/dist/panels/SelectedEdgePanel.js +5 -6
  61. package/dist/panels/ToolbarPanel.d.ts +4 -6
  62. package/dist/panels/ToolbarPanel.d.ts.map +1 -1
  63. package/dist/panels/ToolbarPanel.js +2 -4
  64. package/dist/panels/inspector/ChoiceEditorCard.d.ts +28 -0
  65. package/dist/panels/inspector/ChoiceEditorCard.d.ts.map +1 -0
  66. package/dist/panels/inspector/ChoiceEditorCard.js +36 -0
  67. package/dist/panels/inspector/ChoiceEditorList.d.ts +25 -0
  68. package/dist/panels/inspector/ChoiceEditorList.d.ts.map +1 -0
  69. package/dist/panels/inspector/ChoiceEditorList.js +10 -0
  70. package/dist/panels/inspector/NodeTypeField.d.ts +8 -0
  71. package/dist/panels/inspector/NodeTypeField.d.ts.map +1 -0
  72. package/dist/panels/inspector/NodeTypeField.js +12 -0
  73. package/dist/panels/inspector/RequiredNodeCard.d.ts +14 -0
  74. package/dist/panels/inspector/RequiredNodeCard.d.ts.map +1 -0
  75. package/dist/panels/inspector/RequiredNodeCard.js +16 -0
  76. package/dist/panels/inspector/choiceActionIconProps.d.ts +12 -0
  77. package/dist/panels/inspector/choiceActionIconProps.d.ts.map +1 -0
  78. package/dist/panels/inspector/choiceActionIconProps.js +26 -0
  79. package/dist/panels/inspector/types.d.ts +77 -0
  80. package/dist/panels/inspector/types.d.ts.map +1 -0
  81. package/dist/panels/inspector/types.js +11 -0
  82. package/package.json +83 -65
@@ -0,0 +1,12 @@
1
+ import type { KeyboardEvent, MouseEvent } from 'react';
2
+ export declare function choiceActionIconProps(onClick: () => void, title: string, className: string, disabled?: boolean): {
3
+ role: "button";
4
+ tabIndex: number;
5
+ title: string;
6
+ 'aria-label': string;
7
+ 'aria-disabled': boolean | undefined;
8
+ className: string;
9
+ onClick: ((event: MouseEvent<HTMLElement>) => void) | undefined;
10
+ onKeyDown: ((event: KeyboardEvent<HTMLElement>) => void) | undefined;
11
+ };
12
+ //# sourceMappingURL=choiceActionIconProps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"choiceActionIconProps.d.ts","sourceRoot":"","sources":["../../../src/panels/inspector/choiceActionIconProps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAEvD,wBAAgB,qBAAqB,CACjC,OAAO,EAAE,MAAM,IAAI,EACnB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,QAAQ,UAAQ;;;;;;;sBAaE,UAAU,CAAC,WAAW,CAAC;wBAOvB,aAAa,CAAC,WAAW,CAAC;EAQ/C"}
@@ -0,0 +1,26 @@
1
+ export function choiceActionIconProps(onClick, title, className, disabled = false) {
2
+ return {
3
+ role: 'button',
4
+ tabIndex: disabled ? -1 : 0,
5
+ title,
6
+ 'aria-label': title,
7
+ 'aria-disabled': disabled ? true : undefined,
8
+ className: `${className} action-icon flex-shrink-0${disabled ? ' text-secondary opacity-50' : ' cursor-pointer'}`,
9
+ onClick: disabled
10
+ ? undefined
11
+ : (event) => {
12
+ event.preventDefault();
13
+ event.stopPropagation();
14
+ onClick();
15
+ },
16
+ onKeyDown: disabled
17
+ ? undefined
18
+ : (event) => {
19
+ if (event.key === 'Enter' || event.key === ' ') {
20
+ event.preventDefault();
21
+ event.stopPropagation();
22
+ onClick();
23
+ }
24
+ },
25
+ };
26
+ }
@@ -0,0 +1,77 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { EditorChoice, EditorNode, EditorTransition, EditorTree } from '@signalsafe/tree-spec-editor-core';
3
+ /** Host-provided choice type (stable id + default label). */
4
+ export type ChoiceTypeOption = {
5
+ id: string;
6
+ label: string;
7
+ };
8
+ /**
9
+ * Canonical outcome values from the `@signalsafe/tree-spec` wire contract.
10
+ * Hosts can override via the `outcomeOptions` prop.
11
+ */
12
+ export declare const DEFAULT_OUTCOME_OPTIONS: ReadonlyArray<{
13
+ value: string;
14
+ label: string;
15
+ }>;
16
+ export interface InspectorNodeRenderContext {
17
+ tree: EditorTree;
18
+ node: EditorNode;
19
+ isPublished: boolean;
20
+ onUpdateNode: (patch: Partial<EditorNode>) => void;
21
+ }
22
+ export interface InspectorChoiceRenderContext {
23
+ tree: EditorTree;
24
+ node: EditorNode;
25
+ choice: EditorChoice;
26
+ transition: EditorTransition | undefined;
27
+ isPublished: boolean;
28
+ onUpdateNode: (patch: Partial<EditorNode>) => void;
29
+ }
30
+ export interface InspectorPanelProps {
31
+ tree: EditorTree;
32
+ selectedNode: EditorNode | null;
33
+ focusChoiceId?: string | null;
34
+ isPublished?: boolean;
35
+ /** Sync canvas / sidebar highlight when the user focuses a choice field. */
36
+ onFocusChoice?: (choiceId: string) => void;
37
+ onUpdateSelectedNode: (patch: Partial<EditorNode>) => void;
38
+ onAddChoice: () => void;
39
+ onDeleteChoice: (choiceId: string) => void;
40
+ /** Move a choice up or down in the node's choice list. When omitted, reorder controls are hidden. */
41
+ onMoveChoice?: (choiceId: string, direction: 'up' | 'down') => void;
42
+ onSetChoiceTarget: (choiceId: string, targetNodeId: string) => void;
43
+ onSetChoiceOutcome: (choiceId: string, outcome: string) => void;
44
+ /**
45
+ * Override the END-transition outcome `<select>` options.
46
+ * Defaults to the canonical TreeSpec `TerminalOutcome` values.
47
+ */
48
+ outcomeOptions?: ReadonlyArray<{
49
+ value: string;
50
+ label: string;
51
+ }>;
52
+ /** Hide the outcome selector entirely. Useful when the host manages outcomes elsewhere. */
53
+ hideOutcomeField?: boolean;
54
+ /** Render extra UI below the prompt textarea, scoped to the current node. */
55
+ renderExtraNodeFields?: (ctx: InspectorNodeRenderContext) => ReactNode;
56
+ /** Render extra UI below each choice card (after Next/Outcome). */
57
+ renderExtraChoiceFields?: (ctx: InspectorChoiceRenderContext) => ReactNode;
58
+ /** Host-defined choice types (stable ids) for the Type selector on each choice. */
59
+ choiceTypes?: ReadonlyArray<ChoiceTypeOption>;
60
+ onSetChoiceType?: (choiceId: string, typeId: string, defaultLabel?: string) => void;
61
+ /**
62
+ * When set, shows a delete control in the Required card header (grid-style icon button).
63
+ * Typical host: `editor.actions.deleteSelectedNode`. Disabled when `isPublished` is true.
64
+ */
65
+ onDeleteSelectedNode?: () => void;
66
+ /** Override the Required card header (default "Required"). */
67
+ title?: string;
68
+ /** Override the empty-state message (default "Select a node to edit it."). */
69
+ emptyStateText?: string;
70
+ /**
71
+ * Override the muted helper text under the Type field.
72
+ * Defaults to: "Type is stored as a string in tree_spec. You can use presets or any custom value."
73
+ */
74
+ typeHelperText?: string;
75
+ }
76
+ export declare const DEFAULT_TYPE_HELPER_TEXT = "Type is stored as a string in tree_spec. You can use presets or any custom value.";
77
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/panels/inspector/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { TERMINAL_OUTCOME } from '@signalsafe/tree-spec';
2
+ /**
3
+ * Canonical outcome values from the `@signalsafe/tree-spec` wire contract.
4
+ * Hosts can override via the `outcomeOptions` prop.
5
+ */
6
+ export const DEFAULT_OUTCOME_OPTIONS = [
7
+ { value: TERMINAL_OUTCOME.SAFE, label: TERMINAL_OUTCOME.SAFE },
8
+ { value: TERMINAL_OUTCOME.AT_RISK, label: TERMINAL_OUTCOME.AT_RISK },
9
+ { value: TERMINAL_OUTCOME.COMPROMISED, label: TERMINAL_OUTCOME.COMPROMISED },
10
+ ];
11
+ export const DEFAULT_TYPE_HELPER_TEXT = 'Type is stored as a string in tree_spec. You can use presets or any custom value.';
package/package.json CHANGED
@@ -1,69 +1,87 @@
1
1
  {
2
2
  "name": "@signalsafe/tree-spec-editor",
3
- "version": "0.2.0",
4
- "private": false,
5
- "type": "module",
6
- "description": "Reusable TreeSpec graph editor (React Flow) and authoring helpers (no API or routing)",
7
- "license": "UNLICENSED",
8
- "keywords": [
9
- "tree-spec",
10
- "react-flow",
11
- "editor",
12
- "signalsafe"
13
- ],
14
- "sideEffects": false,
15
- "main": "./dist/index.js",
16
- "types": "./dist/index.d.ts",
17
- "exports": {
18
- ".": {
19
- "types": "./dist/index.d.ts",
20
- "import": "./dist/index.js",
21
- "default": "./dist/index.js"
3
+ "version": "0.2.2",
4
+ "type": "module",
5
+ "description": "Reusable TreeSpec graph editor (React Flow) and authoring helpers (no API or routing).",
6
+ "license": "MIT",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/SignalSafeSoftware/tree-spec-editor.git"
10
+ },
11
+ "bugs": {
12
+ "url": "https://github.com/SignalSafeSoftware/tree-spec-editor/issues"
13
+ },
14
+ "homepage": "https://github.com/SignalSafeSoftware/tree-spec-editor#readme",
15
+ "keywords": [
16
+ "tree-spec",
17
+ "react-flow",
18
+ "editor",
19
+ "graph-editor",
20
+ "decision-tree",
21
+ "react-bootstrap",
22
+ "typescript",
23
+ "signalsafe"
24
+ ],
25
+ "sideEffects": false,
26
+ "main": "./dist/index.js",
27
+ "types": "./dist/index.d.ts",
28
+ "exports": {
29
+ ".": {
30
+ "types": "./dist/index.d.ts",
31
+ "import": "./dist/index.js",
32
+ "default": "./dist/index.js"
33
+ }
34
+ },
35
+ "files": [
36
+ "dist",
37
+ "docs",
38
+ "README.md",
39
+ "LICENSE"
40
+ ],
41
+ "engines": {
42
+ "node": ">=18"
43
+ },
44
+ "publishConfig": {
45
+ "access": "public"
46
+ },
47
+ "scripts": {
48
+ "build": "tsc -p tsconfig.build.json",
49
+ "typecheck": "tsc --noEmit",
50
+ "pack:local": "npm pack --pack-destination ../../dist/reusable-npm",
51
+ "release:check": "node ../../scripts/run-private-package-release-checks.mjs --mode prepublish",
52
+ "release:verify": "node ../../scripts/run-private-package-release-checks.mjs --mode postpublish",
53
+ "publish:preflight": "node ../../scripts/check-private-registry-preflight.mjs --scope @signalsafe",
54
+ "publish:dry-run": "npm publish --dry-run",
55
+ "publish:verify": "node ../../scripts/check-private-package-postpublish.mjs --scope @signalsafe --package @signalsafe/tree-spec-editor --version $npm_package_version",
56
+ "pack:check": "node ../../scripts/check-package-tarball.mjs --tgz \"../../dist/reusable-npm/signalsafe-tree-spec-editor-$npm_package_version.tgz\" --expect package/dist/index.js --expect package/dist/index.d.ts --expect package/package.json --expect package/README.md",
57
+ "smoke:external": "node ../../scripts/smoke-tree-spec-editor-external-consumer.mjs",
58
+ "smoke:published": "node ../../scripts/smoke-tree-spec-editor-external-consumer.mjs --source registry",
59
+ "prepublishOnly": "npm run build",
60
+ "prepare": "npm run build",
61
+ "test": "vitest run",
62
+ "test:monorepo": "cd ../../frontend && yarn vitest run --config vitest.tree-spec-editor.config.ts"
63
+ },
64
+ "dependencies": {
65
+ "@signalsafe/tree-spec": "^0.3.1",
66
+ "@signalsafe/tree-spec-editor-core": "^0.1.2",
67
+ "@signalsafe/tree-spec-editor-react": "^0.1.2"
68
+ },
69
+ "peerDependencies": {
70
+ "react": "^18.0.0",
71
+ "react-bootstrap": "^2.10.0",
72
+ "react-dom": "^18.0.0",
73
+ "reactflow": "^11.0.0"
74
+ },
75
+ "devDependencies": {
76
+ "@types/react": "^18.2.66",
77
+ "@types/react-dom": "^18.2.22",
78
+ "@types/react-test-renderer": "^18.3.0",
79
+ "react": "^18.3.1",
80
+ "react-bootstrap": "^2.10.2",
81
+ "react-dom": "^18.3.1",
82
+ "react-test-renderer": "^18.3.1",
83
+ "reactflow": "^11.11.4",
84
+ "typescript": "^5.4.2",
85
+ "vitest": "^3.2.4"
22
86
  }
23
- },
24
- "files": [
25
- "dist",
26
- "docs",
27
- "README.md"
28
- ],
29
- "publishConfig": {
30
- "access": "restricted"
31
- },
32
- "scripts": {
33
- "build": "tsc -p tsconfig.build.json",
34
- "typecheck": "tsc --noEmit",
35
- "pack:local": "npm pack --pack-destination ../../dist/reusable-npm",
36
- "release:check": "node ../../scripts/run-private-package-release-checks.mjs --mode prepublish",
37
- "release:verify": "node ../../scripts/run-private-package-release-checks.mjs --mode postpublish",
38
- "publish:preflight": "node ../../scripts/check-private-registry-preflight.mjs --scope @signalsafe",
39
- "publish:dry-run": "npm publish --dry-run",
40
- "publish:verify": "node ../../scripts/check-private-package-postpublish.mjs --scope @signalsafe --package @signalsafe/tree-spec-editor --version $npm_package_version",
41
- "pack:check": "node ../../scripts/check-package-tarball.mjs --tgz \"../../dist/reusable-npm/signalsafe-tree-spec-editor-$npm_package_version.tgz\" --expect package/dist/index.js --expect package/dist/index.d.ts --expect package/package.json --expect package/README.md",
42
- "smoke:external": "node ../../scripts/smoke-tree-spec-editor-external-consumer.mjs",
43
- "smoke:published": "node ../../scripts/smoke-tree-spec-editor-external-consumer.mjs --source registry",
44
- "prepublishOnly": "npm run build",
45
- "prepare": "npm run build",
46
- "test": "cd ../../frontend && yarn vitest run --config vitest.tree-spec-editor.config.ts"
47
- },
48
- "dependencies": {
49
- "@signalsafe/tree-spec": "^0.1.3",
50
- "@signalsafe/tree-spec-editor-core": "^0.1.0",
51
- "@signalsafe/tree-spec-editor-react": "^0.1.0"
52
- },
53
- "peerDependencies": {
54
- "react": "^18.0.0",
55
- "react-bootstrap": "^2.10.0",
56
- "react-dom": "^18.0.0",
57
- "reactflow": "^11.0.0"
58
- },
59
- "devDependencies": {
60
- "@types/react": "^18.2.66",
61
- "@types/react-dom": "^18.2.22",
62
- "react": "^18.3.1",
63
- "react-bootstrap": "^2.10.2",
64
- "react-dom": "^18.3.1",
65
- "react-test-renderer": "18.3.1",
66
- "reactflow": "^11.11.4",
67
- "typescript": "^5.4.2"
68
- }
69
87
  }