@oh-just-another/react-ui 0.57.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.
Files changed (186) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/LICENSE +21 -0
  3. package/README.md +54 -0
  4. package/dist/.tsbuildinfo +1 -0
  5. package/dist/bottom-sheet.d.ts +26 -0
  6. package/dist/bottom-sheet.d.ts.map +1 -0
  7. package/dist/bottom-sheet.js +87 -0
  8. package/dist/bottom-sheet.js.map +1 -0
  9. package/dist/button-group.d.ts +14 -0
  10. package/dist/button-group.d.ts.map +1 -0
  11. package/dist/button-group.js +3 -0
  12. package/dist/button-group.js.map +1 -0
  13. package/dist/color-palette.d.ts +34 -0
  14. package/dist/color-palette.d.ts.map +1 -0
  15. package/dist/color-palette.js +77 -0
  16. package/dist/color-palette.js.map +1 -0
  17. package/dist/color-swatch-picker.d.ts +29 -0
  18. package/dist/color-swatch-picker.d.ts.map +1 -0
  19. package/dist/color-swatch-picker.js +56 -0
  20. package/dist/color-swatch-picker.js.map +1 -0
  21. package/dist/command-palette.d.ts +13 -0
  22. package/dist/command-palette.d.ts.map +1 -0
  23. package/dist/command-palette.js +146 -0
  24. package/dist/command-palette.js.map +1 -0
  25. package/dist/comments-panel.d.ts +27 -0
  26. package/dist/comments-panel.d.ts.map +1 -0
  27. package/dist/comments-panel.js +139 -0
  28. package/dist/comments-panel.js.map +1 -0
  29. package/dist/constants.d.ts +112 -0
  30. package/dist/constants.d.ts.map +1 -0
  31. package/dist/constants.js +119 -0
  32. package/dist/constants.js.map +1 -0
  33. package/dist/context-menu-controller.d.ts +41 -0
  34. package/dist/context-menu-controller.d.ts.map +1 -0
  35. package/dist/context-menu-controller.js +26 -0
  36. package/dist/context-menu-controller.js.map +1 -0
  37. package/dist/context-menu.d.ts +53 -0
  38. package/dist/context-menu.d.ts.map +1 -0
  39. package/dist/context-menu.js +333 -0
  40. package/dist/context-menu.js.map +1 -0
  41. package/dist/context.d.ts +44 -0
  42. package/dist/context.d.ts.map +1 -0
  43. package/dist/context.js +95 -0
  44. package/dist/context.js.map +1 -0
  45. package/dist/diagram-bars.d.ts +21 -0
  46. package/dist/diagram-bars.d.ts.map +1 -0
  47. package/dist/diagram-bars.js +4 -0
  48. package/dist/diagram-bars.js.map +1 -0
  49. package/dist/diagram-canvas.d.ts +39 -0
  50. package/dist/diagram-canvas.d.ts.map +1 -0
  51. package/dist/diagram-canvas.js +9 -0
  52. package/dist/diagram-canvas.js.map +1 -0
  53. package/dist/diagram-root.d.ts +70 -0
  54. package/dist/diagram-root.d.ts.map +1 -0
  55. package/dist/diagram-root.js +180 -0
  56. package/dist/diagram-root.js.map +1 -0
  57. package/dist/diff-panel.d.ts +25 -0
  58. package/dist/diff-panel.d.ts.map +1 -0
  59. package/dist/diff-panel.js +77 -0
  60. package/dist/diff-panel.js.map +1 -0
  61. package/dist/edge-style-panel.d.ts +19 -0
  62. package/dist/edge-style-panel.d.ts.map +1 -0
  63. package/dist/edge-style-panel.js +120 -0
  64. package/dist/edge-style-panel.js.map +1 -0
  65. package/dist/frame-name-editor-overlay.d.ts +13 -0
  66. package/dist/frame-name-editor-overlay.d.ts.map +1 -0
  67. package/dist/frame-name-editor-overlay.js +84 -0
  68. package/dist/frame-name-editor-overlay.js.map +1 -0
  69. package/dist/frame-panel.d.ts +19 -0
  70. package/dist/frame-panel.d.ts.map +1 -0
  71. package/dist/frame-panel.js +66 -0
  72. package/dist/frame-panel.js.map +1 -0
  73. package/dist/help-button.d.ts +16 -0
  74. package/dist/help-button.d.ts.map +1 -0
  75. package/dist/help-button.js +14 -0
  76. package/dist/help-button.js.map +1 -0
  77. package/dist/help-dialog.d.ts +56 -0
  78. package/dist/help-dialog.d.ts.map +1 -0
  79. package/dist/help-dialog.js +142 -0
  80. package/dist/help-dialog.js.map +1 -0
  81. package/dist/hooks.d.ts +54 -0
  82. package/dist/hooks.d.ts.map +1 -0
  83. package/dist/hooks.js +85 -0
  84. package/dist/hooks.js.map +1 -0
  85. package/dist/icon-button.d.ts +28 -0
  86. package/dist/icon-button.d.ts.map +1 -0
  87. package/dist/icon-button.js +14 -0
  88. package/dist/icon-button.js.map +1 -0
  89. package/dist/index.d.ts +45 -0
  90. package/dist/index.d.ts.map +1 -0
  91. package/dist/index.js +46 -0
  92. package/dist/index.js.map +1 -0
  93. package/dist/layer-panel.d.ts +13 -0
  94. package/dist/layer-panel.d.ts.map +1 -0
  95. package/dist/layer-panel.js +109 -0
  96. package/dist/layer-panel.js.map +1 -0
  97. package/dist/library-panel.d.ts +33 -0
  98. package/dist/library-panel.d.ts.map +1 -0
  99. package/dist/library-panel.js +37 -0
  100. package/dist/library-panel.js.map +1 -0
  101. package/dist/link-caption-editor.d.ts +8 -0
  102. package/dist/link-caption-editor.d.ts.map +1 -0
  103. package/dist/link-caption-editor.js +65 -0
  104. package/dist/link-caption-editor.js.map +1 -0
  105. package/dist/link-drop-shape-menu.d.ts +12 -0
  106. package/dist/link-drop-shape-menu.d.ts.map +1 -0
  107. package/dist/link-drop-shape-menu.js +55 -0
  108. package/dist/link-drop-shape-menu.js.map +1 -0
  109. package/dist/link-hover-popup.d.ts +2 -0
  110. package/dist/link-hover-popup.d.ts.map +1 -0
  111. package/dist/link-hover-popup.js +96 -0
  112. package/dist/link-hover-popup.js.map +1 -0
  113. package/dist/main-menu.d.ts +67 -0
  114. package/dist/main-menu.d.ts.map +1 -0
  115. package/dist/main-menu.js +243 -0
  116. package/dist/main-menu.js.map +1 -0
  117. package/dist/markdown.d.ts +10 -0
  118. package/dist/markdown.d.ts.map +1 -0
  119. package/dist/markdown.js +131 -0
  120. package/dist/markdown.js.map +1 -0
  121. package/dist/merge-dialog.d.ts +22 -0
  122. package/dist/merge-dialog.d.ts.map +1 -0
  123. package/dist/merge-dialog.js +46 -0
  124. package/dist/merge-dialog.js.map +1 -0
  125. package/dist/modal.d.ts +19 -0
  126. package/dist/modal.d.ts.map +1 -0
  127. package/dist/modal.js +87 -0
  128. package/dist/modal.js.map +1 -0
  129. package/dist/palette.d.ts +73 -0
  130. package/dist/palette.d.ts.map +1 -0
  131. package/dist/palette.js +330 -0
  132. package/dist/palette.js.map +1 -0
  133. package/dist/popover.d.ts +33 -0
  134. package/dist/popover.d.ts.map +1 -0
  135. package/dist/popover.js +107 -0
  136. package/dist/popover.js.map +1 -0
  137. package/dist/property-panel.d.ts +32 -0
  138. package/dist/property-panel.d.ts.map +1 -0
  139. package/dist/property-panel.js +728 -0
  140. package/dist/property-panel.js.map +1 -0
  141. package/dist/reset-to-content-button.d.ts +10 -0
  142. package/dist/reset-to-content-button.d.ts.map +1 -0
  143. package/dist/reset-to-content-button.js +62 -0
  144. package/dist/reset-to-content-button.js.map +1 -0
  145. package/dist/segmented-control.d.ts +23 -0
  146. package/dist/segmented-control.d.ts.map +1 -0
  147. package/dist/segmented-control.js +5 -0
  148. package/dist/segmented-control.js.map +1 -0
  149. package/dist/selection-floating-panel.d.ts +56 -0
  150. package/dist/selection-floating-panel.d.ts.map +1 -0
  151. package/dist/selection-floating-panel.js +251 -0
  152. package/dist/selection-floating-panel.js.map +1 -0
  153. package/dist/sidebar.d.ts +31 -0
  154. package/dist/sidebar.d.ts.map +1 -0
  155. package/dist/sidebar.js +66 -0
  156. package/dist/sidebar.js.map +1 -0
  157. package/dist/slider.d.ts +20 -0
  158. package/dist/slider.d.ts.map +1 -0
  159. package/dist/slider.js +9 -0
  160. package/dist/slider.js.map +1 -0
  161. package/dist/text-editor-overlay.d.ts +16 -0
  162. package/dist/text-editor-overlay.d.ts.map +1 -0
  163. package/dist/text-editor-overlay.js +112 -0
  164. package/dist/text-editor-overlay.js.map +1 -0
  165. package/dist/toast.d.ts +34 -0
  166. package/dist/toast.d.ts.map +1 -0
  167. package/dist/toast.js +89 -0
  168. package/dist/toast.js.map +1 -0
  169. package/dist/toolbar.d.ts +149 -0
  170. package/dist/toolbar.d.ts.map +1 -0
  171. package/dist/toolbar.js +282 -0
  172. package/dist/toolbar.js.map +1 -0
  173. package/dist/tooltip.d.ts +21 -0
  174. package/dist/tooltip.d.ts.map +1 -0
  175. package/dist/tooltip.js +217 -0
  176. package/dist/tooltip.js.map +1 -0
  177. package/dist/ui-layer.d.ts +22 -0
  178. package/dist/ui-layer.d.ts.map +1 -0
  179. package/dist/ui-layer.js +3 -0
  180. package/dist/ui-layer.js.map +1 -0
  181. package/dist/versioning.d.ts +32 -0
  182. package/dist/versioning.d.ts.map +1 -0
  183. package/dist/versioning.js +206 -0
  184. package/dist/versioning.js.map +1 -0
  185. package/package.json +81 -0
  186. package/src/styles.css +1502 -0
