@eclipse-glsp/client 0.9.0-next.da0ffb79 → 0.9.0-next.e0116720

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 (32) hide show
  1. package/LICENSE +642 -277
  2. package/lib/base/types.d.ts +1 -0
  3. package/lib/base/types.d.ts.map +1 -1
  4. package/lib/base/types.js +2 -1
  5. package/lib/base/types.js.map +1 -1
  6. package/lib/features/layout/di.config.d.ts +0 -4
  7. package/lib/features/layout/di.config.d.ts.map +1 -1
  8. package/lib/features/layout/di.config.js +1 -37
  9. package/lib/features/layout/di.config.js.map +1 -1
  10. package/lib/features/tools/marquee-behavior.d.ts +42 -0
  11. package/lib/features/tools/marquee-behavior.d.ts.map +1 -0
  12. package/lib/features/tools/marquee-behavior.js +128 -0
  13. package/lib/features/tools/marquee-behavior.js.map +1 -0
  14. package/lib/features/tools/marquee-behavior.spec.d.ts +17 -0
  15. package/lib/features/tools/marquee-behavior.spec.d.ts.map +1 -0
  16. package/lib/features/tools/marquee-behavior.spec.js +165 -0
  17. package/lib/features/tools/marquee-behavior.spec.js.map +1 -0
  18. package/lib/features/tools/marquee-mouse-tool.d.ts +9 -14
  19. package/lib/features/tools/marquee-mouse-tool.d.ts.map +1 -1
  20. package/lib/features/tools/marquee-mouse-tool.js +30 -119
  21. package/lib/features/tools/marquee-mouse-tool.js.map +1 -1
  22. package/lib/index.d.ts +1 -0
  23. package/lib/index.d.ts.map +1 -1
  24. package/lib/index.js +1 -0
  25. package/lib/index.js.map +1 -1
  26. package/package.json +3 -3
  27. package/src/base/types.ts +2 -1
  28. package/src/features/layout/di.config.ts +3 -25
  29. package/src/features/tools/marquee-behavior.spec.ts +175 -0
  30. package/src/features/tools/marquee-behavior.ts +158 -0
  31. package/src/features/tools/marquee-mouse-tool.ts +46 -144
  32. package/src/index.ts +1 -0
@@ -35,5 +35,6 @@ export declare const GLSP_TYPES: {
35
35
  IDefaultTool: symbol;
36
36
  IEditModeListener: symbol;
37
37
  LayoutRegistration: symbol;
38
+ IMarqueeBehavior: symbol;
38
39
  };
39
40
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/base/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAClF,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;CAsBtB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/base/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAClF,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;CAuBtB,CAAC"}
package/lib/base/types.js CHANGED
@@ -37,6 +37,7 @@ exports.GLSP_TYPES = {
37
37
  ITool: Symbol.for('ITool'),
38
38
  IDefaultTool: Symbol.for('IDefaultTool'),
39
39
  IEditModeListener: Symbol.for('IEditModeListener'),
40
- LayoutRegistration: Symbol.for('LayoutRegistration')
40
+ LayoutRegistration: Symbol.for('LayoutRegistration'),
41
+ IMarqueeBehavior: Symbol.for('IMarqueeBehavior')
41
42
  };
42
43
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/base/types.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;kFAckF;AACrE,QAAA,UAAU,GAAG;IACtB,sBAAsB,EAAE,MAAM,CAAC,GAAG,CAAC,wBAAwB,CAAC;IAC5D,qCAAqC,EAAE,MAAM,CAAC,GAAG,CAAC,uCAAuC,CAAC;IAC1F,6BAA6B,EAAE,MAAM,CAAC,GAAG,CAAC,wBAAwB,CAAC;IACnE,yBAAyB,EAAE,MAAM,CAAC,GAAG,CAAC,2BAA2B,CAAC;IAClE,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC;IACzC,iBAAiB,EAAE,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC;IAClD,mBAAmB,EAAE,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC;IACvD,gBAAgB,EAAE,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC;IAChD,iBAAiB,EAAE,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC;IAClD,kBAAkB,EAAE,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC;IACpD,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC;IAClC,mBAAmB,EAAE,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC;IACtD,2BAA2B,EAAE,MAAM,CAAC,GAAG,CAAC,6BAA6B,CAAC;IACtE,4BAA4B,EAAE,MAAM,CAAC,GAAG,CAAC,8BAA8B,CAAC;IACxE,oBAAoB,EAAE,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC;IACxD,iBAAiB,EAAE,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC;IAClD,gBAAgB,EAAE,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC;IAChD,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC;IACxC,iBAAiB,EAAE,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC;IAClD,kBAAkB,EAAE,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC;CACvD,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/base/types.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;kFAckF;AACrE,QAAA,UAAU,GAAG;IACtB,sBAAsB,EAAE,MAAM,CAAC,GAAG,CAAC,wBAAwB,CAAC;IAC5D,qCAAqC,EAAE,MAAM,CAAC,GAAG,CAAC,uCAAuC,CAAC;IAC1F,6BAA6B,EAAE,MAAM,CAAC,GAAG,CAAC,wBAAwB,CAAC;IACnE,yBAAyB,EAAE,MAAM,CAAC,GAAG,CAAC,2BAA2B,CAAC;IAClE,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC;IACzC,iBAAiB,EAAE,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC;IAClD,mBAAmB,EAAE,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC;IACvD,gBAAgB,EAAE,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC;IAChD,iBAAiB,EAAE,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC;IAClD,kBAAkB,EAAE,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC;IACpD,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC;IAClC,mBAAmB,EAAE,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC;IACtD,2BAA2B,EAAE,MAAM,CAAC,GAAG,CAAC,6BAA6B,CAAC;IACtE,4BAA4B,EAAE,MAAM,CAAC,GAAG,CAAC,8BAA8B,CAAC;IACxE,oBAAoB,EAAE,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC;IACxD,iBAAiB,EAAE,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC;IAClD,gBAAgB,EAAE,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC;IAChD,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC;IACxC,iBAAiB,EAAE,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC;IAClD,kBAAkB,EAAE,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC;IACpD,gBAAgB,EAAE,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC;CACnD,CAAC"}
@@ -14,10 +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
- import { ILogger, LayoutRegistration, LayoutRegistry } from 'sprotty';
18
17
  declare const layoutCommandsModule: ContainerModule;
