@acorex/platform 18.0.15 → 18.0.16

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 (176) hide show
  1. package/core/index.d.ts +1 -0
  2. package/core/utils/data-conditioner.d.ts +6 -0
  3. package/esm2022/common/lib/schema/widget/widget-renderer.mjs +3 -3
  4. package/esm2022/core/index.mjs +2 -1
  5. package/esm2022/core/utils/data-conditioner.mjs +138 -0
  6. package/esm2022/layout/builder/lib/builder/widget-registery.service.mjs +2 -2
  7. package/esm2022/layout/builder/lib/builder/widget-renderer.component.mjs +3 -3
  8. package/esm2022/layout/builder/lib/builder/widget.types.mjs +10 -8
  9. package/esm2022/layout/designer/index.mjs +2 -7
  10. package/esm2022/layout/designer/lib/{helpers → designer/components}/add-widget-button/add-widget-button.component.mjs +2 -2
  11. package/esm2022/layout/designer/lib/designer/components/board/board.component.mjs +112 -0
  12. package/esm2022/layout/designer/lib/designer/components/breadcrumbs/breadcrumbs.component.mjs +64 -0
  13. package/esm2022/layout/designer/lib/designer/components/drawers/data-sources/data-sources.component.mjs +32 -0
  14. package/esm2022/layout/designer/lib/designer/components/drawers/history/history.component.mjs +30 -0
  15. package/esm2022/layout/designer/lib/designer/components/drawers/outline/outline.component.mjs +61 -0
  16. package/esm2022/layout/designer/lib/designer/components/drawers/pages/pages.component.mjs +28 -0
  17. package/esm2022/layout/designer/lib/designer/components/grid-drawer/grid-drawer.component.mjs +82 -0
  18. package/esm2022/layout/designer/lib/designer/components/header-menu/header-menu.component.mjs +24 -0
  19. package/esm2022/layout/designer/lib/{widget-picker → designer/components/widget-picker}/widget-picker.component.mjs +1 -1
  20. package/esm2022/layout/designer/lib/designer/designer.component.mjs +28 -17
  21. package/esm2022/layout/designer/lib/designer/index.mjs +8 -0
  22. package/esm2022/layout/designer/lib/designer/shared/command.mjs +185 -0
  23. package/esm2022/layout/designer/lib/designer/shared/designer-connector.service.mjs +10 -0
  24. package/esm2022/layout/designer/lib/designer/shared/designer.service.mjs +488 -0
  25. package/esm2022/layout/designer/lib/designer/shared/designer.typs.mjs +2 -0
  26. package/esm2022/layout/designer/lib/designer/shared/drawer-content/drawer-content.component.mjs +16 -0
  27. package/esm2022/layout/designer/lib/designer/shared/widget-designer-renderer.directive.mjs +224 -0
  28. package/esm2022/layout/designer/lib/property-viewer/widget-property-viewer.component.mjs +17 -5
  29. package/esm2022/layout/entity/lib/entity-master-create.viewmodel.mjs +2 -5
  30. package/esm2022/layout/entity/lib/entity-registery.service.mjs +3 -3
  31. package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget.config.mjs +2 -1
  32. package/esm2022/themes/default/index.mjs +3 -2
  33. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-detail-list-view/entity-detail-list-view.component.mjs +14 -18
  34. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-single-view/comments/comment-list-view.component.mjs +123 -0
  35. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-single-view/comments/comments.service.mjs +3 -0
  36. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-single-view/entity-master-single-view.component.mjs +22 -23
  37. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-single-view/overview/entity-single-overview.component.mjs +68 -0
  38. package/esm2022/themes/default/lib/layouts/entity-layouts/index.mjs +2 -0
  39. package/esm2022/widgets/lib/properties/data-source.props.mjs +21 -0
  40. package/esm2022/widgets/lib/properties/editors.props.mjs +17 -3
  41. package/esm2022/widgets/lib/properties/general.props.mjs +31 -3
  42. package/esm2022/widgets/lib/properties/index.mjs +2 -1
  43. package/esm2022/widgets/lib/properties/table-column.props.mjs +2 -2
  44. package/esm2022/widgets/lib/widgets/actions/button/button-widget.config.mjs +2 -1
  45. package/esm2022/widgets/lib/widgets/advance/file/file-box-widget.config.mjs +2 -1
  46. package/esm2022/widgets/lib/widgets/advance/gallery/gallery-widget.config.mjs +2 -1
  47. package/esm2022/widgets/lib/widgets/advance/map/index.mjs +1 -4
  48. package/esm2022/widgets/lib/widgets/advance/map/map-box-widget-edit.component.mjs +47 -159
  49. package/esm2022/widgets/lib/widgets/advance/map/map-box-widget-view.component.mjs +40 -53
  50. package/esm2022/widgets/lib/widgets/advance/map/map-box-widget.config.mjs +95 -11
  51. package/esm2022/widgets/lib/widgets/advance/qrcode/qrcode-widget-view.component.mjs +11 -11
  52. package/esm2022/widgets/lib/widgets/advance/qrcode/qrcode-widget.config.mjs +8 -7
  53. package/esm2022/widgets/lib/widgets/advance/signature/signature-pad-widget.config.mjs +4 -6
  54. package/esm2022/widgets/lib/widgets/editors/checkbox/checkbox-widget.config.mjs +2 -2
  55. package/esm2022/widgets/lib/widgets/editors/color/color-box-widget.config.mjs +2 -1
  56. package/esm2022/widgets/lib/widgets/editors/contact/contact-widget.config.mjs +2 -1
  57. package/esm2022/widgets/lib/widgets/editors/date-time/date-time-box-widget.config.mjs +2 -1
  58. package/esm2022/widgets/lib/widgets/editors/email/email-box-widget.config.mjs +2 -1
  59. package/esm2022/widgets/lib/widgets/editors/large-text/large-text-widget.config.mjs +2 -1
  60. package/esm2022/widgets/lib/widgets/editors/link/link-widget.config.mjs +2 -1
  61. package/esm2022/widgets/lib/widgets/editors/number/number-box-widget-edit.component.mjs +2 -2
  62. package/esm2022/widgets/lib/widgets/editors/number/number-box-widget.config.mjs +2 -1
  63. package/esm2022/widgets/lib/widgets/editors/password/password-box-widget.config.mjs +2 -1
  64. package/esm2022/widgets/lib/widgets/editors/phone/phone-box-widget.config.mjs +2 -1
  65. package/esm2022/widgets/lib/widgets/editors/rich-text/rich-text-widget.config.mjs +2 -1
  66. package/esm2022/widgets/lib/widgets/editors/select/select-box-widget-edit.component.mjs +14 -2
  67. package/esm2022/widgets/lib/widgets/editors/select/select-box-widget.config.mjs +2 -1
  68. package/esm2022/widgets/lib/widgets/editors/selection-list/index.mjs +2 -1
  69. package/esm2022/widgets/lib/widgets/editors/selection-list/selection-list-widget-designer.component.mjs +75 -0
  70. package/esm2022/widgets/lib/widgets/editors/selection-list/selection-list-widget-edit.component.mjs +13 -10
  71. package/esm2022/widgets/lib/widgets/editors/selection-list/selection-list-widget-view.component.mjs +2 -3
  72. package/esm2022/widgets/lib/widgets/editors/selection-list/selection-list-widget.config.mjs +16 -3
  73. package/esm2022/widgets/lib/widgets/editors/text/text-box-widget.config.mjs +2 -1
  74. package/esm2022/widgets/lib/widgets/editors/toggle/toggle-widget.config.mjs +2 -1
  75. package/esm2022/widgets/lib/widgets/layout/block/block-widget.config.mjs +2 -2
  76. package/esm2022/widgets/lib/widgets/layout/document/document-widget.config.mjs +2 -2
  77. package/esm2022/widgets/lib/widgets/layout/form-field/form-field-widget.config.mjs +2 -2
  78. package/esm2022/widgets/lib/widgets/layout/grid/grid-widget.config.mjs +2 -2
  79. package/esm2022/widgets/lib/widgets/layout/grid-item/grid-item-widget.config.mjs +2 -2
  80. package/esm2022/widgets/lib/widgets/layout/grid-row/grid-row-widget.config.mjs +2 -2
  81. package/esm2022/widgets/lib/widgets/layout/page/page-widget.config.mjs +7 -3
  82. package/esm2022/widgets/lib/widgets/layout/repeater/repeater-widget.config.mjs +2 -2
  83. package/esm2022/widgets/lib/widgets/layout/text-block/text-block-widget.config.mjs +2 -1
  84. package/fesm2022/acorex-platform-common.mjs +1 -1
  85. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  86. package/fesm2022/acorex-platform-core.mjs +139 -1
  87. package/fesm2022/acorex-platform-core.mjs.map +1 -1
  88. package/fesm2022/acorex-platform-layout-builder.mjs +12 -10
  89. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  90. package/fesm2022/{acorex-platform-layout-designer-preview.component-9dJh_ulU.mjs → acorex-platform-layout-designer-preview.component-CaRHf4x_.mjs} +3 -3
  91. package/fesm2022/{acorex-platform-layout-designer-preview.component-9dJh_ulU.mjs.map → acorex-platform-layout-designer-preview.component-CaRHf4x_.mjs.map} +1 -1
  92. package/fesm2022/{acorex-platform-layout-designer-widget-picker.component-DXgcm-fP.mjs → acorex-platform-layout-designer-widget-picker.component-BZryrCyh.mjs} +4 -4
  93. package/fesm2022/acorex-platform-layout-designer-widget-picker.component-BZryrCyh.mjs.map +1 -0
  94. package/fesm2022/acorex-platform-layout-designer.mjs +438 -282
  95. package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
  96. package/fesm2022/acorex-platform-layout-entity.mjs +2 -4
  97. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  98. package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-BGT0puX_.mjs → acorex-platform-themes-default-entity-master-create-view.component-Q8eTfAVx.mjs} +7 -7
  99. package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-BGT0puX_.mjs.map → acorex-platform-themes-default-entity-master-create-view.component-Q8eTfAVx.mjs.map} +1 -1
  100. package/fesm2022/{acorex-platform-themes-default-entity-master-modify-view.component-BHo31YVi.mjs → acorex-platform-themes-default-entity-master-modify-view.component-BijYXMme.mjs} +7 -7
  101. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BijYXMme.mjs.map +1 -0
  102. package/fesm2022/{acorex-platform-themes-default-error-401.component-zyAGwz2j.mjs → acorex-platform-themes-default-error-401.component-D5QQ2HAv.mjs} +3 -3
  103. package/fesm2022/{acorex-platform-themes-default-error-401.component-zyAGwz2j.mjs.map → acorex-platform-themes-default-error-401.component-D5QQ2HAv.mjs.map} +1 -1
  104. package/fesm2022/{acorex-platform-themes-default-error-404.component-DcxQ89LL.mjs → acorex-platform-themes-default-error-404.component-DSY_D3Iq.mjs} +3 -3
  105. package/fesm2022/{acorex-platform-themes-default-error-404.component-DcxQ89LL.mjs.map → acorex-platform-themes-default-error-404.component-DSY_D3Iq.mjs.map} +1 -1
  106. package/fesm2022/{acorex-platform-themes-default-error-offline.component-BMB6D5Cx.mjs → acorex-platform-themes-default-error-offline.component-B6wSkMdd.mjs} +3 -3
  107. package/fesm2022/{acorex-platform-themes-default-error-offline.component-BMB6D5Cx.mjs.map → acorex-platform-themes-default-error-offline.component-B6wSkMdd.mjs.map} +1 -1
  108. package/fesm2022/acorex-platform-themes-default.mjs +222 -68
  109. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  110. package/fesm2022/{acorex-platform-widgets-checkbox-widget-designer.component-DfUr_DMU.mjs → acorex-platform-widgets-checkbox-widget-designer.component-DAGbdSTk.mjs} +4 -4
  111. package/fesm2022/{acorex-platform-widgets-checkbox-widget-designer.component-DfUr_DMU.mjs.map → acorex-platform-widgets-checkbox-widget-designer.component-DAGbdSTk.mjs.map} +1 -1
  112. package/fesm2022/{acorex-platform-widgets-color-box-widget-designer.component-BF24k3Y-.mjs → acorex-platform-widgets-color-box-widget-designer.component-Bb3aXCNZ.mjs} +4 -4
  113. package/fesm2022/acorex-platform-widgets-color-box-widget-designer.component-Bb3aXCNZ.mjs.map +1 -0
  114. package/fesm2022/acorex-platform-widgets.mjs +447 -376
  115. package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
  116. package/layout/builder/lib/builder/widget.types.d.ts +13 -4
  117. package/layout/designer/index.d.ts +1 -6
  118. package/layout/designer/lib/{board → designer/components/board}/board.component.d.ts +1 -1
  119. package/layout/designer/lib/{breadcrumbs → designer/components/breadcrumbs}/breadcrumbs.component.d.ts +1 -1
  120. package/layout/designer/lib/designer/components/drawers/data-sources/data-sources.component.d.ts +12 -0
  121. package/layout/designer/lib/{history → designer/components/drawers/history}/history.component.d.ts +1 -1
  122. package/layout/designer/lib/{outline → designer/components/drawers/outline}/outline.component.d.ts +1 -1
  123. package/layout/designer/lib/{pages → designer/components/drawers/pages}/pages.component.d.ts +1 -1
  124. package/layout/designer/lib/{header-menu → designer/components/header-menu}/header-menu.component.d.ts +1 -1
  125. package/layout/designer/lib/designer/designer.component.d.ts +1 -1
  126. package/layout/designer/lib/designer/index.d.ts +7 -0
  127. package/layout/designer/lib/designer/shared/designer-connector.service.d.ts +11 -0
  128. package/layout/designer/lib/{designer.service.d.ts → designer/shared/designer.service.d.ts} +9 -12
  129. package/layout/designer/lib/designer/shared/designer.typs.d.ts +4 -0
  130. package/layout/designer/lib/designer/shared/drawer-content/drawer-content.component.d.ts +8 -0
  131. package/layout/designer/lib/property-viewer/widget-property-viewer.component.d.ts +8 -0
  132. package/layout/entity/lib/entity-registery.service.d.ts +1 -1
  133. package/package.json +16 -16
  134. package/themes/default/index.d.ts +2 -1
  135. package/themes/default/lib/layouts/entity-layouts/entity-detail-list-view/entity-detail-list-view.component.d.ts +5 -3
  136. package/themes/default/lib/layouts/entity-layouts/entity-master-single-view/comments/comment-list-view.component.d.ts +33 -0
  137. package/themes/default/lib/layouts/entity-layouts/entity-master-single-view/comments/comments.service.d.ts +11 -0
  138. package/themes/default/lib/layouts/entity-layouts/entity-master-single-view/entity-master-single-view.component.d.ts +3 -2
  139. package/themes/default/lib/layouts/entity-layouts/entity-master-single-view/overview/entity-single-overview.component.d.ts +11 -0
  140. package/themes/default/lib/layouts/entity-layouts/index.d.ts +1 -0
  141. package/widgets/lib/properties/data-source.props.d.ts +2 -0
  142. package/widgets/lib/properties/editors.props.d.ts +1 -0
  143. package/widgets/lib/properties/general.props.d.ts +2 -1
  144. package/widgets/lib/properties/index.d.ts +1 -0
  145. package/widgets/lib/widgets/advance/map/index.d.ts +0 -3
  146. package/widgets/lib/widgets/advance/map/map-box-widget-edit.component.d.ts +9 -32
  147. package/widgets/lib/widgets/advance/map/map-box-widget-view.component.d.ts +6 -11
  148. package/widgets/lib/widgets/advance/qrcode/qrcode-widget-view.component.d.ts +4 -4
  149. package/widgets/lib/widgets/editors/selection-list/index.d.ts +1 -0
  150. package/widgets/lib/widgets/editors/selection-list/selection-list-widget-designer.component.d.ts +16 -0
  151. package/widgets/lib/widgets/editors/selection-list/selection-list-widget-edit.component.d.ts +3 -2
  152. package/widgets/lib/widgets/editors/selection-list/selection-list-widget-view.component.d.ts +1 -1
  153. package/esm2022/layout/designer/lib/board/board.component.mjs +0 -112
  154. package/esm2022/layout/designer/lib/breadcrumbs/breadcrumbs.component.mjs +0 -64
  155. package/esm2022/layout/designer/lib/command.mjs +0 -185
  156. package/esm2022/layout/designer/lib/designer.service.mjs +0 -399
  157. package/esm2022/layout/designer/lib/header-menu/header-menu.component.mjs +0 -24
  158. package/esm2022/layout/designer/lib/helpers/grid-drawer/grid-drawer.component.mjs +0 -82
  159. package/esm2022/layout/designer/lib/history/history.component.mjs +0 -28
  160. package/esm2022/layout/designer/lib/outline/outline.component.mjs +0 -56
  161. package/esm2022/layout/designer/lib/pages/pages.component.mjs +0 -28
  162. package/esm2022/layout/designer/lib/widget-designer-renderer.directive.mjs +0 -224
  163. package/esm2022/widgets/lib/widgets/advance/map/map-box-widget-column.component.mjs +0 -19
  164. package/esm2022/widgets/lib/widgets/advance/map/map-box-widget-filter.component.mjs +0 -20
  165. package/esm2022/widgets/lib/widgets/advance/map/map-box-widget-print.component.mjs +0 -19
  166. package/fesm2022/acorex-platform-layout-designer-widget-picker.component-DXgcm-fP.mjs.map +0 -1
  167. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BHo31YVi.mjs.map +0 -1
  168. package/fesm2022/acorex-platform-widgets-color-box-widget-designer.component-BF24k3Y-.mjs.map +0 -1
  169. package/widgets/lib/widgets/advance/map/map-box-widget-column.component.d.ts +0 -6
  170. package/widgets/lib/widgets/advance/map/map-box-widget-filter.component.d.ts +0 -6
  171. package/widgets/lib/widgets/advance/map/map-box-widget-print.component.d.ts +0 -6
  172. /package/layout/designer/lib/{helpers → designer/components}/add-widget-button/add-widget-button.component.d.ts +0 -0
  173. /package/layout/designer/lib/{helpers → designer/components}/grid-drawer/grid-drawer.component.d.ts +0 -0
  174. /package/layout/designer/lib/{widget-picker → designer/components/widget-picker}/widget-picker.component.d.ts +0 -0
  175. /package/layout/designer/lib/{command.d.ts → designer/shared/command.d.ts} +0 -0
  176. /package/layout/designer/lib/{widget-designer-renderer.directive.d.ts → designer/shared/widget-designer-renderer.directive.d.ts} +0 -0