@@ -0,0 +1,206 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useState } from "react";
3
+ import { captureFromEditor, diffScenes, restoreSnapshot, } from "@oh-just-another/versioning";
4
+ import { useDiagramOptional } from "./hooks.js";
5
+ import { MergeDialog } from "./merge-dialog.js";
6
+ /**
7
+ * Subscribe to a `SnapshotStore` and return reactive lists of branches +
8
+ * snapshots + the currently-active branch. Pass `null` for hosts that
9
+ * haven't wired versioning — the hook returns empty arrays.
10
+ */
11
+ export const useSnapshotStore = (store) => {
12
+ const [state, setState] = useState(() => store
13
+ ? {
14
+ branches: store.branches(),
15
+ snapshots: store.list(),
16
+ currentBranchId: store.currentBranchId,
17
+ }
18
+ : {
19
+ branches: [],
20
+ snapshots: [],
21
+ currentBranchId: "main",
22
+ });
23
+ useEffect(() => {
24
+ if (!store)
25
+ return undefined;
26
+ const sync = () => {
27
+ setState({
28
+ branches: store.branches(),
29
+ snapshots: store.list(),
30
+ currentBranchId: store.currentBranchId,
31
+ });
32
+ };
33
+ sync();
34
+ return store.subscribe(sync);
35
+ }, [store]);
36
+ return state;
37
+ };
38
+ /**
39
+ * Side-panel with a tree of branches + snapshots and capture / restore /
40
+ * branch actions. Branches are flat, snapshots nested inside each branch
41
+ * (no DAG view).
42
+ */
43
+ export const VersionPanel = ({ store, author, style, className }) => {
44
+ const editor = useDiagramOptional();
45
+ const { branches, currentBranchId } = useSnapshotStore(store);
46
+ const [mergeRequest, setMergeRequest] = useState(null);
47
+ const onMerge = useCallback((sourceBranch) => {
48
+ if (!sourceBranch.head) {
49
+ if (typeof window !== "undefined") {
50
+ window.alert("Source branch has no snapshots to merge.");
51
+ }
52
+ return;
53
+ }
54
+ const target = store.branches().find((b) => b.id === currentBranchId);
55
+ if (!target?.head) {
56
+ if (typeof window !== "undefined") {
57
+ window.alert("Current branch has no snapshots to merge into.");
58
+ }
59
+ return;
60
+ }
61
+ setMergeRequest({
62
+ sourceVersionId: sourceBranch.head,
63
+ targetVersionId: target.head,
64
+ sourceBranchName: sourceBranch.name,
65
+ });
66
+ }, [store, currentBranchId]);
67
+ const onCapture = useCallback(() => {
68
+ if (!editor)
69
+ return;
70
+ const message = typeof window === "undefined" ? "Snapshot" : (window.prompt("Snapshot message", "") ?? "");
71
+ captureFromEditor(store, editor, { message: message || "Untitled snapshot", author });
72
+ }, [editor, store, author]);
73
+ const onRestore = useCallback((id) => {
74
+ if (!editor)
75
+ return;
76
+ if (typeof window === "undefined" ||
77
+ window.confirm("Restore this version? Local undo history will be cleared.")) {
78
+ restoreSnapshot(store, editor, id);
79
+ }
80
+ }, [editor, store]);
81
+ const onBranch = useCallback((id) => {
82
+ const name = typeof window === "undefined" ? "branch" : window.prompt("New branch name", "feature");
83
+ if (!name)
84
+ return;
85
+ const branch = store.branch({ name, fromVersion: id });
86
+ store.setCurrentBranch(branch.id);
87
+ }, [store]);
88
+ const onDiff = useCallback((id) => {
89
+ if (!editor)
90
+ return;
91
+ const snap = store.get(id);
92
+ if (!snap)
93
+ return;
94
+ const diff = diffScenes(snap.scene, editor.scene);
95
+ const summary = [
96
+ `Shapes: +${diff.elements.added.length} / -${diff.elements.removed.length} / ~${diff.elements.modified.length}`,
97
+ `Links: +${diff.links.added.length} / -${diff.links.removed.length} / ~${diff.links.modified.length}`,
98
+ `Layers: +${diff.layers.added.length} / -${diff.layers.removed.length} / ~${diff.layers.modified.length}`,
99
+ `Annotations: +${diff.annotations.added.length} / -${diff.annotations.removed.length} / ~${diff.annotations.modified.length}`,
100
+ ].join("\n");
101
+ if (typeof window !== "undefined")
102
+ window.alert(`Diff (${snap.message} → current):\n\n${summary}`);
103
+ }, [editor, store]);
104
+ return (_jsxs("aside", { className: className, style: {
105
+ flex: "0 0 240px",
106
+ background: "var(--panel, #161616)",
107
+ color: "var(--text, #ddd)",
108
+ borderLeft: "1px solid var(--border, #2a2a2a)",
109
+ display: "flex",
110
+ flexDirection: "column",
111
+ minHeight: 0,
112
+ ...style,
113
+ }, children: [_jsxs("header", { style: {
114
+ padding: "8px 12px",
115
+ display: "flex",
116
+ alignItems: "center",
117
+ fontSize: 11,
118
+ textTransform: "uppercase",
119
+ letterSpacing: 0.5,
120
+ color: "var(--muted, #888)",
121
+ borderBottom: "1px solid var(--border, #2a2a2a)",
122
+ }, children: ["Versions", _jsx("button", { type: "button", onClick: onCapture, disabled: !editor, title: "Capture current scene", style: {
123
+ marginLeft: "auto",
124
+ background: "var(--button-bg, #2a2a2a)",
125
+ border: "1px solid var(--border, #2a2a2a)",
126
+ color: "inherit",
127
+ padding: "2px 8px",
128
+ borderRadius: 4,
129
+ cursor: "pointer",
130
+ fontSize: 11,
131
+ }, children: "+ capture" })] }), _jsx("div", { style: { flex: 1, overflowY: "auto", fontSize: 12 }, children: branches.map((br) => {
132
+ const snapshots = store.listBranch(br.id);
133
+ return (_jsxs("div", { children: [_jsxs("button", { type: "button", onClick: () => { store.setCurrentBranch(br.id); }, style: {
134
+ display: "flex",
135
+ width: "100%",
136
+ textAlign: "left",
137
+ padding: "6px 10px",
138
+ border: "none",
139
+ borderBottom: "1px solid var(--divider, #333)",
140
+ borderLeft: br.id === currentBranchId
141
+ ? "3px solid var(--accent, #1a73e8)"
142
+ : "3px solid transparent",
143
+ background: br.id === currentBranchId
144
+ ? "var(--cursor-bg, rgba(26,115,232,0.12))"
145
+ : "transparent",
146
+ color: "inherit",
147
+ cursor: "pointer",
148
+ font: "inherit",
149
+ fontWeight: 600,
150
+ }, children: [br.name, _jsx("span", { style: { marginLeft: "auto", color: "var(--muted, #888)", fontWeight: 400 }, children: snapshots.length }), br.id !== currentBranchId && br.head ? (_jsx("span", { role: "button", tabIndex: 0, onClick: (ev) => {
151
+ ev.stopPropagation();
152
+ onMerge(br);
153
+ }, onKeyDown: (ev) => {
154
+ if (ev.key === "Enter" || ev.key === " ") {
155
+ ev.preventDefault();
156
+ onMerge(br);
157
+ }
158
+ }, title: `Merge ${br.name} into current branch`, style: {
159
+ marginLeft: 6,
160
+ background: "var(--button-bg, #2a2a2a)",
161
+ border: "1px solid var(--border, #2a2a2a)",
162
+ borderRadius: 3,
163
+ padding: "0 6px",
164
+ fontSize: 11,
165
+ fontWeight: 400,
166
+ cursor: "pointer",
167
+ }, children: "\u21C4" })) : null] }), snapshots.length === 0 ? (_jsx("div", { style: { padding: "6px 14px", color: "var(--faint, #555)" }, children: "No snapshots" })) : (snapshots
168
+ .slice()
169
+ .reverse()
170
+ .map((snap) => (_jsxs("div", { style: {
171
+ display: "flex",
172
+ gap: 4,
173
+ padding: "4px 14px",
174
+ borderBottom: "1px solid var(--divider, #333)",
175
+ }, children: [_jsxs("div", { style: { flex: 1, minWidth: 0 }, children: [_jsx("div", { style: {
176
+ overflow: "hidden",
177
+ textOverflow: "ellipsis",
178
+ whiteSpace: "nowrap",
179
+ }, children: snap.message }), _jsxs("div", { style: { fontSize: 10, color: "var(--muted, #888)" }, children: [snap.author.name, " \u00B7 ", formatTime(snap.timestamp)] })] }), _jsx("button", { type: "button", onClick: () => { onRestore(snap.id); }, style: miniButtonStyle, title: "Restore this version", children: "\u21BB" }), _jsx("button", { type: "button", onClick: () => { onDiff(snap.id); }, style: miniButtonStyle, title: "Diff with current scene", children: "\u0394" }), _jsx("button", { type: "button", onClick: () => { onBranch(snap.id); }, style: miniButtonStyle, title: "Branch from here", children: "\u2387" })] }, snap.id))))] }, br.id));
180
+ }) }), mergeRequest && editor ? (_jsx(MergeDialog, { store: store, sourceVersionId: mergeRequest.sourceVersionId, targetVersionId: mergeRequest.targetVersionId, onCancel: () => { setMergeRequest(null); }, onApply: (merged) => {
181
+ editor.loadScene(merged);
182
+ // Record the merged result as a new snapshot on the target
183
+ // (current) branch so the merge is part of history.
184
+ captureFromEditor(store, editor, {
185
+ author,
186
+ message: `Merge ${mergeRequest.sourceBranchName} into current`,
187
+ });
188
+ setMergeRequest(null);
189
+ } })) : null] }));
190
+ };
191
+ const miniButtonStyle = {
192
+ background: "var(--button-bg, #2a2a2a)",
193
+ border: "1px solid var(--border, #2a2a2a)",
194
+ color: "inherit",
195
+ padding: "0 6px",
196
+ borderRadius: 3,
197
+ cursor: "pointer",
198
+ fontSize: 11,
199
+ };
200
+ const formatTime = (iso) => {
201
+ const d = new Date(iso);
202
+ if (Number.isNaN(d.getTime()))
203
+ return "";
204
+ return d.toLocaleTimeString();
205
+ };
206
+ //# sourceMappingURL=versioning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"versioning.js","sourceRoot":"","sources":["../src/versioning.tsx"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,81 @@
1
+ {
2
+ "name": "@oh-just-another/react-ui",
3
+ "version": "0.57.0",
4
+ "description": "React components and hooks over the diagram editor — DiagramCanvas, Toolbar, Palette, PropertyPanel.",
5
+ "license": "MIT",
6
+ "author": "Rustam Garifulin <rustam@n69.in>",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/oh-just-another/diagram.git",
10
+ "directory": "packages/react-ui"
11
+ },
12
+ "homepage": "https://github.com/oh-just-another/diagram#readme",
13
+ "bugs": "https://github.com/oh-just-another/diagram/issues",
14
+ "keywords": [
15
+ "diagram",
16
+ "canvas",
17
+ "svg",
18
+ "editor",
19
+ "graph",
20
+ "drawing"
21
+ ],
22
+ "type": "module",
23
+ "main": "./dist/index.js",
24
+ "module": "./dist/index.js",
25
+ "types": "./dist/index.d.ts",
26
+ "exports": {
27
+ ".": {
28
+ "types": "./dist/index.d.ts",
29
+ "import": "./dist/index.js"
30
+ },
31
+ "./styles.css": "./src/styles.css"
32
+ },
33
+ "files": [
34
+ "dist",
35
+ "src/styles.css",
36
+ "README.md",
37
+ "CHANGELOG.md"
38
+ ],
39
+ "sideEffects": [
40
+ "**/*.css"
41
+ ],
42
+ "publishConfig": {
43
+ "access": "public"
44
+ },
45
+ "dependencies": {
46
+ "@floating-ui/dom": "^1.6.0",
47
+ "lucide-react": "^1.16.0",
48
+ "@oh-just-another/math": "0.57.0",
49
+ "@oh-just-another/renderer-core": "0.57.0",
50
+ "@oh-just-another/renderer-canvas": "0.57.0",
51
+ "@oh-just-another/scene": "0.57.0",
52
+ "@oh-just-another/history": "0.57.0",
53
+ "@oh-just-another/tokens": "0.57.0",
54
+ "@oh-just-another/types": "0.57.0",
55
+ "@oh-just-another/renderer-svg": "0.57.0",
56
+ "@oh-just-another/state": "0.57.0",
57
+ "@oh-just-another/templates": "0.57.0",
58
+ "@oh-just-another/versioning": "0.57.0"
59
+ },
60
+ "peerDependencies": {
61
+ "react": ">=18",
62
+ "react-dom": ">=18"
63
+ },
64
+ "devDependencies": {
65
+ "@testing-library/react": "^16.1.0",
66
+ "@types/react": "^19.0.0",
67
+ "@types/react-dom": "^19.0.0",
68
+ "axe-core": "^4.11.4",
69
+ "jsdom": "^25.0.0",
70
+ "react": "^19.0.0",
71
+ "react-dom": "^19.0.0"
72
+ },
73
+ "scripts": {
74
+ "build": "tsc -b tsconfig.build.json",
75
+ "typecheck": "tsc --noEmit",
76
+ "test": "vitest run",
77
+ "test:watch": "vitest",
78
+ "lint": "eslint src tests",
79
+ "clean": "rm -rf dist *.tsbuildinfo"
80
+ }
81
+ }