system-canvas 0.1.0 → 0.1.1
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/actions.d.ts +50 -0
- package/dist/actions.d.ts.map +1 -0
- package/dist/actions.js +85 -0
- package/dist/actions.js.map +1 -0
- package/dist/canvas.d.ts +40 -1
- package/dist/canvas.d.ts.map +1 -1
- package/dist/canvas.js +180 -0
- package/dist/canvas.js.map +1 -1
- package/dist/index.d.ts +12 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -3
- package/dist/index.js.map +1 -1
- package/dist/lanes.d.ts +50 -0
- package/dist/lanes.d.ts.map +1 -0
- package/dist/lanes.js +129 -0
- package/dist/lanes.js.map +1 -0
- package/dist/paths.d.ts +15 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/paths.js +41 -0
- package/dist/paths.js.map +1 -0
- package/dist/rendering/index.d.ts +2 -1
- package/dist/rendering/index.d.ts.map +1 -1
- package/dist/rendering/index.js +1 -1
- package/dist/rendering/index.js.map +1 -1
- package/dist/rendering/viewport-math.d.ts +28 -0
- package/dist/rendering/viewport-math.d.ts.map +1 -1
- package/dist/rendering/viewport-math.js +49 -0
- package/dist/rendering/viewport-math.js.map +1 -1
- package/dist/rollup.d.ts +23 -0
- package/dist/rollup.d.ts.map +1 -0
- package/dist/rollup.js +56 -0
- package/dist/rollup.js.map +1 -0
- package/dist/slots.d.ts +65 -0
- package/dist/slots.d.ts.map +1 -0
- package/dist/slots.js +367 -0
- package/dist/slots.js.map +1 -0
- package/dist/themes/blueprint.d.ts.map +1 -1
- package/dist/themes/blueprint.js +13 -1
- package/dist/themes/blueprint.js.map +1 -1
- package/dist/themes/dark.d.ts.map +1 -1
- package/dist/themes/dark.js +13 -1
- package/dist/themes/dark.js.map +1 -1
- package/dist/themes/index.d.ts +1 -0
- package/dist/themes/index.d.ts.map +1 -1
- package/dist/themes/index.js +1 -0
- package/dist/themes/index.js.map +1 -1
- package/dist/themes/light.d.ts.map +1 -1
- package/dist/themes/light.js +13 -1
- package/dist/themes/light.js.map +1 -1
- package/dist/themes/midnight.d.ts.map +1 -1
- package/dist/themes/midnight.js +13 -1
- package/dist/themes/midnight.js.map +1 -1
- package/dist/themes/resolve.d.ts.map +1 -1
- package/dist/themes/resolve.js +5 -0
- package/dist/themes/resolve.js.map +1 -1
- package/dist/themes/roadmap.d.ts +13 -0
- package/dist/themes/roadmap.d.ts.map +1 -0
- package/dist/themes/roadmap.js +264 -0
- package/dist/themes/roadmap.js.map +1 -0
- package/dist/themes/warm.d.ts.map +1 -1
- package/dist/themes/warm.js +13 -1
- package/dist/themes/warm.js.map +1 -1
- package/dist/types.d.ts +419 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +13 -3
package/dist/types.d.ts
CHANGED
|
@@ -35,6 +35,13 @@ export interface CanvasNode {
|
|
|
35
35
|
background?: string;
|
|
36
36
|
/** type: 'group' — background rendering style */
|
|
37
37
|
backgroundStyle?: BackgroundStyle;
|
|
38
|
+
/**
|
|
39
|
+
* Free-form pass-through data for consumer-specific fields that the
|
|
40
|
+
* library does not need to understand (e.g. `status`, `owner`, `progress`,
|
|
41
|
+
* `dueDate`). Survives round-trips through the library's mutation helpers
|
|
42
|
+
* and is emitted back to the consumer via the update callbacks.
|
|
43
|
+
*/
|
|
44
|
+
customData?: Record<string, any>;
|
|
38
45
|
}
|
|
39
46
|
/** An edge connecting two nodes. */
|
|
40
47
|
export interface CanvasEdge {
|
|
@@ -62,12 +69,38 @@ export interface CanvasThemeHint {
|
|
|
62
69
|
/** Inline category definitions, merged into the active theme's categories */
|
|
63
70
|
categories?: Record<string, CategoryDefinition>;
|
|
64
71
|
}
|
|
72
|
+
/**
|
|
73
|
+
* A named band on the canvas. Columns are vertical bands (positioned along x);
|
|
74
|
+
* rows are horizontal bands (positioned along y).
|
|
75
|
+
*
|
|
76
|
+
* Lanes are a pure rendering/snapping primitive — the library has no opinion
|
|
77
|
+
* on what they represent. Consumers use them for roadmap columns
|
|
78
|
+
* (Now/Next/Later, Q1/Q2/Q3, phase names, date ranges), swim-lane teams,
|
|
79
|
+
* kanban groupings, or any other ordinal or positional labeling.
|
|
80
|
+
*/
|
|
81
|
+
export interface CanvasLane {
|
|
82
|
+
id: string;
|
|
83
|
+
label: string;
|
|
84
|
+
/**
|
|
85
|
+
* Position along the lane axis, in canvas-space. For a column this is its
|
|
86
|
+
* left edge (x); for a row it is its top edge (y).
|
|
87
|
+
*/
|
|
88
|
+
start: number;
|
|
89
|
+
/** Extent along the lane axis (width for columns, height for rows). */
|
|
90
|
+
size: number;
|
|
91
|
+
/** Optional preset "1"-"6" or hex color override for the band fill. */
|
|
92
|
+
color?: CanvasColor;
|
|
93
|
+
}
|
|
65
94
|
/** A JSON Canvas document (with system-canvas extensions). */
|
|
66
95
|
export interface CanvasData {
|
|
67
96
|
nodes?: CanvasNode[];
|
|
68
97
|
edges?: CanvasEdge[];
|
|
69
98
|
/** Optional theme hint — lets the document declare categories and a preferred base theme */
|
|
70
99
|
theme?: CanvasThemeHint;
|
|
100
|
+
/** Vertical bands rendered behind nodes. Consumer defines what they mean. */
|
|
101
|
+
columns?: CanvasLane[];
|
|
102
|
+
/** Horizontal bands rendered behind nodes. Consumer defines what they mean. */
|
|
103
|
+
rows?: CanvasLane[];
|
|
71
104
|
}
|
|
72
105
|
export interface CategoryDefinition {
|
|
73
106
|
defaultWidth: number;
|
|
@@ -77,6 +110,249 @@ export interface CategoryDefinition {
|
|
|
77
110
|
cornerRadius?: number;
|
|
78
111
|
/** Icon identifier — rendered inside the node */
|
|
79
112
|
icon?: string | null;
|
|
113
|
+
/**
|
|
114
|
+
* The JSON Canvas node type to create when this category is chosen from
|
|
115
|
+
* the add-node menu. Defaults to 'text'.
|
|
116
|
+
*/
|
|
117
|
+
type?: NodeType;
|
|
118
|
+
/**
|
|
119
|
+
* Declarative visual add-ons rendered in library-owned positional regions
|
|
120
|
+
* on nodes of this category. See `SlotPosition` and `SlotSpec`.
|
|
121
|
+
*/
|
|
122
|
+
slots?: CategorySlots;
|
|
123
|
+
/**
|
|
124
|
+
* Per-category toolbar override. When present, fully replaces the theme's
|
|
125
|
+
* default `nodeActions` for nodes of this category (no merge). Use
|
|
126
|
+
* `buildDefaultToolbar(theme)` to spread the theme default explicitly.
|
|
127
|
+
*/
|
|
128
|
+
toolbar?: NodeActionGroup[];
|
|
129
|
+
/**
|
|
130
|
+
* Per-category inline editor schema. When present, the node editor renders
|
|
131
|
+
* a multi-field form instead of the single-field text/input. Falls through
|
|
132
|
+
* to the single-field editor when absent.
|
|
133
|
+
*/
|
|
134
|
+
editableFields?: EditableField[];
|
|
135
|
+
/**
|
|
136
|
+
* Seed `customData` for new nodes created from this category via the
|
|
137
|
+
* add-node menu. Deep-cloned per instance (via `structuredClone`) so two
|
|
138
|
+
* new nodes never share nested object/array references.
|
|
139
|
+
*/
|
|
140
|
+
defaultCustomData?: Record<string, unknown>;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* A library-owned positional region on a node. Each category slot maps to
|
|
144
|
+
* exactly one of these positions; each position holds at most one slot.
|
|
145
|
+
*
|
|
146
|
+
* - `topEdge`, `bottomEdge`, `leftEdge`, `rightEdge` — thin strips along
|
|
147
|
+
* the node's perimeter.
|
|
148
|
+
* - `topLeft`, `topRight`, `bottomLeft`, `bottomRight` — small square
|
|
149
|
+
* corner badges, inset from the corner.
|
|
150
|
+
* - `header`, `footer` — full-width inset strips inside the top / bottom
|
|
151
|
+
* of the node. Cause text to reflow.
|
|
152
|
+
* - `body` — the main content area (same rect the default label would
|
|
153
|
+
* occupy, minus header/footer/edge reservations). When present, the
|
|
154
|
+
* default label is suppressed and the category owns body rendering.
|
|
155
|
+
*/
|
|
156
|
+
export type SlotPosition = 'topEdge' | 'bottomEdge' | 'leftEdge' | 'rightEdge' | 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight' | 'header' | 'footer'
|
|
157
|
+
/**
|
|
158
|
+
* A horizontal band sitting just below the header (or just below the
|
|
159
|
+
* top of the content box when no header is present). Sized like a
|
|
160
|
+
* single-line row — intended for inline progress bars under a title,
|
|
161
|
+
* divider strips, sparklines, etc. Does not reflow text.
|
|
162
|
+
*/
|
|
163
|
+
| 'bodyTop'
|
|
164
|
+
/**
|
|
165
|
+
* The node's main content area — the same rect that the default label
|
|
166
|
+
* would be drawn into, shrunk by any header/footer/edge reservations.
|
|
167
|
+
* When a category declares a `body` slot, the default label rendering
|
|
168
|
+
* is suppressed and the slot owns the main text area entirely. Use for
|
|
169
|
+
* big numeric figures (`$142k`), styled titles, or any main-body
|
|
170
|
+
* visual that can't be expressed through decorative slots alone.
|
|
171
|
+
*/
|
|
172
|
+
| 'body'
|
|
173
|
+
/**
|
|
174
|
+
* Hangs off the top-right corner of the node, partially outside its
|
|
175
|
+
* bounding box. Designed for notification-style tab badges (e.g. a
|
|
176
|
+
* count that clips into the node's stroke). Lets a node carry both a
|
|
177
|
+
* `topRight` status pill AND a tab badge without collision.
|
|
178
|
+
*/
|
|
179
|
+
| 'topRightOuter';
|
|
180
|
+
export type CategorySlots = Partial<Record<SlotPosition, SlotSpec>>;
|
|
181
|
+
export type SlotSpec = ColorSlot | ProgressSlot | CountSlot | TextSlot | DotSlot | PillSlot | CustomSlot;
|
|
182
|
+
/**
|
|
183
|
+
* Flat color fill of the region.
|
|
184
|
+
*
|
|
185
|
+
* On edge-strip positions (`topEdge` / `bottomEdge` / `leftEdge` /
|
|
186
|
+
* `rightEdge`), defaults to a *short, pinned* strip that covers only part
|
|
187
|
+
* of the edge (~55%, pinned to start). Set `extent: 'full'` to force a
|
|
188
|
+
* full-width strip.
|
|
189
|
+
*
|
|
190
|
+
* `color` is optional — when omitted the slot inherits `node.resolvedStroke`,
|
|
191
|
+
* so it automatically follows toolbar color changes.
|
|
192
|
+
*/
|
|
193
|
+
export interface ColorSlot {
|
|
194
|
+
kind: 'color';
|
|
195
|
+
color?: NodeAccessor<string>;
|
|
196
|
+
/**
|
|
197
|
+
* Edge-strip extent. `'short'` (default on edge positions) draws a
|
|
198
|
+
* ~55%-length strip pinned to the start (left/top). `'full'` draws a
|
|
199
|
+
* strip across the whole edge, from one rounded-corner tangent to the
|
|
200
|
+
* other. Ignored for non-edge positions.
|
|
201
|
+
*/
|
|
202
|
+
extent?: 'short' | 'full';
|
|
203
|
+
/** Optional fractional length for `extent: 'short'`. Defaults to 0.55. */
|
|
204
|
+
length?: NodeAccessor<number>;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Uppercase pill-style status tag — slim rounded rect with a tinted fill
|
|
208
|
+
* and colored text. Use for OK / ATTN / RISK tags, or any short badge
|
|
209
|
+
* label. Text is rendered uppercase with letter-spacing.
|
|
210
|
+
*
|
|
211
|
+
* `color` is optional — when omitted the pill inherits `node.resolvedStroke`.
|
|
212
|
+
*/
|
|
213
|
+
export interface PillSlot {
|
|
214
|
+
kind: 'pill';
|
|
215
|
+
value: NodeAccessor<string>;
|
|
216
|
+
/** Accent color — drives both the subtle fill tint and the text color. */
|
|
217
|
+
color?: NodeAccessor<string>;
|
|
218
|
+
/** Override the text color (defaults to `color`). */
|
|
219
|
+
textColor?: NodeAccessor<string>;
|
|
220
|
+
/** Override the fill (defaults to `color` at ~15% alpha). */
|
|
221
|
+
fill?: NodeAccessor<string>;
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Horizontal progress bar. Value is clamped to 0..1.
|
|
225
|
+
*
|
|
226
|
+
* `color` is optional — defaults to `node.resolvedStroke`.
|
|
227
|
+
*/
|
|
228
|
+
export interface ProgressSlot {
|
|
229
|
+
kind: 'progress';
|
|
230
|
+
value: NodeAccessor<number>;
|
|
231
|
+
color?: NodeAccessor<string>;
|
|
232
|
+
bgColor?: NodeAccessor<string>;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Count / badge. Renders a pill with a number or short string.
|
|
236
|
+
*
|
|
237
|
+
* `color` is optional — defaults to `node.resolvedStroke`.
|
|
238
|
+
*/
|
|
239
|
+
export interface CountSlot {
|
|
240
|
+
kind: 'count';
|
|
241
|
+
value: NodeAccessor<number | string>;
|
|
242
|
+
color?: NodeAccessor<string>;
|
|
243
|
+
textColor?: NodeAccessor<string>;
|
|
244
|
+
/** When true (default), the badge is hidden when value resolves to 0 or ''. */
|
|
245
|
+
hideWhenEmpty?: boolean;
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Text label inside the region. Sized as a small kicker by default, but
|
|
249
|
+
* can be enlarged via `fontSize` for use in a `body` slot (large headline
|
|
250
|
+
* figures like `$142k`) or styled independently per-position.
|
|
251
|
+
*
|
|
252
|
+
* `align` defaults to `start` for `header` / `footer` / `body`, `center`
|
|
253
|
+
* otherwise. `uppercase` / `useLabelFont` default to `true` for `header`
|
|
254
|
+
* (kicker styling) and `false` elsewhere.
|
|
255
|
+
*/
|
|
256
|
+
export interface TextSlot {
|
|
257
|
+
kind: 'text';
|
|
258
|
+
value: NodeAccessor<string>;
|
|
259
|
+
color?: NodeAccessor<string>;
|
|
260
|
+
/** Font size in px. When omitted, uses a position-appropriate default. */
|
|
261
|
+
fontSize?: NodeAccessor<number>;
|
|
262
|
+
/** Font weight (100–900). Defaults by position. */
|
|
263
|
+
fontWeight?: NodeAccessor<number>;
|
|
264
|
+
/** Horizontal alignment inside the region. */
|
|
265
|
+
align?: 'start' | 'center' | 'end';
|
|
266
|
+
/** Render uppercase with letter-spacing (kicker styling). */
|
|
267
|
+
uppercase?: boolean;
|
|
268
|
+
/**
|
|
269
|
+
* Use the theme's `labelFont` (display font) rather than the body
|
|
270
|
+
* `fontFamily`. Useful for headline figures in a `body` slot.
|
|
271
|
+
*/
|
|
272
|
+
useLabelFont?: boolean;
|
|
273
|
+
/** Direct font-family override. Wins over `useLabelFont` when both set. */
|
|
274
|
+
fontFamily?: NodeAccessor<string>;
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* A small solid dot centered in the region (typically a corner).
|
|
278
|
+
*
|
|
279
|
+
* `color` is optional — defaults to `node.resolvedStroke`.
|
|
280
|
+
*/
|
|
281
|
+
export interface DotSlot {
|
|
282
|
+
kind: 'dot';
|
|
283
|
+
color?: NodeAccessor<string>;
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Escape hatch for arbitrary SVG inside the region. The library still owns
|
|
287
|
+
* positioning (the region `Rect` is provided via `ctx.region`), paint order,
|
|
288
|
+
* and ref-indicator collision.
|
|
289
|
+
*/
|
|
290
|
+
export interface CustomSlot {
|
|
291
|
+
kind: 'custom';
|
|
292
|
+
render: (ctx: SlotContext) => unknown;
|
|
293
|
+
}
|
|
294
|
+
/** A value or a function that computes the value from a `SlotContext`. */
|
|
295
|
+
export type NodeAccessor<T> = T | ((ctx: SlotContext) => T);
|
|
296
|
+
/**
|
|
297
|
+
* Context passed to slot accessors and `custom` renderers. Scoped to one
|
|
298
|
+
* node instance and one region.
|
|
299
|
+
*/
|
|
300
|
+
export interface SlotContext {
|
|
301
|
+
node: ResolvedNode;
|
|
302
|
+
theme: CanvasTheme;
|
|
303
|
+
/** The region rect this slot is rendering into (canvas-space). */
|
|
304
|
+
region: SlotRect;
|
|
305
|
+
/** Resolve a sub-canvas by ref (synchronous canvases map + async cache). */
|
|
306
|
+
getSubCanvas: (ref: string) => CanvasData | undefined;
|
|
307
|
+
canvases?: Record<string, CanvasData>;
|
|
308
|
+
/**
|
|
309
|
+
* Rollup scoped to this node's sub-canvas. Equivalent to
|
|
310
|
+
* `rollupNodes(getSubCanvas(node.ref), predicate)`. Returns zeros when
|
|
311
|
+
* the node has no ref or the sub-canvas is unresolved.
|
|
312
|
+
*/
|
|
313
|
+
rollup: (predicate: (n: CanvasNode) => boolean) => RollupResult;
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Axis-aligned rectangle in canvas-space. Duplicated from `rendering/` so
|
|
317
|
+
* core's data-model module has no cross-package import cycles.
|
|
318
|
+
*/
|
|
319
|
+
export interface SlotRect {
|
|
320
|
+
x: number;
|
|
321
|
+
y: number;
|
|
322
|
+
width: number;
|
|
323
|
+
height: number;
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* Result of rolling up descendant nodes against a predicate. Returned by
|
|
327
|
+
* `rollupNodes` / `rollupNodesDeep` and by `SlotContext.rollup`.
|
|
328
|
+
*/
|
|
329
|
+
export interface RollupResult {
|
|
330
|
+
/** Total nodes considered. */
|
|
331
|
+
total: number;
|
|
332
|
+
/** Nodes matching the predicate. */
|
|
333
|
+
matched: number;
|
|
334
|
+
/** `matched / total`, or 0 when `total === 0`. */
|
|
335
|
+
fraction: number;
|
|
336
|
+
}
|
|
337
|
+
export type EditableFieldKind = 'text' | 'textarea' | 'number' | 'select' | 'boolean';
|
|
338
|
+
export interface EditableField {
|
|
339
|
+
/**
|
|
340
|
+
* Dot-path into the node. Top-level fields like `'text'`, `'label'`,
|
|
341
|
+
* `'file'`, `'url'`, or nested like `'customData.status'`.
|
|
342
|
+
*/
|
|
343
|
+
path: string;
|
|
344
|
+
kind: EditableFieldKind;
|
|
345
|
+
label?: string;
|
|
346
|
+
/** Options for `kind: 'select'`. */
|
|
347
|
+
options?: Array<{
|
|
348
|
+
value: string;
|
|
349
|
+
label?: string;
|
|
350
|
+
}>;
|
|
351
|
+
/** Numeric constraints for `kind: 'number'`. */
|
|
352
|
+
min?: number;
|
|
353
|
+
max?: number;
|
|
354
|
+
step?: number;
|
|
355
|
+
placeholder?: string;
|
|
80
356
|
}
|
|
81
357
|
export interface PresetColor {
|
|
82
358
|
fill: string;
|
|
@@ -89,7 +365,15 @@ export interface GridConfig {
|
|
|
89
365
|
}
|
|
90
366
|
export interface RefIndicatorConfig {
|
|
91
367
|
icon: 'chevron' | 'arrow' | 'expand' | 'none';
|
|
368
|
+
/** Resting glyph color */
|
|
92
369
|
color: string;
|
|
370
|
+
/**
|
|
371
|
+
* Hover fill of the carved square. Defaults to `node.labelColor` at 18%.
|
|
372
|
+
* Any valid CSS color (rgba/hex/named).
|
|
373
|
+
*/
|
|
374
|
+
hoverFill?: string;
|
|
375
|
+
/** Hover glyph color. Defaults to `theme.background` (inverted on the fill). */
|
|
376
|
+
hoverColor?: string;
|
|
93
377
|
}
|
|
94
378
|
export interface NodeTheme {
|
|
95
379
|
fill: string;
|
|
@@ -98,7 +382,19 @@ export interface NodeTheme {
|
|
|
98
382
|
cornerRadius: number;
|
|
99
383
|
labelColor: string;
|
|
100
384
|
sublabelColor: string;
|
|
385
|
+
/**
|
|
386
|
+
* Primary font stack for monospace / data-style text (file paths,
|
|
387
|
+
* footer metrics, counts). Used by everything unless a specific
|
|
388
|
+
* consumer overrides it.
|
|
389
|
+
*/
|
|
101
390
|
fontFamily: string;
|
|
391
|
+
/**
|
|
392
|
+
* Optional display-font stack for node titles and header kickers.
|
|
393
|
+
* Defaults to `fontFamily` so existing themes are unchanged. Swap in
|
|
394
|
+
* a sans-serif here for an app-style / dashboard look while keeping
|
|
395
|
+
* numbers and metrics monospaced.
|
|
396
|
+
*/
|
|
397
|
+
labelFont?: string;
|
|
102
398
|
fontSize: number;
|
|
103
399
|
sublabelFontSize: number;
|
|
104
400
|
refIndicator: RefIndicatorConfig;
|
|
@@ -127,6 +423,88 @@ export interface BreadcrumbTheme {
|
|
|
127
423
|
fontFamily: string;
|
|
128
424
|
fontSize: number;
|
|
129
425
|
}
|
|
426
|
+
export interface LanesTheme {
|
|
427
|
+
/** Fill color for odd-indexed bands (0, 2, 4, ...). */
|
|
428
|
+
bandFillEven: string;
|
|
429
|
+
/** Fill color for even-indexed bands (1, 3, 5, ...). */
|
|
430
|
+
bandFillOdd: string;
|
|
431
|
+
/** Color of the divider line drawn between bands. */
|
|
432
|
+
dividerColor: string;
|
|
433
|
+
dividerWidth: number;
|
|
434
|
+
/** Header (pinned label) styling */
|
|
435
|
+
headerBackground: string;
|
|
436
|
+
headerTextColor: string;
|
|
437
|
+
headerFontFamily: string;
|
|
438
|
+
headerFontSize: number;
|
|
439
|
+
/** Thickness of the sticky header strip, in screen pixels. */
|
|
440
|
+
headerSize: number;
|
|
441
|
+
/** Padding between header text and the band edge, in screen pixels. */
|
|
442
|
+
headerPadding: number;
|
|
443
|
+
}
|
|
444
|
+
/**
|
|
445
|
+
* A single action that a user can trigger on a selected node via the
|
|
446
|
+
* floating node toolbar. Each action carries its own visual treatment and
|
|
447
|
+
* the patch it applies — themes declare these so the library can render a
|
|
448
|
+
* generic toolbar without knowing the consumer's domain.
|
|
449
|
+
*
|
|
450
|
+
* The library has no opinion about what actions represent. Common uses:
|
|
451
|
+
* - Status toggles (planned / in-progress / done) via `customData` patches
|
|
452
|
+
* - Category switchers (initiative / milestone / service / database)
|
|
453
|
+
* - Color palettes tied to `color` or `customData`
|
|
454
|
+
* - Priority markers, owners, tags — anything the consumer can express
|
|
455
|
+
* as a patch to a CanvasNode.
|
|
456
|
+
*/
|
|
457
|
+
export interface NodeAction {
|
|
458
|
+
/** Stable id, unique within its group. */
|
|
459
|
+
id: string;
|
|
460
|
+
/** Human-readable label used as tooltip text. */
|
|
461
|
+
label: string;
|
|
462
|
+
/**
|
|
463
|
+
* Optional icon key — looked up in the theme's `icons` map (or the built-in
|
|
464
|
+
* set). Renders inside a button-style action.
|
|
465
|
+
*/
|
|
466
|
+
icon?: string;
|
|
467
|
+
/**
|
|
468
|
+
* Optional swatch color — renders as a small colored dot/pill. Use for
|
|
469
|
+
* status/color palette groups.
|
|
470
|
+
*/
|
|
471
|
+
swatch?: string;
|
|
472
|
+
/**
|
|
473
|
+
* Patch to apply when the action is triggered. Can be a static patch or
|
|
474
|
+
* a function that receives the current node and returns one (for toggles,
|
|
475
|
+
* cycles, or "merge customData" behaviors).
|
|
476
|
+
*/
|
|
477
|
+
patch: NodeUpdate | ((node: CanvasNode) => NodeUpdate);
|
|
478
|
+
/**
|
|
479
|
+
* Optional predicate — when present, the action is only rendered for
|
|
480
|
+
* nodes that match. Useful for category-specific actions.
|
|
481
|
+
*/
|
|
482
|
+
appliesTo?: (node: CanvasNode) => boolean;
|
|
483
|
+
/**
|
|
484
|
+
* Optional predicate — when present and true, the action is rendered as
|
|
485
|
+
* "active" (e.g. a highlighted swatch). Use this to reflect the node's
|
|
486
|
+
* current state in the toolbar.
|
|
487
|
+
*/
|
|
488
|
+
isActive?: (node: CanvasNode) => boolean;
|
|
489
|
+
}
|
|
490
|
+
/**
|
|
491
|
+
* A group of related NodeActions, rendered together in the toolbar.
|
|
492
|
+
* Groups are separated by a divider.
|
|
493
|
+
*/
|
|
494
|
+
export interface NodeActionGroup {
|
|
495
|
+
/** Stable id, unique within the theme. */
|
|
496
|
+
id: string;
|
|
497
|
+
/** Optional heading shown above the group (or as a tooltip). */
|
|
498
|
+
label?: string;
|
|
499
|
+
/**
|
|
500
|
+
* Visual treatment:
|
|
501
|
+
* - `'swatches'` — a row of colored dots (good for color palettes and status)
|
|
502
|
+
* - `'buttons'` — icon buttons in a row
|
|
503
|
+
* - `'menu'` — a dropdown/popover with labels (good for longer lists like categories)
|
|
504
|
+
*/
|
|
505
|
+
kind?: 'swatches' | 'buttons' | 'menu';
|
|
506
|
+
actions: NodeAction[];
|
|
507
|
+
}
|
|
130
508
|
export interface CanvasTheme {
|
|
131
509
|
name: string;
|
|
132
510
|
background: string;
|
|
@@ -135,10 +513,31 @@ export interface CanvasTheme {
|
|
|
135
513
|
edge: EdgeTheme;
|
|
136
514
|
group: GroupTheme;
|
|
137
515
|
breadcrumbs: BreadcrumbTheme;
|
|
516
|
+
lanes: LanesTheme;
|
|
138
517
|
/** Map preset colors "1"-"6" to fill/stroke */
|
|
139
518
|
presetColors: Record<string, PresetColor>;
|
|
140
519
|
/** Map category strings to visual definitions */
|
|
141
520
|
categories: Record<string, CategoryDefinition>;
|
|
521
|
+
/**
|
|
522
|
+
* Custom icons, merged over the built-in icon set. Each value is an array
|
|
523
|
+
* of SVG path `d` strings authored in a 16x16 coordinate space — matching
|
|
524
|
+
* the coordinate system used by the built-in icons. Useful for shipping
|
|
525
|
+
* domain-specific glyphs via the theme without forking the library.
|
|
526
|
+
*/
|
|
527
|
+
icons?: Record<string, string[]>;
|
|
528
|
+
/**
|
|
529
|
+
* Action groups shown in the floating node toolbar when a node is selected
|
|
530
|
+
* in editable mode. When omitted, the library falls back to a generic
|
|
531
|
+
* color-swatch group derived from `presetColors`.
|
|
532
|
+
*/
|
|
533
|
+
nodeActions?: NodeActionGroup[];
|
|
534
|
+
/**
|
|
535
|
+
* When true, suppress the trailing delete button in the node toolbar.
|
|
536
|
+
* Defaults to false (delete button shown). Consumers who want a custom
|
|
537
|
+
* delete action (confirmation dialog, soft-delete, etc.) can hide the
|
|
538
|
+
* built-in button and add their own via `nodeActions`.
|
|
539
|
+
*/
|
|
540
|
+
hideToolbarDelete?: boolean;
|
|
142
541
|
}
|
|
143
542
|
/** A node with all dimensions resolved (category defaults applied). */
|
|
144
543
|
export interface ResolvedNode extends CanvasNode {
|
|
@@ -188,4 +587,24 @@ export interface ContextMenuEvent {
|
|
|
188
587
|
y: number;
|
|
189
588
|
};
|
|
190
589
|
}
|
|
590
|
+
/** A partial update to an existing node (x/y/text/label/url/file/etc.). */
|
|
591
|
+
export type NodeUpdate = Partial<Omit<CanvasNode, 'id' | 'type'>>;
|
|
592
|
+
/** A partial update to an existing edge (label/color/style/endpoints/etc.). */
|
|
593
|
+
export type EdgeUpdate = Partial<Omit<CanvasEdge, 'id'>>;
|
|
594
|
+
/** An entry in the add-node menu. */
|
|
595
|
+
export interface NodeMenuOption {
|
|
596
|
+
kind: 'category' | 'type';
|
|
597
|
+
/** For kind='category': the category key. For kind='type': the NodeType. */
|
|
598
|
+
value: string;
|
|
599
|
+
label: string;
|
|
600
|
+
icon?: string | null;
|
|
601
|
+
fill?: string;
|
|
602
|
+
stroke?: string;
|
|
603
|
+
/**
|
|
604
|
+
* The resolved JSON Canvas node type for this option.
|
|
605
|
+
* Matches category.type (or 'text' if unset) for categories,
|
|
606
|
+
* or the NodeType itself for base types.
|
|
607
|
+
*/
|
|
608
|
+
nodeType: NodeType;
|
|
609
|
+
}
|
|
191
610
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAIA,0DAA0D;AAC1D,MAAM,MAAM,WAAW,GAAG,MAAM,CAAA;AAEhC,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;AACzD,MAAM,MAAM,IAAI,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAA;AACtD,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAA;AACvC,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,YAAY,CAAA;AAC5D,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAA;AAE1D;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,QAAQ,CAAA;IACd,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,WAAW,CAAA;IAGnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IAGjB,GAAG,CAAC,EAAE,MAAM,CAAA;IAGZ,sCAAsC;IACtC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,oCAAoC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,yBAAyB;IACzB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,iCAAiC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,4CAA4C;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,iDAAiD;IACjD,eAAe,CAAC,EAAE,eAAe,CAAA;CAClC;AAED,oCAAoC;AACpC,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,IAAI,CAAA;IACf,OAAO,CAAC,EAAE,QAAQ,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,IAAI,CAAA;IACb,0BAA0B;IAC1B,KAAK,CAAC,EAAE,QAAQ,CAAA;IAChB,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,sCAAsC;IACtC,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,sFAAsF;IACtF,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAA;CAChD;AAED,8DAA8D;AAC9D,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,UAAU,EAAE,CAAA;IACpB,KAAK,CAAC,EAAE,UAAU,EAAE,CAAA;IACpB,4FAA4F;IAC5F,KAAK,CAAC,EAAE,eAAe,CAAA;CACxB;AAMD,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,iDAAiD;IACjD,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAA;IAC7C,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,gBAAgB,EAAE,MAAM,CAAA;IACxB,YAAY,EAAE,kBAAkB,CAAA;CACjC;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,UAAU,CAAA;IAChB,IAAI,EAAE,SAAS,CAAA;IACf,IAAI,EAAE,SAAS,CAAA;IACf,KAAK,EAAE,UAAU,CAAA;IACjB,WAAW,EAAE,eAAe,CAAA;IAC5B,+CAA+C;IAC/C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;IACzC,iDAAiD;IACjD,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAA;CAC/C;AAMD,uEAAuE;AACvE,MAAM,WAAW,YAAa,SAAQ,UAAU;IAC9C,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,0BAA0B;IAC1B,YAAY,EAAE,MAAM,CAAA;IACpB,4BAA4B;IAC5B,cAAc,EAAE,MAAM,CAAA;IACtB,6BAA6B;IAC7B,oBAAoB,EAAE,MAAM,CAAA;IAC5B,6CAA6C;IAC7C,WAAW,EAAE,OAAO,CAAA;IACpB,uDAAuD;IACvD,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5B;AAED,yCAAyC;AACzC,MAAM,WAAW,WAAW;IAC1B,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV;AAED,gCAAgC;AAChC,MAAM,WAAW,aAAa;IAC5B,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,IAAI,EAAE,MAAM,CAAA;CACb;AAED,uCAAuC;AACvC,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,iDAAiD;AACjD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AAMD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAA;IAChC,MAAM,CAAC,EAAE,UAAU,GAAG,UAAU,CAAA;IAChC,QAAQ,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CACnC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "system-canvas",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "Interactive, zoomable SVG diagrams from JSON Canvas documents. Pure TypeScript core with types, themes, edge routing, and viewport math.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -12,8 +12,18 @@
|
|
|
12
12
|
"import": "./dist/index.js"
|
|
13
13
|
}
|
|
14
14
|
},
|
|
15
|
-
"files": [
|
|
16
|
-
|
|
15
|
+
"files": [
|
|
16
|
+
"dist"
|
|
17
|
+
],
|
|
18
|
+
"keywords": [
|
|
19
|
+
"canvas",
|
|
20
|
+
"diagram",
|
|
21
|
+
"svg",
|
|
22
|
+
"json-canvas",
|
|
23
|
+
"interactive",
|
|
24
|
+
"zoomable",
|
|
25
|
+
"system-diagram"
|
|
26
|
+
],
|
|
17
27
|
"scripts": {
|
|
18
28
|
"build": "tsc",
|
|
19
29
|
"typecheck": "tsc --noEmit",
|