@jsonschema-editor/ui-schema 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +58 -0
  3. package/dist/attribute-registry.d.ts +13 -0
  4. package/dist/attribute-registry.d.ts.map +1 -0
  5. package/dist/attribute-registry.js +56 -0
  6. package/dist/attribute-registry.js.map +1 -0
  7. package/dist/bridge/form-definition.d.ts +23 -0
  8. package/dist/bridge/form-definition.d.ts.map +1 -0
  9. package/dist/bridge/form-definition.js +39 -0
  10. package/dist/bridge/form-definition.js.map +1 -0
  11. package/dist/bridge/generator.d.ts +15 -0
  12. package/dist/bridge/generator.d.ts.map +1 -0
  13. package/dist/bridge/generator.js +74 -0
  14. package/dist/bridge/generator.js.map +1 -0
  15. package/dist/bridge/index.d.ts +4 -0
  16. package/dist/bridge/index.d.ts.map +1 -0
  17. package/dist/bridge/index.js +4 -0
  18. package/dist/bridge/index.js.map +1 -0
  19. package/dist/bridge/scope-resolution.d.ts +4 -0
  20. package/dist/bridge/scope-resolution.d.ts.map +1 -0
  21. package/dist/bridge/scope-resolution.js +34 -0
  22. package/dist/bridge/scope-resolution.js.map +1 -0
  23. package/dist/index.d.ts +7 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +7 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/model/categorization.d.ts +25 -0
  28. package/dist/model/categorization.d.ts.map +1 -0
  29. package/dist/model/categorization.js +49 -0
  30. package/dist/model/categorization.js.map +1 -0
  31. package/dist/model/control.d.ts +21 -0
  32. package/dist/model/control.d.ts.map +1 -0
  33. package/dist/model/control.js +46 -0
  34. package/dist/model/control.js.map +1 -0
  35. package/dist/model/custom-attributes.d.ts +14 -0
  36. package/dist/model/custom-attributes.d.ts.map +1 -0
  37. package/dist/model/custom-attributes.js +35 -0
  38. package/dist/model/custom-attributes.js.map +1 -0
  39. package/dist/model/document.d.ts +10 -0
  40. package/dist/model/document.d.ts.map +1 -0
  41. package/dist/model/document.js +16 -0
  42. package/dist/model/document.js.map +1 -0
  43. package/dist/model/factory.d.ts +24 -0
  44. package/dist/model/factory.d.ts.map +1 -0
  45. package/dist/model/factory.js +99 -0
  46. package/dist/model/factory.js.map +1 -0
  47. package/dist/model/index.d.ts +13 -0
  48. package/dist/model/index.d.ts.map +1 -0
  49. package/dist/model/index.js +13 -0
  50. package/dist/model/index.js.map +1 -0
  51. package/dist/model/label.d.ts +18 -0
  52. package/dist/model/label.d.ts.map +1 -0
  53. package/dist/model/label.js +35 -0
  54. package/dist/model/label.js.map +1 -0
  55. package/dist/model/layouts.d.ts +31 -0
  56. package/dist/model/layouts.d.ts.map +1 -0
  57. package/dist/model/layouts.js +64 -0
  58. package/dist/model/layouts.js.map +1 -0
  59. package/dist/model/node.d.ts +53 -0
  60. package/dist/model/node.d.ts.map +1 -0
  61. package/dist/model/node.js +154 -0
  62. package/dist/model/node.js.map +1 -0
  63. package/dist/model/simple-layout.d.ts +19 -0
  64. package/dist/model/simple-layout.d.ts.map +1 -0
  65. package/dist/model/simple-layout.js +41 -0
  66. package/dist/model/simple-layout.js.map +1 -0
  67. package/dist/model/stepper.d.ts +25 -0
  68. package/dist/model/stepper.d.ts.map +1 -0
  69. package/dist/model/stepper.js +49 -0
  70. package/dist/model/stepper.js.map +1 -0
  71. package/dist/model/ui-rule.d.ts +13 -0
  72. package/dist/model/ui-rule.d.ts.map +1 -0
  73. package/dist/model/ui-rule.js +26 -0
  74. package/dist/model/ui-rule.js.map +1 -0
  75. package/dist/model/visitor.d.ts +17 -0
  76. package/dist/model/visitor.d.ts.map +1 -0
  77. package/dist/model/visitor.js +2 -0
  78. package/dist/model/visitor.js.map +1 -0
  79. package/dist/parse.d.ts +7 -0
  80. package/dist/parse.d.ts.map +1 -0
  81. package/dist/parse.js +6 -0
  82. package/dist/parse.js.map +1 -0
  83. package/dist/scope.d.ts +3 -0
  84. package/dist/scope.d.ts.map +1 -0
  85. package/dist/scope.js +13 -0
  86. package/dist/scope.js.map +1 -0
  87. package/dist/types.d.ts +27 -0
  88. package/dist/types.d.ts.map +1 -0
  89. package/dist/types.js +2 -0
  90. package/dist/types.js.map +1 -0
  91. package/package.json +69 -0
