@memoarchitect/tools 0.15.2 → 0.16.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 (62) hide show
  1. package/README.md +1 -1
  2. package/package.json +2 -2
  3. package/packages/tools/lib/commands/dev.d.ts.map +1 -1
  4. package/packages/tools/lib/commands/dev.js +4 -0
  5. package/packages/tools/lib/commands/dev.js.map +1 -1
  6. package/packages/tools/lib/commands/validate.d.ts.map +1 -1
  7. package/packages/tools/lib/commands/validate.js +2 -16
  8. package/packages/tools/lib/commands/validate.js.map +1 -1
  9. package/packages/tools/lib/model/complete-model.d.ts.map +1 -1
  10. package/packages/tools/lib/model/complete-model.js +59 -14
  11. package/packages/tools/lib/model/complete-model.js.map +1 -1
  12. package/packages/tools/lib/model/id-rebase.d.ts +6 -1
  13. package/packages/tools/lib/model/id-rebase.d.ts.map +1 -1
  14. package/packages/tools/lib/model/id-rebase.js +71 -36
  15. package/packages/tools/lib/model/id-rebase.js.map +1 -1
  16. package/packages/tools/lib/model/identity-registry.d.ts +26 -0
  17. package/packages/tools/lib/model/identity-registry.d.ts.map +1 -1
  18. package/packages/tools/lib/model/identity-registry.js +55 -4
  19. package/packages/tools/lib/model/identity-registry.js.map +1 -1
  20. package/packages/tools/lib/model/semantic.d.ts +72 -0
  21. package/packages/tools/lib/model/semantic.d.ts.map +1 -1
  22. package/packages/tools/lib/model/semantic.js.map +1 -1
  23. package/packages/tools/lib/model/short-id.d.ts +11 -0
  24. package/packages/tools/lib/model/short-id.d.ts.map +1 -1
  25. package/packages/tools/lib/model/short-id.js +33 -0
  26. package/packages/tools/lib/model/short-id.js.map +1 -1
  27. package/packages/tools/lib/model/view-deriver.d.ts +8 -1
  28. package/packages/tools/lib/model/view-deriver.d.ts.map +1 -1
  29. package/packages/tools/lib/model/view-deriver.js +45 -0
  30. package/packages/tools/lib/model/view-deriver.js.map +1 -1
  31. package/packages/tools/lib/operations/project-snapshot.d.ts.map +1 -1
  32. package/packages/tools/lib/operations/project-snapshot.js +3 -18
  33. package/packages/tools/lib/operations/project-snapshot.js.map +1 -1
  34. package/packages/tools/lib/protocol/messages.d.ts +56 -3
  35. package/packages/tools/lib/protocol/messages.d.ts.map +1 -1
  36. package/packages/tools/lib/server/axis-query.d.ts +9 -0
  37. package/packages/tools/lib/server/axis-query.d.ts.map +1 -0
  38. package/packages/tools/lib/server/axis-query.js +47 -0
  39. package/packages/tools/lib/server/axis-query.js.map +1 -0
  40. package/packages/tools/lib/server/dev-server.d.ts.map +1 -1
  41. package/packages/tools/lib/server/dev-server.js +46 -9
  42. package/packages/tools/lib/server/dev-server.js.map +1 -1
  43. package/packages/tools/lib/server/mutation-domain.d.ts.map +1 -1
  44. package/packages/tools/lib/server/mutation-domain.js +4 -0
  45. package/packages/tools/lib/server/mutation-domain.js.map +1 -1
  46. package/packages/tools/lib/server/user-preferences.d.ts.map +1 -1
  47. package/packages/tools/lib/server/user-preferences.js +11 -2
  48. package/packages/tools/lib/server/user-preferences.js.map +1 -1
  49. package/packages/tools/lib/server/view-writer.d.ts +25 -2
  50. package/packages/tools/lib/server/view-writer.d.ts.map +1 -1
  51. package/packages/tools/lib/server/view-writer.js +231 -27
  52. package/packages/tools/lib/server/view-writer.js.map +1 -1
  53. package/packages/tools/lib/stage2/build-from-api.js +3 -1
  54. package/packages/tools/lib/stage2/build-from-api.js.map +1 -1
  55. package/packages/tools/lib/toolchain/providers/syside-python.d.ts.map +1 -1
  56. package/packages/tools/lib/toolchain/providers/syside-python.js +3 -0
  57. package/packages/tools/lib/toolchain/providers/syside-python.js.map +1 -1
  58. package/packages/tools/lib/toolchain/providers/syside.d.ts +12 -2
  59. package/packages/tools/lib/toolchain/providers/syside.d.ts.map +1 -1
  60. package/packages/tools/lib/toolchain/providers/syside.js +20 -6
  61. package/packages/tools/lib/toolchain/providers/syside.js.map +1 -1
  62. package/packages/tools/python/memo_stage1_syside.py +40 -10
@@ -1,7 +1,7 @@
1
1
  // ─── One person's preferences for one model ─────────────────────────────────
2
2
  //
3
3
  // What a person chose for themselves in Architect while working on this model —
4
- // the role whose viewpoints they want to see, how the explorer splits its folders, and the workspace (the system of systems, or one
4
+ // the role whose viewpoints they want to see, how the explorer splits its folders, the experimental features they switched on, and the workspace (the system of systems, or one
5
5
  // system) they are working in. It is not model content
6
6
  // and not something the team shares, so it lives in one visible file at the
7
7
  // model root, `memo.user.yaml`, which the model's `.gitignore` keeps out of git
