@itwin/editor-frontend 3.6.0-dev.8 → 3.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/CHANGELOG.md +44 -1
  2. package/LICENSE.md +1 -1
  3. package/lib/cjs/DeleteElementsTool.js +1 -1
  4. package/lib/cjs/DeleteElementsTool.js.map +1 -1
  5. package/lib/cjs/EditTool.d.ts +21 -19
  6. package/lib/cjs/EditTool.d.ts.map +1 -1
  7. package/lib/cjs/EditTool.js +43 -97
  8. package/lib/cjs/EditTool.js.map +1 -1
  9. package/lib/cjs/EditToolIpc.d.ts +5 -4
  10. package/lib/cjs/EditToolIpc.d.ts.map +1 -1
  11. package/lib/cjs/EditToolIpc.js +6 -5
  12. package/lib/cjs/EditToolIpc.js.map +1 -1
  13. package/lib/cjs/ElementGeometryTool.js +1 -1
  14. package/lib/cjs/ElementGeometryTool.js.map +1 -1
  15. package/lib/cjs/ModifyCurveTools.js +1 -1
  16. package/lib/cjs/ModifyCurveTools.js.map +1 -1
  17. package/lib/cjs/ProjectLocation/ProjectExtentsDecoration.js +5 -5
  18. package/lib/cjs/ProjectLocation/ProjectExtentsDecoration.js.map +1 -1
  19. package/lib/cjs/SketchTools.js +2 -2
  20. package/lib/cjs/SketchTools.js.map +1 -1
  21. package/lib/cjs/SolidPrimitiveTools.js +1 -1
  22. package/lib/cjs/SolidPrimitiveTools.js.map +1 -1
  23. package/lib/cjs/TransformElementsTool.js +1 -1
  24. package/lib/cjs/TransformElementsTool.js.map +1 -1
  25. package/lib/esm/DeleteElementsTool.js +1 -1
  26. package/lib/esm/DeleteElementsTool.js.map +1 -1
  27. package/lib/esm/EditTool.d.ts +21 -19
  28. package/lib/esm/EditTool.d.ts.map +1 -1
  29. package/lib/esm/EditTool.js +44 -98
  30. package/lib/esm/EditTool.js.map +1 -1
  31. package/lib/esm/EditToolIpc.d.ts +5 -4
  32. package/lib/esm/EditToolIpc.d.ts.map +1 -1
  33. package/lib/esm/EditToolIpc.js +7 -6
  34. package/lib/esm/EditToolIpc.js.map +1 -1
  35. package/lib/esm/ElementGeometryTool.js +1 -1
  36. package/lib/esm/ElementGeometryTool.js.map +1 -1
  37. package/lib/esm/ModifyCurveTools.js +1 -1
  38. package/lib/esm/ModifyCurveTools.js.map +1 -1
  39. package/lib/esm/ProjectLocation/ProjectExtentsDecoration.js +5 -5
  40. package/lib/esm/ProjectLocation/ProjectExtentsDecoration.js.map +1 -1
  41. package/lib/esm/SketchTools.js +2 -2
  42. package/lib/esm/SketchTools.js.map +1 -1
  43. package/lib/esm/SolidPrimitiveTools.js +1 -1
  44. package/lib/esm/SolidPrimitiveTools.js.map +1 -1
  45. package/lib/esm/TransformElementsTool.js +1 -1
  46. package/lib/esm/TransformElementsTool.js.map +1 -1
  47. package/package.json +15 -15
package/CHANGELOG.md CHANGED
@@ -1,6 +1,49 @@
1
1
  # Change Log - @itwin/editor-frontend
2
2
 
3
- This log was last generated on Wed, 07 Dec 2022 19:12:37 GMT and should not be manually modified.
3
+ This log was last generated on Fri, 24 Feb 2023 22:00:48 GMT and should not be manually modified.
4
+
5
+ ## 3.6.1
6
+ Fri, 24 Feb 2023 22:00:48 GMT
7
+
8
+ _Version update only_
9
+
10
+ ## 3.6.0
11
+ Wed, 08 Feb 2023 14:58:40 GMT
12
+
13
+ ### Updates
14
+
15
+ - add EditTools.busyRetry
16
+ - Added RegionBooleanTool to unite, subtract, or intersect planar regions.
17
+
18
+ ## 3.5.6
19
+ Fri, 24 Feb 2023 16:02:47 GMT
20
+
21
+ _Version update only_
22
+
23
+ ## 3.5.5
24
+ Thu, 26 Jan 2023 22:53:27 GMT
25
+
26
+ _Version update only_
27
+
28
+ ## 3.5.4
29
+ Wed, 18 Jan 2023 15:27:15 GMT
30
+
31
+ _Version update only_
32
+
33
+ ## 3.5.3
34
+ Fri, 13 Jan 2023 17:23:07 GMT
35
+
36
+ _Version update only_
37
+
38
+ ## 3.5.2
39
+ Wed, 11 Jan 2023 16:46:30 GMT
40
+
41
+ _Version update only_
42
+
43
+ ## 3.5.1
44
+ Thu, 15 Dec 2022 16:38:29 GMT
45
+
46
+ _Version update only_
4
47
 
5
48
  ## 3.5.0
6
49
  Wed, 07 Dec 2022 19:12:37 GMT
package/LICENSE.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # MIT License
2
2
 
3
- Copyright © 2017-2022 Bentley Systems, Incorporated. All rights reserved.
3
+ Copyright © 2017-2023 Bentley Systems, Incorporated. All rights reserved.
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6
6
 
