@itwin/core-markup 4.10.0-dev.9 → 5.0.0-dev.1

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.
package/CHANGELOG.md CHANGED
@@ -1,6 +1,31 @@
1
1
  # Change Log - @itwin/core-markup
2
2
 
3
- This log was last generated on Wed, 25 Sep 2024 20:12:30 GMT and should not be manually modified.
3
+ This log was last generated on Tue, 05 Nov 2024 15:24:11 GMT and should not be manually modified.
4
+
5
+ ## 4.9.6
6
+ Tue, 05 Nov 2024 15:22:45 GMT
7
+
8
+ _Version update only_
9
+
10
+ ## 4.9.5
11
+ Tue, 22 Oct 2024 20:01:40 GMT
12
+
13
+ _Version update only_
14
+
15
+ ## 4.9.4
16
+ Wed, 09 Oct 2024 20:22:04 GMT
17
+
18
+ _Version update only_
19
+
20
+ ## 4.9.3
21
+ Thu, 03 Oct 2024 19:15:45 GMT
22
+
23
+ _Version update only_
24
+
25
+ ## 4.9.2
26
+ Wed, 02 Oct 2024 15:14:43 GMT
27
+
28
+ _Version update only_
4
29
 
5
30
  ## 4.9.1
6
31
  Wed, 25 Sep 2024 20:10:58 GMT
@@ -1,7 +1,6 @@
1
1
  /** @packageDocumentation
2
2
  * @module MarkupApp
3
3
  */
4
- /// <reference path="SvgJsExt.d.ts" />
5
4
  import { Point3d, XAndY } from "@itwin/core-geometry";
6
5
  import { ScreenViewport } from "@itwin/core-frontend";
7
6
  import { G, Marker, Element as MarkupElement, Matrix, Svg } from "@svgdotjs/svg.js";