19
18
  export default layoutCommandsModule;
20
- export declare class OverridableLayoutRegistry extends LayoutRegistry {
21
- constructor(layouts: LayoutRegistration[] | undefined, logger: ILogger);
22
- }
23
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,EAA6C,MAAM,WAAW,CAAC;AACvF,OAAO,EAAqC,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAS,MAAM,SAAS,CAAC;AAKhH,QAAA,MAAM,oBAAoB,iBASxB,CAAC;AAEH,eAAe,oBAAoB,CAAC;AAEpC,qBACa,yBAA0B,SAAQ,cAAc;gBAGF,OAAO,kCAA2B,EAC9D,MAAM,EAAE,OAAO;CAY7C"}
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;AAM5C,QAAA,MAAM,oBAAoB,iBAMxB,CAAC;AAEH,eAAe,oBAAoB,CAAC"}
@@ -1,18 +1,5 @@
1
1
  "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
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
- return c > 3 && r && Object.defineProperty(target, key, r), r;
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
- };
11
- var __param = (this && this.__param) || function (paramIndex, decorator) {
12
- return function (target, key) { decorator(target, key, paramIndex); }
13
- };
14
2
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.OverridableLayoutRegistry = void 0;
16
3
  /********************************************************************************
17
4
  * Copyright (c) 2019-2021 EclipseSource and others.
18
5
  *
@@ -36,31 +23,8 @@ const vbox_layout_1 = require("./vbox-layout");
36
23
  const layoutCommandsModule = new inversify_1.ContainerModule((bind, _unbind, isBound, rebind) => {
37
24
  sprotty_1.configureCommand({ bind, isBound }, layout_commands_1.ResizeElementsCommand);
38
25
  sprotty_1.configureCommand({ bind, isBound }, layout_commands_1.AlignElementsCommand);
39
- sprotty_1.configureLayout({ bind, isBound }, vbox_layout_1.VBoxLayouterExt.KIND, vbox_layout_1.VBoxLayouterExt);
26
+ rebind(sprotty_1.VBoxLayouter).to(vbox_layout_1.VBoxLayouterExt);
40
27
  sprotty_1.configureLayout({ bind, isBound }, freeform_layout_1.FreeFormLayouter.KIND, freeform_layout_1.FreeFormLayouter);
41
- bind(OverridableLayoutRegistry).toSelf().inSingletonScope();
42
- rebind(sprotty_1.TYPES.LayoutRegistry).toService(OverridableLayoutRegistry);
43
28
  });
44
29
  exports.default = layoutCommandsModule;
45
- let OverridableLayoutRegistry = class OverridableLayoutRegistry extends sprotty_1.LayoutRegistry {
46
- // ensure logger is already used in constructor as otherwise not usable
47
- constructor(layouts = [], logger) {
48
- super();
49
- layouts.forEach(layout => {
50
- if (this.hasKey(layout.layoutKind)) {
51
- logger.warn('Layout kind is already defined and will be overridden: ', layout.layoutKind);
52
- this.deregister(layout.layoutKind);
53
- }
54
- // allow overriding an existing layout kind
55
- this.register(layout.layoutKind, layout.factory());
56
- });
57
- }
58
- };
59
- OverridableLayoutRegistry = __decorate([
60
- inversify_1.injectable(),
61
- __param(0, inversify_1.multiInject(sprotty_1.TYPES.LayoutRegistration)), __param(0, inversify_1.optional()),
62
- __param(1, inversify_1.inject(sprotty_1.TYPES.ILogger)),
63
- __metadata("design:paramtypes", [Array, Object])
64
- ], OverridableLayoutRegistry);
65
- exports.OverridableLayoutRegistry = OverridableLayoutRegistry;
66
30
  //# 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,yCAAuF;AACvF,qCAAgH;AAChH,uDAAqD;AACrD,uDAAgF;AAChF,+CAAgD;AAEhD,MAAM,oBAAoB,GAAG,IAAI,2BAAe,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;IAChF,0BAAgB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,uCAAqB,CAAC,CAAC;IAC3D,0BAAgB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,sCAAoB,CAAC,CAAC;IAE1D,yBAAe,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,6BAAe,CAAC,IAAI,EAAE,6BAAe,CAAC,CAAC;IAC1E,yBAAe,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,kCAAgB,CAAC,IAAI,EAAE,kCAAgB,CAAC,CAAC;IAE5E,IAAI,CAAC,yBAAyB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC5D,MAAM,CAAC,eAAK,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;AACtE,CAAC,CAAC,CAAC;AAEH,kBAAe,oBAAoB,CAAC;AAGpC,IAAa,yBAAyB,GAAtC,MAAa,yBAA0B,SAAQ,wBAAc;IACzD,uEAAuE;IACvE,YACuD,UAAgC,EAAE,EAC9D,MAAe;QAEtC,KAAK,EAAE,CAAC;QACR,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACrB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;gBAChC,MAAM,CAAC,IAAI,CAAC,yDAAyD,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;gBAC1F,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;aACtC;YACD,2CAA2C;YAC3C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACP,CAAC;CACJ,CAAA;AAhBY,yBAAyB;IADrC,sBAAU,EAAE;IAIJ,WAAA,uBAAW,CAAC,eAAK,CAAC,kBAAkB,CAAC,CAAA,EAAE,WAAA,oBAAQ,EAAE,CAAA;IACjD,WAAA,kBAAM,CAAC,eAAK,CAAC,OAAO,CAAC,CAAA;;GAJjB,yBAAyB,CAgBrC;AAhBY,8DAAyB"}
1
+ {"version":3,"file":"di.config.js","sourceRoot":"","sources":["../../../src/features/layout/di.config.ts"],"names":[],"mappings":";;AAAA;;;;;;;;;;;;;;kFAckF;AAClF,yCAA4C;AAC5C,qCAA0E;AAC1E,uDAAqD;AACrD,uDAAgF;AAChF,+CAAgD;AAEhD,MAAM,oBAAoB,GAAG,IAAI,2BAAe,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;IAChF,0BAAgB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,uCAAqB,CAAC,CAAC;IAC3D,0BAAgB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,sCAAoB,CAAC,CAAC;IAE1D,MAAM,CAAC,sBAAY,CAAC,CAAC,EAAE,CAAC,6BAAe,CAAC,CAAC;IACzC,yBAAe,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,kCAAgB,CAAC,IAAI,EAAE,kCAAgB,CAAC,CAAC;AAChF,CAAC,CAAC,CAAC;AAEH,kBAAe,oBAAoB,CAAC"}
@@ -0,0 +1,42 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2021 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
+ * 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
+ import { Bounds, Point } from '@eclipse-glsp/protocol';
17
+ import { DrawMarqueeAction } from '../tool-feedback/marquee-tool-feedback';
18
+ export interface IMarqueeBehavior {
19
+ readonly entireElement: boolean;
20
+ readonly entireEdge: boolean;
21
+ }
22
+ export declare class MarqueeUtil {
23
+ protected startPoint: Point;
24
+ protected currentPoint: Point;
25
+ protected marqueeBehavior: IMarqueeBehavior;
26
+ constructor(marqueeBehavior?: IMarqueeBehavior);
27
+ updateStartPoint(position: Point): void;
28
+ updateCurrentPoint(position: Point): void;
29
+ drawMarqueeAction(): DrawMarqueeAction;
30
+ isEdgePathMarked(path: string | null): boolean;
31
+ isEdgeMarked(points: Point[]): boolean;
32
+ isNodeMarked(elementBounds: Bounds): boolean;
33
+ private isEntireEdgeMarked;
34
+ private isPartOfEdgeMarked;
35
+ private isLineMarked;
36
+ private lineIntersect;
37
+ private pointInRect;
38
+ private isElementBetweenXAxis;
39
+ private isElementBetweenYAxis;
40
+ private isBetween;
41
+ }
42
+ //# sourceMappingURL=marquee-behavior.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marquee-behavior.d.ts","sourceRoot":"","sources":["../../../src/features/tools/marquee-behavior.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAElF,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAE3E,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAChC;AAED,qBAAa,WAAW;IACpB,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC;IAC5B,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC;IAC9B,SAAS,CAAC,eAAe,EAAE,gBAAgB,CAAC;gBAEhC,eAAe,CAAC,EAAE,gBAAgB;IAQ9C,gBAAgB,CAAC,QAAQ,EAAE,KAAK,GAAG,IAAI;IAIvC,kBAAkB,CAAC,QAAQ,EAAE,KAAK,GAAG,IAAI;IAIzC,iBAAiB,IAAI,iBAAiB;IAItC,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO;IAc9C,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO;IAItC,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO;IAY5C,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,qBAAqB;IAc7B,OAAO,CAAC,qBAAqB;IAc7B,OAAO,CAAC,SAAS;CAGpB"}
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+ /********************************************************************************
3
+ * Copyright (c) 2021 EclipseSource and others.
4
+ *
5
+ * This program and the accompanying materials are made available under the
6
+ * terms of the Eclipse Public License v. 2.0 which is available at
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
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.MarqueeUtil = void 0;
19
+ const sprotty_1 = require("sprotty");
20
+ const marquee_tool_feedback_1 = require("../tool-feedback/marquee-tool-feedback");
21
+ class MarqueeUtil {
22
+ constructor(marqueeBehavior) {
23
+ if (marqueeBehavior) {
24
+ this.marqueeBehavior = marqueeBehavior;
25
+ }
26
+ else {
27
+ this.marqueeBehavior = { entireElement: false, entireEdge: false };
28
+ }
29
+ }
30
+ updateStartPoint(position) {
31
+ this.startPoint = position;
32
+ }
33
+ updateCurrentPoint(position) {
34
+ this.currentPoint = position;
35
+ }
36
+ drawMarqueeAction() {
37
+ return new marquee_tool_feedback_1.DrawMarqueeAction(this.startPoint, this.currentPoint);
38
+ }
39
+ isEdgePathMarked(path) {
40
+ if (!path) {
41
+ return false;
42
+ }
43
+ const points = path
44
+ .split(/M|L/)
45
+ .filter(p => p)
46
+ .map(p => {
47
+ const coord = p.split(',');
48
+ return { x: parseInt(coord[0], 10), y: parseInt(coord[1], 10) };
49
+ });
50
+ return this.isEdgeMarked(points);
51
+ }
52
+ isEdgeMarked(points) {
53
+ return this.marqueeBehavior.entireEdge ? this.isEntireEdgeMarked(points) : this.isPartOfEdgeMarked(points);
54
+ }
55
+ isNodeMarked(elementBounds) {
56
+ const horizontallyIn = this.startPoint.x < this.currentPoint.x
57
+ ? this.isElementBetweenXAxis(elementBounds, this.startPoint.x, this.currentPoint.x)
58
+ : this.isElementBetweenXAxis(elementBounds, this.currentPoint.x, this.startPoint.x);
59
+ const verticallyIn = this.startPoint.y < this.currentPoint.y
60
+ ? this.isElementBetweenYAxis(elementBounds, this.startPoint.y, this.currentPoint.y)
61
+ : this.isElementBetweenYAxis(elementBounds, this.currentPoint.y, this.startPoint.y);
62
+ return horizontallyIn && verticallyIn;
63
+ }
64
+ isEntireEdgeMarked(points) {
65
+ for (let i = 0; i < points.length; i++) {
66
+ if (!this.pointInRect(points[i])) {
67
+ return false;
68
+ }
69
+ }
70
+ return true;
71
+ }
72
+ isPartOfEdgeMarked(points) {
73
+ for (let i = 0; i < points.length - 1; i++) {
74
+ if (this.isLineMarked(points[i], points[i + 1])) {
75
+ return true;
76
+ }
77
+ }
78
+ return false;
79
+ }
80
+ isLineMarked(point1, point2) {
81
+ const line = new sprotty_1.PointToPointLine(point1, point2);
82
+ return (this.pointInRect(point1) ||
83
+ this.pointInRect(point2) ||
84
+ this.lineIntersect(line, this.startPoint, { x: this.startPoint.x, y: this.currentPoint.y }) ||
85
+ this.lineIntersect(line, this.startPoint, { x: this.currentPoint.x, y: this.startPoint.y }) ||
86
+ this.lineIntersect(line, { x: this.currentPoint.x, y: this.startPoint.y }, this.currentPoint) ||
87
+ this.lineIntersect(line, { x: this.startPoint.x, y: this.currentPoint.y }, this.currentPoint));
88
+ }
89
+ lineIntersect(line, p1, p2) {
90
+ return line.intersection(new sprotty_1.PointToPointLine(p1, p2)) !== undefined;
91
+ }
92
+ pointInRect(point) {
93
+ const boolX = this.startPoint.x <= this.currentPoint.x
94
+ ? this.isBetween(point.x, this.startPoint.x, this.currentPoint.x)
95
+ : this.isBetween(point.x, this.currentPoint.x, this.startPoint.x);
96
+ const boolY = this.startPoint.y <= this.currentPoint.y
97
+ ? this.isBetween(point.y, this.startPoint.y, this.currentPoint.y)
98
+ : this.isBetween(point.y, this.currentPoint.y, this.startPoint.y);
99
+ return boolX && boolY;
100
+ }
101
+ isElementBetweenXAxis(elementBounds, marqueeLeft, marqueeRight) {
102
+ const leftEdge = this.isBetween(elementBounds.x, marqueeLeft, marqueeRight);
103
+ const rightEdge = this.isBetween(elementBounds.x + elementBounds.width, marqueeLeft, marqueeRight);
104
+ if (this.marqueeBehavior.entireElement) {
105
+ return leftEdge && rightEdge;
106
+ }
107
+ return (leftEdge ||
108
+ rightEdge ||
109
+ this.isBetween(marqueeLeft, elementBounds.x, elementBounds.x + elementBounds.width) ||
110
+ this.isBetween(marqueeRight, elementBounds.x, elementBounds.x + elementBounds.width));
111
+ }
112
+ isElementBetweenYAxis(elementBounds, marqueeTop, marqueeBottom) {
113
+ const topEdge = this.isBetween(elementBounds.y, marqueeTop, marqueeBottom);
114
+ const bottomEdge = this.isBetween(elementBounds.y + elementBounds.height, marqueeTop, marqueeBottom);
115
+ if (this.marqueeBehavior.entireElement) {
116
+ return topEdge && bottomEdge;
117
+ }
118
+ return (topEdge ||
119
+ bottomEdge ||
120
+ this.isBetween(marqueeTop, elementBounds.y, elementBounds.y + elementBounds.height) ||
121
+ this.isBetween(marqueeBottom, elementBounds.y, elementBounds.y + elementBounds.height));
122
+ }
123
+ isBetween(x, lower, upper) {
124
+ return lower <= x && x <= upper;
125
+ }
126
+ }
127
+ exports.MarqueeUtil = MarqueeUtil;
128
+ //# sourceMappingURL=marquee-behavior.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marquee-behavior.js","sourceRoot":"","sources":["../../../src/features/tools/marquee-behavior.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2021 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
+ * 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
+ export {};
17
+ //# sourceMappingURL=marquee-behavior.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marquee-behavior.spec.d.ts","sourceRoot":"","sources":["../../../src/features/tools/marquee-behavior.spec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF"}
@@ -0,0 +1,165 @@
1
+ "use strict";
2
+ /********************************************************************************
3
+ * Copyright (c) 2021 EclipseSource and others.
4
+ *
5
+ * This program and the accompanying materials are made available under the
6
+ * terms of the Eclipse Public License v. 2.0 which is available at
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
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const chai_1 = require("chai");
19
+ const marquee_behavior_1 = require("./marquee-behavior");
20
+ describe('MarqueeUtil', () => {
21
+ function initUtil(marqueeBehavior) {
22
+ const util = new marquee_behavior_1.MarqueeUtil(marqueeBehavior);
23
+ util.updateStartPoint({ x: 0, y: 0 });
24
+ util.updateCurrentPoint({ x: 0, y: 0 });
25
+ return util;
26
+ }
27
+ describe('Node marquee', () => {
28
+ const node = { x: 20, y: 20, width: 200, height: 50 };
29
+ it('touch element', () => {
30
+ const util = initUtil();
31
+ chai_1.expect(util.isNodeMarked(node)).is.equals(false);
32
+ util.updateCurrentPoint({ x: 30, y: 50 });
33
+ chai_1.expect(util.isNodeMarked(node)).is.equals(true);
34
+ util.updateCurrentPoint({ x: 250, y: 85 });
35
+ chai_1.expect(util.isNodeMarked(node)).is.equals(true);
36
+ util.updateStartPoint({ x: 30, y: 25 });
37
+ chai_1.expect(util.isNodeMarked(node)).is.equals(true);
38
+ });
39
+ it('touch element (reverse)', () => {
40
+ const util = initUtil();
41
+ chai_1.expect(util.isNodeMarked(node)).is.equals(false);
42
+ util.updateStartPoint({ x: 30, y: 50 });
43
+ chai_1.expect(util.isNodeMarked(node)).is.equals(true);
44
+ util.updateStartPoint({ x: 250, y: 85 });
45
+ chai_1.expect(util.isNodeMarked(node)).is.equals(true);
46
+ util.updateCurrentPoint({ x: 30, y: 25 });
47
+ chai_1.expect(util.isNodeMarked(node)).is.equals(true);
48
+ });
49
+ it('mark entire element', () => {
50
+ const util = initUtil({ entireElement: true, entireEdge: false });
51
+ chai_1.expect(util.isNodeMarked(node)).is.equals(false);
52
+ util.updateCurrentPoint({ x: 30, y: 50 });
53
+ chai_1.expect(util.isNodeMarked(node)).is.equals(false);
54
+ util.updateCurrentPoint({ x: 250, y: 85 });
55
+ chai_1.expect(util.isNodeMarked(node)).is.equals(true);
56
+ util.updateStartPoint({ x: 30, y: 85 });
57
+ chai_1.expect(util.isNodeMarked(node)).is.equals(false);
58
+ });
59
+ it('mark entire element (reverse)', () => {
60
+ const util = initUtil({ entireElement: true, entireEdge: false });
61
+ chai_1.expect(util.isNodeMarked(node)).is.equals(false);
62
+ util.updateStartPoint({ x: 30, y: 50 });
63
+ chai_1.expect(util.isNodeMarked(node)).is.equals(false);
64
+ util.updateStartPoint({ x: 250, y: 85 });
65
+ chai_1.expect(util.isNodeMarked(node)).is.equals(true);
66
+ util.updateCurrentPoint({ x: 30, y: 85 });
67
+ chai_1.expect(util.isNodeMarked(node)).is.equals(false);
68
+ });
69
+ });
70
+ describe('Edge marquee', () => {
71
+ const edge = [
72
+ { x: 20, y: 40 },
73
+ { x: 40, y: 20 }
74
+ ];
75
+ const edge2 = [
76
+ { x: 20, y: 20 },
77
+ { x: 40, y: 40 },
78
+ { x: 50, y: 10 }
79
+ ];
80
+ it('touch edge', () => {
81
+ const util = initUtil();
82
+ chai_1.expect(util.isEdgeMarked(edge)).is.equals(false);
83
+ chai_1.expect(util.isEdgeMarked(edge2)).is.equals(false);
84
+ util.updateCurrentPoint({ x: 20, y: 20 });
85
+ chai_1.expect(util.isEdgeMarked(edge)).is.equals(false);
86
+ chai_1.expect(util.isEdgeMarked(edge2)).is.equals(true);
87
+ util.updateCurrentPoint({ x: 30, y: 30 });
88
+ chai_1.expect(util.isEdgeMarked(edge)).is.equals(true);
89
+ chai_1.expect(util.isEdgeMarked(edge2)).is.equals(true);
90
+ util.updateCurrentPoint({ x: 50, y: 50 });
91
+ chai_1.expect(util.isEdgeMarked(edge)).is.equals(true);
92
+ chai_1.expect(util.isEdgeMarked(edge2)).is.equals(true);
93
+ util.updateStartPoint({ x: 25, y: 25 });
94
+ chai_1.expect(util.isEdgeMarked(edge)).is.equals(true);
95
+ chai_1.expect(util.isEdgeMarked(edge2)).is.equals(true);
96
+ });
97
+ it('touch edge (reverse)', () => {
98
+ const util = initUtil();
99
+ chai_1.expect(util.isEdgeMarked(edge)).is.equals(false);
100
+ chai_1.expect(util.isEdgeMarked(edge2)).is.equals(false);
101
+ util.updateStartPoint({ x: 20, y: 20 });
102
+ chai_1.expect(util.isEdgeMarked(edge)).is.equals(false);
103
+ chai_1.expect(util.isEdgeMarked(edge2)).is.equals(true);
104
+ util.updateStartPoint({ x: 30, y: 30 });
105
+ chai_1.expect(util.isEdgeMarked(edge)).is.equals(true);
106
+ chai_1.expect(util.isEdgeMarked(edge2)).is.equals(true);
107
+ util.updateStartPoint({ x: 50, y: 50 });
108
+ chai_1.expect(util.isEdgeMarked(edge)).is.equals(true);
109
+ chai_1.expect(util.isEdgeMarked(edge2)).is.equals(true);
110
+ util.updateCurrentPoint({ x: 25, y: 25 });
111
+ chai_1.expect(util.isEdgeMarked(edge)).is.equals(true);
112
+ chai_1.expect(util.isEdgeMarked(edge2)).is.equals(true);
113
+ });
114
+ it('mark entire edge', () => {
115
+ const util = initUtil({ entireElement: false, entireEdge: true });
116
+ chai_1.expect(util.isEdgeMarked(edge)).is.equals(false);
117
+ chai_1.expect(util.isEdgeMarked(edge2)).is.equals(false);
118
+ util.updateCurrentPoint({ x: 20, y: 20 });
119
+ chai_1.expect(util.isEdgeMarked(edge)).is.equals(false);
120
+ chai_1.expect(util.isEdgeMarked(edge2)).is.equals(false);
121
+ util.updateCurrentPoint({ x: 30, y: 30 });
122
+ chai_1.expect(util.isEdgeMarked(edge)).is.equals(false);
123
+ chai_1.expect(util.isEdgeMarked(edge2)).is.equals(false);
124
+ util.updateCurrentPoint({ x: 45, y: 50 });
125
+ chai_1.expect(util.isEdgeMarked(edge)).is.equals(true);
126
+ chai_1.expect(util.isEdgeMarked(edge2)).is.equals(false);
127
+ util.updateCurrentPoint({ x: 55, y: 50 });
128
+ chai_1.expect(util.isEdgeMarked(edge)).is.equals(true);
129
+ chai_1.expect(util.isEdgeMarked(edge2)).is.equals(true);
130
+ util.updateStartPoint({ x: 25, y: 25 });
131
+ chai_1.expect(util.isEdgeMarked(edge)).is.equals(false);
132
+ chai_1.expect(util.isEdgeMarked(edge2)).is.equals(false);
133
+ });
134
+ it('mark entire edge (reverse)', () => {
135
+ const util = initUtil({ entireElement: false, entireEdge: true });
136
+ chai_1.expect(util.isEdgeMarked(edge)).is.equals(false);
137
+ chai_1.expect(util.isEdgeMarked(edge2)).is.equals(false);
138
+ util.updateStartPoint({ x: 20, y: 20 });
139
+ chai_1.expect(util.isEdgeMarked(edge)).is.equals(false);
140
+ chai_1.expect(util.isEdgeMarked(edge2)).is.equals(false);
141
+ util.updateStartPoint({ x: 30, y: 30 });
142
+ chai_1.expect(util.isEdgeMarked(edge)).is.equals(false);
143
+ chai_1.expect(util.isEdgeMarked(edge2)).is.equals(false);
144
+ util.updateStartPoint({ x: 45, y: 50 });
145
+ chai_1.expect(util.isEdgeMarked(edge)).is.equals(true);
146
+ chai_1.expect(util.isEdgeMarked(edge2)).is.equals(false);
147
+ util.updateStartPoint({ x: 55, y: 50 });
148
+ chai_1.expect(util.isEdgeMarked(edge)).is.equals(true);
149
+ chai_1.expect(util.isEdgeMarked(edge2)).is.equals(true);
150
+ util.updateCurrentPoint({ x: 25, y: 25 });
151
+ chai_1.expect(util.isEdgeMarked(edge)).is.equals(false);
152
+ chai_1.expect(util.isEdgeMarked(edge2)).is.equals(false);
153
+ });
154
+ it('edge path should be marked', () => {
155
+ const path = 'M 599.968775008469,272.3972942960205 L 677.0904664855072,232';
156
+ const util = initUtil({ entireElement: false, entireEdge: true });
157
+ chai_1.expect(util.isEdgePathMarked(path)).is.equals(false);
158
+ util.updateCurrentPoint({ x: 600, y: 300 });
159
+ chai_1.expect(util.isEdgePathMarked(path)).is.equals(false);
160
+ util.updateCurrentPoint({ x: 700, y: 300 });
161
+ chai_1.expect(util.isEdgePathMarked(path)).is.equals(true);
162
+ });
163
+ });
164
+ });
165
+ //# sourceMappingURL=marquee-behavior.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marquee-behavior.spec.js","sourceRoot":"","sources":["../../../src/features/tools/marquee-behavior.spec.ts"],"names":[],"mappings":"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"}
@@ -13,14 +13,16 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- import { Action, Point } from '@eclipse-glsp/protocol';
17
- import { BoundsAware, KeyListener, SModelElement } from 'sprotty';
16
+ import { Action } from '@eclipse-glsp/protocol';
17
+ import { BoundsAware, KeyListener, SModelElement, SModelRoot } from 'sprotty';
18
18
  import { DOMHelper } from 'sprotty/lib/base/views/dom-helper';
19
19
  import { DragAwareMouseListener } from '../../base/drag-aware-mouse-listener';
20
- import { BaseGLSPTool } from '../tools/base-glsp-tool';
20
+ import { BaseGLSPTool } from './base-glsp-tool';
21
+ import { IMarqueeBehavior, MarqueeUtil } from './marquee-behavior';
21
22
  export declare class MarqueeMouseTool extends BaseGLSPTool {
22
23
  static ID: string;
23
24
  protected domHelper: DOMHelper;
25
+ protected marqueeBehavior: IMarqueeBehavior;
24
26
  protected marqueeMouseListener: MarqueeMouseListener;
25
27
  protected shiftKeyListener: ShiftKeyListener;
26
28
  get id(): string;
@@ -28,24 +30,17 @@ export declare class MarqueeMouseTool extends BaseGLSPTool {
28
30
  disable(): void;
29
31
  }
30
32
  export declare class MarqueeMouseListener extends DragAwareMouseListener {
31
- protected startPoint: Point;
32
- protected currentPoint: Point;
33
33
  protected domHelper: DOMHelper;
34
+ protected marqueeUtil: MarqueeUtil;
35
+ protected nodes: (SModelElement & BoundsAware)[];
36
+ protected edges: SVGGElement[];
34
37
  protected previouslySelected: string[];
35
38
  protected isActive: boolean;
36
- constructor(domHelper: DOMHelper);
39
+ constructor(domHelper: DOMHelper, root: SModelRoot, marqueeBehavior: IMarqueeBehavior | undefined);
37
40
  mouseDown(target: SModelElement, event: MouseEvent): Action[];
38
41
  mouseMove(target: SModelElement, event: MouseEvent): Action[];
39
42
  mouseUp(target: SModelElement, event: MouseEvent): Action[];
40
- getMarkedEdges(root: SModelElement): string[];
41
43
  isEdgeMarked(element: SVGElement): boolean;
42
- isLineMarked(point1: Point, point2: Point): boolean;
43
- linesIntersect(p1: Point, p2: Point, p3: Point, p4: Point): boolean;
44
- pointInRect(point: Point): boolean;
45
- isNodeMarked(element: SModelElement & BoundsAware): boolean;
46
- isElementBetweenXAxis(element: SModelElement & BoundsAware, marqueeLeft: number, marqueeRight: number): boolean;
47
- isElementBetweenYAxis(element: SModelElement & BoundsAware, marqueeTop: number, marqueeBottom: number): boolean;
48
- isBetween(x: number, lower: number, upper: number): boolean;
49
44
  }
50
45
  export declare class ShiftKeyListener extends KeyListener {
51
46
  keyUp(element: SModelElement, event: KeyboardEvent): Action[];
@@ -1 +1 @@
1
- {"version":3,"file":"marquee-mouse-tool.d.ts","sourceRoot":"","sources":["../../../src/features/tools/marquee-mouse-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAClF,OAAO,EAAE,MAAM,EAAE,KAAK,EAAgB,MAAM,wBAAwB,CAAC;AAErE,OAAO,EAAE,WAAW,EAAsD,WAAW,EAAS,aAAa,EAAgB,MAAM,SAAS,CAAC;AAC3I,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAI9E,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,qBACa,gBAAiB,SAAQ,YAAY;IAC9C,MAAM,CAAC,EAAE,SAA6B;IAEb,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC;IAExD,SAAS,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;IACrD,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAA0B;IAEtE,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,MAAM,IAAI,IAAI;IAOd,OAAO,IAAI,IAAI;CAKlB;AAED,qBACa,oBAAqB,SAAQ,sBAAsB;IAC5D,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC;IAE5B,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC;IAE9B,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC;IAE/B,SAAS,CAAC,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAEvC,SAAS,CAAC,QAAQ,UAAS;gBAEf,SAAS,EAAE,SAAS;IAKhC,SAAS,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,EAAE;IAe7D,SAAS,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,EAAE;IAuB7D,OAAO,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,EAAE;IAQ3D,cAAc,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,EAAE;IAe7C,YAAY,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO;IAqB1C,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,GAAG,OAAO;IAmBnD,cAAc,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,GAAG,OAAO;IAanE,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAYlC,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,WAAW,GAAG,OAAO;IAe3D,qBAAqB,CAAC,OAAO,EAAE,aAAa,GAAG,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO;IAY/G,qBAAqB,CAAC,OAAO,EAAE,aAAa,GAAG,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO;IAY/G,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;CAM9D;AAED,qBACa,gBAAiB,SAAQ,WAAW;IAC7C,KAAK,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,GAAG,MAAM,EAAE;CAMhE"}
1
+ {"version":3,"file":"marquee-mouse-tool.d.ts","sourceRoot":"","sources":["../../../src/features/tools/marquee-mouse-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAClF,OAAO,EAAE,MAAM,EAAgB,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EACH,WAAW,EAIX,WAAW,EAEX,aAAa,EACb,UAAU,EAGb,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAE9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAI9E,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEnE,qBACa,gBAAiB,SAAQ,YAAY;IAC9C,MAAM,CAAC,EAAE,SAA6B;IAEb,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC;IACP,SAAS,CAAC,eAAe,EAAE,gBAAgB,CAAC;IAE7F,SAAS,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;IACrD,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAA0B;IAEtE,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,MAAM,IAAI,IAAI;IAOd,OAAO,IAAI,IAAI;CAKlB;AAED,qBAAa,oBAAqB,SAAQ,sBAAsB;IAC5D,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC;IAC/B,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC;IACnC,SAAS,CAAC,KAAK,EAAE,CAAC,aAAa,GAAG,WAAW,CAAC,EAAE,CAAC;IACjD,SAAS,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC;IAC/B,SAAS,CAAC,kBAAkB,EAAE,MAAM,EAAE,CAAC;IACvC,SAAS,CAAC,QAAQ,UAAS;gBAEf,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,eAAe,EAAE,gBAAgB,GAAG,SAAS;IAqBjG,SAAS,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,EAAE;IAe7D,SAAS,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,EAAE;IAe7D,OAAO,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,EAAE;IAQ3D,YAAY,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO;CAS7C;AAED,qBACa,gBAAiB,SAAQ,WAAW;IAC7C,KAAK,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,GAAG,MAAM,EAAE;CAMhE"}