@aetherwing/fcp-drawio 0.2.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 (105) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +119 -0
  3. package/dist/adapter.d.ts +38 -0
  4. package/dist/adapter.js +259 -0
  5. package/dist/adapter.js.map +1 -0
  6. package/dist/index.d.ts +1 -0
  7. package/dist/index.js +6 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/layout/elk-layout.d.ts +49 -0
  10. package/dist/layout/elk-layout.js +144 -0
  11. package/dist/layout/elk-layout.js.map +1 -0
  12. package/dist/lib/drawio-cli.d.ts +22 -0
  13. package/dist/lib/drawio-cli.js +88 -0
  14. package/dist/lib/drawio-cli.js.map +1 -0
  15. package/dist/lib/node-types.d.ts +22 -0
  16. package/dist/lib/node-types.js +174 -0
  17. package/dist/lib/node-types.js.map +1 -0
  18. package/dist/lib/stencils/aws.d.ts +2 -0
  19. package/dist/lib/stencils/aws.js +69 -0
  20. package/dist/lib/stencils/aws.js.map +1 -0
  21. package/dist/lib/stencils/azure.d.ts +2 -0
  22. package/dist/lib/stencils/azure.js +54 -0
  23. package/dist/lib/stencils/azure.js.map +1 -0
  24. package/dist/lib/stencils/cisco.d.ts +2 -0
  25. package/dist/lib/stencils/cisco.js +30 -0
  26. package/dist/lib/stencils/cisco.js.map +1 -0
  27. package/dist/lib/stencils/gcp.d.ts +2 -0
  28. package/dist/lib/stencils/gcp.js +38 -0
  29. package/dist/lib/stencils/gcp.js.map +1 -0
  30. package/dist/lib/stencils/ibm.d.ts +2 -0
  31. package/dist/lib/stencils/ibm.js +32 -0
  32. package/dist/lib/stencils/ibm.js.map +1 -0
  33. package/dist/lib/stencils/index.d.ts +10 -0
  34. package/dist/lib/stencils/index.js +33 -0
  35. package/dist/lib/stencils/index.js.map +1 -0
  36. package/dist/lib/stencils/k8s.d.ts +2 -0
  37. package/dist/lib/stencils/k8s.js +32 -0
  38. package/dist/lib/stencils/k8s.js.map +1 -0
  39. package/dist/lib/stencils/types.d.ts +14 -0
  40. package/dist/lib/stencils/types.js +2 -0
  41. package/dist/lib/stencils/types.js.map +1 -0
  42. package/dist/lib/themes.d.ts +8 -0
  43. package/dist/lib/themes.js +32 -0
  44. package/dist/lib/themes.js.map +1 -0
  45. package/dist/model/defaults.d.ts +3 -0
  46. package/dist/model/defaults.js +26 -0
  47. package/dist/model/defaults.js.map +1 -0
  48. package/dist/model/diagram-model.d.ts +110 -0
  49. package/dist/model/diagram-model.js +938 -0
  50. package/dist/model/diagram-model.js.map +1 -0
  51. package/dist/model/event-log.d.ts +30 -0
  52. package/dist/model/event-log.js +112 -0
  53. package/dist/model/event-log.js.map +1 -0
  54. package/dist/model/id.d.ts +9 -0
  55. package/dist/model/id.js +35 -0
  56. package/dist/model/id.js.map +1 -0
  57. package/dist/model/reference-registry.d.ts +33 -0
  58. package/dist/model/reference-registry.js +143 -0
  59. package/dist/model/reference-registry.js.map +1 -0
  60. package/dist/model/spatial.d.ts +20 -0
  61. package/dist/model/spatial.js +59 -0
  62. package/dist/model/spatial.js.map +1 -0
  63. package/dist/parser/parse-op.d.ts +18 -0
  64. package/dist/parser/parse-op.js +430 -0
  65. package/dist/parser/parse-op.js.map +1 -0
  66. package/dist/parser/resolve-ref.d.ts +27 -0
  67. package/dist/parser/resolve-ref.js +232 -0
  68. package/dist/parser/resolve-ref.js.map +1 -0
  69. package/dist/parser/tokenizer.d.ts +6 -0
  70. package/dist/parser/tokenizer.js +7 -0
  71. package/dist/parser/tokenizer.js.map +1 -0
  72. package/dist/serialization/connector-intelligence.d.ts +35 -0
  73. package/dist/serialization/connector-intelligence.js +336 -0
  74. package/dist/serialization/connector-intelligence.js.map +1 -0
  75. package/dist/serialization/deserialize.d.ts +6 -0
  76. package/dist/serialization/deserialize.js +511 -0
  77. package/dist/serialization/deserialize.js.map +1 -0
  78. package/dist/serialization/serialize.d.ts +15 -0
  79. package/dist/serialization/serialize.js +332 -0
  80. package/dist/serialization/serialize.js.map +1 -0
  81. package/dist/server/intent-layer.d.ts +48 -0
  82. package/dist/server/intent-layer.js +1322 -0
  83. package/dist/server/intent-layer.js.map +1 -0
  84. package/dist/server/mcp-server.d.ts +7 -0
  85. package/dist/server/mcp-server.js +26 -0
  86. package/dist/server/mcp-server.js.map +1 -0
  87. package/dist/server/model-map.d.ts +8 -0
  88. package/dist/server/model-map.js +240 -0
  89. package/dist/server/model-map.js.map +1 -0
  90. package/dist/server/query-handler.d.ts +19 -0
  91. package/dist/server/query-handler.js +148 -0
  92. package/dist/server/query-handler.js.map +1 -0
  93. package/dist/server/response-formatter.d.ts +56 -0
  94. package/dist/server/response-formatter.js +351 -0
  95. package/dist/server/response-formatter.js.map +1 -0
  96. package/dist/server/session-handler.d.ts +6 -0
  97. package/dist/server/session-handler.js +127 -0
  98. package/dist/server/session-handler.js.map +1 -0
  99. package/dist/types/index.d.ts +238 -0
  100. package/dist/types/index.js +3 -0
  101. package/dist/types/index.js.map +1 -0
  102. package/dist/verb-specs.d.ts +6 -0
  103. package/dist/verb-specs.js +144 -0
  104. package/dist/verb-specs.js.map +1 -0
  105. package/package.json +39 -0
