@itwin/editor-frontend 3.0.0-dev.163 → 3.0.0-dev.169

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/lib/cjs/ProjectLocation/ProjectGeolocation.d.ts +10 -17
  2. package/lib/cjs/ProjectLocation/ProjectGeolocation.d.ts.map +1 -1
  3. package/lib/cjs/ProjectLocation/ProjectGeolocation.js +54 -94
  4. package/lib/cjs/ProjectLocation/ProjectGeolocation.js.map +1 -1
  5. package/lib/cjs/SketchTools.d.ts +3 -5
  6. package/lib/cjs/SketchTools.d.ts.map +1 -1
  7. package/lib/cjs/SketchTools.js +55 -188
  8. package/lib/cjs/SketchTools.js.map +1 -1
  9. package/lib/cjs/SolidModelingTools.d.ts +2 -3
  10. package/lib/cjs/SolidModelingTools.d.ts.map +1 -1
  11. package/lib/cjs/SolidModelingTools.js +31 -246
  12. package/lib/cjs/SolidModelingTools.js.map +1 -1
  13. package/lib/cjs/TransformElementsTool.d.ts.map +1 -1
  14. package/lib/cjs/TransformElementsTool.js +8 -28
  15. package/lib/cjs/TransformElementsTool.js.map +1 -1
  16. package/lib/esm/ProjectLocation/ProjectGeolocation.d.ts +10 -17
  17. package/lib/esm/ProjectLocation/ProjectGeolocation.d.ts.map +1 -1
  18. package/lib/esm/ProjectLocation/ProjectGeolocation.js +54 -94
  19. package/lib/esm/ProjectLocation/ProjectGeolocation.js.map +1 -1
  20. package/lib/esm/SketchTools.d.ts +3 -5
  21. package/lib/esm/SketchTools.d.ts.map +1 -1
  22. package/lib/esm/SketchTools.js +55 -188
  23. package/lib/esm/SketchTools.js.map +1 -1
  24. package/lib/esm/SolidModelingTools.d.ts +2 -3
  25. package/lib/esm/SolidModelingTools.d.ts.map +1 -1
  26. package/lib/esm/SolidModelingTools.js +31 -246
  27. package/lib/esm/SolidModelingTools.js.map +1 -1
  28. package/lib/esm/TransformElementsTool.d.ts.map +1 -1
  29. package/lib/esm/TransformElementsTool.js +8 -28
  30. package/lib/esm/TransformElementsTool.js.map +1 -1
  31. package/lib/public/locales/en/Editor.json +4 -0
  32. package/package.json +12 -12