@@ -1 +1 @@
1
- {"version":3,"file":"Markup.d.ts","sourceRoot":"","sources":["../../src/Markup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Markup.d.ts","sourceRoot":"","sources":["../../src/Markup.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  /** @packageDocumentation
2
2
  * @module MarkupTools
3
3
  */
4
- /// <reference path="SvgJsExt.d.ts" />
5
4
  import { XAndY } from "@itwin/core-geometry";
6
5
  import { BeTouchEvent, EventHandled, PrimitiveTool, Viewport } from "@itwin/core-frontend";
7
6
  import { G, Element as MarkupElement, Text as MarkupText } from "@svgdotjs/svg.js";
@@ -1 +1 @@
1
- {"version":3,"file":"MarkupTool.d.ts","sourceRoot":"","sources":["../../src/MarkupTool.ts"],"names":[],"mappings":"AAIA;;GAEG;;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAY,YAAY,EAA2B,YAAY,EAAa,aAAa,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACzI,OAAO,EAAE,CAAC,EAAqB,OAAO,IAAI,aAAa,EAAE,IAAI,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACtG,OAAO,EAAE,MAAM,EAAa,MAAM,UAAU,CAAC;AAE7C;;GAEG;AACH,8BAAsB,UAAW,SAAQ,aAAa;IAC7C,MAAM,EAAG,MAAM,CAAC;IACvB,OAAc,OAAO,SAA+B;IACpC,sBAAsB,IAAI,OAAO;IACjC,oBAAoB,CAAC,EAAE,EAAE,QAAQ,GAAG,SAAS,EAAE,oBAAoB,EAAE,OAAO,GAAG,OAAO;IAChF,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAQ7B,aAAa;IAIb,WAAW;IACpB,aAAa;IAE1B,SAAS,CAAC,UAAU,IAAI,IAAI;IAC5B,SAAS,CAAC,2BAA2B,IAAI,IAAI;IAI7C,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,MAAM;IAElB,gBAAgB,CAAC,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAMhF,WAAW,CAAC,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAC5C,eAAe,CAAC,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAChD,aAAa,CAAC,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAE9C,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC;IAOpC,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC;IAO1D;;;OAGG;IACI,WAAW,CAAC,EAAE,EAAE,KAAK,GAAG,aAAa,GAAG,SAAS;IASxD,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,OAAO,GAAG,IAAI;IAM7E,SAAS,CAAC,mBAAmB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAE3D,gBAAgB;IACT,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU;CAU9C"}
1
+ {"version":3,"file":"MarkupTool.d.ts","sourceRoot":"","sources":["../../src/MarkupTool.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAY,YAAY,EAA2B,YAAY,EAAa,aAAa,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACzI,OAAO,EAAE,CAAC,EAAqB,OAAO,IAAI,aAAa,EAAE,IAAI,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACtG,OAAO,EAAE,MAAM,EAAa,MAAM,UAAU,CAAC;AAE7C;;GAEG;AACH,8BAAsB,UAAW,SAAQ,aAAa;IAC7C,MAAM,EAAG,MAAM,CAAC;IACvB,OAAc,OAAO,SAA+B;IACpC,sBAAsB,IAAI,OAAO;IACjC,oBAAoB,CAAC,EAAE,EAAE,QAAQ,GAAG,SAAS,EAAE,oBAAoB,EAAE,OAAO,GAAG,OAAO;IAChF,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAQ7B,aAAa;IAIb,WAAW;IACpB,aAAa;IAE1B,SAAS,CAAC,UAAU,IAAI,IAAI;IAC5B,SAAS,CAAC,2BAA2B,IAAI,IAAI;IAI7C,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,MAAM;IAElB,gBAAgB,CAAC,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAMhF,WAAW,CAAC,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAC5C,eAAe,CAAC,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAChD,aAAa,CAAC,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAE9C,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC;IAOpC,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC;IAO1D;;;OAGG;IACI,WAAW,CAAC,EAAE,EAAE,KAAK,GAAG,aAAa,GAAG,SAAS;IASxD,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,OAAO,GAAG,IAAI;IAM7E,SAAS,CAAC,mBAAmB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAE3D,gBAAgB;IACT,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU;CAU9C"}
@@ -1,7 +1,6 @@
1
1
  /** @packageDocumentation
2
2
  * @module MarkupTools
3
3
  */
4
- /// <reference path="SvgJsExt.d.ts" />
5
4
  import { Point3d } from "@itwin/core-geometry";
6
5
  import { BeButtonEvent, EventHandled } from "@itwin/core-frontend";
7
6
  import { G, Marker, Element as MarkupElement } from "@svgdotjs/svg.js";
@@ -1 +1 @@
1
- {"version":3,"file":"RedlineTool.d.ts","sourceRoot":"","sources":["../../src/RedlineTool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RedlineTool.d.ts","sourceRoot":"","sources":["../../src/RedlineTool.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,EAAE,OAAO,EAAY,MAAM,sBAAsB,CAAC;AACzD,OAAO,EACL,aAAa,EAAsC,YAAY,EAEhE,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEvE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C;;GAEG;AACH,8BAAsB,WAAY,SAAQ,UAAU;IAClD,SAAS,CAAC,UAAU,SAAK;IACzB,SAAS,CAAC,gBAAgB,SAAK;IAC/B,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,CAAM;IAE3C,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,aAAa;IAMnC,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,aAAa;cACpB,2BAA2B,IAAI,IAAI;IAMtD,SAAS,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,WAAW,EAAE,OAAO,GAAG,IAAI;IACrF,SAAS,CAAC,mBAAmB,CAAC,WAAW,EAAE,OAAO,GAAG,IAAI;IAEnC,aAAa;IACb,SAAS;IAET,cAAc;IAKd,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IAItC,aAAa,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAO/C,gBAAgB,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAe1D,eAAe,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAKhF,SAAS,CAAC,qBAAqB,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,GAAE,OAAe,GAAG,IAAI;CAoB1F;AAED;;GAEG;AACH,qBAAa,QAAS,SAAQ,WAAW;IACvC,OAAuB,MAAM,SAAiB;IAC9C,OAAuB,QAAQ,SAAe;cAE3B,UAAU,IAAI,IAAI;cAElB,YAAY,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,GAAG,IAAI;CAU5F;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,WAAW;IAIhC,SAAS,CAAC,aAAa,CAAC,EAAE,MAAM;IAH5C,OAAuB,MAAM,SAAsB;IACnD,OAAuB,QAAQ,SAAoB;gBAE7B,aAAa,CAAC,EAAE,MAAM,YAAA;cAEzB,UAAU,IAAI,IAAI;cAElB,YAAY,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,GAAG,IAAI;CAkB5F;AAED;;GAEG;AACH,qBAAa,WAAY,SAAQ,WAAW;IAI9B,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM;IAHxC,OAAuB,MAAM,SAAoB;IACjD,OAAuB,QAAQ,SAAkB;gBAE3B,SAAS,CAAC,EAAE,MAAM,YAAA;cAErB,UAAU,IAAI,IAAI;IAErC,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO;cA4BhG,YAAY,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,GAAG,IAAI;CAa5F;AAED;;GAEG;AACH,qBAAa,SAAU,SAAQ,WAAW;IACxC,OAAuB,MAAM,SAAkB;IAC/C,OAAuB,QAAQ,SAAgB;IAC/C,SAAS,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC;cAEd,UAAU,IAAI,IAAI;cAElB,YAAY,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,GAAG,IAAI;cAwBxE,mBAAmB,CAAC,UAAU,EAAE,OAAO,GAAG,IAAI;CAIlE;AAED;;GAEG;AACH,qBAAa,UAAW,SAAQ,WAAW;IACzC,OAAuB,MAAM,SAAmB;IAChD,OAAuB,QAAQ,SAAiB;cAE7B,UAAU,IAAI,IAAI;cAElB,YAAY,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,GAAG,IAAI;CAa5F;AAED;;GAEG;AACH,qBAAa,WAAY,SAAQ,WAAW;IAC1C,OAAuB,MAAM,SAAoB;IACjD,OAAuB,QAAQ,SAAkB;cAE9B,UAAU,IAAI,IAAI;cAElB,YAAY,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,GAAG,IAAI;CAgB5F;AAED;;GAEG;AACH,qBAAa,SAAU,SAAQ,WAAW;IAO5B,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM;IANxC,OAAuB,MAAM,SAAkB;IAC/C,OAAuB,QAAQ,SAAkB;IAEjD;;OAEG;gBACmB,SAAS,CAAC,EAAE,MAAM,YAAA;cAErB,UAAU,IAAI,IAAI;IAErC,SAAS,CAAC,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;cAKpC,YAAY,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,GAAG,IAAI;CAoB5F;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,SAAS;IACzC,OAAuB,MAAM,SAAqB;IAClD,OAAuB,QAAQ,SAAmB;IAClD,SAAS,CAAC,QAAQ,CAAC,gBAAgB,UAAiB;cAEjC,UAAU,IAAI,IAAI;cAClB,2BAA2B,IAAI,IAAI;IAMtD,SAAS,CAAC,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;cAOjD,YAAY,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,GAAG,IAAI;IAoCrE,gBAAgB,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;CASjF;AAED;;GAEG;AACH,qBAAa,UAAW,SAAQ,WAAW;IACzC,OAAuB,MAAM,SAAmB;IAChD,OAAuB,QAAQ,SAAe;IAC9C,SAAS,CAAC,eAAe,SAAO;cAEb,UAAU,IAAI,IAAI;cAElB,YAAY,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,GAAG,IAAI;IAsBrE,aAAa,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;CAOtE;AAED;;GAEG;AACH,qBAAa,UAAW,SAAQ,WAAW;IAK7B,SAAS,CAAC,WAAW,CAAC,EAAE,MAAM;IAAE,SAAS,CAAC,kBAAkB,CAAC,EAAE,OAAO;IAJlF,OAAuB,MAAM,SAAmB;IAChD,OAAuB,QAAQ,SAAiB;IAChD,SAAS,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC;gBAEZ,WAAW,CAAC,EAAE,MAAM,YAAA,EAAY,kBAAkB,CAAC,EAAE,OAAO,YAAA;IAE5D,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;cAMhC,UAAU,IAAI,IAAI;cAIlB,YAAY,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,GAAG,IAAI;IA6CrE,cAAc,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IASxD,eAAe,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;cAK7D,mBAAmB,CAAC,UAAU,EAAE,OAAO,GAAG,IAAI;CAIlE"}
@@ -1,7 +1,6 @@
1
1
  /** @packageDocumentation
2
2
  * @module MarkupTools
3
3
  */
4
- /// <reference path="SvgJsExt.d.ts" />
5
4
  import { BeEvent } from "@itwin/core-bentley";
6
5
  import { Point2d, Transform, XAndY } from "@itwin/core-geometry";
7
6
  import { BeButtonEvent, BeModifierKeys, BeTouchEvent, EventHandled } from "@itwin/core-frontend";
@@ -1 +1 @@
1
- {"version":3,"file":"SelectTool.d.ts","sourceRoot":"","sources":["../../src/SelectTool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SelectTool.d.ts","sourceRoot":"","sources":["../../src/SelectTool.ts"],"names":[],"mappings":"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"}
@@ -207,7 +207,7 @@ class MoveHandle extends ModifyHandle {
207
207
  }
208
208
  async onClick(_ev) {
209
209
  const el = this.handles.el;
210
- // eslint-disable-next-line deprecation/deprecation
210
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
211
211
  if (el instanceof svg_js_1.Text || (el instanceof svg_js_1.G && el.node.className.baseVal === Markup_1.MarkupApp.boxedTextClass)) // if they click on the move handle of a text element, start the text editor
212
212
  await new TextEdit_1.EditTextTool(el).run();
213
213
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SelectTool.js","sourceRoot":"","sources":["../../src/SelectTool.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAAsD;AACtD,wDAAoF;AACpF,wDAG8B;AAC9B,6CAA0I;AAC1I,qCAAqC;AACrC,6CAA0C;AAC1C,yCAA0C;AAG1C,0DAA0D;AAE1D;;;GAGG;AACH,MAAsB,YAAY;IAGhC,YAAmB,OAAgB;QAAhB,YAAO,GAAP,OAAO,CAAS;IAAI,CAAC;IAGjC,KAAK,CAAC,OAAO,CAAC,GAAkB,IAAmB,CAAC;IAI3D,mEAAmE;IAC5D,SAAS,CAAC,GAAkB,EAAE,QAAQ,GAAG,KAAK;QACnD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,gDAAgD;QACrG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;IACM,WAAW,CAAC,QAAiB;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,+BAA+B;QAC7E,IAAI,QAAQ,EAAE,CAAC;YACb,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC,yBAAyB;YACjD,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,+CAA+C;QACrE,CAAC;IACH,CAAC;IACM,eAAe,CAAC,MAAqB;QAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE;YAC3C,MAAM,EAAE,GAAG,KAAmB,CAAC;YAC/B,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,IAAI,SAAS,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM;gBACtD,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;QAC/B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,GAAG,EAAE;YACvC,IAAI,SAAS,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM;gBACnC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC;IACM,eAAe,CAAC,OAAsB,EAAE,OAAgB;QAC7D,IAAI,2BAAW,CAAC,KAAK,KAAK,yBAAS,CAAC,SAAS,CAAC,iBAAiB,CAAC,WAAW;YACzE,OAAO,OAAO,CAAC;QACjB,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAClE,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjB,OAAO,CAAC,CAAC;IACX,CAAC;CACF;AA/CD,oCA+CC;AAED;;GAEG;AACH,MAAM,aAAc,SAAQ,YAAY;IAOtC,YAAY,OAAgB,EAAE,EAAW,EAAE,MAAc;QACvD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,IAAI,uBAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,kBAAS,CAAC,KAAK,CAAC,OAAO,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,kBAAS,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,MAAM,SAAS,CAAC,CAAC,CAAC,uCAAuC;QACtL,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC3D,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IACM,WAAW;QAChB,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,4BAA4B;QAC1E,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;IAEe,SAAS,CAAC,GAAkB;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,kBAAS,CAAC,aAAa,EAAE,CAAC,CAAC;QAC7E,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,qDAAqD;QACxF,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;QACjF,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IAED,6GAA6G;IACtG,MAAM,CAAC,EAAiB;QAC7B,MAAM,IAAI,GAAG,kBAAS,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,wCAAwC;QAC5F,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,mDAAmD;QACjI,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAG,CAAC,CAAC,6CAA6C;QAC9G,IAAI,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,oCAAoC;QAC7F,IAAI,OAAO,KAAK,SAAS;YACvB,OAAO,GAAG,wBAAQ,CAAC,UAAU,EAAE,CAAC;QAClC,wDAAwD;QACxD,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;QAC3F,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QACnC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YACxB,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAM,YAAY;YAClC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC;QAClB,CAAC;aAAM,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAM,aAAa;QACrC,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YACxB,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAM,WAAW;YACjC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC;QAClB,CAAC;aAAM,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAM,cAAc;QACtC,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAClI,MAAM,OAAO,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,GAAG,OAAO,IAAI,CAAC,GAAG,OAAO,EAAI,kCAAkC;YAClE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IACnD,CAAC;CACF;AAED;;GAEG;AACH,MAAM,YAAa,SAAQ,YAAY;IAKrC,YAA4B,OAAgB;QAC1C,KAAK,CAAC,OAAO,CAAC,CAAC;QADW,YAAO,GAAP,OAAO,CAAS;QAE1C,MAAM,KAAK,GAAG,kBAAS,CAAC,KAAK,CAAC,OAAO,CAAC;QAEtC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,kBAAS,CAAC,eAAe,CAAC,CAAC;QACvG,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,kBAAS,CAAC,iBAAiB,CAAC,CAAC;QAChH,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC3D,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IACD,IAAW,QAAQ,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACxE,IAAW,QAAQ,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAChE,WAAW;QAChB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,SAAS,EAAG,CAAC;QACxD,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,kBAAS,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;QACrF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QAClD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC;IACM,MAAM,CAAC,EAAiB;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,kBAAS,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;QACzE,MAAM,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC;IACvD,CAAC;CACF;AAED;;GAEG;AACH,MAAM,YAAa,SAAQ,YAAY;IAKrC,YAA4B,OAAgB,EAAE,KAAa;QACzD,KAAK,CAAC,OAAO,CAAC,CAAC;QADW,YAAO,GAAP,OAAO,CAAS;QAE1C,MAAM,KAAK,GAAG,kBAAS,CAAC,KAAK,CAAC,OAAO,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,kBAAS,CAAC,iBAAiB,CAAC,CAAC;QACzG,IAAI,CAAC,EAAE,GAAG,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC1B,IAAI,CAAC,EAAE,GAAG,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC3D,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IACM,WAAW;QAChB,IAAI,KAAK,GAAG,IAAI,cAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACpF,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,kBAAS,CAAC,aAAa,EAAE,CAAC,CAAC;QACjF,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IACM,MAAM,CAAC,EAAiB;QAC7B,IAAI,KAAK,GAAG,IAAI,cAAK,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACtD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,kBAAS,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAC9F,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAChC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1B,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAW,SAAQ,YAAY;IAInC,YAA4B,OAAgB,EAAE,QAAiB;QAC7D,KAAK,CAAC,OAAO,CAAC,CAAC;QADW,YAAO,GAAP,OAAO,CAAS;QAE1C,MAAM,KAAK,GAAG,kBAAS,CAAC,KAAK,CAAC,OAAO,CAAC;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;QAC5C,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtB,KAAK,CAAC,kBAAkB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAE3D,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAChE,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YAElF,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACpC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzB,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAChB,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACjB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC3B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACtB,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAS,CAAC,eAAe,CAAC,CAAC;QAChD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IACe,KAAK,CAAC,OAAO,CAAC,GAAkB;QAC9C,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,mDAAmD;QACnD,IAAI,EAAE,YAAY,aAAU,IAAI,CAAC,EAAE,YAAY,UAAC,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,KAAK,kBAAS,CAAC,cAAc,CAAC,EAAE,4EAA4E;YACvL,MAAM,IAAI,uBAAY,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;IACrC,CAAC;IACD,sEAAsE;IAC/D,WAAW;QAChB,IAAI,SAAS,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChC,MAAM,GAAG,GAAG,CAAC,IAAI,uBAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,uBAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,uBAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,uBAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACzF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAY,CAAC,CAAC,CAAC;QAC1F,CAAC;IACH,CAAC;IACe,SAAS,CAAC,EAAiB;QACzC,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,kBAAS,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,+CAA+C;IACxG,CAAC;IACM,MAAM,CAAC,EAAiB;QAC7B,MAAM,IAAI,GAAG,kBAAS,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;QACnD,IAAA,qBAAM,EAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB;IAChE,CAAC;CACF;AAED;;GAEG;AACH,MAAa,OAAO;IAQlB,YAAmB,EAAkB,EAAS,EAAiB;QAA5C,OAAE,GAAF,EAAE,CAAgB;QAAS,OAAE,GAAF,EAAE,CAAe;QAP/C,YAAO,GAAmB,EAAE,CAAC;QAEtC,aAAQ,GAAG,KAAK,CAAC;QAMtB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;QAE5B,IAAI,EAAE,YAAY,aAAI,EAAE,CAAC;YACvB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;YAC/C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7C,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,sBAAsB;YACnC,OAAO;QACT,CAAC;QAED,0BAA0B;QAC1B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QAC9C,qBAAqB;QACrB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QAE1C,mCAAmC;QACnC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QACjF,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QAC7D,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,MAAM,KAAK,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,SAAS,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC;QACrD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,qDAAqD;QAC5F,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAY,EAAE,OAAO,CAAC,CAAC,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9H,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,sBAAsB;IACrC,CAAC;IAEM,QAAQ,CAAC,CAAQ;QACtB,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC9B,CAAC;IAEM,OAAO,CAAC,CAAQ,EAAE,MAAgB,IAAa,OAAO,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACnG,OAAO,CAAC,CAAQ,EAAE,MAAgB,IAAa,OAAO,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACnG,YAAY,CAAC,GAAc;QAChC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAC1C,OAAO,GAAG,CAAC;IACb,CAAC;IAEM,IAAI;QACT,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACnB,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;QACrB,MAAM,GAAG,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,kBAAS,CAAC,aAAa,EAAE,CAAC,CAAC;QACjE,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,iBAAiB,EAAE,CAAC;QACpD,IAAI,CAAC,UAAU,GAAG,IAAI,eAAM,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,iBAAiB,EAAE,CAAC;QAC7G,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAC/C,CAAC;IAEM,MAAM;QACX,IAAI,IAAI,CAAC,QAAQ;YACf,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IACtB,CAAC;IAEM,SAAS,CAAC,EAAiB;QAChC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,kBAAS,CAAC,MAAO,CAAC,WAAW,EAAE,CAAC;YAChC,yBAAS,CAAC,SAAS,CAAC,SAAS,CAAC,yBAAS,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,4BAAY,CAAC,GAAG,CAAC;IAC1B,CAAC;IACM,IAAI,CAAC,EAAiB;QAC3B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,MAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACxB,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,CAAC;IACH,CAAC;IACD,uDAAuD;IAChD,OAAO,CAAC,IAAiB;QAC9B,IAAI,CAAC,gBAAgB,CAAC,kBAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE;YAC5D,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;YACnB,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAW,CAAC,CAAC,wBAAwB;YACzD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;gBACnB,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACnB,CAAC;iBAAM,CAAC;gBACN,EAAE,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC,yBAAyB;gBACpD,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;YAChC,CAAC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QACxB,kBAAS,CAAC,MAAO,CAAC,UAAU,EAAE,CAAC;QAC/B,OAAO,4BAAY,CAAC,GAAG,CAAC;IAC1B,CAAC;IAED,+CAA+C;IACxC,UAAU;QACf,IAAI,CAAC,IAAI,CAAC,QAAQ;YAChB,OAAO;QACT,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACnB,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAW,CAAC;QAChC,IAAI,QAAQ,EAAE,CAAC;YACb,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACrB,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAC;QACrB,CAAC;QACD,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QACxB,kBAAS,CAAC,MAAO,CAAC,UAAU,EAAE,CAAC;IACjC,CAAC;CACF;AA/GD,0BA+GC;AAED;;GAEG;AACH,MAAa,cAAc;IAOzB,IAAW,IAAI,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAChD,IAAW,OAAO,KAAK,OAAO,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;IACzC,GAAG,CAAC,EAAiB,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACxD,QAAQ;QACb,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,IAAI,CAAC,OAAO;YACd,OAAO,CAAC,yCAAyC;QACnD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IACM,OAAO,CAAC,EAAkB;QAC/B,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,EAAE;YACJ,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IACD,YAA0B,GAAM;QAAN,QAAG,GAAH,GAAG,CAAG;QAtBhB,aAAQ,GAAG,IAAI,GAAG,EAAiB,CAAC;QAGpD,2EAA2E;QAC3D,cAAS,GAAG,IAAI,sBAAO,EAAsC,CAAC;IAkB1C,CAAC;IAC9B,YAAY;QACjB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACtB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QAC3B,CAAC;IACH,CAAC;IACM,WAAW;QAChB,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC;YAC1B,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;QACxE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IACD,kCAAkC;IAC3B,GAAG,CAAC,EAAiB;QAC1B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACtB,EAAE,CAAC,MAAM,EAAE,CAAC;QACZ,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IACD;;OAEG;IACI,IAAI,CAAC,EAAiB;QAC3B,EAAE,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACvE,CAAC;IAED,sEAAsE;IAC/D,OAAO,CAAC,KAAoB,EAAE,KAAoB;QACvD,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;YAClB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAEM,SAAS,CAAC,IAAiB;QAChC,IAAI,CAAC,gBAAgB,CAAC,kBAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YAC1F,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAClB,EAAE,CAAC,MAAM,EAAE,CAAC;QACd,CAAC,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAEM,QAAQ,CAAC,IAAiB;QAC/B,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC;YACf,OAAO;QACT,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;QAClD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAe,CAAC;QAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;QAE7B,MAAM,OAAO,GAAoB,EAAE,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAChD,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,+BAA+B;QAElG,IAAI,CAAC,gBAAgB,CAAC,kBAAS,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE;YAC3D,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;gBACrB,MAAM,SAAS,GAAG,EAAE,CAAC,MAAM,EAAmB,CAAC;gBAC/C,MAAM,MAAM,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;gBAC7B,EAAE,CAAC,QAAQ,EAAE,CAAC;gBACd,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;YAC1D,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IAEM,UAAU,CAAC,IAAiB;QACjC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAiB,CAAC;QACxC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YAC3B,IAAI,EAAE,YAAY,UAAC;gBACjB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,MAAM,CAAC,IAAI;YACnB,OAAO;QAET,IAAI,CAAC,gBAAgB,CAAC,kBAAS,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE;YAC7D,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBACnB,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACb,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACxB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACjB,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;oBACzB,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;oBAC9B,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;oBAChC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;oBAC3B,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;gBACxC,CAAC,EAAE,KAAK,CAAC,CAAC;gBAEV,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,oEAAoE;gBACrF,CAAC,CAAC,MAAM,EAAE,CAAC;YACb,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAED,2EAA2E;IACpE,UAAU,CAAC,OAAe,EAAE,IAAiB,EAAE,EAA+B;QACnF,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YAChE,MAAM,SAAS,GAAG,EAAE,CAAC,MAAM,EAAmB,CAAC;YAC/C,MAAM,MAAM,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;YAC7B,EAAE,CAAC,EAAE,CAAC,CAAC;YACP,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;CACF;AA9HD,wCA8HC;AAED;;GAEG;AACH,MAAa,UAAW,SAAQ,uBAAU;IAA1C;;QAImB,cAAS,GAAoB,EAAE,CAAC;QAEzC,iBAAY,GAAG,KAAK,CAAC;IAoT/B,CAAC;IAlTC,IAAW,cAAc,KAAgC,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IACvF,IAAW,cAAc,CAAC,EAA6B;QACrD,IAAI,EAAE,KAAK,IAAI,CAAC,eAAe;YAC7B,OAAO;QAET,IAAI,SAAS,KAAK,IAAI,CAAC,eAAe;YACpC,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;QAEjC,IAAI,SAAS,KAAK,EAAE;YAClB,EAAE,CAAC,KAAK,EAAE,CAAC;QAEb,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;IAC5B,CAAC;IACS,eAAe;QACvB,IAAI,SAAS,KAAK,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC;YACtF,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;IACpC,CAAC;IACO,UAAU;QAChB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACzB,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;QAChC,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IACO,WAAW;QACjB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAClC,CAAC;IACe,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACzC,KAAK,CAAC,aAAa;QACjC,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,OAAO,KAAK,CAAC,aAAa,EAAE,CAAC;IAC/B,CAAC;IAEe,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAEzC,UAAU;QAC3B,MAAM,eAAe,GAAG,8BAAc,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,yBAAS,CAAC,YAAY,CAAC,kBAAkB,CAAC,GAAG,uBAAU,CAAC,OAAO,+BAA+B,CAAC,CAAC,CAAC;QACzK,MAAM,iBAAiB,GAAgC,EAAE,CAAC;QAC1D,MAAM,iBAAiB,GAAgC,EAAE,CAAC;QAE1D,MAAM,SAAS,GAAG,yBAAS,CAAC,YAAY,CAAC,kBAAkB,CAAC,GAAG,uBAAU,CAAC,OAAO,6BAA6B,CAAC,CAAC;QAChH,iBAAiB,CAAC,IAAI,CAAC,8BAAc,CAAC,iBAAiB,CAAC,mCAAmB,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,yCAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7I,iBAAiB,CAAC,IAAI,CAAC,8BAAc,CAAC,iBAAiB,CAAC,mCAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,yCAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAE3I,iBAAiB,CAAC,IAAI,CAAC,8BAAc,CAAC,iBAAiB,CAAC,mCAAmB,CAAC,YAAY,EAAE,yBAAS,CAAC,SAAS,CAAC,8BAA8B,CAAC,EAAE,KAAK,EAAE,yCAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QACxL,iBAAiB,CAAC,IAAI,CAAC,8BAAc,CAAC,iBAAiB,CAAC,mCAAmB,CAAC,aAAa,EAAE,yBAAS,CAAC,SAAS,CAAC,8BAA8B,CAAC,EAAE,KAAK,EAAE,yCAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAEzL,iBAAiB,CAAC,IAAI,CAAC,8BAAc,CAAC,4BAA4B,CAAC,8BAAc,CAAC,QAAQ,EAAE,mCAAmB,CAAC,aAAa,EAAE,yBAAS,CAAC,SAAS,CAAC,oCAAoC,CAAC,EAAE,KAAK,EAAE,yCAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QACnO,iBAAiB,CAAC,IAAI,CAAC,8BAAc,CAAC,4BAA4B,CAAC,8BAAc,CAAC,OAAO,EAAE,mCAAmB,CAAC,SAAS,EAAE,yBAAS,CAAC,SAAS,CAAC,mCAAmC,CAAC,EAAE,KAAK,EAAE,yCAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAE7N,iBAAiB,CAAC,IAAI,CAAC,8BAAc,CAAC,iBAAiB,CAAC,mCAAmB,CAAC,WAAW,EAAE,yBAAS,CAAC,SAAS,CAAC,kCAAkC,CAAC,EAAE,KAAK,EAAE,yCAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAE3L,MAAM,QAAQ,GAA4B,EAAE,CAAC;QAC7C,QAAQ,CAAC,IAAI,CAAC,8BAAc,CAAC,aAAa,CAAC,iBAAiB,EAAE,8BAAc,CAAC,WAAW,CAAC,CAAC,CAAC;QAC3F,QAAQ,CAAC,IAAI,CAAC,8BAAc,CAAC,aAAa,CAAC,iBAAiB,EAAE,8BAAc,CAAC,WAAW,CAAC,CAAC,CAAC;QAE3F,MAAM,YAAY,GAAG,8BAAc,CAAC,kBAAkB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;QAClF,yBAAS,CAAC,aAAa,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACK,UAAU;QAChB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,qCAAqC;QAClF,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IACe,KAAK,CAAC,eAAe,CAAC,GAAkB;QACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;QACtC,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QACjC,IAAI,OAAO,IAAI,OAAO,CAAC,QAAQ;YAC7B,OAAO,CAAC,UAAU,EAAE,CAAC;QAEvB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,QAAQ,CAAC,WAAW,EAAE,CAAC;QACvB,OAAO,4BAAY,CAAC,GAAG,CAAC;IAC1B,CAAC;IAED,wEAAwE;IACxD,KAAK,CAAC,cAAc,CAAC,EAAiB;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACjC,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QACjC,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,OAAO,CAAC,QAAQ;gBAClB,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,sBAAsB;gBAC1C,IAAI,EAAE,CAAC,YAAY;oBACjB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;;oBAE1B,MAAM,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACnC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;gBAC3B,OAAO,4BAAY,CAAC,GAAG,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,MAAM,EAAE,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;QAChE,IAAI,EAAE,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzB,OAAO,4BAAY,CAAC,GAAG,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACtB,CAAC;QAED,IAAI,EAAE,KAAK,SAAS;YAClB,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnB,OAAO,4BAAY,CAAC,GAAG,CAAC;IAC1B,CAAC;IAEe,KAAK,CAAC,UAAU,CAAC,EAAgB;QAC/C,qHAAqH;QACrH,IAAI,EAAE,CAAC,WAAW,IAAI,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACzD,MAAM,EAAE,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;YAChE,IAAI,EAAE,EAAE,CAAC;gBACP,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;gBACtC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;oBACpB,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACnB,OAAO,4BAAY,CAAC,GAAG,CAAC;YAC1B,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;IAES,aAAa;QACrB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,WAAY,CAAC,KAAK,EAAE,CAAC;IACnC,CAAC;IAES,cAAc,CAAC,EAAiB;QACxC,IAAI,CAAC,EAAE,CAAC,YAAY;YAClB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAClC,IAAI,CAAC,SAAS,GAAG,kBAAS,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;QACvD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAES,SAAS,CAAC,EAAiB,EAAE,UAAmB;QACxD,IAAI,CAAC,IAAI,CAAC,YAAY;YACpB,OAAO,KAAK,CAAC;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;QAC7B,MAAM,GAAG,GAAG,kBAAS,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;QAClD,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,KAAK,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC;YACzB,OAAO,IAAI,CAAC;QACd,MAAM,WAAW,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACtC,MAAM,WAAW,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,4CAA4C;QAC9G,MAAM,MAAM,GAAG,uBAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,sCAAsC;QAC/H,IAAI,CAAC,MAAM,CAAC,WAAY,CAAC,KAAK,EAAE,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,WAAY,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC;QACrL,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,WAAY,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,EAAE,kBAAkB,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1N,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAY,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5E,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC1D,IAAI,CAAC,MAAM,CAAC,SAAU,CAAC,kBAAkB,CAAC,CAAC,KAAK,EAAE,EAAE;YAClD,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACrD,MAAM,MAAM,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,IAAI,SAAS,CAAC,GAAG,IAAI,UAAU,CAAC,GAAG,IAAI,SAAS,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,IAAI,SAAS,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;YACtK,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,UAAU,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,IAAI,SAAS,CAAC,MAAM,GAAG,UAAU,CAAC,GAAG,IAAI,SAAS,CAAC,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;YAC9K,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,IAAI,WAAW,CAAC,CAAC;YAClD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;oBACtB,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,kBAAS,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;oBAC9F,IAAI,MAAM;wBACR,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,kBAAS,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC;gBAChF,CAAC;YACH,CAAC;iBAAM,IAAI,MAAM,EAAE,CAAC;gBAClB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAClC,CAAC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,UAAU;YACb,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,iEAAiE;IACjD,KAAK,CAAC,gBAAgB,CAAC,EAAiB;QACtD,IAAI,wBAAQ,CAAC,IAAI,KAAK,EAAE,CAAC,MAAM;YAC7B,OAAO,4BAAY,CAAC,EAAE,CAAC;QAEzB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACjC,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QACjC,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YAC9B,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC,yDAAyD;YAC1F,OAAO,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC/B,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;QACrE,IAAI,SAAS,KAAK,OAAO;YACvB,OAAO,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,4BAAY,CAAC,GAAG,CAAC,CAAC,CAAC,4BAAY,CAAC,EAAE,CAAC;QAEtE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;YACxB,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,sGAAsG;QAEnI,QAAQ,CAAC,YAAY,EAAE,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,kBAAS,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAE,wEAAwE;QACjI,IAAI,CAAC,UAAU,EAAE,CAAC;QAElB,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YAC/B,MAAM,MAAM,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,+BAA+B;YAChE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,yCAAyC;YAC3D,MAAM,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC,wEAAwE;YAChG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,sBAAsB;QACrD,CAAC,CAAC,CAAC;QACH,OAAO,4BAAY,CAAC,GAAG,CAAC;IAC1B,CAAC;IAED,iEAAiE;IACjD,KAAK,CAAC,aAAa,CAAC,EAAiB;QACnD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;QACxC,IAAI,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YAChC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC,6DAA6D;YAC5F,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB;QAC7C,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC;gBAC1B,OAAO;YACT,IAAI,2BAAW,CAAC,KAAK,KAAK,EAAE,CAAC,WAAW;gBACtC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAE,iEAAiE;YAC1H,OAAO;QACT,CAAC;QAED,yEAAyE;QACzE,MAAM,IAAI,GAAG,kBAAS,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,2CAA2C;IACpE,CAAC;IAED,oDAAoD;IACpC,KAAK,CAAC,cAAc,CAAC,EAAiB;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACjC,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QACjC,IAAI,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAG,wFAAwF;YACxH,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEtC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;YAC7B,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,4BAAY,CAAC,GAAG,CAAC,CAAC,CAAC,4BAAY,CAAC,EAAE,CAAC;QAExE,mDAAmD;QACnD,MAAM,KAAK,GAAG,kBAAS,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1E,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACzB,IAAI,EAAE,CAAC,UAAU,EAAE,0EAA0E;YAC3F,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAEtB,kDAAkD;QAClD,IAAI,CAAC,gBAAgB,CAAC,kBAAS,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YACzF,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAyB;YACzD,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAW,CAAC,CAAC,wBAAwB;YACzD,EAAE,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC,yBAAyB;YACpD,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC;gBAClB,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACjB,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAE,+BAA+B;YACpD,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACrB,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;YAChC,CAAC;QACH,CAAC,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,qBAAqB;QAChD,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,4CAA4C;QACpE,OAAO,4BAAY,CAAC,GAAG,CAAC;IAC1B,CAAC;IAED,6FAA6F;IAC7E,KAAK,CAAC,uBAAuB,CAAC,SAAkB,EAAE,QAAwB,EAAE,MAAqB;QAC/G,IAAI,QAAQ,KAAK,8BAAc,CAAC,KAAK,EAAE,mCAAmC;YACxE,OAAO,4BAAY,CAAC,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;QACtC,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QACjC,IAAI,SAAS,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,uCAAuC;YACrF,OAAO,4BAAY,CAAC,EAAE,CAAC;QACzB,MAAM,EAAE,GAAG,IAAI,6BAAa,EAAE,CAAC,CAAC,yFAAyF;QACzH,yBAAS,CAAC,SAAS,CAAC,2BAA2B,CAAC,EAAE,CAAC,CAAC;QACpD,OAAO,CAAC,SAAS,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,4BAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,4BAAY,CAAC,GAAG,CAAC,CAAC;IAC9F,CAAC;IAED,kEAAkE;IAClD,KAAK,CAAC,eAAe,CAAC,QAAiB,EAAE,GAAkB;QACzE,IAAI,CAAC,QAAQ;YACX,OAAO,4BAAY,CAAC,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,QAAQ,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;YAC9B,KAAK,QAAQ,CAAC,CAAC,yDAAyD;YACxE,KAAK,WAAW;gBACd,IAAI,CAAC,eAAe,EAAE,CAAC;gBACvB,MAAM,CAAC,cAAc,EAAE,CAAC;gBACxB,OAAO,4BAAY,CAAC,GAAG,CAAC;YAC1B,KAAK,QAAQ,EAAE,iCAAiC;gBAC9C,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACtB,OAAO,4BAAY,CAAC,GAAG,CAAC;YAC1B,KAAK,GAAG,EAAE,6BAA6B;gBACrC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,4BAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,4BAAY,CAAC,EAAE,CAAC;YAClG,KAAK,GAAG,EAAE,+BAA+B;gBACvC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,4BAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,4BAAY,CAAC,EAAE,CAAC;YACpG,KAAK,GAAG,EAAE,wBAAwB;gBAChC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,MAAM,CAAC,aAAa,EAAE,EAAE,4BAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,4BAAY,CAAC,EAAE,CAAC;YAC9G,KAAK,GAAG,EAAE,mBAAmB;gBAC3B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,MAAM,CAAC,eAAe,EAAE,EAAE,4BAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,4BAAY,CAAC,EAAE,CAAC;QAClH,CAAC;QACD,OAAO,4BAAY,CAAC,EAAE,CAAC;IACzB,CAAC;;AAzTH,gCA0TC;AAzTwB,iBAAM,GAAG,eAAe,AAAlB,CAAmB;AACzB,mBAAQ,GAAG,aAAa,AAAhB,CAAiB","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module MarkupTools\r\n */\r\n\r\nimport { assert, BeEvent } from \"@itwin/core-bentley\";\r\nimport { Point2d, Point3d, Transform, Vector2d, XAndY } from \"@itwin/core-geometry\";\r\nimport {\r\n BeButton, BeButtonEvent, BeModifierKeys, BeTouchEvent, CoreTools, EventHandled, IModelApp, InputSource, ToolAssistance, ToolAssistanceImage,\r\n ToolAssistanceInputMethod, ToolAssistanceInstruction, ToolAssistanceSection,\r\n} from \"@itwin/core-frontend\";\r\nimport { ArrayXY, Box, Container, G, Line, Element as MarkupElement, Text as MarkupText, Matrix, Point, Polygon } from \"@svgdotjs/svg.js\";\r\nimport { MarkupApp } from \"./Markup\";\r\nimport { MarkupTool } from \"./MarkupTool\";\r\nimport { EditTextTool } from \"./TextEdit\";\r\nimport { UndoManager } from \"./Undo\";\r\n\r\n// cspell:ignore lmultiply untransform unFlash multiselect\r\n\r\n/** Classes added to HTMLElements so they can be customized in CSS by applications.\r\n * A \"modify handle\" is a visible position on the screen that provides UI to modify a MarkupElement.\r\n * @public\r\n */\r\nexport abstract class ModifyHandle {\r\n public vbToStartTrn!: Transform;\r\n\r\n constructor(public handles: Handles) { }\r\n /** perform the modification given a current mouse position. */\r\n public abstract modify(ev: BeButtonEvent): void;\r\n public async onClick(_ev: BeButtonEvent): Promise<void> { }\r\n\r\n /** set the position for this handle on the screen given the current state of the element */\r\n public abstract setPosition(): void;\r\n /** the mouse just went down on this handle, begin modification. */\r\n public startDrag(_ev: BeButtonEvent, makeCopy = false): void {\r\n this.vbToStartTrn = this.handles.vbToBoxTrn.clone(); // save the starting vp -> element box transform\r\n this.startModify(makeCopy);\r\n }\r\n public startModify(makeCopy: boolean) {\r\n const handles = this.handles;\r\n const el = handles.el;\r\n const cloned = handles.el = el.cloneMarkup(); // make a clone of this element\r\n if (makeCopy) {\r\n el.after(cloned);\r\n } else {\r\n cloned.originalEl = el; // save original for undo\r\n el.replace(cloned); // put it into the DOM in place of the original\r\n }\r\n }\r\n public setMouseHandler(target: MarkupElement) {\r\n const node = target.node;\r\n node.addEventListener(\"mousedown\", (event) => {\r\n const ev = event as MouseEvent;\r\n if (0 === ev.button && undefined === this.handles.active)\r\n this.handles.active = this;\r\n });\r\n node.addEventListener(\"touchstart\", () => {\r\n if (undefined === this.handles.active)\r\n this.handles.active = this;\r\n });\r\n }\r\n public addTouchPadding(visible: MarkupElement, handles: Handles): MarkupElement {\r\n if (InputSource.Touch !== IModelApp.toolAdmin.currentInputState.inputSource)\r\n return visible;\r\n const padding = visible.cloneMarkup().scale(3).attr(\"opacity\", 0);\r\n const g = handles.group.group();\r\n padding.addTo(g);\r\n visible.addTo(g);\r\n return g;\r\n }\r\n}\r\n\r\n/** A ModifyHandle that changes the size of the element\r\n * @public\r\n */\r\nclass StretchHandle extends ModifyHandle {\r\n private readonly _circle: MarkupElement;\r\n public posNpc: Point2d;\r\n public startPos!: Point2d;\r\n public opposite!: Point2d;\r\n public startBox!: Box;\r\n public startCtm!: Matrix;\r\n constructor(handles: Handles, xy: ArrayXY, cursor: string) {\r\n super(handles);\r\n this.posNpc = new Point2d(xy[0], xy[1]);\r\n const props = MarkupApp.props.handles;\r\n this._circle = handles.group.circle(props.size).addClass(MarkupApp.stretchHandleClass).attr(props.stretch).attr(\"cursor\", `${cursor}-resize`); // the visible \"circle\" for this handle\r\n this._circle = this.addTouchPadding(this._circle, handles);\r\n this.setMouseHandler(this._circle);\r\n }\r\n public setPosition() {\r\n const pt = this.handles.npcToVb(this.posNpc); // convert to viewbox coords\r\n this._circle.center(pt.x, pt.y);\r\n }\r\n\r\n public override startDrag(_ev: BeButtonEvent) {\r\n const handles = this.handles;\r\n this.startCtm = handles.el.screenCTM().lmultiplyO(MarkupApp.screenToVbMtx());\r\n this.startBox = handles.el.bbox(); // save starting size so we can preserve aspect ratio\r\n this.startPos = handles.npcToBox(this.posNpc);\r\n this.opposite = handles.npcToBox({ x: 1 - this.posNpc.x, y: 1 - this.posNpc.y });\r\n super.startDrag(_ev);\r\n }\r\n\r\n /** perform the stretch. Always stretch element with anchor at the opposite corner of the one being moved. */\r\n public modify(ev: BeButtonEvent): void {\r\n const evPt = MarkupApp.convertVpToVb(ev.viewPoint); // get cursor location in viewbox coords\r\n const diff = this.startPos.vectorTo(this.vbToStartTrn.multiplyPoint2d(evPt)); // movement of cursor from start, in viewbox coords\r\n const diag = this.startPos.vectorTo(this.opposite).normalize()!; // vector from opposite corner to this handle\r\n let diagVec = diag.scaleToLength(diff.dotProduct(diag)); // projected distance along diagonal\r\n if (diagVec === undefined)\r\n diagVec = Vector2d.createZero();\r\n // if the shift key is down, don't preserve aspect ratio\r\n const adjusted = ev.isShiftKey ? { x: diff.x, y: diff.y } : { x: diagVec.x, y: diagVec.y };\r\n let { x, y, h, w } = this.startBox;\r\n if (this.posNpc.x === 0) {\r\n x += adjusted.x; // left edge\r\n w -= adjusted.x;\r\n } else if (this.posNpc.x === 1) {\r\n w += adjusted.x; // right edge\r\n }\r\n if (this.posNpc.y === 0) {\r\n y += adjusted.y; // top edge\r\n h -= adjusted.y;\r\n } else if (this.posNpc.y === 1) {\r\n h += adjusted.y; // bottom edge\r\n }\r\n const mtx = this.startCtm.inverse().scaleO(this.startBox.w / w, this.startBox.h / h, this.opposite.x, this.opposite.y).inverseO();\r\n const minSize = 10;\r\n if (w > minSize && h > minSize) // don't let element get too small\r\n this.handles.el.markupStretch(w, h, x, y, mtx);\r\n }\r\n}\r\n\r\n/** A ModifyHandle to rotate an element\r\n * @public\r\n */\r\nclass RotateHandle extends ModifyHandle {\r\n private readonly _line: Line;\r\n private readonly _circle: MarkupElement;\r\n public location!: Point2d;\r\n\r\n constructor(public override handles: Handles) {\r\n super(handles);\r\n const props = MarkupApp.props.handles;\r\n\r\n this._line = handles.group.line(0, 0, 1, 1).attr(props.rotateLine).addClass(MarkupApp.rotateLineClass);\r\n this._circle = handles.group.circle(props.size * 1.25).attr(props.rotate).addClass(MarkupApp.rotateHandleClass);\r\n this._circle = this.addTouchPadding(this._circle, handles);\r\n this.setMouseHandler(this._circle);\r\n }\r\n public get centerVb() { return this.handles.npcToVb({ x: .5, y: .5 }); }\r\n public get anchorVb() { return this.handles.npcToVb({ x: .5, y: 0 }); }\r\n public setPosition(): void {\r\n const anchor = this.anchorVb;\r\n const dir = this.centerVb.vectorTo(anchor).normalize()!;\r\n const loc = this.location = anchor.plusScaled(dir, MarkupApp.props.handles.size * 3);\r\n this._line.plot(anchor.x, anchor.y, loc.x, loc.y);\r\n this._circle.center(loc.x, loc.y);\r\n }\r\n public modify(ev: BeButtonEvent): void {\r\n const centerVp = this.centerVb;\r\n const currDir = centerVp.vectorTo(MarkupApp.convertVpToVb(ev.viewPoint));\r\n const dir = centerVp.vectorTo(this.location);\r\n this.handles.el.rotate(dir.angleTo(currDir).degrees);\r\n }\r\n}\r\n\r\n/** A VertexHandle to move a point on a line\r\n * @public\r\n */\r\nclass VertexHandle extends ModifyHandle {\r\n private readonly _circle: MarkupElement;\r\n private readonly _x: string;\r\n private readonly _y: string;\r\n\r\n constructor(public override handles: Handles, index: number) {\r\n super(handles);\r\n const props = MarkupApp.props.handles;\r\n this._circle = handles.group.circle(props.size).attr(props.vertex).addClass(MarkupApp.vertexHandleClass);\r\n this._x = `x${index + 1}`;\r\n this._y = `y${index + 1}`;\r\n this._circle = this.addTouchPadding(this._circle, handles);\r\n this.setMouseHandler(this._circle);\r\n }\r\n public setPosition(): void {\r\n let point = new Point(this.handles.el.attr(this._x), this.handles.el.attr(this._y));\r\n const matrix = this.handles.el.screenCTM().lmultiplyO(MarkupApp.screenToVbMtx());\r\n point = point.transform(matrix);\r\n this._circle.center(point.x, point.y);\r\n }\r\n public modify(ev: BeButtonEvent): void {\r\n let point = new Point(ev.viewPoint.x, ev.viewPoint.y);\r\n const matrix = this.handles.el.screenCTM().inverseO().multiplyO(MarkupApp.getVpToScreenMtx());\r\n point = point.transform(matrix);\r\n const el = this.handles.el;\r\n el.attr(this._x, point.x);\r\n el.attr(this._y, point.y);\r\n }\r\n}\r\n\r\n/** A handle that moves (translates) an element.\r\n * @public\r\n */\r\nclass MoveHandle extends ModifyHandle {\r\n private readonly _shape: MarkupElement;\r\n private readonly _outline?: Polygon;\r\n private _lastPos?: Point3d;\r\n constructor(public override handles: Handles, showBBox: boolean) {\r\n super(handles);\r\n const props = MarkupApp.props.handles;\r\n const clone = this.handles.el.cloneMarkup();\r\n clone.css(props.move);\r\n clone.forElementsOfGroup((child) => child.css(props.move));\r\n\r\n if (showBBox) {\r\n this._outline = handles.group.polygon().attr(props.moveOutline);\r\n const rect = this.handles.el.getOutline().attr(props.move).attr({ fill: \"none\" });\r\n\r\n const group = handles.group.group();\r\n group.add(this._outline);\r\n group.add(rect);\r\n group.add(clone);\r\n this._shape = group;\r\n } else {\r\n clone.addTo(handles.group);\r\n this._shape = clone;\r\n }\r\n\r\n this._shape.addClass(MarkupApp.moveHandleClass);\r\n this.setMouseHandler(this._shape);\r\n }\r\n public override async onClick(_ev: BeButtonEvent): Promise<void> {\r\n const el = this.handles.el;\r\n // eslint-disable-next-line deprecation/deprecation\r\n if (el instanceof MarkupText || (el instanceof G && el.node.className.baseVal === MarkupApp.boxedTextClass)) // if they click on the move handle of a text element, start the text editor\r\n await new EditTextTool(el).run();\r\n }\r\n /** draw the outline of the element's bbox (in viewbox coordinates) */\r\n public setPosition() {\r\n if (undefined !== this._outline) {\r\n const pts = [new Point2d(0, 0), new Point2d(0, 1), new Point2d(1, 1), new Point2d(1, 0)];\r\n this._outline.plot(this.handles.npcToVbArray(pts).map((pt) => [pt.x, pt.y] as ArrayXY));\r\n }\r\n }\r\n public override startDrag(ev: BeButtonEvent) {\r\n super.startDrag(ev, ev.isShiftKey);\r\n this._lastPos = MarkupApp.convertVpToVb(ev.viewPoint); // save stating position in viewbox coordinates\r\n }\r\n public modify(ev: BeButtonEvent): void {\r\n const evPt = MarkupApp.convertVpToVb(ev.viewPoint);\r\n assert(this._lastPos !== undefined);\r\n const dist = evPt.minus(this._lastPos);\r\n this._lastPos = evPt;\r\n this.handles.el.translate(dist.x, dist.y); // move the element\r\n }\r\n}\r\n\r\n/** The set of ModifyHandles active. Only applies if there is a single element selected.\r\n * @public\r\n */\r\nexport class Handles {\r\n public readonly handles: ModifyHandle[] = [];\r\n public active?: ModifyHandle;\r\n public dragging = false;\r\n public group: G;\r\n public npcToVbTrn!: Transform;\r\n public vbToBoxTrn!: Transform;\r\n\r\n constructor(public ss: MarkupSelected, public el: MarkupElement) {\r\n this.group = ss.svg.group();\r\n\r\n if (el instanceof Line) {\r\n this.handles.push(new MoveHandle(this, false));\r\n this.handles.push(new VertexHandle(this, 0));\r\n this.handles.push(new VertexHandle(this, 1));\r\n this.draw(); // show starting state\r\n return;\r\n }\r\n\r\n // move box is in the back\r\n this.handles.push(new MoveHandle(this, true));\r\n // then rotate handle\r\n this.handles.push(new RotateHandle(this));\r\n\r\n // then add all the stretch handles\r\n const pts = [[0, 0], [0, .5], [0, 1], [.5, 1], [1, 1], [1, .5], [1, 0], [.5, 0]];\r\n const cursors = [\"nw\", \"w\", \"sw\", \"s\", \"se\", \"e\", \"ne\", \"n\"];\r\n const order = [7, 3, 1, 5, 2, 6, 0, 4];\r\n const angle = el.screenCTM().decompose().rotate || 0;\r\n const start = Math.round(-angle / 45); // so that we rotate the cursors for rotated elements\r\n order.forEach((index) => this.handles.push(new StretchHandle(this, pts[index] as ArrayXY, cursors[(index + start + 8) % 8])));\r\n this.draw(); // show starting state\r\n }\r\n\r\n public npcToBox(p: XAndY) {\r\n const pt = this.npcToVb(p);\r\n return this.vbToBox(pt, pt);\r\n }\r\n\r\n public npcToVb(p: XAndY, result?: Point2d): Point2d { return this.npcToVbTrn.multiplyPoint2d(p, result); }\r\n public vbToBox(p: XAndY, result?: Point2d): Point2d { return this.vbToBoxTrn.multiplyPoint2d(p, result); }\r\n public npcToVbArray(pts: Point2d[]): Point2d[] {\r\n pts.forEach((pt) => this.npcToVb(pt, pt));\r\n return pts;\r\n }\r\n\r\n public draw() {\r\n const el = this.el;\r\n const bb = el.bbox();\r\n const ctm = el.screenCTM().lmultiplyO(MarkupApp.screenToVbMtx());\r\n this.vbToBoxTrn = ctm.inverse().toIModelTransform();\r\n this.npcToVbTrn = new Matrix().scaleO(bb.w, bb.h).translateO(bb.x, bb.y).lmultiplyO(ctm).toIModelTransform();\r\n this.handles.forEach((h) => h.setPosition());\r\n }\r\n\r\n public remove() {\r\n if (this.dragging)\r\n this.cancelDrag();\r\n this.group.remove();\r\n }\r\n\r\n public startDrag(ev: BeButtonEvent): EventHandled {\r\n if (this.active) {\r\n this.active.startDrag(ev);\r\n this.dragging = true;\r\n MarkupApp.markup!.disablePick();\r\n IModelApp.toolAdmin.setCursor(IModelApp.viewManager.dynamicsCursor);\r\n }\r\n return EventHandled.Yes;\r\n }\r\n public drag(ev: BeButtonEvent) {\r\n if (this.dragging) {\r\n this.active!.modify(ev);\r\n this.draw();\r\n }\r\n }\r\n /** complete the modification for the active handle. */\r\n public endDrag(undo: UndoManager): EventHandled {\r\n undo.performOperation(MarkupApp.getActionName(\"modify\"), () => {\r\n const el = this.el;\r\n const original = el.originalEl!; // save original element\r\n if (original === undefined) {\r\n this.ss.emptyAll();\r\n this.ss.add(el);\r\n undo.onAdded(el);\r\n } else {\r\n el.originalEl = undefined; // clear original element\r\n undo.onModified(el, original);\r\n }\r\n });\r\n this.draw();\r\n this.dragging = false;\r\n this.active = undefined;\r\n MarkupApp.markup!.enablePick();\r\n return EventHandled.Yes;\r\n }\r\n\r\n /** called when the reset button is pressed. */\r\n public cancelDrag() {\r\n if (!this.dragging)\r\n return;\r\n const el = this.el;\r\n const original = el.originalEl!;\r\n if (original) {\r\n el.replace(original);\r\n this.el = original;\r\n }\r\n this.draw();\r\n this.active = undefined;\r\n MarkupApp.markup!.enablePick();\r\n }\r\n}\r\n\r\n/** The set of currently selected SVG elements. When elements are added to the set, they are hilited.\r\n * @public\r\n */\r\nexport class MarkupSelected {\r\n public readonly elements = new Set<MarkupElement>();\r\n public handles?: Handles;\r\n\r\n /** Called whenever elements are added or removed from this SelectionSet */\r\n public readonly onChanged = new BeEvent<(selected: MarkupSelected) => void>();\r\n\r\n public get size() { return this.elements.size; }\r\n public get isEmpty() { return this.size === 0; }\r\n public has(el: MarkupElement) { return this.elements.has(el); }\r\n public emptyAll(): void {\r\n this.clearEditors();\r\n if (this.isEmpty)\r\n return; // Don't send onChanged if already empty.\r\n this.elements.forEach((el) => el.unHilite());\r\n this.elements.clear();\r\n this.onChanged.raiseEvent(this);\r\n }\r\n public restart(el?: MarkupElement) {\r\n this.emptyAll();\r\n if (el)\r\n this.add(el);\r\n }\r\n public constructor(public svg: G) { }\r\n public clearEditors() {\r\n if (this.handles) {\r\n this.handles.remove();\r\n this.handles = undefined;\r\n }\r\n }\r\n public sizeChanged() {\r\n this.clearEditors();\r\n if (this.elements.size === 1)\r\n this.handles = new Handles(this, this.elements.values().next().value);\r\n this.onChanged.raiseEvent(this);\r\n }\r\n /** Add a new element to the SS */\r\n public add(el: MarkupElement) {\r\n this.elements.add(el);\r\n el.hilite();\r\n this.sizeChanged();\r\n }\r\n /** Remove an element from the selection set and unhilite it.\r\n * @returns true if the element was in the SS and was removed.\r\n */\r\n public drop(el: MarkupElement): boolean {\r\n el.unHilite();\r\n return this.elements.delete(el) ? (this.sizeChanged(), true) : false;\r\n }\r\n\r\n /** Replace an entry in the selection set with a different element. */\r\n public replace(oldEl: MarkupElement, newEl: MarkupElement) {\r\n if (this.drop(oldEl))\r\n this.add(newEl);\r\n }\r\n\r\n public deleteAll(undo: UndoManager) {\r\n undo.performOperation(MarkupApp.getActionName(\"delete\"), () => this.elements.forEach((el) => {\r\n undo.onDelete(el);\r\n el.remove();\r\n }));\r\n\r\n this.emptyAll();\r\n }\r\n\r\n public groupAll(undo: UndoManager) {\r\n if (this.size < 2)\r\n return;\r\n const first = this.elements.values().next().value;\r\n const parent = first.parent() as Container;\r\n const group = parent.group();\r\n\r\n const ordered: MarkupElement[] = [];\r\n this.elements.forEach((el) => ordered.push(el));\r\n ordered.sort((lhs, rhs) => parent.index(lhs) - parent.index(rhs)); // Preserve relative z ordering\r\n\r\n undo.performOperation(MarkupApp.getActionName(\"group\"), () => {\r\n ordered.forEach((el) => {\r\n const oldParent = el.parent() as MarkupElement;\r\n const oldPos = el.position();\r\n el.unHilite();\r\n undo.onRepositioned(el.addTo(group), oldPos, oldParent);\r\n }), undo.onAdded(group);\r\n });\r\n this.restart(group);\r\n }\r\n\r\n public ungroupAll(undo: UndoManager) {\r\n const groups = new Set<MarkupElement>();\r\n this.elements.forEach((el) => {\r\n if (el instanceof G)\r\n groups.add(el);\r\n });\r\n\r\n if (0 === groups.size)\r\n return;\r\n\r\n undo.performOperation(MarkupApp.getActionName(\"ungroup\"), () => {\r\n groups.forEach((g) => {\r\n g.unHilite();\r\n this.elements.delete(g);\r\n undo.onDelete(g);\r\n g.each((index, children) => {\r\n const child = children[index];\r\n const oldPos = child.position();\r\n child.toParent(g.parent());\r\n undo.onRepositioned(child, oldPos, g);\r\n }, false);\r\n\r\n g.untransform(); // Don't want undo of ungroup to push the current group transform...\r\n g.remove();\r\n });\r\n });\r\n this.sizeChanged();\r\n }\r\n\r\n /** Move all of the entries to a new position in the DOM via a callback. */\r\n public reposition(cmdName: string, undo: UndoManager, fn: (el: MarkupElement) => void) {\r\n undo.performOperation(cmdName, () => this.elements.forEach((el) => {\r\n const oldParent = el.parent() as MarkupElement;\r\n const oldPos = el.position();\r\n fn(el);\r\n undo.onRepositioned(el, oldPos, oldParent);\r\n }));\r\n this.sizeChanged();\r\n }\r\n}\r\n\r\n/** Provides UI for selection, delete, move, copy, bring-to-front, send-to-back, etc. for Markup SVG elements\r\n * @public\r\n */\r\nexport class SelectTool extends MarkupTool {\r\n public static override toolId = \"Markup.Select\";\r\n public static override iconSpec = \"icon-cursor\";\r\n private _flashedElement?: MarkupElement;\r\n private readonly _dragging: MarkupElement[] = [];\r\n private _anchorPt!: Point3d;\r\n private _isBoxSelect = false;\r\n\r\n public get flashedElement(): MarkupElement | undefined { return this._flashedElement; }\r\n public set flashedElement(el: MarkupElement | undefined) {\r\n if (el === this._flashedElement)\r\n return;\r\n\r\n if (undefined !== this._flashedElement)\r\n this._flashedElement.unFlash();\r\n\r\n if (undefined !== el)\r\n el.flash();\r\n\r\n this._flashedElement = el;\r\n }\r\n protected unflashSelected(): void {\r\n if (undefined !== this._flashedElement && this.markup.selected.has(this._flashedElement))\r\n this.flashedElement = undefined;\r\n }\r\n private initSelect() {\r\n this.markup.setCursor(\"default\");\r\n this.markup.enablePick();\r\n this.flashedElement = undefined;\r\n this.boxSelectInit();\r\n }\r\n private clearSelect() {\r\n this.cancelDrag();\r\n this.markup.selected.emptyAll();\r\n }\r\n public override async onCleanup() { this.clearSelect(); }\r\n public override async onPostInstall() {\r\n this.initSelect();\r\n return super.onPostInstall();\r\n }\r\n\r\n public override async onRestartTool() { this.initSelect(); }\r\n\r\n protected override showPrompt(): void {\r\n const mainInstruction = ToolAssistance.createInstruction(this.iconSpec, IModelApp.localization.getLocalizedString(`${MarkupTool.toolKey}Select.Prompts.IdentifyMarkup`));\r\n const mouseInstructions: ToolAssistanceInstruction[] = [];\r\n const touchInstructions: ToolAssistanceInstruction[] = [];\r\n\r\n const acceptMsg = IModelApp.localization.getLocalizedString(`${MarkupTool.toolKey}Select.Prompts.AcceptMarkup`);\r\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.OneTouchTap, acceptMsg, false, ToolAssistanceInputMethod.Touch));\r\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.LeftClick, acceptMsg, false, ToolAssistanceInputMethod.Mouse));\r\n\r\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.OneTouchDrag, CoreTools.translate(\"ElementSet.Inputs.BoxCorners\"), false, ToolAssistanceInputMethod.Touch));\r\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.LeftClickDrag, CoreTools.translate(\"ElementSet.Inputs.BoxCorners\"), false, ToolAssistanceInputMethod.Mouse));\r\n\r\n mouseInstructions.push(ToolAssistance.createModifierKeyInstruction(ToolAssistance.shiftKey, ToolAssistanceImage.LeftClickDrag, CoreTools.translate(\"ElementSet.Inputs.OverlapSelection\"), false, ToolAssistanceInputMethod.Mouse));\r\n mouseInstructions.push(ToolAssistance.createModifierKeyInstruction(ToolAssistance.ctrlKey, ToolAssistanceImage.LeftClick, CoreTools.translate(\"ElementSet.Inputs.InvertSelection\"), false, ToolAssistanceInputMethod.Mouse));\r\n\r\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.CursorClick, CoreTools.translate(\"ElementSet.Inputs.ClearSelection\"), false, ToolAssistanceInputMethod.Mouse));\r\n\r\n const sections: ToolAssistanceSection[] = [];\r\n sections.push(ToolAssistance.createSection(mouseInstructions, ToolAssistance.inputsLabel));\r\n sections.push(ToolAssistance.createSection(touchInstructions, ToolAssistance.inputsLabel));\r\n\r\n const instructions = ToolAssistance.createInstructions(mainInstruction, sections);\r\n IModelApp.notifications.setToolAssistance(instructions);\r\n }\r\n\r\n /** When we start a drag operation, we add a new set of elements to the DOM and start modifying them.\r\n * If we cancel the operation, we need remove them from the DOM.\r\n */\r\n private cancelDrag() {\r\n this._dragging.forEach((el) => el.remove()); // remove temporary elements from DOM\r\n this._dragging.length = 0;\r\n this.boxSelectInit();\r\n }\r\n public override async onResetButtonUp(_ev: BeButtonEvent): Promise<EventHandled> {\r\n const selected = this.markup.selected;\r\n const handles = selected.handles;\r\n if (handles && handles.dragging)\r\n handles.cancelDrag();\r\n\r\n this.cancelDrag();\r\n selected.sizeChanged();\r\n return EventHandled.Yes;\r\n }\r\n\r\n /** Called when there is a mouse \"click\" (down+up without any motion) */\r\n public override async onDataButtonUp(ev: BeButtonEvent): Promise<EventHandled> {\r\n const markup = this.markup;\r\n const selected = markup.selected;\r\n const handles = selected.handles;\r\n if (handles) {\r\n if (handles.dragging)\r\n return handles.endDrag(markup.undo);\r\n if (handles.active) { // clicked on a handle\r\n if (ev.isControlKey)\r\n selected.drop(handles.el);\r\n else\r\n await handles.active.onClick(ev);\r\n handles.active = undefined;\r\n return EventHandled.Yes;\r\n }\r\n }\r\n\r\n const el = this.flashedElement = this.pickElement(ev.viewPoint);\r\n if (ev.isControlKey) {\r\n if (el && selected.drop(el))\r\n return EventHandled.Yes;\r\n } else {\r\n selected.emptyAll();\r\n }\r\n\r\n if (el !== undefined)\r\n selected.add(el);\r\n return EventHandled.Yes;\r\n }\r\n\r\n public override async onTouchTap(ev: BeTouchEvent): Promise<EventHandled> {\r\n // Allow tap with a second touch point to multiselect (similar functionality to control being held with mouse click).\r\n if (ev.isSingleTap && 2 === ev.touchEvent.touches.length) {\r\n const el = this.flashedElement = this.pickElement(ev.viewPoint);\r\n if (el) {\r\n const selected = this.markup.selected;\r\n if (!selected.drop(el))\r\n selected.add(el);\r\n return EventHandled.Yes;\r\n }\r\n }\r\n return super.onTouchTap(ev);\r\n }\r\n\r\n protected boxSelectInit(): void {\r\n this._isBoxSelect = false;\r\n this.markup.svgDynamics!.clear();\r\n }\r\n\r\n protected boxSelectStart(ev: BeButtonEvent): boolean {\r\n if (!ev.isControlKey)\r\n this.markup.selected.emptyAll();\r\n this._anchorPt = MarkupApp.convertVpToVb(ev.viewPoint);\r\n this._isBoxSelect = true;\r\n return true;\r\n }\r\n\r\n protected boxSelect(ev: BeButtonEvent, isDynamics: boolean): boolean {\r\n if (!this._isBoxSelect)\r\n return false;\r\n const start = this._anchorPt;\r\n const end = MarkupApp.convertVpToVb(ev.viewPoint);\r\n const vec = start.vectorTo(end);\r\n const width = Math.abs(vec.x);\r\n const height = Math.abs(vec.y);\r\n if (width < 1 || height < 1)\r\n return true;\r\n const rightToLeft = (start.x > end.x);\r\n const overlapMode = (ev.isShiftKey ? !rightToLeft : rightToLeft); // Shift inverts inside/overlap selection...\r\n const offset = Point3d.create(vec.x < 0 ? end.x : start.x, vec.y < 0 ? end.y : start.y); // define location by corner points...\r\n this.markup.svgDynamics!.clear();\r\n this.markup.svgDynamics!.rect(width, height).move(offset.x, offset.y).css({ \"stroke-width\": 1, \"stroke\": \"black\", \"stroke-opacity\": 0.5, \"fill\": \"lightBlue\", \"fill-opacity\": 0.2 });\r\n const selectBox = this.markup.svgDynamics!.rect(width, height).move(offset.x, offset.y).css({ \"stroke-width\": 1, \"stroke\": \"white\", \"stroke-opacity\": 1.0, \"stroke-dasharray\": overlapMode ? \"5\" : \"2\", \"fill\": \"none\" });\r\n const outlinesG = isDynamics ? this.markup.svgDynamics!.group() : undefined;\r\n const selectRect = selectBox.node.getBoundingClientRect();\r\n this.markup.svgMarkup!.forElementsOfGroup((child) => {\r\n const childRect = child.node.getBoundingClientRect();\r\n const inside = (childRect.left >= selectRect.left && childRect.top >= selectRect.top && childRect.right <= selectRect.right && childRect.bottom <= selectRect.bottom);\r\n const overlap = !inside && (childRect.left < selectRect.right && childRect.right > selectRect.left && childRect.bottom > selectRect.top && childRect.top < selectRect.bottom);\r\n const accept = inside || (overlap && overlapMode);\r\n if (undefined !== outlinesG) {\r\n if (inside || overlap) {\r\n const outline = child.getOutline().attr(MarkupApp.props.handles.moveOutline).addTo(outlinesG);\r\n if (accept)\r\n outline.attr({ \"fill\": MarkupApp.props.hilite.flash, \"fill-opacity\": 0.2 });\r\n }\r\n } else if (accept) {\r\n this.markup.selected.add(child);\r\n }\r\n });\r\n if (!isDynamics)\r\n this.boxSelectInit();\r\n return true;\r\n }\r\n\r\n /** called when the mouse moves while the data button is down. */\r\n public override async onMouseStartDrag(ev: BeButtonEvent): Promise<EventHandled> {\r\n if (BeButton.Data !== ev.button)\r\n return EventHandled.No;\r\n\r\n const markup = this.markup;\r\n const selected = markup.selected;\r\n const handles = selected.handles;\r\n if (handles && handles.active) {\r\n this.flashedElement = undefined; // make sure there are no elements flashed while dragging\r\n return handles.startDrag(ev);\r\n }\r\n\r\n const flashed = this.flashedElement = this.pickElement(ev.viewPoint);\r\n if (undefined === flashed)\r\n return this.boxSelectStart(ev) ? EventHandled.Yes : EventHandled.No;\r\n\r\n if (!selected.has(flashed))\r\n selected.restart(flashed); // we clicked on an element not in the selection set, replace current selection with just this element\r\n\r\n selected.clearEditors();\r\n this._anchorPt = MarkupApp.convertVpToVb(ev.viewPoint); // save the starting point. This is the point where the \"down\" occurred.\r\n this.cancelDrag();\r\n\r\n selected.elements.forEach((el) => { // add all selected elements to the \"dragging\" set\r\n const cloned = el.cloneMarkup(); // make a clone of this element\r\n el.after(cloned); // put it into the DOM after its original\r\n cloned.originalEl = el; // save original element so we can remove it if this is a \"move\" command\r\n this._dragging.push(cloned); // add to dragging set\r\n });\r\n return EventHandled.Yes;\r\n }\r\n\r\n /** Called whenever the mouse moves while this tool is active. */\r\n public override async onMouseMotion(ev: BeButtonEvent): Promise<void> {\r\n const markup = this.markup;\r\n const handles = markup.selected.handles;\r\n if (handles && handles.dragging) {\r\n this.receivedDownEvent = true; // necessary to tell ToolAdmin to send us the button up event\r\n return handles.drag(ev); // drag the handle\r\n }\r\n\r\n if (this._dragging.length === 0) {\r\n if (this.boxSelect(ev, true))\r\n return;\r\n if (InputSource.Touch !== ev.inputSource)\r\n this.flashedElement = this.pickElement(ev.viewPoint); // if we're not dragging, try to find an element under the cursor\r\n return;\r\n }\r\n\r\n // we have a set of elements being dragged. NOTE: coordinates are viewbox\r\n const vbPt = MarkupApp.convertVpToVb(ev.viewPoint);\r\n const delta = vbPt.minus(this._anchorPt);\r\n this._dragging.forEach((el) => el.translate(delta.x, delta.y));\r\n this._anchorPt = vbPt; // translate moves from last mouse location\r\n }\r\n\r\n /** Called when the mouse goes up after dragging. */\r\n public override async onMouseEndDrag(ev: BeButtonEvent): Promise<EventHandled> {\r\n const markup = this.markup;\r\n const selected = markup.selected;\r\n const handles = selected.handles;\r\n if (handles && handles.dragging) // if we have handles up, and if they're in the \"dragging\" state, send the event to them\r\n return handles.endDrag(markup.undo);\r\n\r\n if (this._dragging.length === 0)\r\n return this.boxSelect(ev, false) ? EventHandled.Yes : EventHandled.No;\r\n\r\n // NOTE: all units should be in viewbox coordinates\r\n const delta = MarkupApp.convertVpToVb(ev.viewPoint).minus(this._anchorPt);\r\n const undo = markup.undo;\r\n if (ev.isShiftKey) // shift key means \"add to existing,\" otherwise new selection replaces old\r\n selected.emptyAll();\r\n\r\n // move or copy all of the elements in dragged set\r\n undo.performOperation(MarkupApp.getActionName(\"copy\"), () => this._dragging.forEach((el) => {\r\n el.translate(delta.x, delta.y); // move to final location\r\n const original = el.originalEl!; // save original element\r\n el.originalEl = undefined; // clear original element\r\n if (ev.isShiftKey) {\r\n selected.add(el);\r\n undo.onAdded(el); // shift key means copy element\r\n } else {\r\n original.replace(el);\r\n undo.onModified(el, original);\r\n }\r\n }));\r\n\r\n this._dragging.length = 0; // empty dragging set\r\n selected.sizeChanged(); // notify that size of selection set changed\r\n return EventHandled.Yes;\r\n }\r\n\r\n /** called when a modifier key is pressed or released. Updates stretch handles, if present */\r\n public override async onModifierKeyTransition(_wentDown: boolean, modifier: BeModifierKeys, _event: KeyboardEvent): Promise<EventHandled> {\r\n if (modifier !== BeModifierKeys.Shift) // we only care about the shift key\r\n return EventHandled.No;\r\n const selected = this.markup.selected;\r\n const handles = selected.handles;\r\n if (undefined === handles || !handles.dragging) // and only if we're currently dragging\r\n return EventHandled.No;\r\n const ev = new BeButtonEvent(); // we need to simulate a mouse motion by sending a drag event at the last cursor position\r\n IModelApp.toolAdmin.fillEventFromCursorLocation(ev);\r\n return (undefined === ev.viewport) ? EventHandled.No : (handles.drag(ev), EventHandled.Yes);\r\n }\r\n\r\n /** called whenever a key is pressed while this tool is active. */\r\n public override async onKeyTransition(wentDown: boolean, key: KeyboardEvent): Promise<EventHandled> {\r\n if (!wentDown)\r\n return EventHandled.No;\r\n const markup = this.markup;\r\n switch (key.key.toLowerCase()) {\r\n case \"delete\": // delete key or backspace = delete current selection set\r\n case \"backspace\":\r\n this.unflashSelected();\r\n markup.deleteSelected();\r\n return EventHandled.Yes;\r\n case \"escape\": // esc = cancel current operation\r\n await this.exitTool();\r\n return EventHandled.Yes;\r\n case \"b\": // alt-shift-b = send to back\r\n return (key.altKey && key.shiftKey) ? (markup.sendToBack(), EventHandled.Yes) : EventHandled.No;\r\n case \"f\": // alt-shift-f = bring to front\r\n return (key.altKey && key.shiftKey) ? (markup.bringToFront(), EventHandled.Yes) : EventHandled.No;\r\n case \"g\": // ctrl-g = create group\r\n return (key.ctrlKey) ? (this.unflashSelected(), markup.groupSelected(), EventHandled.Yes) : EventHandled.No;\r\n case \"u\": // ctrl-u = ungroup\r\n return (key.ctrlKey) ? (this.unflashSelected(), markup.ungroupSelected(), EventHandled.Yes) : EventHandled.No;\r\n }\r\n return EventHandled.No;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"SelectTool.js","sourceRoot":"","sources":["../../src/SelectTool.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module MarkupTools\r\n */\r\n\r\nimport { assert, BeEvent } from \"@itwin/core-bentley\";\r\nimport { Point2d, Point3d, Transform, Vector2d, XAndY } from \"@itwin/core-geometry\";\r\nimport {\r\n BeButton, BeButtonEvent, BeModifierKeys, BeTouchEvent, CoreTools, EventHandled, IModelApp, InputSource, ToolAssistance, ToolAssistanceImage,\r\n ToolAssistanceInputMethod, ToolAssistanceInstruction, ToolAssistanceSection,\r\n} from \"@itwin/core-frontend\";\r\nimport { ArrayXY, Box, Container, G, Line, Element as MarkupElement, Text as MarkupText, Matrix, Point, Polygon } from \"@svgdotjs/svg.js\";\r\nimport { MarkupApp } from \"./Markup\";\r\nimport { MarkupTool } from \"./MarkupTool\";\r\nimport { EditTextTool } from \"./TextEdit\";\r\nimport { UndoManager } from \"./Undo\";\r\n\r\n// cspell:ignore lmultiply untransform unFlash multiselect\r\n\r\n/** Classes added to HTMLElements so they can be customized in CSS by applications.\r\n * A \"modify handle\" is a visible position on the screen that provides UI to modify a MarkupElement.\r\n * @public\r\n */\r\nexport abstract class ModifyHandle {\r\n public vbToStartTrn!: Transform;\r\n\r\n constructor(public handles: Handles) { }\r\n /** perform the modification given a current mouse position. */\r\n public abstract modify(ev: BeButtonEvent): void;\r\n public async onClick(_ev: BeButtonEvent): Promise<void> { }\r\n\r\n /** set the position for this handle on the screen given the current state of the element */\r\n public abstract setPosition(): void;\r\n /** the mouse just went down on this handle, begin modification. */\r\n public startDrag(_ev: BeButtonEvent, makeCopy = false): void {\r\n this.vbToStartTrn = this.handles.vbToBoxTrn.clone(); // save the starting vp -> element box transform\r\n this.startModify(makeCopy);\r\n }\r\n public startModify(makeCopy: boolean) {\r\n const handles = this.handles;\r\n const el = handles.el;\r\n const cloned = handles.el = el.cloneMarkup(); // make a clone of this element\r\n if (makeCopy) {\r\n el.after(cloned);\r\n } else {\r\n cloned.originalEl = el; // save original for undo\r\n el.replace(cloned); // put it into the DOM in place of the original\r\n }\r\n }\r\n public setMouseHandler(target: MarkupElement) {\r\n const node = target.node;\r\n node.addEventListener(\"mousedown\", (event) => {\r\n const ev = event as MouseEvent;\r\n if (0 === ev.button && undefined === this.handles.active)\r\n this.handles.active = this;\r\n });\r\n node.addEventListener(\"touchstart\", () => {\r\n if (undefined === this.handles.active)\r\n this.handles.active = this;\r\n });\r\n }\r\n public addTouchPadding(visible: MarkupElement, handles: Handles): MarkupElement {\r\n if (InputSource.Touch !== IModelApp.toolAdmin.currentInputState.inputSource)\r\n return visible;\r\n const padding = visible.cloneMarkup().scale(3).attr(\"opacity\", 0);\r\n const g = handles.group.group();\r\n padding.addTo(g);\r\n visible.addTo(g);\r\n return g;\r\n }\r\n}\r\n\r\n/** A ModifyHandle that changes the size of the element\r\n * @public\r\n */\r\nclass StretchHandle extends ModifyHandle {\r\n private readonly _circle: MarkupElement;\r\n public posNpc: Point2d;\r\n public startPos!: Point2d;\r\n public opposite!: Point2d;\r\n public startBox!: Box;\r\n public startCtm!: Matrix;\r\n constructor(handles: Handles, xy: ArrayXY, cursor: string) {\r\n super(handles);\r\n this.posNpc = new Point2d(xy[0], xy[1]);\r\n const props = MarkupApp.props.handles;\r\n this._circle = handles.group.circle(props.size).addClass(MarkupApp.stretchHandleClass).attr(props.stretch).attr(\"cursor\", `${cursor}-resize`); // the visible \"circle\" for this handle\r\n this._circle = this.addTouchPadding(this._circle, handles);\r\n this.setMouseHandler(this._circle);\r\n }\r\n public setPosition() {\r\n const pt = this.handles.npcToVb(this.posNpc); // convert to viewbox coords\r\n this._circle.center(pt.x, pt.y);\r\n }\r\n\r\n public override startDrag(_ev: BeButtonEvent) {\r\n const handles = this.handles;\r\n this.startCtm = handles.el.screenCTM().lmultiplyO(MarkupApp.screenToVbMtx());\r\n this.startBox = handles.el.bbox(); // save starting size so we can preserve aspect ratio\r\n this.startPos = handles.npcToBox(this.posNpc);\r\n this.opposite = handles.npcToBox({ x: 1 - this.posNpc.x, y: 1 - this.posNpc.y });\r\n super.startDrag(_ev);\r\n }\r\n\r\n /** perform the stretch. Always stretch element with anchor at the opposite corner of the one being moved. */\r\n public modify(ev: BeButtonEvent): void {\r\n const evPt = MarkupApp.convertVpToVb(ev.viewPoint); // get cursor location in viewbox coords\r\n const diff = this.startPos.vectorTo(this.vbToStartTrn.multiplyPoint2d(evPt)); // movement of cursor from start, in viewbox coords\r\n const diag = this.startPos.vectorTo(this.opposite).normalize()!; // vector from opposite corner to this handle\r\n let diagVec = diag.scaleToLength(diff.dotProduct(diag)); // projected distance along diagonal\r\n if (diagVec === undefined)\r\n diagVec = Vector2d.createZero();\r\n // if the shift key is down, don't preserve aspect ratio\r\n const adjusted = ev.isShiftKey ? { x: diff.x, y: diff.y } : { x: diagVec.x, y: diagVec.y };\r\n let { x, y, h, w } = this.startBox;\r\n if (this.posNpc.x === 0) {\r\n x += adjusted.x; // left edge\r\n w -= adjusted.x;\r\n } else if (this.posNpc.x === 1) {\r\n w += adjusted.x; // right edge\r\n }\r\n if (this.posNpc.y === 0) {\r\n y += adjusted.y; // top edge\r\n h -= adjusted.y;\r\n } else if (this.posNpc.y === 1) {\r\n h += adjusted.y; // bottom edge\r\n }\r\n const mtx = this.startCtm.inverse().scaleO(this.startBox.w / w, this.startBox.h / h, this.opposite.x, this.opposite.y).inverseO();\r\n const minSize = 10;\r\n if (w > minSize && h > minSize) // don't let element get too small\r\n this.handles.el.markupStretch(w, h, x, y, mtx);\r\n }\r\n}\r\n\r\n/** A ModifyHandle to rotate an element\r\n * @public\r\n */\r\nclass RotateHandle extends ModifyHandle {\r\n private readonly _line: Line;\r\n private readonly _circle: MarkupElement;\r\n public location!: Point2d;\r\n\r\n constructor(public override handles: Handles) {\r\n super(handles);\r\n const props = MarkupApp.props.handles;\r\n\r\n this._line = handles.group.line(0, 0, 1, 1).attr(props.rotateLine).addClass(MarkupApp.rotateLineClass);\r\n this._circle = handles.group.circle(props.size * 1.25).attr(props.rotate).addClass(MarkupApp.rotateHandleClass);\r\n this._circle = this.addTouchPadding(this._circle, handles);\r\n this.setMouseHandler(this._circle);\r\n }\r\n public get centerVb() { return this.handles.npcToVb({ x: .5, y: .5 }); }\r\n public get anchorVb() { return this.handles.npcToVb({ x: .5, y: 0 }); }\r\n public setPosition(): void {\r\n const anchor = this.anchorVb;\r\n const dir = this.centerVb.vectorTo(anchor).normalize()!;\r\n const loc = this.location = anchor.plusScaled(dir, MarkupApp.props.handles.size * 3);\r\n this._line.plot(anchor.x, anchor.y, loc.x, loc.y);\r\n this._circle.center(loc.x, loc.y);\r\n }\r\n public modify(ev: BeButtonEvent): void {\r\n const centerVp = this.centerVb;\r\n const currDir = centerVp.vectorTo(MarkupApp.convertVpToVb(ev.viewPoint));\r\n const dir = centerVp.vectorTo(this.location);\r\n this.handles.el.rotate(dir.angleTo(currDir).degrees);\r\n }\r\n}\r\n\r\n/** A VertexHandle to move a point on a line\r\n * @public\r\n */\r\nclass VertexHandle extends ModifyHandle {\r\n private readonly _circle: MarkupElement;\r\n private readonly _x: string;\r\n private readonly _y: string;\r\n\r\n constructor(public override handles: Handles, index: number) {\r\n super(handles);\r\n const props = MarkupApp.props.handles;\r\n this._circle = handles.group.circle(props.size).attr(props.vertex).addClass(MarkupApp.vertexHandleClass);\r\n this._x = `x${index + 1}`;\r\n this._y = `y${index + 1}`;\r\n this._circle = this.addTouchPadding(this._circle, handles);\r\n this.setMouseHandler(this._circle);\r\n }\r\n public setPosition(): void {\r\n let point = new Point(this.handles.el.attr(this._x), this.handles.el.attr(this._y));\r\n const matrix = this.handles.el.screenCTM().lmultiplyO(MarkupApp.screenToVbMtx());\r\n point = point.transform(matrix);\r\n this._circle.center(point.x, point.y);\r\n }\r\n public modify(ev: BeButtonEvent): void {\r\n let point = new Point(ev.viewPoint.x, ev.viewPoint.y);\r\n const matrix = this.handles.el.screenCTM().inverseO().multiplyO(MarkupApp.getVpToScreenMtx());\r\n point = point.transform(matrix);\r\n const el = this.handles.el;\r\n el.attr(this._x, point.x);\r\n el.attr(this._y, point.y);\r\n }\r\n}\r\n\r\n/** A handle that moves (translates) an element.\r\n * @public\r\n */\r\nclass MoveHandle extends ModifyHandle {\r\n private readonly _shape: MarkupElement;\r\n private readonly _outline?: Polygon;\r\n private _lastPos?: Point3d;\r\n constructor(public override handles: Handles, showBBox: boolean) {\r\n super(handles);\r\n const props = MarkupApp.props.handles;\r\n const clone = this.handles.el.cloneMarkup();\r\n clone.css(props.move);\r\n clone.forElementsOfGroup((child) => child.css(props.move));\r\n\r\n if (showBBox) {\r\n this._outline = handles.group.polygon().attr(props.moveOutline);\r\n const rect = this.handles.el.getOutline().attr(props.move).attr({ fill: \"none\" });\r\n\r\n const group = handles.group.group();\r\n group.add(this._outline);\r\n group.add(rect);\r\n group.add(clone);\r\n this._shape = group;\r\n } else {\r\n clone.addTo(handles.group);\r\n this._shape = clone;\r\n }\r\n\r\n this._shape.addClass(MarkupApp.moveHandleClass);\r\n this.setMouseHandler(this._shape);\r\n }\r\n public override async onClick(_ev: BeButtonEvent): Promise<void> {\r\n const el = this.handles.el;\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n if (el instanceof MarkupText || (el instanceof G && el.node.className.baseVal === MarkupApp.boxedTextClass)) // if they click on the move handle of a text element, start the text editor\r\n await new EditTextTool(el).run();\r\n }\r\n /** draw the outline of the element's bbox (in viewbox coordinates) */\r\n public setPosition() {\r\n if (undefined !== this._outline) {\r\n const pts = [new Point2d(0, 0), new Point2d(0, 1), new Point2d(1, 1), new Point2d(1, 0)];\r\n this._outline.plot(this.handles.npcToVbArray(pts).map((pt) => [pt.x, pt.y] as ArrayXY));\r\n }\r\n }\r\n public override startDrag(ev: BeButtonEvent) {\r\n super.startDrag(ev, ev.isShiftKey);\r\n this._lastPos = MarkupApp.convertVpToVb(ev.viewPoint); // save stating position in viewbox coordinates\r\n }\r\n public modify(ev: BeButtonEvent): void {\r\n const evPt = MarkupApp.convertVpToVb(ev.viewPoint);\r\n assert(this._lastPos !== undefined);\r\n const dist = evPt.minus(this._lastPos);\r\n this._lastPos = evPt;\r\n this.handles.el.translate(dist.x, dist.y); // move the element\r\n }\r\n}\r\n\r\n/** The set of ModifyHandles active. Only applies if there is a single element selected.\r\n * @public\r\n */\r\nexport class Handles {\r\n public readonly handles: ModifyHandle[] = [];\r\n public active?: ModifyHandle;\r\n public dragging = false;\r\n public group: G;\r\n public npcToVbTrn!: Transform;\r\n public vbToBoxTrn!: Transform;\r\n\r\n constructor(public ss: MarkupSelected, public el: MarkupElement) {\r\n this.group = ss.svg.group();\r\n\r\n if (el instanceof Line) {\r\n this.handles.push(new MoveHandle(this, false));\r\n this.handles.push(new VertexHandle(this, 0));\r\n this.handles.push(new VertexHandle(this, 1));\r\n this.draw(); // show starting state\r\n return;\r\n }\r\n\r\n // move box is in the back\r\n this.handles.push(new MoveHandle(this, true));\r\n // then rotate handle\r\n this.handles.push(new RotateHandle(this));\r\n\r\n // then add all the stretch handles\r\n const pts = [[0, 0], [0, .5], [0, 1], [.5, 1], [1, 1], [1, .5], [1, 0], [.5, 0]];\r\n const cursors = [\"nw\", \"w\", \"sw\", \"s\", \"se\", \"e\", \"ne\", \"n\"];\r\n const order = [7, 3, 1, 5, 2, 6, 0, 4];\r\n const angle = el.screenCTM().decompose().rotate || 0;\r\n const start = Math.round(-angle / 45); // so that we rotate the cursors for rotated elements\r\n order.forEach((index) => this.handles.push(new StretchHandle(this, pts[index] as ArrayXY, cursors[(index + start + 8) % 8])));\r\n this.draw(); // show starting state\r\n }\r\n\r\n public npcToBox(p: XAndY) {\r\n const pt = this.npcToVb(p);\r\n return this.vbToBox(pt, pt);\r\n }\r\n\r\n public npcToVb(p: XAndY, result?: Point2d): Point2d { return this.npcToVbTrn.multiplyPoint2d(p, result); }\r\n public vbToBox(p: XAndY, result?: Point2d): Point2d { return this.vbToBoxTrn.multiplyPoint2d(p, result); }\r\n public npcToVbArray(pts: Point2d[]): Point2d[] {\r\n pts.forEach((pt) => this.npcToVb(pt, pt));\r\n return pts;\r\n }\r\n\r\n public draw() {\r\n const el = this.el;\r\n const bb = el.bbox();\r\n const ctm = el.screenCTM().lmultiplyO(MarkupApp.screenToVbMtx());\r\n this.vbToBoxTrn = ctm.inverse().toIModelTransform();\r\n this.npcToVbTrn = new Matrix().scaleO(bb.w, bb.h).translateO(bb.x, bb.y).lmultiplyO(ctm).toIModelTransform();\r\n this.handles.forEach((h) => h.setPosition());\r\n }\r\n\r\n public remove() {\r\n if (this.dragging)\r\n this.cancelDrag();\r\n this.group.remove();\r\n }\r\n\r\n public startDrag(ev: BeButtonEvent): EventHandled {\r\n if (this.active) {\r\n this.active.startDrag(ev);\r\n this.dragging = true;\r\n MarkupApp.markup!.disablePick();\r\n IModelApp.toolAdmin.setCursor(IModelApp.viewManager.dynamicsCursor);\r\n }\r\n return EventHandled.Yes;\r\n }\r\n public drag(ev: BeButtonEvent) {\r\n if (this.dragging) {\r\n this.active!.modify(ev);\r\n this.draw();\r\n }\r\n }\r\n /** complete the modification for the active handle. */\r\n public endDrag(undo: UndoManager): EventHandled {\r\n undo.performOperation(MarkupApp.getActionName(\"modify\"), () => {\r\n const el = this.el;\r\n const original = el.originalEl!; // save original element\r\n if (original === undefined) {\r\n this.ss.emptyAll();\r\n this.ss.add(el);\r\n undo.onAdded(el);\r\n } else {\r\n el.originalEl = undefined; // clear original element\r\n undo.onModified(el, original);\r\n }\r\n });\r\n this.draw();\r\n this.dragging = false;\r\n this.active = undefined;\r\n MarkupApp.markup!.enablePick();\r\n return EventHandled.Yes;\r\n }\r\n\r\n /** called when the reset button is pressed. */\r\n public cancelDrag() {\r\n if (!this.dragging)\r\n return;\r\n const el = this.el;\r\n const original = el.originalEl!;\r\n if (original) {\r\n el.replace(original);\r\n this.el = original;\r\n }\r\n this.draw();\r\n this.active = undefined;\r\n MarkupApp.markup!.enablePick();\r\n }\r\n}\r\n\r\n/** The set of currently selected SVG elements. When elements are added to the set, they are hilited.\r\n * @public\r\n */\r\nexport class MarkupSelected {\r\n public readonly elements = new Set<MarkupElement>();\r\n public handles?: Handles;\r\n\r\n /** Called whenever elements are added or removed from this SelectionSet */\r\n public readonly onChanged = new BeEvent<(selected: MarkupSelected) => void>();\r\n\r\n public get size() { return this.elements.size; }\r\n public get isEmpty() { return this.size === 0; }\r\n public has(el: MarkupElement) { return this.elements.has(el); }\r\n public emptyAll(): void {\r\n this.clearEditors();\r\n if (this.isEmpty)\r\n return; // Don't send onChanged if already empty.\r\n this.elements.forEach((el) => el.unHilite());\r\n this.elements.clear();\r\n this.onChanged.raiseEvent(this);\r\n }\r\n public restart(el?: MarkupElement) {\r\n this.emptyAll();\r\n if (el)\r\n this.add(el);\r\n }\r\n public constructor(public svg: G) { }\r\n public clearEditors() {\r\n if (this.handles) {\r\n this.handles.remove();\r\n this.handles = undefined;\r\n }\r\n }\r\n public sizeChanged() {\r\n this.clearEditors();\r\n if (this.elements.size === 1)\r\n this.handles = new Handles(this, this.elements.values().next().value!);\r\n this.onChanged.raiseEvent(this);\r\n }\r\n /** Add a new element to the SS */\r\n public add(el: MarkupElement) {\r\n this.elements.add(el);\r\n el.hilite();\r\n this.sizeChanged();\r\n }\r\n /** Remove an element from the selection set and unhilite it.\r\n * @returns true if the element was in the SS and was removed.\r\n */\r\n public drop(el: MarkupElement): boolean {\r\n el.unHilite();\r\n return this.elements.delete(el) ? (this.sizeChanged(), true) : false;\r\n }\r\n\r\n /** Replace an entry in the selection set with a different element. */\r\n public replace(oldEl: MarkupElement, newEl: MarkupElement) {\r\n if (this.drop(oldEl))\r\n this.add(newEl);\r\n }\r\n\r\n public deleteAll(undo: UndoManager) {\r\n undo.performOperation(MarkupApp.getActionName(\"delete\"), () => this.elements.forEach((el) => {\r\n undo.onDelete(el);\r\n el.remove();\r\n }));\r\n\r\n this.emptyAll();\r\n }\r\n\r\n public groupAll(undo: UndoManager) {\r\n if (this.size < 2)\r\n return;\r\n const first = this.elements.values().next().value!;\r\n const parent = first.parent() as Container;\r\n const group = parent.group();\r\n\r\n const ordered: MarkupElement[] = [];\r\n this.elements.forEach((el) => ordered.push(el));\r\n ordered.sort((lhs, rhs) => parent.index(lhs) - parent.index(rhs)); // Preserve relative z ordering\r\n\r\n undo.performOperation(MarkupApp.getActionName(\"group\"), () => {\r\n ordered.forEach((el) => {\r\n const oldParent = el.parent() as MarkupElement;\r\n const oldPos = el.position();\r\n el.unHilite();\r\n undo.onRepositioned(el.addTo(group), oldPos, oldParent);\r\n }), undo.onAdded(group);\r\n });\r\n this.restart(group);\r\n }\r\n\r\n public ungroupAll(undo: UndoManager) {\r\n const groups = new Set<MarkupElement>();\r\n this.elements.forEach((el) => {\r\n if (el instanceof G)\r\n groups.add(el);\r\n });\r\n\r\n if (0 === groups.size)\r\n return;\r\n\r\n undo.performOperation(MarkupApp.getActionName(\"ungroup\"), () => {\r\n groups.forEach((g) => {\r\n g.unHilite();\r\n this.elements.delete(g);\r\n undo.onDelete(g);\r\n g.each((index, children) => {\r\n const child = children[index];\r\n const oldPos = child.position();\r\n child.toParent(g.parent());\r\n undo.onRepositioned(child, oldPos, g);\r\n }, false);\r\n\r\n g.untransform(); // Don't want undo of ungroup to push the current group transform...\r\n g.remove();\r\n });\r\n });\r\n this.sizeChanged();\r\n }\r\n\r\n /** Move all of the entries to a new position in the DOM via a callback. */\r\n public reposition(cmdName: string, undo: UndoManager, fn: (el: MarkupElement) => void) {\r\n undo.performOperation(cmdName, () => this.elements.forEach((el) => {\r\n const oldParent = el.parent() as MarkupElement;\r\n const oldPos = el.position();\r\n fn(el);\r\n undo.onRepositioned(el, oldPos, oldParent);\r\n }));\r\n this.sizeChanged();\r\n }\r\n}\r\n\r\n/** Provides UI for selection, delete, move, copy, bring-to-front, send-to-back, etc. for Markup SVG elements\r\n * @public\r\n */\r\nexport class SelectTool extends MarkupTool {\r\n public static override toolId = \"Markup.Select\";\r\n public static override iconSpec = \"icon-cursor\";\r\n private _flashedElement?: MarkupElement;\r\n private readonly _dragging: MarkupElement[] = [];\r\n private _anchorPt!: Point3d;\r\n private _isBoxSelect = false;\r\n\r\n public get flashedElement(): MarkupElement | undefined { return this._flashedElement; }\r\n public set flashedElement(el: MarkupElement | undefined) {\r\n if (el === this._flashedElement)\r\n return;\r\n\r\n if (undefined !== this._flashedElement)\r\n this._flashedElement.unFlash();\r\n\r\n if (undefined !== el)\r\n el.flash();\r\n\r\n this._flashedElement = el;\r\n }\r\n protected unflashSelected(): void {\r\n if (undefined !== this._flashedElement && this.markup.selected.has(this._flashedElement))\r\n this.flashedElement = undefined;\r\n }\r\n private initSelect() {\r\n this.markup.setCursor(\"default\");\r\n this.markup.enablePick();\r\n this.flashedElement = undefined;\r\n this.boxSelectInit();\r\n }\r\n private clearSelect() {\r\n this.cancelDrag();\r\n this.markup.selected.emptyAll();\r\n }\r\n public override async onCleanup() { this.clearSelect(); }\r\n public override async onPostInstall() {\r\n this.initSelect();\r\n return super.onPostInstall();\r\n }\r\n\r\n public override async onRestartTool() { this.initSelect(); }\r\n\r\n protected override showPrompt(): void {\r\n const mainInstruction = ToolAssistance.createInstruction(this.iconSpec, IModelApp.localization.getLocalizedString(`${MarkupTool.toolKey}Select.Prompts.IdentifyMarkup`));\r\n const mouseInstructions: ToolAssistanceInstruction[] = [];\r\n const touchInstructions: ToolAssistanceInstruction[] = [];\r\n\r\n const acceptMsg = IModelApp.localization.getLocalizedString(`${MarkupTool.toolKey}Select.Prompts.AcceptMarkup`);\r\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.OneTouchTap, acceptMsg, false, ToolAssistanceInputMethod.Touch));\r\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.LeftClick, acceptMsg, false, ToolAssistanceInputMethod.Mouse));\r\n\r\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.OneTouchDrag, CoreTools.translate(\"ElementSet.Inputs.BoxCorners\"), false, ToolAssistanceInputMethod.Touch));\r\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.LeftClickDrag, CoreTools.translate(\"ElementSet.Inputs.BoxCorners\"), false, ToolAssistanceInputMethod.Mouse));\r\n\r\n mouseInstructions.push(ToolAssistance.createModifierKeyInstruction(ToolAssistance.shiftKey, ToolAssistanceImage.LeftClickDrag, CoreTools.translate(\"ElementSet.Inputs.OverlapSelection\"), false, ToolAssistanceInputMethod.Mouse));\r\n mouseInstructions.push(ToolAssistance.createModifierKeyInstruction(ToolAssistance.ctrlKey, ToolAssistanceImage.LeftClick, CoreTools.translate(\"ElementSet.Inputs.InvertSelection\"), false, ToolAssistanceInputMethod.Mouse));\r\n\r\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.CursorClick, CoreTools.translate(\"ElementSet.Inputs.ClearSelection\"), false, ToolAssistanceInputMethod.Mouse));\r\n\r\n const sections: ToolAssistanceSection[] = [];\r\n sections.push(ToolAssistance.createSection(mouseInstructions, ToolAssistance.inputsLabel));\r\n sections.push(ToolAssistance.createSection(touchInstructions, ToolAssistance.inputsLabel));\r\n\r\n const instructions = ToolAssistance.createInstructions(mainInstruction, sections);\r\n IModelApp.notifications.setToolAssistance(instructions);\r\n }\r\n\r\n /** When we start a drag operation, we add a new set of elements to the DOM and start modifying them.\r\n * If we cancel the operation, we need remove them from the DOM.\r\n */\r\n private cancelDrag() {\r\n this._dragging.forEach((el) => el.remove()); // remove temporary elements from DOM\r\n this._dragging.length = 0;\r\n this.boxSelectInit();\r\n }\r\n public override async onResetButtonUp(_ev: BeButtonEvent): Promise<EventHandled> {\r\n const selected = this.markup.selected;\r\n const handles = selected.handles;\r\n if (handles && handles.dragging)\r\n handles.cancelDrag();\r\n\r\n this.cancelDrag();\r\n selected.sizeChanged();\r\n return EventHandled.Yes;\r\n }\r\n\r\n /** Called when there is a mouse \"click\" (down+up without any motion) */\r\n public override async onDataButtonUp(ev: BeButtonEvent): Promise<EventHandled> {\r\n const markup = this.markup;\r\n const selected = markup.selected;\r\n const handles = selected.handles;\r\n if (handles) {\r\n if (handles.dragging)\r\n return handles.endDrag(markup.undo);\r\n if (handles.active) { // clicked on a handle\r\n if (ev.isControlKey)\r\n selected.drop(handles.el);\r\n else\r\n await handles.active.onClick(ev);\r\n handles.active = undefined;\r\n return EventHandled.Yes;\r\n }\r\n }\r\n\r\n const el = this.flashedElement = this.pickElement(ev.viewPoint);\r\n if (ev.isControlKey) {\r\n if (el && selected.drop(el))\r\n return EventHandled.Yes;\r\n } else {\r\n selected.emptyAll();\r\n }\r\n\r\n if (el !== undefined)\r\n selected.add(el);\r\n return EventHandled.Yes;\r\n }\r\n\r\n public override async onTouchTap(ev: BeTouchEvent): Promise<EventHandled> {\r\n // Allow tap with a second touch point to multiselect (similar functionality to control being held with mouse click).\r\n if (ev.isSingleTap && 2 === ev.touchEvent.touches.length) {\r\n const el = this.flashedElement = this.pickElement(ev.viewPoint);\r\n if (el) {\r\n const selected = this.markup.selected;\r\n if (!selected.drop(el))\r\n selected.add(el);\r\n return EventHandled.Yes;\r\n }\r\n }\r\n return super.onTouchTap(ev);\r\n }\r\n\r\n protected boxSelectInit(): void {\r\n this._isBoxSelect = false;\r\n this.markup.svgDynamics!.clear();\r\n }\r\n\r\n protected boxSelectStart(ev: BeButtonEvent): boolean {\r\n if (!ev.isControlKey)\r\n this.markup.selected.emptyAll();\r\n this._anchorPt = MarkupApp.convertVpToVb(ev.viewPoint);\r\n this._isBoxSelect = true;\r\n return true;\r\n }\r\n\r\n protected boxSelect(ev: BeButtonEvent, isDynamics: boolean): boolean {\r\n if (!this._isBoxSelect)\r\n return false;\r\n const start = this._anchorPt;\r\n const end = MarkupApp.convertVpToVb(ev.viewPoint);\r\n const vec = start.vectorTo(end);\r\n const width = Math.abs(vec.x);\r\n const height = Math.abs(vec.y);\r\n if (width < 1 || height < 1)\r\n return true;\r\n const rightToLeft = (start.x > end.x);\r\n const overlapMode = (ev.isShiftKey ? !rightToLeft : rightToLeft); // Shift inverts inside/overlap selection...\r\n const offset = Point3d.create(vec.x < 0 ? end.x : start.x, vec.y < 0 ? end.y : start.y); // define location by corner points...\r\n this.markup.svgDynamics!.clear();\r\n this.markup.svgDynamics!.rect(width, height).move(offset.x, offset.y).css({ \"stroke-width\": 1, \"stroke\": \"black\", \"stroke-opacity\": 0.5, \"fill\": \"lightBlue\", \"fill-opacity\": 0.2 });\r\n const selectBox = this.markup.svgDynamics!.rect(width, height).move(offset.x, offset.y).css({ \"stroke-width\": 1, \"stroke\": \"white\", \"stroke-opacity\": 1.0, \"stroke-dasharray\": overlapMode ? \"5\" : \"2\", \"fill\": \"none\" });\r\n const outlinesG = isDynamics ? this.markup.svgDynamics!.group() : undefined;\r\n const selectRect = selectBox.node.getBoundingClientRect();\r\n this.markup.svgMarkup!.forElementsOfGroup((child) => {\r\n const childRect = child.node.getBoundingClientRect();\r\n const inside = (childRect.left >= selectRect.left && childRect.top >= selectRect.top && childRect.right <= selectRect.right && childRect.bottom <= selectRect.bottom);\r\n const overlap = !inside && (childRect.left < selectRect.right && childRect.right > selectRect.left && childRect.bottom > selectRect.top && childRect.top < selectRect.bottom);\r\n const accept = inside || (overlap && overlapMode);\r\n if (undefined !== outlinesG) {\r\n if (inside || overlap) {\r\n const outline = child.getOutline().attr(MarkupApp.props.handles.moveOutline).addTo(outlinesG);\r\n if (accept)\r\n outline.attr({ \"fill\": MarkupApp.props.hilite.flash, \"fill-opacity\": 0.2 });\r\n }\r\n } else if (accept) {\r\n this.markup.selected.add(child);\r\n }\r\n });\r\n if (!isDynamics)\r\n this.boxSelectInit();\r\n return true;\r\n }\r\n\r\n /** called when the mouse moves while the data button is down. */\r\n public override async onMouseStartDrag(ev: BeButtonEvent): Promise<EventHandled> {\r\n if (BeButton.Data !== ev.button)\r\n return EventHandled.No;\r\n\r\n const markup = this.markup;\r\n const selected = markup.selected;\r\n const handles = selected.handles;\r\n if (handles && handles.active) {\r\n this.flashedElement = undefined; // make sure there are no elements flashed while dragging\r\n return handles.startDrag(ev);\r\n }\r\n\r\n const flashed = this.flashedElement = this.pickElement(ev.viewPoint);\r\n if (undefined === flashed)\r\n return this.boxSelectStart(ev) ? EventHandled.Yes : EventHandled.No;\r\n\r\n if (!selected.has(flashed))\r\n selected.restart(flashed); // we clicked on an element not in the selection set, replace current selection with just this element\r\n\r\n selected.clearEditors();\r\n this._anchorPt = MarkupApp.convertVpToVb(ev.viewPoint); // save the starting point. This is the point where the \"down\" occurred.\r\n this.cancelDrag();\r\n\r\n selected.elements.forEach((el) => { // add all selected elements to the \"dragging\" set\r\n const cloned = el.cloneMarkup(); // make a clone of this element\r\n el.after(cloned); // put it into the DOM after its original\r\n cloned.originalEl = el; // save original element so we can remove it if this is a \"move\" command\r\n this._dragging.push(cloned); // add to dragging set\r\n });\r\n return EventHandled.Yes;\r\n }\r\n\r\n /** Called whenever the mouse moves while this tool is active. */\r\n public override async onMouseMotion(ev: BeButtonEvent): Promise<void> {\r\n const markup = this.markup;\r\n const handles = markup.selected.handles;\r\n if (handles && handles.dragging) {\r\n this.receivedDownEvent = true; // necessary to tell ToolAdmin to send us the button up event\r\n return handles.drag(ev); // drag the handle\r\n }\r\n\r\n if (this._dragging.length === 0) {\r\n if (this.boxSelect(ev, true))\r\n return;\r\n if (InputSource.Touch !== ev.inputSource)\r\n this.flashedElement = this.pickElement(ev.viewPoint); // if we're not dragging, try to find an element under the cursor\r\n return;\r\n }\r\n\r\n // we have a set of elements being dragged. NOTE: coordinates are viewbox\r\n const vbPt = MarkupApp.convertVpToVb(ev.viewPoint);\r\n const delta = vbPt.minus(this._anchorPt);\r\n this._dragging.forEach((el) => el.translate(delta.x, delta.y));\r\n this._anchorPt = vbPt; // translate moves from last mouse location\r\n }\r\n\r\n /** Called when the mouse goes up after dragging. */\r\n public override async onMouseEndDrag(ev: BeButtonEvent): Promise<EventHandled> {\r\n const markup = this.markup;\r\n const selected = markup.selected;\r\n const handles = selected.handles;\r\n if (handles && handles.dragging) // if we have handles up, and if they're in the \"dragging\" state, send the event to them\r\n return handles.endDrag(markup.undo);\r\n\r\n if (this._dragging.length === 0)\r\n return this.boxSelect(ev, false) ? EventHandled.Yes : EventHandled.No;\r\n\r\n // NOTE: all units should be in viewbox coordinates\r\n const delta = MarkupApp.convertVpToVb(ev.viewPoint).minus(this._anchorPt);\r\n const undo = markup.undo;\r\n if (ev.isShiftKey) // shift key means \"add to existing,\" otherwise new selection replaces old\r\n selected.emptyAll();\r\n\r\n // move or copy all of the elements in dragged set\r\n undo.performOperation(MarkupApp.getActionName(\"copy\"), () => this._dragging.forEach((el) => {\r\n el.translate(delta.x, delta.y); // move to final location\r\n const original = el.originalEl!; // save original element\r\n el.originalEl = undefined; // clear original element\r\n if (ev.isShiftKey) {\r\n selected.add(el);\r\n undo.onAdded(el); // shift key means copy element\r\n } else {\r\n original.replace(el);\r\n undo.onModified(el, original);\r\n }\r\n }));\r\n\r\n this._dragging.length = 0; // empty dragging set\r\n selected.sizeChanged(); // notify that size of selection set changed\r\n return EventHandled.Yes;\r\n }\r\n\r\n /** called when a modifier key is pressed or released. Updates stretch handles, if present */\r\n public override async onModifierKeyTransition(_wentDown: boolean, modifier: BeModifierKeys, _event: KeyboardEvent): Promise<EventHandled> {\r\n if (modifier !== BeModifierKeys.Shift) // we only care about the shift key\r\n return EventHandled.No;\r\n const selected = this.markup.selected;\r\n const handles = selected.handles;\r\n if (undefined === handles || !handles.dragging) // and only if we're currently dragging\r\n return EventHandled.No;\r\n const ev = new BeButtonEvent(); // we need to simulate a mouse motion by sending a drag event at the last cursor position\r\n IModelApp.toolAdmin.fillEventFromCursorLocation(ev);\r\n return (undefined === ev.viewport) ? EventHandled.No : (handles.drag(ev), EventHandled.Yes);\r\n }\r\n\r\n /** called whenever a key is pressed while this tool is active. */\r\n public override async onKeyTransition(wentDown: boolean, key: KeyboardEvent): Promise<EventHandled> {\r\n if (!wentDown)\r\n return EventHandled.No;\r\n const markup = this.markup;\r\n switch (key.key.toLowerCase()) {\r\n case \"delete\": // delete key or backspace = delete current selection set\r\n case \"backspace\":\r\n this.unflashSelected();\r\n markup.deleteSelected();\r\n return EventHandled.Yes;\r\n case \"escape\": // esc = cancel current operation\r\n await this.exitTool();\r\n return EventHandled.Yes;\r\n case \"b\": // alt-shift-b = send to back\r\n return (key.altKey && key.shiftKey) ? (markup.sendToBack(), EventHandled.Yes) : EventHandled.No;\r\n case \"f\": // alt-shift-f = bring to front\r\n return (key.altKey && key.shiftKey) ? (markup.bringToFront(), EventHandled.Yes) : EventHandled.No;\r\n case \"g\": // ctrl-g = create group\r\n return (key.ctrlKey) ? (this.unflashSelected(), markup.groupSelected(), EventHandled.Yes) : EventHandled.No;\r\n case \"u\": // ctrl-u = ungroup\r\n return (key.ctrlKey) ? (this.unflashSelected(), markup.ungroupSelected(), EventHandled.Yes) : EventHandled.No;\r\n }\r\n return EventHandled.No;\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SvgJsExt.d.ts","sourceRoot":"","sources":["../../src/SvgJsExt.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,GAAG,EAAa,OAAO,IAAI,aAAa,EAAE,MAAM,EAAwC,MAAM,kBAAkB,CAAC;AAO1H,cAAc;AACd,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,GAAG,CAAC;IACV,MAAM,EAAE,GAAG,CAAC;CACb;AAED;;GAEG;AACH,OAAO,QAAQ,kBAAkB,CAAC;IAChC,SAAS,QAAQ,CAAC,QAAQ,EAAE,OAAO,aAAa,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvE,SAAS,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,CAAC;IAEjD,UAAU,GAAG;QACX,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;KACxB;IACD,cAAc;IACd,UAAU,OAAO;QACf,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,UAAU,CAAC,EAAE,OAAO,CAAC;QAErB,mGAAmG;QACnG,WAAW,IAAI,IAAI,CAAC;QACpB,mFAAmF;QACnF,UAAU,IAAI,IAAI,CAAC;QACnB,yEAAyE;QACzE,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QACnC,wDAAwD;QACxD,MAAM,IAAI,IAAI,CAAC;QACf,mDAAmD;QACnD,QAAQ,IAAI,IAAI,CAAC;QACjB,0CAA0C;QAC1C,KAAK,IAAI,IAAI,CAAC;QACd,2BAA2B;QAC3B,OAAO,IAAI,IAAI,CAAC;QAChB,yCAAyC;QACzC,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7E,kEAAkE;QAClE,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC;QAC7B,oHAAoH;QACpH,iBAAiB,CAAC,GAAG,EAAE,CAAC,GAAG,aAAa,GAAG,SAAS,CAAC;QAErD,gBAAgB;QAChB,kBAAkB,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,GAAG,IAAI,CAAC;QAC7D,gBAAgB;QAChB,UAAU,IAAI,MAAM,CAAC;QACrB,gBAAgB;QAChB,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACnC;IACD,cAAc;IACd,UAAU,IAAI;QACZ,SAAS,IAAI,MAAM,CAAC;QACpB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACjD,WAAW,IAAI,MAAM,CAAC;KACvB;IAED,cAAc;IACd,UAAU,MAAM;QACd,uDAAuD;QACvD,iBAAiB,IAAI,SAAS,CAAC;QAC/B,mBAAmB,CAAC,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;KACzC;IAED,gBAAgB;IAChB,UAAU,SAAS;QACjB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC;KAC7D;IACD,MAAM,aAAc,SAAQ,SAAS;KACpC;CACF;AAoJD;;GAEG;AACH,qBAAa,KAAM,SAAQ,aAAa;gBAC1B,IAAI,EAAE,GAAG;IACL,KAAK;IACL,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,SAAS;CAE1B;AAGD;;GAEG;AACH,wBAAgB,UAAU,SAAM"}
1
+ {"version":3,"file":"SvgJsExt.d.ts","sourceRoot":"","sources":["../../src/SvgJsExt.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,GAAG,EAAa,OAAO,IAAI,aAAa,EAAE,MAAM,EAAwC,MAAM,kBAAkB,CAAC;AAK1H,cAAc;AACd,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,GAAG,CAAC;IACV,MAAM,EAAE,GAAG,CAAC;CACb;AAED;;GAEG;AACH,OAAO,QAAQ,kBAAkB,CAAC;IAChC,SAAS,QAAQ,CAAC,QAAQ,EAAE,OAAO,aAAa,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvE,SAAS,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,CAAC;IAEjD,UAAU,GAAG;QACX,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;KACxB;IACD,cAAc;IACd,UAAU,OAAO;QACf,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,UAAU,CAAC,EAAE,OAAO,CAAC;QAErB,mGAAmG;QACnG,WAAW,IAAI,IAAI,CAAC;QACpB,mFAAmF;QACnF,UAAU,IAAI,IAAI,CAAC;QACnB,yEAAyE;QACzE,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QACnC,wDAAwD;QACxD,MAAM,IAAI,IAAI,CAAC;QACf,mDAAmD;QACnD,QAAQ,IAAI,IAAI,CAAC;QACjB,0CAA0C;QAC1C,KAAK,IAAI,IAAI,CAAC;QACd,2BAA2B;QAC3B,OAAO,IAAI,IAAI,CAAC;QAChB,yCAAyC;QACzC,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7E,kEAAkE;QAClE,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC;QAC7B,oHAAoH;QACpH,iBAAiB,CAAC,GAAG,EAAE,CAAC,GAAG,aAAa,GAAG,SAAS,CAAC;QAErD,gBAAgB;QAChB,kBAAkB,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,GAAG,IAAI,CAAC;QAC7D,gBAAgB;QAChB,UAAU,IAAI,MAAM,CAAC;QACrB,gBAAgB;QAChB,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACnC;IACD,cAAc;IACd,UAAU,IAAI;QACZ,SAAS,IAAI,MAAM,CAAC;QACpB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACjD,WAAW,IAAI,MAAM,CAAC;KACvB;IAED,cAAc;IACd,UAAU,MAAM;QACd,uDAAuD;QACvD,iBAAiB,IAAI,SAAS,CAAC;QAC/B,mBAAmB,CAAC,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;KACzC;IAED,gBAAgB;IAChB,UAAU,SAAS;QACjB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC;KAC7D;IACD,MAAM,aAAc,SAAQ,SAAS;KACpC;CACF;AAoJD;;GAEG;AACH,qBAAa,KAAM,SAAQ,aAAa;gBAC1B,IAAI,EAAE,GAAG;IACL,KAAK;IACL,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,SAAS;CAE1B;AAGD;;GAEG;AACH,wBAAgB,UAAU,SAAM"}
@@ -7,7 +7,8 @@
7
7
  * @module MarkupApp
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.initSvgExt = exports.Title = void 0;
10
+ exports.Title = void 0;
11
+ exports.initSvgExt = initSvgExt;
11
12
  const core_geometry_1 = require("@itwin/core-geometry");
12
13
  const svg_js_1 = require("@svgdotjs/svg.js");
13
14
  const Markup_1 = require("./Markup");
@@ -182,5 +183,4 @@ exports.Title = Title;
182
183
  * @internal
183
184
  */
184
185
  function initSvgExt() { }
185
- exports.initSvgExt = initSvgExt;
186
186
  //# sourceMappingURL=SvgJsExt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SvgJsExt.js","sourceRoot":"","sources":["../../src/SvgJsExt.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module MarkupApp\r\n */\r\n\r\nimport { Transform } from \"@itwin/core-geometry\";\r\nimport { Box, extend, G, Element as MarkupElement, Matrix, nodeOrNew, Rect, register, Svg, Text } from \"@svgdotjs/svg.js\";\r\nimport { MarkupApp } from \"./Markup\";\r\n\r\n// cspell:ignore lmultiply matrixify dmove\r\n/* eslint-disable nonblock-statement-body-position */\r\n/* eslint-disable max-statements-per-line */\r\n\r\n/** @public */\r\nexport interface MarkupColor {\r\n fill: any;\r\n stroke: any;\r\n}\r\n\r\n/** Add methods and classes to svg.js library for Markup.\r\n * @public\r\n */\r\ndeclare module \"@svgdotjs/svg.js\" {\r\n function register(subclass: typeof MarkupElement, name?: string): void; // eslint-disable-line @typescript-eslint/no-shadow\r\n function nodeOrNew(name: string, node: any): any; // eslint-disable-line @typescript-eslint/no-shadow\r\n\r\n interface Dom {\r\n css(val: object): this;\r\n }\r\n /** @public */\r\n interface Element {\r\n inSelection?: boolean;\r\n originalEl?: Element;\r\n\r\n /** make a copy of this Element, set its `isMarkup` flag, and reset its color if it was hilited. */\r\n cloneMarkup(): this;\r\n /** if this element is currently hilited or flashed, reset to its original color */\r\n resetColor(): void;\r\n /** override the color of this element to a new color, saving original */\r\n overrideColor(color: string): void;\r\n /** turn on `inSelection` and set its color to hilite */\r\n hilite(): void;\r\n /** turn off hilite, turn off `inSelection` flag */\r\n unHilite(): void;\r\n /** set this element to the flash color */\r\n flash(): void;\r\n /** turn off flash color */\r\n unFlash(): void;\r\n /** reposition and resize this element */\r\n markupStretch(x: number, y: number, w: number, h: number, mtx: Matrix): void;\r\n /** return true if this element is a child of the supplied Svg. */\r\n isChildOf(svg: Svg): boolean;\r\n /** return selectable element or the outermost group containing this element if it's a child of the supplied Svg. */\r\n getChildOrGroupOf(svg: G): MarkupElement | undefined;\r\n\r\n /** @internal */\r\n forElementsOfGroup(fn: (child: MarkupElement) => void): void;\r\n /** @internal */\r\n getNpcToVp(): Matrix;\r\n /** @internal */\r\n getOutline(expand?: number): Rect;\r\n }\r\n /** @public */\r\n interface Text {\r\n getMarkup(): string;\r\n createMarkup(val: string, spacing: number): void;\r\n getFontSize(): number;\r\n }\r\n\r\n /** @public */\r\n interface Matrix {\r\n /** convert this SVG.Matrix into an iModel Transform */\r\n toIModelTransform(): Transform;\r\n fromIModelTransform(t: Transform): this;\r\n }\r\n\r\n /** @internal */\r\n interface Container {\r\n foreignObject(width: number, height: number): ForeignObject;\r\n }\r\n class ForeignObject extends Container {\r\n }\r\n}\r\n\r\nconst OLDCOLOR = \"Color\";\r\n\r\n/** this is the SVG.js way of adding methods to classes */\r\nextend(MarkupElement, {\r\n forElementsOfGroup(fn: (child: MarkupElement) => void): void {\r\n const me = this as MarkupElement;\r\n if (me instanceof G)\r\n me.each((i, children) => { const child = children[i]; if (child instanceof MarkupElement) fn(child); }, false);\r\n },\r\n cloneMarkup(): MarkupElement {\r\n const me = this as MarkupElement;\r\n const cloned = me.clone();\r\n cloned.node.removeAttribute(\"id\");\r\n cloned.resetColor();\r\n return cloned;\r\n },\r\n overrideColor(color: string) {\r\n const me = this as MarkupElement;\r\n me.forElementsOfGroup((child) => child.overrideColor(color)); // Do children first, getComputedStyle will inherit from group for unspecified values...\r\n let oldColor = me.data(OLDCOLOR) as MarkupColor | undefined;\r\n if (undefined === oldColor) {\r\n const css = window.getComputedStyle(me.node);\r\n const colorOrNone = (c: string | null) => (c && c !== \"none\") ? c : \"none\";\r\n oldColor = { fill: colorOrNone(css.fill), stroke: colorOrNone(css.stroke) };\r\n me.data(OLDCOLOR, oldColor);\r\n }\r\n const toColor = (val: string | null) => (!val || val === \"none\") ? \"none\" : color;\r\n me.css({ fill: toColor(oldColor.fill), stroke: toColor(oldColor.stroke) });\r\n },\r\n resetColor() {\r\n const me = this as MarkupElement;\r\n const oldColor = me.data(OLDCOLOR) as MarkupColor;\r\n if (undefined !== oldColor)\r\n me.css(oldColor).data(OLDCOLOR, null); // change to old color and remove data object\r\n me.forElementsOfGroup((child) => child.resetColor());\r\n },\r\n hilite() { const me = this as MarkupElement; if (!me.inSelection) { me.overrideColor(MarkupApp.props.hilite.color); me.inSelection = true; } },\r\n unHilite() { const me = this as MarkupElement; if (me.inSelection) { me.resetColor(); me.inSelection = undefined; } },\r\n flash() { const me = this as MarkupElement; if (!me.inSelection) me.overrideColor(MarkupApp.props.hilite.flash); },\r\n unFlash() { const me = this as MarkupElement; if (!me.inSelection) me.resetColor(); },\r\n markupStretch(w: number, h: number, x: number, y: number, _mtx: Matrix) { const me = this as MarkupElement; me.size(w, h).move(x, y); },\r\n isChildOf(svg: Svg) {\r\n const parent = (this as MarkupElement).parent();\r\n return (parent === svg) ? true : (parent instanceof MarkupElement) ? parent.isChildOf(svg) : false;\r\n },\r\n getChildOrGroupOf(svg: G): MarkupElement | undefined {\r\n const me = this as MarkupElement;\r\n const parents = me.parents(svg.parent());\r\n if (0 === parents.length || parents[parents.length - 1].node !== svg.node)\r\n return undefined;\r\n if (parents.length > 1) {\r\n for (let index = parents.length - 2; index >= 0; --index)\r\n if (parents[index] instanceof G || parents[index] instanceof Text)\r\n return parents[index];\r\n }\r\n return me;\r\n },\r\n getNpcToVp(): Matrix {\r\n const me = this as MarkupElement;\r\n const bb = me.bbox();\r\n return new Matrix().scaleO(bb.w, bb.h).translateO(bb.x, bb.y).lmultiplyO(me.matrixify());\r\n },\r\n getOutline(expand?: number): Rect {\r\n const me = this as MarkupElement;\r\n const box = me.bbox();\r\n if (expand === undefined) expand = 0;\r\n return new Rect().move(box.x - expand, box.y - expand).size(box.w + (expand * 2), box.h + (expand * 2)).transform(me.matrixify());\r\n },\r\n});\r\n\r\nextend(G, {\r\n markupStretch(_w: number, _h: number, _x: number, _y: number, mtx: Matrix) { (this as G).attr(\"transform\", mtx); },\r\n});\r\nextend(Text, {\r\n getFontSize(): number { const me = this as Text; return parseFloat(window.getComputedStyle(me.node).fontSize); },\r\n markupStretch(_w: number, _h: number, _x: number, _y: number, mtx: Matrix) { (this as Text).attr(\"transform\", mtx); },\r\n getMarkup() {\r\n const node = (this as Text).node;\r\n let text = \"\";\r\n node.childNodes.forEach((child) => {\r\n if (child.nodeName === \"tspan\" || child.nodeName === \"#text\") {\r\n if (text.length !== 0) text += \"\\n\";\r\n text += child.textContent;\r\n }\r\n });\r\n return text;\r\n },\r\n createMarkup(val: string, spacing: number) {\r\n spacing = spacing ? spacing : 1;\r\n const me = this as Text;\r\n me.clear();\r\n if (val === \"\")\r\n return;\r\n const lines = val.split(\"\\n\");\r\n me.plain(lines[0]);\r\n const x = me.attr(\"x\");\r\n me.build(true);\r\n for (let i = 1; i < lines.length; ++i) {\r\n const tspan = me.tspan(lines[i]);\r\n tspan.dy(spacing);\r\n tspan.x(x);\r\n }\r\n me.build(false);\r\n me.dom = {};\r\n },\r\n // override for Text so that empty text will return a size\r\n getOutline(expand?: number): Rect {\r\n const me = this as Text;\r\n const node = me.node;\r\n const content = node.textContent;\r\n if (content !== null && content.length > 0)\r\n return MarkupElement.prototype.getOutline.call(me, expand);\r\n node.textContent = \"M\";\r\n const outline = MarkupElement.prototype.getOutline.call(me, expand);\r\n node.textContent = content;\r\n return outline;\r\n },\r\n writeDataToDom() {\r\n const me = this as Text;\r\n const dom = me.dom; // strip off useless \"leading\" data\r\n me.dom = {};\r\n MarkupElement.prototype.writeDataToDom.call(me);\r\n me.dom = dom;\r\n return me;\r\n },\r\n});\r\n\r\nextend(Matrix, {\r\n toIModelTransform() {\r\n const m = this as Matrix;\r\n return Transform.createRowValues(m.a, m.c, 0, m.e, m.b, m.d, 0, m.f, 0, 0, 1, 0);\r\n },\r\n fromIModelTransform(t: Transform) {\r\n const m = this as Matrix;\r\n const o = t.origin;\r\n const mtx = t.matrix;\r\n m.a = mtx.coffs[0];\r\n m.b = mtx.coffs[3];\r\n m.c = mtx.coffs[1];\r\n m.d = mtx.coffs[4];\r\n m.e = o.x;\r\n m.f = o.y;\r\n return this;\r\n },\r\n});\r\n\r\n/** Dummy class so a <title> inside a <g> will work.\r\n * @internal\r\n */\r\nexport class Title extends MarkupElement {\r\n constructor(node: any) { super(nodeOrNew(\"title\", node)); }\r\n public override scale() { return this; }\r\n public override size() { return this; }\r\n public override move() { return this; }\r\n public override dmove() { return this; }\r\n public override bbox() { return new Box(); }\r\n public override screenCTM() { return new Matrix(); }\r\n\r\n}\r\nregister(Title, \"Title\");\r\n\r\n/** only for tests\r\n * @internal\r\n */\r\nexport function initSvgExt() { }\r\n"]}
1
+ {"version":3,"file":"SvgJsExt.js","sourceRoot":"","sources":["../../src/SvgJsExt.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module MarkupApp\r\n */\r\n\r\nimport { Transform } from \"@itwin/core-geometry\";\r\nimport { Box, extend, G, Element as MarkupElement, Matrix, nodeOrNew, Rect, register, Svg, Text } from \"@svgdotjs/svg.js\";\r\nimport { MarkupApp } from \"./Markup\";\r\n\r\n// cspell:ignore lmultiply matrixify dmove\r\n\r\n/** @public */\r\nexport interface MarkupColor {\r\n fill: any;\r\n stroke: any;\r\n}\r\n\r\n/** Add methods and classes to svg.js library for Markup.\r\n * @public\r\n */\r\ndeclare module \"@svgdotjs/svg.js\" {\r\n function register(subclass: typeof MarkupElement, name?: string): void; // eslint-disable-line @typescript-eslint/no-shadow\r\n function nodeOrNew(name: string, node: any): any; // eslint-disable-line @typescript-eslint/no-shadow\r\n\r\n interface Dom {\r\n css(val: object): this;\r\n }\r\n /** @public */\r\n interface Element {\r\n inSelection?: boolean;\r\n originalEl?: Element;\r\n\r\n /** make a copy of this Element, set its `isMarkup` flag, and reset its color if it was hilited. */\r\n cloneMarkup(): this;\r\n /** if this element is currently hilited or flashed, reset to its original color */\r\n resetColor(): void;\r\n /** override the color of this element to a new color, saving original */\r\n overrideColor(color: string): void;\r\n /** turn on `inSelection` and set its color to hilite */\r\n hilite(): void;\r\n /** turn off hilite, turn off `inSelection` flag */\r\n unHilite(): void;\r\n /** set this element to the flash color */\r\n flash(): void;\r\n /** turn off flash color */\r\n unFlash(): void;\r\n /** reposition and resize this element */\r\n markupStretch(x: number, y: number, w: number, h: number, mtx: Matrix): void;\r\n /** return true if this element is a child of the supplied Svg. */\r\n isChildOf(svg: Svg): boolean;\r\n /** return selectable element or the outermost group containing this element if it's a child of the supplied Svg. */\r\n getChildOrGroupOf(svg: G): MarkupElement | undefined;\r\n\r\n /** @internal */\r\n forElementsOfGroup(fn: (child: MarkupElement) => void): void;\r\n /** @internal */\r\n getNpcToVp(): Matrix;\r\n /** @internal */\r\n getOutline(expand?: number): Rect;\r\n }\r\n /** @public */\r\n interface Text {\r\n getMarkup(): string;\r\n createMarkup(val: string, spacing: number): void;\r\n getFontSize(): number;\r\n }\r\n\r\n /** @public */\r\n interface Matrix {\r\n /** convert this SVG.Matrix into an iModel Transform */\r\n toIModelTransform(): Transform;\r\n fromIModelTransform(t: Transform): this;\r\n }\r\n\r\n /** @internal */\r\n interface Container {\r\n foreignObject(width: number, height: number): ForeignObject;\r\n }\r\n class ForeignObject extends Container {\r\n }\r\n}\r\n\r\nconst OLDCOLOR = \"Color\";\r\n\r\n/** this is the SVG.js way of adding methods to classes */\r\nextend(MarkupElement, {\r\n forElementsOfGroup(fn: (child: MarkupElement) => void): void {\r\n const me = this as MarkupElement;\r\n if (me instanceof G)\r\n me.each((i, children) => { const child = children[i]; if (child instanceof MarkupElement) fn(child); }, false);\r\n },\r\n cloneMarkup(): MarkupElement {\r\n const me = this as MarkupElement;\r\n const cloned = me.clone();\r\n cloned.node.removeAttribute(\"id\");\r\n cloned.resetColor();\r\n return cloned;\r\n },\r\n overrideColor(color: string) {\r\n const me = this as MarkupElement;\r\n me.forElementsOfGroup((child) => child.overrideColor(color)); // Do children first, getComputedStyle will inherit from group for unspecified values...\r\n let oldColor = me.data(OLDCOLOR) as MarkupColor | undefined;\r\n if (undefined === oldColor) {\r\n const css = window.getComputedStyle(me.node);\r\n const colorOrNone = (c: string | null) => (c && c !== \"none\") ? c : \"none\";\r\n oldColor = { fill: colorOrNone(css.fill), stroke: colorOrNone(css.stroke) };\r\n me.data(OLDCOLOR, oldColor);\r\n }\r\n const toColor = (val: string | null) => (!val || val === \"none\") ? \"none\" : color;\r\n me.css({ fill: toColor(oldColor.fill), stroke: toColor(oldColor.stroke) });\r\n },\r\n resetColor() {\r\n const me = this as MarkupElement;\r\n const oldColor = me.data(OLDCOLOR) as MarkupColor;\r\n if (undefined !== oldColor)\r\n me.css(oldColor).data(OLDCOLOR, null); // change to old color and remove data object\r\n me.forElementsOfGroup((child) => child.resetColor());\r\n },\r\n hilite() { const me = this as MarkupElement; if (!me.inSelection) { me.overrideColor(MarkupApp.props.hilite.color); me.inSelection = true; } },\r\n unHilite() { const me = this as MarkupElement; if (me.inSelection) { me.resetColor(); me.inSelection = undefined; } },\r\n flash() { const me = this as MarkupElement; if (!me.inSelection) me.overrideColor(MarkupApp.props.hilite.flash); },\r\n unFlash() { const me = this as MarkupElement; if (!me.inSelection) me.resetColor(); },\r\n markupStretch(w: number, h: number, x: number, y: number, _mtx: Matrix) { const me = this as MarkupElement; me.size(w, h).move(x, y); },\r\n isChildOf(svg: Svg) {\r\n const parent = (this as MarkupElement).parent();\r\n return (parent === svg) ? true : (parent instanceof MarkupElement) ? parent.isChildOf(svg) : false;\r\n },\r\n getChildOrGroupOf(svg: G): MarkupElement | undefined {\r\n const me = this as MarkupElement;\r\n const parents = me.parents(svg.parent());\r\n if (0 === parents.length || parents[parents.length - 1].node !== svg.node)\r\n return undefined;\r\n if (parents.length > 1) {\r\n for (let index = parents.length - 2; index >= 0; --index)\r\n if (parents[index] instanceof G || parents[index] instanceof Text)\r\n return parents[index];\r\n }\r\n return me;\r\n },\r\n getNpcToVp(): Matrix {\r\n const me = this as MarkupElement;\r\n const bb = me.bbox();\r\n return new Matrix().scaleO(bb.w, bb.h).translateO(bb.x, bb.y).lmultiplyO(me.matrixify());\r\n },\r\n getOutline(expand?: number): Rect {\r\n const me = this as MarkupElement;\r\n const box = me.bbox();\r\n if (expand === undefined) expand = 0;\r\n return new Rect().move(box.x - expand, box.y - expand).size(box.w + (expand * 2), box.h + (expand * 2)).transform(me.matrixify());\r\n },\r\n});\r\n\r\nextend(G, {\r\n markupStretch(_w: number, _h: number, _x: number, _y: number, mtx: Matrix) { (this as G).attr(\"transform\", mtx); },\r\n});\r\nextend(Text, {\r\n getFontSize(): number { const me = this as Text; return parseFloat(window.getComputedStyle(me.node).fontSize); },\r\n markupStretch(_w: number, _h: number, _x: number, _y: number, mtx: Matrix) { (this as Text).attr(\"transform\", mtx); },\r\n getMarkup() {\r\n const node = (this as Text).node;\r\n let text = \"\";\r\n node.childNodes.forEach((child) => {\r\n if (child.nodeName === \"tspan\" || child.nodeName === \"#text\") {\r\n if (text.length !== 0) text += \"\\n\";\r\n text += child.textContent;\r\n }\r\n });\r\n return text;\r\n },\r\n createMarkup(val: string, spacing: number) {\r\n spacing = spacing ? spacing : 1;\r\n const me = this as Text;\r\n me.clear();\r\n if (val === \"\")\r\n return;\r\n const lines = val.split(\"\\n\");\r\n me.plain(lines[0]);\r\n const x = me.attr(\"x\");\r\n me.build(true);\r\n for (let i = 1; i < lines.length; ++i) {\r\n const tspan = me.tspan(lines[i]);\r\n tspan.dy(spacing);\r\n tspan.x(x);\r\n }\r\n me.build(false);\r\n me.dom = {};\r\n },\r\n // override for Text so that empty text will return a size\r\n getOutline(expand?: number): Rect {\r\n const me = this as Text;\r\n const node = me.node;\r\n const content = node.textContent;\r\n if (content !== null && content.length > 0)\r\n return MarkupElement.prototype.getOutline.call(me, expand);\r\n node.textContent = \"M\";\r\n const outline = MarkupElement.prototype.getOutline.call(me, expand);\r\n node.textContent = content;\r\n return outline;\r\n },\r\n writeDataToDom() {\r\n const me = this as Text;\r\n const dom = me.dom; // strip off useless \"leading\" data\r\n me.dom = {};\r\n MarkupElement.prototype.writeDataToDom.call(me);\r\n me.dom = dom;\r\n return me;\r\n },\r\n});\r\n\r\nextend(Matrix, {\r\n toIModelTransform() {\r\n const m = this as Matrix;\r\n return Transform.createRowValues(m.a, m.c, 0, m.e, m.b, m.d, 0, m.f, 0, 0, 1, 0);\r\n },\r\n fromIModelTransform(t: Transform) {\r\n const m = this as Matrix;\r\n const o = t.origin;\r\n const mtx = t.matrix;\r\n m.a = mtx.coffs[0];\r\n m.b = mtx.coffs[3];\r\n m.c = mtx.coffs[1];\r\n m.d = mtx.coffs[4];\r\n m.e = o.x;\r\n m.f = o.y;\r\n return this;\r\n },\r\n});\r\n\r\n/** Dummy class so a <title> inside a <g> will work.\r\n * @internal\r\n */\r\nexport class Title extends MarkupElement {\r\n constructor(node: any) { super(nodeOrNew(\"title\", node)); }\r\n public override scale() { return this; }\r\n public override size() { return this; }\r\n public override move() { return this; }\r\n public override dmove() { return this; }\r\n public override bbox() { return new Box(); }\r\n public override screenCTM() { return new Matrix(); }\r\n\r\n}\r\nregister(Title, \"Title\");\r\n\r\n/** only for tests\r\n * @internal\r\n */\r\nexport function initSvgExt() { }\r\n"]}