@dr2rai/raid-canvas 0.1.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.
@@ -0,0 +1,536 @@
1
+ /**
2
+ * @file X6Shapes.ts
3
+ * @description Custom AntV X6 shape registrations for the AOAIM ontological contract.
4
+ *
5
+ * Implements:
6
+ * - 4-way orthogonal ports (top, right, bottom, left) with magnet snap points.
7
+ * - Manhattan orthogonal routing with rounded corners (radius: 8).
8
+ * - Entity archetypes: UseCase (uc), Activity (act), Class (cls), Object (obj), Person (per).
9
+ * - Cascais Heraldry design tokens.
10
+ */
11
+ import { Node, Edge } from '@antv/x6';
12
+ /**
13
+ * Cascais Heraldry color palette constants.
14
+ */
15
+ export const CascaisPalette = {
16
+ NetGold: '#F59E0B',
17
+ HeraldicGreen: '#10B981',
18
+ WarmGraphite: '#1F2937',
19
+ GraphiteMuted: '#4B5563',
20
+ SilverLine: '#E5E7EB',
21
+ SilverLineDark: '#D1D5DB',
22
+ ChalkWhite: '#FFFFFF',
23
+ CanvasCream: '#F8FAFC',
24
+ AccentBlue: '#3B82F6',
25
+ TextPrimary: '#111827',
26
+ TextSecondary: '#4B5563',
27
+ };
28
+ /**
29
+ * Port configuration generating 4 orthogonal snap anchors.
30
+ */
31
+ export function createOrthogonalPorts() {
32
+ const portMarkup = [
33
+ {
34
+ tagName: 'circle',
35
+ selector: 'portBody',
36
+ },
37
+ ];
38
+ const portAttrs = {
39
+ portBody: {
40
+ r: 4,
41
+ magnet: true,
42
+ stroke: CascaisPalette.WarmGraphite,
43
+ fill: CascaisPalette.ChalkWhite,
44
+ strokeWidth: 1.5,
45
+ style: {
46
+ visibility: 'hidden',
47
+ },
48
+ },
49
+ };
50
+ return {
51
+ groups: {
52
+ top: {
53
+ position: 'top',
54
+ markup: portMarkup,
55
+ attrs: portAttrs,
56
+ },
57
+ right: {
58
+ position: 'right',
59
+ markup: portMarkup,
60
+ attrs: portAttrs,
61
+ },
62
+ bottom: {
63
+ position: 'bottom',
64
+ markup: portMarkup,
65
+ attrs: portAttrs,
66
+ },
67
+ left: {
68
+ position: 'left',
69
+ markup: portMarkup,
70
+ attrs: portAttrs,
71
+ },
72
+ },
73
+ items: [
74
+ { id: 'port-top', group: 'top' },
75
+ { id: 'port-right', group: 'right' },
76
+ { id: 'port-bottom', group: 'bottom' },
77
+ { id: 'port-left', group: 'left' },
78
+ ],
79
+ };
80
+ }
81
+ /**
82
+ * Guard flag to ensure shapes are registered only once per runtime.
83
+ */
84
+ let shapesRegistered = false;
85
+ /**
86
+ * Register all AOAIM ontological shapes with AntV X6.
87
+ * Safe to call multiple times (idempotent).
88
+ */
89
+ export function registerAimShapes() {
90
+ if (shapesRegistered) {
91
+ return;
92
+ }
93
+ // 1. AimUseCaseNode ('uc') — Ellipse with Net Gold border
94
+ Node.define({
95
+ shape: 'aim-uc',
96
+ inherit: 'ellipse',
97
+ width: 140,
98
+ height: 70,
99
+ attrs: {
100
+ body: {
101
+ fill: CascaisPalette.ChalkWhite,
102
+ stroke: CascaisPalette.NetGold,
103
+ strokeWidth: 2,
104
+ rx: 70,
105
+ ry: 35,
106
+ class: 'aim-node aim-uc',
107
+ },
108
+ label: {
109
+ text: 'UseCase',
110
+ fill: CascaisPalette.TextPrimary,
111
+ fontSize: 13,
112
+ fontWeight: 'bold',
113
+ fontFamily: 'Inter, system-ui, -apple-system, sans-serif',
114
+ textAnchor: 'middle',
115
+ textVerticalAnchor: 'middle',
116
+ },
117
+ },
118
+ ports: createOrthogonalPorts(),
119
+ });
120
+ // 2. AimActivityNode ('act') — Rounded rectangle with Heraldic Green border
121
+ Node.define({
122
+ shape: 'aim-act',
123
+ inherit: 'rect',
124
+ width: 150,
125
+ height: 60,
126
+ attrs: {
127
+ body: {
128
+ fill: CascaisPalette.CanvasCream,
129
+ stroke: CascaisPalette.HeraldicGreen,
130
+ strokeWidth: 2,
131
+ rx: 12,
132
+ ry: 12,
133
+ class: 'aim-node aim-act',
134
+ },
135
+ label: {
136
+ text: 'Activity',
137
+ fill: CascaisPalette.TextPrimary,
138
+ fontSize: 13,
139
+ fontWeight: '600',
140
+ fontFamily: 'Inter, system-ui, -apple-system, sans-serif',
141
+ textAnchor: 'middle',
142
+ textVerticalAnchor: 'middle',
143
+ },
144
+ },
145
+ ports: createOrthogonalPorts(),
146
+ });
147
+ // 3. AimClassNode ('cls') — Compartmentalized class card
148
+ Node.define({
149
+ shape: 'aim-cls',
150
+ inherit: 'rect',
151
+ width: 180,
152
+ height: 100,
153
+ markup: [
154
+ {
155
+ tagName: 'rect',
156
+ selector: 'body',
157
+ },
158
+ {
159
+ tagName: 'rect',
160
+ selector: 'header',
161
+ },
162
+ {
163
+ tagName: 'text',
164
+ selector: 'title',
165
+ },
166
+ {
167
+ tagName: 'line',
168
+ selector: 'divider1',
169
+ },
170
+ {
171
+ tagName: 'text',
172
+ selector: 'attributes',
173
+ },
174
+ {
175
+ tagName: 'line',
176
+ selector: 'divider2',
177
+ },
178
+ {
179
+ tagName: 'text',
180
+ selector: 'methods',
181
+ },
182
+ ],
183
+ attrs: {
184
+ body: {
185
+ fill: CascaisPalette.ChalkWhite,
186
+ stroke: CascaisPalette.WarmGraphite,
187
+ strokeWidth: 1.5,
188
+ class: 'aim-node aim-cls',
189
+ },
190
+ header: {
191
+ fill: CascaisPalette.CanvasCream,
192
+ stroke: 'none',
193
+ height: 28,
194
+ },
195
+ title: {
196
+ text: 'Class',
197
+ fill: CascaisPalette.TextPrimary,
198
+ fontSize: 12,
199
+ fontWeight: 'bold',
200
+ fontFamily: 'Inter, system-ui, -apple-system, sans-serif',
201
+ refX: 0.5,
202
+ refY: 14,
203
+ textAnchor: 'middle',
204
+ textVerticalAnchor: 'middle',
205
+ },
206
+ divider1: {
207
+ stroke: CascaisPalette.SilverLine,
208
+ strokeWidth: 1,
209
+ refX: 0,
210
+ refY: 28,
211
+ refWidth: '100%',
212
+ },
213
+ attributes: {
214
+ text: '+ id: string\n+ state: string',
215
+ fill: CascaisPalette.TextSecondary,
216
+ fontSize: 11,
217
+ fontFamily: 'JetBrains Mono, Menlo, monospace',
218
+ refX: 8,
219
+ refY: 34,
220
+ textAnchor: 'start',
221
+ textVerticalAnchor: 'top',
222
+ },
223
+ divider2: {
224
+ stroke: CascaisPalette.SilverLine,
225
+ strokeWidth: 1,
226
+ refX: 0,
227
+ refY: 65,
228
+ refWidth: '100%',
229
+ },
230
+ methods: {
231
+ text: '+ execute(): void',
232
+ fill: CascaisPalette.TextSecondary,
233
+ fontSize: 11,
234
+ fontFamily: 'JetBrains Mono, Menlo, monospace',
235
+ refX: 8,
236
+ refY: 71,
237
+ textAnchor: 'start',
238
+ textVerticalAnchor: 'top',
239
+ },
240
+ },
241
+ ports: createOrthogonalPorts(),
242
+ });
243
+ // 4. AimObjectNode ('obj') — Instance card with underlined title
244
+ Node.define({
245
+ shape: 'aim-obj',
246
+ inherit: 'rect',
247
+ width: 160,
248
+ height: 80,
249
+ attrs: {
250
+ body: {
251
+ fill: CascaisPalette.ChalkWhite,
252
+ stroke: CascaisPalette.SilverLineDark,
253
+ strokeWidth: 1.5,
254
+ class: 'aim-node aim-obj',
255
+ },
256
+ label: {
257
+ text: '<u>instance: Type</u>',
258
+ fill: CascaisPalette.TextPrimary,
259
+ fontSize: 12,
260
+ fontFamily: 'Inter, system-ui, -apple-system, sans-serif',
261
+ textAnchor: 'middle',
262
+ textVerticalAnchor: 'middle',
263
+ },
264
+ },
265
+ ports: createOrthogonalPorts(),
266
+ });
267
+ // 5. AimPersonNode ('per') — Person / Actor role card
268
+ Node.define({
269
+ shape: 'aim-per',
270
+ inherit: 'rect',
271
+ width: 120,
272
+ height: 70,
273
+ attrs: {
274
+ body: {
275
+ fill: CascaisPalette.CanvasCream,
276
+ stroke: CascaisPalette.WarmGraphite,
277
+ strokeWidth: 1.5,
278
+ rx: 6,
279
+ ry: 6,
280
+ class: 'aim-node aim-per',
281
+ },
282
+ label: {
283
+ text: '«actor»\nOperator',
284
+ fill: CascaisPalette.TextPrimary,
285
+ fontSize: 12,
286
+ fontWeight: '500',
287
+ fontFamily: 'Inter, system-ui, -apple-system, sans-serif',
288
+ textAnchor: 'middle',
289
+ textVerticalAnchor: 'middle',
290
+ },
291
+ },
292
+ ports: createOrthogonalPorts(),
293
+ });
294
+ // 6. AimEdge — Orthogonal Manhattan edge with rounded corners
295
+ Edge.define({
296
+ shape: 'aim-edge',
297
+ inherit: 'edge',
298
+ router: {
299
+ name: 'manhattan',
300
+ args: {
301
+ padding: 20,
302
+ startDirections: ['top', 'right', 'bottom', 'left'],
303
+ endDirections: ['top', 'right', 'bottom', 'left'],
304
+ },
305
+ },
306
+ connector: {
307
+ name: 'rounded',
308
+ args: {
309
+ radius: 8,
310
+ },
311
+ },
312
+ attrs: {
313
+ line: {
314
+ stroke: CascaisPalette.WarmGraphite,
315
+ strokeWidth: 1.5,
316
+ targetMarker: {
317
+ name: 'classic',
318
+ size: 7,
319
+ },
320
+ class: 'aim-edge',
321
+ },
322
+ },
323
+ });
324
+ shapesRegistered = true;
325
+ }
326
+ /**
327
+ * Configure an AntV X6 Graph instance with default AOAIM canvas settings:
328
+ * Manhattan routing, orthogonal connection rules, port hover visibility.
329
+ */
330
+ export function configureAimGraph(graph) {
331
+ registerAimShapes();
332
+ // Show ports on node mouseenter, hide on mouseleave
333
+ graph.on('node:mouseenter', ({ node }) => {
334
+ const ports = node.getPorts();
335
+ for (const port of ports) {
336
+ if (port.id) {
337
+ node.portProp(port.id, 'attrs/portBody/style/visibility', 'visible');
338
+ }
339
+ }
340
+ });
341
+ graph.on('node:mouseleave', ({ node }) => {
342
+ const ports = node.getPorts();
343
+ for (const port of ports) {
344
+ if (port.id) {
345
+ node.portProp(port.id, 'attrs/portBody/style/visibility', 'hidden');
346
+ }
347
+ }
348
+ });
349
+ }
350
+ /**
351
+ * Factory creating an AntV X6 Node model from a RaidNodeData specification.
352
+ */
353
+ export function createAimNode(data) {
354
+ registerAimShapes();
355
+ const shapeName = `aim-${data.kind}`;
356
+ const baseMetadata = {
357
+ id: data.id,
358
+ shape: shapeName,
359
+ x: data.bounds.x,
360
+ y: data.bounds.y,
361
+ width: data.bounds.width,
362
+ height: data.bounds.height,
363
+ data,
364
+ };
365
+ // Archetype-specific customization
366
+ switch (data.kind) {
367
+ case 'uc':
368
+ return {
369
+ ...baseMetadata,
370
+ attrs: {
371
+ label: {
372
+ text: data.stereotype ? `${data.stereotype}\n${data.displayName}` : data.displayName,
373
+ },
374
+ },
375
+ };
376
+ case 'act':
377
+ return {
378
+ ...baseMetadata,
379
+ attrs: {
380
+ label: {
381
+ text: data.stereotype ? `${data.stereotype}\n${data.displayName}` : data.displayName,
382
+ },
383
+ },
384
+ };
385
+ case 'cls':
386
+ return {
387
+ ...baseMetadata,
388
+ attrs: {
389
+ title: {
390
+ text: data.displayName,
391
+ },
392
+ attributes: {
393
+ text: data.attributes && data.attributes.length > 0 ? data.attributes.join('\n') : '',
394
+ },
395
+ methods: {
396
+ text: data.methods && data.methods.length > 0 ? data.methods.join('\n') : '',
397
+ },
398
+ },
399
+ };
400
+ case 'obj':
401
+ return {
402
+ ...baseMetadata,
403
+ attrs: {
404
+ label: {
405
+ text: data.displayName,
406
+ },
407
+ },
408
+ };
409
+ case 'per': {
410
+ const isInitiating = data.stereotype?.toLowerCase().includes('initiates') ?? false;
411
+ return {
412
+ ...baseMetadata,
413
+ attrs: {
414
+ body: {
415
+ stroke: isInitiating ? CascaisPalette.NetGold : CascaisPalette.WarmGraphite,
416
+ strokeWidth: isInitiating ? 2 : 1.5,
417
+ },
418
+ label: {
419
+ text: data.stereotype ? `${data.stereotype}\n${data.displayName}` : data.displayName,
420
+ },
421
+ },
422
+ };
423
+ }
424
+ default:
425
+ return baseMetadata;
426
+ }
427
+ }
428
+ /**
429
+ * Factory creating an AntV X6 Edge model from a RaidEdgeData specification.
430
+ */
431
+ export function createAimEdge(data) {
432
+ registerAimShapes();
433
+ const edgeAttrs = getEdgeStyling(data.kind);
434
+ return {
435
+ id: data.id,
436
+ shape: 'aim-edge',
437
+ source: {
438
+ cell: data.sourceId,
439
+ ...(data.sourcePort !== undefined ? { port: data.sourcePort } : {}),
440
+ },
441
+ target: {
442
+ cell: data.targetId,
443
+ ...(data.targetPort !== undefined ? { port: data.targetPort } : {}),
444
+ },
445
+ vertices: data.bendPoints.map((pt) => ({ x: pt.x, y: pt.y })),
446
+ labels: data.label
447
+ ? [
448
+ {
449
+ attrs: {
450
+ text: {
451
+ text: data.label,
452
+ fill: CascaisPalette.TextSecondary,
453
+ fontSize: 11,
454
+ },
455
+ },
456
+ position: 0.5,
457
+ },
458
+ ]
459
+ : undefined,
460
+ attrs: {
461
+ line: edgeAttrs,
462
+ },
463
+ data,
464
+ };
465
+ }
466
+ /**
467
+ * Returns SVG path stroke and marker attributes based on AimEdgeKind.
468
+ */
469
+ function getEdgeStyling(kind) {
470
+ switch (kind) {
471
+ case 'dependency':
472
+ return {
473
+ stroke: CascaisPalette.WarmGraphite,
474
+ strokeWidth: 1.5,
475
+ strokeDasharray: '5,5',
476
+ targetMarker: {
477
+ name: 'open',
478
+ size: 8,
479
+ },
480
+ };
481
+ case 'generalization':
482
+ return {
483
+ stroke: CascaisPalette.WarmGraphite,
484
+ strokeWidth: 1.5,
485
+ targetMarker: {
486
+ name: 'classic',
487
+ size: 10,
488
+ fill: CascaisPalette.ChalkWhite,
489
+ },
490
+ };
491
+ case 'realization':
492
+ return {
493
+ stroke: CascaisPalette.WarmGraphite,
494
+ strokeWidth: 1.5,
495
+ strokeDasharray: '5,5',
496
+ targetMarker: {
497
+ name: 'classic',
498
+ size: 10,
499
+ fill: CascaisPalette.ChalkWhite,
500
+ },
501
+ };
502
+ case 'aggregation':
503
+ return {
504
+ stroke: CascaisPalette.WarmGraphite,
505
+ strokeWidth: 1.5,
506
+ sourceMarker: {
507
+ name: 'diamond',
508
+ size: 10,
509
+ fill: CascaisPalette.ChalkWhite,
510
+ },
511
+ targetMarker: null,
512
+ };
513
+ case 'composition':
514
+ return {
515
+ stroke: CascaisPalette.WarmGraphite,
516
+ strokeWidth: 1.5,
517
+ sourceMarker: {
518
+ name: 'diamond',
519
+ size: 10,
520
+ fill: CascaisPalette.WarmGraphite,
521
+ },
522
+ targetMarker: null,
523
+ };
524
+ case 'association':
525
+ default:
526
+ return {
527
+ stroke: CascaisPalette.WarmGraphite,
528
+ strokeWidth: 1.5,
529
+ targetMarker: {
530
+ name: 'classic',
531
+ size: 7,
532
+ },
533
+ };
534
+ }
535
+ }
536
+ //# sourceMappingURL=X6Shapes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"X6Shapes.js","sourceRoot":"","sources":["../src/X6Shapes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @file index.ts
3
+ * @description Main public entry point for @dr2rai/raid-canvas.
4
+ *
5
+ * Provides:
6
+ * - AntV X6 custom shape registrations for AOAIM ontological entities.
7
+ * - 4-way orthogonal ports and Manhattan router integration.
8
+ * - Cascais Heraldry design tokens and theme styling.
9
+ * - Bidirectional RaiBridge for hydrating from and serializing to the aim-* SVG contract.
10
+ */
11
+ export { AimSvgContract, type AimOntologyKind, type AimEdgeKind, type Point, type SvgBendPoint, type Bounds, type OrthogonalPortId, type RaidNodeData, type RaidEdgeData, type RaidMetamodel, type HydrationOptions, type SerializationOptions, } from './types.js';
12
+ export { CascaisPalette, createOrthogonalPorts, registerAimShapes, configureAimGraph, createAimNode, createAimEdge, } from './X6Shapes.js';
13
+ export { RaiBridge } from './RaiBridge.js';
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EACL,cAAc,EACd,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,KAAK,EACV,KAAK,YAAY,EACjB,KAAK,MAAM,EACX,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,GAC1B,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,aAAa,GACd,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @file index.ts
3
+ * @description Main public entry point for @dr2rai/raid-canvas.
4
+ *
5
+ * Provides:
6
+ * - AntV X6 custom shape registrations for AOAIM ontological entities.
7
+ * - 4-way orthogonal ports and Manhattan router integration.
8
+ * - Cascais Heraldry design tokens and theme styling.
9
+ * - Bidirectional RaiBridge for hydrating from and serializing to the aim-* SVG contract.
10
+ */
11
+ // Core Metamodel & SVG Contract Types
12
+ export { AimSvgContract, } from './types.js';
13
+ // AntV X6 Custom Shapes & Port Registrations
14
+ export { CascaisPalette, createOrthogonalPorts, registerAimShapes, configureAimGraph, createAimNode, createAimEdge, } from './X6Shapes.js';
15
+ // Bidirectional SVG <-> X6 Synchronization Bridge
16
+ export { RaiBridge } from './RaiBridge.js';
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,sCAAsC;AACtC,OAAO,EACL,cAAc,GAYf,MAAM,YAAY,CAAC;AAEpB,6CAA6C;AAC7C,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,aAAa,GACd,MAAM,eAAe,CAAC;AAEvB,kDAAkD;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}