@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,332 @@
1
+ import { NODE_TYPES } from "../lib/node-types.js";
2
+ import { computeAllEdgeRenderInfo } from "./connector-intelligence.js";
3
+ // ── XML entity escaping ─────────────────────────────────────
4
+ function escapeXml(str) {
5
+ return str
6
+ .replace(/&/g, "&")
7
+ .replace(/</g, "&lt;")
8
+ .replace(/>/g, "&gt;")
9
+ .replace(/"/g, "&quot;")
10
+ .replace(/'/g, "&apos;")
11
+ .replace(/\n/g, "&#10;");
12
+ }
13
+ function arrowTypeToStyle(arrowType) {
14
+ switch (arrowType) {
15
+ case "arrow":
16
+ return { arrow: "classic", fill: "1" };
17
+ case "open-arrow":
18
+ return { arrow: "open", fill: "0" };
19
+ case "diamond":
20
+ return { arrow: "diamond", fill: "1" };
21
+ case "circle":
22
+ return { arrow: "oval", fill: "1" };
23
+ case "crow-foot":
24
+ return { arrow: "ERmany", fill: "0" };
25
+ case "none":
26
+ return { arrow: "none", fill: "0" };
27
+ default:
28
+ return null;
29
+ }
30
+ }
31
+ // ── Style string builders ───────────────────────────────────
32
+ /**
33
+ * Build a draw.io style string for a shape.
34
+ * Pattern: baseStyleFromNodeType;fillColor=#xxx;strokeColor=#xxx;fontSize=12;...
35
+ */
36
+ export function buildShapeStyleString(shape) {
37
+ const parts = [];
38
+ // Use baseStyleOverride (from stencil packs) if present, otherwise fall back to NODE_TYPES
39
+ const baseStyle = shape.baseStyleOverride ?? NODE_TYPES[shape.type]?.baseStyle;
40
+ if (baseStyle) {
41
+ parts.push(baseStyle.replace(/;$/, ""));
42
+ }
43
+ // Append style properties
44
+ const style = shape.style;
45
+ if (style.fillColor)
46
+ parts.push(`fillColor=${style.fillColor}`);
47
+ if (style.strokeColor)
48
+ parts.push(`strokeColor=${style.strokeColor}`);
49
+ if (style.fontColor)
50
+ parts.push(`fontColor=${style.fontColor}`);
51
+ if (style.fontSize !== null)
52
+ parts.push(`fontSize=${style.fontSize}`);
53
+ if (style.fontFamily)
54
+ parts.push(`fontFamily=${style.fontFamily}`);
55
+ if (style.fontStyle !== null && style.fontStyle !== 0)
56
+ parts.push(`fontStyle=${style.fontStyle}`);
57
+ if (style.rounded && !(baseStyle?.includes("rounded=1")))
58
+ parts.push("rounded=1");
59
+ if (style.dashed)
60
+ parts.push("dashed=1");
61
+ if (style.shadow)
62
+ parts.push("shadow=1");
63
+ if (style.opacity !== 100)
64
+ parts.push(`opacity=${style.opacity}`);
65
+ if (style.align)
66
+ parts.push(`align=${style.align}`);
67
+ if (style.verticalAlign)
68
+ parts.push(`verticalAlign=${style.verticalAlign}`);
69
+ // Append any extensible/unknown properties
70
+ for (const [key, value] of Object.entries(style)) {
71
+ if (isKnownStyleKey(key))
72
+ continue;
73
+ if (value !== null && value !== undefined && value !== "") {
74
+ parts.push(`${key}=${value}`);
75
+ }
76
+ }
77
+ return parts.join(";") + ";";
78
+ }
79
+ /**
80
+ * Build a draw.io style string for an edge.
81
+ */
82
+ export function buildEdgeStyleString(edge) {
83
+ const parts = [];
84
+ const style = edge.style;
85
+ // Edge base style
86
+ parts.push(`edgeStyle=${style.edgeStyle || "orthogonalEdgeStyle"}`);
87
+ if (style.curved) {
88
+ parts.push("curved=1");
89
+ }
90
+ else {
91
+ parts.push("rounded=1");
92
+ }
93
+ parts.push("orthogonalLoop=1");
94
+ parts.push("jettySize=auto");
95
+ parts.push("html=1");
96
+ // Edge line style
97
+ if (style.dashed)
98
+ parts.push("dashed=1");
99
+ if (style.dotted)
100
+ parts.push("dashPattern=1 3");
101
+ if (style.fillColor)
102
+ parts.push(`fillColor=${style.fillColor}`);
103
+ if (style.strokeColor)
104
+ parts.push(`strokeColor=${style.strokeColor}`);
105
+ if (style.fontColor)
106
+ parts.push(`fontColor=${style.fontColor}`);
107
+ if (style.fontSize !== null)
108
+ parts.push(`fontSize=${style.fontSize}`);
109
+ if (style.fontFamily)
110
+ parts.push(`fontFamily=${style.fontFamily}`);
111
+ if (style.fontStyle !== null && style.fontStyle !== 0)
112
+ parts.push(`fontStyle=${style.fontStyle}`);
113
+ if (style.shadow)
114
+ parts.push("shadow=1");
115
+ if (style.opacity !== 100)
116
+ parts.push(`opacity=${style.opacity}`);
117
+ // Stroke width for thick style
118
+ const strokeWidth = style["strokeWidth"];
119
+ if (strokeWidth !== undefined && strokeWidth !== null) {
120
+ parts.push(`strokeWidth=${strokeWidth}`);
121
+ }
122
+ // Flow animation
123
+ if (style.flowAnimation)
124
+ parts.push("flowAnimation=1");
125
+ // Target arrow
126
+ const targetParts = arrowTypeToStyle(edge.targetArrow);
127
+ if (targetParts) {
128
+ // "arrow" (classic) is the default, only emit if non-default
129
+ if (edge.targetArrow !== "arrow") {
130
+ parts.push(`endArrow=${targetParts.arrow}`);
131
+ parts.push(`endFill=${targetParts.fill}`);
132
+ }
133
+ }
134
+ // Source arrow
135
+ const sourceParts = arrowTypeToStyle(edge.sourceArrow);
136
+ if (sourceParts) {
137
+ if (edge.sourceArrow !== "none") {
138
+ parts.push(`startArrow=${sourceParts.arrow}`);
139
+ parts.push(`startFill=${sourceParts.fill}`);
140
+ }
141
+ }
142
+ // Append any extensible/unknown properties
143
+ for (const [key, value] of Object.entries(style)) {
144
+ if (isKnownEdgeStyleKey(key))
145
+ continue;
146
+ if (value !== null && value !== undefined && value !== "") {
147
+ parts.push(`${key}=${value}`);
148
+ }
149
+ }
150
+ return parts.join(";") + ";";
151
+ }
152
+ const KNOWN_STYLE_KEYS = new Set([
153
+ "fillColor", "strokeColor", "fontColor", "fontSize", "fontFamily",
154
+ "fontStyle", "rounded", "dashed", "shadow", "opacity", "align", "verticalAlign",
155
+ ]);
156
+ const KNOWN_EDGE_STYLE_KEYS = new Set([
157
+ ...KNOWN_STYLE_KEYS,
158
+ "edgeStyle", "curved", "flowAnimation", "strokeWidth", "dotted",
159
+ ]);
160
+ function isKnownStyleKey(key) {
161
+ return KNOWN_STYLE_KEYS.has(key);
162
+ }
163
+ function isKnownEdgeStyleKey(key) {
164
+ return KNOWN_EDGE_STYLE_KEYS.has(key);
165
+ }
166
+ // ── Edge style + port helpers ────────────────────────────────
167
+ /**
168
+ * Build edge style string, injecting port exit/entry points if provided by connector intelligence.
169
+ */
170
+ function buildEdgeStyleStringWithPorts(edge, renderInfo) {
171
+ const base = buildEdgeStyleString(edge);
172
+ if (!renderInfo?.ports)
173
+ return base;
174
+ const ports = renderInfo.ports;
175
+ // Remove trailing semicolon, append port styles, re-add semicolon
176
+ const withoutTrailing = base.replace(/;$/, "");
177
+ return `${withoutTrailing};exitX=${ports.exitX};exitY=${ports.exitY};exitDx=0;exitDy=0;entryX=${ports.entryX};entryY=${ports.entryY};entryDx=0;entryDy=0;`;
178
+ }
179
+ /**
180
+ * Build inner geometry content for an edge (waypoints and/or label offset).
181
+ * Returns null if the geometry should be self-closing.
182
+ */
183
+ function buildEdgeGeometryInner(edge, renderInfo) {
184
+ const parts = [];
185
+ // Waypoints
186
+ if (edge.waypoints.length > 0) {
187
+ const wpLines = edge.waypoints.map((wp) => ` <mxPoint x="${wp.x}" y="${wp.y}"/>`);
188
+ parts.push(` <Array as="points">\n` +
189
+ wpLines.join("\n") + "\n" +
190
+ ` </Array>`);
191
+ }
192
+ // Label offset
193
+ if (renderInfo && (renderInfo.labelOffsetX !== 0 || renderInfo.labelOffsetY !== 0)) {
194
+ parts.push(` <mxPoint x="${renderInfo.labelOffsetX}" y="${renderInfo.labelOffsetY}" as="offset"/>`);
195
+ }
196
+ if (parts.length === 0)
197
+ return null;
198
+ return parts.join("\n");
199
+ }
200
+ // ── Serialization ───────────────────────────────────────────
201
+ function serializePage(page) {
202
+ const cells = [];
203
+ // Foundation cells
204
+ cells.push(` <mxCell id="0"/>`);
205
+ // Default layer — use the model's actual defaultLayer ID so child cells can reference it
206
+ cells.push(` <mxCell id="${escapeXml(page.defaultLayer)}" parent="0"/>`);
207
+ // Additional layers (beyond default)
208
+ for (const layer of page.layers) {
209
+ if (layer.id === page.defaultLayer)
210
+ continue;
211
+ cells.push(` <mxCell id="${escapeXml(layer.id)}" value="${escapeXml(layer.name)}" parent="0"/>`);
212
+ }
213
+ // Groups (containers)
214
+ for (const [, group] of page.groups) {
215
+ if (!group.isContainer)
216
+ continue;
217
+ const groupStyle = buildGroupStyleString(group);
218
+ const b = group.bounds;
219
+ cells.push(` <mxCell id="${escapeXml(group.id)}" value="${escapeXml(group.name)}" style="${escapeXml(groupStyle)}" vertex="1" connectable="0" parent="${escapeXml(page.defaultLayer)}">\n` +
220
+ ` <mxGeometry x="${b.x}" y="${b.y}" width="${b.width}" height="${b.height}" as="geometry"/>\n` +
221
+ ` </mxCell>`);
222
+ }
223
+ // Shapes
224
+ for (const [, shape] of page.shapes) {
225
+ const styleStr = buildShapeStyleString(shape);
226
+ const b = shape.bounds;
227
+ const parent = shape.parentGroup ?? shape.layer;
228
+ // If parented to a group, convert absolute coords to container-relative
229
+ let x = b.x;
230
+ let y = b.y;
231
+ if (shape.parentGroup) {
232
+ const group = page.groups.get(shape.parentGroup);
233
+ if (group) {
234
+ x = b.x - group.bounds.x;
235
+ y = b.y - group.bounds.y;
236
+ }
237
+ }
238
+ cells.push(` <mxCell id="${escapeXml(shape.id)}" value="${escapeXml(shape.label)}" style="${escapeXml(styleStr)}" vertex="1" parent="${escapeXml(parent)}">\n` +
239
+ ` <mxGeometry x="${x}" y="${y}" width="${b.width}" height="${b.height}" as="geometry"/>\n` +
240
+ ` </mxCell>`);
241
+ }
242
+ // Pre-compute connector intelligence for all edges
243
+ const edgeRenderInfos = computeAllEdgeRenderInfo(page);
244
+ // Edges
245
+ for (const [, edge] of page.edges) {
246
+ const renderInfo = edgeRenderInfos.get(edge.id);
247
+ const styleStr = buildEdgeStyleStringWithPorts(edge, renderInfo);
248
+ const labelAttr = edge.label ? ` value="${escapeXml(edge.label)}"` : ` value=""`;
249
+ // Determine the layer for the edge (use the source shape's layer)
250
+ const sourcePage = page.shapes.get(edge.sourceId);
251
+ const edgeParent = sourcePage?.layer ?? page.defaultLayer;
252
+ // Build geometry inner content
253
+ const geomInner = buildEdgeGeometryInner(edge, renderInfo);
254
+ if (geomInner) {
255
+ cells.push(` <mxCell id="${escapeXml(edge.id)}"${labelAttr} style="${escapeXml(styleStr)}" edge="1" source="${escapeXml(edge.sourceId)}" target="${escapeXml(edge.targetId)}" parent="${escapeXml(edgeParent)}">\n` +
256
+ ` <mxGeometry relative="1" as="geometry">\n` +
257
+ geomInner + "\n" +
258
+ ` </mxGeometry>\n` +
259
+ ` </mxCell>`);
260
+ }
261
+ else {
262
+ cells.push(` <mxCell id="${escapeXml(edge.id)}"${labelAttr} style="${escapeXml(styleStr)}" edge="1" source="${escapeXml(edge.sourceId)}" target="${escapeXml(edge.targetId)}" parent="${escapeXml(edgeParent)}">\n` +
263
+ ` <mxGeometry relative="1" as="geometry"/>\n` +
264
+ ` </mxCell>`);
265
+ }
266
+ }
267
+ const flowAttr = page.flowDirection ? ` flowDirection="${escapeXml(page.flowDirection)}"` : "";
268
+ return (` <diagram id="${escapeXml(page.id)}" name="${escapeXml(page.name)}"${flowAttr}>\n` +
269
+ ` <mxGraphModel dx="1422" dy="762" grid="1" gridSize="10" guides="1">\n` +
270
+ ` <root>\n` +
271
+ cells.join("\n") + "\n" +
272
+ ` </root>\n` +
273
+ ` </mxGraphModel>\n` +
274
+ ` </diagram>`);
275
+ }
276
+ function buildGroupStyleString(group) {
277
+ const parts = [];
278
+ parts.push("whiteSpace=wrap");
279
+ parts.push("html=1");
280
+ parts.push("container=1");
281
+ parts.push("verticalAlign=top");
282
+ parts.push("fontStyle=1");
283
+ parts.push("swimlaneLine=0");
284
+ const style = group.style;
285
+ if (style.fillColor)
286
+ parts.push(`fillColor=${style.fillColor}`);
287
+ if (style.strokeColor)
288
+ parts.push(`strokeColor=${style.strokeColor}`);
289
+ if (style.fontColor)
290
+ parts.push(`fontColor=${style.fontColor}`);
291
+ if (style.dashed)
292
+ parts.push("dashed=1");
293
+ if (style.rounded)
294
+ parts.push("rounded=1");
295
+ if (style.shadow)
296
+ parts.push("shadow=1");
297
+ if (style.opacity !== 100)
298
+ parts.push(`opacity=${style.opacity}`);
299
+ if (group.collapsed)
300
+ parts.push("collapsed=1");
301
+ return parts.join(";") + ";";
302
+ }
303
+ /**
304
+ * Serialize a Diagram to draw.io XML (mxfile format).
305
+ * Always writes uncompressed XML — no base64/deflate encoding.
306
+ */
307
+ export function serializeDiagram(diagram) {
308
+ const meta = diagram.metadata;
309
+ const modified = escapeXml(meta.modified);
310
+ const host = escapeXml(meta.host);
311
+ const version = escapeXml(meta.version);
312
+ const pages = diagram.pages.map((page) => serializePage(page));
313
+ // Serialize custom types and themes as JSON in a fcp-meta attribute
314
+ let fcpMetaAttr = "";
315
+ const fcpMeta = {};
316
+ if (diagram.customTypes.size > 0) {
317
+ fcpMeta.customTypes = Object.fromEntries(diagram.customTypes);
318
+ }
319
+ if (diagram.customThemes.size > 0) {
320
+ fcpMeta.customThemes = Object.fromEntries(diagram.customThemes);
321
+ }
322
+ if (diagram.loadedStencilPacks.size > 0) {
323
+ fcpMeta.loadedStencilPacks = [...diagram.loadedStencilPacks];
324
+ }
325
+ if (Object.keys(fcpMeta).length > 0) {
326
+ fcpMetaAttr = ` fcp-meta="${escapeXml(JSON.stringify(fcpMeta))}"`;
327
+ }
328
+ return (`<mxfile host="${host}" modified="${modified}" version="${version}"${fcpMetaAttr}>\n` +
329
+ pages.join("\n") + "\n" +
330
+ `</mxfile>`);
331
+ }
332
+ //# sourceMappingURL=serialize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../src/serialization/serialize.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import type { OpResult } from "../types/index.js";
2
+ import { DiagramModel } from "../model/diagram-model.js";
3
+ import type { QueryResult } from "./query-handler.js";
4
+ import type { StencilEntry } from "../lib/stencils/index.js";
5
+ export declare class IntentLayer {
6
+ model: DiagramModel;
7
+ private queryHandler;
8
+ private sessionHandler;
9
+ /** O(1) lookup for loaded stencil entries by their short ID (e.g., "lambda", "s3"). */
10
+ loadedStencilEntries: Map<string, StencilEntry>;
11
+ readonly drawioCliPath: string | null;
12
+ constructor(options?: {
13
+ drawioCliPath?: string | null;
14
+ });
15
+ /** Rebuild the stencil entry lookup from loaded packs (e.g., after deserialization). */
16
+ restoreStencilPacks(): void;
17
+ /** Build a suggestion by replacing a bad ref with the suggested label in the raw op string. */
18
+ private buildTypoSuggestion;
19
+ /** Build a type-qualified suggestion for ambiguous references. */
20
+ private buildAmbiguousSuggestion;
21
+ executeOps(ops: string[]): Promise<OpResult[]>;
22
+ executeQuery(query: string): string | QueryResult | Promise<QueryResult>;
23
+ executeSession(action: string): string;
24
+ getHelp(): string;
25
+ executeSingleOp(opStr: string): Promise<OpResult>;
26
+ private dispatchOp;
27
+ private handleAdd;
28
+ private handleConnect;
29
+ private handleDisconnect;
30
+ private handleStyle;
31
+ private handleRemove;
32
+ private handleLabel;
33
+ private handleBadge;
34
+ private handleMove;
35
+ private handleMoveGroup;
36
+ private handleResize;
37
+ private handleSwap;
38
+ private handleGroup;
39
+ private handleUngroup;
40
+ private handleDefine;
41
+ private handleCheckpoint;
42
+ private handleTitle;
43
+ private handlePage;
44
+ private handleLayer;
45
+ private handleLayout;
46
+ private handleOrient;
47
+ private handleLoad;
48
+ }