@eclipse-glsp/client 2.2.0-next.332 → 2.2.0-next.334

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 (223) hide show
  1. package/css/change-bounds.css +36 -2
  2. package/css/glsp-sprotty.css +18 -2
  3. package/css/helper-lines.css +3 -3
  4. package/lib/base/default.module.d.ts.map +1 -1
  5. package/lib/base/default.module.js +3 -0
  6. package/lib/base/default.module.js.map +1 -1
  7. package/lib/base/feedback/css-feedback.d.ts +7 -2
  8. package/lib/base/feedback/css-feedback.d.ts.map +1 -1
  9. package/lib/base/feedback/css-feedback.js +10 -2
  10. package/lib/base/feedback/css-feedback.js.map +1 -1
  11. package/lib/base/feedback/feeback-emitter.d.ts +2 -2
  12. package/lib/base/feedback/feeback-emitter.d.ts.map +1 -1
  13. package/lib/base/feedback/feeback-emitter.js +5 -2
  14. package/lib/base/feedback/feeback-emitter.js.map +1 -1
  15. package/lib/base/index.d.ts +1 -0
  16. package/lib/base/index.d.ts.map +1 -1
  17. package/lib/base/index.js +1 -0
  18. package/lib/base/index.js.map +1 -1
  19. package/lib/base/model/diagram-loader.d.ts.map +1 -1
  20. package/lib/base/model/diagram-loader.js +6 -1
  21. package/lib/base/model/diagram-loader.js.map +1 -1
  22. package/lib/base/mouse-position-tracker.d.ts +22 -0
  23. package/lib/base/mouse-position-tracker.d.ts.map +1 -0
  24. package/lib/base/mouse-position-tracker.js +40 -0
  25. package/lib/base/mouse-position-tracker.js.map +1 -0
  26. package/lib/features/accessibility/view-key-tools/movement-key-tool.d.ts +2 -0
  27. package/lib/features/accessibility/view-key-tools/movement-key-tool.d.ts.map +1 -1
  28. package/lib/features/accessibility/view-key-tools/movement-key-tool.js +15 -7
  29. package/lib/features/accessibility/view-key-tools/movement-key-tool.js.map +1 -1
  30. package/lib/features/bounds/bounds-module.d.ts.map +1 -1
  31. package/lib/features/bounds/bounds-module.js +2 -0
  32. package/lib/features/bounds/bounds-module.js.map +1 -1
  33. package/lib/features/bounds/freeform-layout.d.ts +17 -1
  34. package/lib/features/bounds/freeform-layout.d.ts.map +1 -1
  35. package/lib/features/bounds/freeform-layout.js +14 -5
  36. package/lib/features/bounds/freeform-layout.js.map +1 -1
  37. package/lib/features/bounds/glsp-hidden-bounds-updater.d.ts +5 -4
  38. package/lib/features/bounds/glsp-hidden-bounds-updater.d.ts.map +1 -1
  39. package/lib/features/bounds/glsp-hidden-bounds-updater.js +51 -39
  40. package/lib/features/bounds/glsp-hidden-bounds-updater.js.map +1 -1
  41. package/lib/features/bounds/hbox-layout.d.ts +18 -2
  42. package/lib/features/bounds/hbox-layout.d.ts.map +1 -1
  43. package/lib/features/bounds/hbox-layout.js +14 -5
  44. package/lib/features/bounds/hbox-layout.js.map +1 -1
  45. package/lib/features/bounds/index.d.ts +1 -0
  46. package/lib/features/bounds/index.d.ts.map +1 -1
  47. package/lib/features/bounds/index.js +1 -0
  48. package/lib/features/bounds/index.js.map +1 -1
  49. package/lib/features/bounds/layout-data.d.ts +27 -0
  50. package/lib/features/bounds/layout-data.d.ts.map +1 -0
  51. package/lib/features/bounds/layout-data.js +48 -0
  52. package/lib/features/bounds/layout-data.js.map +1 -0
  53. package/lib/features/bounds/local-bounds.d.ts +3 -1
  54. package/lib/features/bounds/local-bounds.d.ts.map +1 -1
  55. package/lib/features/bounds/local-bounds.js +14 -0
  56. package/lib/features/bounds/local-bounds.js.map +1 -1
  57. package/lib/features/bounds/vbox-layout.d.ts +18 -2
  58. package/lib/features/bounds/vbox-layout.d.ts.map +1 -1
  59. package/lib/features/bounds/vbox-layout.js +14 -5
  60. package/lib/features/bounds/vbox-layout.js.map +1 -1
  61. package/lib/features/change-bounds/index.d.ts +1 -0
  62. package/lib/features/change-bounds/index.d.ts.map +1 -1
  63. package/lib/features/change-bounds/index.js +1 -0
  64. package/lib/features/change-bounds/index.js.map +1 -1
  65. package/lib/features/change-bounds/model.d.ts +19 -3
  66. package/lib/features/change-bounds/model.d.ts.map +1 -1
  67. package/lib/features/change-bounds/model.js +92 -4
  68. package/lib/features/change-bounds/model.js.map +1 -1
  69. package/lib/features/change-bounds/movement-restrictor.d.ts +1 -0
  70. package/lib/features/change-bounds/movement-restrictor.d.ts.map +1 -1
  71. package/lib/features/change-bounds/movement-restrictor.js +7 -1
  72. package/lib/features/change-bounds/movement-restrictor.js.map +1 -1
  73. package/lib/features/change-bounds/point-position-updater.d.ts +3 -0
  74. package/lib/features/change-bounds/point-position-updater.d.ts.map +1 -1
  75. package/lib/features/change-bounds/point-position-updater.js +7 -2
  76. package/lib/features/change-bounds/point-position-updater.js.map +1 -1
  77. package/lib/features/change-bounds/position-snapper.d.ts +4 -0
  78. package/lib/features/change-bounds/position-snapper.d.ts.map +1 -1
  79. package/lib/features/change-bounds/position-snapper.js +4 -0
  80. package/lib/features/change-bounds/position-snapper.js.map +1 -1
  81. package/lib/features/change-bounds/snap.d.ts +6 -0
  82. package/lib/features/change-bounds/snap.d.ts.map +1 -1
  83. package/lib/features/change-bounds/snap.js +6 -0
  84. package/lib/features/change-bounds/snap.js.map +1 -1
  85. package/lib/features/change-bounds/tracker.d.ts +32 -0
  86. package/lib/features/change-bounds/tracker.d.ts.map +1 -0
  87. package/lib/features/change-bounds/tracker.js +60 -0
  88. package/lib/features/change-bounds/tracker.js.map +1 -0
  89. package/lib/features/debug/debug-bounds-decorator.d.ts +4 -1
  90. package/lib/features/debug/debug-bounds-decorator.d.ts.map +1 -1
  91. package/lib/features/debug/debug-bounds-decorator.js +14 -7
  92. package/lib/features/debug/debug-bounds-decorator.js.map +1 -1
  93. package/lib/features/element-template/mouse-tracking-element-position-listener.d.ts +9 -22
  94. package/lib/features/element-template/mouse-tracking-element-position-listener.d.ts.map +1 -1
  95. package/lib/features/element-template/mouse-tracking-element-position-listener.js +30 -46
  96. package/lib/features/element-template/mouse-tracking-element-position-listener.js.map +1 -1
  97. package/lib/features/helper-lines/helper-line-feedback.d.ts +2 -2
  98. package/lib/features/helper-lines/helper-line-feedback.d.ts.map +1 -1
  99. package/lib/features/helper-lines/helper-line-feedback.js +1 -1
  100. package/lib/features/helper-lines/helper-line-feedback.js.map +1 -1
  101. package/lib/features/helper-lines/helper-line-manager-default.d.ts +2 -1
  102. package/lib/features/helper-lines/helper-line-manager-default.d.ts.map +1 -1
  103. package/lib/features/helper-lines/helper-line-manager-default.js +23 -0
  104. package/lib/features/helper-lines/helper-line-manager-default.js.map +1 -1
  105. package/lib/features/helper-lines/helper-line-manager.d.ts +10 -2
  106. package/lib/features/helper-lines/helper-line-manager.d.ts.map +1 -1
  107. package/lib/features/routing/edge-router.d.ts +4 -0
  108. package/lib/features/routing/edge-router.d.ts.map +1 -1
  109. package/lib/features/routing/edge-router.js +37 -0
  110. package/lib/features/routing/edge-router.js.map +1 -1
  111. package/lib/features/select/select-mouse-listener.d.ts +3 -0
  112. package/lib/features/select/select-mouse-listener.d.ts.map +1 -1
  113. package/lib/features/select/select-mouse-listener.js +30 -2
  114. package/lib/features/select/select-mouse-listener.js.map +1 -1
  115. package/lib/features/tools/base-tools.d.ts +24 -15
  116. package/lib/features/tools/base-tools.d.ts.map +1 -1
  117. package/lib/features/tools/base-tools.js +0 -18
  118. package/lib/features/tools/base-tools.js.map +1 -1
  119. package/lib/features/tools/change-bounds/change-bounds-manager.d.ts +42 -0
  120. package/lib/features/tools/change-bounds/change-bounds-manager.d.ts.map +1 -0
  121. package/lib/features/tools/change-bounds/change-bounds-manager.js +136 -0
  122. package/lib/features/tools/change-bounds/change-bounds-manager.js.map +1 -0
  123. package/lib/features/tools/change-bounds/change-bounds-tool-feedback.d.ts +6 -0
  124. package/lib/features/tools/change-bounds/change-bounds-tool-feedback.d.ts.map +1 -1
  125. package/lib/features/tools/change-bounds/change-bounds-tool-feedback.js +14 -8
  126. package/lib/features/tools/change-bounds/change-bounds-tool-feedback.js.map +1 -1
  127. package/lib/features/tools/change-bounds/change-bounds-tool-module.d.ts.map +1 -1
  128. package/lib/features/tools/change-bounds/change-bounds-tool-module.js +2 -0
  129. package/lib/features/tools/change-bounds/change-bounds-tool-module.js.map +1 -1
  130. package/lib/features/tools/change-bounds/change-bounds-tool-move-feedback.d.ts +6 -15
  131. package/lib/features/tools/change-bounds/change-bounds-tool-move-feedback.d.ts.map +1 -1
  132. package/lib/features/tools/change-bounds/change-bounds-tool-move-feedback.js +24 -72
  133. package/lib/features/tools/change-bounds/change-bounds-tool-move-feedback.js.map +1 -1
  134. package/lib/features/tools/change-bounds/change-bounds-tool.d.ts +14 -25
  135. package/lib/features/tools/change-bounds/change-bounds-tool.d.ts.map +1 -1
  136. package/lib/features/tools/change-bounds/change-bounds-tool.js +63 -109
  137. package/lib/features/tools/change-bounds/change-bounds-tool.js.map +1 -1
  138. package/lib/features/tools/change-bounds/change-bounds-tracker.d.ts +136 -0
  139. package/lib/features/tools/change-bounds/change-bounds-tracker.d.ts.map +1 -0
  140. package/lib/features/tools/change-bounds/change-bounds-tracker.js +301 -0
  141. package/lib/features/tools/change-bounds/change-bounds-tracker.js.map +1 -0
  142. package/lib/features/tools/change-bounds/index.d.ts +2 -0
  143. package/lib/features/tools/change-bounds/index.d.ts.map +1 -1
  144. package/lib/features/tools/change-bounds/index.js +2 -0
  145. package/lib/features/tools/change-bounds/index.js.map +1 -1
  146. package/lib/features/tools/change-bounds/view.d.ts.map +1 -1
  147. package/lib/features/tools/change-bounds/view.js +1 -16
  148. package/lib/features/tools/change-bounds/view.js.map +1 -1
  149. package/lib/features/tools/edge-edit/edge-edit-tool-feedback.d.ts +7 -9
  150. package/lib/features/tools/edge-edit/edge-edit-tool-feedback.d.ts.map +1 -1
  151. package/lib/features/tools/edge-edit/edge-edit-tool-feedback.js +27 -47
  152. package/lib/features/tools/edge-edit/edge-edit-tool-feedback.js.map +1 -1
  153. package/lib/features/tools/edge-edit/edge-edit-tool.d.ts +2 -2
  154. package/lib/features/tools/edge-edit/edge-edit-tool.d.ts.map +1 -1
  155. package/lib/features/tools/edge-edit/edge-edit-tool.js +5 -5
  156. package/lib/features/tools/edge-edit/edge-edit-tool.js.map +1 -1
  157. package/lib/features/tools/marquee-selection/marquee-mouse-tool.d.ts +1 -0
  158. package/lib/features/tools/marquee-selection/marquee-mouse-tool.d.ts.map +1 -1
  159. package/lib/features/tools/marquee-selection/marquee-mouse-tool.js +3 -0
  160. package/lib/features/tools/marquee-selection/marquee-mouse-tool.js.map +1 -1
  161. package/lib/features/tools/node-creation/node-creation-tool.d.ts +2 -4
  162. package/lib/features/tools/node-creation/node-creation-tool.d.ts.map +1 -1
  163. package/lib/features/tools/node-creation/node-creation-tool.js +8 -11
  164. package/lib/features/tools/node-creation/node-creation-tool.js.map +1 -1
  165. package/lib/features/viewport/viewport-handler.d.ts +6 -4
  166. package/lib/features/viewport/viewport-handler.d.ts.map +1 -1
  167. package/lib/features/viewport/viewport-handler.js +13 -8
  168. package/lib/features/viewport/viewport-handler.js.map +1 -1
  169. package/lib/utils/gmodel-util.d.ts +20 -1
  170. package/lib/utils/gmodel-util.d.ts.map +1 -1
  171. package/lib/utils/gmodel-util.js +38 -16
  172. package/lib/utils/gmodel-util.js.map +1 -1
  173. package/lib/utils/layout-utils.d.ts +1 -0
  174. package/lib/utils/layout-utils.d.ts.map +1 -1
  175. package/lib/utils/layout-utils.js +5 -1
  176. package/lib/utils/layout-utils.js.map +1 -1
  177. package/package.json +3 -3
  178. package/src/base/default.module.ts +4 -1
  179. package/src/base/feedback/css-feedback.ts +10 -2
  180. package/src/base/feedback/feeback-emitter.ts +6 -3
  181. package/src/base/index.ts +1 -0
  182. package/src/base/model/diagram-loader.ts +5 -1
  183. package/src/base/mouse-position-tracker.ts +25 -0
  184. package/src/features/accessibility/view-key-tools/movement-key-tool.ts +12 -7
  185. package/src/features/bounds/bounds-module.ts +2 -0
  186. package/src/features/bounds/freeform-layout.ts +16 -6
  187. package/src/features/bounds/glsp-hidden-bounds-updater.ts +63 -46
  188. package/src/features/bounds/hbox-layout.ts +18 -9
  189. package/src/features/bounds/index.ts +1 -0
  190. package/src/features/bounds/layout-data.ts +48 -0
  191. package/src/features/bounds/local-bounds.ts +20 -4
  192. package/src/features/bounds/vbox-layout.ts +18 -10
  193. package/src/features/change-bounds/index.ts +1 -0
  194. package/src/features/change-bounds/model.ts +104 -4
  195. package/src/features/change-bounds/movement-restrictor.ts +10 -0
  196. package/src/features/change-bounds/point-position-updater.spec.ts +2 -0
  197. package/src/features/change-bounds/point-position-updater.ts +6 -0
  198. package/src/features/change-bounds/position-snapper.ts +4 -0
  199. package/src/features/change-bounds/snap.ts +6 -0
  200. package/src/features/change-bounds/tracker.ts +63 -0
  201. package/src/features/debug/debug-bounds-decorator.tsx +17 -7
  202. package/src/features/element-template/mouse-tracking-element-position-listener.ts +49 -71
  203. package/src/features/helper-lines/helper-line-feedback.ts +2 -1
  204. package/src/features/helper-lines/helper-line-manager-default.ts +37 -2
  205. package/src/features/helper-lines/helper-line-manager.ts +11 -2
  206. package/src/features/routing/edge-router.ts +42 -0
  207. package/src/features/select/select-mouse-listener.ts +15 -1
  208. package/src/features/tools/base-tools.ts +31 -19
  209. package/src/features/tools/change-bounds/change-bounds-manager.ts +145 -0
  210. package/src/features/tools/change-bounds/change-bounds-tool-feedback.ts +17 -6
  211. package/src/features/tools/change-bounds/change-bounds-tool-module.ts +2 -0
  212. package/src/features/tools/change-bounds/change-bounds-tool-move-feedback.ts +31 -81
  213. package/src/features/tools/change-bounds/change-bounds-tool.ts +89 -148
  214. package/src/features/tools/change-bounds/change-bounds-tracker.ts +455 -0
  215. package/src/features/tools/change-bounds/index.ts +2 -0
  216. package/src/features/tools/change-bounds/view.tsx +2 -14
  217. package/src/features/tools/edge-edit/edge-edit-tool-feedback.ts +34 -52
  218. package/src/features/tools/edge-edit/edge-edit-tool.ts +4 -3
  219. package/src/features/tools/marquee-selection/marquee-mouse-tool.ts +4 -0
  220. package/src/features/tools/node-creation/node-creation-tool.ts +7 -7
  221. package/src/features/viewport/viewport-handler.ts +13 -7
  222. package/src/utils/gmodel-util.ts +41 -5
  223. package/src/utils/layout-utils.ts +4 -0