@@ -25,7 +25,7 @@ export function loadUserPreferences(projectRoot) {
25
25
  if (!existsSync(path))
26
26
  return {};
27
27
  const parsed = parseYaml(readFileSync(path, 'utf8'));
28
- return clean({ role: parsed?.role, workspace: parsed?.workspace, explorerSplit: parsed?.explorerSplit });
28
+ return clean({ role: parsed?.role, workspace: parsed?.workspace, explorerSplit: parsed?.explorerSplit, features: parsed?.features, packageFolders: parsed?.packageFolders });
29
29
  }
30
30
  /** Keep the string choices that are set, trimmed; drop the rest. */
31
31
  function clean(raw) {
@@ -35,6 +35,15 @@ function clean(raw) {
35
35
  if (typeof value === 'string' && value.trim())
36
36
  out[key] = value.trim();
37
37
  }
38
+ // Package folders are on unless the person turned them off, so only `false` is kept.
39
+ if (raw.packageFolders === false)
40
+ out.packageFolders = false;
41
+ // The feature ids switched on: a list of non-empty strings, each once, in the order given.
42
+ if (Array.isArray(raw.features)) {
43
+ const features = [...new Set(raw.features.filter((id) => typeof id === 'string' && id.trim() !== '').map(id => id.trim()))];
44
+ if (features.length > 0)
45
+ out.features = features;
46
+ }
38
47
  return out;
39
48
  }
40
49
  /** Write the person's choices; an unset choice removes its key. */