@@ -0,0 +1,35 @@
1
+ import { globalUiSchemaAttributeRegistry } from "../attribute-registry.js";
2
+ export class UiCustomAttributeCollection {
3
+ registry;
4
+ values = new Map();
5
+ constructor(registry = globalUiSchemaAttributeRegistry) {
6
+ this.registry = registry;
7
+ }
8
+ get(name) {
9
+ return this.values.get(name);
10
+ }
11
+ set(name, value) {
12
+ this.values.set(name, value);
13
+ return this;
14
+ }
15
+ delete(name) {
16
+ return this.values.delete(name);
17
+ }
18
+ applyFrom(json) {
19
+ this.values.clear();
20
+ for (const [key, value] of this.registry.readCustomAttributes(json)) {
21
+ this.values.set(key, value);
22
+ }
23
+ }
24
+ writeTo(json) {
25
+ this.registry.writeCustomAttributes(json, this.values);
26
+ }
27
+ clone(registry = this.registry) {
28
+ const copy = new UiCustomAttributeCollection(registry);
29
+ for (const [key, value] of this.values) {
30
+ copy.values.set(key, structuredClone(value));
31
+ }
32
+ return copy;
33
+ }
34
+ }
35
+ //# sourceMappingURL=custom-attributes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-attributes.js","sourceRoot":"","sources":["../../src/model/custom-attributes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,+BAA+B,EAAE,MAAM,0BAA0B,CAAC;AAG3E,MAAM,OAAO,2BAA2B;IAInB;IAHF,MAAM,GAAG,IAAI,GAAG,EAAmB,CAAC;IAErD,YACmB,WAAsC,+BAA+B;QAArE,aAAQ,GAAR,QAAQ,CAA6D;IACrF,CAAC;IAEJ,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,GAAG,CAAC,IAAY,EAAE,KAAc;QAC9B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,IAAY;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,SAAS,CAAC,IAAoB;QAC5B,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;YACpE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,OAAO,CAAC,IAAoB;QAC1B,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,WAAsC,IAAI,CAAC,QAAQ;QACvD,MAAM,IAAI,GAAG,IAAI,2BAA2B,CAAC,QAAQ,CAAC,CAAC;QACvD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -0,0 +1,10 @@
1
+ import type { UiSchemaObject } from "../types.js";
2
+ import type { UiElement } from "./node.js";
3
+ export declare class UiSchemaDocument {
4
+ private _root;
5
+ constructor(_root: UiElement);
6
+ get root(): UiElement;
7
+ set root(value: UiElement);
8
+ toJSON(): UiSchemaObject;
9
+ }
10
+ //# sourceMappingURL=document.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../src/model/document.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C,qBAAa,gBAAgB;IACf,OAAO,CAAC,KAAK;gBAAL,KAAK,EAAE,SAAS;IAEpC,IAAI,IAAI,IAAI,SAAS,CAEpB;IAED,IAAI,IAAI,CAAC,KAAK,EAAE,SAAS,EAExB;IAED,MAAM,IAAI,cAAc;CAGzB"}
@@ -0,0 +1,16 @@
1
+ export class UiSchemaDocument {
2
+ _root;
3
+ constructor(_root) {
4
+ this._root = _root;
5
+ }
6
+ get root() {
7
+ return this._root;
8
+ }
9
+ set root(value) {
10
+ this._root = value;
11
+ }
12
+ toJSON() {
13
+ return this._root.toJSON();
14
+ }
15
+ }
16
+ //# sourceMappingURL=document.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document.js","sourceRoot":"","sources":["../../src/model/document.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,gBAAgB;IACP;IAApB,YAAoB,KAAgB;QAAhB,UAAK,GAAL,KAAK,CAAW;IAAG,CAAC;IAExC,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,IAAI,CAAC,KAAgB;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IAC7B,CAAC;CACF"}
@@ -0,0 +1,24 @@
1
+ import type { UiSchemaAttributeRegistry } from "../attribute-registry.js";
2
+ import type { UiSchemaObject } from "../types.js";
3
+ import { Category, Categorization } from "./categorization.js";
4
+ import { Control } from "./control.js";
5
+ import { Group, HorizontalLayout, VerticalLayout } from "./layouts.js";
6
+ import { Label } from "./label.js";
7
+ import type { UiElement } from "./node.js";
8
+ import { Step, Stepper } from "./stepper.js";
9
+ export declare class UiSchemaFactory {
10
+ readonly attributeRegistry: UiSchemaAttributeRegistry;
11
+ constructor(attributeRegistry?: UiSchemaAttributeRegistry);
12
+ fromJSON(json: UiSchemaObject): UiElement;
13
+ createControl(scope: string, label?: string): Control;
14
+ createVerticalLayout(elements?: UiElement[]): VerticalLayout;
15
+ createHorizontalLayout(elements?: UiElement[]): HorizontalLayout;
16
+ createGroup(label: string | undefined, elements?: UiElement[]): Group;
17
+ createLabel(text: string): Label;
18
+ createCategorization(elements?: UiElement[]): Categorization;
19
+ createCategory(label: string | undefined, elements?: UiElement[]): Category;
20
+ createStepper(elements?: UiElement[]): Stepper;
21
+ createStep(label: string | undefined, elements?: UiElement[]): Step;
22
+ }
23
+ export declare const defaultUiSchemaFactory: UiSchemaFactory;
24
+ //# sourceMappingURL=factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/model/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAE1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE7C,qBAAa,eAAe;aAER,iBAAiB,EAAE,yBAAyB;gBAA5C,iBAAiB,GAAE,yBAA2D;IAGhG,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS;IA+BzC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO;IAIrD,oBAAoB,CAAC,QAAQ,GAAE,SAAS,EAAO,GAAG,cAAc;IAQhE,sBAAsB,CAAC,QAAQ,GAAE,SAAS,EAAO,GAAG,gBAAgB;IAQpE,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,GAAE,SAAS,EAAO,GAAG,KAAK;IAQzE,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK;IAIhC,oBAAoB,CAAC,QAAQ,GAAE,SAAS,EAAO,GAAG,cAAc;IAQhE,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,GAAE,SAAS,EAAO,GAAG,QAAQ;IAQ/E,aAAa,CAAC,QAAQ,GAAE,SAAS,EAAO,GAAG,OAAO;IAQlD,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,GAAE,SAAS,EAAO,GAAG,IAAI;CAOxE;AAED,eAAO,MAAM,sBAAsB,iBAAwB,CAAC"}
@@ -0,0 +1,99 @@
1
+ import { globalUiSchemaAttributeRegistry } from "../attribute-registry.js";
2
+ import { Category, Categorization } from "./categorization.js";
3
+ import { Control } from "./control.js";
4
+ import { Group, HorizontalLayout, VerticalLayout } from "./layouts.js";
5
+ import { Label } from "./label.js";
6
+ import { Step, Stepper } from "./stepper.js";
7
+ export class UiSchemaFactory {
8
+ attributeRegistry;
9
+ constructor(attributeRegistry = globalUiSchemaAttributeRegistry) {
10
+ this.attributeRegistry = attributeRegistry;
11
+ }
12
+ fromJSON(json) {
13
+ switch (json.type) {
14
+ case "Control":
15
+ return Control.fromJSON(json, this);
16
+ case "VerticalLayout":
17
+ return VerticalLayout.fromJSON(json, this);
18
+ case "HorizontalLayout":
19
+ return HorizontalLayout.fromJSON(json, this);
20
+ case "Group":
21
+ return Group.fromJSON(json, this);
22
+ case "Label":
23
+ return Label.fromJSON(json, this);
24
+ case "Categorization":
25
+ return Categorization.fromJSON(json, this);
26
+ case "Category":
27
+ return Category.fromJSON(json, this);
28
+ case "Stepper":
29
+ return Stepper.fromJSON(json, this);
30
+ case "Step":
31
+ return Step.fromJSON(json, this);
32
+ default:
33
+ if (json.elements?.length) {
34
+ return VerticalLayout.fromJSON(json, this);
35
+ }
36
+ if (json.scope !== undefined) {
37
+ return Control.fromJSON(json, this);
38
+ }
39
+ throw new Error(`Unbekannter UI-Schema-Typ: ${String(json.type)}`);
40
+ }
41
+ }
42
+ createControl(scope, label) {
43
+ return new Control(scope, label, this.attributeRegistry);
44
+ }
45
+ createVerticalLayout(elements = []) {
46
+ const layout = new VerticalLayout(this.attributeRegistry);
47
+ for (const element of elements) {
48
+ layout.addChild(element);
49
+ }
50
+ return layout;
51
+ }
52
+ createHorizontalLayout(elements = []) {
53
+ const layout = new HorizontalLayout(this.attributeRegistry);
54
+ for (const element of elements) {
55
+ layout.addChild(element);
56
+ }
57
+ return layout;
58
+ }
59
+ createGroup(label, elements = []) {
60
+ const group = new Group(label, this.attributeRegistry);
61
+ for (const element of elements) {
62
+ group.addChild(element);
63
+ }
64
+ return group;
65
+ }
66
+ createLabel(text) {
67
+ return new Label(text, this.attributeRegistry);
68
+ }
69
+ createCategorization(elements = []) {
70
+ const node = new Categorization(this.attributeRegistry);
71
+ for (const element of elements) {
72
+ node.addChild(element);
73
+ }
74
+ return node;
75
+ }
76
+ createCategory(label, elements = []) {
77
+ const node = new Category(label, this.attributeRegistry);
78
+ for (const element of elements) {
79
+ node.addChild(element);
80
+ }
81
+ return node;
82
+ }
83
+ createStepper(elements = []) {
84
+ const node = new Stepper(this.attributeRegistry);
85
+ for (const element of elements) {
86
+ node.addChild(element);
87
+ }
88
+ return node;
89
+ }
90
+ createStep(label, elements = []) {
91
+ const node = new Step(label, this.attributeRegistry);
92
+ for (const element of elements) {
93
+ node.addChild(element);
94
+ }
95
+ return node;
96
+ }
97
+ }
98
+ export const defaultUiSchemaFactory = new UiSchemaFactory();
99
+ //# sourceMappingURL=factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/model/factory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,+BAA+B,EAAE,MAAM,0BAA0B,CAAC;AAE3E,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,OAAO,eAAe;IAER;IADlB,YACkB,oBAA+C,+BAA+B;QAA9E,sBAAiB,GAAjB,iBAAiB,CAA6D;IAC7F,CAAC;IAEJ,QAAQ,CAAC,IAAoB;QAC3B,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,SAAS;gBACZ,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACtC,KAAK,gBAAgB;gBACnB,OAAO,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC7C,KAAK,kBAAkB;gBACrB,OAAO,gBAAgB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC/C,KAAK,OAAO;gBACV,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACpC,KAAK,OAAO;gBACV,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACpC,KAAK,gBAAgB;gBACnB,OAAO,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC7C,KAAK,UAAU;gBACb,OAAO,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACvC,KAAK,SAAS;gBACZ,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACtC,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACnC;gBACE,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;oBAC1B,OAAO,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC7C,CAAC;gBACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;oBAC7B,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACtC,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,8BAA8B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAED,aAAa,CAAC,KAAa,EAAE,KAAc;QACzC,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC3D,CAAC;IAED,oBAAoB,CAAC,WAAwB,EAAE;QAC7C,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC1D,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,sBAAsB,CAAC,WAAwB,EAAE;QAC/C,MAAM,MAAM,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC5D,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,WAAW,CAAC,KAAyB,EAAE,WAAwB,EAAE;QAC/D,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACvD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,WAAW,CAAC,IAAY;QACtB,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACjD,CAAC;IAED,oBAAoB,CAAC,WAAwB,EAAE;QAC7C,MAAM,IAAI,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACxD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,cAAc,CAAC,KAAyB,EAAE,WAAwB,EAAE;QAClE,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACzD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa,CAAC,WAAwB,EAAE;QACtC,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACjD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,UAAU,CAAC,KAAyB,EAAE,WAAwB,EAAE;QAC9D,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACrD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,eAAe,EAAE,CAAC"}
@@ -0,0 +1,13 @@
1
+ export * from "./node.js";
2
+ export * from "./simple-layout.js";
3
+ export * from "./custom-attributes.js";
4
+ export * from "./visitor.js";
5
+ export * from "./factory.js";
6
+ export * from "./control.js";
7
+ export * from "./layouts.js";
8
+ export * from "./categorization.js";
9
+ export * from "./stepper.js";
10
+ export * from "./label.js";
11
+ export * from "./document.js";
12
+ export * from "./ui-rule.js";
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/model/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC"}
@@ -0,0 +1,13 @@
1
+ export * from "./node.js";
2
+ export * from "./simple-layout.js";
3
+ export * from "./custom-attributes.js";
4
+ export * from "./visitor.js";
5
+ export * from "./factory.js";
6
+ export * from "./control.js";
7
+ export * from "./layouts.js";
8
+ export * from "./categorization.js";
9
+ export * from "./stepper.js";
10
+ export * from "./label.js";
11
+ export * from "./document.js";
12
+ export * from "./ui-rule.js";
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/model/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { UiSchemaAttributeRegistry } from "../attribute-registry.js";
2
+ import type { UiSchemaObject } from "../types.js";
3
+ import { UiCustomAttributeCollection } from "./custom-attributes.js";
4
+ import type { UiSchemaFactory } from "./factory.js";
5
+ import { UiElement } from "./node.js";
6
+ import type { UiElementVisitor } from "./visitor.js";
7
+ export declare class Label extends UiElement {
8
+ private _text;
9
+ readonly elementKind: "Label";
10
+ constructor(_text: string, registry?: UiSchemaAttributeRegistry, customAttributes?: UiCustomAttributeCollection);
11
+ get text(): string;
12
+ set text(value: string);
13
+ static fromJSON(json: UiSchemaObject, factory: UiSchemaFactory): Label;
14
+ accept<T>(visitor: UiElementVisitor<T>): T;
15
+ deepClone(): Label;
16
+ protected writeElementDefinition(json: UiSchemaObject): void;
17
+ }
18
+ //# sourceMappingURL=label.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label.d.ts","sourceRoot":"","sources":["../../src/model/label.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD,qBAAa,KAAM,SAAQ,SAAS;IAIhC,OAAO,CAAC,KAAK;IAHf,QAAQ,CAAC,WAAW,EAAG,OAAO,CAAU;gBAG9B,KAAK,EAAE,MAAM,EACrB,QAAQ,CAAC,EAAE,yBAAyB,EACpC,gBAAgB,CAAC,EAAE,2BAA2B;IAKhD,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,EAErB;IAED,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,eAAe,GAAG,KAAK;IAQtE,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC;IAI1C,SAAS,IAAI,KAAK;IAMlB,SAAS,CAAC,sBAAsB,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;CAG7D"}
@@ -0,0 +1,35 @@
1
+ import { UiCustomAttributeCollection } from "./custom-attributes.js";
2
+ import { UiElement } from "./node.js";
3
+ export class Label extends UiElement {
4
+ _text;
5
+ elementKind = "Label";
6
+ constructor(_text, registry, customAttributes) {
7
+ super(customAttributes ?? new UiCustomAttributeCollection(registry));
8
+ this._text = _text;
9
+ }
10
+ get text() {
11
+ return this._text;
12
+ }
13
+ set text(value) {
14
+ this._text = value;
15
+ }
16
+ static fromJSON(json, factory) {
17
+ const label = new Label(json.text ?? "", factory.attributeRegistry);
18
+ label.applyRuleFrom(json);
19
+ label.applyI18nFrom(json);
20
+ label.applyCustomAttributes(json);
21
+ return label;
22
+ }
23
+ accept(visitor) {
24
+ return visitor.visitLabel(this);
25
+ }
26
+ deepClone() {
27
+ const copy = new Label(this._text, undefined, this.cloneAttributes());
28
+ this.copyElementStateTo(copy);
29
+ return copy;
30
+ }
31
+ writeElementDefinition(json) {
32
+ json.text = this._text;
33
+ }
34
+ }
35
+ //# sourceMappingURL=label.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label.js","sourceRoot":"","sources":["../../src/model/label.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAErE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGtC,MAAM,OAAO,KAAM,SAAQ,SAAS;IAIxB;IAHD,WAAW,GAAG,OAAgB,CAAC;IAExC,YACU,KAAa,EACrB,QAAoC,EACpC,gBAA8C;QAE9C,KAAK,CAAC,gBAAgB,IAAI,IAAI,2BAA2B,CAAC,QAAQ,CAAC,CAAC,CAAC;QAJ7D,UAAK,GAAL,KAAK,CAAQ;IAKvB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,IAAI,CAAC,KAAa;QACpB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAoB,EAAE,OAAwB;QAC5D,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACpE,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC1B,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC1B,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAClC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,CAAI,OAA4B;QACpC,OAAO,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,SAAS;QACP,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;QACtE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAES,sBAAsB,CAAC,IAAoB;QACnD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;IACzB,CAAC;CACF"}
@@ -0,0 +1,31 @@
1
+ import type { UiSchemaAttributeRegistry } from "../attribute-registry.js";
2
+ import type { UiSchemaObject } from "../types.js";
3
+ import { UiCustomAttributeCollection } from "./custom-attributes.js";
4
+ import type { UiSchemaFactory } from "./factory.js";
5
+ import { LabeledLayout, UnlabeledLayout } from "./simple-layout.js";
6
+ import type { UiElementVisitor } from "./visitor.js";
7
+ export declare class VerticalLayout extends UnlabeledLayout {
8
+ readonly elementKind: "VerticalLayout";
9
+ constructor(registry?: UiSchemaAttributeRegistry, customAttributes?: UiCustomAttributeCollection);
10
+ static fromJSON(json: UiSchemaObject, factory: UiSchemaFactory): VerticalLayout;
11
+ accept<T>(visitor: UiElementVisitor<T>): T;
12
+ deepClone(): VerticalLayout;
13
+ protected writeElementDefinition(json: UiSchemaObject): void;
14
+ }
15
+ export declare class HorizontalLayout extends UnlabeledLayout {
16
+ readonly elementKind: "HorizontalLayout";
17
+ constructor(registry?: UiSchemaAttributeRegistry, customAttributes?: UiCustomAttributeCollection);
18
+ static fromJSON(json: UiSchemaObject, factory: UiSchemaFactory): HorizontalLayout;
19
+ accept<T>(visitor: UiElementVisitor<T>): T;
20
+ deepClone(): HorizontalLayout;
21
+ protected writeElementDefinition(json: UiSchemaObject): void;
22
+ }
23
+ export declare class Group extends LabeledLayout {
24
+ readonly elementKind: "Group";
25
+ constructor(label?: string, registry?: UiSchemaAttributeRegistry, customAttributes?: UiCustomAttributeCollection);
26
+ static fromJSON(json: UiSchemaObject, factory: UiSchemaFactory): Group;
27
+ accept<T>(visitor: UiElementVisitor<T>): T;
28
+ deepClone(): Group;
29
+ protected writeElementDefinition(json: UiSchemaObject): void;
30
+ }
31
+ //# sourceMappingURL=layouts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layouts.d.ts","sourceRoot":"","sources":["../../src/model/layouts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD,qBAAa,cAAe,SAAQ,eAAe;IACjD,QAAQ,CAAC,WAAW,EAAG,gBAAgB,CAAU;gBAG/C,QAAQ,CAAC,EAAE,yBAAyB,EACpC,gBAAgB,CAAC,EAAE,2BAA2B;IAKhD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,eAAe,GAAG,cAAc;IAM/E,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC;IAI1C,SAAS,IAAI,cAAc;IAI3B,SAAS,CAAC,sBAAsB,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;CAG7D;AAED,qBAAa,gBAAiB,SAAQ,eAAe;IACnD,QAAQ,CAAC,WAAW,EAAG,kBAAkB,CAAU;gBAGjD,QAAQ,CAAC,EAAE,yBAAyB,EACpC,gBAAgB,CAAC,EAAE,2BAA2B;IAKhD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,eAAe,GAAG,gBAAgB;IAMjF,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC;IAI1C,SAAS,IAAI,gBAAgB;IAI7B,SAAS,CAAC,sBAAsB,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;CAG7D;AAED,qBAAa,KAAM,SAAQ,aAAa;IACtC,QAAQ,CAAC,WAAW,EAAG,OAAO,CAAU;gBAGtC,KAAK,CAAC,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,yBAAyB,EACpC,gBAAgB,CAAC,EAAE,2BAA2B;IAMhD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,eAAe,GAAG,KAAK;IAMtE,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC;IAI1C,SAAS,IAAI,KAAK;IAIlB,SAAS,CAAC,sBAAsB,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;CAG7D"}
@@ -0,0 +1,64 @@
1
+ import { UiCustomAttributeCollection } from "./custom-attributes.js";
2
+ import { LabeledLayout, UnlabeledLayout } from "./simple-layout.js";
3
+ export class VerticalLayout extends UnlabeledLayout {
4
+ elementKind = "VerticalLayout";
5
+ constructor(registry, customAttributes) {
6
+ super(customAttributes ?? new UiCustomAttributeCollection(registry));
7
+ }
8
+ static fromJSON(json, factory) {
9
+ const layout = new VerticalLayout(factory.attributeRegistry);
10
+ layout.populateFromJSON(json, factory);
11
+ return layout;
12
+ }
13
+ accept(visitor) {
14
+ return visitor.visitVerticalLayout(this);
15
+ }
16
+ deepClone() {
17
+ return this.finishClone(new VerticalLayout(undefined, this.cloneAttributes()));
18
+ }
19
+ writeElementDefinition(json) {
20
+ this.writeUnlabeledDefinition(json);
21
+ }
22
+ }
23
+ export class HorizontalLayout extends UnlabeledLayout {
24
+ elementKind = "HorizontalLayout";
25
+ constructor(registry, customAttributes) {
26
+ super(customAttributes ?? new UiCustomAttributeCollection(registry));
27
+ }
28
+ static fromJSON(json, factory) {
29
+ const layout = new HorizontalLayout(factory.attributeRegistry);
30
+ layout.populateFromJSON(json, factory);
31
+ return layout;
32
+ }
33
+ accept(visitor) {
34
+ return visitor.visitHorizontalLayout(this);
35
+ }
36
+ deepClone() {
37
+ return this.finishClone(new HorizontalLayout(undefined, this.cloneAttributes()));
38
+ }
39
+ writeElementDefinition(json) {
40
+ this.writeUnlabeledDefinition(json);
41
+ }
42
+ }
43
+ export class Group extends LabeledLayout {
44
+ elementKind = "Group";
45
+ constructor(label, registry, customAttributes) {
46
+ super(customAttributes ?? new UiCustomAttributeCollection(registry));
47
+ this._label = label;
48
+ }
49
+ static fromJSON(json, factory) {
50
+ const group = new Group(json.label, factory.attributeRegistry);
51
+ group.populateFromJSON(json, factory);
52
+ return group;
53
+ }
54
+ accept(visitor) {
55
+ return visitor.visitGroup(this);
56
+ }
57
+ deepClone() {
58
+ return this.finishClone(new Group(this._label, undefined, this.cloneAttributes()));
59
+ }
60
+ writeElementDefinition(json) {
61
+ this.writeLabeledDefinition(json);
62
+ }
63
+ }
64
+ //# sourceMappingURL=layouts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layouts.js","sourceRoot":"","sources":["../../src/model/layouts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import type { UiElementKind, UiSchemaObject } from "../types.js";
2
+ import type { UiSchemaFactory } from "./factory.js";
3
+ import type { UiElementVisitor } from "./visitor.js";
4
+ import { UiCustomAttributeCollection } from "./custom-attributes.js";
5
+ import { UiRule } from "./ui-rule.js";
6
+ export type { UiElementKind };
7
+ export declare abstract class UiElement {
8
+ protected readonly customAttributes: UiCustomAttributeCollection;
9
+ protected _rule?: UiRule;
10
+ protected _options: Record<string, unknown>;
11
+ protected _i18n?: string;
12
+ protected constructor(customAttributes: UiCustomAttributeCollection);
13
+ abstract readonly elementKind: UiElementKind;
14
+ abstract accept<T>(visitor: UiElementVisitor<T>): T;
15
+ abstract deepClone(): UiElement;
16
+ protected abstract writeElementDefinition(json: UiSchemaObject): void;
17
+ get rule(): UiRule | undefined;
18
+ set rule(value: UiRule | undefined);
19
+ get i18n(): string | undefined;
20
+ set i18n(value: string | undefined);
21
+ get options(): Readonly<Record<string, unknown>>;
22
+ setOption(key: string, value: unknown): this;
23
+ toJSON(): UiSchemaObject;
24
+ clone(): UiElement;
25
+ get elementType(): UiElementKind;
26
+ getCustomAttribute<T = unknown>(name: string): T | undefined;
27
+ setCustomAttribute(name: string, value: unknown): void;
28
+ protected cloneAttributes(): UiCustomAttributeCollection;
29
+ protected applyCustomAttributes(json: UiSchemaObject): void;
30
+ protected applyRuleFrom(json: UiSchemaObject): void;
31
+ protected applyOptionsFrom(json: UiSchemaObject): void;
32
+ protected applyI18nFrom(json: UiSchemaObject): void;
33
+ protected writeRuleTo(json: UiSchemaObject): void;
34
+ protected writeOptionsTo(json: UiSchemaObject): void;
35
+ protected writeI18nTo(json: UiSchemaObject): void;
36
+ protected copyElementStateTo(target: UiElement): void;
37
+ }
38
+ export declare abstract class UiLayout extends UiElement {
39
+ protected readonly childElements: UiElement[];
40
+ get elements(): readonly UiElement[];
41
+ protected validateChild(_child: UiElement): void;
42
+ addChild(element: UiElement): this;
43
+ getChild(index: number): UiElement | undefined;
44
+ setChild(index: number, element: UiElement): this;
45
+ removeChild(index: number): this;
46
+ insertChild(index: number, element: UiElement): this;
47
+ moveChild(fromIndex: number, toIndex: number): this;
48
+ protected applyLayoutMetadataFrom(json: UiSchemaObject, factory: UiSchemaFactory): void;
49
+ protected cloneChildrenTo(target: UiLayout): void;
50
+ protected writeChildElements(json: UiSchemaObject): void;
51
+ protected readChildElements(json: UiSchemaObject, factory: UiSchemaFactory): void;
52
+ }
53
+ //# sourceMappingURL=node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/model/node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,154 @@
1
+ import { UiRule } from "./ui-rule.js";
2
+ export class UiElement {
3
+ customAttributes;
4
+ _rule;
5
+ _options = {};
6
+ _i18n;
7
+ constructor(customAttributes) {
8
+ this.customAttributes = customAttributes;
9
+ }
10
+ get rule() {
11
+ return this._rule;
12
+ }
13
+ set rule(value) {
14
+ this._rule = value;
15
+ }
16
+ get i18n() {
17
+ return this._i18n;
18
+ }
19
+ set i18n(value) {
20
+ this._i18n = value;
21
+ }
22
+ get options() {
23
+ return this._options;
24
+ }
25
+ setOption(key, value) {
26
+ this._options[key] = value;
27
+ return this;
28
+ }
29
+ toJSON() {
30
+ const json = { type: this.elementKind };
31
+ this.writeElementDefinition(json);
32
+ this.writeI18nTo(json);
33
+ this.writeRuleTo(json);
34
+ this.writeOptionsTo(json);
35
+ this.customAttributes.writeTo(json);
36
+ return json;
37
+ }
38
+ clone() {
39
+ return this.deepClone();
40
+ }
41
+ get elementType() {
42
+ return this.elementKind;
43
+ }
44
+ getCustomAttribute(name) {
45
+ return this.customAttributes.get(name);
46
+ }
47
+ setCustomAttribute(name, value) {
48
+ this.customAttributes.set(name, value);
49
+ }
50
+ cloneAttributes() {
51
+ return this.customAttributes.clone();
52
+ }
53
+ applyCustomAttributes(json) {
54
+ this.customAttributes.applyFrom(json);
55
+ }
56
+ applyRuleFrom(json) {
57
+ this._rule = json.rule ? UiRule.fromJSON(json.rule) : undefined;
58
+ }
59
+ applyOptionsFrom(json) {
60
+ this._options = json.options ? { ...json.options } : {};
61
+ }
62
+ applyI18nFrom(json) {
63
+ this._i18n = typeof json.i18n === "string" ? json.i18n : undefined;
64
+ }
65
+ writeRuleTo(json) {
66
+ if (this._rule)
67
+ json.rule = this._rule.toJSON();
68
+ }
69
+ writeOptionsTo(json) {
70
+ if (Object.keys(this._options).length) {
71
+ json.options = { ...this._options };
72
+ }
73
+ }
74
+ writeI18nTo(json) {
75
+ if (this._i18n !== undefined)
76
+ json.i18n = this._i18n;
77
+ }
78
+ copyElementStateTo(target) {
79
+ target._rule = this._rule?.clone();
80
+ target._options = { ...this._options };
81
+ target._i18n = this._i18n;
82
+ }
83
+ }
84
+ export class UiLayout extends UiElement {
85
+ childElements = [];
86
+ get elements() {
87
+ return this.childElements;
88
+ }
89
+ validateChild(_child) {
90
+ // Unterklassen können Kind-Typen einschränken.
91
+ }
92
+ addChild(element) {
93
+ this.validateChild(element);
94
+ this.childElements.push(element);
95
+ return this;
96
+ }
97
+ getChild(index) {
98
+ return this.childElements[index];
99
+ }
100
+ setChild(index, element) {
101
+ if (index < 0 || index >= this.childElements.length) {
102
+ throw new Error(`Kind-Index ${index} außerhalb des Bereichs.`);
103
+ }
104
+ this.validateChild(element);
105
+ this.childElements[index] = element;
106
+ return this;
107
+ }
108
+ removeChild(index) {
109
+ if (index < 0 || index >= this.childElements.length) {
110
+ throw new Error(`Kind-Index ${index} außerhalb des Bereichs.`);
111
+ }
112
+ this.childElements.splice(index, 1);
113
+ return this;
114
+ }
115
+ insertChild(index, element) {
116
+ this.validateChild(element);
117
+ const insertAt = Math.max(0, Math.min(index, this.childElements.length));
118
+ this.childElements.splice(insertAt, 0, element);
119
+ return this;
120
+ }
121
+ moveChild(fromIndex, toIndex) {
122
+ if (fromIndex < 0 || fromIndex >= this.childElements.length) {
123
+ throw new Error(`Kind-Index ${fromIndex} außerhalb des Bereichs.`);
124
+ }
125
+ const [moved] = this.childElements.splice(fromIndex, 1);
126
+ const insertAt = Math.max(0, Math.min(toIndex, this.childElements.length));
127
+ this.childElements.splice(insertAt, 0, moved);
128
+ return this;
129
+ }
130
+ applyLayoutMetadataFrom(json, factory) {
131
+ this.readChildElements(json, factory);
132
+ this.applyOptionsFrom(json);
133
+ this.applyRuleFrom(json);
134
+ this.applyI18nFrom(json);
135
+ this.applyCustomAttributes(json);
136
+ }
137
+ cloneChildrenTo(target) {
138
+ for (const child of this.childElements) {
139
+ target.addChild(child.deepClone());
140
+ }
141
+ }
142
+ writeChildElements(json) {
143
+ if (this.childElements.length) {
144
+ json.elements = this.childElements.map((element) => element.toJSON());
145
+ }
146
+ }
147
+ readChildElements(json, factory) {
148
+ this.childElements.length = 0;
149
+ for (const childJson of json.elements ?? []) {
150
+ this.addChild(factory.fromJSON(childJson));
151
+ }
152
+ }
153
+ }
154
+ //# sourceMappingURL=node.js.map