@@ -19,7 +19,7 @@ class DeleteElementsTool extends core_frontend_1.ElementSetTool {
19
19
  get requireAcceptForSelectionSetOperation() { return false; }
20
20
  async processAgendaImmediate() {
21
21
  try {
22
- await EditTool_1.EditTools.startCommand(editor_common_1.editorBuiltInCmdIds.cmdBasicManipulation, this.iModel.key);
22
+ await EditTool_1.EditTools.startCommand({ commandId: editor_common_1.editorBuiltInCmdIds.cmdBasicManipulation, iModelKey: this.iModel.key });
23
23
  if (core_bentley_1.IModelStatus.Success === await EditToolIpc_1.basicManipulationIpc.deleteElements(this.agenda.compressIds()))
24
24
  await this.saveChanges();
25
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DeleteElementsTool.js","sourceRoot":"","sources":["../../src/DeleteElementsTool.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;AAE/F,sDAAiE;AACjE,wDAA8G;AAC9G,wDAA2D;AAC3D,yCAAuC;AACvC,+CAAqD;AAErD,kHAAkH;AAClH,MAAa,kBAAmB,SAAQ,8BAAc;IAIpD,IAAuB,iBAAiB,KAAc,OAAO,IAAI,CAAC,CAAC,CAAC;IACpE,IAAuB,WAAW,KAAc,OAAO,IAAI,CAAC,CAAC,CAAC;IAC9D,IAAuB,eAAe,KAAc,OAAO,IAAI,CAAC,CAAC,CAAC;IAClE,IAAuB,4BAA4B,KAAc,OAAO,IAAI,CAAC,CAAC,CAAC;IAC/E,IAAuB,qCAAqC,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC;IAEzE,KAAK,CAAC,sBAAsB;QAC1C,IAAI;YACF,MAAM,oBAAS,CAAC,YAAY,CAAS,mCAAmB,CAAC,oBAAoB,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAChG,IAAI,2BAAY,CAAC,OAAO,KAAK,MAAM,kCAAoB,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;gBAC/F,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;SAC5B;QAAC,OAAO,GAAG,EAAE;YACZ,yBAAS,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,oCAAoB,CAAC,qCAAqB,CAAC,KAAK,EAAE,2BAAY,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,4BAA4B,CAAC,CAAC,CAAC;SACjK;IACH,CAAC;IAEM,KAAK,CAAC,aAAa;QACxB,MAAM,IAAI,GAAG,IAAI,kBAAkB,EAAE,CAAC;QACtC,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE;YACnB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;;AAxBH,gDAyBC;AAxBwB,yBAAM,GAAG,gBAAgB,CAAC;AAC1B,2BAAQ,GAAG,aAAa,CAAC","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\r\nimport { BentleyError, IModelStatus } from \"@itwin/core-bentley\";\r\nimport { ElementSetTool, IModelApp, NotifyMessageDetails, OutputMessagePriority } from \"@itwin/core-frontend\";\r\nimport { editorBuiltInCmdIds } from \"@itwin/editor-common\";\r\nimport { EditTools } from \"./EditTool\";\r\nimport { basicManipulationIpc } from \"./EditToolIpc\";\r\n\r\n/** @alpha Delete elements immediately from active selection set or prompt user to identify elements to delete. */\r\nexport class DeleteElementsTool extends ElementSetTool {\r\n public static override toolId = \"DeleteElements\";\r\n public static override iconSpec = \"icon-delete\";\r\n\r\n protected override get allowSelectionSet(): boolean { return true; }\r\n protected override get allowGroups(): boolean { return true; }\r\n protected override get allowDragSelect(): boolean { return true; }\r\n protected override get controlKeyContinuesSelection(): boolean { return true; }\r\n protected override get requireAcceptForSelectionSetOperation(): boolean { return false; }\r\n\r\n public override async processAgendaImmediate(): Promise<void> {\r\n try {\r\n await EditTools.startCommand<string>(editorBuiltInCmdIds.cmdBasicManipulation, this.iModel.key);\r\n if (IModelStatus.Success === await basicManipulationIpc.deleteElements(this.agenda.compressIds()))\r\n await this.saveChanges();\r\n } catch (err) {\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Error, BentleyError.getErrorMessage(err) || \"An unknown error occurred.\"));\r\n }\r\n }\r\n\r\n public async onRestartTool() {\r\n const tool = new DeleteElementsTool();\r\n if (!await tool.run())\r\n return this.exitTool();\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"DeleteElementsTool.js","sourceRoot":"","sources":["../../src/DeleteElementsTool.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;AAE/F,sDAAiE;AACjE,wDAA8G;AAC9G,wDAA2D;AAC3D,yCAAuC;AACvC,+CAAqD;AAErD,kHAAkH;AAClH,MAAa,kBAAmB,SAAQ,8BAAc;IAIpD,IAAuB,iBAAiB,KAAc,OAAO,IAAI,CAAC,CAAC,CAAC;IACpE,IAAuB,WAAW,KAAc,OAAO,IAAI,CAAC,CAAC,CAAC;IAC9D,IAAuB,eAAe,KAAc,OAAO,IAAI,CAAC,CAAC,CAAC;IAClE,IAAuB,4BAA4B,KAAc,OAAO,IAAI,CAAC,CAAC,CAAC;IAC/E,IAAuB,qCAAqC,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC;IAEzE,KAAK,CAAC,sBAAsB;QAC1C,IAAI;YACF,MAAM,oBAAS,CAAC,YAAY,CAAS,EAAE,SAAS,EAAE,mCAAmB,CAAC,oBAAoB,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;YAC1H,IAAI,2BAAY,CAAC,OAAO,KAAK,MAAM,kCAAoB,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;gBAC/F,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;SAC5B;QAAC,OAAO,GAAG,EAAE;YACZ,yBAAS,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,oCAAoB,CAAC,qCAAqB,CAAC,KAAK,EAAE,2BAAY,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,4BAA4B,CAAC,CAAC,CAAC;SACjK;IACH,CAAC;IAEM,KAAK,CAAC,aAAa;QACxB,MAAM,IAAI,GAAG,IAAI,kBAAkB,EAAE,CAAC;QACtC,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE;YACnB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;;AAxBH,gDAyBC;AAxBwB,yBAAM,GAAG,gBAAgB,CAAC;AAC1B,2BAAQ,GAAG,aAAa,CAAC","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\r\nimport { BentleyError, IModelStatus } from \"@itwin/core-bentley\";\r\nimport { ElementSetTool, IModelApp, NotifyMessageDetails, OutputMessagePriority } from \"@itwin/core-frontend\";\r\nimport { editorBuiltInCmdIds } from \"@itwin/editor-common\";\r\nimport { EditTools } from \"./EditTool\";\r\nimport { basicManipulationIpc } from \"./EditToolIpc\";\r\n\r\n/** @alpha Delete elements immediately from active selection set or prompt user to identify elements to delete. */\r\nexport class DeleteElementsTool extends ElementSetTool {\r\n public static override toolId = \"DeleteElements\";\r\n public static override iconSpec = \"icon-delete\";\r\n\r\n protected override get allowSelectionSet(): boolean { return true; }\r\n protected override get allowGroups(): boolean { return true; }\r\n protected override get allowDragSelect(): boolean { return true; }\r\n protected override get controlKeyContinuesSelection(): boolean { return true; }\r\n protected override get requireAcceptForSelectionSetOperation(): boolean { return false; }\r\n\r\n public override async processAgendaImmediate(): Promise<void> {\r\n try {\r\n await EditTools.startCommand<string>({ commandId: editorBuiltInCmdIds.cmdBasicManipulation, iModelKey: this.iModel.key });\r\n if (IModelStatus.Success === await basicManipulationIpc.deleteElements(this.agenda.compressIds()))\r\n await this.saveChanges();\r\n } catch (err) {\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Error, BentleyError.getErrorMessage(err) || \"An unknown error occurred.\"));\r\n }\r\n }\r\n\r\n public async onRestartTool() {\r\n const tool = new DeleteElementsTool();\r\n if (!await tool.run())\r\n return this.exitTool();\r\n }\r\n}\r\n"]}
@@ -1,27 +1,29 @@
1
1
  /** @packageDocumentation
2
2
  * @module Editing
3
3
  */
4
- /** @alpha Options for [[EditTools.initialize]]. */
5
- export interface EditorOptions {
6
- /** If true, all tools will be registered. */
7
- registerAllTools?: true | undefined;
8
- /** If true, tools for undo/redo will be registered. */
9
- registerUndoRedoTools?: true | undefined;
10
- /** If true, tools for updating the project extents and geolocation will be registered. */
11
- registerProjectLocationTools?: true | undefined;
12
- /** If true, tools for basic manipulation will be registered. */
13
- registerBasicManipulationTools?: true | undefined;
14
- /** If true, tools for sketching will be registered. */
15
- registerSketchTools?: true | undefined;
16
- /** If true, tools for solid modeling will be registered. */
17
- registerSolidModelingTools?: true | undefined;
4
+ /** @beta */
5
+ export declare namespace EditTools {
6
+ interface StartArgs {
7
+ commandId: string;
8
+ iModelKey: string;
9
+ }
10
+ /** handler for retries when an EditTool attempts to start but a backend command is busy and can't finish its work.
11
+ * @param attempt the number of times this handler was previously called for this EditTool
12
+ * @param msg the message about what's happening from the currently busy EditCommand.
13
+ * @returns the delay (in milliseconds) before attempting again. If `undefined` use default (usually 1 second)
14
+ */
15
+ type BusyRetry = (attempt: number, msg: string) => Promise<number | undefined>;
18
16
  }
19
- /** @alpha functions to support PrimitiveTool and InputCollector sub-classes with using EditCommand. */
17
+ /**
18
+ * Supports PrimitiveTool and InputCollector sub-classes.
19
+ * @beta
20
+ */
20
21
  export declare class EditTools {
21
- static namespace: string;
22
- static tools: string;
22
+ static readonly namespace = "Editor";
23
+ static readonly tools = "Editor:tools.";
24
+ static busyRetry?: EditTools.BusyRetry;
23
25
  private static _initialized;
24
- static startCommand<T>(commandId: string, iModelKey: string, ...args: any[]): Promise<T>;
26
+ static startCommand<T>(startArg: EditTools.StartArgs, ...cmdArgs: any[]): Promise<T>;
25
27
  /** @internal */
26
28
  static translate(prompt: string): string;
27
29
  /** Call this before using the package (e.g., before attempting to use any of its tools.)
@@ -31,7 +33,7 @@ export declare class EditTools {
31
33
  * await EditorTools.initialize();
32
34
  * ```
33
35
  */
34
- static initialize(options?: EditorOptions): Promise<void>;
36
+ static initialize(): Promise<void>;
35
37
  private static shutdown;
36
38
  }
37
39
  //# sourceMappingURL=EditTool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EditTool.d.ts","sourceRoot":"","sources":["../../src/EditTool.ts"],"names":[],"mappings":"AAIA;;GAEG;AAoBH,mDAAmD;AACnD,MAAM,WAAW,aAAa;IAC5B,6CAA6C;IAC7C,gBAAgB,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IACpC,uDAAuD;IACvD,qBAAqB,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IACzC,0FAA0F;IAC1F,4BAA4B,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IAChD,gEAAgE;IAChE,8BAA8B,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IAClD,uDAAuD;IACvD,mBAAmB,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IACvC,4DAA4D;IAC5D,0BAA0B,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;CAC/C;AAED,uGAAuG;AACvG,qBAAa,SAAS;IACpB,OAAc,SAAS,SAAY;IACnC,OAAc,KAAK,SAAmB;IACtC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAS;WAEhB,YAAY,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;IAIrG,gBAAgB;WACF,SAAS,CAAC,MAAM,EAAE,MAAM;IAEtC;;;;;;OAMG;WACiB,UAAU,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IA2GtE,OAAO,CAAC,MAAM,CAAC,QAAQ;CAGxB"}
1
+ {"version":3,"file":"EditTool.d.ts","sourceRoot":"","sources":["../../src/EditTool.ts"],"names":[],"mappings":"AAIA;;GAEG;AAgBH,YAAY;AACZ,yBAAiB,SAAS,CAAC;IACzB,UAAiB,SAAS;QACxB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;KACnB;IACD;;;;OAIG;IACH,KAAY,SAAS,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CACvF;AAED;;;GAGG;AACH,qBAAa,SAAS;IACpB,gBAAuB,SAAS,YAAY;IAC5C,gBAAuB,KAAK,mBAAmB;IAC/C,OAAc,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC;IAC9C,OAAO,CAAC,MAAM,CAAC,YAAY,CAAS;WAEhB,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,SAAS,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;IAcjG,gBAAgB;WACF,SAAS,CAAC,MAAM,EAAE,MAAM;IAItC;;;;;;OAMG;WACiB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA2B/C,OAAO,CAAC,MAAM,CAAC,QAAQ;CAGxB"}
@@ -8,24 +8,42 @@
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.EditTools = void 0;
11
+ const core_bentley_1 = require("@itwin/core-bentley");
11
12
  const core_frontend_1 = require("@itwin/core-frontend");
12
13
  const editor_common_1 = require("@itwin/editor-common");
13
- const DeleteElementsTool_1 = require("./DeleteElementsTool");
14
- const ModifyCurveTools_1 = require("./ModifyCurveTools");
15
- const ProjectExtentsDecoration_1 = require("./ProjectLocation/ProjectExtentsDecoration");
16
- const ProjectGeolocation_1 = require("./ProjectLocation/ProjectGeolocation");
17
- const SketchTools_1 = require("./SketchTools");
18
- const SolidModelingTools_1 = require("./SolidModelingTools");
19
- const SolidPrimitiveTools_1 = require("./SolidPrimitiveTools");
20
- const TransformElementsTool_1 = require("./TransformElementsTool");
21
- const UndoRedoTool_1 = require("./UndoRedoTool");
22
- /** @alpha functions to support PrimitiveTool and InputCollector sub-classes with using EditCommand. */
14
+ const UndoRedoTools = require("./UndoRedoTool");
15
+ const DeleteElementsTool = require("./DeleteElementsTool");
16
+ const ModifyCurveTools = require("./ModifyCurveTools");
17
+ const ProjectLocation = require("./ProjectLocation/ProjectExtentsDecoration");
18
+ const ProjectGeoLocation = require("./ProjectLocation/ProjectGeolocation");
19
+ const SketchTools = require("./SketchTools");
20
+ const SolidModelingTools = require("./SolidModelingTools");
21
+ const SolidPrimitiveTools = require("./SolidPrimitiveTools");
22
+ const TransformTools = require("./TransformElementsTool");
23
+ /**
24
+ * Supports PrimitiveTool and InputCollector sub-classes.
25
+ * @beta
26
+ */
23
27
  class EditTools {
24
- static async startCommand(commandId, iModelKey, ...args) {
25
- return core_frontend_1.IpcApp.callIpcChannel(editor_common_1.editorChannel, "startCommand", commandId, iModelKey, ...args);
28
+ static async startCommand(startArg, ...cmdArgs) {
29
+ var _a, _b;
30
+ let attempt = 0;
31
+ while (true) {
32
+ try {
33
+ return await core_frontend_1.IpcApp.callIpcChannel(editor_common_1.editorIpcStrings.channel, "startCommand", startArg.commandId, startArg.iModelKey, ...cmdArgs);
34
+ }
35
+ catch (e) {
36
+ if (e.name !== editor_common_1.editorIpcStrings.commandBusy)
37
+ throw e; // unknown backend error
38
+ const delay = (_b = await ((_a = this.busyRetry) === null || _a === void 0 ? void 0 : _a.call(this, attempt++, e.message))) !== null && _b !== void 0 ? _b : 1000;
39
+ await core_bentley_1.BeDuration.fromMilliseconds(delay).wait();
40
+ }
41
+ }
26
42
  }
27
43
  /** @internal */
28
- static translate(prompt) { return core_frontend_1.IModelApp.localization.getLocalizedString(this.tools + prompt); }
44
+ static translate(prompt) {
45
+ return core_frontend_1.IModelApp.localization.getLocalizedString(this.tools + prompt);
46
+ }
29
47
  /** Call this before using the package (e.g., before attempting to use any of its tools.)
30
48
  * To initialize when starting up your app:
31
49
  * ```ts
@@ -33,96 +51,24 @@ class EditTools {
33
51
  * await EditorTools.initialize();
34
52
  * ```
35
53
  */
36
- static async initialize(options) {
54
+ static async initialize() {
37
55
  if (this._initialized)
38
56
  return;
39
- // NOTE: We should clear the active command whenever a new PrimitiveTool is installed.
40
- // As tool run/install isn't currently async ToolAdmin.activeToolChanged can't be used at this time.
41
- // The active command will be cleared whenever another edit tool calls startCommand.
42
57
  this._initialized = true;
43
58
  // clean up if we're being shut down
44
59
  core_frontend_1.IModelApp.onBeforeShutdown.addListener(() => this.shutdown());
45
60
  const namespacePromise = core_frontend_1.IModelApp.localization.registerNamespace(this.namespace);
46
- const registerAllTools = options === null || options === void 0 ? void 0 : options.registerAllTools;
47
- // Register requested tools...
48
- if (registerAllTools || (options === null || options === void 0 ? void 0 : options.registerUndoRedoTools)) {
49
- const tools = [
50
- UndoRedoTool_1.UndoAllTool,
51
- UndoRedoTool_1.UndoTool,
52
- UndoRedoTool_1.RedoTool,
53
- ];
54
- for (const tool of tools)
55
- tool.register(this.namespace);
56
- }
57
- if (registerAllTools || (options === null || options === void 0 ? void 0 : options.registerProjectLocationTools)) {
58
- const tools = [
59
- ProjectExtentsDecoration_1.ProjectLocationShowTool,
60
- ProjectExtentsDecoration_1.ProjectLocationHideTool,
61
- ProjectExtentsDecoration_1.ProjectLocationCancelTool,
62
- ProjectExtentsDecoration_1.ProjectLocationSaveTool,
63
- ProjectGeolocation_1.ProjectGeolocationMoveTool,
64
- ProjectGeolocation_1.ProjectGeolocationPointTool,
65
- ProjectGeolocation_1.ProjectGeolocationNorthTool,
66
- ];
67
- for (const tool of tools)
68
- tool.register(this.namespace);
69
- }
70
- if (registerAllTools || (options === null || options === void 0 ? void 0 : options.registerBasicManipulationTools)) {
71
- const tools = [
72
- DeleteElementsTool_1.DeleteElementsTool,
73
- TransformElementsTool_1.MoveElementsTool,
74
- TransformElementsTool_1.CopyElementsTool,
75
- TransformElementsTool_1.RotateElementsTool,
76
- ];
77
- for (const tool of tools)
78
- tool.register(this.namespace);
79
- }
80
- if (registerAllTools || (options === null || options === void 0 ? void 0 : options.registerSketchTools)) {
81
- const tools = [
82
- SketchTools_1.CreateArcTool,
83
- SketchTools_1.CreateBCurveTool,
84
- SketchTools_1.CreateCircleTool,
85
- SketchTools_1.CreateEllipseTool,
86
- SketchTools_1.CreateLineStringTool,
87
- SketchTools_1.CreateRectangleTool,
88
- ModifyCurveTools_1.BreakCurveTool,
89
- ModifyCurveTools_1.ExtendCurveTool,
90
- ModifyCurveTools_1.OffsetCurveTool,
91
- ];
92
- for (const tool of tools)
93
- tool.register(this.namespace);
94
- }
95
- if (registerAllTools || (options === null || options === void 0 ? void 0 : options.registerSolidModelingTools)) {
96
- const tools = [
97
- SolidPrimitiveTools_1.CreateSphereTool,
98
- SolidPrimitiveTools_1.CreateCylinderTool,
99
- SolidPrimitiveTools_1.CreateConeTool,
100
- SolidPrimitiveTools_1.CreateBoxTool,
101
- SolidPrimitiveTools_1.CreateTorusTool,
102
- SolidPrimitiveTools_1.ExtrudeCurveTool,
103
- SolidPrimitiveTools_1.RevolveCurveTool,
104
- ModifyCurveTools_1.RegionBooleanTool,
105
- SolidModelingTools_1.UniteSolidElementsTool,
106
- SolidModelingTools_1.SubtractSolidElementsTool,
107
- SolidModelingTools_1.IntersectSolidElementsTool,
108
- SolidModelingTools_1.SewSheetElementsTool,
109
- SolidModelingTools_1.ThickenSheetElementsTool,
110
- SolidModelingTools_1.CutSolidElementsTool,
111
- SolidModelingTools_1.EmbossSolidElementsTool,
112
- SolidModelingTools_1.ImprintSolidElementsTool,
113
- SolidModelingTools_1.SweepAlongPathTool,
114
- SolidModelingTools_1.LoftProfilesTool,
115
- SolidModelingTools_1.OffsetFacesTool,
116
- SolidModelingTools_1.HollowFacesTool,
117
- SolidModelingTools_1.SweepFacesTool,
118
- SolidModelingTools_1.SpinFacesTool,
119
- SolidModelingTools_1.RoundEdgesTool,
120
- SolidModelingTools_1.ChamferEdgesTool,
121
- SolidModelingTools_1.DeleteSubEntitiesTool,
122
- ];
123
- for (const tool of tools)
124
- tool.register(this.namespace);
125
- }
61
+ const tools = core_frontend_1.IModelApp.tools;
62
+ tools.registerModule(UndoRedoTools, this.namespace);
63
+ // TODO: TEMPORARY - Register tools for testing. To be moved into apps.
64
+ tools.registerModule(ProjectLocation, this.namespace);
65
+ tools.registerModule(ProjectGeoLocation, this.namespace);
66
+ tools.registerModule(SketchTools, this.namespace);
67
+ tools.registerModule(SolidModelingTools, this.namespace);
68
+ tools.registerModule(SolidPrimitiveTools, this.namespace);
69
+ tools.registerModule(TransformTools, this.namespace);
70
+ tools.registerModule(DeleteElementsTool, this.namespace);
71
+ tools.registerModule(ModifyCurveTools, this.namespace);
126
72
  return namespacePromise;
127
73
  }
128
74
  static shutdown() {
@@ -1 +1 @@
1
- {"version":3,"file":"EditTool.js","sourceRoot":"","sources":["../../src/EditTool.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 { IModelApp, IpcApp } from \"@itwin/core-frontend\";\r\nimport { editorChannel } from \"@itwin/editor-common\";\r\nimport { DeleteElementsTool } from \"./DeleteElementsTool\";\r\nimport { BreakCurveTool, ExtendCurveTool, OffsetCurveTool, RegionBooleanTool } from \"./ModifyCurveTools\";\r\nimport {\r\n ProjectLocationCancelTool, ProjectLocationHideTool, ProjectLocationSaveTool, ProjectLocationShowTool,\r\n} from \"./ProjectLocation/ProjectExtentsDecoration\";\r\nimport { ProjectGeolocationMoveTool, ProjectGeolocationNorthTool, ProjectGeolocationPointTool } from \"./ProjectLocation/ProjectGeolocation\";\r\nimport { CreateArcTool, CreateBCurveTool, CreateCircleTool, CreateEllipseTool, CreateLineStringTool, CreateRectangleTool } from \"./SketchTools\";\r\nimport {\r\n ChamferEdgesTool, CutSolidElementsTool, DeleteSubEntitiesTool, EmbossSolidElementsTool, HollowFacesTool, ImprintSolidElementsTool,\r\n IntersectSolidElementsTool, LoftProfilesTool, OffsetFacesTool, RoundEdgesTool, SewSheetElementsTool, SpinFacesTool, SubtractSolidElementsTool,\r\n SweepAlongPathTool, SweepFacesTool, ThickenSheetElementsTool, UniteSolidElementsTool,\r\n} from \"./SolidModelingTools\";\r\nimport { CreateBoxTool, CreateConeTool, CreateCylinderTool, CreateSphereTool, CreateTorusTool, ExtrudeCurveTool, RevolveCurveTool } from \"./SolidPrimitiveTools\";\r\nimport { CopyElementsTool, MoveElementsTool, RotateElementsTool } from \"./TransformElementsTool\";\r\nimport { RedoTool, UndoAllTool, UndoTool } from \"./UndoRedoTool\";\r\n\r\n/** @alpha Options for [[EditTools.initialize]]. */\r\nexport interface EditorOptions {\r\n /** If true, all tools will be registered. */\r\n registerAllTools?: true | undefined;\r\n /** If true, tools for undo/redo will be registered. */\r\n registerUndoRedoTools?: true | undefined;\r\n /** If true, tools for updating the project extents and geolocation will be registered. */\r\n registerProjectLocationTools?: true | undefined;\r\n /** If true, tools for basic manipulation will be registered. */\r\n registerBasicManipulationTools?: true | undefined;\r\n /** If true, tools for sketching will be registered. */\r\n registerSketchTools?: true | undefined;\r\n /** If true, tools for solid modeling will be registered. */\r\n registerSolidModelingTools?: true | undefined;\r\n}\r\n\r\n/** @alpha functions to support PrimitiveTool and InputCollector sub-classes with using EditCommand. */\r\nexport class EditTools {\r\n public static namespace = \"Editor\";\r\n public static tools = \"Editor:tools.\";\r\n private static _initialized = false;\r\n\r\n public static async startCommand<T>(commandId: string, iModelKey: string, ...args: any[]): Promise<T> {\r\n return IpcApp.callIpcChannel(editorChannel, \"startCommand\", commandId, iModelKey, ...args) as Promise<T>;\r\n }\r\n\r\n /** @internal */\r\n public static translate(prompt: string) { return IModelApp.localization.getLocalizedString(this.tools + prompt); }\r\n\r\n /** Call this before using the package (e.g., before attempting to use any of its tools.)\r\n * To initialize when starting up your app:\r\n * ```ts\r\n * IModelApp.startup();\r\n * await EditorTools.initialize();\r\n * ```\r\n */\r\n public static async initialize(options?: EditorOptions): Promise<void> {\r\n if (this._initialized)\r\n return;\r\n\r\n // NOTE: We should clear the active command whenever a new PrimitiveTool is installed.\r\n // As tool run/install isn't currently async ToolAdmin.activeToolChanged can't be used at this time.\r\n // The active command will be cleared whenever another edit tool calls startCommand.\r\n this._initialized = true;\r\n\r\n // clean up if we're being shut down\r\n IModelApp.onBeforeShutdown.addListener(() => this.shutdown());\r\n\r\n const namespacePromise = IModelApp.localization.registerNamespace(this.namespace);\r\n const registerAllTools = options?.registerAllTools;\r\n\r\n // Register requested tools...\r\n if (registerAllTools || options?.registerUndoRedoTools) {\r\n const tools = [\r\n UndoAllTool,\r\n UndoTool,\r\n RedoTool,\r\n ];\r\n\r\n for (const tool of tools)\r\n tool.register(this.namespace);\r\n }\r\n\r\n if (registerAllTools || options?.registerProjectLocationTools) {\r\n const tools = [\r\n ProjectLocationShowTool,\r\n ProjectLocationHideTool,\r\n ProjectLocationCancelTool,\r\n ProjectLocationSaveTool,\r\n ProjectGeolocationMoveTool,\r\n ProjectGeolocationPointTool,\r\n ProjectGeolocationNorthTool,\r\n ];\r\n\r\n for (const tool of tools)\r\n tool.register(this.namespace);\r\n }\r\n\r\n if (registerAllTools || options?.registerBasicManipulationTools) {\r\n const tools = [\r\n DeleteElementsTool,\r\n MoveElementsTool,\r\n CopyElementsTool,\r\n RotateElementsTool,\r\n ];\r\n\r\n for (const tool of tools)\r\n tool.register(this.namespace);\r\n }\r\n\r\n if (registerAllTools || options?.registerSketchTools) {\r\n const tools = [\r\n CreateArcTool,\r\n CreateBCurveTool,\r\n CreateCircleTool,\r\n CreateEllipseTool,\r\n CreateLineStringTool,\r\n CreateRectangleTool,\r\n BreakCurveTool,\r\n ExtendCurveTool,\r\n OffsetCurveTool,\r\n ];\r\n\r\n for (const tool of tools)\r\n tool.register(this.namespace);\r\n }\r\n\r\n if (registerAllTools || options?.registerSolidModelingTools) {\r\n const tools = [\r\n CreateSphereTool,\r\n CreateCylinderTool,\r\n CreateConeTool,\r\n CreateBoxTool,\r\n CreateTorusTool,\r\n ExtrudeCurveTool,\r\n RevolveCurveTool,\r\n RegionBooleanTool,\r\n UniteSolidElementsTool,\r\n SubtractSolidElementsTool,\r\n IntersectSolidElementsTool,\r\n SewSheetElementsTool,\r\n ThickenSheetElementsTool,\r\n CutSolidElementsTool,\r\n EmbossSolidElementsTool,\r\n ImprintSolidElementsTool,\r\n SweepAlongPathTool,\r\n LoftProfilesTool,\r\n OffsetFacesTool,\r\n HollowFacesTool,\r\n SweepFacesTool,\r\n SpinFacesTool,\r\n RoundEdgesTool,\r\n ChamferEdgesTool,\r\n DeleteSubEntitiesTool,\r\n ];\r\n\r\n for (const tool of tools)\r\n tool.register(this.namespace);\r\n }\r\n\r\n return namespacePromise;\r\n }\r\n\r\n private static shutdown() {\r\n this._initialized = false;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"EditTool.js","sourceRoot":"","sources":["../../src/EditTool.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAAiD;AACjD,wDAAyD;AACzD,wDAAwD;AAExD,gDAAgD;AAChD,2DAA2D;AAC3D,uDAAuD;AACvD,8EAA8E;AAC9E,2EAA2E;AAC3E,6CAA6C;AAC7C,2DAA2D;AAC3D,6DAA6D;AAC7D,0DAA0D;AAgB1D;;;GAGG;AACH,MAAa,SAAS;IAMb,MAAM,CAAC,KAAK,CAAC,YAAY,CAAI,QAA6B,EAAE,GAAG,OAAc;;QAClF,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,OAAO,IAAI,EAAE;YACX,IAAI;gBACF,OAAO,MAAO,sBAAM,CAAC,cAAc,CAAC,gCAAgB,CAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,GAAG,OAAO,CAAgB,CAAC;aAClJ;YAAC,OAAO,CAAM,EAAE;gBACf,IAAI,CAAC,CAAC,IAAI,KAAK,gCAAgB,CAAC,WAAW;oBACzC,MAAM,CAAC,CAAC,CAAC,wBAAwB;gBACnC,MAAM,KAAK,GAAG,MAAA,MAAM,CAAA,MAAA,IAAI,CAAC,SAAS,+CAAd,IAAI,EAAa,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAA,mCAAI,IAAI,CAAC;gBACnE,MAAM,yBAAU,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;aACjD;SACF;IACH,CAAC;IAED,gBAAgB;IACT,MAAM,CAAC,SAAS,CAAC,MAAc;QACpC,OAAO,yBAAS,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC;IACxE,CAAC;IAED;;;;;;OAMG;IACI,MAAM,CAAC,KAAK,CAAC,UAAU;QAC5B,IAAI,IAAI,CAAC,YAAY;YACnB,OAAO;QAET,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAEzB,oCAAoC;QACpC,yBAAS,CAAC,gBAAgB,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAE9D,MAAM,gBAAgB,GAAG,yBAAS,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAElF,MAAM,KAAK,GAAG,yBAAS,CAAC,KAAK,CAAC;QAC9B,KAAK,CAAC,cAAc,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAEpD,uEAAuE;QACvE,KAAK,CAAC,cAAc,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACtD,KAAK,CAAC,cAAc,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACzD,KAAK,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAClD,KAAK,CAAC,cAAc,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACzD,KAAK,CAAC,cAAc,CAAC,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1D,KAAK,CAAC,cAAc,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACrD,KAAK,CAAC,cAAc,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACzD,KAAK,CAAC,cAAc,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAEvD,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAEO,MAAM,CAAC,QAAQ;QACrB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC5B,CAAC;;AA7DH,8BA8DC;AA7DwB,mBAAS,GAAG,QAAQ,CAAC;AACrB,eAAK,GAAG,eAAe,CAAC;AAEhC,sBAAY,GAAG,KAAK,CAAC","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 { BeDuration } from \"@itwin/core-bentley\";\r\nimport { IModelApp, IpcApp } from \"@itwin/core-frontend\";\r\nimport { editorIpcStrings } from \"@itwin/editor-common\";\r\n\r\nimport * as UndoRedoTools from \"./UndoRedoTool\";\r\nimport * as DeleteElementsTool from \"./DeleteElementsTool\";\r\nimport * as ModifyCurveTools from \"./ModifyCurveTools\";\r\nimport * as ProjectLocation from \"./ProjectLocation/ProjectExtentsDecoration\";\r\nimport * as ProjectGeoLocation from \"./ProjectLocation/ProjectGeolocation\";\r\nimport * as SketchTools from \"./SketchTools\";\r\nimport * as SolidModelingTools from \"./SolidModelingTools\";\r\nimport * as SolidPrimitiveTools from \"./SolidPrimitiveTools\";\r\nimport * as TransformTools from \"./TransformElementsTool\";\r\n\r\n/** @beta */\r\nexport namespace EditTools {\r\n export interface StartArgs {\r\n commandId: string;\r\n iModelKey: string;\r\n }\r\n /** handler for retries when an EditTool attempts to start but a backend command is busy and can't finish its work.\r\n * @param attempt the number of times this handler was previously called for this EditTool\r\n * @param msg the message about what's happening from the currently busy EditCommand.\r\n * @returns the delay (in milliseconds) before attempting again. If `undefined` use default (usually 1 second)\r\n */\r\n export type BusyRetry = (attempt: number, msg: string) => Promise<number | undefined>;\r\n}\r\n\r\n/**\r\n * Supports PrimitiveTool and InputCollector sub-classes.\r\n * @beta\r\n */\r\nexport class EditTools {\r\n public static readonly namespace = \"Editor\";\r\n public static readonly tools = \"Editor:tools.\";\r\n public static busyRetry?: EditTools.BusyRetry;\r\n private static _initialized = false;\r\n\r\n public static async startCommand<T>(startArg: EditTools.StartArgs, ...cmdArgs: any[]): Promise<T> {\r\n let attempt = 0;\r\n while (true) {\r\n try {\r\n return await (IpcApp.callIpcChannel(editorIpcStrings.channel, \"startCommand\", startArg.commandId, startArg.iModelKey, ...cmdArgs) as Promise<T>);\r\n } catch (e: any) {\r\n if (e.name !== editorIpcStrings.commandBusy)\r\n throw e; // unknown backend error\r\n const delay = await this.busyRetry?.(attempt++, e.message) ?? 1000;\r\n await BeDuration.fromMilliseconds(delay).wait();\r\n }\r\n }\r\n }\r\n\r\n /** @internal */\r\n public static translate(prompt: string) {\r\n return IModelApp.localization.getLocalizedString(this.tools + prompt);\r\n }\r\n\r\n /** Call this before using the package (e.g., before attempting to use any of its tools.)\r\n * To initialize when starting up your app:\r\n * ```ts\r\n * IModelApp.startup();\r\n * await EditorTools.initialize();\r\n * ```\r\n */\r\n public static async initialize(): Promise<void> {\r\n if (this._initialized)\r\n return;\r\n\r\n this._initialized = true;\r\n\r\n // clean up if we're being shut down\r\n IModelApp.onBeforeShutdown.addListener(() => this.shutdown());\r\n\r\n const namespacePromise = IModelApp.localization.registerNamespace(this.namespace);\r\n\r\n const tools = IModelApp.tools;\r\n tools.registerModule(UndoRedoTools, this.namespace);\r\n\r\n // TODO: TEMPORARY - Register tools for testing. To be moved into apps.\r\n tools.registerModule(ProjectLocation, this.namespace);\r\n tools.registerModule(ProjectGeoLocation, this.namespace);\r\n tools.registerModule(SketchTools, this.namespace);\r\n tools.registerModule(SolidModelingTools, this.namespace);\r\n tools.registerModule(SolidPrimitiveTools, this.namespace);\r\n tools.registerModule(TransformTools, this.namespace);\r\n tools.registerModule(DeleteElementsTool, this.namespace);\r\n tools.registerModule(ModifyCurveTools, this.namespace);\r\n\r\n return namespacePromise;\r\n }\r\n\r\n private static shutdown() {\r\n this._initialized = false;\r\n }\r\n}\r\n"]}
@@ -3,16 +3,17 @@
3
3
  */
4
4
  import { PickAsyncMethods } from "@itwin/core-bentley";
5
5
  import { BasicManipulationCommandIpc, EditCommandIpc, SolidModelingCommandIpc } from "@itwin/editor-common";
6
- /** Create a type safe Proxy object to make IPC calls to methods of the current `EditCommand`
7
- * @alpha
6
+ /**
7
+ * Create a type safe Proxy object to make IPC calls from an [[EditTool]] to methods of an `EditCommandIpc` interface of the current `EditCommand`.
8
+ * @beta
8
9
  */
9
10
  export declare function makeEditToolIpc<K extends EditCommandIpc>(): PickAsyncMethods<K>;
10
11
  /** Proxy for calling methods in `BasicManipulationCommandIpc`
11
- * @alpha
12
+ * @internal
12
13
  */
13
14
  export declare const basicManipulationIpc: PickAsyncMethods<BasicManipulationCommandIpc>;
14
15
  /** Proxy for calling methods in `SolidModelingCommandIpc`
15
- * @alpha
16
+ * @internal
16
17
  */
17
18
  export declare const solidModelingIpc: PickAsyncMethods<SolidModelingCommandIpc>;
18
19
  //# sourceMappingURL=EditToolIpc.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EditToolIpc.d.ts","sourceRoot":"","sources":["../../src/EditToolIpc.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAE,2BAA2B,EAAE,cAAc,EAAiB,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAE3H;;GAEG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,cAAc,KAAK,gBAAgB,CAAC,CAAC,CAAC,CAE/E;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,+CAAiD,CAAC;AACnF;;EAEE;AACF,eAAO,MAAM,gBAAgB,2CAA6C,CAAC"}
1
+ {"version":3,"file":"EditToolIpc.d.ts","sourceRoot":"","sources":["../../src/EditToolIpc.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAE,2BAA2B,EAAE,cAAc,EAAoB,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAE9H;;;GAGG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,cAAc,KAAK,gBAAgB,CAAC,CAAC,CAAC,CAE/E;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,+CAAiD,CAAC;AACnF;;EAEE;AACF,eAAO,MAAM,gBAAgB,2CAA6C,CAAC"}
@@ -10,19 +10,20 @@ Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.solidModelingIpc = exports.basicManipulationIpc = exports.makeEditToolIpc = void 0;
11
11
  const core_frontend_1 = require("@itwin/core-frontend");
12
12
  const editor_common_1 = require("@itwin/editor-common");
13
- /** Create a type safe Proxy object to make IPC calls to methods of the current `EditCommand`
14
- * @alpha
13
+ /**
14
+ * Create a type safe Proxy object to make IPC calls from an [[EditTool]] to methods of an `EditCommandIpc` interface of the current `EditCommand`.
15
+ * @beta
15
16
  */
16
17
  function makeEditToolIpc() {
17
- return core_frontend_1.IpcApp.makeIpcFunctionProxy(editor_common_1.editorChannel, "callMethod");
18
+ return core_frontend_1.IpcApp.makeIpcFunctionProxy(editor_common_1.editorIpcStrings.channel, "callMethod");
18
19
  }
19
20
  exports.makeEditToolIpc = makeEditToolIpc;
20
21
  /** Proxy for calling methods in `BasicManipulationCommandIpc`
21
- * @alpha
22
+ * @internal
22
23
  */
23
24
  exports.basicManipulationIpc = makeEditToolIpc();
24
25
  /** Proxy for calling methods in `SolidModelingCommandIpc`
25
- * @alpha
26
+ * @internal
26
27
  */
27
28
  exports.solidModelingIpc = makeEditToolIpc();
28
29
  //# sourceMappingURL=EditToolIpc.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EditToolIpc.js","sourceRoot":"","sources":["../../src/EditToolIpc.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAGH,wDAA8C;AAC9C,wDAA2H;AAE3H;;GAEG;AACH,SAAgB,eAAe;IAC7B,OAAO,sBAAM,CAAC,oBAAoB,CAAI,6BAAa,EAAE,YAAY,CAAC,CAAC;AACrE,CAAC;AAFD,0CAEC;AAED;;GAEG;AACU,QAAA,oBAAoB,GAAG,eAAe,EAA+B,CAAC;AACnF;;EAEE;AACW,QAAA,gBAAgB,GAAG,eAAe,EAA2B,CAAC","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 { PickAsyncMethods } from \"@itwin/core-bentley\";\r\nimport { IpcApp } from \"@itwin/core-frontend\";\r\nimport { BasicManipulationCommandIpc, EditCommandIpc, editorChannel, SolidModelingCommandIpc } from \"@itwin/editor-common\";\r\n\r\n/** Create a type safe Proxy object to make IPC calls to methods of the current `EditCommand`\r\n * @alpha\r\n */\r\nexport function makeEditToolIpc<K extends EditCommandIpc>(): PickAsyncMethods<K> {\r\n return IpcApp.makeIpcFunctionProxy<K>(editorChannel, \"callMethod\");\r\n}\r\n\r\n/** Proxy for calling methods in `BasicManipulationCommandIpc`\r\n * @alpha\r\n */\r\nexport const basicManipulationIpc = makeEditToolIpc<BasicManipulationCommandIpc>();\r\n/** Proxy for calling methods in `SolidModelingCommandIpc`\r\n* @alpha\r\n*/\r\nexport const solidModelingIpc = makeEditToolIpc<SolidModelingCommandIpc>();\r\n"]}
1
+ {"version":3,"file":"EditToolIpc.js","sourceRoot":"","sources":["../../src/EditToolIpc.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAGH,wDAA8C;AAC9C,wDAA8H;AAE9H;;;GAGG;AACH,SAAgB,eAAe;IAC7B,OAAO,sBAAM,CAAC,oBAAoB,CAAI,gCAAgB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AAChF,CAAC;AAFD,0CAEC;AAED;;GAEG;AACU,QAAA,oBAAoB,GAAG,eAAe,EAA+B,CAAC;AACnF;;EAEE;AACW,QAAA,gBAAgB,GAAG,eAAe,EAA2B,CAAC","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 { PickAsyncMethods } from \"@itwin/core-bentley\";\r\nimport { IpcApp } from \"@itwin/core-frontend\";\r\nimport { BasicManipulationCommandIpc, EditCommandIpc, editorIpcStrings, SolidModelingCommandIpc } from \"@itwin/editor-common\";\r\n\r\n/**\r\n * Create a type safe Proxy object to make IPC calls from an [[EditTool]] to methods of an `EditCommandIpc` interface of the current `EditCommand`.\r\n * @beta\r\n */\r\nexport function makeEditToolIpc<K extends EditCommandIpc>(): PickAsyncMethods<K> {\r\n return IpcApp.makeIpcFunctionProxy<K>(editorIpcStrings.channel, \"callMethod\");\r\n}\r\n\r\n/** Proxy for calling methods in `BasicManipulationCommandIpc`\r\n * @internal\r\n */\r\nexport const basicManipulationIpc = makeEditToolIpc<BasicManipulationCommandIpc>();\r\n/** Proxy for calling methods in `SolidModelingCommandIpc`\r\n* @internal\r\n*/\r\nexport const solidModelingIpc = makeEditToolIpc<SolidModelingCommandIpc>();\r\n"]}
@@ -155,7 +155,7 @@ class ElementGeometryCacheTool extends core_frontend_1.ElementSetTool {
155
155
  async startCommand() {
156
156
  if (undefined !== this._startedCmd)
157
157
  return this._startedCmd;
158
- return EditTool_1.EditTools.startCommand(editor_common_1.editorBuiltInCmdIds.cmdSolidModeling, this.iModel.key);
158
+ return EditTool_1.EditTools.startCommand({ commandId: editor_common_1.editorBuiltInCmdIds.cmdSolidModeling, iModelKey: this.iModel.key });
159
159
  }
160
160
  agendaAppearance(isDynamics) {
161
161
  if (isDynamics) {