@@ -1 +1 @@
1
- {"version":3,"file":"user-preferences.js","sourceRoot":"","sources":["../../src/server/user-preferences.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,EAAE;AACF,gFAAgF;AAChF,oIAAoI;AACpI,uDAAuD;AACvD,4EAA4E;AAC5E,gFAAgF;AAChF,oEAAoE;AACpE,EAAE;AACF,8EAA8E;AAC9E,+EAA+E;AAC/E,gFAAgF;AAEhF,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,MAAM,CAAC;AAEtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,mCAAmC;AACnC,MAAM,CAAC,MAAM,qBAAqB,GAAG,gBAAgB,CAAC;AAEtD,MAAM,MAAM,GAAG;;CAEd,CAAC;AAEF,mEAAmE;AACnE,MAAM,UAAU,mBAAmB,CAAC,WAAmB;IACnD,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC;IACzD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,MAAM,MAAM,GAAG,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAmC,CAAC;IACvF,OAAO,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;AAC7G,CAAC;AAED,oEAAoE;AACpE,SAAS,KAAK,CAAC,GAA4B;IACvC,MAAM,GAAG,GAAuB,EAAE,CAAC;IACnC,KAAK,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,eAAe,CAAU,EAAE,CAAC;QAChE,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QACvB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC3E,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,mBAAmB,CAAC,WAAmB,EAAE,WAA+B;IACpF,MAAM,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,WAAW,EAAE,CAAC,CAAC;IACvC,gBAAgB,CAAC,WAAW,EAAE,qBAAqB,EAAE,iDAAiD,CAAC,CAAC;IACxG,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,qBAAqB,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;IACjG,OAAO,IAAI,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"user-preferences.js","sourceRoot":"","sources":["../../src/server/user-preferences.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { DiagramDTO, MemoModelDTO } from '../types/index.js';
1
+ import type { DiagramDTO, MatrixDefinitionDTO, MemoModelDTO } from '../types/index.js';
2
2
  import type { OutlineSource } from '../authoring/outline-source.js';
3
3
  export interface ViewWriteResult {
4
4
  success: boolean;
@@ -8,7 +8,16 @@ export interface ViewWriteResult {
8
8
  identifier?: string;
9
9
  /** True when the declaration seeded a new file. */
10
10
  created?: boolean;
11
+ /** The new view's qualified name: its element id once the model recompiles. */
12
+ qualifiedName?: string;
11
13
  }
14
+ /** The body statements a matrix definition declares, at one level of indentation. */
15
+ export declare function matrixLines(matrix: MatrixDefinitionDTO | undefined): string[];
16
+ /**
17
+ * Replace the matrix statements of a view declaration, leaving everything else
18
+ * (identity, viewpoint binding, group) as it was.
19
+ */
20
+ export declare function replaceMatrixStatements(declaration: string, matrix: MatrixDefinitionDTO | undefined, baseIndent?: string): string;
12
21
  /**
13
22
  * Write one view declaration into the project's own home for views of its kind.
14
23
  *
@@ -26,9 +35,23 @@ export interface ViewWriteResult {
26
35
  * would freeze the answer and quietly stop being true.
27
36
  */
28
37
  export declare function selectionQueryLines(diagram: DiagramDTO): string[];
29
- export declare function writeViewDeclaration(projectRoot: string, model: MemoModelDTO, diagram: DiagramDTO,
38
+ export declare function writeViewDeclaration(projectRoot: string, model: MemoModelDTO, diagram: Omit<DiagramDTO, 'id' | 'auto'> & {
39
+ id?: string;
40
+ },
30
41
  /** Outlines of the project's files, from the selected compiler. */
31
42
  outlines: OutlineSource): Promise<ViewWriteResult>;
43
+ /**
44
+ * Change a matrix view's name or definition, in its own declaration.
45
+ *
46
+ * The name is the `label` of its `@MemoIdentity`, so a rename leaves the
47
+ * element's identifier, and every reference to it, where it was. The axes and
48
+ * options are the statements `matrixLines` writes; everything else in the
49
+ * declaration is kept.
50
+ */
51
+ export declare function updateViewDeclaration(projectRoot: string, model: MemoModelDTO, diagram: DiagramDTO, change: {
52
+ name?: string;
53
+ matrix?: MatrixDefinitionDTO;
54
+ }, outlines: OutlineSource): Promise<ViewWriteResult>;
32
55
  /**
33
56
  * Change WHAT a declared view shows, by editing its `expose` members.
34
57
  *
@@ -1 +1 @@
1
- {"version":3,"file":"view-writer.d.ts","sourceRoot":"","sources":["../../src/server/view-writer.ts"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EAAE,UAAU,EAAe,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAG/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAGpE,MAAM,WAAW,eAAe;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAuFD;;;;;;GAMG;AACH;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,EAAE,CAajE;AAED,wBAAsB,oBAAoB,CACtC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU;AAC7D,mEAAmE;AACnE,QAAQ,EAAE,aAAa,GACxB,OAAO,CAAC,eAAe,CAAC,CAmF1B;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,gBAAgB,CAClC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,SAAS;AAC/F,mEAAmE;AACnE,QAAQ,EAAE,aAAa,GACxB,OAAO,CAAC,eAAe,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAuCnD;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAOtG;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACnC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9F,QAAQ,EAAE,aAAa,GACxB,OAAO,CAAC,eAAe,CAAC,CA8B1B"}
1
+ {"version":3,"file":"view-writer.d.ts","sourceRoot":"","sources":["../../src/server/view-writer.ts"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EAAE,UAAU,EAAiB,mBAAmB,EAAe,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGnH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAGpE,MAAM,WAAW,eAAe;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,+EAA+E;IAC/E,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AA8DD,qFAAqF;AACrF,wBAAgB,WAAW,CAAC,MAAM,EAAE,mBAAmB,GAAG,SAAS,GAAG,MAAM,EAAE,CAiB7E;AA8CD;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,GAAG,SAAS,EAAE,UAAU,SAAK,GAAG,MAAM,CAqB7H;AA2DD;;;;;;GAMG;AACH;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,EAAE,CAajE;AAED,wBAAsB,oBAAoB,CACtC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,GAAG,MAAM,CAAC,GAAG;IAAE,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE;AACpG,mEAAmE;AACnE,QAAQ,EAAE,aAAa,GACxB,OAAO,CAAC,eAAe,CAAC,CAsG1B;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACvC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAC7D,MAAM,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,mBAAmB,CAAA;CAAE,EACvD,QAAQ,EAAE,aAAa,GACxB,OAAO,CAAC,eAAe,CAAC,CAiC1B;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,gBAAgB,CAClC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,SAAS;AAC/F,mEAAmE;AACnE,QAAQ,EAAE,aAAa,GACxB,OAAO,CAAC,eAAe,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAuCnD;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAOtG;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACnC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9F,QAAQ,EAAE,aAAa,GACxB,OAAO,CAAC,eAAe,CAAC,CA8B1B"}
@@ -47,16 +47,155 @@ const viewDefinitionFor = (viewKind) => VIEW_DEFINITION_FOR_KIND[viewKind] ?? {
47
47
  const slug = (value) => String(value).toLowerCase().replace(/[^a-z0-9]+/g, '_').replace(/^_+|_+$/g, '') || 'view';
48
48
  const escape = (value) => String(value).replace(/\\/g, '\\\\').replace(/"/g, '\\"');
49
49
  /** A SysML identifier not already taken in this model. */
50
- function freeIdentifier(base, model) {
50
+ function freeIdentifier(base, model, packageName) {
51
51
  const cleaned = base.replace(/[^A-Za-z0-9_]/g, '') || 'view';
52
52
  const start = /^[A-Za-z_]/.test(cleaned) ? cleaned : `view${cleaned}`;
53
- if (!model.elements[start])
53
+ // An element's id is its qualified name, so the name is free when neither
54
+ // the bare form nor the form inside the target package is taken.
55
+ const taken = (name) => Boolean(model.elements[name] || (packageName && model.elements[`${packageName}::${name}`]));
56
+ if (!taken(start))
54
57
  return start;
55
58
  let n = 2;
56
- while (model.elements[`${start}_${n}`])
59
+ while (taken(`${start}_${n}`))
57
60
  n++;
58
61
  return `${start}_${n}`;
59
62
  }
63
+ // ─── Matrix declarations ─────────────────────────────────────────────────────
64
+ //
65
+ // A matrix is a `view` usage typed by MemoTraceabilityMatrixView or
66
+ // MemoDependencyMatrixView (SysML-textual-bnf.kebnf:1610 ViewUsage). Each axis
67
+ // is a redefinition of the part the definition declares —
68
+ // `part :>> rowAxis { attribute :>> query = "…"; }` (PartUsage :627,
69
+ // OwnedRedefinition :482, AttributeUsage :517) — the same shape a view's
70
+ // `selectionQuery` already takes, so the builder reads it with the code that
71
+ // reads that.
72
+ const MATRIX_PARTS = ['rowAxis', 'columnAxis', 'axis', 'criticalElements'];
73
+ const MATRIX_GROUP_TYPE = 'MemoMatrixGroup';
74
+ const MATRIX_ATTRIBUTES = ['system', 'linkTypes', 'dependencyTypes', 'containmentTypes', 'symmetric', 'ordering'];
75
+ const stringList = (values) => `(${values.map(value => `"${escape(value)}"`).join(', ')})`;
76
+ /** A string literal that survives a multi-line query: the newline is written as the escape SysML defines. */
77
+ const stringLiteral = (value) => `"${escape(value).replace(/\r?\n/g, '\\n')}"`;
78
+ function axisLines(name, axis) {
79
+ if (!axis || (!axis.query?.trim() && !(axis.elementIds?.length)))
80
+ return [];
81
+ return [
82
+ ` part :>> ${name} {`,
83
+ ...(axis.query?.trim() ? [` attribute :>> query = ${stringLiteral(axis.query.trim())};`] : []),
84
+ ...(axis.elementIds?.length ? [` attribute :>> includeElementIds = ${stringList(axis.elementIds)};`] : []),
85
+ ' }',
86
+ ];
87
+ }
88
+ /** The body statements a matrix definition declares, at one level of indentation. */
89
+ export function matrixLines(matrix) {
90
+ if (!matrix)
91
+ return [];
92
+ const list = (name, values) => values?.length ? [` attribute :>> ${name} = ${stringList(values)};`] : [];
93
+ return [
94
+ ...(matrix.system ? [` attribute :>> system = ${stringLiteral(matrix.system)};`] : []),
95
+ ...axisLines('rowAxis', matrix.rowAxis),
96
+ ...axisLines('columnAxis', matrix.columnAxis),
97
+ ...axisLines('axis', matrix.axis),
98
+ ...list('linkTypes', matrix.linkTypes),
99
+ ...list('dependencyTypes', matrix.dependencyTypes),
100
+ ...list('containmentTypes', matrix.containmentTypes),
101
+ ...(matrix.symmetric === undefined ? [] : [` attribute :>> symmetric = ${matrix.symmetric};`]),
102
+ ...(matrix.ordering ? [` attribute :>> ordering = MatrixOrderingKind::${matrix.ordering};`] : []),
103
+ ...axisLines('criticalElements', matrix.criticalElements),
104
+ ...groupLines(matrix.groups),
105
+ ];
106
+ }
107
+ /**
108
+ * Each named group is a typed part of the view that subsets the `groups` the
109
+ * definition declares (PartUsage, SysML-textual-bnf.kebnf:627), so several can
110
+ * coexist where a redefinition could be stated once.
111
+ */
112
+ function groupLines(groups) {
113
+ return (groups ?? []).flatMap((group, index) => [
114
+ ` part group${index + 1} : ${MATRIX_GROUP_TYPE} :> groups {`,
115
+ ` attribute :>> groupName = ${stringLiteral(group.name)};`,
116
+ ` attribute :>> groupedBy = MatrixGroupKind::${group.groupedBy};`,
117
+ ...(group.expression?.trim() ? [` attribute :>> expression = ${stringLiteral(group.expression.trim())};`] : []),
118
+ ' }',
119
+ ]);
120
+ }
121
+ /**
122
+ * The top-level items of a declaration's body, as [start, end) offsets into the
123
+ * body text. Strings and comments are skipped, so a `}` inside a query does not
124
+ * close a block.
125
+ */
126
+ function bodyItems(body) {
127
+ const items = [];
128
+ let depth = 0;
129
+ let start = -1;
130
+ for (let i = 0; i < body.length; i++) {
131
+ const c = body[i];
132
+ if (c === '"' || c === "'") {
133
+ const quote = c;
134
+ for (i++; i < body.length && body[i] !== quote; i++)
135
+ if (body[i] === '\\')
136
+ i++;
137
+ continue;
138
+ }
139
+ if (c === '/' && body[i + 1] === '/') {
140
+ while (i < body.length && body[i] !== '\n')
141
+ i++;
142
+ continue;
143
+ }
144
+ if (c === '/' && body[i + 1] === '*') {
145
+ i = body.indexOf('*/', i + 2);
146
+ if (i < 0)
147
+ break;
148
+ i++;
149
+ continue;
150
+ }
151
+ if (/\s/.test(c) && depth === 0 && start < 0)
152
+ continue;
153
+ if (start < 0)
154
+ start = i;
155
+ if (c === '{')
156
+ depth++;
157
+ else if (c === '}') {
158
+ depth--;
159
+ if (depth === 0) {
160
+ items.push([start, i + 1]);
161
+ start = -1;
162
+ }
163
+ }
164
+ else if (c === ';' && depth === 0) {
165
+ items.push([start, i + 1]);
166
+ start = -1;
167
+ }
168
+ }
169
+ return items;
170
+ }
171
+ /**
172
+ * Replace the matrix statements of a view declaration, leaving everything else
173
+ * (identity, viewpoint binding, group) as it was.
174
+ */
175
+ export function replaceMatrixStatements(declaration, matrix, baseIndent = '') {
176
+ const open = declaration.indexOf('{');
177
+ const close = declaration.lastIndexOf('}');
178
+ if (open < 0 || close < open)
179
+ return declaration;
180
+ const body = declaration.slice(open + 1, close);
181
+ const owned = new RegExp(`^(part\\s+\\w+\\s*:\\s*${MATRIX_GROUP_TYPE}\\b|part\\s*:>>\\s*(${MATRIX_PARTS.join('|')})\\b|attribute\\s*:>>\\s*(${MATRIX_ATTRIBUTES.join('|')})\\b)`);
182
+ let kept = '';
183
+ let cursor = 0;
184
+ for (const [from, to] of bodyItems(body)) {
185
+ if (owned.test(body.slice(from, to))) {
186
+ kept += body.slice(cursor, from).replace(/[ \t]*$/, '');
187
+ cursor = to;
188
+ // swallow the rest of the line the removed item ended on
189
+ const eol = body.indexOf('\n', cursor);
190
+ if (eol >= 0 && body.slice(cursor, eol).trim() === '')
191
+ cursor = eol + 1;
192
+ }
193
+ }
194
+ kept += body.slice(cursor);
195
+ const added = matrixLines(matrix).map(line => `${baseIndent}${line}`);
196
+ const trimmed = kept.replace(/\s+$/, '');
197
+ return `${declaration.slice(0, open + 1)}${trimmed}${added.length ? `\n${added.join('\n')}` : ''}\n${baseIndent}${declaration.slice(close)}`;
198
+ }
60
199
  /**
61
200
  * The views this project already declares for a kind.
62
201
  *
@@ -150,13 +289,23 @@ export function selectionQueryLines(diagram) {
150
289
  export async function writeViewDeclaration(projectRoot, model, diagram,
151
290
  /** Outlines of the project's files, from the selected compiler. */
152
291
  outlines) {
153
- const home = conventionalHome(siblingViews(model, diagram.viewKind ?? null));
154
- const bootstrap = home ? undefined : bootstrapHome(projectRoot, model, diagram);
155
- if (!home && !bootstrap) {
292
+ // A matrix names its package: the person chose a folder in the tree, and the
293
+ // declaration goes into a file that declares it. Every other view learns its
294
+ // home from the views the project already has.
295
+ const chosen = diagram.package ? model.packages?.find(pkg => pkg.qualifiedName === diagram.package) : undefined;
296
+ if (diagram.package && !chosen) {
297
+ return { success: false, reason: `the package ${diagram.package} is not declared in this project` };
298
+ }
299
+ // A matrix with no package joins the project's commonest home for views of ANY kind: there is rarely a
300
+ // sibling matrix, and a package invented for the first one would be a new place to look.
301
+ const isMatrixView = Boolean(diagram.viewDefinition && diagram.matrix);
302
+ const home = chosen ? undefined : conventionalHome(siblingViews(model, isMatrixView ? null : diagram.viewKind ?? null));
303
+ const bootstrap = chosen || home ? undefined : bootstrapHome(projectRoot, model, diagram);
304
+ if (!chosen && !home && !bootstrap) {
156
305
  return { success: false, reason: 'this project declares no view at all, so there is no convention to place one by' };
157
306
  }
158
- const exemplar = home ? home.members[0] : bootstrap.exemplar;
159
- const targetFile = home ? home.file : bootstrap.file;
307
+ const exemplar = chosen ? undefined : home ? home.members[0] : bootstrap.exemplar;
308
+ const targetFile = chosen ? chosen.file : home ? home.file : bootstrap.file;
160
309
  const absolute = resolve(projectRoot, targetFile);
161
310
  if (bootstrap && !existsSync(absolute)) {
162
311
  mkdirSync(dirname(absolute), { recursive: true });
@@ -183,27 +332,30 @@ outlines) {
183
332
  return { success: false, reason: `${targetFile} cannot be edited: ${e instanceof Error ? e.message : String(e)}` };
184
333
  }
185
334
  const packages = locatePackages(outline);
186
- const wanted = bootstrap ? bootstrap.pkg : exemplar.package;
187
- const target = packages.find(pkg => pkg.qualifiedName === wanted) ?? packages[0];
335
+ const wanted = chosen ? chosen.qualifiedName : bootstrap ? bootstrap.pkg : exemplar.package;
336
+ const target = packages.find(pkg => pkg.qualifiedName === wanted) ?? (chosen ? undefined : packages[0]);
188
337
  if (!target)
189
338
  return { success: false, reason: `${targetFile} declares no package to hold the view` };
190
- // The primary element the view shows decides what it exposes. Siblings
191
- // expose their subject's whole package, which is what lets a screen view
192
- // pick up a region added later without another edit.
339
+ // A matrix selects by its axes and exposes nothing (ViewBodyItem makes
340
+ // Expose optional, SysML-textual-bnf.kebnf:1618-1622). Every other view
341
+ // exposes the package of the element it shows.
342
+ const isMatrix = Boolean(diagram.viewDefinition && diagram.matrix);
193
343
  const primary = model.elements[(diagram.elementIds ?? [])[0] ?? ''];
194
- const exposePackage = primary?.package
195
- ?? exemplar.attributes?.expose?.split(',')[0]?.replace(/::\*$/, '');
196
- if (!exposePackage) {
344
+ const exposePackage = isMatrix ? undefined : primary?.package
345
+ ?? exemplar?.attributes?.expose?.split(',')[0]?.replace(/::\*$/, '');
346
+ if (!isMatrix && !exposePackage) {
197
347
  return { success: false, reason: 'the view has no element whose package it could expose' };
198
348
  }
199
349
  // A sibling's definition is authoritative; without one, derive it from the
200
- // kind so the declaration still states what it is.
350
+ // kind so the declaration still states what it is. A matrix names its own.
201
351
  const derived = viewDefinitionFor(diagram.viewKind ?? '');
202
- const viewDef = home ? (exemplar.attributes?.usageType || derived.def) : derived.def;
203
- const viewpoint = diagram.viewpointId && diagram.viewpointId !== '__model'
352
+ const viewDef = diagram.viewDefinition
353
+ ?? (home && exemplar ? (exemplar.attributes?.usageType || derived.def) : derived.def);
354
+ const viewpoint = diagram.viewpointId && diagram.viewpointId !== '__model' && diagram.viewpointId !== '__unassigned'
204
355
  ? diagram.viewpointId
205
- : exemplar.attributes?.viewpointDefinition;
206
- const group = exemplar.attributes?.group;
356
+ : (isMatrix ? undefined : exemplar?.attributes?.viewpointDefinition);
357
+ // A matrix is not another kind of view's sibling: it takes neither its viewpoint nor its group.
358
+ const group = isMatrix ? undefined : exemplar?.attributes?.group;
207
359
  // A screen layout is named for the screen it depicts — the existing
208
360
  // convention, and it reads well because there is one per screen. Any other
209
361
  // kind is named for the view; calling a sequence view `…ScreenLayout` would
@@ -212,16 +364,22 @@ outlines) {
212
364
  const preferred = derived.def === 'MemoScreenLayoutView' && primary
213
365
  ? `${primary.id}Layout`
214
366
  : camel.charAt(0).toLowerCase() + camel.slice(1);
215
- const identifier = freeIdentifier(preferred, model);
367
+ const identifier = freeIdentifier(preferred, model, target.qualifiedName);
216
368
  // Emitted at column 0: `insertIntoBody` indents the block one level into the
217
- // package body it is placed in.
369
+ // package body it is placed in. An id is written only when the caller has
370
+ // one: Architect generates none, and the compiler assigns the element's.
371
+ const identity = [
372
+ ...(diagram.id ? [`:>> providedId = "${escape(diagram.id)}";`] : []),
373
+ `:>> label = "${escape(diagram.name)}";`,
374
+ ].join(' ');
218
375
  const body = [
219
376
  `view ${identifier} : ${viewDef} {`,
220
- ` expose ${exposePackage}::*;`,
221
- ` @MemoIdentity { :>> providedId = "${escape(diagram.id)}"; :>> label = "${escape(diagram.name)}"; }`,
222
- ...(!home && derived.declaresKind ? [` attribute :>> viewKind = DiagramViewKind::${diagram.viewKind};`] : []),
377
+ ...(exposePackage ? [` expose ${exposePackage}::*;`] : []),
378
+ ` @MemoIdentity { ${identity} }`,
379
+ ...(!home && !isMatrix && derived.declaresKind ? [` attribute :>> viewKind = DiagramViewKind::${diagram.viewKind};`] : []),
223
380
  ...(group ? [` attribute group = "${escape(group)}";`] : []),
224
381
  ...selectionQueryLines(diagram),
382
+ ...matrixLines(diagram.matrix),
225
383
  ...(viewpoint ? [` ref :>> viewpointDefinition = ${viewpoint};`] : []),
226
384
  '}',
227
385
  ].join('\n');
@@ -229,7 +387,53 @@ outlines) {
229
387
  const committed = await commitSource(absolute, targetFile, updated, outlines);
230
388
  if (!committed.success)
231
389
  return { success: false, reason: committed.error };
232
- return { success: true, filePath: targetFile, identifier, created: !!bootstrap };
390
+ return { success: true, filePath: targetFile, identifier, created: !!bootstrap, qualifiedName: `${target.qualifiedName}::${identifier}` };
391
+ }
392
+ /**
393
+ * Change a matrix view's name or definition, in its own declaration.
394
+ *
395
+ * The name is the `label` of its `@MemoIdentity`, so a rename leaves the
396
+ * element's identifier, and every reference to it, where it was. The axes and
397
+ * options are the statements `matrixLines` writes; everything else in the
398
+ * declaration is kept.
399
+ */
400
+ export async function updateViewDeclaration(projectRoot, model, diagram, change, outlines) {
401
+ const view = model.elements[diagram?.elementId ?? ''];
402
+ if (!view?.file)
403
+ return { success: false, reason: 'the view has no source file to edit' };
404
+ const absolute = resolve(projectRoot, view.file);
405
+ if (!existsSync(absolute))
406
+ return { success: false, reason: `${view.file} does not exist` };
407
+ const source = readFileSync(absolute, 'utf8');
408
+ const file = (isAbsolute(view.file) ? relative(projectRoot, view.file) : view.file).replaceAll('\\', '/');
409
+ let outline;
410
+ try {
411
+ outline = await outlines.outline(file, source);
412
+ }
413
+ catch (e) {
414
+ return { success: false, reason: `${view.file} cannot be edited: ${e instanceof Error ? e.message : String(e)}` };
415
+ }
416
+ const node = [...outlineNodes(outline)].find(candidate => candidate.key === view.id);
417
+ if (!node)
418
+ return { success: false, reason: `${view.id} was not found in ${view.file}` };
419
+ let declaration = source.slice(node.start, node.end);
420
+ if (change.matrix) {
421
+ // The declaration is spliced from its first character, so the indentation
422
+ // of the line it sits on is what the new statements must be offset by.
423
+ const baseIndent = /^[ \t]*/.exec(source.slice(source.lastIndexOf('\n', node.start - 1) + 1, node.start))[0];
424
+ declaration = replaceMatrixStatements(declaration, change.matrix, baseIndent);
425
+ }
426
+ if (change.name !== undefined) {
427
+ const label = `:>> label = "${escape(change.name)}";`;
428
+ declaration = /:>>\s*label\s*=\s*"(?:[^"\\]|\\.)*"\s*;/.test(declaration)
429
+ ? declaration.replace(/:>>\s*label\s*=\s*"(?:[^"\\]|\\.)*"\s*;/, () => label)
430
+ : declaration.replace(/@MemoIdentity\s*\{/, () => `@MemoIdentity { ${label}`);
431
+ }
432
+ const updated = source.slice(0, node.start) + declaration + source.slice(node.end);
433
+ const committed = await commitSource(absolute, view.file, updated, outlines);
434
+ if (!committed.success)
435
+ return { success: false, reason: committed.error };
436
+ return { success: true, filePath: view.file };
233
437
  }
234
438
  /**
235
439
  * Change WHAT a declared view shows, by editing its `expose` members.
@@ -1 +1 @@
1
- {"version":3,"file":"view-writer.js","sourceRoot":"","sources":["../../src/server/view-writer.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,EAAE;AACF,wEAAwE;AACxE,EAAE;AACF,uEAAuE;AACvE,+EAA+E;AAC/E,sEAAsE;AACtE,8EAA8E;AAC9E,qEAAqE;AACrE,EAAE;AACF,gFAAgF;AAChF,iFAAiF;AACjF,wFAAwF;AACxF,6EAA6E;AAC7E,kEAAkE;AAClE,yDAAyD;AACzD,EAAE;AACF,+EAA+E;AAC/E,6EAA6E;AAC7E,yEAAyE;AACzE,EAAE;AACF,8EAA8E;AAC9E,6EAA6E;AAC7E,iFAAiF;AACjF,6EAA6E;AAC7E,4EAA4E;AAC5E,+EAA+E;AAC/E,8EAA8E;AAC9E,+EAA+E;AAC/E,wDAAwD;AACxD,gFAAgF;AAEhF,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGnE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAY9D;;;;GAIG;AACH,MAAM,wBAAwB,GAA2D;IACrF,QAAQ,EAAE,EAAE,GAAG,EAAE,sBAAsB,EAAE,YAAY,EAAE,KAAK,EAAE;CACjE,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,QAAgB,EAAE,EAAE,CAC3C,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,iBAAiB,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;AAEzF,iEAAiE;AACjE,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,EAAE,CAC3B,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC;AAE9F,MAAM,MAAM,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAE5F,0DAA0D;AAC1D,SAAS,cAAc,CAAC,IAAY,EAAE,KAAmB;IACrD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC;IAC7D,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,OAAO,EAAE,CAAC;IACtE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACzC,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAK,IAAI,CAAC,EAAE,CAAC;QAAE,CAAC,EAAE,CAAC;IAC5C,OAAO,GAAG,KAAK,IAAI,CAAC,EAAE,CAAC;AAC3B,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,YAAY,CAAC,KAAmB,EAAE,QAAuB;IAC9D,MAAM,QAAQ,GAAkB,EAAE,CAAC;IACnC,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;QACzC,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,SAAS;YAAE,SAAS;QAChH,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,OAAO,EAAE,IAAI;YAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED,4EAA4E;AAC5E,SAAS,gBAAgB,CAAC,QAAuB;IAC7C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAyB,CAAC;IAChD,KAAK,MAAM,OAAO,IAAI,QAAQ;QAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAK,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAK,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3G,IAAI,IAA0D,CAAC;IAC/D,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,EAAE,CAAC;QACnC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,IAAI,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAChF,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,aAAa,CAAC,WAAmB,EAAE,KAAmB,EAAE,OAAmB;IAChF,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC1C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3C,MAAM,IAAI,GAAG,gBAAgB,CAAC,OAAO,CAAE,CAAC;IACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACjC,MAAM,IAAI,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;IACtE,4EAA4E;IAC5E,wEAAwE;IACxE,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9D,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;IACpE,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC,EAAE,CAAC;IACjF,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;SAChE,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACtD,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9B,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AAC5C,CAAC;AAED;;;;;;GAMG;AACH;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAmB;IACnD,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC;IACzC,MAAM,aAAa,GAAG,OAAO,CAAC,iBAAiB,IAAI,EAAE,CAAC;IACtD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAChE,MAAM,IAAI,GAAG,CAAC,MAAgB,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxF,OAAO;QACH,+BAA+B;QAC/B,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,gDAAgD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9F,GAAG,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;YACxB,CAAC,CAAC,CAAC,qDAAqD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;YAChF,CAAC,CAAC,EAAE,CAAC;QACT,OAAO;KACV,CAAC;AACN,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACtC,WAAmB,EAAE,KAAmB,EAAE,OAAmB;AAC7D,mEAAmE;AACnE,QAAuB;IAEvB,MAAM,IAAI,GAAG,gBAAgB,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC;IAC7E,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAChF,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACtB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,iFAAiF,EAAE,CAAC;IACzH,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAU,CAAC,QAAQ,CAAC;IAC9D,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAU,CAAC,IAAI,CAAC;IACtD,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAElD,IAAI,SAAS,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG;YACX,MAAM,OAAO,CAAC,QAAQ,+DAA+D;YACrF,WAAW,SAAS,CAAC,GAAG,IAAI;YAC5B,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC;YAC/C,GAAG;YACH,EAAE;SACL,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC1E,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;IACzE,CAAC;SAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,UAAU,iBAAiB,EAAE,CAAC;IACtE,CAAC;IAED,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC9C,IAAI,OAAO,CAAC;IACZ,IAAI,CAAC;QACD,OAAO,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;IAC/E,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,UAAU,sBAAsB,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACvH,CAAC;IACD,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;IAC5D,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,aAAa,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;IACjF,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,UAAU,uCAAuC,EAAE,CAAC;IAErG,uEAAuE;IACvE,yEAAyE;IACzE,qDAAqD;IACrD,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACpE,MAAM,aAAa,GAAG,OAAO,EAAE,OAAO;WAC9B,QAAQ,CAAC,UAAU,EAAE,MAA6B,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAChG,IAAI,CAAC,aAAa,EAAE,CAAC;QACjB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,uDAAuD,EAAE,CAAC;IAC/F,CAAC;IAED,2EAA2E;IAC3E,mDAAmD;IACnD,MAAM,OAAO,GAAG,iBAAiB,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAE,QAAQ,CAAC,UAAU,EAAE,SAAoB,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;IACjG,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS;QACtE,CAAC,CAAC,OAAO,CAAC,WAAW;QACrB,CAAC,CAAE,QAAQ,CAAC,UAAU,EAAE,mBAA0C,CAAC;IACvE,MAAM,KAAK,GAAG,QAAQ,CAAC,UAAU,EAAE,KAA2B,CAAC;IAE/D,oEAAoE;IACpE,2EAA2E;IAC3E,4EAA4E;IAC5E,mBAAmB;IACnB,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/G,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,KAAK,sBAAsB,IAAI,OAAO;QAC/D,CAAC,CAAC,GAAG,OAAO,CAAC,EAAE,QAAQ;QACvB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACrD,MAAM,UAAU,GAAG,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAEpD,6EAA6E;IAC7E,gCAAgC;IAChC,MAAM,IAAI,GAAG;QACT,QAAQ,UAAU,MAAM,OAAO,IAAI;QACnC,cAAc,aAAa,MAAM;QACjC,yCAAyC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,mBAAmB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM;QACxG,GAAG,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,iDAAiD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChH,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,0BAA0B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,GAAG,mBAAmB,CAAC,OAAO,CAAC;QAC/B,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,qCAAqC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzE,GAAG;KACN,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC9E,IAAI,CAAC,SAAS,CAAC,OAAO;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC;IAC3E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;AACrF,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAClC,WAAmB,EAAE,KAAmB,EAAE,OAAmB,EAAE,UAAgC;AAC/F,mEAAmE;AACnE,QAAuB;IAEvB,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC;IACtD,IAAI,CAAC,IAAI,EAAE,IAAI;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,qCAAqC,EAAE,CAAC;IAE1F,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC;aAC1C,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC;aACtC,MAAM,CAAC,CAAC,GAAG,EAAiB,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC7C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,mEAAmE,EAAE,CAAC;IAC3G,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,iBAAiB,EAAE,CAAC;IAC5F,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC1G,IAAI,OAAO,CAAC;IACZ,IAAI,CAAC;QACD,OAAO,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,sBAAsB,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACtH,CAAC;IACD,uEAAuE;IACvE,MAAM,IAAI,GAAG,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;IACrF,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,qBAAqB,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;IAEzF,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7F,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjF,0EAA0E;IAC1E,sDAAsD;IACtD,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,CAAC,qCAAqC,EAAE,EAAE,CAAC,CAAC;IACrF,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,6BAA6B,EAAE,CAAC;IAC1F,MAAM,SAAS,GAAG,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,KAAK,WAAW,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;IAC1G,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEjF,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC7E,IAAI,CAAC,SAAS,CAAC,OAAO;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC;IAC3E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AACrE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,WAAmB,EAAE,UAAkB,EAAE,MAAc;IAC1F,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IACZ,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,QAAQ,CAAC,2CAA2C,CAAC;QAAE,EAAE,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC1H,IAAI,EAAE,IAAI,CAAC;QAAE,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,UAAU,KAAK,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;IACzF,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAClE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,UAAU,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;AACvH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACnC,WAAmB,EAAE,KAAmB,EAAE,OAAmB,EAAE,OAA+B,EAC9F,QAAuB;IAEvB,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC;IACtD,IAAI,CAAC,IAAI,EAAE,IAAI;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,qCAAqC,EAAE,CAAC;IAC1F,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,iBAAiB,EAAE,CAAC;IAC5F,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC1G,IAAI,OAAO,CAAC;IACZ,IAAI,CAAC;QACD,OAAO,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,sBAAsB,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACtH,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;IACrF,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,qBAAqB,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;IAEzF,IAAI,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,+BAA+B,EAAE,CAAC;IAC5F,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7F,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACtE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,+BAA+B,IAAI,+BAA+B,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/H,CAAC;IACD,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,MAAM,iBAAiB,IAAI,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtG,WAAW,GAAG,sBAAsB,CAAC,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IACtE,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnF,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC7E,IAAI,CAAC,SAAS,CAAC,OAAO;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC;IAC3E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;AAClD,CAAC"}
1
+ {"version":3,"file":"view-writer.js","sourceRoot":"","sources":["../../src/server/view-writer.ts"],"names":[],"mappings":"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"}
@@ -317,7 +317,9 @@ class ElementBuilder {
317
317
  this.define(element, usage);
318
318
  if (construct === 'port')
319
319
  this.ports(usage, packageName, id);
320
- if (construct === 'part' || construct === 'item')
320
+ // A view contains the typed parts it declares too: a matrix's named groups are `part g : MemoMatrixGroup`
321
+ // members of the view (ViewBodyItem takes any DefinitionBodyItem, SysML-textual-bnf.kebnf:1618-1622).
322
+ if (construct === 'part' || construct === 'item' || construct === 'view')
321
323
  this.nestedParts(usage, packageName, id);
322
324
  if (construct === 'part')
323
325
  this.ports(usage, packageName, id);