@@ -0,0 +1,32 @@
1
+ function ibmStyle(shape) {
2
+ return `sketch=0;aspect=fixed;html=1;dashed=0;fillColor=#4376BB;strokeColor=#ffffff;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.ibm.${shape};`;
3
+ }
4
+ export const IBM_PACK = {
5
+ id: "ibm",
6
+ name: "IBM Cloud",
7
+ prefix: "mxgraph.ibm",
8
+ entries: [
9
+ // Compute
10
+ { id: "ibm-vm", label: "Virtual Server", category: "Compute", baseStyle: ibmStyle("virtual_server_classic"), defaultWidth: 50, defaultHeight: 50 },
11
+ { id: "ibm-bare-metal", label: "Bare Metal", category: "Compute", baseStyle: ibmStyle("bare_metal_server"), defaultWidth: 50, defaultHeight: 50 },
12
+ { id: "ibm-functions", label: "Cloud Functions", category: "Compute", baseStyle: ibmStyle("cloud_functions"), defaultWidth: 50, defaultHeight: 50 },
13
+ { id: "ibm-code-engine", label: "Code Engine", category: "Compute", baseStyle: ibmStyle("code_engine"), defaultWidth: 50, defaultHeight: 50 },
14
+ // Containers
15
+ { id: "ibm-k8s", label: "Kubernetes Service", category: "Containers", baseStyle: ibmStyle("kubernetes_service"), defaultWidth: 50, defaultHeight: 50 },
16
+ { id: "ibm-openshift", label: "OpenShift", category: "Containers", baseStyle: ibmStyle("openshift"), defaultWidth: 50, defaultHeight: 50 },
17
+ { id: "ibm-registry", label: "Container Registry", category: "Containers", baseStyle: ibmStyle("container_registry"), defaultWidth: 50, defaultHeight: 50 },
18
+ // Networking
19
+ { id: "ibm-vpc", label: "VPC", category: "Networking", baseStyle: ibmStyle("vpc"), defaultWidth: 50, defaultHeight: 50 },
20
+ { id: "ibm-lb", label: "Load Balancer", category: "Networking", baseStyle: ibmStyle("load_balancer_classic"), defaultWidth: 50, defaultHeight: 50 },
21
+ { id: "ibm-dns", label: "DNS Services", category: "Networking", baseStyle: ibmStyle("dns_services"), defaultWidth: 50, defaultHeight: 50 },
22
+ // Storage
23
+ { id: "ibm-cos", label: "Object Storage", category: "Storage", baseStyle: ibmStyle("cloud_object_storage"), defaultWidth: 50, defaultHeight: 50 },
24
+ { id: "ibm-block", label: "Block Storage", category: "Storage", baseStyle: ibmStyle("block_storage"), defaultWidth: 50, defaultHeight: 50 },
25
+ // Database
26
+ { id: "ibm-db2", label: "Db2", category: "Database", baseStyle: ibmStyle("db2"), defaultWidth: 50, defaultHeight: 50 },
27
+ { id: "ibm-cloudant", label: "Cloudant", category: "Database", baseStyle: ibmStyle("cloudant"), defaultWidth: 50, defaultHeight: 50 },
28
+ // AI
29
+ { id: "ibm-watson", label: "Watson", category: "AI", baseStyle: ibmStyle("watson"), defaultWidth: 50, defaultHeight: 50 },
30
+ ],
31
+ };
32
+ //# sourceMappingURL=ibm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ibm.js","sourceRoot":"","sources":["../../../src/lib/stencils/ibm.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { StencilPack } from "./types.js";
2
+ export type { StencilEntry, StencilPack } from "./types.js";
3
+ export declare function getStencilPack(id: string): StencilPack | undefined;
4
+ export declare function listStencilPacks(): Array<{
5
+ id: string;
6
+ name: string;
7
+ entryCount: number;
8
+ }>;
9
+ /** Get all registered stencil pack prefixes for deserialize detection. */
10
+ export declare function getStencilPrefixes(): Map<string, string>;
@@ -0,0 +1,33 @@
1
+ import { AWS_PACK } from "./aws.js";
2
+ import { AZURE_PACK } from "./azure.js";
3
+ import { GCP_PACK } from "./gcp.js";
4
+ import { K8S_PACK } from "./k8s.js";
5
+ import { CISCO_PACK } from "./cisco.js";
6
+ import { IBM_PACK } from "./ibm.js";
7
+ const STENCIL_REGISTRY = new Map([
8
+ ["aws", AWS_PACK],
9
+ ["azure", AZURE_PACK],
10
+ ["gcp", GCP_PACK],
11
+ ["k8s", K8S_PACK],
12
+ ["cisco", CISCO_PACK],
13
+ ["ibm", IBM_PACK],
14
+ ]);
15
+ export function getStencilPack(id) {
16
+ return STENCIL_REGISTRY.get(id);
17
+ }
18
+ export function listStencilPacks() {
19
+ const result = [];
20
+ for (const [id, pack] of STENCIL_REGISTRY) {
21
+ result.push({ id, name: pack.name, entryCount: pack.entries.length });
22
+ }
23
+ return result;
24
+ }
25
+ /** Get all registered stencil pack prefixes for deserialize detection. */
26
+ export function getStencilPrefixes() {
27
+ const prefixes = new Map();
28
+ for (const [id, pack] of STENCIL_REGISTRY) {
29
+ prefixes.set(pack.prefix, id);
30
+ }
31
+ return prefixes;
32
+ }
33
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/stencils/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAIpC,MAAM,gBAAgB,GAA6B,IAAI,GAAG,CAAC;IACzD,CAAC,KAAK,EAAE,QAAQ,CAAC;IACjB,CAAC,OAAO,EAAE,UAAU,CAAC;IACrB,CAAC,KAAK,EAAE,QAAQ,CAAC;IACjB,CAAC,KAAK,EAAE,QAAQ,CAAC;IACjB,CAAC,OAAO,EAAE,UAAU,CAAC;IACrB,CAAC,KAAK,EAAE,QAAQ,CAAC;CAClB,CAAC,CAAC;AAEH,MAAM,UAAU,cAAc,CAAC,EAAU;IACvC,OAAO,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,MAAM,MAAM,GAA4D,EAAE,CAAC;IAC3E,KAAK,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,gBAAgB,EAAE,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,kBAAkB;IAChC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC3C,KAAK,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,gBAAgB,EAAE,CAAC;QAC1C,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { StencilPack } from "./types.js";
2
+ export declare const K8S_PACK: StencilPack;
@@ -0,0 +1,32 @@
1
+ function k8sStyle(shape) {
2
+ return `sketch=0;aspect=fixed;html=1;dashed=0;fillColor=#326CE5;strokeColor=#ffffff;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.kubernetes.${shape};`;
3
+ }
4
+ export const K8S_PACK = {
5
+ id: "k8s",
6
+ name: "Kubernetes",
7
+ prefix: "mxgraph.kubernetes",
8
+ entries: [
9
+ // Workloads
10
+ { id: "pod", label: "Pod", category: "Workloads", baseStyle: k8sStyle("pod"), defaultWidth: 50, defaultHeight: 50 },
11
+ { id: "deployment", label: "Deployment", category: "Workloads", baseStyle: k8sStyle("deploy"), defaultWidth: 50, defaultHeight: 50 },
12
+ { id: "statefulset", label: "StatefulSet", category: "Workloads", baseStyle: k8sStyle("stateful_set"), defaultWidth: 50, defaultHeight: 50 },
13
+ { id: "daemonset", label: "DaemonSet", category: "Workloads", baseStyle: k8sStyle("ds"), defaultWidth: 50, defaultHeight: 50 },
14
+ { id: "job", label: "Job", category: "Workloads", baseStyle: k8sStyle("job"), defaultWidth: 50, defaultHeight: 50 },
15
+ { id: "cronjob", label: "CronJob", category: "Workloads", baseStyle: k8sStyle("cronjob"), defaultWidth: 50, defaultHeight: 50 },
16
+ { id: "replicaset", label: "ReplicaSet", category: "Workloads", baseStyle: k8sStyle("rs"), defaultWidth: 50, defaultHeight: 50 },
17
+ // Networking
18
+ { id: "k8s-service", label: "Service", category: "Networking", baseStyle: k8sStyle("svc"), defaultWidth: 50, defaultHeight: 50 },
19
+ { id: "ingress", label: "Ingress", category: "Networking", baseStyle: k8sStyle("ing"), defaultWidth: 50, defaultHeight: 50 },
20
+ { id: "endpoint", label: "Endpoint", category: "Networking", baseStyle: k8sStyle("ep"), defaultWidth: 50, defaultHeight: 50 },
21
+ { id: "netpol", label: "NetworkPolicy", category: "Networking", baseStyle: k8sStyle("netpol"), defaultWidth: 50, defaultHeight: 50 },
22
+ // Config/Storage
23
+ { id: "configmap", label: "ConfigMap", category: "Config", baseStyle: k8sStyle("cm"), defaultWidth: 50, defaultHeight: 50 },
24
+ { id: "secret", label: "Secret", category: "Config", baseStyle: k8sStyle("secret"), defaultWidth: 50, defaultHeight: 50 },
25
+ { id: "pv", label: "PersistentVolume", category: "Storage", baseStyle: k8sStyle("pv"), defaultWidth: 50, defaultHeight: 50 },
26
+ { id: "pvc", label: "PersistentVolumeClaim", category: "Storage", baseStyle: k8sStyle("pvc"), defaultWidth: 50, defaultHeight: 50 },
27
+ // Cluster
28
+ { id: "node", label: "Node", category: "Cluster", baseStyle: k8sStyle("node"), defaultWidth: 50, defaultHeight: 50 },
29
+ { id: "namespace", label: "Namespace", category: "Cluster", baseStyle: k8sStyle("ns"), defaultWidth: 50, defaultHeight: 50 },
30
+ ],
31
+ };
32
+ //# sourceMappingURL=k8s.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"k8s.js","sourceRoot":"","sources":["../../../src/lib/stencils/k8s.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export interface StencilEntry {
2
+ id: string;
3
+ label: string;
4
+ category: string;
5
+ baseStyle: string;
6
+ defaultWidth: number;
7
+ defaultHeight: number;
8
+ }
9
+ export interface StencilPack {
10
+ id: string;
11
+ name: string;
12
+ prefix: string;
13
+ entries: StencilEntry[];
14
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/stencils/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ import type { ThemeColors, ThemeName } from "../types/index.js";
2
+ export declare const THEMES: Record<ThemeName, ThemeColors>;
3
+ export declare function isThemeName(name: string): name is ThemeName;
4
+ export declare function resolveTheme(name: string): ThemeColors | null;
5
+ /**
6
+ * Resolve a color value: either a theme name (returns fill color) or a hex color.
7
+ */
8
+ export declare function resolveColor(value: string): string | null;
@@ -0,0 +1,32 @@
1
+ export const THEMES = {
2
+ blue: { fill: "#dae8fc", stroke: "#6c8ebf" },
3
+ green: { fill: "#d5e8d4", stroke: "#82b366" },
4
+ red: { fill: "#f8cecc", stroke: "#b85450" },
5
+ yellow: { fill: "#fff2cc", stroke: "#d6b656" },
6
+ orange: { fill: "#ffe6cc", stroke: "#d79b00" },
7
+ purple: { fill: "#e1d5e7", stroke: "#9673a6" },
8
+ gray: { fill: "#f5f5f5", stroke: "#666666" },
9
+ dark: { fill: "#1a1a2e", stroke: "#16213e", fontColor: "#e0e0e0" },
10
+ white: { fill: "#ffffff", stroke: "#000000" },
11
+ };
12
+ const THEME_NAMES = new Set(Object.keys(THEMES));
13
+ export function isThemeName(name) {
14
+ return THEME_NAMES.has(name);
15
+ }
16
+ export function resolveTheme(name) {
17
+ if (isThemeName(name)) {
18
+ return THEMES[name];
19
+ }
20
+ return null;
21
+ }
22
+ /**
23
+ * Resolve a color value: either a theme name (returns fill color) or a hex color.
24
+ */
25
+ export function resolveColor(value) {
26
+ if (value.startsWith("#")) {
27
+ return value;
28
+ }
29
+ const theme = resolveTheme(value);
30
+ return theme ? theme.fill : null;
31
+ }
32
+ //# sourceMappingURL=themes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"themes.js","sourceRoot":"","sources":["../../src/lib/themes.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,MAAM,GAAmC;IACpD,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE;IAC5C,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE;IAC7C,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE;IAC3C,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE;IAC9C,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE;IAC9C,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE;IAC9C,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE;IAC5C,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE;IAClE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE;CAC9C,CAAC;AAEF,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAEjD,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,OAAO,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IAClC,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACnC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { StyleSet, EdgeStyleSet } from "../types/index.js";
2
+ export declare function createDefaultStyle(): StyleSet;
3
+ export declare function createDefaultEdgeStyle(): EdgeStyleSet;
@@ -0,0 +1,26 @@
1
+ export function createDefaultStyle() {
2
+ return {
3
+ fillColor: null,
4
+ strokeColor: null,
5
+ fontColor: null,
6
+ fontSize: null,
7
+ fontFamily: null,
8
+ fontStyle: null,
9
+ rounded: false,
10
+ dashed: false,
11
+ shadow: false,
12
+ opacity: 100,
13
+ align: null,
14
+ verticalAlign: null,
15
+ };
16
+ }
17
+ export function createDefaultEdgeStyle() {
18
+ return {
19
+ ...createDefaultStyle(),
20
+ edgeStyle: "orthogonalEdgeStyle",
21
+ curved: false,
22
+ flowAnimation: false,
23
+ dotted: false,
24
+ };
25
+ }
26
+ //# sourceMappingURL=defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/model/defaults.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,kBAAkB;IAChC,OAAO;QACL,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,IAAI;QACjB,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,IAAI;QACd,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,GAAG;QACZ,KAAK,EAAE,IAAI;QACX,aAAa,EAAE,IAAI;KACpB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO;QACL,GAAG,kBAAkB,EAAE;QACvB,SAAS,EAAE,qBAAqB;QAChC,MAAM,EAAE,KAAK;QACb,aAAa,EAAE,KAAK;QACpB,MAAM,EAAE,KAAK;KACd,CAAC;AACJ,CAAC"}
@@ -0,0 +1,110 @@
1
+ import type { Diagram, Page, Shape, Edge, Group, Layer, Bounds, Point, EdgeStyleSet, ShapeType, ArrowType, ThemeName, DiagramEvent, CustomType, CustomTheme, FlowDirection } from "../types/index.js";
2
+ import { EventLog } from "@aetherwing/fcp-core";
3
+ import { ReferenceRegistry } from "./reference-registry.js";
4
+ export declare class DiagramModel {
5
+ diagram: Diagram;
6
+ eventLog: EventLog<DiagramEvent>;
7
+ registry: ReferenceRegistry;
8
+ constructor();
9
+ createNew(title: string): void;
10
+ private createEmptyDiagram;
11
+ getActivePage(): Page;
12
+ getPageByName(name: string): Page | undefined;
13
+ switchPage(name: string): Page | null;
14
+ addPage(name: string): Page;
15
+ removePage(name: string): boolean;
16
+ addShape(label: string, type: ShapeType, options?: {
17
+ theme?: ThemeName;
18
+ near?: string;
19
+ dir?: string;
20
+ at?: Point;
21
+ inGroup?: string;
22
+ size?: {
23
+ width: number;
24
+ height: number;
25
+ };
26
+ baseStyleOverride?: string;
27
+ skipDefaultTheme?: boolean;
28
+ }): Shape;
29
+ modifyShape(id: string, changes: Partial<Pick<Shape, "label" | "type" | "bounds" | "style" | "parentGroup" | "metadata">>): Shape | null;
30
+ removeShape(id: string): Shape | null;
31
+ addEdge(sourceId: string, targetId: string, options?: {
32
+ label?: string;
33
+ style?: Partial<EdgeStyleSet>;
34
+ sourceArrow?: ArrowType;
35
+ targetArrow?: ArrowType;
36
+ }): Edge | null;
37
+ removeEdge(id: string): Edge | null;
38
+ modifyEdge(id: string, changes: Partial<Pick<Edge, "label" | "style" | "sourceArrow" | "targetArrow">>): Edge | null;
39
+ findEdge(sourceId: string, targetId: string): Edge | undefined;
40
+ createGroup(name: string, memberIds: string[]): Group | null;
41
+ dissolveGroup(groupId: string): Group | null;
42
+ getGroupByName(name: string): Group | undefined;
43
+ addLayer(name: string): Layer;
44
+ modifyLayer(layerId: string, changes: Partial<Pick<Layer, "visible" | "locked" | "name">>): Layer | null;
45
+ setFlowDirection(dir: FlowDirection): void;
46
+ setTitle(title: string): void;
47
+ defineCustomType(name: string, base: ShapeType, options?: {
48
+ theme?: ThemeName;
49
+ badge?: string;
50
+ size?: {
51
+ width: number;
52
+ height: number;
53
+ };
54
+ }): CustomType;
55
+ defineCustomTheme(name: string, fill: string, stroke: string, fontColor?: string): CustomTheme;
56
+ checkpoint(name: string): void;
57
+ undo(count?: number): DiagramEvent[];
58
+ undoTo(checkpointName: string): DiagramEvent[] | null;
59
+ redo(count?: number): DiagramEvent[];
60
+ getHistory(count: number): DiagramEvent[];
61
+ canUndo(): boolean;
62
+ canRedo(): boolean;
63
+ /** Compact state digest for drift detection. */
64
+ getDigest(): string;
65
+ /** Compute the bounding box of all shapes and groups on the active page. */
66
+ computeCanvasBounds(): Bounds | null;
67
+ /**
68
+ * Resolve a named canvas region to absolute coordinates.
69
+ * Regions: top-left, top-center, top-right, middle-left, center, middle-right,
70
+ * bottom-left, bottom-center, bottom-right
71
+ * Centers the entity of given size within the region.
72
+ */
73
+ resolveCanvasRegion(region: string, entitySize: {
74
+ width: number;
75
+ height: number;
76
+ }): Point | null;
77
+ private resolveRegionInBounds;
78
+ /** Public wrapper for recomputing group bounds. */
79
+ recomputeGroupBoundsPublic(groupId: string): void;
80
+ /**
81
+ * Detect and resolve collisions after moving an entity.
82
+ * Pushes overlapping downstream items in the flow direction.
83
+ * Returns the number of items shifted.
84
+ */
85
+ detectAndResolveCollisions(entityId: string, isGroup: boolean, maxDepth?: number): number;
86
+ private pushShape;
87
+ private pushGroup;
88
+ /**
89
+ * Apply an ELK layout result: update shape positions, edge waypoints, and recompute group bounds.
90
+ * Emits shape_modified/edge_modified events for undo support.
91
+ */
92
+ applyLayout(result: {
93
+ shapePositions: Map<string, {
94
+ x: number;
95
+ y: number;
96
+ }>;
97
+ edgeWaypoints: Map<string, Point[]>;
98
+ }): number;
99
+ private computePosition;
100
+ positionRelativeTo(ref: Bounds, size: {
101
+ width: number;
102
+ height: number;
103
+ }, dir: string): Point;
104
+ private buildShapeStyle;
105
+ private recomputeGroupBounds;
106
+ private emit;
107
+ private reverseEvent;
108
+ private replayEvent;
109
+ rebuildRegistry(): void;
110
+ }