@eclipse-glsp/client 0.10.0-next.e5fcffe.169 → 1.1.0-next.26c3266.182

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 (159) hide show
  1. package/css/decoration.css +5 -1
  2. package/css/glsp-sprotty.css +39 -0
  3. package/css/tool-palette.css +2 -2
  4. package/lib/base/container-modules.d.ts.map +1 -1
  5. package/lib/base/container-modules.js +10 -9
  6. package/lib/base/container-modules.js.map +1 -1
  7. package/lib/base/editor-context-service.d.ts +2 -3
  8. package/lib/base/editor-context-service.d.ts.map +1 -1
  9. package/lib/base/editor-context-service.js +11 -12
  10. package/lib/base/editor-context-service.js.map +1 -1
  11. package/lib/base/model/update-model-command.d.ts +14 -7
  12. package/lib/base/model/update-model-command.d.ts.map +1 -1
  13. package/lib/base/model/update-model-command.js +31 -41
  14. package/lib/base/model/update-model-command.js.map +1 -1
  15. package/lib/base/source-uri-aware.d.ts +2 -17
  16. package/lib/base/source-uri-aware.d.ts.map +1 -1
  17. package/lib/base/source-uri-aware.js +4 -6
  18. package/lib/base/source-uri-aware.js.map +1 -1
  19. package/lib/features/change-bounds/movement-restrictor.d.ts +36 -6
  20. package/lib/features/change-bounds/movement-restrictor.d.ts.map +1 -1
  21. package/lib/features/change-bounds/movement-restrictor.js +54 -39
  22. package/lib/features/change-bounds/movement-restrictor.js.map +1 -1
  23. package/lib/features/change-bounds/snap.d.ts +20 -5
  24. package/lib/features/change-bounds/snap.d.ts.map +1 -1
  25. package/lib/features/change-bounds/snap.js +19 -8
  26. package/lib/features/change-bounds/snap.js.map +1 -1
  27. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.d.ts +5 -7
  28. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.d.ts.map +1 -1
  29. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js +7 -14
  30. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js.map +1 -1
  31. package/lib/features/layout/di.config.d.ts +2 -2
  32. package/lib/features/layout/di.config.d.ts.map +1 -1
  33. package/lib/features/layout/di.config.js +6 -5
  34. package/lib/features/layout/di.config.js.map +1 -1
  35. package/lib/features/layout/{layout-commands.d.ts → layout-elements-action.d.ts} +75 -57
  36. package/lib/features/layout/layout-elements-action.d.ts.map +1 -0
  37. package/lib/features/layout/{layout-commands.js → layout-elements-action.js} +153 -197
  38. package/lib/features/layout/layout-elements-action.js.map +1 -0
  39. package/lib/features/layout/layout-elements-action.spec.d.ts +3 -0
  40. package/lib/features/layout/layout-elements-action.spec.d.ts.map +1 -0
  41. package/lib/features/layout/{layout-commands.spec.js → layout-elements-action.spec.js} +63 -56
  42. package/lib/features/layout/layout-elements-action.spec.js.map +1 -0
  43. package/lib/features/mouse-tool/mouse-tool.d.ts +0 -1
  44. package/lib/features/mouse-tool/mouse-tool.d.ts.map +1 -1
  45. package/lib/features/mouse-tool/mouse-tool.js +9 -5
  46. package/lib/features/mouse-tool/mouse-tool.js.map +1 -1
  47. package/lib/features/select/select-mouse-listener.d.ts +3 -1
  48. package/lib/features/select/select-mouse-listener.d.ts.map +1 -1
  49. package/lib/features/select/select-mouse-listener.js +62 -0
  50. package/lib/features/select/select-mouse-listener.js.map +1 -1
  51. package/lib/features/select/selection-service.d.ts +12 -3
  52. package/lib/features/select/selection-service.d.ts.map +1 -1
  53. package/lib/features/select/selection-service.js +31 -45
  54. package/lib/features/select/selection-service.js.map +1 -1
  55. package/lib/features/select/selection-service.spec.js +1 -1
  56. package/lib/features/select/selection-service.spec.js.map +1 -1
  57. package/lib/features/source-model-watcher/di.config.d.ts +4 -0
  58. package/lib/features/{model-source-watcher → source-model-watcher}/di.config.d.ts.map +1 -1
  59. package/lib/features/{model-source-watcher → source-model-watcher}/di.config.js +4 -4
  60. package/lib/features/{model-source-watcher → source-model-watcher}/di.config.js.map +1 -1
  61. package/lib/features/{model-source-watcher/model-source-changed-action-handler.d.ts → source-model-watcher/source-model-changed-action-handler.d.ts} +9 -9
  62. package/lib/features/{model-source-watcher/model-source-changed-action-handler.d.ts.map → source-model-watcher/source-model-changed-action-handler.d.ts.map} +1 -1
  63. package/lib/features/{model-source-watcher/model-source-changed-action-handler.js → source-model-watcher/source-model-changed-action-handler.js} +19 -19
  64. package/lib/features/{model-source-watcher/model-source-changed-action-handler.js.map → source-model-watcher/source-model-changed-action-handler.js.map} +1 -1
  65. package/lib/features/tool-feedback/change-bounds-tool-feedback.js +1 -1
  66. package/lib/features/tool-feedback/change-bounds-tool-feedback.js.map +1 -1
  67. package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts +3 -2
  68. package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts.map +1 -1
  69. package/lib/features/tool-feedback/edge-edit-tool-feedback.js +13 -6
  70. package/lib/features/tool-feedback/edge-edit-tool-feedback.js.map +1 -1
  71. package/lib/features/tools/di.config.d.ts +9 -2
  72. package/lib/features/tools/di.config.d.ts.map +1 -1
  73. package/lib/features/tools/di.config.js +14 -3
  74. package/lib/features/tools/di.config.js.map +1 -1
  75. package/lib/features/tools/enable-default-tools-on-focus-loss.d.ts +26 -0
  76. package/lib/features/tools/enable-default-tools-on-focus-loss.d.ts.map +1 -0
  77. package/lib/features/tools/enable-default-tools-on-focus-loss.js +29 -0
  78. package/lib/features/tools/enable-default-tools-on-focus-loss.js.map +1 -0
  79. package/lib/features/validation/di.config.d.ts +0 -15
  80. package/lib/features/validation/di.config.d.ts.map +1 -1
  81. package/lib/features/validation/di.config.js +6 -4
  82. package/lib/features/validation/di.config.js.map +1 -1
  83. package/lib/features/validation/issue-marker.d.ts +10 -5
  84. package/lib/features/validation/issue-marker.d.ts.map +1 -1
  85. package/lib/features/validation/issue-marker.js +12 -4
  86. package/lib/features/validation/issue-marker.js.map +1 -1
  87. package/lib/features/validation/marker-navigator.d.ts +11 -17
  88. package/lib/features/validation/marker-navigator.d.ts.map +1 -1
  89. package/lib/features/validation/marker-navigator.js +32 -61
  90. package/lib/features/validation/marker-navigator.js.map +1 -1
  91. package/lib/features/validation/validate.d.ts +8 -19
  92. package/lib/features/validation/validate.d.ts.map +1 -1
  93. package/lib/features/validation/validate.js +28 -53
  94. package/lib/features/validation/validate.js.map +1 -1
  95. package/lib/index.d.ts +6 -6
  96. package/lib/index.d.ts.map +1 -1
  97. package/lib/index.js +16 -15
  98. package/lib/index.js.map +1 -1
  99. package/lib/lib/model.d.ts +1 -1
  100. package/lib/lib/model.d.ts.map +1 -1
  101. package/lib/lib/model.js +3 -3
  102. package/lib/lib/model.js.map +1 -1
  103. package/lib/model-source/glsp-diagram-server.d.ts +1 -1
  104. package/lib/model-source/glsp-diagram-server.d.ts.map +1 -1
  105. package/lib/model-source/glsp-diagram-server.js +1 -1
  106. package/lib/model-source/glsp-diagram-server.js.map +1 -1
  107. package/lib/utils/layout-utils.d.ts +4 -20
  108. package/lib/utils/layout-utils.d.ts.map +1 -1
  109. package/lib/utils/layout-utils.js +1 -1
  110. package/lib/utils/layout-utils.js.map +1 -1
  111. package/lib/views/base-view-module.d.ts.map +1 -1
  112. package/lib/views/base-view-module.js +3 -1
  113. package/lib/views/base-view-module.js.map +1 -1
  114. package/lib/views/glsp-projection-view.d.ts +30 -0
  115. package/lib/views/glsp-projection-view.d.ts.map +1 -0
  116. package/lib/views/glsp-projection-view.js +142 -0
  117. package/lib/views/glsp-projection-view.js.map +1 -0
  118. package/lib/views/index.d.ts +1 -0
  119. package/lib/views/index.d.ts.map +1 -1
  120. package/lib/views/index.js +1 -0
  121. package/lib/views/index.js.map +1 -1
  122. package/package.json +4 -4
  123. package/src/base/container-modules.ts +6 -5
  124. package/src/base/editor-context-service.ts +15 -7
  125. package/src/base/model/update-model-command.ts +48 -34
  126. package/src/base/source-uri-aware.ts +5 -4
  127. package/src/features/change-bounds/movement-restrictor.ts +73 -43
  128. package/src/features/change-bounds/snap.ts +15 -12
  129. package/src/features/context-menu/selection-service-aware-context-menu-mouse-listener.ts +19 -25
  130. package/src/features/layout/di.config.ts +12 -6
  131. package/src/features/layout/{layout-commands.spec.ts → layout-elements-action.spec.ts} +56 -48
  132. package/src/features/layout/{layout-commands.ts → layout-elements-action.ts} +195 -207
  133. package/src/features/mouse-tool/mouse-tool.ts +8 -6
  134. package/src/features/select/select-mouse-listener.ts +81 -1
  135. package/src/features/select/selection-service.spec.ts +1 -1
  136. package/src/features/select/selection-service.ts +37 -50
  137. package/src/features/{model-source-watcher → source-model-watcher}/di.config.ts +5 -5
  138. package/src/features/{model-source-watcher/model-source-changed-action-handler.ts → source-model-watcher/source-model-changed-action-handler.ts} +12 -12
  139. package/src/features/tool-feedback/change-bounds-tool-feedback.ts +1 -1
  140. package/src/features/tool-feedback/edge-edit-tool-feedback.ts +14 -6
  141. package/src/features/tools/di.config.ts +13 -2
  142. package/src/features/tools/enable-default-tools-on-focus-loss.ts +33 -0
  143. package/src/features/validation/di.config.ts +10 -7
  144. package/src/features/validation/issue-marker.ts +22 -12
  145. package/src/features/validation/marker-navigator.ts +29 -66
  146. package/src/features/validation/validate.ts +36 -70
  147. package/src/index.ts +8 -7
  148. package/src/lib/model.ts +1 -1
  149. package/src/model-source/glsp-diagram-server.ts +1 -1
  150. package/src/utils/layout-utils.ts +7 -27
  151. package/src/views/base-view-module.ts +5 -1
  152. package/src/views/glsp-projection-view.tsx +166 -0
  153. package/src/views/index.ts +2 -0
  154. package/lib/features/layout/layout-commands.d.ts.map +0 -1
  155. package/lib/features/layout/layout-commands.js.map +0 -1
  156. package/lib/features/layout/layout-commands.spec.d.ts +0 -3
  157. package/lib/features/layout/layout-commands.spec.d.ts.map +0 -1
  158. package/lib/features/layout/layout-commands.spec.js.map +0 -1
  159. package/lib/features/model-source-watcher/di.config.d.ts +0 -4