@@ -1 +1 @@
1
- {"version":3,"file":"gmodel-util.js","sourceRoot":"","sources":["../../src/utils/gmodel-util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gmodel-util.js","sourceRoot":"","sources":["../../src/utils/gmodel-util.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,7 @@ import { IMovementRestrictor } from '../features/change-bounds/movement-restrict
18
18
  import { BoundsAwareModelElement } from './gmodel-util';
19
19
  export declare function minWidth(element: BoundsAwareModelElement): number;
20
20
  export declare function minHeight(element: BoundsAwareModelElement): number;
21
+ export declare function minDimensions(element: BoundsAwareModelElement): Dimension;
21
22
  export declare function getLayoutOptions(element: GModelElement): ModelLayoutOptions | undefined;
22
23
  export declare function isValidSize(element: BoundsAwareModelElement, size: Dimension): boolean;
23
24
  export declare function isValidMove(element: GModelElement, newPosition?: Point, movementRestrictor?: IMovementRestrictor): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"layout-utils.d.ts","sourceRoot":"","sources":["../../src/utils/layout-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAClF,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,WAAW,EAAE,aAAa,EAAE,kBAAkB,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACrI,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AACpF,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAExD,wBAAgB,QAAQ,CAAC,OAAO,EAAE,uBAAuB,GAAG,MAAM,CAMjE;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,uBAAuB,GAAG,MAAM,CAMlE;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,kBAAkB,GAAG,SAAS,CAMvF;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,uBAAuB,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAEtF;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,aAAa,EAAE,WAAW,CAAC,EAAE,KAAK,EAAE,kBAAkB,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAE1H;AAED,wBAAgB,kBAAkB,CAC9B,OAAO,EAAE,uBAAuB,EAChC,IAAI,EAAE,WAAW,EACjB,kBAAkB,CAAC,EAAE,mBAAmB,GACzC,WAAW,GAAG,SAAS,CAKzB;AAED,wBAAgB,uBAAuB,CACnC,OAAO,EAAE,uBAAuB,EAChC,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,kBAAkB,CAAC,EAAE,mBAAmB,GACzC,gBAAgB,GAAG,SAAS,CAa9B"}
1
+ {"version":3,"file":"layout-utils.d.ts","sourceRoot":"","sources":["../../src/utils/layout-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAClF,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,WAAW,EAAE,aAAa,EAAE,kBAAkB,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACrI,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AACpF,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAExD,wBAAgB,QAAQ,CAAC,OAAO,EAAE,uBAAuB,GAAG,MAAM,CAMjE;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,uBAAuB,GAAG,MAAM,CAMlE;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,uBAAuB,GAAG,SAAS,CAEzE;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,kBAAkB,GAAG,SAAS,CAMvF;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,uBAAuB,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAEtF;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,aAAa,EAAE,WAAW,CAAC,EAAE,KAAK,EAAE,kBAAkB,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAE1H;AAED,wBAAgB,kBAAkB,CAC9B,OAAO,EAAE,uBAAuB,EAChC,IAAI,EAAE,WAAW,EACjB,kBAAkB,CAAC,EAAE,mBAAmB,GACzC,WAAW,GAAG,SAAS,CAKzB;AAED,wBAAgB,uBAAuB,CACnC,OAAO,EAAE,uBAAuB,EAChC,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClC,kBAAkB,CAAC,EAAE,mBAAmB,GACzC,gBAAgB,GAAG,SAAS,CAa9B"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toValidElementAndBounds = exports.toValidElementMove = exports.isValidMove = exports.isValidSize = exports.getLayoutOptions = exports.minHeight = exports.minWidth = void 0;
3
+ exports.toValidElementAndBounds = exports.toValidElementMove = exports.isValidMove = exports.isValidSize = exports.getLayoutOptions = exports.minDimensions = exports.minHeight = exports.minWidth = void 0;
4
4
  function minWidth(element) {
5
5
  const layoutOptions = getLayoutOptions(element);
6
6
  if (layoutOptions !== undefined && typeof layoutOptions.minWidth === 'number') {
@@ -17,6 +17,10 @@ function minHeight(element) {
17
17
  return 1;
18
18
  }
19
19
  exports.minHeight = minHeight;
20
+ function minDimensions(element) {
21
+ return { width: minWidth(element), height: minHeight(element) };
22
+ }
23
+ exports.minDimensions = minDimensions;
20
24
  function getLayoutOptions(element) {
21
25
  const layoutOptions = element.layoutOptions;
22
26
  if (layoutOptions !== undefined) {
@@ -1 +1 @@
1
- {"version":3,"file":"layout-utils.js","sourceRoot":"","sources":["../../src/utils/layout-utils.ts"],"names":[],"mappings":";;;AAmBA,SAAgB,QAAQ,CAAC,OAAgC;IACrD,MAAM,aAAa,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAChD,IAAI,aAAa,KAAK,SAAS,IAAI,OAAO,aAAa,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC5E,OAAO,aAAa,CAAC,QAAQ,CAAC;IAClC,CAAC;IACD,OAAO,CAAC,CAAC;AACb,CAAC;AAND,4BAMC;AAED,SAAgB,SAAS,CAAC,OAAgC;IACtD,MAAM,aAAa,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAChD,IAAI,aAAa,KAAK,SAAS,IAAI,OAAO,aAAa,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC7E,OAAO,aAAa,CAAC,SAAS,CAAC;IACnC,CAAC;IACD,OAAO,CAAC,CAAC;AACb,CAAC;AAND,8BAMC;AAED,SAAgB,gBAAgB,CAAC,OAAsB;IACnD,MAAM,aAAa,GAAI,OAAe,CAAC,aAAa,CAAC;IACrD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,aAAmC,CAAC;IAC/C,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAND,4CAMC;AAED,SAAgB,WAAW,CAAC,OAAgC,EAAE,IAAe;IACzE,OAAO,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;AAChF,CAAC;AAFD,kCAEC;AAED,SAAgB,WAAW,CAAC,OAAsB,EAAE,WAAmB,EAAE,kBAAwC;;IAC7G,OAAO,MAAA,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,mCAAI,IAAI,CAAC;AACtE,CAAC;AAFD,kCAEC;AAED,SAAgB,kBAAkB,CAC9B,OAAgC,EAChC,IAAiB,EACjB,kBAAwC;IAExC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,EAAE,CAAC;QAC7D,OAAO;IACX,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AATD,gDASC;AAED,SAAgB,uBAAuB,CACnC,OAAgC,EAChC,MAAkC,EAClC,kBAAwC;IAExC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,WAAW,EAAE,kBAAkB,CAAC,EAAE,CAAC;QAChE,OAAO;IACX,CAAC;IACD,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC1C,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,GAAG,eAAe,EAAE,CAAC;QACzC,MAAM,CAAC,OAAO,CAAC,KAAK,GAAG,eAAe,CAAC;IAC3C,CAAC;IACD,MAAM,gBAAgB,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,gBAAgB,EAAE,CAAC;QAC3C,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,gBAAgB,CAAC;IAC7C,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAjBD,0DAiBC"}
1
+ {"version":3,"file":"layout-utils.js","sourceRoot":"","sources":["../../src/utils/layout-utils.ts"],"names":[],"mappings":";;;AAmBA,SAAgB,QAAQ,CAAC,OAAgC;IACrD,MAAM,aAAa,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAChD,IAAI,aAAa,KAAK,SAAS,IAAI,OAAO,aAAa,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC5E,OAAO,aAAa,CAAC,QAAQ,CAAC;IAClC,CAAC;IACD,OAAO,CAAC,CAAC;AACb,CAAC;AAND,4BAMC;AAED,SAAgB,SAAS,CAAC,OAAgC;IACtD,MAAM,aAAa,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAChD,IAAI,aAAa,KAAK,SAAS,IAAI,OAAO,aAAa,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC7E,OAAO,aAAa,CAAC,SAAS,CAAC;IACnC,CAAC;IACD,OAAO,CAAC,CAAC;AACb,CAAC;AAND,8BAMC;AAED,SAAgB,aAAa,CAAC,OAAgC;IAC1D,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;AACpE,CAAC;AAFD,sCAEC;AAED,SAAgB,gBAAgB,CAAC,OAAsB;IACnD,MAAM,aAAa,GAAI,OAAe,CAAC,aAAa,CAAC;IACrD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,aAAmC,CAAC;IAC/C,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAND,4CAMC;AAED,SAAgB,WAAW,CAAC,OAAgC,EAAE,IAAe;IACzE,OAAO,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;AAChF,CAAC;AAFD,kCAEC;AAED,SAAgB,WAAW,CAAC,OAAsB,EAAE,WAAmB,EAAE,kBAAwC;;IAC7G,OAAO,MAAA,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,mCAAI,IAAI,CAAC;AACtE,CAAC;AAFD,kCAEC;AAED,SAAgB,kBAAkB,CAC9B,OAAgC,EAChC,IAAiB,EACjB,kBAAwC;IAExC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,EAAE,CAAC;QAC7D,OAAO;IACX,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AATD,gDASC;AAED,SAAgB,uBAAuB,CACnC,OAAgC,EAChC,MAAkC,EAClC,kBAAwC;IAExC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,WAAW,EAAE,kBAAkB,CAAC,EAAE,CAAC;QAChE,OAAO;IACX,CAAC;IACD,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC1C,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,GAAG,eAAe,EAAE,CAAC;QACzC,MAAM,CAAC,OAAO,CAAC,KAAK,GAAG,eAAe,CAAC;IAC3C,CAAC;IACD,MAAM,gBAAgB,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,gBAAgB,EAAE,CAAC;QAC3C,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,gBAAgB,CAAC;IAC7C,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAjBD,0DAiBC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eclipse-glsp/client",
3
- "version": "2.2.0-next.332+ca7c9ae",
3
+ "version": "2.2.0-next.334+a0e5612",
4
4
  "description": "A sprotty-based client for GLSP",
5
5
  "keywords": [
6
6
  "eclipse",
@@ -46,7 +46,7 @@
46
46
  "watch": "tsc -w"
47
47
  },
48
48
  "dependencies": {
49
- "@eclipse-glsp/sprotty": "2.2.0-next.332+ca7c9ae",
49
+ "@eclipse-glsp/sprotty": "2.2.0-next.334+a0e5612",
50
50
  "autocompleter": "^9.1.0",
51
51
  "file-saver": "^2.0.5",
52
52
  "lodash": "4.17.21"
@@ -61,5 +61,5 @@
61
61
  "publishConfig": {
62
62
  "access": "public"
63
63
  },
64
- "gitHead": "ca7c9aecfaa198b8ceed3bf488abfc3d3d552e07"
64
+ "gitHead": "a0e5612080a868a3c742d5cabab717a44e300f67"
65
65
  }
@@ -18,6 +18,7 @@ import {
18
18
  FeatureModule,
19
19
  KeyTool,
20
20
  LocationPostprocessor,
21
+ MousePositionTracker,
21
22
  MouseTool,
22
23
  MoveCommand,
23
24
  SetDirtyStateAction,
@@ -47,6 +48,7 @@ import { DiagramLoader } from './model/diagram-loader';
47
48
  import { GLSPModelSource } from './model/glsp-model-source';
48
49
  import { DefaultModelInitializationConstraint, ModelInitializationConstraint } from './model/model-initialization-constraint';
49
50
  import { GModelRegistry } from './model/model-registry';
51
+ import { GLSPMousePositionTracker } from './mouse-position-tracker';
50
52
  import { SelectionClearingMouseListener } from './selection-clearing-mouse-listener';
51
53
  import { SelectionService } from './selection-service';
52
54
  import { EnableDefaultToolsAction, EnableToolsAction } from './tool-manager/tool';
@@ -85,7 +87,8 @@ export const defaultModule = new FeatureModule((bind, unbind, isBound, rebind, .
85
87
  bind(GLSPMouseTool).toSelf().inSingletonScope();
86
88
  bindOrRebind(context, MouseTool).toService(GLSPMouseTool);
87
89
  bind(TYPES.IDiagramStartup).toService(GLSPMouseTool);
88
-
90
+ bind(GLSPMousePositionTracker).toSelf().inSingletonScope();
91
+ bindOrRebind(context, MousePositionTracker).toService(GLSPMousePositionTracker);
89
92
  bind(GLSPKeyTool).toSelf().inSingletonScope();
90
93
  bindOrRebind(context, KeyTool).toService(GLSPKeyTool);
91
94
  bind(TYPES.IDiagramStartup).toService(GLSPKeyTool);
@@ -85,14 +85,18 @@ export enum CursorCSS {
85
85
  RESIZE_NESW = 'resize-nesw-mode',
86
86
  RESIZE_NWSE = 'resize-nwse-mode',
87
87
  RESIZE_NW = 'resize-nw-mode',
88
+ RESIZE_N = 'resize-n-mode',
88
89
  RESIZE_NE = 'resize-ne-mode',
89
- RESIZE_SW = 'resize-sw-mode',
90
+ RESIZE_E = 'resize-e-mode',
90
91
  RESIZE_SE = 'resize-se-mode',
92
+ RESIZE_S = 'resize-s-mode',
93
+ RESIZE_SW = 'resize-sw-mode',
94
+ RESIZE_W = 'resize-w-mode',
91
95
  MOVE = 'move-mode',
92
96
  MARQUEE = 'marquee-mode'
93
97
  }
94
98
 
95
- export function cursorFeedbackAction(cursorCss?: CursorCSS): ModifyCSSFeedbackAction {
99
+ export function cursorFeedbackAction(cursorCss?: string): ModifyCSSFeedbackAction {
96
100
  const add = [];
97
101
  if (cursorCss) {
98
102
  add.push(cursorCss);
@@ -107,3 +111,7 @@ export function applyCssClasses(element: GModelElement, ...add: string[]): Modif
107
111
  export function deleteCssClasses(element: GModelElement, ...remove: string[]): ModifyCSSFeedbackAction {
108
112
  return ModifyCSSFeedbackAction.create({ elements: [element], remove });
109
113
  }
114
+
115
+ export function toggleCssClasses(element: GModelElement, add: boolean, ...cssClasses: string[]): ModifyCSSFeedbackAction {
116
+ return add ? applyCssClasses(element, ...cssClasses) : deleteCssClasses(element, ...cssClasses);
117
+ }
@@ -32,9 +32,12 @@ export class FeedbackEmitter implements IFeedbackEmitter, Disposable {
32
32
  * once the {@link submit} method is called.
33
33
  *
34
34
  * @param action feedback action
35
- * @param cleanupAction action that undoes the feedback action. This is only triggered when {@link revert} is called.
35
+ * @param cleanupAction action that undoes the feedback action. This is only triggered when {@link revert} or {@link dispose} is called.
36
36
  */
37
- add(action: Action, cleanupAction?: MaybeActions): this {
37
+ add(action?: Action, cleanupAction?: MaybeActions): this {
38
+ if (!action && !cleanupAction) {
39
+ return this;
40
+ }
38
41
  const idx = this.feedbackActions.length;
39
42
  this.feedbackActions[idx] = action;
40
43
  if (cleanupAction) {
@@ -73,7 +76,7 @@ export class FeedbackEmitter implements IFeedbackEmitter, Disposable {
73
76
  * Registers any pending actions as feedback. Any previously submitted feedback becomes invalid.
74
77
  */
75
78
  submit(): this {
76
- // with 'arrayOf' we skip undefined entries that are created for non-cleanup actions
79
+ // with 'arrayOf' we skip undefined entries that are created for non-cleanup actions or cleanup-only actions
77
80
  const actions = arrayOf(...this.feedbackActions);
78
81
  const cleanupActions = arrayOf(...this.cleanupActions);
79
82
  this.deregistration = this.feedbackDispatcher.registerFeedback(this, actions, () => cleanupActions.flatMap(MaybeActions.asArray));
package/src/base/index.ts CHANGED
@@ -24,6 +24,7 @@ export * from './editor-context-service';
24
24
  export * from './feedback';
25
25
  export * from './focus';
26
26
  export * from './model';
27
+ export * from './mouse-position-tracker';
27
28
  export * from './ranked';
28
29
  export * from './selection-clearing-mouse-listener';
29
30
  export * from './selection-service';
@@ -192,7 +192,11 @@ export class DiagramLoader {
192
192
 
193
193
  protected async invokeStartupHook(hook: keyof Omit<IDiagramStartup, 'rank'>): Promise<void> {
194
194
  for (const startup of this.diagramStartups) {
195
- await startup[hook]?.();
195
+ try {
196
+ await startup[hook]?.();
197
+ } catch (err) {
198
+ console.error(`Error invoking diagram startup hook '${hook}':`, '\n', err);
199
+ }
196
200
  }
197
201
  }
198
202
 
@@ -0,0 +1,25 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2024 EclipseSource and others.
3
+ *
4
+ * This program and the accompanying materials are made available under the
5
+ * terms of the Eclipse Public License v. 2.0 which is available at
6
+ rank: number;
7
+ * http://www.eclipse.org/legal/epl-2.0.
8
+ *
9
+ * This Source Code may also be made available under the following Secondary
10
+ * Licenses when the conditions for such availability set forth in the Eclipse
11
+ * Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ * with the GNU Classpath Exception which is available at
13
+ * https://www.gnu.org/software/classpath/license.html.
14
+ *
15
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
16
+ ********************************************************************************/
17
+ import { MousePositionTracker } from '@eclipse-glsp/sprotty';
18
+ import { injectable } from 'inversify';
19
+ import { Ranked } from './ranked';
20
+
21
+ @injectable()
22
+ export class GLSPMousePositionTracker extends MousePositionTracker implements Ranked {
23
+ /* we want to be executed before all default mouse listeners since we are just tracking the position and others may need it */
24
+ rank = Ranked.DEFAULT_RANK - 200;
25
+ }
@@ -20,8 +20,8 @@ import { matchesKeystroke } from 'sprotty/lib/utils/keyboard';
20
20
  import { GLSPActionDispatcher } from '../../../base/action-dispatcher';
21
21
  import { SelectionService } from '../../../base/selection-service';
22
22
  import { Tool } from '../../../base/tool-manager/tool';
23
- import { unsnapModifier, useSnap } from '../../change-bounds/snap';
24
23
  import { Grid } from '../../grid';
24
+ import { ChangeBoundsManager } from '../../tools';
25
25
  import { AccessibleKeyShortcutProvider, SetAccessibleKeyShortcutAction } from '../key-shortcut/accessible-key-shortcut';
26
26
  import { MoveElementAction, MoveViewportAction } from '../move-zoom/move-handler';
27
27
 
@@ -40,7 +40,8 @@ export class MovementKeyTool implements Tool {
40
40
  @inject(SelectionService) selectionService: SelectionService;
41
41
  @inject(TYPES.ISnapper) @optional() readonly snapper?: ISnapper;
42
42
  @inject(TYPES.IActionDispatcher) readonly actionDispatcher: GLSPActionDispatcher;
43
- @optional() @inject(TYPES.Grid) protected grid: Grid;
43
+ @inject(TYPES.Grid) @optional() protected grid: Grid;
44
+ @inject(TYPES.IChangeBoundsManager) readonly changeBoundsManager: ChangeBoundsManager;
44
45
 
45
46
  get id(): string {
46
47
  return MovementKeyTool.ID;
@@ -86,7 +87,7 @@ export class MoveKeyListener extends KeyListener implements AccessibleKeyShortcu
86
87
 
87
88
  override keyDown(_element: GModelElement, event: KeyboardEvent): Action[] {
88
89
  const selectedElementIds = this.tool.selectionService.getSelectedElementIDs();
89
- const snap = useSnap(event);
90
+ const snap = this.tool.changeBoundsManager.usePositionSnap(event);
90
91
  const offsetX = snap ? this.grid.x : 1;
91
92
  const offsetY = snap ? this.grid.y : 1;
92
93
 
@@ -115,18 +116,22 @@ export class MoveKeyListener extends KeyListener implements AccessibleKeyShortcu
115
116
  }
116
117
 
117
118
  protected matchesMoveUpKeystroke(event: KeyboardEvent): boolean {
118
- return matchesKeystroke(event, 'ArrowUp') || matchesKeystroke(event, 'ArrowUp', unsnapModifier());
119
+ const unsnap = this.tool.changeBoundsManager.unsnapModifier();
120
+ return matchesKeystroke(event, 'ArrowUp') || (!!unsnap && matchesKeystroke(event, 'ArrowUp', unsnap));
119
121
  }
120
122
 
121
123
  protected matchesMoveDownKeystroke(event: KeyboardEvent): boolean {
122
- return matchesKeystroke(event, 'ArrowDown') || matchesKeystroke(event, 'ArrowDown', unsnapModifier());
124
+ const unsnap = this.tool.changeBoundsManager.unsnapModifier();
125
+ return matchesKeystroke(event, 'ArrowDown') || (!!unsnap && matchesKeystroke(event, 'ArrowDown', unsnap));
123
126
  }
124
127
 
125
128
  protected matchesMoveRightKeystroke(event: KeyboardEvent): boolean {
126
- return matchesKeystroke(event, 'ArrowRight') || matchesKeystroke(event, 'ArrowRight', unsnapModifier());
129
+ const unsnap = this.tool.changeBoundsManager.unsnapModifier();
130
+ return matchesKeystroke(event, 'ArrowRight') || (!!unsnap && matchesKeystroke(event, 'ArrowRight', unsnap));
127
131
  }
128
132
 
129
133
  protected matchesMoveLeftKeystroke(event: KeyboardEvent): boolean {
130
- return matchesKeystroke(event, 'ArrowLeft') || matchesKeystroke(event, 'ArrowLeft', unsnapModifier());
134
+ const unsnap = this.tool.changeBoundsManager.unsnapModifier();
135
+ return matchesKeystroke(event, 'ArrowLeft') || (!!unsnap && matchesKeystroke(event, 'ArrowLeft', unsnap));
131
136
  }
132
137
  }
@@ -52,5 +52,7 @@ export const boundsModule = new FeatureModule((bind, _unbind, isBound, _rebind)
52
52
  configureLayout(context, HBoxLayouter.KIND, HBoxLayouterExt);
53
53
  configureLayout(context, FreeFormLayouter.KIND, FreeFormLayouter);
54
54
 
55
+ // backwards compatibility
56
+ // eslint-disable-next-line deprecation/deprecation
55
57
  bind(PositionSnapper).toSelf();
56
58
  });
@@ -13,7 +13,6 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- import { injectable } from 'inversify';
17
16
  import {
18
17
  AbstractLayout,
19
18
  AbstractLayoutOptions,
@@ -21,11 +20,13 @@ import {
21
20
  BoundsData,
22
21
  Dimension,
23
22
  GChildElement,
23
+ GParentElement,
24
24
  LayoutContainer,
25
25
  Point,
26
- GParentElement,
27
26
  StatefulLayouter
28
27
  } from '@eclipse-glsp/sprotty';
28
+ import { injectable } from 'inversify';
29
+ import { LayoutAware } from './layout-data';
29
30
 
30
31
  /**
31
32
  * Layouts children of a container with explicit X/Y positions
@@ -44,9 +45,11 @@ export class FreeFormLayouter extends AbstractLayout<AbstractLayoutOptions> {
44
45
 
45
46
  const maxWidth = childrenSize.width > 0 ? childrenSize.width + options.paddingLeft + options.paddingRight : 0;
46
47
  const maxHeight = childrenSize.height > 0 ? childrenSize.height + options.paddingTop + options.paddingBottom : 0;
47
- if (maxWidth > 0 && maxHeight > 0) {
48
+ if (childrenSize.width > 0 && childrenSize.height > 0) {
48
49
  const offset = this.layoutChildren(container, layouter, options, maxWidth, maxHeight);
49
- boundsData.bounds = this.getFinalContainerBounds(container, offset, options, maxWidth, maxHeight);
50
+ const computed = this.getComputedContainerDimensions(options, childrenSize.width, childrenSize.height);
51
+ LayoutAware.setComputedDimensions(boundsData, computed);
52
+ boundsData.bounds = this.getFinalContainerBounds(container, offset, options, computed.width, computed.height);
50
53
  boundsData.boundsChanged = true;
51
54
  } else {
52
55
  boundsData.bounds = { x: boundsData.bounds!.x, y: boundsData.bounds!.y, width: 0, height: 0 };
@@ -96,6 +99,13 @@ export class FreeFormLayouter extends AbstractLayout<AbstractLayoutOptions> {
96
99
  return currentOffset;
97
100
  }
98
101
 
102
+ protected getComputedContainerDimensions(options: AbstractLayoutOptions, maxWidth: number, maxHeight: number): Dimension {
103
+ return {
104
+ width: maxWidth + options.paddingLeft + options.paddingRight,
105
+ height: maxHeight + options.paddingTop + options.paddingBottom
106
+ };
107
+ }
108
+
99
109
  protected override getFinalContainerBounds(
100
110
  container: GParentElement & LayoutContainer,
101
111
  lastOffset: Point,
@@ -106,8 +116,8 @@ export class FreeFormLayouter extends AbstractLayout<AbstractLayoutOptions> {
106
116
  const result = {
107
117
  x: container.bounds.x,
108
118
  y: container.bounds.y,
109
- width: Math.max(options.minWidth, maxWidth + options.paddingLeft + options.paddingRight),
110
- height: Math.max(options.minHeight, maxHeight + options.paddingTop + options.paddingBottom)
119
+ width: Math.max(options.minWidth, maxWidth),
120
+ height: Math.max(options.minHeight, maxHeight)
111
121
  };
112
122
 
113
123
  return result;
@@ -18,21 +18,29 @@ import {
18
18
  Action,
19
19
  BoundsData,
20
20
  ComputedBoundsAction,
21
- Deferred,
22
21
  EdgeRouterRegistry,
22
+ ElementAndAlignment,
23
+ ElementAndBounds,
24
+ ElementAndLayoutData,
23
25
  ElementAndRoutingPoints,
26
+ GChildElement,
24
27
  GModelElement,
25
28
  HiddenBoundsUpdater,
26
- IActionDispatcher,
29
+ LayoutData,
27
30
  ModelIndexImpl,
28
- RequestAction,
29
- ResponseAction
31
+ RequestBoundsAction,
32
+ isLayoutContainer
30
33
  } from '@eclipse-glsp/sprotty';
31
34
  import { inject, injectable, optional } from 'inversify';
32
35
  import { VNode } from 'snabbdom';
33
36
  import { BoundsAwareModelElement, calcElementAndRoute, getDescendantIds, isRoutable } from '../../utils/gmodel-util';
37
+ import { LayoutAware } from './layout-data';
34
38
  import { LocalComputedBoundsAction, LocalRequestBoundsAction } from './local-bounds';
35
39
 
40
+ export class BoundsDataExt extends BoundsData {
41
+ layoutData?: LayoutData;
42
+ }
43
+
36
44
  /**
37
45
  * Grabs the bounds from hidden SVG DOM elements, applies layouts, collects routes and fires {@link ComputedBoundsAction}s.
38
46
  *
@@ -44,7 +52,7 @@ export class GLSPHiddenBoundsUpdater extends HiddenBoundsUpdater {
44
52
 
45
53
  protected element2route: ElementAndRoutingPoints[] = [];
46
54
 
47
- protected getElement2BoundsData(): Map<BoundsAwareModelElement, BoundsData> {
55
+ protected getElement2BoundsData(): Map<BoundsAwareModelElement, BoundsDataExt> {
48
56
  return this['element2boundsData'];
49
57
  }
50
58
 
@@ -60,10 +68,56 @@ export class GLSPHiddenBoundsUpdater extends HiddenBoundsUpdater {
60
68
  if (LocalRequestBoundsAction.is(cause) && cause.elementIDs) {
61
69
  this.focusOnElements(cause.elementIDs);
62
70
  }
63
- const actions = this.captureActions(() => super.postUpdate(cause));
64
- actions
65
- .filter(action => ComputedBoundsAction.is(action))
66
- .forEach(action => this.actionDispatcher.dispatch(this.enhanceAction(action as ComputedBoundsAction, cause)));
71
+
72
+ // collect bounds and layout data in element2BoundsData
73
+ this.getBoundsFromDOM();
74
+ this.layouter.layout(this.getElement2BoundsData());
75
+
76
+ // prepare data for action
77
+ const resizes: ElementAndBounds[] = [];
78
+ const alignments: ElementAndAlignment[] = [];
79
+ const layoutData: ElementAndLayoutData[] = [];
80
+ this.getElement2BoundsData().forEach((boundsData, element) => {
81
+ if (boundsData.boundsChanged && boundsData.bounds !== undefined) {
82
+ const resize: ElementAndBounds = {
83
+ elementId: element.id,
84
+ newSize: {
85
+ width: boundsData.bounds.width,
86
+ height: boundsData.bounds.height
87
+ }
88
+ };
89
+ // don't copy position if the element is layouted by the server
90
+ if (element instanceof GChildElement && isLayoutContainer(element.parent)) {
91
+ resize.newPosition = {
92
+ x: boundsData.bounds.x,
93
+ y: boundsData.bounds.y
94
+ };
95
+ }
96
+ resizes.push(resize);
97
+ }
98
+ if (boundsData.alignmentChanged && boundsData.alignment !== undefined) {
99
+ alignments.push({
100
+ elementId: element.id,
101
+ newAlignment: boundsData.alignment
102
+ });
103
+ }
104
+ if (LayoutAware.is(boundsData)) {
105
+ layoutData.push({ elementId: element.id, layoutData: boundsData.layoutData });
106
+ }
107
+ });
108
+ const routes = this.element2route.length === 0 ? undefined : this.element2route;
109
+
110
+ // prepare and dispatch action
111
+ const responseId = (cause as RequestBoundsAction).requestId;
112
+ const revision = this.root !== undefined ? this.root.revision : undefined;
113
+ const computedBoundsAction = ComputedBoundsAction.create(resizes, { revision, alignments, layoutData, routes, responseId });
114
+ if (LocalRequestBoundsAction.is(cause)) {
115
+ LocalComputedBoundsAction.mark(computedBoundsAction);
116
+ }
117
+ this.actionDispatcher.dispatch(computedBoundsAction);
118
+
119
+ // cleanup
120
+ this.getElement2BoundsData().clear();
67
121
  this.element2route = [];
68
122
  }
69
123
 
@@ -82,41 +136,4 @@ export class GLSPHiddenBoundsUpdater extends HiddenBoundsUpdater {
82
136
  protected expandElementId(id: string, index: ModelIndexImpl, elementIDs: string[]): string[] {
83
137
  return getDescendantIds(index.getById(id));
84
138
  }
85
-
86
- protected captureActions(call: () => void): Action[] {
87
- const capturingActionDispatcher = new CapturingActionDispatcher();
88
- const actualActionDispatcher = this.actionDispatcher;
89
- this.actionDispatcher = capturingActionDispatcher;
90
- try {
91
- call();
92
- return capturingActionDispatcher.actions;
93
- } finally {
94
- this.actionDispatcher = actualActionDispatcher;
95
- }
96
- }
97
-
98
- protected enhanceAction(action: ComputedBoundsAction, cause?: Action): ComputedBoundsAction {
99
- if (LocalRequestBoundsAction.is(cause)) {
100
- LocalComputedBoundsAction.mark(action);
101
- }
102
- action.routes = this.element2route.length === 0 ? undefined : this.element2route;
103
- return action;
104
- }
105
- }
106
-
107
- class CapturingActionDispatcher implements IActionDispatcher {
108
- readonly actions: Action[] = [];
109
-
110
- async dispatch(action: Action): Promise<void> {
111
- this.actions.push(action);
112
- }
113
-
114
- async dispatchAll(actions: Action[]): Promise<void> {
115
- this.actions.push(...actions);
116
- }
117
-
118
- async request<Res extends ResponseAction>(action: RequestAction<Res>): Promise<Res> {
119
- // ignore, not needed for our purposes
120
- return new Deferred<Res>().promise;
121
- }
122
139
  }
@@ -13,22 +13,23 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- import { injectable } from 'inversify';
17
16
  import {
18
17
  Bounds,
19
18
  BoundsData,
20
19
  Dimension,
21
20
  GChildElement,
21
+ GModelElement,
22
+ GParentElement,
22
23
  HBoxLayoutOptions,
23
24
  HBoxLayouter,
24
25
  LayoutContainer,
25
26
  Point,
26
- GModelElement,
27
- GParentElement,
28
27
  StatefulLayouter,
29
28
  isBoundsAware,
30
29
  isLayoutableChild
31
30
  } from '@eclipse-glsp/sprotty';
31
+ import { injectable } from 'inversify';
32
+ import { LayoutAware } from './layout-data';
32
33
 
33
34
  export interface HBoxLayoutOptionsExt extends HBoxLayoutOptions {
34
35
  hGrab: boolean;
@@ -79,7 +80,9 @@ export class HBoxLayouterExt extends HBoxLayouter {
79
80
 
80
81
  if (width > 0 && height > 0) {
81
82
  const offset = this.layoutChildren(container, layouter, options, width, height, grabWidth, grabbingChildren);
82
- boundsData.bounds = this.getFinalContainerBounds(container, offset, options, childrenSize.width, childrenSize.height);
83
+ const computed = this.getComputedContainerDimensions(options, childrenSize.width, childrenSize.height);
84
+ LayoutAware.setComputedDimensions(boundsData, computed);
85
+ boundsData.bounds = this.getFinalContainerBounds(container, offset, options, computed.width, computed.height);
83
86
  boundsData.boundsChanged = true;
84
87
  }
85
88
  }
@@ -223,22 +226,28 @@ export class HBoxLayouterExt extends HBoxLayouter {
223
226
  return (element as any).layoutOptions;
224
227
  }
225
228
 
229
+ protected getComputedContainerDimensions(options: HBoxLayoutOptionsExt, maxWidth: number, maxHeight: number): Dimension {
230
+ return {
231
+ width: maxWidth + options.paddingLeft + options.paddingRight,
232
+ height: maxHeight + options.paddingTop + options.paddingBottom
233
+ };
234
+ }
235
+
226
236
  protected override getFinalContainerBounds(
227
237
  container: GParentElement & LayoutContainer,
228
238
  lastOffset: Point,
229
239
  options: HBoxLayoutOptionsExt,
230
- maxWidth: number,
231
- maxHeight: number
240
+ computedWidth: number,
241
+ computedHeight: number
232
242
  ): Bounds {
233
243
  const elementOptions = this.getElementLayoutOptions(container);
234
244
  const width = elementOptions?.prefWidth ?? options.minWidth;
235
245
  const height = elementOptions?.prefHeight ?? options.minHeight;
236
-
237
246
  const result = {
238
247
  x: container.bounds.x,
239
248
  y: container.bounds.y,
240
- width: Math.max(width, maxWidth + options.paddingLeft + options.paddingRight),
241
- height: Math.max(height, maxHeight + options.paddingTop + options.paddingBottom)
249
+ width: Math.max(width, computedWidth),
250
+ height: Math.max(height, computedHeight)
242
251
  };
243
252
 
244
253
  return result;
@@ -17,6 +17,7 @@ export * from './bounds-module';
17
17
  export * from './freeform-layout';
18
18
  export * from './glsp-hidden-bounds-updater';
19
19
  export * from './hbox-layout';
20
+ export * from './layout-data';
20
21
  export * from './layouter';
21
22
  export * from './local-bounds';
22
23
  export * from './set-bounds-feedback-command';
@@ -0,0 +1,48 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2024 Axon Ivy AG and others.
3
+ *
4
+ * This program and the accompanying materials are made available under the
5
+ * terms of the Eclipse Public License v. 2.0 which is available at
6
+ * http://www.eclipse.org/legal/epl-2.0.
7
+ *
8
+ * This Source Code may also be made available under the following Secondary
9
+ * Licenses when the conditions for such availability set forth in the Eclipse
10
+ * Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ * with the GNU Classpath Exception which is available at
12
+ * https://www.gnu.org/software/classpath/license.html.
13
+ *
14
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
+ ********************************************************************************/
16
+
17
+ import { Dimension, LayoutData } from '@eclipse-glsp/sprotty';
18
+
19
+ export interface LayoutAware {
20
+ layoutData: LayoutData;
21
+ }
22
+
23
+ export namespace LayoutAware {
24
+ export function is<T extends object>(element: T): element is T & LayoutAware {
25
+ return 'layoutData' in element;
26
+ }
27
+
28
+ export function getLayoutData<T extends object>(element: T): LayoutData | undefined {
29
+ return is(element) ? element.layoutData : undefined;
30
+ }
31
+
32
+ export function setLayoutData<T extends object>(element: T, data: LayoutData): void {
33
+ (element as LayoutAware).layoutData = data;
34
+ }
35
+
36
+ export function setComputedDimensions<T extends object>(element: T, computedDimensions: Dimension): void {
37
+ ensureLayoutAware(element).layoutData.computedDimensions = computedDimensions;
38
+ }
39
+
40
+ export function getComputedDimensions<T extends object>(element: T): Dimension | undefined {
41
+ return getLayoutData(element)?.computedDimensions;
42
+ }
43
+
44
+ function ensureLayoutAware<T extends object>(element: T): T & LayoutAware {
45
+ (element as LayoutAware).layoutData = (element as LayoutAware).layoutData ?? {};
46
+ return element as T & LayoutAware;
47
+ }
48
+ }