@@ -0,0 +1,185 @@
1
+ import { computed, Injectable, signal } from "@angular/core";
2
+ import { cloneDeep, merge } from "lodash-es";
3
+ import * as i0 from "@angular/core";
4
+ // AddWidgetCommand
5
+ export class AddWidgetCommand {
6
+ constructor(widget, parent, previousSelection) {
7
+ this.widget = widget;
8
+ this.parent = parent;
9
+ this.previousSelection = previousSelection;
10
+ }
11
+ execute() {
12
+ this.parent.children = this.parent.children || [];
13
+ this.parent.children.push(this.widget);
14
+ }
15
+ undo() {
16
+ this.parent.children = this.parent.children || [];
17
+ const index = this.parent.children.indexOf(this.widget);
18
+ if (index > -1) {
19
+ this.parent.children.splice(index, 1);
20
+ }
21
+ }
22
+ description() {
23
+ return `Added widget ${this.widget.name}`;
24
+ }
25
+ icon() {
26
+ return `fa-solid fa-square-plus`;
27
+ }
28
+ getExecutionSelection() {
29
+ return this.widget; // After executing, select the newly added widget
30
+ }
31
+ getUndoSelection() {
32
+ return this.previousSelection; // After undo, select the previously selected widget
33
+ }
34
+ }
35
+ export class RemoveWidgetCommand {
36
+ constructor(widget, parent, previousSelection) {
37
+ this.widget = widget;
38
+ this.parent = parent;
39
+ this.previousSelection = previousSelection;
40
+ parent.children = parent.children || [];
41
+ this.index = parent.children.indexOf(widget); // Capture the index for undo purposes
42
+ }
43
+ execute() {
44
+ this.parent.children = this.parent.children || [];
45
+ this.index = this.parent.children.indexOf(this.widget); // Re-assert the index in case it has changed
46
+ this.parent.children.splice(this.index, 1);
47
+ }
48
+ undo() {
49
+ this.parent.children = this.parent.children || [];
50
+ this.parent.children.splice(this.index, 0, this.widget); // Reinsert at the original index
51
+ }
52
+ description() {
53
+ return `Removed widget ${this.widget.name}`;
54
+ }
55
+ icon() {
56
+ return `fa-solid fa-square-minus`;
57
+ }
58
+ getExecutionSelection() {
59
+ return this.previousSelection; // Typically the parent or a nearby sibling could be focused
60
+ }
61
+ getUndoSelection() {
62
+ return this.widget; // Select the widget itself when the operation is undone
63
+ }
64
+ }
65
+ export class UpdateWidgetCommand {
66
+ constructor(widget, values, previousSelection) {
67
+ this.widget = widget;
68
+ this.newState = merge(cloneDeep(widget), values);
69
+ this.previousSelection = previousSelection;
70
+ this.previousState = cloneDeep(widget);
71
+ }
72
+ execute() {
73
+ merge(this.widget, this.newState);
74
+ }
75
+ undo() {
76
+ this.deepPruneAndRestore(this.widget, this.previousState);
77
+ }
78
+ description() {
79
+ return `Updated widget ${this.widget.name}`;
80
+ }
81
+ icon() {
82
+ return `fa-solid fa-pen-to-square`;
83
+ }
84
+ getExecutionSelection() {
85
+ return this.widget; // Focus the widget after it's updated
86
+ }
87
+ getUndoSelection() {
88
+ return this.previousSelection; // Restore the focus to where it was before the update
89
+ }
90
+ deepPruneAndRestore(current, original) {
91
+ Object.keys(current).forEach(key => {
92
+ if (original.hasOwnProperty(key)) {
93
+ if (typeof current[key] === 'object' && current[key] !== null && !(current[key] instanceof Array)) {
94
+ this.deepPruneAndRestore(current[key], original[key]);
95
+ }
96
+ }
97
+ else {
98
+ delete current[key]; // Remove properties not present in original
99
+ }
100
+ });
101
+ // Restore the original properties
102
+ merge(current, original);
103
+ }
104
+ }
105
+ export class CommandManager {
106
+ constructor() {
107
+ this.undoStack = signal([]);
108
+ this.currentIndex = signal(-1);
109
+ this.selectedNode = signal(null);
110
+ this.canUndo = computed(() => this.currentIndex() >= 0);
111
+ this.canRedo = computed(() => this.currentIndex() < this.undoStack().length - 1);
112
+ this.history = computed(() => this.undoStack().map((cmd, index) => ({
113
+ description: cmd.description(),
114
+ icon: cmd.icon(),
115
+ isPast: this.currentIndex() > index,
116
+ isFuture: this.currentIndex() < index,
117
+ isCurrent: this.currentIndex() == index
118
+ })));
119
+ }
120
+ executeCommand(command) {
121
+ // Check if the currentIndex is not at the end of the undoStack
122
+ if (this.currentIndex() !== this.undoStack().length - 1) {
123
+ // Remove all commands beyond the current index to discard the "future" commands
124
+ const newUndoStack = this.undoStack().slice(0, this.currentIndex() + 1);
125
+ this.undoStack.set(newUndoStack);
126
+ }
127
+ command.execute();
128
+ this.undoStack.set([...this.undoStack(), command]); // Add the new command to the stack
129
+ this.currentIndex.set(this.undoStack().length - 1); // Update currentIndex to the end of the stack
130
+ this.selectedNode.set(command.getExecutionSelection()); // Update the selected node
131
+ }
132
+ undo() {
133
+ if (this.currentIndex() >= 0) {
134
+ const command = this.undoStack()[this.currentIndex()];
135
+ command.undo();
136
+ this.currentIndex.set(this.currentIndex() - 1);
137
+ if (this.currentIndex() >= 0) {
138
+ this.selectedNode.set(this.undoStack()[this.currentIndex()].getUndoSelection());
139
+ }
140
+ else {
141
+ this.selectedNode.set(null); // No selection if all commands are undone
142
+ }
143
+ }
144
+ }
145
+ redo() {
146
+ if (this.currentIndex() < this.undoStack().length - 1) {
147
+ this.currentIndex.set(this.currentIndex() + 1);
148
+ const command = this.undoStack()[this.currentIndex()];
149
+ command.execute();
150
+ this.selectedNode.set(command.getExecutionSelection());
151
+ }
152
+ }
153
+ goToCommand(index) {
154
+ if (index < 0 || index >= this.undoStack().length || index === this.currentIndex()) {
155
+ return; // Out of bounds or already at the desired index
156
+ }
157
+ if (index > this.currentIndex()) {
158
+ // Need to redo until reaching the desired index
159
+ while (this.currentIndex() < index) {
160
+ this.redo();
161
+ }
162
+ }
163
+ else {
164
+ // Need to undo until reaching the desired index
165
+ while (this.currentIndex() > index) {
166
+ this.undo();
167
+ }
168
+ }
169
+ // Optionally update any UI components or state here
170
+ this.selectedNode.set(this.undoStack()[this.currentIndex()].getExecutionSelection());
171
+ }
172
+ clear() {
173
+ this.undoStack.set([]);
174
+ this.currentIndex.set(-1);
175
+ }
176
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: CommandManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
177
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: CommandManager, providedIn: 'root' }); }
178
+ }
179
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: CommandManager, decorators: [{
180
+ type: Injectable,
181
+ args: [{
182
+ providedIn: 'root'
183
+ }]
184
+ }] });
185
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2Rlc2lnbmVyL3NyYy9saWIvZGVzaWduZXIvc2hhcmVkL2NvbW1hbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDOztBQVk3QyxtQkFBbUI7QUFDbkIsTUFBTSxPQUFPLGdCQUFnQjtJQUt6QixZQUFZLE1BQXFCLEVBQUUsTUFBcUIsRUFBRSxpQkFBZ0M7UUFDdEYsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDO0lBQy9DLENBQUM7SUFFRCxPQUFPO1FBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDO1FBQ2xELElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELElBQUk7UUFDQSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7UUFDbEQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4RCxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENB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LENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUM7SUFDekYsQ0FBQztJQWFNLEtBQUs7UUFDUixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlCLENBQUM7OEdBL0VRLGNBQWM7a0hBQWQsY0FBYyxjQUZYLE1BQU07OzJGQUVULGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQV2lkZ2V0Tm9kZSB9IGZyb20gXCJAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyXCI7XG5pbXBvcnQgeyBjb21wdXRlZCwgSW5qZWN0YWJsZSwgc2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IGNsb25lRGVlcCwgbWVyZ2UgfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cbi8vIENvbW1hbmQgaW50ZXJmYWNlXG5leHBvcnQgaW50ZXJmYWNlIENvbW1hbmQge1xuICAgIGV4ZWN1dGUoKTogdm9pZDtcbiAgICB1bmRvKCk6IHZvaWQ7XG4gICAgZGVzY3JpcHRpb24oKTogc3RyaW5nO1xuICAgIGljb24oKTogc3RyaW5nO1xuICAgIGdldEV4ZWN1dGlvblNlbGVjdGlvbigpOiBBWFBXaWRnZXROb2RlOyAgLy8gTm9kZSB0byBzZWxlY3QgYWZ0ZXIgZXhlY3V0aW9uXG4gICAgZ2V0VW5kb1NlbGVjdGlvbigpOiBBWFBXaWRnZXROb2RlOyAgICAgICAvLyBOb2RlIHRvIHNlbGVjdCBhZnRlciB1bmRvXG59XG5cbi8vIEFkZFdpZGdldENvbW1hbmRcbmV4cG9ydCBjbGFzcyBBZGRXaWRnZXRDb21tYW5kIGltcGxlbWVudHMgQ29tbWFuZCB7XG4gICAgcHJpdmF0ZSB3aWRnZXQ6IEFYUFdpZGdldE5vZGU7XG4gICAgcHJpdmF0ZSBwYXJlbnQ6IEFYUFdpZGdldE5vZGU7XG4gICAgcHJpdmF0ZSBwcmV2aW91c1NlbGVjdGlvbjogQVhQV2lkZ2V0Tm9kZTtcblxuICAgIGNvbnN0cnVjdG9yKHdpZGdldDogQVhQV2lkZ2V0Tm9kZSwgcGFyZW50OiBBWFBXaWRnZXROb2RlLCBwcmV2aW91c1NlbGVjdGlvbjogQVhQV2lkZ2V0Tm9kZSkge1xuICAgICAgICB0aGlzLndpZGdldCA9IHdpZGdldDtcbiAgICAgICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgICAgIHRoaXMucHJldmlvdXNTZWxlY3Rpb24gPSBwcmV2aW91c1NlbGVjdGlvbjtcbiAgICB9XG5cbiAgICBleGVjdXRlKCkge1xuICAgICAgICB0aGlzLnBhcmVudC5jaGlsZHJlbiA9IHRoaXMucGFyZW50LmNoaWxkcmVuIHx8IFtdO1xuICAgICAgICB0aGlzLnBhcmVudC5jaGlsZHJlbi5wdXNoKHRoaXMud2lkZ2V0KTtcbiAgICB9XG5cbiAgICB1bmRvKCkge1xuICAgICAgICB0aGlzLnBhcmVudC5jaGlsZHJlbiA9IHRoaXMucGFyZW50LmNoaWxkcmVuIHx8IFtdO1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMucGFyZW50LmNoaWxkcmVuLmluZGV4T2YodGhpcy53aWRnZXQpO1xuICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnQuY2hpbGRyZW4uc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRlc2NyaXB0aW9uKCkge1xuICAgICAgICByZXR1cm4gYEFkZGVkIHdpZGdldCAke3RoaXMud2lkZ2V0Lm5hbWV9YDtcbiAgICB9XG5cbiAgICBpY29uKCkge1xuICAgICAgICByZXR1cm4gYGZhLXNvbGlkIGZhLXNxdWFyZS1wbHVzYDtcbiAgICB9XG5cbiAgICBnZXRFeGVjdXRpb25TZWxlY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLndpZGdldDsgIC8vIEFmdGVyIGV4ZWN1dGluZywgc2VsZWN0IHRoZSBuZXdseSBhZGRlZCB3aWRnZXRcbiAgICB9XG5cbiAgICBnZXRVbmRvU2VsZWN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wcmV2aW91c1NlbGVjdGlvbjsgIC8vIEFmdGVyIHVuZG8sIHNlbGVjdCB0aGUgcHJldmlvdXNseSBzZWxlY3RlZCB3aWRnZXRcbiAgICB9XG59XG5cblxuZXhwb3J0IGNsYXNzIFJlbW92ZVdpZGdldENvbW1hbmQgaW1wbGVtZW50cyBDb21tYW5kIHtcbiAgICBwcml2YXRlIHdpZGdldDogQVhQV2lkZ2V0Tm9kZTtcbiAgICBwcml2YXRlIHBhcmVudDogQVhQV2lkZ2V0Tm9kZTtcbiAgICBwcml2YXRlIHByZXZpb3VzU2VsZWN0aW9uOiBBWFBXaWRnZXROb2RlO1xuICAgIHByaXZhdGUgaW5kZXg6IG51bWJlcjtcblxuICAgIGNvbnN0cnVjdG9yKHdpZGdldDogQVhQV2lkZ2V0Tm9kZSwgcGFyZW50OiBBWFBXaWRnZXROb2RlLCBwcmV2aW91c1NlbGVjdGlvbjogQVhQV2lkZ2V0Tm9kZSkge1xuICAgICAgICB0aGlzLndpZGdldCA9IHdpZGdldDtcbiAgICAgICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgICAgIHRoaXMucHJldmlvdXNTZWxlY3Rpb24gPSBwcmV2aW91c1NlbGVjdGlvbjtcbiAgICAgICAgcGFyZW50LmNoaWxkcmVuID0gcGFyZW50LmNoaWxkcmVuIHx8IFtdO1xuICAgICAgICB0aGlzLmluZGV4ID0gcGFyZW50LmNoaWxkcmVuLmluZGV4T2Yod2lkZ2V0KTsgIC8vIENhcHR1cmUgdGhlIGluZGV4IGZvciB1bmRvIHB1cnBvc2VzXG4gICAgfVxuXG4gICAgZXhlY3V0ZSgpIHtcbiAgICAgICAgdGhpcy5wYXJlbnQuY2hpbGRyZW4gPSB0aGlzLnBhcmVudC5jaGlsZHJlbiB8fCBbXTtcbiAgICAgICAgdGhpcy5pbmRleCA9IHRoaXMucGFyZW50LmNoaWxkcmVuLmluZGV4T2YodGhpcy53aWRnZXQpOyAgLy8gUmUtYXNzZXJ0IHRoZSBpbmRleCBpbiBjYXNlIGl0IGhhcyBjaGFuZ2VkXG4gICAgICAgIHRoaXMucGFyZW50LmNoaWxkcmVuLnNwbGljZSh0aGlzLmluZGV4LCAxKTtcbiAgICB9XG5cbiAgICB1bmRvKCkge1xuICAgICAgICB0aGlzLnBhcmVudC5jaGlsZHJlbiA9IHRoaXMucGFyZW50LmNoaWxkcmVuIHx8IFtdO1xuICAgICAgICB0aGlzLnBhcmVudC5jaGlsZHJlbi5zcGxpY2UodGhpcy5pbmRleCwgMCwgdGhpcy53aWRnZXQpOyAgLy8gUmVpbnNlcnQgYXQgdGhlIG9yaWdpbmFsIGluZGV4XG4gICAgfVxuXG4gICAgZGVzY3JpcHRpb24oKSB7XG4gICAgICAgIHJldHVybiBgUmVtb3ZlZCB3aWRnZXQgJHt0aGlzLndpZGdldC5uYW1lfWA7XG4gICAgfVxuXG4gICAgaWNvbigpIHtcbiAgICAgICAgcmV0dXJuIGBmYS1zb2xpZCBmYS1zcXVhcmUtbWludXNgO1xuICAgIH1cblxuICAgIGdldEV4ZWN1dGlvblNlbGVjdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJldmlvdXNTZWxlY3Rpb247ICAvLyBUeXBpY2FsbHkgdGhlIHBhcmVudCBvciBhIG5lYXJieSBzaWJsaW5nIGNvdWxkIGJlIGZvY3VzZWRcbiAgICB9XG5cbiAgICBnZXRVbmRvU2VsZWN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy53aWRnZXQ7ICAvLyBTZWxlY3QgdGhlIHdpZGdldCBpdHNlbGYgd2hlbiB0aGUgb3BlcmF0aW9uIGlzIHVuZG9uZVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVwZGF0ZVdpZGdldENvbW1hbmQgaW1wbGVtZW50cyBDb21tYW5kIHtcbiAgICBwcml2YXRlIHdpZGdldDogQVhQV2lkZ2V0Tm9kZTtcbiAgICBwcml2YXRlIHByZXZpb3VzU3RhdGU6IEFYUFdpZGdldE5vZGU7XG4gICAgcHJpdmF0ZSBuZXdTdGF0ZTogQVhQV2lkZ2V0Tm9kZTtcbiAgICBwcml2YXRlIHByZXZpb3VzU2VsZWN0aW9uOiBBWFBXaWRnZXROb2RlO1xuXG4gICAgY29uc3RydWN0b3Iod2lkZ2V0OiBBWFBXaWRnZXROb2RlLCB2YWx1ZXM6IFBhcnRpYWw8QVhQV2lkZ2V0Tm9kZT4sIHByZXZpb3VzU2VsZWN0aW9uOiBBWFBXaWRnZXROb2RlKSB7XG4gICAgICAgIHRoaXMud2lkZ2V0ID0gd2lkZ2V0O1xuICAgICAgICB0aGlzLm5ld1N0YXRlID0gbWVyZ2UoY2xvbmVEZWVwKHdpZGdldCksIHZhbHVlcyk7XG4gICAgICAgIHRoaXMucHJldmlvdXNTZWxlY3Rpb24gPSBwcmV2aW91c1NlbGVjdGlvbjtcbiAgICAgICAgdGhpcy5wcmV2aW91c1N0YXRlID0gY2xvbmVEZWVwKHdpZGdldCk7XG4gICAgfVxuXG4gICAgZXhlY3V0ZSgpIHtcbiAgICAgICAgbWVyZ2UodGhpcy53aWRnZXQsIHRoaXMubmV3U3RhdGUpXG4gICAgfVxuXG4gICAgdW5kbygpIHtcbiAgICAgICAgdGhpcy5kZWVwUHJ1bmVBbmRSZXN0b3JlKHRoaXMud2lkZ2V0LCB0aGlzLnByZXZpb3VzU3RhdGUpO1xuICAgIH1cblxuICAgIGRlc2NyaXB0aW9uKCkge1xuICAgICAgICByZXR1cm4gYFVwZGF0ZWQgd2lkZ2V0ICR7dGhpcy53aWRnZXQubmFtZX1gO1xuICAgIH1cblxuICAgIGljb24oKSB7XG4gICAgICAgIHJldHVybiBgZmEtc29saWQgZmEtcGVuLXRvLXNxdWFyZWA7XG4gICAgfVxuXG4gICAgZ2V0RXhlY3V0aW9uU2VsZWN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy53aWRnZXQ7ICAvLyBGb2N1cyB0aGUgd2lkZ2V0IGFmdGVyIGl0J3MgdXBkYXRlZFxuICAgIH1cblxuICAgIGdldFVuZG9TZWxlY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByZXZpb3VzU2VsZWN0aW9uOyAgLy8gUmVzdG9yZSB0aGUgZm9jdXMgdG8gd2hlcmUgaXQgd2FzIGJlZm9yZSB0aGUgdXBkYXRlXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZWVwUHJ1bmVBbmRSZXN0b3JlKGN1cnJlbnQ6IGFueSwgb3JpZ2luYWw6IGFueSkge1xuICAgICAgICBPYmplY3Qua2V5cyhjdXJyZW50KS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgICBpZiAob3JpZ2luYWwuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY3VycmVudFtrZXldID09PSAnb2JqZWN0JyAmJiBjdXJyZW50W2tleV0gIT09IG51bGwgJiYgIShjdXJyZW50W2tleV0gaW5zdGFuY2VvZiBBcnJheSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWVwUHJ1bmVBbmRSZXN0b3JlKGN1cnJlbnRba2V5XSwgb3JpZ2luYWxba2V5XSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgY3VycmVudFtrZXldOyAgLy8gUmVtb3ZlIHByb3BlcnRpZXMgbm90IHByZXNlbnQgaW4gb3JpZ2luYWxcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gUmVzdG9yZSB0aGUgb3JpZ2luYWwgcHJvcGVydGllc1xuICAgICAgICBtZXJnZShjdXJyZW50LCBvcmlnaW5hbCk7XG4gICAgfVxufVxuXG5cblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDb21tYW5kTWFuYWdlciB7XG4gICAgcHJpdmF0ZSB1bmRvU3RhY2sgPSBzaWduYWw8Q29tbWFuZFtdPihbXSk7XG4gICAgcHJpdmF0ZSBjdXJyZW50SW5kZXggPSBzaWduYWw8bnVtYmVyPigtMSk7XG4gICAgcHVibGljIHJlYWRvbmx5IHNlbGVjdGVkTm9kZSA9IHNpZ25hbDxBWFBXaWRnZXROb2RlIHwgbnVsbD4obnVsbCk7XG5cbiAgICBwdWJsaWMgY2FuVW5kbyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY3VycmVudEluZGV4KCkgPj0gMClcbiAgICBwdWJsaWMgY2FuUmVkbyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY3VycmVudEluZGV4KCkgPCB0aGlzLnVuZG9TdGFjaygpLmxlbmd0aCAtIDEpXG5cbiAgICBleGVjdXRlQ29tbWFuZChjb21tYW5kOiBDb21tYW5kKSB7XG4gICAgICAgIC8vIENoZWNrIGlmIHRoZSBjdXJyZW50SW5kZXggaXMgbm90IGF0IHRoZSBlbmQgb2YgdGhlIHVuZG9TdGFja1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50SW5kZXgoKSAhPT0gdGhpcy51bmRvU3RhY2soKS5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAvLyBSZW1vdmUgYWxsIGNvbW1hbmRzIGJleW9uZCB0aGUgY3VycmVudCBpbmRleCB0byBkaXNjYXJkIHRoZSBcImZ1dHVyZVwiIGNvbW1hbmRzXG4gICAgICAgICAgICBjb25zdCBuZXdVbmRvU3RhY2sgPSB0aGlzLnVuZG9TdGFjaygpLnNsaWNlKDAsIHRoaXMuY3VycmVudEluZGV4KCkgKyAxKTtcbiAgICAgICAgICAgIHRoaXMudW5kb1N0YWNrLnNldChuZXdVbmRvU3RhY2spO1xuICAgICAgICB9XG5cbiAgICAgICAgY29tbWFuZC5leGVjdXRlKCk7XG4gICAgICAgIHRoaXMudW5kb1N0YWNrLnNldChbLi4udGhpcy51bmRvU3RhY2soKSwgY29tbWFuZF0pOyAvLyBBZGQgdGhlIG5ldyBjb21tYW5kIHRvIHRoZSBzdGFja1xuICAgICAgICB0aGlzLmN1cnJlbnRJbmRleC5zZXQodGhpcy51bmRvU3RhY2soKS5sZW5ndGggLSAxKTsgLy8gVXBkYXRlIGN1cnJlbnRJbmRleCB0byB0aGUgZW5kIG9mIHRoZSBzdGFja1xuICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZS5zZXQoY29tbWFuZC5nZXRFeGVjdXRpb25TZWxlY3Rpb24oKSk7IC8vIFVwZGF0ZSB0aGUgc2VsZWN0ZWQgbm9kZVxuICAgIH1cblxuICAgIHVuZG8oKSB7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRJbmRleCgpID49IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSB0aGlzLnVuZG9TdGFjaygpW3RoaXMuY3VycmVudEluZGV4KCldO1xuICAgICAgICAgICAgY29tbWFuZC51bmRvKCk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRJbmRleC5zZXQodGhpcy5jdXJyZW50SW5kZXgoKSAtIDEpO1xuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudEluZGV4KCkgPj0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlLnNldCh0aGlzLnVuZG9TdGFjaygpW3RoaXMuY3VycmVudEluZGV4KCldLmdldFVuZG9TZWxlY3Rpb24oKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlLnNldChudWxsKTsgLy8gTm8gc2VsZWN0aW9uIGlmIGFsbCBjb21tYW5kcyBhcmUgdW5kb25lXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZWRvKCkge1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50SW5kZXgoKSA8IHRoaXMudW5kb1N0YWNrKCkubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50SW5kZXguc2V0KHRoaXMuY3VycmVudEluZGV4KCkgKyAxKTtcbiAgICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSB0aGlzLnVuZG9TdGFjaygpW3RoaXMuY3VycmVudEluZGV4KCldO1xuICAgICAgICAgICAgY29tbWFuZC5leGVjdXRlKCk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZS5zZXQoY29tbWFuZC5nZXRFeGVjdXRpb25TZWxlY3Rpb24oKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnb1RvQ29tbWFuZChpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gdGhpcy51bmRvU3RhY2soKS5sZW5ndGggfHwgaW5kZXggPT09IHRoaXMuY3VycmVudEluZGV4KCkpIHtcbiAgICAgICAgICAgIHJldHVybjsgIC8vIE91dCBvZiBib3VuZHMgb3IgYWxyZWFkeSBhdCB0aGUgZGVzaXJlZCBpbmRleFxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGluZGV4ID4gdGhpcy5jdXJyZW50SW5kZXgoKSkge1xuICAgICAgICAgICAgLy8gTmVlZCB0byByZWRvIHVudGlsIHJlYWNoaW5nIHRoZSBkZXNpcmVkIGluZGV4XG4gICAgICAgICAgICB3aGlsZSAodGhpcy5jdXJyZW50SW5kZXgoKSA8IGluZGV4KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWRvKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBOZWVkIHRvIHVuZG8gdW50aWwgcmVhY2hpbmcgdGhlIGRlc2lyZWQgaW5kZXhcbiAgICAgICAgICAgIHdoaWxlICh0aGlzLmN1cnJlbnRJbmRleCgpID4gaW5kZXgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVuZG8oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE9wdGlvbmFsbHkgdXBkYXRlIGFueSBVSSBjb21wb25lbnRzIG9yIHN0YXRlIGhlcmVcbiAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGUuc2V0KHRoaXMudW5kb1N0YWNrKClbdGhpcy5jdXJyZW50SW5kZXgoKV0uZ2V0RXhlY3V0aW9uU2VsZWN0aW9uKCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBoaXN0b3J5ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy51bmRvU3RhY2soKS5tYXAoKGNtZCwgaW5kZXgpID0+IChcbiAgICAgICAge1xuICAgICAgICAgICAgZGVzY3JpcHRpb246IGNtZC5kZXNjcmlwdGlvbigpLFxuICAgICAgICAgICAgaWNvbjogY21kLmljb24oKSxcbiAgICAgICAgICAgIGlzUGFzdDogdGhpcy5jdXJyZW50SW5kZXgoKSA+IGluZGV4LFxuICAgICAgICAgICAgaXNGdXR1cmU6IHRoaXMuY3VycmVudEluZGV4KCkgPCBpbmRleCxcbiAgICAgICAgICAgIGlzQ3VycmVudDogdGhpcy5jdXJyZW50SW5kZXgoKSA9PSBpbmRleFxuICAgICAgICB9XG4gICAgKSkpXG5cblxuICAgIHB1YmxpYyBjbGVhcigpIHtcbiAgICAgICAgdGhpcy51bmRvU3RhY2suc2V0KFtdKTtcbiAgICAgICAgdGhpcy5jdXJyZW50SW5kZXguc2V0KC0xKTtcbiAgICB9XG59Il19
@@ -0,0 +1,10 @@
1
+ import { Injectable } from "@angular/core";
2
+ import * as i0 from "@angular/core";
3
+ export class AXPDesignerConnectorAbstract {
4
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPDesignerConnectorAbstract, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
5
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPDesignerConnectorAbstract }); }
6
+ }
7
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPDesignerConnectorAbstract, decorators: [{
8
+ type: Injectable
9
+ }] });
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzaWduZXItY29ubmVjdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9kZXNpZ25lci9zcmMvbGliL2Rlc2lnbmVyL3NoYXJlZC9kZXNpZ25lci1jb25uZWN0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU8zQyxNQUFNLE9BQWdCLDRCQUE0Qjs4R0FBNUIsNEJBQTRCO2tIQUE1Qiw0QkFBNEI7OzJGQUE1Qiw0QkFBNEI7a0JBRGpELFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFBXaWRnZXREYXRhU291cmNlLCBBWFBXaWRnZXROb2RlIH0gZnJvbSBcIkBhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXJcIjtcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQVhQRGVzaWduZXJEYXRhU291cmNlTmFtZSB9IGZyb20gXCIuL2Rlc2lnbmVyLnR5cHNcIjtcblxuXG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYUERlc2lnbmVyQ29ubmVjdG9yQWJzdHJhY3Q8VCA9IHN0cmluZz4ge1xuXG4gICAgcHVibGljIGFic3RyYWN0IHNhdmUoKTogUHJvbWlzZTxhbnk+O1xuXG4gICAgcHVibGljIGFic3RyYWN0IGxvYWQoaWQ6IFQpOiBQcm9taXNlPEFYUFdpZGdldE5vZGU+O1xuXG4gICAgcHVibGljIGFic3RyYWN0IGdldERhdGFTb3VyY2VzTmFtZXMoKTogUHJvbWlzZTxBWFBEZXNpZ25lckRhdGFTb3VyY2VOYW1lW10+O1xuXG4gICAgcHVibGljIGFic3RyYWN0IGdldERhdGFTb3VyY2UobmFtZTogc3RyaW5nKTogUHJvbWlzZTxBWFBXaWRnZXREYXRhU291cmNlIHwgdW5kZWZpbmVkPjtcblxufSJdfQ==