@@ -9,6 +9,7 @@ import { AccuDrawHintBuilder, AccuDrawShortcuts, AngleDescription, CoreTools, Ev
9
9
  import { Angle, Matrix3d, Point3d, Ray3d, Vector3d } from "@itwin/core-geometry";
10
10
  import { Cartographic, ColorDef, LinePixels } from "@itwin/core-common";
11
11
  import { ProjectExtentsClipDecoration } from "./ProjectExtentsDecoration";
12
+ import { DialogProperty } from "@itwin/appui-abstract";
12
13
  import { EditTools } from "../EditTool";
13
14
  function translatePrompt(key) { return EditTools.translate(`ProjectLocation:Prompts.${key}`); }
14
15
  function translateMessage(key) { return EditTools.translate(`ProjectLocation:Message.${key}`); }
@@ -59,30 +60,6 @@ export class ProjectGeolocationPointTool extends PrimitiveTool {
59
60
  this._cartographicFromArgs = false;
60
61
  this._accept = false;
61
62
  this._scale = 1.0;
62
- this._latitudeValue = { value: 0.0 };
63
- this._getLatitudeDescription = () => {
64
- if (!ProjectGeolocationPointTool._latitudeDescription)
65
- ProjectGeolocationPointTool._latitudeDescription = new AngleDescription(ProjectGeolocationPointTool._latitudeName, translateMessage("Latitude"));
66
- return ProjectGeolocationPointTool._latitudeDescription;
67
- };
68
- this._longitudeValue = { value: 0.0 };
69
- this._getLongitudeDescription = () => {
70
- if (!ProjectGeolocationPointTool._longitudeDescription)
71
- ProjectGeolocationPointTool._longitudeDescription = new AngleDescription(ProjectGeolocationPointTool._longitudeName, translateMessage("Longitude"));
72
- return ProjectGeolocationPointTool._longitudeDescription;
73
- };
74
- this._altitudeValue = { value: 0.0 };
75
- this._getAltitudeDescription = () => {
76
- if (!ProjectGeolocationPointTool._altitudeDescription)
77
- ProjectGeolocationPointTool._altitudeDescription = new LengthDescription(ProjectGeolocationPointTool._altitudeName, CoreTools.translate("Measure.Labels.Altitude"));
78
- return ProjectGeolocationPointTool._altitudeDescription;
79
- };
80
- this._northValue = { value: 0.0 };
81
- this._getNorthDescription = () => {
82
- if (!ProjectGeolocationPointTool._northDescription)
83
- ProjectGeolocationPointTool._northDescription = new AngleDescription(ProjectGeolocationPointTool._northName, translateMessage("North"));
84
- return ProjectGeolocationPointTool._northDescription;
85
- };
86
63
  }
87
64
  static get minArgs() { return 0; }
88
65
  static get maxArgs() { return 4; } // latitude, longitude, altitude, north direction...
@@ -93,69 +70,47 @@ export class ProjectGeolocationPointTool extends PrimitiveTool {
93
70
  async onCleanup() { await super.onCleanup(); this.unsuspendDecorations(); }
94
71
  async onRestartTool() { return this.exitTool(); }
95
72
  async onUnsuspend() { this.provideToolAssistance(); }
96
- get latitude() { return this._latitudeValue.value; }
97
- set latitude(value) { this._latitudeValue.value = value; }
98
- get longitude() { return this._longitudeValue.value; }
99
- set longitude(value) { this._longitudeValue.value = value; }
100
- get altitude() { return this._altitudeValue.value; }
101
- set altitude(value) { this._altitudeValue.value = value; }
102
- get north() { return this._northValue.value; }
103
- set north(value) { this._northValue.value = value; }
73
+ get latitudeProperty() {
74
+ if (!this._latitudeProperty)
75
+ this._latitudeProperty = new DialogProperty(new AngleDescription("latitude", translateMessage("Latitude")), 0.0);
76
+ return this._latitudeProperty;
77
+ }
78
+ get latitude() { return this.latitudeProperty.value; }
79
+ set latitude(value) { this.latitudeProperty.value = value; }
80
+ get longitudeProperty() {
81
+ if (!this._longitudeProperty)
82
+ this._longitudeProperty = new DialogProperty(new AngleDescription("longitude", translateMessage("Longitude")), 0.0);
83
+ return this._longitudeProperty;
84
+ }
85
+ get longitude() { return this.longitudeProperty.value; }
86
+ set longitude(value) { this.longitudeProperty.value = value; }
87
+ get altitudeProperty() {
88
+ if (!this._altitudeProperty)
89
+ this._altitudeProperty = new DialogProperty(new LengthDescription("altitude", CoreTools.translate("Measure.Labels.Altitude")), 0.0);
90
+ return this._altitudeProperty;
91
+ }
92
+ get altitude() { return this.altitudeProperty.value; }
93
+ set altitude(value) { this.altitudeProperty.value = value; }
94
+ get northProperty() {
95
+ if (!this._northProperty)
96
+ this._northProperty = new DialogProperty(new AngleDescription("north", translateMessage("North")), 0.0);
97
+ return this._northProperty;
98
+ }
99
+ get north() { return this.northProperty.value; }
100
+ set north(value) { this.northProperty.value = value; }
104
101
  syncToolSettingsCoordinates() {
105
- const syncData = []; // NOTE: Check that formatted quantity descriptions are defined, i.e. abstract ui for tool settings is implemented...
106
- if (ProjectGeolocationPointTool._latitudeDescription) {
107
- const newLatitudeDisplayValue = ProjectGeolocationPointTool._latitudeDescription.format(this.latitude);
108
- const latitudeValue = { value: this.latitude, displayValue: newLatitudeDisplayValue };
109
- const syncLatitudeItem = { value: latitudeValue, propertyName: ProjectGeolocationPointTool._latitudeName, isDisabled: !this._accept };
110
- syncData.push(syncLatitudeItem);
111
- }
112
- if (ProjectGeolocationPointTool._longitudeDescription) {
113
- const newLongitudeDisplayValue = ProjectGeolocationPointTool._longitudeDescription.format(this.longitude);
114
- const longitudeValue = { value: this.longitude, displayValue: newLongitudeDisplayValue };
115
- const syncLongitudeItem = { value: longitudeValue, propertyName: ProjectGeolocationPointTool._longitudeName, isDisabled: !this._accept };
116
- syncData.push(syncLongitudeItem);
117
- }
118
- if (ProjectGeolocationPointTool._altitudeDescription) {
119
- const newAltitudeDisplayValue = ProjectGeolocationPointTool._altitudeDescription.format(this.altitude);
120
- const altitudeValue = { value: this.altitude, displayValue: newAltitudeDisplayValue };
121
- const syncAltitudeItem = { value: altitudeValue, propertyName: ProjectGeolocationPointTool._altitudeName, isDisabled: !this._accept };
122
- syncData.push(syncAltitudeItem);
123
- }
124
- if (ProjectGeolocationPointTool._northDescription) {
125
- const newNorthDisplayValue = ProjectGeolocationPointTool._northDescription.format(this.north);
126
- const northValue = { value: this.north, displayValue: newNorthDisplayValue };
127
- const syncNorthItem = { value: northValue, propertyName: ProjectGeolocationPointTool._northName, isDisabled: !this._accept };
128
- syncData.push(syncNorthItem);
129
- }
130
- if (0 !== syncData.length)
131
- this.syncToolSettingsProperties(syncData);
102
+ this.syncToolSettingsProperties([this.latitudeProperty.syncItem, this.longitudeProperty.syncItem, this.altitudeProperty.syncItem, this.northProperty.syncItem]);
132
103
  }
133
104
  async applyToolSettingPropertyChange(updatedValue) {
134
- if (updatedValue.propertyName === ProjectGeolocationPointTool._latitudeName) {
135
- this.latitude = updatedValue.value.value;
136
- IModelApp.toolAdmin.toolSettingsState.saveToolSettingProperty(this.toolId, { propertyName: ProjectGeolocationPointTool._latitudeName, value: this._latitudeValue });
137
- }
138
- else if (updatedValue.propertyName === ProjectGeolocationPointTool._longitudeName) {
139
- this.longitude = updatedValue.value.value;
140
- IModelApp.toolAdmin.toolSettingsState.saveToolSettingProperty(this.toolId, { propertyName: ProjectGeolocationPointTool._longitudeName, value: this._longitudeValue });
141
- }
142
- else if (updatedValue.propertyName === ProjectGeolocationPointTool._altitudeName) {
143
- this.altitude = updatedValue.value.value;
144
- IModelApp.toolAdmin.toolSettingsState.saveToolSettingProperty(this.toolId, { propertyName: ProjectGeolocationPointTool._altitudeName, value: this._altitudeValue });
145
- }
146
- else if (updatedValue.propertyName === ProjectGeolocationPointTool._northName) {
147
- this.north = updatedValue.value.value;
148
- IModelApp.toolAdmin.toolSettingsState.saveToolSettingProperty(this.toolId, { propertyName: ProjectGeolocationPointTool._northName, value: this._northValue });
149
- }
150
- return true;
105
+ return this.changeToolSettingPropertyValue(updatedValue);
151
106
  }
152
107
  supplyToolSettingsProperties() {
153
108
  this._haveToolSettings = true;
154
109
  const toolSettings = new Array();
155
- toolSettings.push({ value: this._latitudeValue, property: this._getLatitudeDescription(), isDisabled: true, editorPosition: { rowPriority: 1, columnIndex: 2 } });
156
- toolSettings.push({ value: this._longitudeValue, property: this._getLongitudeDescription(), isDisabled: true, editorPosition: { rowPriority: 2, columnIndex: 2 } });
157
- toolSettings.push({ value: this._altitudeValue, property: this._getAltitudeDescription(), isDisabled: true, editorPosition: { rowPriority: 3, columnIndex: 2 } });
158
- toolSettings.push({ value: this._northValue, property: this._getNorthDescription(), isDisabled: true, editorPosition: { rowPriority: 4, columnIndex: 2 } });
110
+ toolSettings.push(this.latitudeProperty.toDialogItem({ rowPriority: 1, columnIndex: 2 }));
111
+ toolSettings.push(this.longitudeProperty.toDialogItem({ rowPriority: 2, columnIndex: 2 }));
112
+ toolSettings.push(this.altitudeProperty.toDialogItem({ rowPriority: 3, columnIndex: 2 }));
113
+ toolSettings.push(this.northProperty.toDialogItem({ rowPriority: 4, columnIndex: 2 }));
159
114
  return toolSettings;
160
115
  }
161
116
  provideToolAssistance() {
@@ -217,6 +172,13 @@ export class ProjectGeolocationPointTool extends PrimitiveTool {
217
172
  await this.onReinitialize(); // Calls onRestartTool to exit...
218
173
  return EventHandled.No;
219
174
  }
175
+ acceptDefaultLocation() {
176
+ // Greenwich is better default when testing control handle w/o tool settings support...
177
+ this.latitude = Angle.createDegrees(51.4934).radians;
178
+ this.longitude = Angle.createDegrees(0.0098).radians;
179
+ this.altitude = 50.0;
180
+ this.north = 0.0;
181
+ }
220
182
  acceptKnownLocation(ev) {
221
183
  const deco = ProjectExtentsClipDecoration.get();
222
184
  if (undefined === deco)
@@ -233,11 +195,7 @@ export class ProjectGeolocationPointTool extends PrimitiveTool {
233
195
  this.north = deco.getClockwiseAngleToNorth().radians;
234
196
  }
235
197
  else if (!this._haveToolSettings) {
236
- // Greenwich is better default when testing control handle w/o tool settings support...
237
- this.latitude = Angle.createDegrees(51.4934).radians;
238
- this.longitude = Angle.createDegrees(0.0098).radians;
239
- this.altitude = 50.0;
240
- this.north = 0.0;
198
+ this.acceptDefaultLocation();
241
199
  }
242
200
  }
243
201
  this.syncToolSettingsCoordinates();
@@ -264,7 +222,13 @@ export class ProjectGeolocationPointTool extends PrimitiveTool {
264
222
  await this.acceptCoordinates();
265
223
  return EventHandled.No;
266
224
  }
267
- async onInstall() { return ProjectExtentsClipDecoration.allowEcefLocationChange(false); }
225
+ async onInstall() {
226
+ if (!ProjectExtentsClipDecoration.allowEcefLocationChange(false))
227
+ return false;
228
+ // Setup initial values here instead of supplyToolSettingsProperties to support keyin args w/o appui-react...
229
+ this.initializeToolSettingPropertyValues([this.latitudeProperty, this.longitudeProperty, this.altitudeProperty, this.northProperty]);
230
+ return true;
231
+ }
268
232
  /** The keyin takes the following arguments, all of which are optional:
269
233
  * - `latitude=number` Latitude of accept point in degrees.
270
234
  * - `longitude=number` Longitude of accept point in degrees.
@@ -279,28 +243,28 @@ export class ProjectGeolocationPointTool extends PrimitiveTool {
279
243
  if (parts[0].toLowerCase().startsWith("la")) {
280
244
  const latitude = Number.parseFloat(parts[1]);
281
245
  if (!Number.isNaN(latitude)) {
282
- this.latitude = Angle.createDegrees(latitude).radians;
246
+ this.saveToolSettingPropertyValue(this.latitudeProperty, { value: Angle.createDegrees(latitude).radians });
283
247
  this._cartographicFromArgs = true;
284
248
  }
285
249
  }
286
250
  else if (parts[0].toLowerCase().startsWith("lo")) {
287
251
  const longitude = Number.parseFloat(parts[1]);
288
252
  if (!Number.isNaN(longitude)) {
289
- this.longitude = Angle.createDegrees(longitude).radians;
253
+ this.saveToolSettingPropertyValue(this.longitudeProperty, { value: Angle.createDegrees(longitude).radians });
290
254
  this._cartographicFromArgs = true;
291
255
  }
292
256
  }
293
257
  else if (parts[0].toLowerCase().startsWith("al")) {
294
258
  const altitude = Number.parseFloat(parts[1]);
295
259
  if (!Number.isNaN(altitude)) {
296
- this.altitude = altitude;
260
+ this.saveToolSettingPropertyValue(this.altitudeProperty, { value: altitude });
297
261
  this._cartographicFromArgs = true;
298
262
  }
299
263
  }
300
264
  else if (parts[0].toLowerCase().startsWith("no")) {
301
265
  const north = Number.parseFloat(parts[1]);
302
266
  if (!Number.isNaN(north)) {
303
- this.north = Angle.createDegrees(north).radians;
267
+ this.saveToolSettingPropertyValue(this.northProperty, { value: Angle.createDegrees(north).radians });
304
268
  this._cartographicFromArgs = true;
305
269
  }
306
270
  }
@@ -311,10 +275,6 @@ export class ProjectGeolocationPointTool extends PrimitiveTool {
311
275
  }
312
276
  ProjectGeolocationPointTool.toolId = "ProjectLocation.Geolocation.Point";
313
277
  ProjectGeolocationPointTool.iconSpec = "icon-globe"; // <== Tool button should use whatever icon you have here...
314
- ProjectGeolocationPointTool._latitudeName = "latitude";
315
- ProjectGeolocationPointTool._longitudeName = "longitude";
316
- ProjectGeolocationPointTool._altitudeName = "altitude";
317
- ProjectGeolocationPointTool._northName = "north";
318
278
  /** Change or update geolocation direction to true north.
319
279
  * @beta
320
280
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ProjectGeolocation.js","sourceRoot":"","sources":["../../../src/ProjectLocation/ProjectGeolocation.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 Editing\r\n */\r\n\r\nimport { AccuDrawHintBuilder, AccuDrawShortcuts, AngleDescription, BeButtonEvent, CanvasDecoration, CoreTools, DecorateContext, EventHandled, GraphicType, IModelApp, LengthDescription, PrimitiveTool, ToolAssistance, ToolAssistanceImage, ToolAssistanceInputMethod, ToolAssistanceInstruction, ToolAssistanceSection, Viewport } from \"@itwin/core-frontend\";\r\nimport { Angle, Matrix3d, Point3d, Ray3d, Vector3d, XYAndZ } from \"@itwin/core-geometry\";\r\nimport { Cartographic, ColorDef, LinePixels } from \"@itwin/core-common\";\r\nimport { ProjectExtentsClipDecoration } from \"./ProjectExtentsDecoration\";\r\nimport { DialogItem, DialogItemValue, DialogPropertySyncItem, PropertyDescription } from \"@itwin/appui-abstract\";\r\nimport { EditTools } from \"../EditTool\";\r\n\r\nfunction translatePrompt(key: string) { return EditTools.translate(`ProjectLocation:Prompts.${key}`); }\r\nfunction translateMessage(key: string) { return EditTools.translate(`ProjectLocation:Message.${key}`); }\r\n\r\n/** @internal */\r\nclass LabelDecoration implements CanvasDecoration {\r\n public worldLocation = new Point3d();\r\n public position = new Point3d();\r\n public label: string;\r\n\r\n constructor(worldLocation: XYAndZ, label: string) {\r\n this.worldLocation.setFrom(worldLocation);\r\n this.label = label;\r\n }\r\n\r\n public drawDecoration(ctx: CanvasRenderingContext2D): void {\r\n ctx.font = \"16px san-serif\";\r\n const labelHeight = ctx.measureText(\"M\").width; // Close enough for border padding...\r\n const labelWidth = ctx.measureText(this.label).width + labelHeight;\r\n\r\n ctx.lineWidth = 1;\r\n ctx.strokeStyle = \"white\";\r\n ctx.fillStyle = \"rgba(0,0,0,.4)\";\r\n ctx.shadowColor = \"black\";\r\n ctx.shadowBlur = 10;\r\n ctx.fillRect(-(labelWidth / 2), -labelHeight, labelWidth, labelHeight * 2);\r\n ctx.strokeRect(-(labelWidth / 2), -labelHeight, labelWidth, labelHeight * 2);\r\n\r\n ctx.fillStyle = \"white\";\r\n ctx.shadowBlur = 0;\r\n ctx.textAlign = \"center\";\r\n ctx.textBaseline = \"middle\";\r\n ctx.fillText(this.label, 0, 0);\r\n }\r\n\r\n public setPosition(vp: Viewport): boolean {\r\n vp.worldToView(this.worldLocation, this.position);\r\n this.position.y -= Math.floor(vp.pixelsFromInches(0.45)) + 0.5; // Offset from world location...\r\n return vp.viewRect.containsPoint(this.position);\r\n }\r\n\r\n public addDecoration(context: DecorateContext) {\r\n if (this.setPosition(context.viewport))\r\n context.addCanvasDecoration(this);\r\n }\r\n}\r\n\r\n/** Change or update geolocation for project.\r\n * To show tool settings for specifying lat/long, make sure formatting and parsing data are cached before the tool starts\r\n * by calling QuantityFormatter.onInitialized at app startup.\r\n * @beta\r\n */\r\nexport class ProjectGeolocationPointTool extends PrimitiveTool {\r\n public static override toolId = \"ProjectLocation.Geolocation.Point\";\r\n public static override iconSpec = \"icon-globe\"; // <== Tool button should use whatever icon you have here...\r\n\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 4; } // latitude, longitude, altitude, north direction...\r\n\r\n protected _haveToolSettings = false;\r\n protected _cartographicFromArgs = false;\r\n\r\n protected _accept = false;\r\n protected _scale = 1.0;\r\n protected _origin?: Point3d;\r\n protected _labelDeco?: LabelDecoration;\r\n\r\n public override isCompatibleViewport(vp: Viewport | undefined, isSelectedViewChange: boolean): boolean { return (super.isCompatibleViewport(vp, isSelectedViewChange) && undefined !== vp && vp.view.isSpatialView()); }\r\n public override isValidLocation(_ev: BeButtonEvent, _isButtonEvent: boolean): boolean { return true; } // Allow snapping to terrain, etc. outside project extents...\r\n public override requireWriteableTarget(): boolean { return false; } // Tool doesn't modify the imodel...\r\n public override async onPostInstall() { await super.onPostInstall(); this.setupAndPromptForNextAction(); }\r\n public override async onCleanup() { await super.onCleanup(); this.unsuspendDecorations(); }\r\n public async onRestartTool() { return this.exitTool(); }\r\n public override async onUnsuspend() { this.provideToolAssistance(); }\r\n\r\n private _latitudeValue: DialogItemValue = { value: 0.0 };\r\n public get latitude(): number { return this._latitudeValue.value as number; }\r\n public set latitude(value: number) { this._latitudeValue.value = value; }\r\n private static _latitudeName = \"latitude\";\r\n private static _latitudeDescription?: AngleDescription;\r\n private _getLatitudeDescription = (): PropertyDescription => {\r\n if (!ProjectGeolocationPointTool._latitudeDescription)\r\n ProjectGeolocationPointTool._latitudeDescription = new AngleDescription(ProjectGeolocationPointTool._latitudeName, translateMessage(\"Latitude\"));\r\n return ProjectGeolocationPointTool._latitudeDescription;\r\n };\r\n\r\n private _longitudeValue: DialogItemValue = { value: 0.0 };\r\n public get longitude(): number { return this._longitudeValue.value as number; }\r\n public set longitude(value: number) { this._longitudeValue.value = value; }\r\n private static _longitudeName = \"longitude\";\r\n private static _longitudeDescription?: AngleDescription;\r\n private _getLongitudeDescription = (): PropertyDescription => {\r\n if (!ProjectGeolocationPointTool._longitudeDescription)\r\n ProjectGeolocationPointTool._longitudeDescription = new AngleDescription(ProjectGeolocationPointTool._longitudeName, translateMessage(\"Longitude\"));\r\n return ProjectGeolocationPointTool._longitudeDescription;\r\n };\r\n\r\n private _altitudeValue: DialogItemValue = { value: 0.0 };\r\n public get altitude(): number { return this._altitudeValue.value as number; }\r\n public set altitude(value: number) { this._altitudeValue.value = value; }\r\n private static _altitudeName = \"altitude\";\r\n private static _altitudeDescription?: LengthDescription;\r\n private _getAltitudeDescription = (): PropertyDescription => {\r\n if (!ProjectGeolocationPointTool._altitudeDescription)\r\n ProjectGeolocationPointTool._altitudeDescription = new LengthDescription(ProjectGeolocationPointTool._altitudeName, CoreTools.translate(\"Measure.Labels.Altitude\"));\r\n return ProjectGeolocationPointTool._altitudeDescription;\r\n };\r\n\r\n private _northValue: DialogItemValue = { value: 0.0 };\r\n public get north(): number { return this._northValue.value as number; }\r\n public set north(value: number) { this._northValue.value = value; }\r\n private static _northName = \"north\";\r\n private static _northDescription?: AngleDescription;\r\n private _getNorthDescription = (): PropertyDescription => {\r\n if (!ProjectGeolocationPointTool._northDescription)\r\n ProjectGeolocationPointTool._northDescription = new AngleDescription(ProjectGeolocationPointTool._northName, translateMessage(\"North\"));\r\n return ProjectGeolocationPointTool._northDescription;\r\n };\r\n\r\n private syncToolSettingsCoordinates(): void {\r\n const syncData: DialogPropertySyncItem[] = []; // NOTE: Check that formatted quantity descriptions are defined, i.e. abstract ui for tool settings is implemented...\r\n\r\n if (ProjectGeolocationPointTool._latitudeDescription) {\r\n const newLatitudeDisplayValue = ProjectGeolocationPointTool._latitudeDescription.format(this.latitude);\r\n const latitudeValue: DialogItemValue = { value: this.latitude, displayValue: newLatitudeDisplayValue };\r\n const syncLatitudeItem: DialogPropertySyncItem = { value: latitudeValue, propertyName: ProjectGeolocationPointTool._latitudeName, isDisabled: !this._accept };\r\n syncData.push(syncLatitudeItem);\r\n }\r\n\r\n if (ProjectGeolocationPointTool._longitudeDescription) {\r\n const newLongitudeDisplayValue = ProjectGeolocationPointTool._longitudeDescription.format(this.longitude);\r\n const longitudeValue: DialogItemValue = { value: this.longitude, displayValue: newLongitudeDisplayValue };\r\n const syncLongitudeItem: DialogPropertySyncItem = { value: longitudeValue, propertyName: ProjectGeolocationPointTool._longitudeName, isDisabled: !this._accept };\r\n syncData.push(syncLongitudeItem);\r\n }\r\n\r\n if (ProjectGeolocationPointTool._altitudeDescription) {\r\n const newAltitudeDisplayValue = ProjectGeolocationPointTool._altitudeDescription.format(this.altitude);\r\n const altitudeValue: DialogItemValue = { value: this.altitude, displayValue: newAltitudeDisplayValue };\r\n const syncAltitudeItem: DialogPropertySyncItem = { value: altitudeValue, propertyName: ProjectGeolocationPointTool._altitudeName, isDisabled: !this._accept };\r\n syncData.push(syncAltitudeItem);\r\n }\r\n\r\n if (ProjectGeolocationPointTool._northDescription) {\r\n const newNorthDisplayValue = ProjectGeolocationPointTool._northDescription.format(this.north);\r\n const northValue: DialogItemValue = { value: this.north, displayValue: newNorthDisplayValue };\r\n const syncNorthItem: DialogPropertySyncItem = { value: northValue, propertyName: ProjectGeolocationPointTool._northName, isDisabled: !this._accept };\r\n syncData.push(syncNorthItem);\r\n }\r\n\r\n if (0 !== syncData.length)\r\n this.syncToolSettingsProperties(syncData);\r\n }\r\n\r\n public override async applyToolSettingPropertyChange(updatedValue: DialogPropertySyncItem): Promise<boolean> {\r\n if (updatedValue.propertyName === ProjectGeolocationPointTool._latitudeName) {\r\n this.latitude = updatedValue.value.value as number;\r\n IModelApp.toolAdmin.toolSettingsState.saveToolSettingProperty(this.toolId, { propertyName: ProjectGeolocationPointTool._latitudeName, value: this._latitudeValue });\r\n } else if (updatedValue.propertyName === ProjectGeolocationPointTool._longitudeName) {\r\n this.longitude = updatedValue.value.value as number;\r\n IModelApp.toolAdmin.toolSettingsState.saveToolSettingProperty(this.toolId, { propertyName: ProjectGeolocationPointTool._longitudeName, value: this._longitudeValue });\r\n } else if (updatedValue.propertyName === ProjectGeolocationPointTool._altitudeName) {\r\n this.altitude = updatedValue.value.value as number;\r\n IModelApp.toolAdmin.toolSettingsState.saveToolSettingProperty(this.toolId, { propertyName: ProjectGeolocationPointTool._altitudeName, value: this._altitudeValue });\r\n } else if (updatedValue.propertyName === ProjectGeolocationPointTool._northName) {\r\n this.north = updatedValue.value.value as number;\r\n IModelApp.toolAdmin.toolSettingsState.saveToolSettingProperty(this.toolId, { propertyName: ProjectGeolocationPointTool._northName, value: this._northValue });\r\n }\r\n return true;\r\n }\r\n\r\n public override supplyToolSettingsProperties(): DialogItem[] | undefined {\r\n this._haveToolSettings = true;\r\n const toolSettings = new Array<DialogItem>();\r\n toolSettings.push({ value: this._latitudeValue, property: this._getLatitudeDescription(), isDisabled: true, editorPosition: { rowPriority: 1, columnIndex: 2 } });\r\n toolSettings.push({ value: this._longitudeValue, property: this._getLongitudeDescription(), isDisabled: true, editorPosition: { rowPriority: 2, columnIndex: 2 } });\r\n toolSettings.push({ value: this._altitudeValue, property: this._getAltitudeDescription(), isDisabled: true, editorPosition: { rowPriority: 3, columnIndex: 2 } });\r\n toolSettings.push({ value: this._northValue, property: this._getNorthDescription(), isDisabled: true, editorPosition: { rowPriority: 4, columnIndex: 2 } });\r\n return toolSettings;\r\n }\r\n\r\n protected provideToolAssistance(): void {\r\n const acceptMsg = CoreTools.translate(undefined === this._origin ? \"ElementSet.Inputs.AcceptPoint\" : \"ElementSet.Inputs.Accept\");\r\n const rejectMsg = CoreTools.translate(\"ElementSet.Inputs.Cancel\");\r\n const mainInstruction = ToolAssistance.createInstruction(this.iconSpec, translatePrompt(undefined === this._origin ? \"IdentifyKnownLocation\" : \"ConfirmCoordinates\"));\r\n const sections: ToolAssistanceSection[] = [];\r\n\r\n const mouseInstructions: ToolAssistanceInstruction[] = [];\r\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.LeftClick, acceptMsg, false, ToolAssistanceInputMethod.Mouse));\r\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.RightClick, rejectMsg, false, ToolAssistanceInputMethod.Mouse));\r\n sections.push(ToolAssistance.createSection(mouseInstructions, ToolAssistance.inputsLabel));\r\n\r\n const touchInstructions: ToolAssistanceInstruction[] = [];\r\n if (!ToolAssistance.createTouchCursorInstructions(touchInstructions))\r\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.OneTouchTap, acceptMsg, false, ToolAssistanceInputMethod.Touch));\r\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.TwoTouchTap, rejectMsg, false, ToolAssistanceInputMethod.Touch));\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 protected setupAndPromptForNextAction(): void {\r\n IModelApp.accuSnap.enableSnap(undefined === this._origin);\r\n this.provideToolAssistance();\r\n }\r\n\r\n private pulseDecoration() {\r\n if (!this._accept)\r\n return;\r\n\r\n const deco = ProjectExtentsClipDecoration.get();\r\n if (undefined === deco)\r\n return;\r\n\r\n this._scale += 0.1;\r\n if (this._scale > 1.6)\r\n this._scale = 1.0;\r\n\r\n deco.viewport.invalidateDecorations();\r\n setTimeout(() => { this.pulseDecoration(); }, 100);\r\n }\r\n\r\n private unsuspendDecorations() {\r\n const deco = ProjectExtentsClipDecoration.get();\r\n if (undefined !== deco)\r\n deco.suspendGeolocationDecorations = false;\r\n }\r\n\r\n public override decorate(context: DecorateContext): void {\r\n if (undefined === this._origin || !context.viewport.view.isSpatialView())\r\n return;\r\n\r\n const deco = ProjectExtentsClipDecoration.get();\r\n if (undefined === deco)\r\n return;\r\n\r\n deco.suspendGeolocationDecorations = true;\r\n deco.drawMonumentPoint(context, this._origin, this._scale);\r\n\r\n if (undefined !== this._labelDeco)\r\n this._labelDeco.addDecoration(context);\r\n }\r\n\r\n public override async onMouseMotion(ev: BeButtonEvent): Promise<void> {\r\n if (undefined === ev.viewport || this._accept)\r\n return;\r\n\r\n this._origin = ev.point.clone();\r\n ev.viewport.invalidateDecorations();\r\n }\r\n\r\n public override async onResetButtonUp(_ev: BeButtonEvent): Promise<EventHandled> {\r\n await this.onReinitialize(); // Calls onRestartTool to exit...\r\n return EventHandled.No;\r\n }\r\n\r\n public acceptKnownLocation(ev: BeButtonEvent): void {\r\n const deco = ProjectExtentsClipDecoration.get();\r\n if (undefined === deco)\r\n return;\r\n\r\n this._accept = true; // Require explicit accept to give user a chance to change values...\r\n this._origin = ev.point.clone();\r\n this._labelDeco = new LabelDecoration(this._origin, translatePrompt(\"SpecifyCoordinates\"));\r\n\r\n if (!this._cartographicFromArgs) {\r\n if (this.iModel.isGeoLocated) {\r\n const cartographic = this.iModel.spatialToCartographicFromEcef(this._origin);\r\n this.latitude = cartographic.latitude;\r\n this.longitude = cartographic.longitude;\r\n this.altitude = cartographic.height;\r\n this.north = deco.getClockwiseAngleToNorth().radians;\r\n } else if (!this._haveToolSettings) {\r\n // Greenwich is better default when testing control handle w/o tool settings support...\r\n this.latitude = Angle.createDegrees(51.4934).radians;\r\n this.longitude = Angle.createDegrees(0.0098).radians;\r\n this.altitude = 50.0;\r\n this.north = 0.0;\r\n }\r\n }\r\n\r\n this.syncToolSettingsCoordinates();\r\n this.pulseDecoration(); // Pulse to indicate that we are waiting for user input...\r\n this.setupAndPromptForNextAction();\r\n }\r\n\r\n public async acceptCoordinates(): Promise<void> {\r\n const deco = ProjectExtentsClipDecoration.get();\r\n if (undefined === deco)\r\n return;\r\n\r\n const origin = Cartographic.fromRadians({longitude: this.longitude, latitude: this.latitude, height: this.altitude});\r\n if (!deco.updateEcefLocation(origin, this._origin, Angle.createRadians(this.north)))\r\n return;\r\n\r\n return this.onReinitialize(); // Calls onRestartTool to exit...\r\n }\r\n\r\n public override async onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled> {\r\n if (undefined === ev.viewport)\r\n return EventHandled.No; // Shouldn't really happen...\r\n\r\n const haveKnownLocation = this._accept;\r\n if (!haveKnownLocation)\r\n this.acceptKnownLocation(ev);\r\n\r\n const needAcceptPoint = !haveKnownLocation && this._haveToolSettings;\r\n if (!needAcceptPoint)\r\n await this.acceptCoordinates();\r\n\r\n return EventHandled.No;\r\n }\r\n\r\n public override async onInstall(): Promise<boolean> { return ProjectExtentsClipDecoration.allowEcefLocationChange(false); }\r\n\r\n /** The keyin takes the following arguments, all of which are optional:\r\n * - `latitude=number` Latitude of accept point in degrees.\r\n * - `longitude=number` Longitude of accept point in degrees.\r\n * - `altitude=number` Height above ellipsoid of accept point.\r\n * - `north=number` North direction in degrees of accept point.\r\n */\r\n public override async parseAndRun(...inputArgs: string[]): Promise<boolean> {\r\n for (const arg of inputArgs) {\r\n const parts = arg.split(\"=\");\r\n if (2 !== parts.length)\r\n continue;\r\n\r\n if (parts[0].toLowerCase().startsWith(\"la\")) {\r\n const latitude = Number.parseFloat(parts[1]);\r\n if (!Number.isNaN(latitude)) {\r\n this.latitude = Angle.createDegrees(latitude).radians;\r\n this._cartographicFromArgs = true;\r\n }\r\n } else if (parts[0].toLowerCase().startsWith(\"lo\")) {\r\n const longitude = Number.parseFloat(parts[1]);\r\n if (!Number.isNaN(longitude)) {\r\n this.longitude = Angle.createDegrees(longitude).radians;\r\n this._cartographicFromArgs = true;\r\n }\r\n } else if (parts[0].toLowerCase().startsWith(\"al\")) {\r\n const altitude = Number.parseFloat(parts[1]);\r\n if (!Number.isNaN(altitude)) {\r\n this.altitude = altitude;\r\n this._cartographicFromArgs = true;\r\n }\r\n } else if (parts[0].toLowerCase().startsWith(\"no\")) {\r\n const north = Number.parseFloat(parts[1]);\r\n if (!Number.isNaN(north)) {\r\n this.north = Angle.createDegrees(north).radians;\r\n this._cartographicFromArgs = true;\r\n }\r\n }\r\n }\r\n\r\n return this.run();\r\n }\r\n\r\n public static async startTool(): Promise<boolean> { return new ProjectGeolocationPointTool().run(); }\r\n}\r\n\r\n/** Change or update geolocation direction to true north.\r\n * @beta\r\n */\r\nexport class ProjectGeolocationNorthTool extends PrimitiveTool {\r\n public static override toolId = \"ProjectLocation.Geolocation.North\";\r\n public static override iconSpec = \"icon-sort-up\"; // <== Tool button should use whatever icon you have here...\r\n protected _origin?: Point3d;\r\n protected _northDir?: Ray3d;\r\n\r\n public override isCompatibleViewport(vp: Viewport | undefined, isSelectedViewChange: boolean): boolean { return (super.isCompatibleViewport(vp, isSelectedViewChange) && undefined !== vp && vp.view.isSpatialView()); }\r\n public override isValidLocation(_ev: BeButtonEvent, _isButtonEvent: boolean): boolean { return true; } // Allow snapping to terrain, etc. outside project extents...\r\n public override requireWriteableTarget(): boolean { return false; } // Tool doesn't modify the imodel...\r\n public override async onPostInstall() { await super.onPostInstall(); this.setupAndPromptForNextAction(); }\r\n public override async onCleanup() { await super.onCleanup(); this.unsuspendDecorations(); }\r\n public async onRestartTool() { return this.exitTool(); }\r\n public override async onUnsuspend() { this.provideToolAssistance(); }\r\n\r\n protected provideToolAssistance(): void {\r\n const acceptMsg = CoreTools.translate(\"ElementSet.Inputs.AcceptPoint\");\r\n const rejectMsg = CoreTools.translate(\"ElementSet.Inputs.Cancel\");\r\n const mainInstruction = ToolAssistance.createInstruction(this.iconSpec, translatePrompt(undefined === this._origin ? \"IdentifyRefPoint\" : \"DefineAngle\"));\r\n const sections: ToolAssistanceSection[] = [];\r\n\r\n const mouseInstructions: ToolAssistanceInstruction[] = [];\r\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.LeftClick, acceptMsg, false, ToolAssistanceInputMethod.Mouse));\r\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.RightClick, rejectMsg, false, ToolAssistanceInputMethod.Mouse));\r\n sections.push(ToolAssistance.createSection(mouseInstructions, ToolAssistance.inputsLabel));\r\n\r\n const touchInstructions: ToolAssistanceInstruction[] = [];\r\n if (!ToolAssistance.createTouchCursorInstructions(touchInstructions))\r\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.OneTouchTap, acceptMsg, false, ToolAssistanceInputMethod.Touch));\r\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.TwoTouchTap, rejectMsg, false, ToolAssistanceInputMethod.Touch));\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 protected setupAndPromptForNextAction(): void {\r\n IModelApp.accuSnap.enableSnap(true);\r\n this.provideToolAssistance();\r\n\r\n if (undefined === this._origin)\r\n return;\r\n\r\n const hints = new AccuDrawHintBuilder();\r\n hints.setRotation(Matrix3d.createIdentity());\r\n hints.setOrigin(this._origin);\r\n hints.setModePolar();\r\n hints.setOriginFixed = true;\r\n hints.setLockZ = true;\r\n hints.sendHints();\r\n }\r\n\r\n private getAdjustedPoint(ev: BeButtonEvent): Point3d | undefined {\r\n if (undefined === this._origin)\r\n return undefined;\r\n return AccuDrawHintBuilder.projectPointToPlaneInView(ev.point, this._origin, Vector3d.unitZ(), ev.viewport!, true);\r\n }\r\n\r\n private unsuspendDecorations() {\r\n const deco = ProjectExtentsClipDecoration.get();\r\n if (undefined !== deco)\r\n deco.suspendGeolocationDecorations = false;\r\n }\r\n\r\n private updateNorthVector(ev: BeButtonEvent): void {\r\n if (undefined === ev.viewport)\r\n return;\r\n\r\n if (undefined === this._northDir)\r\n this._northDir = Ray3d.create(ev.point, Vector3d.unitY());\r\n else\r\n this._northDir.origin.setFrom(undefined !== this._origin ? this._origin : ev.point);\r\n\r\n const dirPt = this.getAdjustedPoint(ev);\r\n if (undefined === dirPt)\r\n return;\r\n\r\n this._northDir.direction.setStartEnd(this._northDir.origin, dirPt);\r\n if (this._northDir.direction.magnitude() < 1.0e-6)\r\n this._northDir.direction.setFrom(Vector3d.unitY());\r\n\r\n this._northDir.direction.z = 0.0;\r\n this._northDir.direction.normalizeInPlace();\r\n }\r\n\r\n public override decorate(context: DecorateContext): void {\r\n if (undefined === this._northDir || !context.viewport.view.isSpatialView())\r\n return;\r\n\r\n const deco = ProjectExtentsClipDecoration.get();\r\n if (undefined === deco)\r\n return;\r\n\r\n deco.suspendGeolocationDecorations = true;\r\n deco.drawNorthArrow(context, this._northDir);\r\n }\r\n\r\n public override async onKeyTransition(wentDown: boolean, keyEvent: KeyboardEvent): Promise<EventHandled> {\r\n if (EventHandled.Yes === await super.onKeyTransition(wentDown, keyEvent))\r\n return EventHandled.Yes;\r\n return (wentDown && await AccuDrawShortcuts.processShortcutKey(keyEvent)) ? EventHandled.Yes : EventHandled.No;\r\n }\r\n\r\n public override async onMouseMotion(ev: BeButtonEvent): Promise<void> {\r\n if (undefined === ev.viewport)\r\n return;\r\n\r\n this.updateNorthVector(ev);\r\n ev.viewport.invalidateDecorations();\r\n }\r\n\r\n public override async onResetButtonUp(_ev: BeButtonEvent): Promise<EventHandled> {\r\n await this.onReinitialize(); // Calls onRestartTool to exit...\r\n return EventHandled.No;\r\n }\r\n\r\n public override async onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled> {\r\n if (undefined === ev.viewport)\r\n return EventHandled.No; // Shouldn't really happen...\r\n\r\n if (undefined === this._origin) {\r\n this._origin = ev.point.clone();\r\n this.setupAndPromptForNextAction();\r\n return EventHandled.No;\r\n }\r\n\r\n this.updateNorthVector(ev);\r\n\r\n if (undefined !== this._northDir) {\r\n const deco = ProjectExtentsClipDecoration.get();\r\n if (undefined !== deco)\r\n deco.updateNorthDirection(this._northDir);\r\n }\r\n\r\n await this.onReinitialize(); // Calls onRestartTool to exit...\r\n return EventHandled.No;\r\n }\r\n\r\n public override async onInstall(): Promise<boolean> { return ProjectExtentsClipDecoration.allowEcefLocationChange(true); }\r\n\r\n public static async startTool() { return new ProjectGeolocationNorthTool().run(); }\r\n}\r\n\r\n/** Move a geolocated model by specifying two points to define the offset.\r\n * @beta\r\n */\r\nexport class ProjectGeolocationMoveTool extends PrimitiveTool {\r\n public static override toolId = \"ProjectLocation.Geolocation.Move\";\r\n public static override iconSpec = \"icon-move\"; // <== Tool button should use whatever icon you have here...\r\n protected _origin?: Point3d;\r\n protected _current?: Point3d;\r\n\r\n public override isCompatibleViewport(vp: Viewport | undefined, isSelectedViewChange: boolean): boolean { return (super.isCompatibleViewport(vp, isSelectedViewChange) && undefined !== vp && vp.view.isSpatialView()); }\r\n public override isValidLocation(_ev: BeButtonEvent, _isButtonEvent: boolean): boolean { return true; } // Allow snapping to terrain, etc. outside project extents...\r\n public override requireWriteableTarget(): boolean { return false; } // Tool doesn't modify the imodel...\r\n public override async onPostInstall() { await super.onPostInstall(); this.setupAndPromptForNextAction(); }\r\n public override async onCleanup() { await super.onCleanup(); this.unsuspendDecorations(); }\r\n public async onRestartTool() { const tool = new ProjectGeolocationMoveTool(); if (!await tool.run()) return this.exitTool(); }\r\n public override async onUnsuspend() { this.provideToolAssistance(); }\r\n\r\n protected provideToolAssistance(): void {\r\n const acceptMsg = CoreTools.translate(\"ElementSet.Inputs.AcceptPoint\");\r\n const rejectMsg = CoreTools.translate(\"ElementSet.Inputs.Cancel\");\r\n const mainInstruction = ToolAssistance.createInstruction(this.iconSpec, translatePrompt(undefined === this._origin ? \"IdentifyRefPoint\" : \"DefineOffset\"));\r\n const sections: ToolAssistanceSection[] = [];\r\n\r\n const mouseInstructions: ToolAssistanceInstruction[] = [];\r\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.LeftClick, acceptMsg, false, ToolAssistanceInputMethod.Mouse));\r\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.RightClick, rejectMsg, false, ToolAssistanceInputMethod.Mouse));\r\n sections.push(ToolAssistance.createSection(mouseInstructions, ToolAssistance.inputsLabel));\r\n\r\n const touchInstructions: ToolAssistanceInstruction[] = [];\r\n if (!ToolAssistance.createTouchCursorInstructions(touchInstructions))\r\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.OneTouchTap, acceptMsg, false, ToolAssistanceInputMethod.Touch));\r\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.TwoTouchTap, rejectMsg, false, ToolAssistanceInputMethod.Touch));\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 protected setupAndPromptForNextAction(): void {\r\n IModelApp.accuSnap.enableSnap(true);\r\n this.provideToolAssistance();\r\n\r\n if (undefined === this._origin)\r\n return;\r\n\r\n const hints = new AccuDrawHintBuilder();\r\n hints.setRotation(Matrix3d.createIdentity());\r\n hints.setOrigin(this._origin);\r\n hints.setModePolar();\r\n hints.setOriginFixed = true;\r\n hints.sendHints();\r\n }\r\n\r\n private unsuspendDecorations() {\r\n const deco = ProjectExtentsClipDecoration.get();\r\n if (undefined !== deco)\r\n deco.suspendGeolocationDecorations = false;\r\n }\r\n\r\n private async acceptOffset(ev: BeButtonEvent): Promise<void> {\r\n if (undefined === ev.viewport || undefined === this._origin)\r\n return;\r\n\r\n const deco = ProjectExtentsClipDecoration.get();\r\n if (undefined === deco)\r\n return;\r\n\r\n const origin = this.iModel.spatialToCartographicFromEcef(ev.point);\r\n if (!deco.updateEcefLocation(origin, this._origin))\r\n return;\r\n\r\n return this.onReinitialize(); // Calls onRestartTool to exit...\r\n }\r\n\r\n public override decorate(context: DecorateContext): void {\r\n if (undefined === this._origin || undefined === this._current || !context.viewport.view.isSpatialView())\r\n return;\r\n\r\n const deco = ProjectExtentsClipDecoration.get();\r\n if (undefined === deco)\r\n return;\r\n\r\n const builderAccVis = context.createGraphicBuilder(GraphicType.WorldDecoration);\r\n const builderAccHid = context.createGraphicBuilder(GraphicType.WorldOverlay);\r\n const colorAccVis = ColorDef.white.adjustedForContrast(context.viewport.view.backgroundColor);\r\n const colorAccHid = colorAccVis.withAlpha(100);\r\n\r\n builderAccVis.setSymbology(colorAccVis, ColorDef.black, 3);\r\n builderAccHid.setSymbology(colorAccHid, ColorDef.black, 1, LinePixels.Code2);\r\n\r\n const extents = this.iModel.projectExtents.cloneTranslated(Vector3d.createStartEnd(this._origin, this._current));\r\n\r\n builderAccVis.addRangeBox(extents);\r\n builderAccHid.addRangeBox(extents);\r\n builderAccHid.addLineString([this._origin, this._current]);\r\n\r\n context.addDecorationFromBuilder(builderAccVis);\r\n context.addDecorationFromBuilder(builderAccHid);\r\n\r\n deco.suspendGeolocationDecorations = true;\r\n }\r\n\r\n public override async onKeyTransition(wentDown: boolean, keyEvent: KeyboardEvent): Promise<EventHandled> {\r\n if (EventHandled.Yes === await super.onKeyTransition(wentDown, keyEvent))\r\n return EventHandled.Yes;\r\n return (wentDown && await AccuDrawShortcuts.processShortcutKey(keyEvent)) ? EventHandled.Yes : EventHandled.No;\r\n }\r\n\r\n public override async onMouseMotion(ev: BeButtonEvent): Promise<void> {\r\n if (undefined === ev.viewport)\r\n return;\r\n\r\n this._current = ev.point;\r\n ev.viewport.invalidateDecorations();\r\n }\r\n\r\n public override async onResetButtonUp(_ev: BeButtonEvent): Promise<EventHandled> {\r\n if (undefined === this._origin)\r\n await this.exitTool(); // exit to select tool if we haven't gotten first point...\r\n else\r\n await this.onReinitialize(); // Calls onRestartTool...\r\n return EventHandled.No;\r\n }\r\n\r\n public override async onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled> {\r\n if (undefined === ev.viewport)\r\n return EventHandled.No; // Shouldn't really happen...\r\n\r\n if (undefined === this._origin) {\r\n this._origin = ev.point.clone();\r\n this.setupAndPromptForNextAction();\r\n return EventHandled.No;\r\n }\r\n\r\n await this.acceptOffset(ev);\r\n return EventHandled.No;\r\n }\r\n\r\n public override async onInstall(): Promise<boolean> { return ProjectExtentsClipDecoration.allowEcefLocationChange(true); }\r\n\r\n public static async startTool() { return new ProjectGeolocationMoveTool().run(); }\r\n}\r\n\r\n"]}
1
+ {"version":3,"file":"ProjectGeolocation.js","sourceRoot":"","sources":["../../../src/ProjectLocation/ProjectGeolocation.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 Editing\r\n */\r\n\r\nimport { AccuDrawHintBuilder, AccuDrawShortcuts, AngleDescription, BeButtonEvent, CanvasDecoration, CoreTools, DecorateContext, EventHandled, GraphicType, IModelApp, LengthDescription, PrimitiveTool, ToolAssistance, ToolAssistanceImage, ToolAssistanceInputMethod, ToolAssistanceInstruction, ToolAssistanceSection, Viewport } from \"@itwin/core-frontend\";\r\nimport { Angle, Matrix3d, Point3d, Ray3d, Vector3d, XYAndZ } from \"@itwin/core-geometry\";\r\nimport { Cartographic, ColorDef, LinePixels } from \"@itwin/core-common\";\r\nimport { ProjectExtentsClipDecoration } from \"./ProjectExtentsDecoration\";\r\nimport { DialogItem, DialogProperty, DialogPropertySyncItem } from \"@itwin/appui-abstract\";\r\nimport { EditTools } from \"../EditTool\";\r\n\r\nfunction translatePrompt(key: string) { return EditTools.translate(`ProjectLocation:Prompts.${key}`); }\r\nfunction translateMessage(key: string) { return EditTools.translate(`ProjectLocation:Message.${key}`); }\r\n\r\n/** @internal */\r\nclass LabelDecoration implements CanvasDecoration {\r\n public worldLocation = new Point3d();\r\n public position = new Point3d();\r\n public label: string;\r\n\r\n constructor(worldLocation: XYAndZ, label: string) {\r\n this.worldLocation.setFrom(worldLocation);\r\n this.label = label;\r\n }\r\n\r\n public drawDecoration(ctx: CanvasRenderingContext2D): void {\r\n ctx.font = \"16px san-serif\";\r\n const labelHeight = ctx.measureText(\"M\").width; // Close enough for border padding...\r\n const labelWidth = ctx.measureText(this.label).width + labelHeight;\r\n\r\n ctx.lineWidth = 1;\r\n ctx.strokeStyle = \"white\";\r\n ctx.fillStyle = \"rgba(0,0,0,.4)\";\r\n ctx.shadowColor = \"black\";\r\n ctx.shadowBlur = 10;\r\n ctx.fillRect(-(labelWidth / 2), -labelHeight, labelWidth, labelHeight * 2);\r\n ctx.strokeRect(-(labelWidth / 2), -labelHeight, labelWidth, labelHeight * 2);\r\n\r\n ctx.fillStyle = \"white\";\r\n ctx.shadowBlur = 0;\r\n ctx.textAlign = \"center\";\r\n ctx.textBaseline = \"middle\";\r\n ctx.fillText(this.label, 0, 0);\r\n }\r\n\r\n public setPosition(vp: Viewport): boolean {\r\n vp.worldToView(this.worldLocation, this.position);\r\n this.position.y -= Math.floor(vp.pixelsFromInches(0.45)) + 0.5; // Offset from world location...\r\n return vp.viewRect.containsPoint(this.position);\r\n }\r\n\r\n public addDecoration(context: DecorateContext) {\r\n if (this.setPosition(context.viewport))\r\n context.addCanvasDecoration(this);\r\n }\r\n}\r\n\r\n/** Change or update geolocation for project.\r\n * To show tool settings for specifying lat/long, make sure formatting and parsing data are cached before the tool starts\r\n * by calling QuantityFormatter.onInitialized at app startup.\r\n * @beta\r\n */\r\nexport class ProjectGeolocationPointTool extends PrimitiveTool {\r\n public static override toolId = \"ProjectLocation.Geolocation.Point\";\r\n public static override iconSpec = \"icon-globe\"; // <== Tool button should use whatever icon you have here...\r\n\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 4; } // latitude, longitude, altitude, north direction...\r\n\r\n protected _haveToolSettings = false;\r\n protected _cartographicFromArgs = false;\r\n\r\n protected _accept = false;\r\n protected _scale = 1.0;\r\n protected _origin?: Point3d;\r\n protected _labelDeco?: LabelDecoration;\r\n\r\n public override isCompatibleViewport(vp: Viewport | undefined, isSelectedViewChange: boolean): boolean { return (super.isCompatibleViewport(vp, isSelectedViewChange) && undefined !== vp && vp.view.isSpatialView()); }\r\n public override isValidLocation(_ev: BeButtonEvent, _isButtonEvent: boolean): boolean { return true; } // Allow snapping to terrain, etc. outside project extents...\r\n public override requireWriteableTarget(): boolean { return false; } // Tool doesn't modify the imodel...\r\n public override async onPostInstall() { await super.onPostInstall(); this.setupAndPromptForNextAction(); }\r\n public override async onCleanup() { await super.onCleanup(); this.unsuspendDecorations(); }\r\n public async onRestartTool() { return this.exitTool(); }\r\n public override async onUnsuspend() { this.provideToolAssistance(); }\r\n\r\n private _latitudeProperty: DialogProperty<number> | undefined;\r\n public get latitudeProperty() {\r\n if (!this._latitudeProperty)\r\n this._latitudeProperty = new DialogProperty<number>(new AngleDescription(\"latitude\", translateMessage(\"Latitude\")), 0.0);\r\n return this._latitudeProperty;\r\n }\r\n\r\n public get latitude(): number { return this.latitudeProperty.value; }\r\n public set latitude(value: number) { this.latitudeProperty.value = value; }\r\n\r\n private _longitudeProperty: DialogProperty<number> | undefined;\r\n public get longitudeProperty() {\r\n if (!this._longitudeProperty)\r\n this._longitudeProperty = new DialogProperty<number>(new AngleDescription(\"longitude\", translateMessage(\"Longitude\")), 0.0);\r\n return this._longitudeProperty;\r\n }\r\n\r\n public get longitude(): number { return this.longitudeProperty.value; }\r\n public set longitude(value: number) { this.longitudeProperty.value = value; }\r\n\r\n private _altitudeProperty: DialogProperty<number> | undefined;\r\n public get altitudeProperty() {\r\n if (!this._altitudeProperty)\r\n this._altitudeProperty = new DialogProperty<number>(new LengthDescription(\"altitude\", CoreTools.translate(\"Measure.Labels.Altitude\")), 0.0);\r\n return this._altitudeProperty;\r\n }\r\n\r\n public get altitude(): number { return this.altitudeProperty.value; }\r\n public set altitude(value: number) { this.altitudeProperty.value = value; }\r\n\r\n private _northProperty: DialogProperty<number> | undefined;\r\n public get northProperty() {\r\n if (!this._northProperty)\r\n this._northProperty = new DialogProperty<number>(new AngleDescription(\"north\", translateMessage(\"North\")), 0.0);\r\n return this._northProperty;\r\n }\r\n\r\n public get north(): number { return this.northProperty.value; }\r\n public set north(value: number) { this.northProperty.value = value; }\r\n\r\n private syncToolSettingsCoordinates(): void {\r\n this.syncToolSettingsProperties([this.latitudeProperty.syncItem, this.longitudeProperty.syncItem, this.altitudeProperty.syncItem, this.northProperty.syncItem]);\r\n }\r\n\r\n public override async applyToolSettingPropertyChange(updatedValue: DialogPropertySyncItem): Promise<boolean> {\r\n return this.changeToolSettingPropertyValue(updatedValue);\r\n }\r\n\r\n public override supplyToolSettingsProperties(): DialogItem[] | undefined {\r\n this._haveToolSettings = true;\r\n const toolSettings = new Array<DialogItem>();\r\n toolSettings.push(this.latitudeProperty.toDialogItem({ rowPriority: 1, columnIndex: 2 }));\r\n toolSettings.push(this.longitudeProperty.toDialogItem({ rowPriority: 2, columnIndex: 2 }));\r\n toolSettings.push(this.altitudeProperty.toDialogItem({ rowPriority: 3, columnIndex: 2 }));\r\n toolSettings.push(this.northProperty.toDialogItem({ rowPriority: 4, columnIndex: 2 }));\r\n return toolSettings;\r\n }\r\n\r\n protected provideToolAssistance(): void {\r\n const acceptMsg = CoreTools.translate(undefined === this._origin ? \"ElementSet.Inputs.AcceptPoint\" : \"ElementSet.Inputs.Accept\");\r\n const rejectMsg = CoreTools.translate(\"ElementSet.Inputs.Cancel\");\r\n const mainInstruction = ToolAssistance.createInstruction(this.iconSpec, translatePrompt(undefined === this._origin ? \"IdentifyKnownLocation\" : \"ConfirmCoordinates\"));\r\n const sections: ToolAssistanceSection[] = [];\r\n\r\n const mouseInstructions: ToolAssistanceInstruction[] = [];\r\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.LeftClick, acceptMsg, false, ToolAssistanceInputMethod.Mouse));\r\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.RightClick, rejectMsg, false, ToolAssistanceInputMethod.Mouse));\r\n sections.push(ToolAssistance.createSection(mouseInstructions, ToolAssistance.inputsLabel));\r\n\r\n const touchInstructions: ToolAssistanceInstruction[] = [];\r\n if (!ToolAssistance.createTouchCursorInstructions(touchInstructions))\r\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.OneTouchTap, acceptMsg, false, ToolAssistanceInputMethod.Touch));\r\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.TwoTouchTap, rejectMsg, false, ToolAssistanceInputMethod.Touch));\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 protected setupAndPromptForNextAction(): void {\r\n IModelApp.accuSnap.enableSnap(undefined === this._origin);\r\n this.provideToolAssistance();\r\n }\r\n\r\n private pulseDecoration() {\r\n if (!this._accept)\r\n return;\r\n\r\n const deco = ProjectExtentsClipDecoration.get();\r\n if (undefined === deco)\r\n return;\r\n\r\n this._scale += 0.1;\r\n if (this._scale > 1.6)\r\n this._scale = 1.0;\r\n\r\n deco.viewport.invalidateDecorations();\r\n setTimeout(() => { this.pulseDecoration(); }, 100);\r\n }\r\n\r\n private unsuspendDecorations() {\r\n const deco = ProjectExtentsClipDecoration.get();\r\n if (undefined !== deco)\r\n deco.suspendGeolocationDecorations = false;\r\n }\r\n\r\n public override decorate(context: DecorateContext): void {\r\n if (undefined === this._origin || !context.viewport.view.isSpatialView())\r\n return;\r\n\r\n const deco = ProjectExtentsClipDecoration.get();\r\n if (undefined === deco)\r\n return;\r\n\r\n deco.suspendGeolocationDecorations = true;\r\n deco.drawMonumentPoint(context, this._origin, this._scale);\r\n\r\n if (undefined !== this._labelDeco)\r\n this._labelDeco.addDecoration(context);\r\n }\r\n\r\n public override async onMouseMotion(ev: BeButtonEvent): Promise<void> {\r\n if (undefined === ev.viewport || this._accept)\r\n return;\r\n\r\n this._origin = ev.point.clone();\r\n ev.viewport.invalidateDecorations();\r\n }\r\n\r\n public override async onResetButtonUp(_ev: BeButtonEvent): Promise<EventHandled> {\r\n await this.onReinitialize(); // Calls onRestartTool to exit...\r\n return EventHandled.No;\r\n }\r\n\r\n protected acceptDefaultLocation(): void {\r\n // Greenwich is better default when testing control handle w/o tool settings support...\r\n this.latitude = Angle.createDegrees(51.4934).radians;\r\n this.longitude = Angle.createDegrees(0.0098).radians;\r\n this.altitude = 50.0;\r\n this.north = 0.0;\r\n }\r\n\r\n public acceptKnownLocation(ev: BeButtonEvent): void {\r\n const deco = ProjectExtentsClipDecoration.get();\r\n if (undefined === deco)\r\n return;\r\n\r\n this._accept = true; // Require explicit accept to give user a chance to change values...\r\n this._origin = ev.point.clone();\r\n this._labelDeco = new LabelDecoration(this._origin, translatePrompt(\"SpecifyCoordinates\"));\r\n\r\n if (!this._cartographicFromArgs) {\r\n if (this.iModel.isGeoLocated) {\r\n const cartographic = this.iModel.spatialToCartographicFromEcef(this._origin);\r\n this.latitude = cartographic.latitude;\r\n this.longitude = cartographic.longitude;\r\n this.altitude = cartographic.height;\r\n this.north = deco.getClockwiseAngleToNorth().radians;\r\n } else if (!this._haveToolSettings) {\r\n this.acceptDefaultLocation();\r\n }\r\n }\r\n\r\n this.syncToolSettingsCoordinates();\r\n this.pulseDecoration(); // Pulse to indicate that we are waiting for user input...\r\n this.setupAndPromptForNextAction();\r\n }\r\n\r\n public async acceptCoordinates(): Promise<void> {\r\n const deco = ProjectExtentsClipDecoration.get();\r\n if (undefined === deco)\r\n return;\r\n\r\n const origin = Cartographic.fromRadians({longitude: this.longitude, latitude: this.latitude, height: this.altitude});\r\n if (!deco.updateEcefLocation(origin, this._origin, Angle.createRadians(this.north)))\r\n return;\r\n\r\n return this.onReinitialize(); // Calls onRestartTool to exit...\r\n }\r\n\r\n public override async onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled> {\r\n if (undefined === ev.viewport)\r\n return EventHandled.No; // Shouldn't really happen...\r\n\r\n const haveKnownLocation = this._accept;\r\n if (!haveKnownLocation)\r\n this.acceptKnownLocation(ev);\r\n\r\n const needAcceptPoint = !haveKnownLocation && this._haveToolSettings;\r\n if (!needAcceptPoint)\r\n await this.acceptCoordinates();\r\n\r\n return EventHandled.No;\r\n }\r\n\r\n public override async onInstall(): Promise<boolean> {\r\n if (!ProjectExtentsClipDecoration.allowEcefLocationChange(false))\r\n return false;\r\n\r\n // Setup initial values here instead of supplyToolSettingsProperties to support keyin args w/o appui-react...\r\n this.initializeToolSettingPropertyValues([this.latitudeProperty, this.longitudeProperty, this.altitudeProperty, this.northProperty]);\r\n\r\n return true;\r\n }\r\n\r\n /** The keyin takes the following arguments, all of which are optional:\r\n * - `latitude=number` Latitude of accept point in degrees.\r\n * - `longitude=number` Longitude of accept point in degrees.\r\n * - `altitude=number` Height above ellipsoid of accept point.\r\n * - `north=number` North direction in degrees of accept point.\r\n */\r\n public override async parseAndRun(...inputArgs: string[]): Promise<boolean> {\r\n for (const arg of inputArgs) {\r\n const parts = arg.split(\"=\");\r\n if (2 !== parts.length)\r\n continue;\r\n\r\n if (parts[0].toLowerCase().startsWith(\"la\")) {\r\n const latitude = Number.parseFloat(parts[1]);\r\n if (!Number.isNaN(latitude)) {\r\n this.saveToolSettingPropertyValue(this.latitudeProperty, { value: Angle.createDegrees(latitude).radians });\r\n this._cartographicFromArgs = true;\r\n }\r\n } else if (parts[0].toLowerCase().startsWith(\"lo\")) {\r\n const longitude = Number.parseFloat(parts[1]);\r\n if (!Number.isNaN(longitude)) {\r\n this.saveToolSettingPropertyValue(this.longitudeProperty, { value: Angle.createDegrees(longitude).radians });\r\n this._cartographicFromArgs = true;\r\n }\r\n } else if (parts[0].toLowerCase().startsWith(\"al\")) {\r\n const altitude = Number.parseFloat(parts[1]);\r\n if (!Number.isNaN(altitude)) {\r\n this.saveToolSettingPropertyValue(this.altitudeProperty, { value: altitude });\r\n this._cartographicFromArgs = true;\r\n }\r\n } else if (parts[0].toLowerCase().startsWith(\"no\")) {\r\n const north = Number.parseFloat(parts[1]);\r\n if (!Number.isNaN(north)) {\r\n this.saveToolSettingPropertyValue(this.northProperty, { value: Angle.createDegrees(north).radians });\r\n this._cartographicFromArgs = true;\r\n }\r\n }\r\n }\r\n\r\n return this.run();\r\n }\r\n\r\n public static async startTool(): Promise<boolean> { return new ProjectGeolocationPointTool().run(); }\r\n}\r\n\r\n/** Change or update geolocation direction to true north.\r\n * @beta\r\n */\r\nexport class ProjectGeolocationNorthTool extends PrimitiveTool {\r\n public static override toolId = \"ProjectLocation.Geolocation.North\";\r\n public static override iconSpec = \"icon-sort-up\"; // <== Tool button should use whatever icon you have here...\r\n protected _origin?: Point3d;\r\n protected _northDir?: Ray3d;\r\n\r\n public override isCompatibleViewport(vp: Viewport | undefined, isSelectedViewChange: boolean): boolean { return (super.isCompatibleViewport(vp, isSelectedViewChange) && undefined !== vp && vp.view.isSpatialView()); }\r\n public override isValidLocation(_ev: BeButtonEvent, _isButtonEvent: boolean): boolean { return true; } // Allow snapping to terrain, etc. outside project extents...\r\n public override requireWriteableTarget(): boolean { return false; } // Tool doesn't modify the imodel...\r\n public override async onPostInstall() { await super.onPostInstall(); this.setupAndPromptForNextAction(); }\r\n public override async onCleanup() { await super.onCleanup(); this.unsuspendDecorations(); }\r\n public async onRestartTool() { return this.exitTool(); }\r\n public override async onUnsuspend() { this.provideToolAssistance(); }\r\n\r\n protected provideToolAssistance(): void {\r\n const acceptMsg = CoreTools.translate(\"ElementSet.Inputs.AcceptPoint\");\r\n const rejectMsg = CoreTools.translate(\"ElementSet.Inputs.Cancel\");\r\n const mainInstruction = ToolAssistance.createInstruction(this.iconSpec, translatePrompt(undefined === this._origin ? \"IdentifyRefPoint\" : \"DefineAngle\"));\r\n const sections: ToolAssistanceSection[] = [];\r\n\r\n const mouseInstructions: ToolAssistanceInstruction[] = [];\r\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.LeftClick, acceptMsg, false, ToolAssistanceInputMethod.Mouse));\r\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.RightClick, rejectMsg, false, ToolAssistanceInputMethod.Mouse));\r\n sections.push(ToolAssistance.createSection(mouseInstructions, ToolAssistance.inputsLabel));\r\n\r\n const touchInstructions: ToolAssistanceInstruction[] = [];\r\n if (!ToolAssistance.createTouchCursorInstructions(touchInstructions))\r\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.OneTouchTap, acceptMsg, false, ToolAssistanceInputMethod.Touch));\r\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.TwoTouchTap, rejectMsg, false, ToolAssistanceInputMethod.Touch));\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 protected setupAndPromptForNextAction(): void {\r\n IModelApp.accuSnap.enableSnap(true);\r\n this.provideToolAssistance();\r\n\r\n if (undefined === this._origin)\r\n return;\r\n\r\n const hints = new AccuDrawHintBuilder();\r\n hints.setRotation(Matrix3d.createIdentity());\r\n hints.setOrigin(this._origin);\r\n hints.setModePolar();\r\n hints.setOriginFixed = true;\r\n hints.setLockZ = true;\r\n hints.sendHints();\r\n }\r\n\r\n private getAdjustedPoint(ev: BeButtonEvent): Point3d | undefined {\r\n if (undefined === this._origin)\r\n return undefined;\r\n return AccuDrawHintBuilder.projectPointToPlaneInView(ev.point, this._origin, Vector3d.unitZ(), ev.viewport!, true);\r\n }\r\n\r\n private unsuspendDecorations() {\r\n const deco = ProjectExtentsClipDecoration.get();\r\n if (undefined !== deco)\r\n deco.suspendGeolocationDecorations = false;\r\n }\r\n\r\n private updateNorthVector(ev: BeButtonEvent): void {\r\n if (undefined === ev.viewport)\r\n return;\r\n\r\n if (undefined === this._northDir)\r\n this._northDir = Ray3d.create(ev.point, Vector3d.unitY());\r\n else\r\n this._northDir.origin.setFrom(undefined !== this._origin ? this._origin : ev.point);\r\n\r\n const dirPt = this.getAdjustedPoint(ev);\r\n if (undefined === dirPt)\r\n return;\r\n\r\n this._northDir.direction.setStartEnd(this._northDir.origin, dirPt);\r\n if (this._northDir.direction.magnitude() < 1.0e-6)\r\n this._northDir.direction.setFrom(Vector3d.unitY());\r\n\r\n this._northDir.direction.z = 0.0;\r\n this._northDir.direction.normalizeInPlace();\r\n }\r\n\r\n public override decorate(context: DecorateContext): void {\r\n if (undefined === this._northDir || !context.viewport.view.isSpatialView())\r\n return;\r\n\r\n const deco = ProjectExtentsClipDecoration.get();\r\n if (undefined === deco)\r\n return;\r\n\r\n deco.suspendGeolocationDecorations = true;\r\n deco.drawNorthArrow(context, this._northDir);\r\n }\r\n\r\n public override async onKeyTransition(wentDown: boolean, keyEvent: KeyboardEvent): Promise<EventHandled> {\r\n if (EventHandled.Yes === await super.onKeyTransition(wentDown, keyEvent))\r\n return EventHandled.Yes;\r\n return (wentDown && await AccuDrawShortcuts.processShortcutKey(keyEvent)) ? EventHandled.Yes : EventHandled.No;\r\n }\r\n\r\n public override async onMouseMotion(ev: BeButtonEvent): Promise<void> {\r\n if (undefined === ev.viewport)\r\n return;\r\n\r\n this.updateNorthVector(ev);\r\n ev.viewport.invalidateDecorations();\r\n }\r\n\r\n public override async onResetButtonUp(_ev: BeButtonEvent): Promise<EventHandled> {\r\n await this.onReinitialize(); // Calls onRestartTool to exit...\r\n return EventHandled.No;\r\n }\r\n\r\n public override async onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled> {\r\n if (undefined === ev.viewport)\r\n return EventHandled.No; // Shouldn't really happen...\r\n\r\n if (undefined === this._origin) {\r\n this._origin = ev.point.clone();\r\n this.setupAndPromptForNextAction();\r\n return EventHandled.No;\r\n }\r\n\r\n this.updateNorthVector(ev);\r\n\r\n if (undefined !== this._northDir) {\r\n const deco = ProjectExtentsClipDecoration.get();\r\n if (undefined !== deco)\r\n deco.updateNorthDirection(this._northDir);\r\n }\r\n\r\n await this.onReinitialize(); // Calls onRestartTool to exit...\r\n return EventHandled.No;\r\n }\r\n\r\n public override async onInstall(): Promise<boolean> { return ProjectExtentsClipDecoration.allowEcefLocationChange(true); }\r\n\r\n public static async startTool() { return new ProjectGeolocationNorthTool().run(); }\r\n}\r\n\r\n/** Move a geolocated model by specifying two points to define the offset.\r\n * @beta\r\n */\r\nexport class ProjectGeolocationMoveTool extends PrimitiveTool {\r\n public static override toolId = \"ProjectLocation.Geolocation.Move\";\r\n public static override iconSpec = \"icon-move\"; // <== Tool button should use whatever icon you have here...\r\n protected _origin?: Point3d;\r\n protected _current?: Point3d;\r\n\r\n public override isCompatibleViewport(vp: Viewport | undefined, isSelectedViewChange: boolean): boolean { return (super.isCompatibleViewport(vp, isSelectedViewChange) && undefined !== vp && vp.view.isSpatialView()); }\r\n public override isValidLocation(_ev: BeButtonEvent, _isButtonEvent: boolean): boolean { return true; } // Allow snapping to terrain, etc. outside project extents...\r\n public override requireWriteableTarget(): boolean { return false; } // Tool doesn't modify the imodel...\r\n public override async onPostInstall() { await super.onPostInstall(); this.setupAndPromptForNextAction(); }\r\n public override async onCleanup() { await super.onCleanup(); this.unsuspendDecorations(); }\r\n public async onRestartTool() { const tool = new ProjectGeolocationMoveTool(); if (!await tool.run()) return this.exitTool(); }\r\n public override async onUnsuspend() { this.provideToolAssistance(); }\r\n\r\n protected provideToolAssistance(): void {\r\n const acceptMsg = CoreTools.translate(\"ElementSet.Inputs.AcceptPoint\");\r\n const rejectMsg = CoreTools.translate(\"ElementSet.Inputs.Cancel\");\r\n const mainInstruction = ToolAssistance.createInstruction(this.iconSpec, translatePrompt(undefined === this._origin ? \"IdentifyRefPoint\" : \"DefineOffset\"));\r\n const sections: ToolAssistanceSection[] = [];\r\n\r\n const mouseInstructions: ToolAssistanceInstruction[] = [];\r\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.LeftClick, acceptMsg, false, ToolAssistanceInputMethod.Mouse));\r\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.RightClick, rejectMsg, false, ToolAssistanceInputMethod.Mouse));\r\n sections.push(ToolAssistance.createSection(mouseInstructions, ToolAssistance.inputsLabel));\r\n\r\n const touchInstructions: ToolAssistanceInstruction[] = [];\r\n if (!ToolAssistance.createTouchCursorInstructions(touchInstructions))\r\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.OneTouchTap, acceptMsg, false, ToolAssistanceInputMethod.Touch));\r\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.TwoTouchTap, rejectMsg, false, ToolAssistanceInputMethod.Touch));\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 protected setupAndPromptForNextAction(): void {\r\n IModelApp.accuSnap.enableSnap(true);\r\n this.provideToolAssistance();\r\n\r\n if (undefined === this._origin)\r\n return;\r\n\r\n const hints = new AccuDrawHintBuilder();\r\n hints.setRotation(Matrix3d.createIdentity());\r\n hints.setOrigin(this._origin);\r\n hints.setModePolar();\r\n hints.setOriginFixed = true;\r\n hints.sendHints();\r\n }\r\n\r\n private unsuspendDecorations() {\r\n const deco = ProjectExtentsClipDecoration.get();\r\n if (undefined !== deco)\r\n deco.suspendGeolocationDecorations = false;\r\n }\r\n\r\n private async acceptOffset(ev: BeButtonEvent): Promise<void> {\r\n if (undefined === ev.viewport || undefined === this._origin)\r\n return;\r\n\r\n const deco = ProjectExtentsClipDecoration.get();\r\n if (undefined === deco)\r\n return;\r\n\r\n const origin = this.iModel.spatialToCartographicFromEcef(ev.point);\r\n if (!deco.updateEcefLocation(origin, this._origin))\r\n return;\r\n\r\n return this.onReinitialize(); // Calls onRestartTool to exit...\r\n }\r\n\r\n public override decorate(context: DecorateContext): void {\r\n if (undefined === this._origin || undefined === this._current || !context.viewport.view.isSpatialView())\r\n return;\r\n\r\n const deco = ProjectExtentsClipDecoration.get();\r\n if (undefined === deco)\r\n return;\r\n\r\n const builderAccVis = context.createGraphicBuilder(GraphicType.WorldDecoration);\r\n const builderAccHid = context.createGraphicBuilder(GraphicType.WorldOverlay);\r\n const colorAccVis = ColorDef.white.adjustedForContrast(context.viewport.view.backgroundColor);\r\n const colorAccHid = colorAccVis.withAlpha(100);\r\n\r\n builderAccVis.setSymbology(colorAccVis, ColorDef.black, 3);\r\n builderAccHid.setSymbology(colorAccHid, ColorDef.black, 1, LinePixels.Code2);\r\n\r\n const extents = this.iModel.projectExtents.cloneTranslated(Vector3d.createStartEnd(this._origin, this._current));\r\n\r\n builderAccVis.addRangeBox(extents);\r\n builderAccHid.addRangeBox(extents);\r\n builderAccHid.addLineString([this._origin, this._current]);\r\n\r\n context.addDecorationFromBuilder(builderAccVis);\r\n context.addDecorationFromBuilder(builderAccHid);\r\n\r\n deco.suspendGeolocationDecorations = true;\r\n }\r\n\r\n public override async onKeyTransition(wentDown: boolean, keyEvent: KeyboardEvent): Promise<EventHandled> {\r\n if (EventHandled.Yes === await super.onKeyTransition(wentDown, keyEvent))\r\n return EventHandled.Yes;\r\n return (wentDown && await AccuDrawShortcuts.processShortcutKey(keyEvent)) ? EventHandled.Yes : EventHandled.No;\r\n }\r\n\r\n public override async onMouseMotion(ev: BeButtonEvent): Promise<void> {\r\n if (undefined === ev.viewport)\r\n return;\r\n\r\n this._current = ev.point;\r\n ev.viewport.invalidateDecorations();\r\n }\r\n\r\n public override async onResetButtonUp(_ev: BeButtonEvent): Promise<EventHandled> {\r\n if (undefined === this._origin)\r\n await this.exitTool(); // exit to select tool if we haven't gotten first point...\r\n else\r\n await this.onReinitialize(); // Calls onRestartTool...\r\n return EventHandled.No;\r\n }\r\n\r\n public override async onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled> {\r\n if (undefined === ev.viewport)\r\n return EventHandled.No; // Shouldn't really happen...\r\n\r\n if (undefined === this._origin) {\r\n this._origin = ev.point.clone();\r\n this.setupAndPromptForNextAction();\r\n return EventHandled.No;\r\n }\r\n\r\n await this.acceptOffset(ev);\r\n return EventHandled.No;\r\n }\r\n\r\n public override async onInstall(): Promise<boolean> { return ProjectExtentsClipDecoration.allowEcefLocationChange(true); }\r\n\r\n public static async startTool() { return new ProjectGeolocationMoveTool().run(); }\r\n}\r\n\r\n"]}
@@ -159,8 +159,7 @@ export declare class CreateArcTool extends CreateOrContinuePathTool {
159
159
  protected createConstructionCurve(ev: BeButtonEvent, isDynamics: boolean): CurvePrimitive | undefined;
160
160
  protected createNewCurvePrimitive(ev: BeButtonEvent, isDynamics: boolean): CurvePrimitive | undefined;
161
161
  private syncToolSettingsRadiusAndSweep;
162
- private syncRadiusState;
163
- private syncSweepState;
162
+ protected getToolSettingPropertyLocked(property: DialogProperty<any>): DialogProperty<any> | undefined;
164
163
  applyToolSettingPropertyChange(updatedValue: DialogPropertySyncItem): Promise<boolean>;
165
164
  supplyToolSettingsProperties(): DialogItem[] | undefined;
166
165
  onRestartTool(): Promise<void>;
@@ -205,7 +204,7 @@ export declare class CreateCircleTool extends CreateOrContinuePathTool {
205
204
  protected createNewCurvePrimitive(ev: BeButtonEvent, isDynamics: boolean): CurvePrimitive | undefined;
206
205
  protected cancelPoint(_ev: BeButtonEvent): Promise<boolean>;
207
206
  private syncToolSettingsRadius;
208
- private syncRadiusState;
207
+ protected getToolSettingPropertyLocked(property: DialogProperty<any>): DialogProperty<any> | undefined;
209
208
  applyToolSettingPropertyChange(updatedValue: DialogPropertySyncItem): Promise<boolean>;
210
209
  supplyToolSettingsProperties(): DialogItem[] | undefined;
211
210
  onRestartTool(): Promise<void>;
@@ -252,7 +251,7 @@ export declare class CreateRectangleTool extends CreateOrContinuePathTool {
252
251
  protected get createCurvePhase(): CreateCurvePhase;
253
252
  protected createNewCurvePrimitive(ev: BeButtonEvent, isDynamics: boolean): CurvePrimitive | undefined;
254
253
  protected createNewPath(placement: PlacementProps): JsonGeometryStream | FlatBufferGeometryStream | undefined;
255
- private syncRadiusState;
254
+ protected getToolSettingPropertyLocked(property: DialogProperty<any>): DialogProperty<any> | undefined;
256
255
  applyToolSettingPropertyChange(updatedValue: DialogPropertySyncItem): Promise<boolean>;
257
256
  supplyToolSettingsProperties(): DialogItem[] | undefined;
258
257
  onRestartTool(): Promise<void>;
@@ -303,7 +302,6 @@ export declare class CreateBCurveTool extends CreateOrContinuePathTool {
303
302
  protected getSnapGeometry(): GeometryQuery | undefined;
304
303
  protected acceptPoint(ev: BeButtonEvent): Promise<boolean>;
305
304
  protected cancelPoint(ev: BeButtonEvent): Promise<boolean>;
306
- private syncOrderState;
307
305
  applyToolSettingPropertyChange(updatedValue: DialogPropertySyncItem): Promise<boolean>;
308
306
  supplyToolSettingsProperties(): DialogItem[] | undefined;
309
307
  onRestartTool(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"SketchTools.d.ts","sourceRoot":"","sources":["../../src/SketchTools.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAA2E,cAAc,EAA0B,aAAa,EAAgH,QAAQ,EAAE,IAAI,EAAgC,OAAO,EAAmC,SAAS,EAAE,QAAQ,EAAsB,MAAM,sBAAsB,CAAC;AACrZ,OAAO,EAAmC,mBAAmB,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,cAAc,EAAE,mBAAmB,EAAsB,kBAAkB,EAAc,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpP,OAAO,EAAmD,aAAa,EAAE,cAAc,EAAa,eAAe,EAAE,eAAe,EAAE,YAAY,EAAe,SAAS,EAA6E,UAAU,EAAuF,yBAAyB,EAAyB,MAAM,sBAAsB,CAAC;AACva,OAAO,EAAE,2BAA2B,EAAuB,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAkC,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAEjH,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,sBAAsB,EAA6F,MAAM,uBAAuB,CAAC;AAEtL,8FAA8F;AAC9F,oBAAY,gBAAgB;IAC1B;;OAEG;IACH,WAAW,IAAA;IACX;;OAEG;IACH,SAAS,IAAA;IACT;;OAEG;IACH,WAAW,IAAA;CACZ;AAED,4DAA4D;AAC5D,8BAAsB,wBAAyB,SAAQ,iBAAiB;IACtE,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAM;IAC5C,SAAS,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC;IACnC,SAAS,CAAC,gBAAgB,CAAC,EAAE;QAAE,KAAK,EAAE,qBAAqB,CAAC;QAAC,IAAI,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,cAAc,CAAA;KAAE,CAAC;IAClG,SAAS,CAAC,QAAQ,UAAS;IAC3B,SAAS,CAAC,cAAc,UAAS;IACjC,SAAS,CAAC,iBAAiB,CAAC,EAAE,uBAAuB,CAAC;IACtD,SAAS,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC;IACnC,SAAS,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;cAEf,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;WAMjC,WAAW,CAAC,CAAC,SAAS,MAAM,2BAA2B,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC;IAIlL,cAAuB,YAAY,IAAI,OAAO,CAAiB;IAC/D,cAAuB,YAAY,IAAI,OAAO,CAAiB;IAE/D,SAAS,KAAK,SAAS,IAAI,OAAO,CAA+B;IACjE,SAAS,KAAK,YAAY,IAAI,OAAO,CAA+B;IACpE,SAAS,KAAK,aAAa,IAAI,OAAO,CAAiB;IAEvD,SAAS,KAAK,iBAAiB,IAAI,OAAO,CAAwC;IAClF,SAAS,KAAK,oBAAoB,IAAI,OAAO,CAAkB;IAC/D,SAAS,KAAK,QAAQ,IAAI,OAAO,CAA2B;IAC5D,SAAS,KAAK,WAAW,IAAI,OAAO,CAA6D;IACjG,SAAS,KAAK,YAAY,IAAI,OAAO,CAA+B;IAEpE,SAAS,KAAK,sBAAsB,IAAI,OAAO,CAAkB;IACjE,SAAS,KAAK,QAAQ,IAAI,OAAO,CAAkG;IACnI,SAAS,KAAK,WAAW,IAAI,OAAO,CAAkF;IAEtH,yGAAyG;IACzG,SAAS,KAAK,gBAAgB,IAAI,gBAAgB,CAEjD;IAED;;;;KAIC;IACD,SAAS,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS;IAE9G,SAAS,CAAC,kBAAkB,CAAC,EAAE,EAAE,aAAa,GAAG,QAAQ;IAKzD,SAAS,CAAC,WAAW,CAAC,EAAE,EAAE,aAAa,GAAG,QAAQ;cAIlC,8BAA8B,CAAC,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAS9H,SAAS,KAAK,sBAAsB,IAAI,OAAO,CAAgD;cAE/E,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,qBAAqB,CAAC;QAAC,IAAI,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,cAAc,CAAA;KAAE,GAAG,SAAS,CAAC;cAuC/H,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;cAwBlC,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;WAYvC,gBAAgB,CAAC,IAAI,EAAE,mBAAmB,GAAG;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,cAAc,CAAA;KAAE,GAAG,SAAS;WAwC/F,cAAc,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO;WAW1D,kBAAkB,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,OAAO;IA+C7E,SAAS,CAAC,aAAa,IAAI,IAAI;cAOf,cAAc,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBhE,SAAS,CAAC,uBAAuB,CAAC,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,GAAG,IAAI;IAiE5G,SAAS,CAAC,wBAAwB,CAAC,GAAG,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO;IAczE,cAAc,CAAC,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,GAAG,IAAI;IAQ3D,aAAa,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrE,SAAS,CAAC,iBAAiB,CAAC,OAAO,EAAE,eAAe,EAAE,EAAE,EAAE,OAAO,GAAG,IAAI;IAwCxE,SAAS,CAAC,oBAAoB,CAAC,OAAO,EAAE,eAAe,EAAE,EAAE,EAAE,OAAO,GAAG,IAAI;IAgC3D,iBAAiB,CAAC,EAAE,EAAE,UAAU,GAAG,OAAO;IAIpC,UAAU,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC;IAM/E,SAAS,CAAC,eAAe,IAAI,aAAa,GAAG,SAAS;IAQtC,qBAAqB,CAAC,IAAI,EAAE,SAAS,GAAG,mBAAmB,GAAG,SAAS;IASvF,SAAS,CAAC,mBAAmB,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAwC7C,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAalC,uBAAuB,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAQzI,SAAS,CAAC,iBAAiB,IAAI,cAAc,GAAG,SAAS;IA2BzD,SAAS,CAAC,aAAa,CAAC,SAAS,EAAE,cAAc,GAAG,kBAAkB,GAAG,wBAAwB,GAAG,SAAS;IAc7G,SAAS,CAAC,oBAAoB,CAAC,SAAS,EAAE,cAAc,GAAG,kBAAkB,GAAG,wBAAwB,GAAG,SAAS;IA6CpH,SAAS,CAAC,gBAAgB,CAAC,SAAS,EAAE,cAAc,GAAG,kBAAkB,GAAG,wBAAwB,GAAG,SAAS;IAOhH,SAAS,CAAC,eAAe,CAAC,SAAS,EAAE,cAAc,GAAG,qBAAqB,GAAG,SAAS;cAavE,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAiC9C,SAAS,CAAC,aAAa,IAAI,IAAI;cAkBZ,2BAA2B,IAAI,IAAI;cAKtC,WAAW,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;cAOhD,WAAW,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAE3C,gBAAgB,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAM1D,eAAe,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAMzD,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IAatC,SAAS;CAIhC;AAED,oGAAoG;AACpG,qBAAa,oBAAqB,SAAQ,wBAAwB;IAChE,OAAuB,MAAM,SAAsB;IACnD,OAAuB,QAAQ,SAAgB;IAE/C,cAAuB,oBAAoB,IAAI,OAAO,CAAiB;cAEpD,qBAAqB,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,yBAAyB,EAAE,GAAG,IAAI;IAyBvH,cAAuB,WAAW,IAAI,OAAO,CAG5C;cAEkB,UAAU,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO;IASzD,SAAS,CAAC,uBAAuB,CAAC,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS;cAY5E,WAAW,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAS5D,aAAa;CAK3B;AAED,aAAa;AACb,oBAAY,SAAS;IACnB,WAAW,IAAI;IACf,WAAW,IAAI;IACf,WAAW,IAAI;IACf,WAAW,IAAI;CAChB;AAED,oFAAoF;AACpF,qBAAa,aAAc,SAAQ,wBAAwB;IACzD,OAAuB,MAAM,SAAe;IAC5C,OAAuB,QAAQ,SAAoC;IAEnE,WAA2B,OAAO,WAAgB;IAClD,WAA2B,OAAO,WAAgB;IAElD,cAAuB,sBAAsB,IAAI,OAAO,CAAiB;cAEtD,qBAAqB,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,yBAAyB,EAAE,GAAG,IAAI;cAwBlG,aAAa,IAAI,IAAI;IAuDxC,OAAO,CAAC,MAAM,CAAC,aAAa;IAC5B,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAO7B;IAEF,OAAO,CAAC,eAAe,CAAqC;IAC5D,IAAW,cAAc,2BAKxB;IAED,IAAW,MAAM,IAAI,SAAS,CAAmD;IACjF,IAAW,MAAM,CAAC,MAAM,EAAE,SAAS,EAAyC;IAE5E,OAAO,CAAC,kBAAkB,CAAsC;IAChE,IAAW,iBAAiB,4BAI3B;IAED,IAAW,SAAS,IAAI,OAAO,CAAyC;IACxE,IAAW,SAAS,CAAC,KAAK,EAAE,OAAO,EAA2C;IAE9E,OAAO,CAAC,eAAe,CAAqC;IAC5D,IAAW,cAAc,2BAIxB;IAED,IAAW,MAAM,IAAI,MAAM,CAAsC;IACjE,IAAW,MAAM,CAAC,KAAK,EAAE,MAAM,EAAwC;IAEvE,OAAO,CAAC,iBAAiB,CAAsC;IAC/D,IAAW,gBAAgB,4BAI1B;IAED,IAAW,QAAQ,IAAI,OAAO,CAAwC;IACtE,IAAW,QAAQ,CAAC,KAAK,EAAE,OAAO,EAA0C;IAE5E,OAAO,CAAC,cAAc,CAAqC;IAC3D,IAAW,aAAa,2BAIvB;IAED,IAAW,KAAK,IAAI,MAAM,CAAqC;IAC/D,IAAW,KAAK,CAAC,KAAK,EAAE,MAAM,EAAuC;cAElD,UAAU,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO;IAI1D,cAAuB,gBAAgB,IAAI,gBAAgB,CAc1D;IAED,SAAS,CAAC,uBAAuB,CAAC,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS;IAwErG,SAAS,CAAC,uBAAuB,CAAC,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS;IAsGrG,OAAO,CAAC,8BAA8B;IA8BtC,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,cAAc;IAMA,8BAA8B,CAAC,YAAY,EAAE,sBAAsB,GAAG,OAAO,CAAC,OAAO,CAAC;IAwC5F,4BAA4B,IAAI,UAAU,EAAE,GAAG,SAAS;IAgB3D,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAMrB,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAkCnD;;;;OAIG;IACmB,WAAW,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CA2D5E;AAED,aAAa;AACb,oBAAY,YAAY;IACtB,MAAM,IAAI;IACV,IAAI,IAAI;CACT;AAED,sFAAsF;AACtF,qBAAa,gBAAiB,SAAQ,wBAAwB;IAC5D,OAAuB,MAAM,SAAkB;IAC/C,OAAuB,QAAQ,SAAiB;IAEhD,WAA2B,OAAO,WAAgB;IAClD,WAA2B,OAAO,WAAgB;IAElD,cAAuB,sBAAsB,IAAI,OAAO,CAAqE;IAE7H,cAAuB,gBAAgB,IAAI,gBAAgB,CAAyC;cAEjF,qBAAqB,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,yBAAyB,EAAE,GAAG,IAAI;cAgBlG,aAAa,IAAI,IAAI;IAmBxC,OAAO,CAAC,MAAM,CAAC,aAAa;IAC5B,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAK7B;IAEF,OAAO,CAAC,eAAe,CAAqC;IAC5D,IAAW,cAAc,2BAKxB;IAED,IAAW,MAAM,IAAI,YAAY,CAAsD;IACvF,IAAW,MAAM,CAAC,MAAM,EAAE,YAAY,EAAyC;IAE/E,OAAO,CAAC,kBAAkB,CAAsC;IAChE,IAAW,iBAAiB,4BAI3B;IAED,IAAW,SAAS,IAAI,OAAO,CAAyC;IACxE,IAAW,SAAS,CAAC,KAAK,EAAE,OAAO,EAA2C;IAE9E,OAAO,CAAC,eAAe,CAAqC;IAC5D,IAAW,cAAc,2BAIxB;IAED,IAAW,MAAM,IAAI,MAAM,CAAsC;IACjE,IAAW,MAAM,CAAC,KAAK,EAAE,MAAM,EAAwC;cAEpD,UAAU,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO;IAM1D,SAAS,CAAC,uBAAuB,CAAC,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS;cAqC5E,WAAW,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAS1E,OAAO,CAAC,sBAAsB;IAgB9B,OAAO,CAAC,eAAe;IAMD,8BAA8B,CAAC,YAAY,EAAE,sBAAsB,GAAG,OAAO,CAAC,OAAO,CAAC;IAyB5F,4BAA4B,IAAI,UAAU,EAAE,GAAG,SAAS;IAY3D,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAMrB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAW/B,aAAa;IAWb,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAuBnD;;;OAGG;IACmB,WAAW,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CAyC5E;AAED,wFAAwF;AACxF,qBAAa,iBAAkB,SAAQ,wBAAwB;IAC7D,OAAuB,MAAM,SAAmB;IAChD,OAAuB,QAAQ,SAAkB;cAE9B,UAAU,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO;IAI1D,cAAuB,gBAAgB,IAAI,gBAAgB,CAAyC;cAEjF,qBAAqB,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,yBAAyB,EAAE,GAAG,IAAI;cAoBlG,aAAa,IAAI,IAAI;IAwBxC,SAAS,CAAC,uBAAuB,CAAC,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS;IA0BxF,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;CAK5C;AAED,0GAA0G;AAC1G,qBAAa,mBAAoB,SAAQ,wBAAwB;IAC/D,OAAuB,MAAM,SAAqB;IAClD,OAAuB,QAAQ,SAAoB;IAEnD,SAAS,CAAC,YAAY,YAA8B;IACpD,SAAS,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAChC,SAAS,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAEhC,WAA2B,OAAO,WAAgB;IAClD,WAA2B,OAAO,WAAgB;cAE/B,qBAAqB,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,yBAAyB,EAAE,GAAG,IAAI;cAKlG,aAAa,IAAI,IAAI;IAcxC,OAAO,CAAC,kBAAkB,CAAsC;IAChE,IAAW,iBAAiB,4BAI3B;IAED,IAAW,SAAS,IAAI,OAAO,CAAyC;IACxE,IAAW,SAAS,CAAC,KAAK,EAAE,OAAO,EAA2C;IAE9E,OAAO,CAAC,eAAe,CAAqC;IAC5D,IAAW,cAAc,2BAIxB;IAED,IAAW,MAAM,IAAI,MAAM,CAAsC;IACjE,IAAW,MAAM,CAAC,KAAK,EAAE,MAAM,EAAwC;cAEpD,UAAU,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO;IAI1D,cAAuB,gBAAgB,IAAI,gBAAgB,CAAyC;IAEpG,SAAS,CAAC,uBAAuB,CAAC,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS;cA+BlF,aAAa,CAAC,SAAS,EAAE,cAAc,GAAG,kBAAkB,GAAG,wBAAwB,GAAG,SAAS;IAgBtH,OAAO,CAAC,eAAe;IAMD,8BAA8B,CAAC,YAAY,EAAE,sBAAsB,GAAG,OAAO,CAAC,OAAO,CAAC;IAiB5F,4BAA4B,IAAI,UAAU,EAAE,GAAG,SAAS;IAW3D,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAMrB,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAmBnD;;OAEG;IACmB,WAAW,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CAyB5E;AAED,aAAa;AACb,oBAAY,YAAY;IACtB,aAAa,IAAI;IACjB,aAAa,IAAI;CAClB;AAED,wHAAwH;AACxH,qBAAa,gBAAiB,SAAQ,wBAAwB;IAC5D,OAAuB,MAAM,SAAkB;IAC/C,OAAuB,QAAQ,SAAwB;IAEvD,SAAS,CAAC,6BAA6B,UAAS;IAChD,SAAS,CAAC,aAAa,mBAAgC;IAEvD,WAA2B,OAAO,WAAgB;IAClD,WAA2B,OAAO,WAAgB;IAElD,cAAuB,oBAAoB,IAAI,OAAO,CAAiB;IACvE,cAAuB,sBAAsB,IAAI,OAAO,CAAiB;cAEtD,qBAAqB,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,yBAAyB,EAAE,GAAG,IAAI;IAyBvH,OAAO,CAAC,MAAM,CAAC,aAAa;IAC5B,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAK7B;IAEF,OAAO,CAAC,eAAe,CAAqC;IAC5D,IAAW,cAAc,2BAKxB;IAED,IAAW,MAAM,IAAI,YAAY,CAAsD;IACvF,IAAW,MAAM,CAAC,MAAM,EAAE,YAAY,EAAyC;IAE/E,OAAO,CAAC,cAAc,CAAqC;IAC3D,IAAW,aAAa,2BAMvB;IAED,IAAW,KAAK,IAAI,MAAM,CAAqC;IAC/D,IAAW,KAAK,CAAC,KAAK,EAAE,MAAM,EAAuC;IAErE,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAc;IAC9C,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAe;IAE/C,OAAO,CAAC,iBAAiB,CAAsC;IAC/D,IAAW,gBAAgB,4BAK1B;IAED,IAAW,QAAQ,IAAI,OAAO,CAAwC;IACtE,IAAW,QAAQ,CAAC,KAAK,EAAE,OAAO,EAA0C;IAE5E,cAAuB,WAAW,IAAI,OAAO,CAG5C;IAED,SAAS,KAAK,kBAAkB,IAAI,MAAM,CAKzC;IAED,cAAuB,gBAAgB,IAAI,gBAAgB,CAK1D;cAEkB,UAAU,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO;cAStC,wBAAwB,CAAC,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO;IAkBjG,SAAS,CAAC,uBAAuB,CAAC,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS;cAiElF,eAAe,IAAI,aAAa,GAAG,SAAS;cAQtC,WAAW,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;cAkBhD,WAAW,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAgCzE,OAAO,CAAC,cAAc;IAKA,8BAA8B,CAAC,YAAY,EAAE,sBAAsB,GAAG,OAAO,CAAC,OAAO,CAAC;IAsB5F,4BAA4B,IAAI,UAAU,EAAE,GAAG,SAAS;IAU3D,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAMrB,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAoBnD;;;;OAIG;IACmB,WAAW,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CA6C5E"}
1
+ {"version":3,"file":"SketchTools.d.ts","sourceRoot":"","sources":["../../src/SketchTools.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAA2E,cAAc,EAA0B,aAAa,EAAgH,QAAQ,EAAE,IAAI,EAAgC,OAAO,EAAmC,SAAS,EAAE,QAAQ,EAAsB,MAAM,sBAAsB,CAAC;AACrZ,OAAO,EAAmC,mBAAmB,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,cAAc,EAAE,mBAAmB,EAAsB,kBAAkB,EAAc,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpP,OAAO,EAAmD,aAAa,EAAE,cAAc,EAAa,eAAe,EAAE,eAAe,EAAE,YAAY,EAAe,SAAS,EAA6E,UAAU,EAAuF,yBAAyB,EAAyB,MAAM,sBAAsB,CAAC;AACva,OAAO,EAAE,2BAA2B,EAAuB,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAkC,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAEjH,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,sBAAsB,EAA6F,MAAM,uBAAuB,CAAC;AAEtL,8FAA8F;AAC9F,oBAAY,gBAAgB;IAC1B;;OAEG;IACH,WAAW,IAAA;IACX;;OAEG;IACH,SAAS,IAAA;IACT;;OAEG;IACH,WAAW,IAAA;CACZ;AAED,4DAA4D;AAC5D,8BAAsB,wBAAyB,SAAQ,iBAAiB;IACtE,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAM;IAC5C,SAAS,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC;IACnC,SAAS,CAAC,gBAAgB,CAAC,EAAE;QAAE,KAAK,EAAE,qBAAqB,CAAC;QAAC,IAAI,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,cAAc,CAAA;KAAE,CAAC;IAClG,SAAS,CAAC,QAAQ,UAAS;IAC3B,SAAS,CAAC,cAAc,UAAS;IACjC,SAAS,CAAC,iBAAiB,CAAC,EAAE,uBAAuB,CAAC;IACtD,SAAS,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC;IACnC,SAAS,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;cAEf,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;WAMjC,WAAW,CAAC,CAAC,SAAS,MAAM,2BAA2B,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC;IAIlL,cAAuB,YAAY,IAAI,OAAO,CAAiB;IAC/D,cAAuB,YAAY,IAAI,OAAO,CAAiB;IAE/D,SAAS,KAAK,SAAS,IAAI,OAAO,CAA+B;IACjE,SAAS,KAAK,YAAY,IAAI,OAAO,CAA+B;IACpE,SAAS,KAAK,aAAa,IAAI,OAAO,CAAiB;IAEvD,SAAS,KAAK,iBAAiB,IAAI,OAAO,CAAwC;IAClF,SAAS,KAAK,oBAAoB,IAAI,OAAO,CAAkB;IAC/D,SAAS,KAAK,QAAQ,IAAI,OAAO,CAA2B;IAC5D,SAAS,KAAK,WAAW,IAAI,OAAO,CAA6D;IACjG,SAAS,KAAK,YAAY,IAAI,OAAO,CAA+B;IAEpE,SAAS,KAAK,sBAAsB,IAAI,OAAO,CAAkB;IACjE,SAAS,KAAK,QAAQ,IAAI,OAAO,CAAkG;IACnI,SAAS,KAAK,WAAW,IAAI,OAAO,CAAkF;IAEtH,yGAAyG;IACzG,SAAS,KAAK,gBAAgB,IAAI,gBAAgB,CAEjD;IAED;;;;KAIC;IACD,SAAS,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS;IAE9G,SAAS,CAAC,kBAAkB,CAAC,EAAE,EAAE,aAAa,GAAG,QAAQ;IAKzD,SAAS,CAAC,WAAW,CAAC,EAAE,EAAE,aAAa,GAAG,QAAQ;cAIlC,8BAA8B,CAAC,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAS9H,SAAS,KAAK,sBAAsB,IAAI,OAAO,CAAgD;cAE/E,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,qBAAqB,CAAC;QAAC,IAAI,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,cAAc,CAAA;KAAE,GAAG,SAAS,CAAC;cAuC/H,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;cAwBlC,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;WAYvC,gBAAgB,CAAC,IAAI,EAAE,mBAAmB,GAAG;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,cAAc,CAAA;KAAE,GAAG,SAAS;WAwC/F,cAAc,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO;WAW1D,kBAAkB,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,OAAO;IA+C7E,SAAS,CAAC,aAAa,IAAI,IAAI;cAOf,cAAc,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBhE,SAAS,CAAC,uBAAuB,CAAC,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,GAAG,IAAI;IAiE5G,SAAS,CAAC,wBAAwB,CAAC,GAAG,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO;IAczE,cAAc,CAAC,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,GAAG,IAAI;IAQ3D,aAAa,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrE,SAAS,CAAC,iBAAiB,CAAC,OAAO,EAAE,eAAe,EAAE,EAAE,EAAE,OAAO,GAAG,IAAI;IAwCxE,SAAS,CAAC,oBAAoB,CAAC,OAAO,EAAE,eAAe,EAAE,EAAE,EAAE,OAAO,GAAG,IAAI;IAgC3D,iBAAiB,CAAC,EAAE,EAAE,UAAU,GAAG,OAAO;IAIpC,UAAU,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC;IAM/E,SAAS,CAAC,eAAe,IAAI,aAAa,GAAG,SAAS;IAQtC,qBAAqB,CAAC,IAAI,EAAE,SAAS,GAAG,mBAAmB,GAAG,SAAS;IASvF,SAAS,CAAC,mBAAmB,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAwC7C,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAalC,uBAAuB,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAQzI,SAAS,CAAC,iBAAiB,IAAI,cAAc,GAAG,SAAS;IA2BzD,SAAS,CAAC,aAAa,CAAC,SAAS,EAAE,cAAc,GAAG,kBAAkB,GAAG,wBAAwB,GAAG,SAAS;IAc7G,SAAS,CAAC,oBAAoB,CAAC,SAAS,EAAE,cAAc,GAAG,kBAAkB,GAAG,wBAAwB,GAAG,SAAS;IA6CpH,SAAS,CAAC,gBAAgB,CAAC,SAAS,EAAE,cAAc,GAAG,kBAAkB,GAAG,wBAAwB,GAAG,SAAS;IAOhH,SAAS,CAAC,eAAe,CAAC,SAAS,EAAE,cAAc,GAAG,qBAAqB,GAAG,SAAS;cAavE,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAiC9C,SAAS,CAAC,aAAa,IAAI,IAAI;cAkBZ,2BAA2B,IAAI,IAAI;cAKtC,WAAW,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;cAOhD,WAAW,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAE3C,gBAAgB,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAM1D,eAAe,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAMzD,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IAatC,SAAS;CAIhC;AAED,oGAAoG;AACpG,qBAAa,oBAAqB,SAAQ,wBAAwB;IAChE,OAAuB,MAAM,SAAsB;IACnD,OAAuB,QAAQ,SAAgB;IAE/C,cAAuB,oBAAoB,IAAI,OAAO,CAAiB;cAEpD,qBAAqB,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,yBAAyB,EAAE,GAAG,IAAI;IAyBvH,cAAuB,WAAW,IAAI,OAAO,CAG5C;cAEkB,UAAU,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO;IASzD,SAAS,CAAC,uBAAuB,CAAC,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS;cAY5E,WAAW,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAS5D,aAAa;CAK3B;AAED,aAAa;AACb,oBAAY,SAAS;IACnB,WAAW,IAAI;IACf,WAAW,IAAI;IACf,WAAW,IAAI;IACf,WAAW,IAAI;CAChB;AAED,oFAAoF;AACpF,qBAAa,aAAc,SAAQ,wBAAwB;IACzD,OAAuB,MAAM,SAAe;IAC5C,OAAuB,QAAQ,SAAoC;IAEnE,WAA2B,OAAO,WAAgB;IAClD,WAA2B,OAAO,WAAgB;IAElD,cAAuB,sBAAsB,IAAI,OAAO,CAAiB;cAEtD,qBAAqB,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,yBAAyB,EAAE,GAAG,IAAI;cAwBlG,aAAa,IAAI,IAAI;IAuDxC,OAAO,CAAC,MAAM,CAAC,aAAa;IAC5B,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAO7B;IAEF,OAAO,CAAC,eAAe,CAAqC;IAC5D,IAAW,cAAc,2BAKxB;IAED,IAAW,MAAM,IAAI,SAAS,CAAmD;IACjF,IAAW,MAAM,CAAC,MAAM,EAAE,SAAS,EAAyC;IAE5E,OAAO,CAAC,kBAAkB,CAAsC;IAChE,IAAW,iBAAiB,4BAI3B;IAED,IAAW,SAAS,IAAI,OAAO,CAAyC;IACxE,IAAW,SAAS,CAAC,KAAK,EAAE,OAAO,EAA2C;IAE9E,OAAO,CAAC,eAAe,CAAqC;IAC5D,IAAW,cAAc,2BAIxB;IAED,IAAW,MAAM,IAAI,MAAM,CAAsC;IACjE,IAAW,MAAM,CAAC,KAAK,EAAE,MAAM,EAAwC;IAEvE,OAAO,CAAC,iBAAiB,CAAsC;IAC/D,IAAW,gBAAgB,4BAI1B;IAED,IAAW,QAAQ,IAAI,OAAO,CAAwC;IACtE,IAAW,QAAQ,CAAC,KAAK,EAAE,OAAO,EAA0C;IAE5E,OAAO,CAAC,cAAc,CAAqC;IAC3D,IAAW,aAAa,2BAIvB;IAED,IAAW,KAAK,IAAI,MAAM,CAAqC;IAC/D,IAAW,KAAK,CAAC,KAAK,EAAE,MAAM,EAAuC;cAElD,UAAU,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO;IAI1D,cAAuB,gBAAgB,IAAI,gBAAgB,CAc1D;IAED,SAAS,CAAC,uBAAuB,CAAC,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS;IAwErG,SAAS,CAAC,uBAAuB,CAAC,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS;IAsGrG,OAAO,CAAC,8BAA8B;cAwBnB,4BAA4B,CAAC,QAAQ,EAAE,cAAc,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,SAAS;IAQzF,8BAA8B,CAAC,YAAY,EAAE,sBAAsB,GAAG,OAAO,CAAC,OAAO,CAAC;IAY5F,4BAA4B,IAAI,UAAU,EAAE,GAAG,SAAS;IAgB3D,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAMrB,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAgBnD;;;;OAIG;IACmB,WAAW,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CA2D5E;AAED,aAAa;AACb,oBAAY,YAAY;IACtB,MAAM,IAAI;IACV,IAAI,IAAI;CACT;AAED,sFAAsF;AACtF,qBAAa,gBAAiB,SAAQ,wBAAwB;IAC5D,OAAuB,MAAM,SAAkB;IAC/C,OAAuB,QAAQ,SAAiB;IAEhD,WAA2B,OAAO,WAAgB;IAClD,WAA2B,OAAO,WAAgB;IAElD,cAAuB,sBAAsB,IAAI,OAAO,CAAqE;IAE7H,cAAuB,gBAAgB,IAAI,gBAAgB,CAAyC;cAEjF,qBAAqB,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,yBAAyB,EAAE,GAAG,IAAI;cAgBlG,aAAa,IAAI,IAAI;IAmBxC,OAAO,CAAC,MAAM,CAAC,aAAa;IAC5B,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAK7B;IAEF,OAAO,CAAC,eAAe,CAAqC;IAC5D,IAAW,cAAc,2BAKxB;IAED,IAAW,MAAM,IAAI,YAAY,CAAsD;IACvF,IAAW,MAAM,CAAC,MAAM,EAAE,YAAY,EAAyC;IAE/E,OAAO,CAAC,kBAAkB,CAAsC;IAChE,IAAW,iBAAiB,4BAI3B;IAED,IAAW,SAAS,IAAI,OAAO,CAAyC;IACxE,IAAW,SAAS,CAAC,KAAK,EAAE,OAAO,EAA2C;IAE9E,OAAO,CAAC,eAAe,CAAqC;IAC5D,IAAW,cAAc,2BAIxB;IAED,IAAW,MAAM,IAAI,MAAM,CAAsC;IACjE,IAAW,MAAM,CAAC,KAAK,EAAE,MAAM,EAAwC;cAEpD,UAAU,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO;IAM1D,SAAS,CAAC,uBAAuB,CAAC,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS;cAqC5E,WAAW,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAS1E,OAAO,CAAC,sBAAsB;cAOX,4BAA4B,CAAC,QAAQ,EAAE,cAAc,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,SAAS;IAIzF,8BAA8B,CAAC,YAAY,EAAE,sBAAsB,GAAG,OAAO,CAAC,OAAO,CAAC;IAY5F,4BAA4B,IAAI,UAAU,EAAE,GAAG,SAAS;IAY3D,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAMrB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAW/B,aAAa;IAWb,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAanD;;;OAGG;IACmB,WAAW,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CAyC5E;AAED,wFAAwF;AACxF,qBAAa,iBAAkB,SAAQ,wBAAwB;IAC7D,OAAuB,MAAM,SAAmB;IAChD,OAAuB,QAAQ,SAAkB;cAE9B,UAAU,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO;IAI1D,cAAuB,gBAAgB,IAAI,gBAAgB,CAAyC;cAEjF,qBAAqB,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,yBAAyB,EAAE,GAAG,IAAI;cAoBlG,aAAa,IAAI,IAAI;IAwBxC,SAAS,CAAC,uBAAuB,CAAC,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS;IA0BxF,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;CAK5C;AAED,0GAA0G;AAC1G,qBAAa,mBAAoB,SAAQ,wBAAwB;IAC/D,OAAuB,MAAM,SAAqB;IAClD,OAAuB,QAAQ,SAAoB;IAEnD,SAAS,CAAC,YAAY,YAA8B;IACpD,SAAS,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAChC,SAAS,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAEhC,WAA2B,OAAO,WAAgB;IAClD,WAA2B,OAAO,WAAgB;cAE/B,qBAAqB,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,yBAAyB,EAAE,GAAG,IAAI;cAKlG,aAAa,IAAI,IAAI;IAcxC,OAAO,CAAC,kBAAkB,CAAsC;IAChE,IAAW,iBAAiB,4BAI3B;IAED,IAAW,SAAS,IAAI,OAAO,CAAyC;IACxE,IAAW,SAAS,CAAC,KAAK,EAAE,OAAO,EAA2C;IAE9E,OAAO,CAAC,eAAe,CAAqC;IAC5D,IAAW,cAAc,2BAIxB;IAED,IAAW,MAAM,IAAI,MAAM,CAAsC;IACjE,IAAW,MAAM,CAAC,KAAK,EAAE,MAAM,EAAwC;cAEpD,UAAU,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO;IAI1D,cAAuB,gBAAgB,IAAI,gBAAgB,CAAyC;IAEpG,SAAS,CAAC,uBAAuB,CAAC,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS;cA+BlF,aAAa,CAAC,SAAS,EAAE,cAAc,GAAG,kBAAkB,GAAG,wBAAwB,GAAG,SAAS;cAgBnG,4BAA4B,CAAC,QAAQ,EAAE,cAAc,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,SAAS;IAIzF,8BAA8B,CAAC,YAAY,EAAE,sBAAsB,GAAG,OAAO,CAAC,OAAO,CAAC;IAI5F,4BAA4B,IAAI,UAAU,EAAE,GAAG,SAAS;IAW3D,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAMrB,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAanD;;OAEG;IACmB,WAAW,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CAyB5E;AAED,aAAa;AACb,oBAAY,YAAY;IACtB,aAAa,IAAI;IACjB,aAAa,IAAI;CAClB;AAED,wHAAwH;AACxH,qBAAa,gBAAiB,SAAQ,wBAAwB;IAC5D,OAAuB,MAAM,SAAkB;IAC/C,OAAuB,QAAQ,SAAwB;IAEvD,SAAS,CAAC,6BAA6B,UAAS;IAChD,SAAS,CAAC,aAAa,mBAAgC;IAEvD,WAA2B,OAAO,WAAgB;IAClD,WAA2B,OAAO,WAAgB;IAElD,cAAuB,oBAAoB,IAAI,OAAO,CAAiB;IACvE,cAAuB,sBAAsB,IAAI,OAAO,CAAiB;cAEtD,qBAAqB,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,yBAAyB,EAAE,GAAG,IAAI;IA+BvH,OAAO,CAAC,MAAM,CAAC,aAAa;IAC5B,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAK7B;IAEF,OAAO,CAAC,eAAe,CAAqC;IAC5D,IAAW,cAAc,2BAKxB;IAED,IAAW,MAAM,IAAI,YAAY,CAAsD;IACvF,IAAW,MAAM,CAAC,MAAM,EAAE,YAAY,EAAyC;IAE/E,OAAO,CAAC,cAAc,CAAqC;IAC3D,IAAW,aAAa,2BAMvB;IAED,IAAW,KAAK,IAAI,MAAM,CAAqC;IAC/D,IAAW,KAAK,CAAC,KAAK,EAAE,MAAM,EAAuC;IAErE,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAc;IAC9C,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAe;IAE/C,OAAO,CAAC,iBAAiB,CAAsC;IAC/D,IAAW,gBAAgB,4BAK1B;IAED,IAAW,QAAQ,IAAI,OAAO,CAAwC;IACtE,IAAW,QAAQ,CAAC,KAAK,EAAE,OAAO,EAA0C;IAE5E,cAAuB,WAAW,IAAI,OAAO,CAG5C;IAED,SAAS,KAAK,kBAAkB,IAAI,MAAM,CAKzC;IAED,cAAuB,gBAAgB,IAAI,gBAAgB,CAK1D;cAEkB,UAAU,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO;cAStC,wBAAwB,CAAC,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO;IAkBjG,SAAS,CAAC,uBAAuB,CAAC,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS;cAiElF,eAAe,IAAI,aAAa,GAAG,SAAS;cAQtC,WAAW,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;cAkBhD,WAAW,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAkCnD,8BAA8B,CAAC,YAAY,EAAE,sBAAsB,GAAG,OAAO,CAAC,OAAO,CAAC;IAU5F,4BAA4B,IAAI,UAAU,EAAE,GAAG,SAAS;IAU3D,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAMrB,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAUnD;;;;OAIG;IACmB,WAAW,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CA6C5E"}