@@ -6,34 +6,22 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  return c > 3 && r && Object.defineProperty(target, key, r), r;
7
7
  };
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.areOverlapping = exports.NoOverlapMovmentRestrictor = exports.removeMovementRestrictionFeedback = exports.createMovementRestrictionFeedback = void 0;
9
+ exports.removeMovementRestrictionFeedback = exports.createMovementRestrictionFeedback = exports.NoOverlapMovementRestrictor = void 0;
10
10
  const inversify_1 = require("inversify");
11
11
  const sprotty_1 = require("sprotty");
12
12
  const viewpoint_util_1 = require("../../utils/viewpoint-util");
13
13
  const css_feedback_1 = require("../tool-feedback/css-feedback");
14
14
  const model_1 = require("./model");
15
- function createMovementRestrictionFeedback(element, movementRestrictor) {
16
- const elements = [element];
17
- if (element instanceof sprotty_1.SParentElement) {
18
- element.children.filter(child => child instanceof model_1.SResizeHandle).forEach(e => elements.push(e));
19
- }
20
- return css_feedback_1.ModifyCSSFeedbackAction.create({ elements, add: movementRestrictor.cssClasses });
21
- }
22
- exports.createMovementRestrictionFeedback = createMovementRestrictionFeedback;
23
- function removeMovementRestrictionFeedback(element, movementRestrictor) {
24
- const elements = [element];
25
- if (element instanceof sprotty_1.SParentElement) {
26
- element.children.filter(child => child instanceof model_1.SResizeHandle).forEach(e => elements.push(e));
27
- }
28
- return css_feedback_1.ModifyCSSFeedbackAction.create({ elements, remove: movementRestrictor.cssClasses });
29
- }
30
- exports.removeMovementRestrictionFeedback = removeMovementRestrictionFeedback;
31
- let NoOverlapMovmentRestrictor = class NoOverlapMovmentRestrictor {
15
+ /**
16
+ * A `IMovementRestrictor` that checks for overlapping elements. Move operations
17
+ * are only valid if the element does not collide with another element after moving.
18
+ */
19
+ let NoOverlapMovementRestrictor = class NoOverlapMovementRestrictor {
32
20
  constructor() {
33
21
  this.cssClasses = ['movement-not-allowed'];
34
22
  }
35
- validate(newLocation, element) {
36
- if (!(0, model_1.isBoundsAwareMoveable)(element)) {
23
+ validate(element, newLocation) {
24
+ if (!(0, model_1.isBoundsAwareMoveable)(element) || !newLocation) {
37
25
  return false;
38
26
  }
39
27
  // Create ghost element at the newLocation
@@ -49,29 +37,56 @@ let NoOverlapMovmentRestrictor = class NoOverlapMovmentRestrictor {
49
37
  return !Array.from(element.root.index
50
38
  .all()
51
39
  .filter(e => e.id !== ghostElement.id && e !== ghostElement.root && e instanceof sprotty_1.SNode)
52
- .map(e => e)).some(e => areOverlapping(e, ghostElement));
40
+ .map(e => e)).some(e => this.areOverlapping(e, ghostElement));
41
+ }
42
+ areOverlapping(element1, element2) {
43
+ const b1 = (0, viewpoint_util_1.toAbsoluteBounds)(element1);
44
+ const b2 = (0, viewpoint_util_1.toAbsoluteBounds)(element2);
45
+ const r1TopLeft = b1;
46
+ const r1BottomRight = { x: b1.x + b1.width, y: b1.y + b1.height };
47
+ const r2TopLeft = b2;
48
+ const r2BottomRight = { x: b2.x + b2.width, y: b2.y + b2.height };
49
+ // If one rectangle is on left side of other
50
+ if (r1TopLeft.x > r2BottomRight.x || r2TopLeft.x > r1BottomRight.x) {
51
+ return false;
52
+ }
53
+ // If one rectangle is above other
54
+ if (r1BottomRight.y < r2TopLeft.y || r2BottomRight.y < r1TopLeft.y) {
55
+ return false;
56
+ }
57
+ return true;
53
58
  }
54
59
  };
55
- NoOverlapMovmentRestrictor = __decorate([
60
+ NoOverlapMovementRestrictor = __decorate([
56
61
  (0, inversify_1.injectable)()
57
- ], NoOverlapMovmentRestrictor);
58
- exports.NoOverlapMovmentRestrictor = NoOverlapMovmentRestrictor;
59
- function areOverlapping(element1, element2) {
60
- const b1 = (0, viewpoint_util_1.toAbsoluteBounds)(element1);
61
- const b2 = (0, viewpoint_util_1.toAbsoluteBounds)(element2);
62
- const r1TopLeft = b1;
63
- const r1BottomRight = { x: b1.x + b1.width, y: b1.y + b1.height };
64
- const r2TopLeft = b2;
65
- const r2BottomRight = { x: b2.x + b2.width, y: b2.y + b2.height };
66
- // If one rectangle is on left side of other
67
- if (r1TopLeft.x > r2BottomRight.x || r2TopLeft.x > r1BottomRight.x) {
68
- return false;
62
+ ], NoOverlapMovementRestrictor);
63
+ exports.NoOverlapMovementRestrictor = NoOverlapMovementRestrictor;
64
+ /**
65
+ * Utility function to create an action that applies the given {@link IMovementRestrictor.cssClasses} to the given element.
66
+ * @param element The element on which the css classes should be applied.
67
+ * @param movementRestrictor The movement restrictor whose cssClasses should be applied.
68
+ * @returns The corresponding {@link ModifyCSSFeedbackAction}
69
+ */
70
+ function createMovementRestrictionFeedback(element, movementRestrictor) {
71
+ const elements = [element];
72
+ if (element instanceof sprotty_1.SParentElement) {
73
+ element.children.filter(child => child instanceof model_1.SResizeHandle).forEach(e => elements.push(e));
69
74
  }
70
- // If one rectangle is above other
71
- if (r1BottomRight.y < r2TopLeft.y || r2BottomRight.y < r1TopLeft.y) {
72
- return false;
75
+ return css_feedback_1.ModifyCSSFeedbackAction.create({ elements, add: movementRestrictor.cssClasses });
76
+ }
77
+ exports.createMovementRestrictionFeedback = createMovementRestrictionFeedback;
78
+ /**
79
+ * Utility function to create an action that removes the given {@link IMovementRestrictor.cssClasses} from the given element.
80
+ * @param element The element from which the css classes should be removed.
81
+ * @param movementRestrictor The movement restrictor whose cssClasses should be removed.
82
+ * @returns The corresponding {@link ModifyCSSFeedbackAction}
83
+ */
84
+ function removeMovementRestrictionFeedback(element, movementRestrictor) {
85
+ const elements = [element];
86
+ if (element instanceof sprotty_1.SParentElement) {
87
+ element.children.filter(child => child instanceof model_1.SResizeHandle).forEach(e => elements.push(e));
73
88
  }
74
- return true;
89
+ return css_feedback_1.ModifyCSSFeedbackAction.create({ elements, remove: movementRestrictor.cssClasses });
75
90
  }
76
- exports.areOverlapping = areOverlapping;
91
+ exports.removeMovementRestrictionFeedback = removeMovementRestrictionFeedback;
77
92
  //# sourceMappingURL=movement-restrictor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"movement-restrictor.js","sourceRoot":"","sources":["../../../src/features/change-bounds/movement-restrictor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"movement-restrictor.js","sourceRoot":"","sources":["../../../src/features/change-bounds/movement-restrictor.ts"],"names":[],"mappings":"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"}
@@ -13,12 +13,27 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- import { Point } from '@eclipse-glsp/protocol';
16
+ import { Point, Writable } from '@eclipse-glsp/protocol';
17
17
  import { ISnapper, SModelElement } from 'sprotty';
18
- import { WriteablePoint } from '../../utils/layout-utils';
18
+ /**
19
+ * A {@link ISnapper} implementation that snaps all elements onto a fixed gride size.
20
+ * The default grid size is 10x10 pixel.
21
+ * To configure a custom grid size bind the `TYPES.ISnapper` service identifier
22
+ * to constant value, e.g:
23
+ *
24
+ * ```ts
25
+ * bind(TYPES.ISnapper).toConstantValue(new GridSnapper({x:25 ,y:25 }));
26
+ * ```
27
+ */
19
28
  export declare class GridSnapper implements ISnapper {
20
- get gridX(): number;
21
- get gridY(): number;
29
+ grid: {
30
+ x: number;
31
+ y: number;
32
+ };
33
+ constructor(grid?: {
34
+ x: number;
35
+ y: number;
36
+ });
22
37
  snap(position: Point, element: SModelElement): Point;
23
38
  }
24
39
  /**
@@ -32,7 +47,7 @@ export declare class GridSnapper implements ISnapper {
32
47
  export declare class PointPositionUpdater {
33
48
  protected snapper?: ISnapper | undefined;
34
49
  protected lastDragPosition?: Point;
35
- protected positionDelta: WriteablePoint;
50
+ protected positionDelta: Writable<Point>;
36
51
  constructor(snapper?: ISnapper | undefined);
37
52
  /**
38
53
  * Init the position with the {@link Point} of your mouse cursor.
@@ -1 +1 @@
1
- {"version":3,"file":"snap.d.ts","sourceRoot":"","sources":["../../../src/features/change-bounds/snap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAClF,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAE/C,OAAO,EAAuB,QAAQ,EAAc,aAAa,EAAE,MAAM,SAAS,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,qBACa,WAAY,YAAW,QAAQ;IACxC,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,GAAG,KAAK;CAMvD;AAED;;;;;;;GAOG;AACH,qBAAa,oBAAoB;IAIjB,SAAS,CAAC,OAAO,CAAC;IAH9B,SAAS,CAAC,gBAAgB,CAAC,EAAE,KAAK,CAAC;IACnC,SAAS,CAAC,aAAa,EAAE,cAAc,CAAkB;gBAEnC,OAAO,CAAC,sBAAU;IAExC;;;;OAIG;IACI,sBAAsB,CAAC,aAAa,EAAE,KAAK,GAAG,IAAI;IAIzD;;;OAGG;IACI,2BAA2B,IAAI,OAAO;IAI7C;;;OAGG;IACI,aAAa,IAAI,IAAI;IAK5B;;;;;;;OAOG;IACI,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,GAAG,KAAK,GAAG,SAAS;IA8B7G,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,GAAG,KAAK;CAGlF"}
1
+ {"version":3,"file":"snap.d.ts","sourceRoot":"","sources":["../../../src/features/change-bounds/snap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAClF,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAuB,QAAQ,EAAc,aAAa,EAAE,MAAM,SAAS,CAAC;AAEnF;;;;;;;;;GASG;AACH,qBACa,WAAY,YAAW,QAAQ;IACrB,IAAI,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE;gBAA9B,IAAI,GAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAqB;IAEpE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,GAAG,KAAK;CAMvD;AAED;;;;;;;GAOG;AACH,qBAAa,oBAAoB;IAIjB,SAAS,CAAC,OAAO,CAAC;IAH9B,SAAS,CAAC,gBAAgB,CAAC,EAAE,KAAK,CAAC;IACnC,SAAS,CAAC,aAAa,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAkB;gBAEpC,OAAO,CAAC,sBAAU;IAExC;;;;OAIG;IACI,sBAAsB,CAAC,aAAa,EAAE,KAAK,GAAG,IAAI;IAIzD;;;OAGG;IACI,2BAA2B,IAAI,OAAO;IAI7C;;;OAGG;IACI,aAAa,IAAI,IAAI;IAK5B;;;;;;;OAOG;IACI,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,GAAG,KAAK,GAAG,SAAS;IA8B7G,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,GAAG,KAAK;CAGlF"}
@@ -5,26 +5,37 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
6
  return c > 3 && r && Object.defineProperty(target, key, r), r;
7
7
  };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
8
11
  Object.defineProperty(exports, "__esModule", { value: true });
9
12
  exports.PointPositionUpdater = exports.GridSnapper = void 0;
10
13
  const inversify_1 = require("inversify");
11
14
  const sprotty_1 = require("sprotty");
15
+ /**
16
+ * A {@link ISnapper} implementation that snaps all elements onto a fixed gride size.
17
+ * The default grid size is 10x10 pixel.
18
+ * To configure a custom grid size bind the `TYPES.ISnapper` service identifier
19
+ * to constant value, e.g:
20
+ *
21
+ * ```ts
22
+ * bind(TYPES.ISnapper).toConstantValue(new GridSnapper({x:25 ,y:25 }));
23
+ * ```
24
+ */
12
25
  let GridSnapper = class GridSnapper {
13
- get gridX() {
14
- return 10;
15
- }
16
- get gridY() {
17
- return 10;
26
+ constructor(grid = { x: 10, y: 10 }) {
27
+ this.grid = grid;
18
28
  }
19
29
  snap(position, element) {
20
30
  return {
21
- x: Math.round(position.x / this.gridX) * this.gridX,
22
- y: Math.round(position.y / this.gridY) * this.gridY
31
+ x: Math.round(position.x / this.grid.x) * this.grid.x,
32
+ y: Math.round(position.y / this.grid.y) * this.grid.y
23
33
  };
24
34
  }
25
35
  };
26
36
  GridSnapper = __decorate([
27
- (0, inversify_1.injectable)()
37
+ (0, inversify_1.injectable)(),
38
+ __metadata("design:paramtypes", [Object])
28
39
  ], GridSnapper);
29
40
  exports.GridSnapper = GridSnapper;
30
41
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"snap.js","sourceRoot":"","sources":["../../../src/features/change-bounds/snap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"snap.js","sourceRoot":"","sources":["../../../src/features/change-bounds/snap.ts"],"names":[],"mappings":"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"}
@@ -17,25 +17,23 @@ import { Action } from '@eclipse-glsp/protocol';
17
17
  import { ContextMenuProviderRegistry, IContextMenuServiceProvider, MouseListener, SModelElement } from 'sprotty';
18
18
  import { SelectionService } from '../select/selection-service';
19
19
  export declare class SelectionServiceAwareContextMenuMouseListener extends MouseListener {
20
- protected readonly contextMenuService: IContextMenuServiceProvider;
21
- protected readonly menuProvider: ContextMenuProviderRegistry;
20
+ protected readonly contextMenuService?: IContextMenuServiceProvider;
21
+ protected readonly menuProvider?: ContextMenuProviderRegistry;
22
22
  protected selectionService: SelectionService;
23
23
  /**
24
- * Opens the context menu on right-click.
24
+ * Opens the context menu.
25
25
  */
26
- mouseDown(target: SModelElement, event: MouseEvent): (Action | Promise<Action>)[];
26
+ contextMenu(target: SModelElement, event: MouseEvent): (Action | Promise<Action>)[];
27
27
  /**
28
28
  * Opens the context menu.
29
29
  *
30
- * - query the element on the click-target
31
- * - select the element
32
30
  * - query the context menu service and the context menu elements
33
31
  * - show the context menu
34
32
  * - send a focus state change to indicate that the diagram becomes inactive, once the context menu is shown
35
33
  *
36
34
  * When the context menu is closed, we focus the diagram element again.
37
35
  */
38
- protected openContextMenu(event: MouseEvent, target: SModelElement): Promise<Action>[];
36
+ protected openContextMenu(target: SModelElement, event: MouseEvent): Promise<Action>[];
39
37
  protected focusEventTarget(event: MouseEvent): void;
40
38
  }
41
39
  //# sourceMappingURL=selection-service-aware-context-menu-mouse-listener.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"selection-service-aware-context-menu-mouse-listener.d.ts","sourceRoot":"","sources":["../../../src/features/context-menu/selection-service-aware-context-menu-mouse-listener.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAClF,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD,OAAO,EACH,2BAA2B,EAE3B,2BAA2B,EAE3B,aAAa,EACb,aAAa,EAChB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,qBACa,6CAA8C,SAAQ,aAAa;IACrB,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,2BAA2B,CAAC;IAClE,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,2BAA2B,CAAC;IACrF,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAE7E;;OAEG;IACM,SAAS,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE;IAO1F;;;;;;;;;;OAUG;IACH,SAAS,CAAC,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE;IAetF,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;CAOtD"}
1
+ {"version":3,"file":"selection-service-aware-context-menu-mouse-listener.d.ts","sourceRoot":"","sources":["../../../src/features/context-menu/selection-service-aware-context-menu-mouse-listener.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAClF,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD,OAAO,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAGjH,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,qBACa,6CAA8C,SAAQ,aAAa;IAG5E,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,2BAA2B,CAAC;IAIpE,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,2BAA2B,CAAC;IAG9D,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAE7C;;OAEG;IACM,WAAW,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE;IAI5F;;;;;;;;OAQG;IACH,SAAS,CAAC,eAAe,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE;IActF,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;CAOtD"}
@@ -17,32 +17,25 @@ const types_1 = require("../../base/types");
17
17
  const selection_service_1 = require("../select/selection-service");
18
18
  let SelectionServiceAwareContextMenuMouseListener = class SelectionServiceAwareContextMenuMouseListener extends sprotty_1.MouseListener {
19
19
  /**
20
- * Opens the context menu on right-click.
20
+ * Opens the context menu.
21
21
  */
22
- mouseDown(target, event) {
23
- if (event.button === 2 && this.contextMenuService && this.menuProvider) {
24
- return this.openContextMenu(event, target);
25
- }
26
- return [];
22
+ contextMenu(target, event) {
23
+ return this.openContextMenu(target, event);
27
24
  }
28
25
  /**
29
26
  * Opens the context menu.
30
27
  *
31
- * - query the element on the click-target
32
- * - select the element
33
28
  * - query the context menu service and the context menu elements
34
29
  * - show the context menu
35
30
  * - send a focus state change to indicate that the diagram becomes inactive, once the context menu is shown
36
31
  *
37
32
  * When the context menu is closed, we focus the diagram element again.
38
33
  */
39
- openContextMenu(event, target) {
40
- const mousePosition = { x: event.x, y: event.y };
41
- const selectableTarget = (0, sprotty_1.findParentByFeature)(target, sprotty_1.isSelectable);
42
- if (selectableTarget) {
43
- selectableTarget.selected = true;
44
- this.selectionService.updateSelection(target.root, [selectableTarget.id], []);
34
+ openContextMenu(target, event) {
35
+ if (!this.contextMenuService || !this.menuProvider) {
36
+ return [];
45
37
  }
38
+ const mousePosition = { x: event.x, y: event.y };
46
39
  const result = Promise.all([this.contextMenuService(), this.menuProvider.getItems(target.root, mousePosition)])
47
40
  .then(([menuService, menuItems]) => menuService.show(menuItems, mousePosition, () => this.focusEventTarget(event)))
48
41
  .then(() => focus_change_action_1.FocusStateChangedAction.create(false));
@@ -1 +1 @@
1
- {"version":3,"file":"selection-service-aware-context-menu-mouse-listener.js","sourceRoot":"","sources":["../../../src/features/context-menu/selection-service-aware-context-menu-mouse-listener.ts"],"names":[],"mappings":";;;;;;;;;;;;AAgBA,yCAAyD;AACzD,qCAOiB;AACjB,gFAAiF;AACjF,4CAAyC;AACzC,mEAA+D;AAG/D,IAAa,6CAA6C,GAA1D,MAAa,6CAA8C,SAAQ,uBAAa;IAK5E;;OAEG;IACM,SAAS,CAAC,MAAqB,EAAE,KAAiB;QACvD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,YAAY,EAAE;YACpE,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;SAC9C;QACD,OAAO,EAAE,CAAC;IACd,CAAC;IAED;;;;;;;;;;OAUG;IACO,eAAe,CAAC,KAAiB,EAAE,MAAqB;QAC9D,MAAM,aAAa,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;QACjD,MAAM,gBAAgB,GAAG,IAAA,6BAAmB,EAAC,MAAM,EAAE,sBAAY,CAAC,CAAC;QACnE,IAAI,gBAAgB,EAAE;YAClB,gBAAgB,CAAC,QAAQ,GAAG,IAAI,CAAC;YACjC,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;SACjF;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC;aAC1G,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;aAClH,IAAI,CAAC,GAAW,EAAE,CAAC,6CAAuB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAE/D,OAAO,CAAC,MAAM,CAAC,CAAC;IACpB,CAAC;IAES,gBAAgB,CAAC,KAAiB;QACxC,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,YAAY,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QACpF,MAAM,gBAAgB,GAAG,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACvD,IAAI,gBAAgB,EAAE;YAClB,gBAAgB,CAAC,KAAK,EAAE,CAAC;SAC5B;IACL,CAAC;CACJ,CAAA;AA/C0D;IAAtD,IAAA,kBAAM,EAAC,aAAK,CAAC,2BAA2B,CAAC;IAAE,IAAA,oBAAQ,GAAE;;yFAAoE;AAClE;IAAvD,IAAA,kBAAM,EAAC,aAAK,CAAC,4BAA4B,CAAC;IAAE,IAAA,oBAAQ,GAAE;8BAAkC,qCAA2B;mFAAC;AACrF;IAA/B,IAAA,kBAAM,EAAC,aAAK,CAAC,gBAAgB,CAAC;8BAA6B,oCAAgB;uFAAC;AAHpE,6CAA6C;IADzD,IAAA,sBAAU,GAAE;GACA,6CAA6C,CAgDzD;AAhDY,sGAA6C"}
1
+ {"version":3,"file":"selection-service-aware-context-menu-mouse-listener.js","sourceRoot":"","sources":["../../../src/features/context-menu/selection-service-aware-context-menu-mouse-listener.ts"],"names":[],"mappings":";;;;;;;;;;;;AAgBA,yCAAyD;AACzD,qCAAiH;AACjH,gFAAiF;AACjF,4CAAyC;AACzC,mEAA+D;AAG/D,IAAa,6CAA6C,GAA1D,MAAa,6CAA8C,SAAQ,uBAAa;IAY5E;;OAEG;IACM,WAAW,CAAC,MAAqB,EAAE,KAAiB;QACzD,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED;;;;;;;;OAQG;IACO,eAAe,CAAC,MAAqB,EAAE,KAAiB;QAC9D,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YAChD,OAAO,EAAE,CAAC;SACb;QAED,MAAM,aAAa,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;QAEjD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC;aAC1G,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;aAClH,IAAI,CAAC,GAAW,EAAE,CAAC,6CAAuB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAE/D,OAAO,CAAC,MAAM,CAAC,CAAC;IACpB,CAAC;IAES,gBAAgB,CAAC,KAAiB;QACxC,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,YAAY,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QACpF,MAAM,gBAAgB,GAAG,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACvD,IAAI,gBAAgB,EAAE;YAClB,gBAAgB,CAAC,KAAK,EAAE,CAAC;SAC5B;IACL,CAAC;CACJ,CAAA;AA9CG;IAFC,IAAA,kBAAM,EAAC,aAAK,CAAC,2BAA2B,CAAC;IACzC,IAAA,oBAAQ,GAAE;;yFACyD;AAIpE;IAFC,IAAA,kBAAM,EAAC,aAAK,CAAC,4BAA4B,CAAC;IAC1C,IAAA,oBAAQ,GAAE;8BACuB,qCAA2B;mFAAC;AAG9D;IADC,IAAA,kBAAM,EAAC,aAAK,CAAC,gBAAgB,CAAC;8BACH,oCAAgB;uFAAC;AAVpC,6CAA6C;IADzD,IAAA,sBAAU,GAAE;GACA,6CAA6C,CAiDzD;AAjDY,sGAA6C"}
@@ -14,6 +14,6 @@
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
16
  import { ContainerModule } from 'inversify';
17
- declare const layoutCommandsModule: ContainerModule;
18
- export default layoutCommandsModule;
17
+ declare const layoutModule: ContainerModule;
18
+ export default layoutModule;
19
19
  //# sourceMappingURL=di.config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"di.config.d.ts","sourceRoot":"","sources":["../../../src/features/layout/di.config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAO5C,QAAA,MAAM,oBAAoB,iBAOxB,CAAC;AAEH,eAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"di.config.d.ts","sourceRoot":"","sources":["../../../src/features/layout/di.config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAY5C,QAAA,MAAM,YAAY,iBAQhB,CAAC;AAEH,eAAe,YAAY,CAAC"}
@@ -19,14 +19,15 @@ const inversify_1 = require("inversify");
19
19
  const sprotty_1 = require("sprotty");
20
20
  const freeform_layout_1 = require("./freeform-layout");
21
21
  const hbox_layout_1 = require("./hbox-layout");
22
- const layout_commands_1 = require("./layout-commands");
22
+ const layout_elements_action_1 = require("./layout-elements-action");
23
23
  const vbox_layout_1 = require("./vbox-layout");
24
- const layoutCommandsModule = new inversify_1.ContainerModule((bind, _unbind, isBound, rebind) => {
25
- (0, sprotty_1.configureCommand)({ bind, isBound }, layout_commands_1.ResizeElementsCommand);
26
- (0, sprotty_1.configureCommand)({ bind, isBound }, layout_commands_1.AlignElementsCommand);
24
+ const layoutModule = new inversify_1.ContainerModule((bind, _unbind, isBound, rebind) => {
25
+ const context = { bind, isBound };
26
+ (0, sprotty_1.configureActionHandler)(context, layout_elements_action_1.ResizeElementsAction.KIND, layout_elements_action_1.ResizeElementsActionHandler);
27
+ (0, sprotty_1.configureActionHandler)(context, layout_elements_action_1.AlignElementsAction.KIND, layout_elements_action_1.AlignElementsActionHandler);
27
28
  rebind(sprotty_1.VBoxLayouter).to(vbox_layout_1.VBoxLayouterExt);
28
29
  rebind(sprotty_1.HBoxLayouter).to(hbox_layout_1.HBoxLayouterExt);
29
30
  (0, sprotty_1.configureLayout)({ bind, isBound }, freeform_layout_1.FreeFormLayouter.KIND, freeform_layout_1.FreeFormLayouter);
30
31
  });
31
- exports.default = layoutCommandsModule;
32
+ exports.default = layoutModule;
32
33
  //# sourceMappingURL=di.config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"di.config.js","sourceRoot":"","sources":["../../../src/features/layout/di.config.ts"],"names":[],"mappings":";;AAAA;;;;;;;;;;;;;;kFAckF;AAClF,yCAA4C;AAC5C,qCAAwF;AACxF,uDAAqD;AACrD,+CAAgD;AAChD,uDAAgF;AAChF,+CAAgD;AAEhD,MAAM,oBAAoB,GAAG,IAAI,2BAAe,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;IAChF,IAAA,0BAAgB,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,uCAAqB,CAAC,CAAC;IAC3D,IAAA,0BAAgB,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,sCAAoB,CAAC,CAAC;IAE1D,MAAM,CAAC,sBAAY,CAAC,CAAC,EAAE,CAAC,6BAAe,CAAC,CAAC;IACzC,MAAM,CAAC,sBAAY,CAAC,CAAC,EAAE,CAAC,6BAAe,CAAC,CAAC;IACzC,IAAA,yBAAe,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,kCAAgB,CAAC,IAAI,EAAE,kCAAgB,CAAC,CAAC;AAChF,CAAC,CAAC,CAAC;AAEH,kBAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"di.config.js","sourceRoot":"","sources":["../../../src/features/layout/di.config.ts"],"names":[],"mappings":";;AAAA;;;;;;;;;;;;;;kFAckF;AAClF,yCAA4C;AAC5C,qCAA8F;AAC9F,uDAAqD;AACrD,+CAAgD;AAChD,qEAKkC;AAClC,+CAAgD;AAEhD,MAAM,YAAY,GAAG,IAAI,2BAAe,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;IACxE,MAAM,OAAO,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAClC,IAAA,gCAAsB,EAAC,OAAO,EAAE,6CAAoB,CAAC,IAAI,EAAE,oDAA2B,CAAC,CAAC;IACxF,IAAA,gCAAsB,EAAC,OAAO,EAAE,4CAAmB,CAAC,IAAI,EAAE,mDAA0B,CAAC,CAAC;IAEtF,MAAM,CAAC,sBAAY,CAAC,CAAC,EAAE,CAAC,6BAAe,CAAC,CAAC;IACzC,MAAM,CAAC,sBAAY,CAAC,CAAC,EAAE,CAAC,6BAAe,CAAC,CAAC;IACzC,IAAA,yBAAe,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,kCAAgB,CAAC,IAAI,EAAE,kCAAgB,CAAC,CAAC;AAChF,CAAC,CAAC,CAAC;AAEH,kBAAe,YAAY,CAAC"}
@@ -13,9 +13,8 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- import { Action, ElementAndBounds } from '@eclipse-glsp/protocol';
17
- import { Command, CommandExecutionContext, CommandReturn, ElementMove, IActionDispatcher, SModelElement } from 'sprotty';
18
- import { WriteableElementAndBounds, WriteableElementMove } from '../../utils/layout-utils';
16
+ import { Action, ElementAndBounds, Writable } from '@eclipse-glsp/protocol';
17
+ import { ElementMove, IActionDispatcher, IActionHandler, ICommand, SModelElement } from 'sprotty';
19
18
  import { BoundsAwareModelElement } from '../../utils/smodel-util';
20
19
  import { IMovementRestrictor } from '../change-bounds/movement-restrictor';
21
20
  import { SelectionService } from '../select/selection-service';
@@ -27,7 +26,13 @@ export declare enum ResizeDimension {
27
26
  Height = 1,
28
27
  Width_And_Height = 2
29
28
  }
30
- export declare namespace Reduce {
29
+ /**
30
+ * A function that computes a single number from a set of given numbers
31
+ * i.e. it reduces the given numbers to one single number.
32
+ * Mainly used by the {@link ResizeElementsCommand} to reduce the given dimensions to a target dimension value.
33
+ */
34
+ export declare type ReduceFunction = (...values: number[]) => number;
35
+ export declare namespace ReduceFunction {
31
36
  /**
32
37
  * Returns the minimal value of the given numbers.
33
38
  * @param values Numbers to be evaluated.
@@ -58,12 +63,14 @@ export declare namespace Reduce {
58
63
  */
59
64
  function last(...values: number[]): number;
60
65
  /**
61
- * Returns the reduce function that corresponds to the given {@link ReduceFunctionKind}.
66
+ * Returns the reduce function that corresponds to the given {@link ReduceFunctionType}.
62
67
  * @param type The reduce function kind.
63
68
  * @returns The corresponding reduce function.
64
69
  */
70
+ function get(type: ReduceFunctionType): ReduceFunction;
65
71
  }
66
- declare type ReduceFn = (...values: number[]) => number;
72
+ /** Union type of all {@link ReduceFunction} keys. */
73
+ export declare type ReduceFunctionType = Exclude<keyof typeof ReduceFunction, 'get'>;
67
74
  export interface ResizeElementsAction extends Action {
68
75
  kind: typeof ResizeElementsAction.KIND;
69
76
  /**
@@ -75,9 +82,9 @@ export interface ResizeElementsAction extends Action {
75
82
  */
76
83
  dimension: ResizeDimension;
77
84
  /**
78
- * Function to reduce the dimension to a target dimension value, see Reduce.* for potential functions.
85
+ * Type of the {@link ReduceFunction} that should be used to reduce the dimension to a target dimension value
79
86
  */
80
- reductionFunction: ReduceFn;
87
+ reduceFunction: ReduceFunctionType;
81
88
  }
82
89
  export declare namespace ResizeElementsAction {
83
90
  const KIND = "resizeElementAction";
@@ -85,9 +92,30 @@ export declare namespace ResizeElementsAction {
85
92
  function create(options: {
86
93
  elementIds?: string[];
87
94
  dimension?: ResizeDimension;
88
- reductionFunction: ReduceFn;
95
+ reduceFunction: ReduceFunctionType;
89
96
  }): ResizeElementsAction;
90
97
  }
98
+ export declare abstract class LayoutElementsActionHandler implements IActionHandler {
99
+ protected actionDispatcher: IActionDispatcher;
100
+ protected selectionService: SelectionService;
101
+ protected movementRestrictor?: IMovementRestrictor;
102
+ abstract handle(action: Action): void | Action | ICommand;
103
+ getSelectedElements(selection: {
104
+ elementIds: string[];
105
+ }): BoundsAwareModelElement[];
106
+ protected abstract isActionElement(element: SModelElement): element is BoundsAwareModelElement;
107
+ dispatchAction(action: Action): void;
108
+ dispatchActions(actions: Action[]): void;
109
+ }
110
+ export declare class ResizeElementsActionHandler extends LayoutElementsActionHandler {
111
+ handle(action: ResizeElementsAction): void;
112
+ resizeWidth(elements: BoundsAwareModelElement[], reduceFn: ReduceFunction): void;
113
+ resizeHeight(elements: BoundsAwareModelElement[], reduceFn: ReduceFunction): void;
114
+ resizeWidthAndHeight(elements: BoundsAwareModelElement[], reduceFn: ReduceFunction): void;
115
+ dispatchResizeActions(elements: BoundsAwareModelElement[], change: (element: BoundsAwareModelElement, bounds: Writable<ElementAndBounds>) => void): void;
116
+ createElementAndBounds(element: BoundsAwareModelElement, change: (_element: BoundsAwareModelElement, _bounds: Writable<ElementAndBounds>) => void): Writable<ElementAndBounds> | undefined;
117
+ protected isActionElement(element: SModelElement): element is BoundsAwareModelElement;
118
+ }
91
119
  export declare enum Alignment {
92
120
  Left = 0,
93
121
  Center = 1,
@@ -96,12 +124,39 @@ export declare enum Alignment {
96
124
  Middle = 4,
97
125
  Bottom = 5
98
126
  }
99
- export declare namespace Select {
127
+ /**
128
+ * A function that retrieves a specific (sub)-selection of elements from a given set of elements.
129
+ * Mainly used by the {@link AlignElementsActionHandler}.
130
+ */
131
+ export declare type SelectFunction = (elements: BoundsAwareModelElement[]) => BoundsAwareModelElement[];
132
+ export declare namespace SelectFunction {
133
+ /**
134
+ * Select all elements from the given set of elements.
135
+ * @param elements The set of elements.
136
+ * @returns All elements.
137
+ */
100
138
  function all(elements: BoundsAwareModelElement[]): BoundsAwareModelElement[];
139
+ /**
140
+ * Select the first element from a given set of elements.
141
+ * @param elements The elements.
142
+ * @returns An array containing the first element of the given elements.
143
+ */
101
144
  function first(elements: BoundsAwareModelElement[]): BoundsAwareModelElement[];
145
+ /**
146
+ * Select the last element from a given set of elements.
147
+ * @param elements The elements.
148
+ * @returns An array containing the last element of the given elements.
149
+ */
102
150
  function last(elements: BoundsAwareModelElement[]): BoundsAwareModelElement[];
151
+ /**
152
+ * Returns the select function that corresponds to the given {@link SelectFunctionType}.
153
+ * @param type The select function type.
154
+ * @returns The corresponding select function.
155
+ */
156
+ function get(kind: SelectFunctionType): SelectFunction;
103
157
  }
104
- declare type SelectFn = (elements: BoundsAwareModelElement[]) => BoundsAwareModelElement[];
158
+ /** Union type of all {@link SelectFunction} keys. */
159
+ export declare type SelectFunctionType = Exclude<keyof typeof SelectFunction, 'get'>;
105
160
  export interface AlignElementsAction extends Action {
106
161
  kind: typeof AlignElementsAction.KIND;
107
162
  /**
@@ -113,10 +168,10 @@ export interface AlignElementsAction extends Action {
113
168
  */
114
169
  alignment: Alignment;
115
170
  /**
116
- * Function to selected elements that are considered during alignment calculation, see Select.* for potential functions.
171
+ * Function to selected elements that are considered during alignment calculation.
117
172
  * The default value is {@link Select.all}.
118
173
  */
119
- selectionFunction: SelectFn;
174
+ selectFunction: SelectFunctionType;
120
175
  }
121
176
  export declare namespace AlignElementsAction {
122
177
  const KIND = "alignElements";
@@ -124,57 +179,20 @@ export declare namespace AlignElementsAction {
124
179
  function create(options?: {
125
180
  elementIds?: string[];
126
181
  alignment?: Alignment;
127
- selectionFunction?: SelectFn;
182
+ selectionFunction?: SelectFunctionType;
128
183
  }): AlignElementsAction;
129
184
  }
130
- declare abstract class LayoutElementsCommand extends Command {
131
- protected action: ResizeElementsAction | AlignElementsAction;
132
- protected actionDispatcher: IActionDispatcher;
133
- protected selectionService: SelectionService;
134
- readonly movementRestrictor?: IMovementRestrictor | undefined;
135
- constructor(action: ResizeElementsAction | AlignElementsAction, actionDispatcher: IActionDispatcher, selectionService: SelectionService, movementRestrictor?: IMovementRestrictor | undefined);
136
- getActionElements(context: CommandExecutionContext): BoundsAwareModelElement[];
137
- protected abstract isActionElement(element: SModelElement): element is BoundsAwareModelElement;
138
- dispatchAction(action: Action): void;
139
- dispatchActions(actions: Action[]): void;
140
- }
141
- export declare class ResizeElementsCommand extends LayoutElementsCommand {
142
- protected action: ResizeElementsAction;
143
- protected actionDispatcher: IActionDispatcher;
144
- protected selectionService: SelectionService;
145
- readonly movementRestrictor?: IMovementRestrictor | undefined;
146
- static readonly KIND = "resizeElementAction";
147
- constructor(action: ResizeElementsAction, actionDispatcher: IActionDispatcher, selectionService: SelectionService, movementRestrictor?: IMovementRestrictor | undefined);
148
- protected isActionElement(element: SModelElement): element is BoundsAwareModelElement;
149
- execute(context: CommandExecutionContext): CommandReturn;
150
- resizeWidth(elements: BoundsAwareModelElement[]): void;
151
- resizeHeight(elements: BoundsAwareModelElement[]): void;
152
- resizeWidthAndHeight(elements: BoundsAwareModelElement[]): void;
153
- dispatchResizeActions(elements: BoundsAwareModelElement[], change: (element: BoundsAwareModelElement, bounds: WriteableElementAndBounds) => void): void;
154
- createElementAndBounds(element: BoundsAwareModelElement, change: (_element: BoundsAwareModelElement, _bounds: WriteableElementAndBounds) => void): WriteableElementAndBounds | undefined;
155
- undo(context: CommandExecutionContext): CommandReturn;
156
- redo(context: CommandExecutionContext): CommandReturn;
157
- }
158
- export declare class AlignElementsCommand extends LayoutElementsCommand {
159
- protected action: AlignElementsAction;
160
- protected actionDispatcher: IActionDispatcher;
161
- protected selectionService: SelectionService;
162
- readonly movementRestrictor?: IMovementRestrictor | undefined;
163
- static readonly KIND = "alignElements";
164
- constructor(action: AlignElementsAction, actionDispatcher: IActionDispatcher, selectionService: SelectionService, movementRestrictor?: IMovementRestrictor | undefined);
165
- protected isActionElement(element: SModelElement): element is BoundsAwareModelElement;
166
- execute(context: CommandExecutionContext): CommandReturn;
185
+ export declare class AlignElementsActionHandler extends LayoutElementsActionHandler {
186
+ handle(action: AlignElementsAction): void;
167
187
  alignLeft(elements: BoundsAwareModelElement[]): void;
168
188
  alignCenter(elements: BoundsAwareModelElement[]): void;
169
189
  alignRight(elements: BoundsAwareModelElement[]): void;
170
190
  alignTop(elements: BoundsAwareModelElement[]): void;
171
191
  alignMiddle(elements: BoundsAwareModelElement[]): void;
172
192
  alignBottom(elements: BoundsAwareModelElement[]): void;
173
- dispatchAlignActions(elements: BoundsAwareModelElement[], change: (element: BoundsAwareModelElement, move: WriteableElementMove) => void): void;
174
- createElementMove(element: BoundsAwareModelElement, change: (_element: BoundsAwareModelElement, _move: WriteableElementMove) => void): WriteableElementMove | undefined;
193
+ dispatchAlignActions(elements: BoundsAwareModelElement[], change: (element: BoundsAwareModelElement, move: Writable<ElementMove>) => void): void;
194
+ createElementMove(element: BoundsAwareModelElement, change: (_element: BoundsAwareModelElement, _move: Writable<ElementMove>) => void): Writable<ElementMove> | undefined;
175
195
  createElementAndBounds(element: BoundsAwareModelElement, move: ElementMove): ElementAndBounds;
176
- undo(context: CommandExecutionContext): CommandReturn;
177
- redo(context: CommandExecutionContext): CommandReturn;
196
+ protected isActionElement(element: SModelElement): element is BoundsAwareModelElement;
178
197
  }
179
- export {};
180
- //# sourceMappingURL=layout-commands.d.ts.map
198
+ //# sourceMappingURL=layout-elements-action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout-elements-action.d.ts","sourceRoot":"","sources":["../../../src/features/layout/layout-elements-action.ts"],"names":[],"mappings":"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"}