@eventcatalog/visualiser 5.1.2 → 5.2.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/studio.d.mts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as Y from 'yjs';
2
- import { XYPosition, Node, Edge, Connection, EdgeMarker, NodeTypes, FitViewOptions, NodeProps } from '@xyflow/react';
2
+ import { XYPosition, Node, Edge, Connection, NodeChange, FinalConnectionState, EdgeMarker, NodeTypes, FitViewOptions, NodeProps } from '@xyflow/react';
3
3
  import { E as EdgeRoute, C as CopiedEdgeRoute, L as LayoutGraph, a as LayoutSize } from './elk-layout-CpbZ6hB9.mjs';
4
4
  import * as react from 'react';
5
5
  import { RefObject, ReactNode, DragEvent, SVGProps } from 'react';
@@ -305,6 +305,234 @@ declare const pasteNodes: (content: ClipboardContent, existing: Node[], place: {
305
305
  edges: Edge[];
306
306
  };
307
307
 
308
+ /**
309
+ * Levels of detail, the same as EventCatalog's diagrams:
310
+ * - L1: domains, systems and how they relate (services folded into the system or domain that contains them)
311
+ * - L2: services and data stores, with messages, channels and agents hidden (the nodes either side connected directly)
312
+ * - L3: everything, including messages and channels (the canvas people edit)
313
+ *
314
+ * What a domain or system contains is what sits inside it (as a container), or what it's connected to with
315
+ * "contains" (as a card, which catalog domains and systems get when their services are on the canvas).
316
+ */
317
+ type Level = 1 | 2 | 3;
318
+ declare const LEVELS: {
319
+ level: Level;
320
+ description: string;
321
+ }[];
322
+ /**
323
+ * The graph for a level (not laid out: positions come from the layout). Notes aren't in it: the ones added on the
324
+ * level are shown where they were put, over its layout.
325
+ */
326
+ declare const getLevelGraph: (nodes: Node[], edges: Edge[], level: Level) => {
327
+ edges: Edge[];
328
+ nodes: Node[];
329
+ };
330
+ /** Why a level can't be shown for this canvas, if it can't */
331
+ declare const getLevelUnavailableReason: (nodes: Node[], level: Level) => string | undefined;
332
+
333
+ /**
334
+ * The kinds of node people (and agents) can put on a canvas, and what's in their data. Shared by the browser and
335
+ * the server, so it has no UI in it: the icons for each type are in components/icons.ts.
336
+ */
337
+ type NodeCategory = "boundaries" | "people" | "messages" | "architecture" | "data" | "other";
338
+ declare const NODE_CATEGORIES: {
339
+ id: NodeCategory;
340
+ label: string;
341
+ }[];
342
+ /** The catalog collections whose resources can go on a canvas */
343
+ declare const CATALOG_COLLECTIONS: readonly ["domains", "systems", "services", "events", "commands", "queries", "channels", "containers"];
344
+ type CatalogCollection = (typeof CATALOG_COLLECTIONS)[number];
345
+ declare const isCatalogCollection: (collection: string) => collection is CatalogCollection;
346
+ /** Domains and systems as containers: boxes other nodes sit in */
347
+ declare const GROUP_TYPES: {
348
+ readonly domain: "domain-group";
349
+ readonly system: "system-group";
350
+ };
351
+ declare const isGroupType: (type?: string) => type is "domain-group" | "system-group";
352
+ type NodeDefinition = {
353
+ /** React Flow node type, matches the visualiser node component keys */
354
+ type: string;
355
+ /** Its key in the components list when several share a node type (the kinds of data store); else its type */
356
+ id?: string;
357
+ label: string;
358
+ /** What it is, in a few words (beside its name in the components list) */
359
+ summary?: string;
360
+ category: NodeCategory;
361
+ /** Not in the components list (still drawn, for canvases that have them) */
362
+ unlisted?: boolean;
363
+ /** Where the resource lives inside node.data (e.g. `service` for data.service). Undefined = data root */
364
+ resourceKey?: string;
365
+ /** Nodes that are sized on the canvas (containers, notes, text) start at this size */
366
+ defaultSize?: {
367
+ width: number;
368
+ height: number;
369
+ };
370
+ /** Only its width is set: its height follows what's in it (notes) */
371
+ autoHeight?: boolean;
372
+ /** Neither is set: it's as big as what's in it (text, as Excalidraw's; defaultSize is only where it's put) */
373
+ autoSize?: boolean;
374
+ /**
375
+ * The first level of detail that shows it (it's on the more detailed ones too, see levels.ts): L1 domains, systems
376
+ * and actors, L2 services, data stores, text and the like, L3 messages and channels. Notes are on every level.
377
+ */
378
+ firstLevel: 1 | 2 | 3;
379
+ createData: () => Record<string, unknown>;
380
+ };
381
+ declare const nodeDefinitions: NodeDefinition[];
382
+ /** A component's key in the components list (and what's dragged from it) */
383
+ declare const componentKey: (definition: NodeDefinition) => string;
384
+ /** The types people and agents can add (not the unlisted ones), each once (the kinds of data store are all `data`) */
385
+ declare const COMPONENT_TYPES: [string, ...string[]];
386
+ declare const getNodeDefinition: (type?: string) => NodeDefinition | undefined;
387
+ declare const getNodeLabel: (type?: string) => string;
388
+ declare const DEFAULT_NODE_SIZE: {
389
+ width: number;
390
+ height: number;
391
+ };
392
+ /** The size a new node of a type starts at (or, for cards, about the size it renders at) */
393
+ declare const getNodeSize: (type?: string) => {
394
+ width: number;
395
+ height: number;
396
+ };
397
+ /** The resource object for a node (e.g. data.service), or the data itself for flat nodes */
398
+ declare const getResource: (type: string | undefined, data: Record<string, unknown>) => Record<string, unknown>;
399
+ /** Sticky notes sit on the canvas wherever they're put, never inside a container */
400
+ declare const canGoInContainer: (type?: string) => boolean;
401
+ /**
402
+ * Whether a container can hold a kind of node, as EventCatalog's domains and systems do: a domain holds anything
403
+ * (subdomains, systems, services...), a system anything but a domain
404
+ */
405
+ declare const canHold: (containerType?: string, type?: string) => boolean;
406
+ /**
407
+ * The level (L1, L2 or L3) a sticky note or text was written on: it's only shown there. Ones from before they had
408
+ * levels are on L3, the canvas people edit. Other nodes are on every level they fit in, so they have none.
409
+ */
410
+ declare const getNoteLevel: (node: {
411
+ type?: string;
412
+ data: Record<string, unknown>;
413
+ }) => 1 | 2 | 3 | undefined;
414
+ /** Whether a node is on a level's canvas as itself: everything on L3, but notes and text only on their level */
415
+ declare const isOnLevel: (node: {
416
+ type?: string;
417
+ data: Record<string, unknown>;
418
+ }, level: 1 | 2 | 3) => boolean;
419
+ /** Whether a level of detail shows a kind of node (so it can be added there, and stay there) */
420
+ declare const isShownOnLevel: (type: string | undefined, level: 1 | 2 | 3) => boolean;
421
+ /** Whether a node's resource has a version (actors, notes and text don't) */
422
+ declare const isVersioned: (type?: string) => boolean;
423
+ /** Notes and text: written on the canvas itself (their text is their data, not a resource with a name) */
424
+ declare const isWrittenOnCanvas: (type?: string) => type is "note" | "text";
425
+ /** Returns new node data with fields of the resource changed */
426
+ declare const updateResource: (type: string | undefined, data: Record<string, unknown>, fields: Record<string, unknown>) => {
427
+ [x: string]: unknown;
428
+ };
429
+ /** A node's name, as people and agents see it */
430
+ declare const getNodeName: (type: string | undefined, data: Record<string, unknown>, fallback?: string) => string;
431
+
432
+ /**
433
+ * A connection dragged from a node and let go of on empty canvas: a placeholder is put where it was let go of, and
434
+ * what it is is chosen from a list (as Miro's and n8n's do), so connecting something new doesn't need the palette.
435
+ */
436
+ /** The placeholder's node type and id (only ever in this browser, never in the document) */
437
+ declare const CONNECT_PLACEHOLDER = "connect-placeholder";
438
+ declare const CONNECT_PLACEHOLDER_EDGE = "connect-placeholder-edge";
439
+ declare const CONNECT_PLACEHOLDER_SIZE: {
440
+ width: number;
441
+ height: number;
442
+ };
443
+ /** The placeholder is only in this browser, shown to React Flow: none of its changes (measured, hovered) go anywhere */
444
+ declare const notPlaceholder: (change: NodeChange) => boolean;
445
+ /** The end of the connection on the node it was dragged from, and which end the new node is */
446
+ type NewLink = {
447
+ nodeId: string;
448
+ handleId: string | null;
449
+ /** The new node is the connection's target (dragged from a node's source handle), or its source */
450
+ newIs: "source" | "target";
451
+ };
452
+ /** The connection between a new node and the node it was dragged from */
453
+ declare const linkConnection: (newId: string, link: NewLink) => Connection;
454
+ type ConnectOption = {
455
+ /** Its key in the components list (what's added) */
456
+ key: string;
457
+ /** The node type it becomes (domains and systems become cards: they connect, containers hold) */
458
+ type: string;
459
+ label: string;
460
+ summary?: string;
461
+ category: NodeCategory;
462
+ /** What the connection says (EventCatalog's wording, e.g. "publishes event"), when it has a word for it */
463
+ says: string;
464
+ };
465
+ declare const DOMAIN_CARD = "context-domain";
466
+ declare const SYSTEM_CARD = "system";
467
+ type CardType = typeof DOMAIN_CARD | typeof SYSTEM_CARD;
468
+ /** Domains and systems added from a connection are cards: that's how they're connected on every level */
469
+ declare const connectedType: (type: string) => string;
470
+ /** A domain's or system's card (the visualiser's), rather than a container */
471
+ declare const isCardType: (type: string | undefined) => type is CardType;
472
+ /** A new domain or system card's data: the new domain or system its container would be, shown in full */
473
+ declare const newCardData: (type: CardType) => Record<string, unknown>;
474
+ /**
475
+ * What can be made at the end of a connection from a node of `fromType`: everything the level shows (not notes or
476
+ * text, which don't connect), the ones EventCatalog has a word for first (e.g. from a service: events, commands,
477
+ * data stores), each group in the palette's order
478
+ */
479
+ declare const getConnectOptions: (fromType: string | undefined, newIs: NewLink["newIs"], level: Level) => ConnectOption[];
480
+ /** The options that match what's typed (by name, what it is, or what the connection says) */
481
+ declare const filterConnectOptions: (options: ConnectOption[], query: string) => ConnectOption[];
482
+ /** How far a connection's dragged (on the canvas) before letting go of it makes something new: closer is a click */
483
+ declare const CONNECT_MIN_DISTANCE = 40;
484
+ declare const isAwayFrom: (from: XYPosition, to: XYPosition) => boolean;
485
+ /**
486
+ * Whether a point on screen is empty canvas in a canvas: not a node (containers let the pointer through their body),
487
+ * an edge or a label counts as canvas (nodes are inside React Flow's pane too)
488
+ */
489
+ declare const isEmptyCanvasAt: (point: {
490
+ x: number;
491
+ y: number;
492
+ }, canvas: Element | null | undefined) => boolean;
493
+ /**
494
+ * Where a new node goes: its near side where the connection was let go of, out the way it was dragged (to the
495
+ * right of a node, it starts there and grows right; above it, it ends there)
496
+ */
497
+ declare const centreBeyond: (from: XYPosition, to: XYPosition, size: {
498
+ width: number;
499
+ height: number;
500
+ }) => XYPosition;
501
+
502
+ declare function useConnectNew({ canvasRef, getNode, getLevel, locked, onMake, }: {
503
+ /** The canvas: a connection's let go of on empty canvas inside it */
504
+ canvasRef: RefObject<HTMLElement | null>;
505
+ /** A node on the canvas people edit, by id (on L1 and L2 too, what's shown is on it): connections start there */
506
+ getNode: (id: string) => Node | undefined;
507
+ getLevel: () => Level;
508
+ /** Locked: nothing's made (and what's waiting to be chosen goes) */
509
+ locked: boolean;
510
+ /** Makes what was chosen, centred on `center`, connected by `link` (in the same change, so one undo takes both) */
511
+ onMake: (option: ConnectOption, center: XYPosition, link: NewLink) => void;
512
+ }): {
513
+ placeholder: {
514
+ node: Node;
515
+ edge: Edge;
516
+ } | null;
517
+ chooser: {
518
+ options: ConnectOption[];
519
+ fromName: string | undefined;
520
+ anchor: {
521
+ x: number;
522
+ y: number;
523
+ width: number;
524
+ height: number;
525
+ };
526
+ onHighlight: (choice: ConnectOption | undefined) => void;
527
+ onChoose: (option: ConnectOption) => void;
528
+ onCancel: () => void;
529
+ } | null;
530
+ onConnectEnd: (event: MouseEvent | TouchEvent, state: FinalConnectionState) => void;
531
+ onReconnectStart: () => void;
532
+ onReconnectEnd: () => void;
533
+ cancel: () => void;
534
+ };
535
+
308
536
  /** Connections on a canvas, labelled with EventCatalog's wording (e.g. "publishes event", "subscribed by") */
309
537
  /** Node types that are messages, and their catalog collection */
310
538
  declare const MESSAGE_COLLECTIONS: Record<string, string>;
@@ -518,31 +746,6 @@ declare const arrangeLevel: (graph: Graph, layout: ReadonlyMap<string, LevelPlac
518
746
  */
519
747
  declare const withDiagramRoutes: (edges: Edge[], diagramEdges?: Edge[]) => Edge[];
520
748
 
521
- /**
522
- * Levels of detail, the same as EventCatalog's diagrams:
523
- * - L1: domains, systems and how they relate (services folded into the system or domain that contains them)
524
- * - L2: services and data stores, with messages, channels and agents hidden (the nodes either side connected directly)
525
- * - L3: everything, including messages and channels (the canvas people edit)
526
- *
527
- * What a domain or system contains is what sits inside it (as a container), or what it's connected to with
528
- * "contains" (as a card, which catalog domains and systems get when their services are on the canvas).
529
- */
530
- type Level = 1 | 2 | 3;
531
- declare const LEVELS: {
532
- level: Level;
533
- description: string;
534
- }[];
535
- /**
536
- * The graph for a level (not laid out: positions come from the layout). Notes aren't in it: the ones added on the
537
- * level are shown where they were put, over its layout.
538
- */
539
- declare const getLevelGraph: (nodes: Node[], edges: Edge[], level: Level) => {
540
- edges: Edge[];
541
- nodes: Node[];
542
- };
543
- /** Why a level can't be shown for this canvas, if it can't */
544
- declare const getLevelUnavailableReason: (nodes: Node[], level: Level) => string | undefined;
545
-
546
749
  /**
547
750
  * What the others on a live canvas are doing that the canvas shows as they do it, whatever carries it between them
548
751
  * (Yjs awareness, or an encrypted relay): what they're dragging, and the note or text they're changing. What they end
@@ -600,105 +803,6 @@ declare const sendMove: (live: LiveMoves | undefined, kind: NonNullable<Moving["
600
803
  */
601
804
  declare function useRemoteMoves(live: LiveMoves | undefined, kind: NonNullable<Moving["kind"]>): ReadonlyMap<string, XYPosition>;
602
805
 
603
- /**
604
- * The kinds of node people (and agents) can put on a canvas, and what's in their data. Shared by the browser and
605
- * the server, so it has no UI in it: the icons for each type are in components/icons.ts.
606
- */
607
- type NodeCategory = "boundaries" | "people" | "messages" | "architecture" | "data" | "other";
608
- declare const NODE_CATEGORIES: {
609
- id: NodeCategory;
610
- label: string;
611
- }[];
612
- /** The catalog collections whose resources can go on a canvas */
613
- declare const CATALOG_COLLECTIONS: readonly ["domains", "systems", "services", "events", "commands", "queries", "channels", "containers"];
614
- type CatalogCollection = (typeof CATALOG_COLLECTIONS)[number];
615
- declare const isCatalogCollection: (collection: string) => collection is CatalogCollection;
616
- /** Domains and systems as containers: boxes other nodes sit in */
617
- declare const GROUP_TYPES: {
618
- readonly domain: "domain-group";
619
- readonly system: "system-group";
620
- };
621
- declare const isGroupType: (type?: string) => type is "domain-group" | "system-group";
622
- type NodeDefinition = {
623
- /** React Flow node type, matches the visualiser node component keys */
624
- type: string;
625
- /** Its key in the components list when several share a node type (the kinds of data store); else its type */
626
- id?: string;
627
- label: string;
628
- /** What it is, in a few words (beside its name in the components list) */
629
- summary?: string;
630
- category: NodeCategory;
631
- /** Not in the components list (still drawn, for canvases that have them) */
632
- unlisted?: boolean;
633
- /** Where the resource lives inside node.data (e.g. `service` for data.service). Undefined = data root */
634
- resourceKey?: string;
635
- /** Nodes that are sized on the canvas (containers, notes, text) start at this size */
636
- defaultSize?: {
637
- width: number;
638
- height: number;
639
- };
640
- /** Only its width is set: its height follows what's in it (notes) */
641
- autoHeight?: boolean;
642
- /** Neither is set: it's as big as what's in it (text, as Excalidraw's; defaultSize is only where it's put) */
643
- autoSize?: boolean;
644
- /**
645
- * The first level of detail that shows it (it's on the more detailed ones too, see levels.ts): L1 domains, systems
646
- * and actors, L2 services, data stores, text and the like, L3 messages and channels. Notes are on every level.
647
- */
648
- firstLevel: 1 | 2 | 3;
649
- createData: () => Record<string, unknown>;
650
- };
651
- declare const nodeDefinitions: NodeDefinition[];
652
- /** A component's key in the components list (and what's dragged from it) */
653
- declare const componentKey: (definition: NodeDefinition) => string;
654
- /** The types people and agents can add (not the unlisted ones), each once (the kinds of data store are all `data`) */
655
- declare const COMPONENT_TYPES: [string, ...string[]];
656
- declare const getNodeDefinition: (type?: string) => NodeDefinition | undefined;
657
- declare const getNodeLabel: (type?: string) => string;
658
- declare const DEFAULT_NODE_SIZE: {
659
- width: number;
660
- height: number;
661
- };
662
- /** The size a new node of a type starts at (or, for cards, about the size it renders at) */
663
- declare const getNodeSize: (type?: string) => {
664
- width: number;
665
- height: number;
666
- };
667
- /** The resource object for a node (e.g. data.service), or the data itself for flat nodes */
668
- declare const getResource: (type: string | undefined, data: Record<string, unknown>) => Record<string, unknown>;
669
- /** Sticky notes sit on the canvas wherever they're put, never inside a container */
670
- declare const canGoInContainer: (type?: string) => boolean;
671
- /**
672
- * Whether a container can hold a kind of node, as EventCatalog's domains and systems do: a domain holds anything
673
- * (subdomains, systems, services...), a system anything but a domain
674
- */
675
- declare const canHold: (containerType?: string, type?: string) => boolean;
676
- /**
677
- * The level (L1, L2 or L3) a sticky note or text was written on: it's only shown there. Ones from before they had
678
- * levels are on L3, the canvas people edit. Other nodes are on every level they fit in, so they have none.
679
- */
680
- declare const getNoteLevel: (node: {
681
- type?: string;
682
- data: Record<string, unknown>;
683
- }) => 1 | 2 | 3 | undefined;
684
- /** Whether a node is on a level's canvas as itself: everything on L3, but notes and text only on their level */
685
- declare const isOnLevel: (node: {
686
- type?: string;
687
- data: Record<string, unknown>;
688
- }, level: 1 | 2 | 3) => boolean;
689
- /** Whether a level of detail shows a kind of node (so it can be added there, and stay there) */
690
- declare const isShownOnLevel: (type: string | undefined, level: 1 | 2 | 3) => boolean;
691
- /** Whether a node's resource has a version (actors, notes and text don't) */
692
- declare const isVersioned: (type?: string) => boolean;
693
- /** Notes and text: written on the canvas itself (their text is their data, not a resource with a name) */
694
- declare const isWrittenOnCanvas: (type?: string) => type is "note" | "text";
695
- /** Returns new node data with fields of the resource changed */
696
- declare const updateResource: (type: string | undefined, data: Record<string, unknown>, fields: Record<string, unknown>) => {
697
- [x: string]: unknown;
698
- };
699
- /** A node's name, as people and agents see it */
700
- declare const getNodeName: (type: string | undefined, data: Record<string, unknown>, fallback?: string) => string;
701
-
702
806
  /**
703
807
  * Where agents put what they add without a position, the way an architect would: next to what it connects to,
704
808
  * following the flow left to right (what sends to it on its left, what it sends to on its right), lined up with
@@ -1136,6 +1240,33 @@ declare function ContainerChooser({ kind, name, contents, position, onChoose, on
1136
1240
  onCancel: () => void;
1137
1241
  }): react_jsx_runtime.JSX.Element;
1138
1242
 
1243
+ type ConnectPlaceholderData = {
1244
+ /** The option picked out in the list, shown on the placeholder */
1245
+ choice?: {
1246
+ key: string;
1247
+ label: string;
1248
+ summary?: string;
1249
+ };
1250
+ };
1251
+ /** Where the new node goes, until what it is is chosen */
1252
+ declare const ConnectPlaceholderNode: react.NamedExoticComponent<NodeProps>;
1253
+ declare function ConnectChooser({ options, fromName, anchor, onHighlight, onChoose, onCancel, }: {
1254
+ /** What can be made (getConnectOptions), the suggested ones first */
1255
+ options: ConnectOption[];
1256
+ /** The node the connection was dragged from */
1257
+ fromName?: string;
1258
+ /** The placeholder on screen: the list goes under it (or above, near the bottom of the screen) */
1259
+ anchor: {
1260
+ x: number;
1261
+ y: number;
1262
+ width: number;
1263
+ height: number;
1264
+ };
1265
+ onHighlight: (option: ConnectOption | undefined) => void;
1266
+ onChoose: (option: ConnectOption) => void;
1267
+ onCancel: () => void;
1268
+ }): react_jsx_runtime.JSX.Element;
1269
+
1139
1270
  declare const _default: react.NamedExoticComponent<{
1140
1271
  nodeId: string;
1141
1272
  locked: boolean;
@@ -1280,7 +1411,7 @@ declare function NodeCard({ nodeId, containerRef, label, kicker, header, childre
1280
1411
  * A field of the resource's, saved as it's typed (and when it's left, or the card closes): there's nothing to press
1281
1412
  * to keep a change. Escape puts it back as it was when it was clicked into.
1282
1413
  */
1283
- declare function EditableText({ value, onSave, multiline, placeholder, className, label, required, onSaved, }: {
1414
+ declare function EditableText({ value, onSave, multiline, placeholder, className, label, required, startEmpty, onSaved, }: {
1284
1415
  value: string;
1285
1416
  onSave: (value: string) => void;
1286
1417
  multiline?: boolean;
@@ -1288,6 +1419,11 @@ declare function EditableText({ value, onSave, multiline, placeholder, className
1288
1419
  className?: string;
1289
1420
  label: string;
1290
1421
  required?: boolean;
1422
+ /**
1423
+ * Starts empty rather than showing `value` (a node just made: its name's typed straight in), and `value` is kept if
1424
+ * it's left empty
1425
+ */
1426
+ startEmpty?: boolean;
1291
1427
  /** Something was saved (to say so) */
1292
1428
  onSaved?: () => void;
1293
1429
  }): react_jsx_runtime.JSX.Element;
@@ -1319,4 +1455,4 @@ declare function Picture({ src, className, }: {
1319
1455
 
1320
1456
  declare const TeamNode: react.NamedExoticComponent<NodeProps>;
1321
1457
 
1322
- export { AgentMark, type Author, CANVAS_STATUSES, CANVAS_STATUS_LOOK, CATALOG_COLLECTIONS, CATALOG_GROUPS, CLIPBOARD_TYPE, COMPONENT_DRAG_TYPE, COMPONENT_TYPES, COUNTER_SCALE, type CanvasContent, _default$1 as CanvasControls, type CanvasMeta, CanvasPortal, type CanvasStatus, CardPreview, type CatalogCollection, ClaudeCodeLogo, ClaudeLogo, type ClipboardContent, type CommentAnchor, CommentLayer, CommentList, type ContainerChoice, ContainerChooser, ContextMenu, type ContextMenuState, CursorLogo, DEFAULT_NODE_SIZE, DIAGRAM_FILE_EXTENSION, DROP_GAP, type DiagramLevel, type DiagramLevels, type DragPreview, DropTargetContext, EDGE_COLOR, EDGE_MARKER, ENTITY_SOURCE_HANDLE, EdgeLabelPortal, EdgeRoute, _default as EditButton, EditStatus, EditableText, type Editing, EditingContext, EmptyCanvas, FIT_VIEW_OPTIONS, Field, GROUP_PADDING, GROUP_TYPES, type Hotspot, type HotspotDraft, type HotspotFields, HotspotLayer, HotspotList, type HotspotPlace, type HotspotSeverity, type HotspotSpot, KEEP_IN_CONTAINER_MARGIN, LEVELS, LOCAL_EDGE_KEYS, LOCAL_NODE_KEYS, type LayoutResult, type Level, type LevelPlace, type Link, type LiveMoves, type LivePeer, LockedContext, MESSAGE_COLLECTIONS, type MenuQuestion, type Message, type ModelCanvasContent, type Moves, type Moving, NODE_CATEGORIES, NODE_ICONS, NodeCard, type NodeCategory, type NodeDefinition, type NodeIcon, type NodePreview, OpenAILogo, Palette, PaletteItem, PaletteSection, type PaletteTab, Picture, type PresenceSource, RemeasureHandles, type RenderedSizes, SEVERITIES, SHORTCUTS, STATUS, type SavedFileHandle, ShortcutsList, type Smoother, type StartDrag, StartWritingContext, type StatusChange, TEXT_FONT_SIZE, TeamNode, type Thread, type UpdateNodeData, UpdateNodeDataContext, ViewControls, addCanvasContent, addHotspots, addNodes, addThreads, agentLogoFor, anchorAt, arrangeLevel, buildNode, bySeverity, canGoInContainer, canHold, canPickWhereToSave, canvasImage, canvasToModel, changesNodesOrEdges, cleanFileName, componentKey, connectNodes, containerFor, copyNodes, createEdge, createHotspot, createSmoother, createThread, deleteEdges, deleteHotspot, deleteNodes, deleteThread, deleteThreads, downloadFile, fileNameFor, findDropTarget, findDropTargets, findGroupAtPoint, fitContainersAround, fitGroup, fitGroupToChildren, getAbsolutePosition, getAbsoluteRect, getAnchorPosition, getCanvasMaps, getCanvasStatus, getDiagramLevel, getDiagramLevelUnavailable, getEdgeLabel, getEdgeRoute, getLayoutPositions, getLevelGraph, getLevelNodeSize, getLevelUnavailableReason, getLock, getNodeDefinition, getNodeLabel, getNodeName, getNodeSize, getNoteLevel, getResource, getStructureKey, isCatalogCollection, isDecided, isGroupType, isOnLevel, isShownOnLevel, isVersioned, isWrittenOnCanvas, keepDragged, keepUnchanged, layoutGraph, levelPlaces, modelToCanvas, moveNode, moveThread, moveThreads, nodeDefinitions, nodeTypes, pasteNodes, patchShared, pickDiagramFile, placeDropped, placeNode, placeNodes, previewContainerGrowth, readCanvas, readClipboard, readDiagramFile, readHotspots, readLevelLayout, readMeta, readThreads, reconnectEdge, reopenIfDecided, reopeningIfEdited, replyToThread, resizeNode, resourceNodeData, resourceTypeOf, saveToPickedFile, sendMove, setCanvasStatus, setEdgeLabel, setEdgeRoutes, setLevelPlaces, setLock, setMeta, setNodeParent, setNodeParents, setThreadResolved, shortId, sizeOf, sortByHierarchy, timeAgo, toDiagramFile, toRelativePosition, toSharedNode, topSeverity, updateHotspot, updateNodeData, updateResource, useCounterScale, useDragGhost, useNodeAnchor, useRemoteMoves, useSavedFlash, withDescendants, withDiagramRoutes, withGroupSizes, withLocalState, withParent, withPositions };
1458
+ export { AgentMark, type Author, CANVAS_STATUSES, CANVAS_STATUS_LOOK, CATALOG_COLLECTIONS, CATALOG_GROUPS, CLIPBOARD_TYPE, COMPONENT_DRAG_TYPE, COMPONENT_TYPES, CONNECT_MIN_DISTANCE, CONNECT_PLACEHOLDER, CONNECT_PLACEHOLDER_EDGE, CONNECT_PLACEHOLDER_SIZE, COUNTER_SCALE, type CanvasContent, _default$1 as CanvasControls, type CanvasMeta, CanvasPortal, type CanvasStatus, CardPreview, type CatalogCollection, ClaudeCodeLogo, ClaudeLogo, type ClipboardContent, type CommentAnchor, CommentLayer, CommentList, ConnectChooser, type ConnectOption, type ConnectPlaceholderData, ConnectPlaceholderNode, type ContainerChoice, ContainerChooser, ContextMenu, type ContextMenuState, CursorLogo, DEFAULT_NODE_SIZE, DIAGRAM_FILE_EXTENSION, DROP_GAP, type DiagramLevel, type DiagramLevels, type DragPreview, DropTargetContext, EDGE_COLOR, EDGE_MARKER, ENTITY_SOURCE_HANDLE, EdgeLabelPortal, EdgeRoute, _default as EditButton, EditStatus, EditableText, type Editing, EditingContext, EmptyCanvas, FIT_VIEW_OPTIONS, Field, GROUP_PADDING, GROUP_TYPES, type Hotspot, type HotspotDraft, type HotspotFields, HotspotLayer, HotspotList, type HotspotPlace, type HotspotSeverity, type HotspotSpot, KEEP_IN_CONTAINER_MARGIN, LEVELS, LOCAL_EDGE_KEYS, LOCAL_NODE_KEYS, type LayoutResult, type Level, type LevelPlace, type Link, type LiveMoves, type LivePeer, LockedContext, MESSAGE_COLLECTIONS, type MenuQuestion, type Message, type ModelCanvasContent, type Moves, type Moving, NODE_CATEGORIES, NODE_ICONS, type NewLink, NodeCard, type NodeCategory, type NodeDefinition, type NodeIcon, type NodePreview, OpenAILogo, Palette, PaletteItem, PaletteSection, type PaletteTab, Picture, type PresenceSource, RemeasureHandles, type RenderedSizes, SEVERITIES, SHORTCUTS, STATUS, type SavedFileHandle, ShortcutsList, type Smoother, type StartDrag, StartWritingContext, type StatusChange, TEXT_FONT_SIZE, TeamNode, type Thread, type UpdateNodeData, UpdateNodeDataContext, ViewControls, addCanvasContent, addHotspots, addNodes, addThreads, agentLogoFor, anchorAt, arrangeLevel, buildNode, bySeverity, canGoInContainer, canHold, canPickWhereToSave, canvasImage, canvasToModel, centreBeyond, changesNodesOrEdges, cleanFileName, componentKey, connectNodes, connectedType, containerFor, copyNodes, createEdge, createHotspot, createSmoother, createThread, deleteEdges, deleteHotspot, deleteNodes, deleteThread, deleteThreads, downloadFile, fileNameFor, filterConnectOptions, findDropTarget, findDropTargets, findGroupAtPoint, fitContainersAround, fitGroup, fitGroupToChildren, getAbsolutePosition, getAbsoluteRect, getAnchorPosition, getCanvasMaps, getCanvasStatus, getConnectOptions, getDiagramLevel, getDiagramLevelUnavailable, getEdgeLabel, getEdgeRoute, getLayoutPositions, getLevelGraph, getLevelNodeSize, getLevelUnavailableReason, getLock, getNodeDefinition, getNodeLabel, getNodeName, getNodeSize, getNoteLevel, getResource, getStructureKey, isAwayFrom, isCardType, isCatalogCollection, isDecided, isEmptyCanvasAt, isGroupType, isOnLevel, isShownOnLevel, isVersioned, isWrittenOnCanvas, keepDragged, keepUnchanged, layoutGraph, levelPlaces, linkConnection, modelToCanvas, moveNode, moveThread, moveThreads, newCardData, nodeDefinitions, nodeTypes, notPlaceholder, pasteNodes, patchShared, pickDiagramFile, placeDropped, placeNode, placeNodes, previewContainerGrowth, readCanvas, readClipboard, readDiagramFile, readHotspots, readLevelLayout, readMeta, readThreads, reconnectEdge, reopenIfDecided, reopeningIfEdited, replyToThread, resizeNode, resourceNodeData, resourceTypeOf, saveToPickedFile, sendMove, setCanvasStatus, setEdgeLabel, setEdgeRoutes, setLevelPlaces, setLock, setMeta, setNodeParent, setNodeParents, setThreadResolved, shortId, sizeOf, sortByHierarchy, timeAgo, toDiagramFile, toRelativePosition, toSharedNode, topSeverity, updateHotspot, updateNodeData, updateResource, useConnectNew, useCounterScale, useDragGhost, useNodeAnchor, useRemoteMoves, useSavedFlash, withDescendants, withDiagramRoutes, withGroupSizes, withLocalState, withParent, withPositions };