@itwin/hypermodeling-frontend 4.0.0-dev.24 → 4.0.0-dev.28

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 (63) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/lib/cjs/HyperModeling.d.ts +114 -114
  3. package/lib/cjs/HyperModeling.js +237 -239
  4. package/lib/cjs/HyperModeling.js.map +1 -1
  5. package/lib/cjs/HyperModelingConfig.d.ts +54 -54
  6. package/lib/cjs/HyperModelingConfig.js +9 -9
  7. package/lib/cjs/HyperModelingConfig.js.map +1 -1
  8. package/lib/cjs/HyperModelingDecorator.d.ts +110 -110
  9. package/lib/cjs/HyperModelingDecorator.js +335 -337
  10. package/lib/cjs/HyperModelingDecorator.js.map +1 -1
  11. package/lib/cjs/PopupToolbar.d.ts +24 -24
  12. package/lib/cjs/PopupToolbar.js +57 -57
  13. package/lib/cjs/PopupToolbar.js.map +1 -1
  14. package/lib/cjs/SectionDrawingLocationState.d.ts +90 -90
  15. package/lib/cjs/SectionDrawingLocationState.js +135 -136
  16. package/lib/cjs/SectionDrawingLocationState.js.map +1 -1
  17. package/lib/cjs/SectionGraphicsProvider.d.ts +13 -13
  18. package/lib/cjs/SectionGraphicsProvider.js +272 -273
  19. package/lib/cjs/SectionGraphicsProvider.js.map +1 -1
  20. package/lib/cjs/SectionMarkerHandler.d.ts +52 -52
  21. package/lib/cjs/SectionMarkerHandler.js +111 -112
  22. package/lib/cjs/SectionMarkerHandler.js.map +1 -1
  23. package/lib/cjs/SectionMarkers.d.ts +82 -82
  24. package/lib/cjs/SectionMarkers.js +174 -174
  25. package/lib/cjs/SectionMarkers.js.map +1 -1
  26. package/lib/cjs/Tools.d.ts +5 -5
  27. package/lib/cjs/Tools.js +170 -170
  28. package/lib/cjs/Tools.js.map +1 -1
  29. package/lib/cjs/hypermodeling-frontend.d.ts +13 -13
  30. package/lib/cjs/hypermodeling-frontend.js +29 -29
  31. package/lib/cjs/hypermodeling-frontend.js.map +1 -1
  32. package/lib/esm/HyperModeling.d.ts +114 -114
  33. package/lib/esm/HyperModeling.js +233 -235
  34. package/lib/esm/HyperModeling.js.map +1 -1
  35. package/lib/esm/HyperModelingConfig.d.ts +54 -54
  36. package/lib/esm/HyperModelingConfig.js +8 -8
  37. package/lib/esm/HyperModelingConfig.js.map +1 -1
  38. package/lib/esm/HyperModelingDecorator.d.ts +110 -110
  39. package/lib/esm/HyperModelingDecorator.js +331 -333
  40. package/lib/esm/HyperModelingDecorator.js.map +1 -1
  41. package/lib/esm/PopupToolbar.d.ts +24 -24
  42. package/lib/esm/PopupToolbar.js +53 -53
  43. package/lib/esm/PopupToolbar.js.map +1 -1
  44. package/lib/esm/SectionDrawingLocationState.d.ts +90 -90
  45. package/lib/esm/SectionDrawingLocationState.js +131 -132
  46. package/lib/esm/SectionDrawingLocationState.js.map +1 -1
  47. package/lib/esm/SectionGraphicsProvider.d.ts +13 -13
  48. package/lib/esm/SectionGraphicsProvider.js +268 -269
  49. package/lib/esm/SectionGraphicsProvider.js.map +1 -1
  50. package/lib/esm/SectionMarkerHandler.d.ts +52 -52
  51. package/lib/esm/SectionMarkerHandler.js +107 -108
  52. package/lib/esm/SectionMarkerHandler.js.map +1 -1
  53. package/lib/esm/SectionMarkers.d.ts +82 -82
  54. package/lib/esm/SectionMarkers.js +168 -168
  55. package/lib/esm/SectionMarkers.js.map +1 -1
  56. package/lib/esm/Tools.d.ts +5 -5
  57. package/lib/esm/Tools.js +166 -166
  58. package/lib/esm/Tools.js.map +1 -1
  59. package/lib/esm/hypermodeling-frontend.d.ts +13 -13
  60. package/lib/esm/hypermodeling-frontend.js +17 -17
  61. package/lib/esm/hypermodeling-frontend.js.map +1 -1
  62. package/lib/public/locales/en/HyperModeling.json +32 -32
  63. package/package.json +12 -12
package/lib/esm/Tools.js CHANGED
@@ -1,167 +1,167 @@
1
- /*---------------------------------------------------------------------------------------------
2
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
- * See LICENSE.md in the project root for license terms and full copyright notice.
4
- *--------------------------------------------------------------------------------------------*/
5
- /** @packageDocumentation
6
- * @module HyperModeling
7
- */
8
- import { SectionType } from "@itwin/core-common";
9
- import { IModelApp, Tool } from "@itwin/core-frontend";
10
- import { HyperModeling } from "./HyperModeling";
11
- import { HyperModelingDecorator } from "./HyperModelingDecorator";
12
- /** Parses a string case-insensitively returning true for "ON", false for "OFF", undefined for "TOGGLE" or undefined, and the input string for anything else. */
13
- function parseToggle(arg) {
14
- if (undefined === arg)
15
- return undefined;
16
- switch (arg.toLowerCase()) {
17
- case "on": return true;
18
- case "off": return false;
19
- case "toggle": return undefined;
20
- default: return arg;
21
- }
22
- }
23
- class HyperModelingTool extends Tool {
24
- static get minArgs() { return 0; }
25
- static get maxArgs() { return 1; }
26
- async run(enable, vp) {
27
- vp = vp !== null && vp !== void 0 ? vp : IModelApp.viewManager.selectedView;
28
- if (vp)
29
- await HyperModeling.startOrStop(vp, enable);
30
- return true;
31
- }
32
- async parseAndRun(...args) {
33
- const enable = parseToggle(args[0]);
34
- return typeof enable !== "string" && this.run(enable);
35
- }
36
- }
37
- HyperModelingTool.toolId = "HyperModeling";
38
- /** Configures how section graphics are displayed. These are global settings. If no arguments are supplied, the defaults are restored.
39
- * Otherwise, each argument is of the form "name=value" where value is 0 (disable) or 1 (enable). Only the first letter of each argument matters.
40
- * - drawings: Whether to display the section drawing graphics. Default: 1.
41
- * - sheets: Whether to display the sheet annotation graphics. Default: 1.
42
- * - clip: Whether to apply clip volumes to the 2d graphics. Default: 1.
43
- * - boundaries: Whether to display clip volumes as boundary shapes for debugging purposes. Default: 0.
44
- */
45
- class SectionGraphicsConfigTool extends Tool {
46
- static get minArgs() { return 0; }
47
- static get maxArgs() { return 4; }
48
- async run(config) {
49
- if (!config) {
50
- config = {
51
- ignoreClip: false,
52
- debugClipVolumes: false,
53
- hideSectionGraphics: false,
54
- hideSheetAnnotations: false,
55
- };
56
- }
57
- HyperModeling.updateConfiguration({ graphics: config });
58
- return true;
59
- }
60
- async parseAndRun(...args) {
61
- if (0 === args.length)
62
- return this.run(); // restore defaults...
63
- const config = {};
64
- for (const arg of args) {
65
- const parts = arg.toLowerCase().split("=");
66
- if (2 !== parts.length)
67
- continue;
68
- const value = Number.parseInt(parts[1], 10);
69
- if (Number.isNaN(value) || (0 !== value && 1 !== value))
70
- continue;
71
- const enable = 1 === value;
72
- switch (parts[0][0]) {
73
- case "d":
74
- config.hideSectionGraphics = !enable;
75
- break;
76
- case "s":
77
- config.hideSheetAnnotations = !enable;
78
- break;
79
- case "c":
80
- config.ignoreClip = !enable;
81
- break;
82
- case "b":
83
- config.debugClipVolumes = enable;
84
- break;
85
- }
86
- }
87
- return this.run(config);
88
- }
89
- }
90
- SectionGraphicsConfigTool.toolId = "HyperModeling.Graphics.Config";
91
- class SectionMarkerConfigTool extends Tool {
92
- static get minArgs() { return 0; }
93
- static get maxArgs() { return 3; }
94
- async run(config) {
95
- config = config !== null && config !== void 0 ? config : { ignoreModelSelector: false, ignoreCategorySelector: false, hiddenSectionTypes: [] };
96
- this.update(config);
97
- return true;
98
- }
99
- async parseAndRun(...args) {
100
- if (0 === args.length)
101
- return this.run(); // restore defaults...
102
- const config = {};
103
- for (const arg of args) {
104
- const parts = arg.toLowerCase().split("=");
105
- if (2 !== parts.length)
106
- continue;
107
- const setting = parts[0][0];
108
- switch (setting) {
109
- case "h": {
110
- config.hiddenSectionTypes = [];
111
- for (const c of parts[1]) {
112
- switch (c) {
113
- case "s":
114
- config.hiddenSectionTypes.push(SectionType.Section);
115
- break;
116
- case "d":
117
- config.hiddenSectionTypes.push(SectionType.Detail);
118
- break;
119
- case "e":
120
- config.hiddenSectionTypes.push(SectionType.Elevation);
121
- break;
122
- case "p":
123
- config.hiddenSectionTypes.push(SectionType.Plan);
124
- break;
125
- }
126
- }
127
- break;
128
- }
129
- default: {
130
- const intVal = Number.parseInt(parts[1], 10);
131
- if (!Number.isNaN(intVal) && (0 === intVal || 1 === intVal)) {
132
- if ("c" === setting)
133
- config.ignoreCategorySelector = 0 === intVal;
134
- else if ("m" === setting)
135
- config.ignoreModelSelector = 0 === intVal;
136
- }
137
- break;
138
- }
139
- }
140
- }
141
- return this.run(config);
142
- }
143
- }
144
- class SectionMarkerDefaultConfigTool extends SectionMarkerConfigTool {
145
- update(config) {
146
- HyperModeling.updateConfiguration({ markers: config });
147
- }
148
- }
149
- SectionMarkerDefaultConfigTool.toolId = "HyperModeling.Marker.Default.Config";
150
- class SectionMarkerDecoratorConfigTool extends SectionMarkerConfigTool {
151
- update(config) {
152
- const vp = IModelApp.viewManager.selectedView;
153
- const decorator = vp ? HyperModelingDecorator.getForViewport(vp) : undefined;
154
- if (decorator)
155
- decorator.updateConfiguration(config);
156
- }
157
- }
158
- SectionMarkerDecoratorConfigTool.toolId = "HyperModeling.Marker.Config";
159
- /** @internal */
160
- export function registerTools(namespace) {
161
- const register = (tool) => IModelApp.tools.register(tool, namespace);
162
- register(HyperModelingTool);
163
- register(SectionGraphicsConfigTool);
164
- register(SectionMarkerDecoratorConfigTool);
165
- register(SectionMarkerDefaultConfigTool);
166
- }
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ /** @packageDocumentation
6
+ * @module HyperModeling
7
+ */
8
+ import { SectionType } from "@itwin/core-common";
9
+ import { IModelApp, Tool } from "@itwin/core-frontend";
10
+ import { HyperModeling } from "./HyperModeling";
11
+ import { HyperModelingDecorator } from "./HyperModelingDecorator";
12
+ /** Parses a string case-insensitively returning true for "ON", false for "OFF", undefined for "TOGGLE" or undefined, and the input string for anything else. */
13
+ function parseToggle(arg) {
14
+ if (undefined === arg)
15
+ return undefined;
16
+ switch (arg.toLowerCase()) {
17
+ case "on": return true;
18
+ case "off": return false;
19
+ case "toggle": return undefined;
20
+ default: return arg;
21
+ }
22
+ }
23
+ class HyperModelingTool extends Tool {
24
+ static get minArgs() { return 0; }
25
+ static get maxArgs() { return 1; }
26
+ async run(enable, vp) {
27
+ vp = vp ?? IModelApp.viewManager.selectedView;
28
+ if (vp)
29
+ await HyperModeling.startOrStop(vp, enable);
30
+ return true;
31
+ }
32
+ async parseAndRun(...args) {
33
+ const enable = parseToggle(args[0]);
34
+ return typeof enable !== "string" && this.run(enable);
35
+ }
36
+ }
37
+ HyperModelingTool.toolId = "HyperModeling";
38
+ /** Configures how section graphics are displayed. These are global settings. If no arguments are supplied, the defaults are restored.
39
+ * Otherwise, each argument is of the form "name=value" where value is 0 (disable) or 1 (enable). Only the first letter of each argument matters.
40
+ * - drawings: Whether to display the section drawing graphics. Default: 1.
41
+ * - sheets: Whether to display the sheet annotation graphics. Default: 1.
42
+ * - clip: Whether to apply clip volumes to the 2d graphics. Default: 1.
43
+ * - boundaries: Whether to display clip volumes as boundary shapes for debugging purposes. Default: 0.
44
+ */
45
+ class SectionGraphicsConfigTool extends Tool {
46
+ static get minArgs() { return 0; }
47
+ static get maxArgs() { return 4; }
48
+ async run(config) {
49
+ if (!config) {
50
+ config = {
51
+ ignoreClip: false,
52
+ debugClipVolumes: false,
53
+ hideSectionGraphics: false,
54
+ hideSheetAnnotations: false,
55
+ };
56
+ }
57
+ HyperModeling.updateConfiguration({ graphics: config });
58
+ return true;
59
+ }
60
+ async parseAndRun(...args) {
61
+ if (0 === args.length)
62
+ return this.run(); // restore defaults...
63
+ const config = {};
64
+ for (const arg of args) {
65
+ const parts = arg.toLowerCase().split("=");
66
+ if (2 !== parts.length)
67
+ continue;
68
+ const value = Number.parseInt(parts[1], 10);
69
+ if (Number.isNaN(value) || (0 !== value && 1 !== value))
70
+ continue;
71
+ const enable = 1 === value;
72
+ switch (parts[0][0]) {
73
+ case "d":
74
+ config.hideSectionGraphics = !enable;
75
+ break;
76
+ case "s":
77
+ config.hideSheetAnnotations = !enable;
78
+ break;
79
+ case "c":
80
+ config.ignoreClip = !enable;
81
+ break;
82
+ case "b":
83
+ config.debugClipVolumes = enable;
84
+ break;
85
+ }
86
+ }
87
+ return this.run(config);
88
+ }
89
+ }
90
+ SectionGraphicsConfigTool.toolId = "HyperModeling.Graphics.Config";
91
+ class SectionMarkerConfigTool extends Tool {
92
+ static get minArgs() { return 0; }
93
+ static get maxArgs() { return 3; }
94
+ async run(config) {
95
+ config = config ?? { ignoreModelSelector: false, ignoreCategorySelector: false, hiddenSectionTypes: [] };
96
+ this.update(config);
97
+ return true;
98
+ }
99
+ async parseAndRun(...args) {
100
+ if (0 === args.length)
101
+ return this.run(); // restore defaults...
102
+ const config = {};
103
+ for (const arg of args) {
104
+ const parts = arg.toLowerCase().split("=");
105
+ if (2 !== parts.length)
106
+ continue;
107
+ const setting = parts[0][0];
108
+ switch (setting) {
109
+ case "h": {
110
+ config.hiddenSectionTypes = [];
111
+ for (const c of parts[1]) {
112
+ switch (c) {
113
+ case "s":
114
+ config.hiddenSectionTypes.push(SectionType.Section);
115
+ break;
116
+ case "d":
117
+ config.hiddenSectionTypes.push(SectionType.Detail);
118
+ break;
119
+ case "e":
120
+ config.hiddenSectionTypes.push(SectionType.Elevation);
121
+ break;
122
+ case "p":
123
+ config.hiddenSectionTypes.push(SectionType.Plan);
124
+ break;
125
+ }
126
+ }
127
+ break;
128
+ }
129
+ default: {
130
+ const intVal = Number.parseInt(parts[1], 10);
131
+ if (!Number.isNaN(intVal) && (0 === intVal || 1 === intVal)) {
132
+ if ("c" === setting)
133
+ config.ignoreCategorySelector = 0 === intVal;
134
+ else if ("m" === setting)
135
+ config.ignoreModelSelector = 0 === intVal;
136
+ }
137
+ break;
138
+ }
139
+ }
140
+ }
141
+ return this.run(config);
142
+ }
143
+ }
144
+ class SectionMarkerDefaultConfigTool extends SectionMarkerConfigTool {
145
+ update(config) {
146
+ HyperModeling.updateConfiguration({ markers: config });
147
+ }
148
+ }
149
+ SectionMarkerDefaultConfigTool.toolId = "HyperModeling.Marker.Default.Config";
150
+ class SectionMarkerDecoratorConfigTool extends SectionMarkerConfigTool {
151
+ update(config) {
152
+ const vp = IModelApp.viewManager.selectedView;
153
+ const decorator = vp ? HyperModelingDecorator.getForViewport(vp) : undefined;
154
+ if (decorator)
155
+ decorator.updateConfiguration(config);
156
+ }
157
+ }
158
+ SectionMarkerDecoratorConfigTool.toolId = "HyperModeling.Marker.Config";
159
+ /** @internal */
160
+ export function registerTools(namespace) {
161
+ const register = (tool) => IModelApp.tools.register(tool, namespace);
162
+ register(HyperModelingTool);
163
+ register(SectionGraphicsConfigTool);
164
+ register(SectionMarkerDecoratorConfigTool);
165
+ register(SectionMarkerDefaultConfigTool);
166
+ }
167
167
  //# sourceMappingURL=Tools.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tools.js","sourceRoot":"","sources":["../../src/Tools.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 HyperModeling\r\n */\r\n\r\nimport { SectionType } from \"@itwin/core-common\";\r\nimport { IModelApp, ScreenViewport, Tool } from \"@itwin/core-frontend\";\r\nimport { HyperModeling } from \"./HyperModeling\";\r\nimport { SectionGraphicsConfig, SectionMarkerConfig } from \"./HyperModelingConfig\";\r\nimport { HyperModelingDecorator } from \"./HyperModelingDecorator\";\r\n\r\n/** Parses a string case-insensitively returning true for \"ON\", false for \"OFF\", undefined for \"TOGGLE\" or undefined, and the input string for anything else. */\r\nfunction parseToggle(arg: string | undefined): string | boolean | undefined {\r\n if (undefined === arg)\r\n return undefined;\r\n\r\n switch (arg.toLowerCase()) {\r\n case \"on\": return true;\r\n case \"off\": return false;\r\n case \"toggle\": return undefined;\r\n default: return arg;\r\n }\r\n}\r\n\r\nclass HyperModelingTool extends Tool {\r\n public static override toolId = \"HyperModeling\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 1; }\r\n\r\n public override async run(enable?: boolean, vp?: ScreenViewport): Promise<boolean> {\r\n vp = vp ?? IModelApp.viewManager.selectedView;\r\n if (vp)\r\n await HyperModeling.startOrStop(vp, enable);\r\n\r\n return true;\r\n }\r\n\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n const enable = parseToggle(args[0]);\r\n return typeof enable !== \"string\" && this.run(enable);\r\n }\r\n}\r\n\r\ntype Writeable<T> = { -readonly [P in keyof T]: T[P] };\r\n\r\n/** Configures how section graphics are displayed. These are global settings. If no arguments are supplied, the defaults are restored.\r\n * Otherwise, each argument is of the form \"name=value\" where value is 0 (disable) or 1 (enable). Only the first letter of each argument matters.\r\n * - drawings: Whether to display the section drawing graphics. Default: 1.\r\n * - sheets: Whether to display the sheet annotation graphics. Default: 1.\r\n * - clip: Whether to apply clip volumes to the 2d graphics. Default: 1.\r\n * - boundaries: Whether to display clip volumes as boundary shapes for debugging purposes. Default: 0.\r\n */\r\nclass SectionGraphicsConfigTool extends Tool {\r\n public static override toolId = \"HyperModeling.Graphics.Config\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 4; }\r\n\r\n public override async run(config?: SectionGraphicsConfig): Promise<boolean> {\r\n if (!config) {\r\n config = {\r\n ignoreClip: false,\r\n debugClipVolumes: false,\r\n hideSectionGraphics: false,\r\n hideSheetAnnotations: false,\r\n };\r\n }\r\n\r\n HyperModeling.updateConfiguration({ graphics: config });\r\n return true;\r\n }\r\n\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n if (0 === args.length)\r\n return this.run(); // restore defaults...\r\n\r\n const config: Writeable<SectionGraphicsConfig> = {};\r\n for (const arg of args) {\r\n const parts = arg.toLowerCase().split(\"=\");\r\n if (2 !== parts.length)\r\n continue;\r\n\r\n const value = Number.parseInt(parts[1], 10);\r\n if (Number.isNaN(value) || (0 !== value && 1 !== value))\r\n continue;\r\n\r\n const enable = 1 === value;\r\n switch (parts[0][0]) {\r\n case \"d\":\r\n config.hideSectionGraphics = !enable;\r\n break;\r\n case \"s\":\r\n config.hideSheetAnnotations = !enable;\r\n break;\r\n case \"c\":\r\n config.ignoreClip = !enable;\r\n break;\r\n case \"b\":\r\n config.debugClipVolumes = enable;\r\n break;\r\n }\r\n }\r\n\r\n return this.run(config);\r\n }\r\n}\r\n\r\nabstract class SectionMarkerConfigTool extends Tool {\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 3; }\r\n\r\n protected abstract update(config: SectionMarkerConfig): void;\r\n\r\n public override async run(config?: SectionMarkerConfig): Promise<boolean> {\r\n config = config ?? { ignoreModelSelector: false, ignoreCategorySelector: false, hiddenSectionTypes: [] };\r\n this.update(config);\r\n return true;\r\n }\r\n\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n if (0 === args.length)\r\n return this.run(); // restore defaults...\r\n\r\n const config: Writeable<SectionMarkerConfig> = {};\r\n for (const arg of args) {\r\n const parts = arg.toLowerCase().split(\"=\");\r\n if (2 !== parts.length)\r\n continue;\r\n\r\n const setting = parts[0][0];\r\n switch (setting) {\r\n case \"h\": {\r\n config.hiddenSectionTypes = [];\r\n for (const c of parts[1]) {\r\n switch (c) {\r\n case \"s\":\r\n config.hiddenSectionTypes.push(SectionType.Section);\r\n break;\r\n case \"d\":\r\n config.hiddenSectionTypes.push(SectionType.Detail);\r\n break;\r\n case \"e\":\r\n config.hiddenSectionTypes.push(SectionType.Elevation);\r\n break;\r\n case \"p\":\r\n config.hiddenSectionTypes.push(SectionType.Plan);\r\n break;\r\n }\r\n }\r\n\r\n break;\r\n }\r\n default: {\r\n const intVal = Number.parseInt(parts[1], 10);\r\n if (!Number.isNaN(intVal) && (0 === intVal || 1 === intVal)) {\r\n if (\"c\" === setting)\r\n config.ignoreCategorySelector = 0 === intVal;\r\n else if (\"m\" === setting)\r\n config.ignoreModelSelector = 0 === intVal;\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return this.run(config);\r\n }\r\n}\r\n\r\nclass SectionMarkerDefaultConfigTool extends SectionMarkerConfigTool {\r\n public static override toolId = \"HyperModeling.Marker.Default.Config\";\r\n\r\n protected update(config: SectionMarkerConfig): void {\r\n HyperModeling.updateConfiguration({ markers: config });\r\n }\r\n}\r\n\r\nclass SectionMarkerDecoratorConfigTool extends SectionMarkerConfigTool {\r\n public static override toolId = \"HyperModeling.Marker.Config\";\r\n\r\n protected update(config: SectionMarkerConfig): void {\r\n const vp = IModelApp.viewManager.selectedView;\r\n const decorator = vp ? HyperModelingDecorator.getForViewport(vp) : undefined;\r\n if (decorator)\r\n decorator.updateConfiguration(config);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function registerTools(namespace: string): void {\r\n const register = (tool: typeof Tool) => IModelApp.tools.register(tool, namespace);\r\n register(HyperModelingTool);\r\n register(SectionGraphicsConfigTool);\r\n register(SectionMarkerDecoratorConfigTool);\r\n register(SectionMarkerDefaultConfigTool);\r\n}\r\n"]}
1
+ {"version":3,"file":"Tools.js","sourceRoot":"","sources":["../../src/Tools.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 HyperModeling\r\n */\r\n\r\nimport { SectionType } from \"@itwin/core-common\";\r\nimport { IModelApp, ScreenViewport, Tool } from \"@itwin/core-frontend\";\r\nimport { HyperModeling } from \"./HyperModeling\";\r\nimport { SectionGraphicsConfig, SectionMarkerConfig } from \"./HyperModelingConfig\";\r\nimport { HyperModelingDecorator } from \"./HyperModelingDecorator\";\r\n\r\n/** Parses a string case-insensitively returning true for \"ON\", false for \"OFF\", undefined for \"TOGGLE\" or undefined, and the input string for anything else. */\r\nfunction parseToggle(arg: string | undefined): string | boolean | undefined {\r\n if (undefined === arg)\r\n return undefined;\r\n\r\n switch (arg.toLowerCase()) {\r\n case \"on\": return true;\r\n case \"off\": return false;\r\n case \"toggle\": return undefined;\r\n default: return arg;\r\n }\r\n}\r\n\r\nclass HyperModelingTool extends Tool {\r\n public static override toolId = \"HyperModeling\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 1; }\r\n\r\n public override async run(enable?: boolean, vp?: ScreenViewport): Promise<boolean> {\r\n vp = vp ?? IModelApp.viewManager.selectedView;\r\n if (vp)\r\n await HyperModeling.startOrStop(vp, enable);\r\n\r\n return true;\r\n }\r\n\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n const enable = parseToggle(args[0]);\r\n return typeof enable !== \"string\" && this.run(enable);\r\n }\r\n}\r\n\r\ntype Writeable<T> = { -readonly [P in keyof T]: T[P] };\r\n\r\n/** Configures how section graphics are displayed. These are global settings. If no arguments are supplied, the defaults are restored.\r\n * Otherwise, each argument is of the form \"name=value\" where value is 0 (disable) or 1 (enable). Only the first letter of each argument matters.\r\n * - drawings: Whether to display the section drawing graphics. Default: 1.\r\n * - sheets: Whether to display the sheet annotation graphics. Default: 1.\r\n * - clip: Whether to apply clip volumes to the 2d graphics. Default: 1.\r\n * - boundaries: Whether to display clip volumes as boundary shapes for debugging purposes. Default: 0.\r\n */\r\nclass SectionGraphicsConfigTool extends Tool {\r\n public static override toolId = \"HyperModeling.Graphics.Config\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 4; }\r\n\r\n public override async run(config?: SectionGraphicsConfig): Promise<boolean> {\r\n if (!config) {\r\n config = {\r\n ignoreClip: false,\r\n debugClipVolumes: false,\r\n hideSectionGraphics: false,\r\n hideSheetAnnotations: false,\r\n };\r\n }\r\n\r\n HyperModeling.updateConfiguration({ graphics: config });\r\n return true;\r\n }\r\n\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n if (0 === args.length)\r\n return this.run(); // restore defaults...\r\n\r\n const config: Writeable<SectionGraphicsConfig> = {};\r\n for (const arg of args) {\r\n const parts = arg.toLowerCase().split(\"=\");\r\n if (2 !== parts.length)\r\n continue;\r\n\r\n const value = Number.parseInt(parts[1], 10);\r\n if (Number.isNaN(value) || (0 !== value && 1 !== value))\r\n continue;\r\n\r\n const enable = 1 === value;\r\n switch (parts[0][0]) {\r\n case \"d\":\r\n config.hideSectionGraphics = !enable;\r\n break;\r\n case \"s\":\r\n config.hideSheetAnnotations = !enable;\r\n break;\r\n case \"c\":\r\n config.ignoreClip = !enable;\r\n break;\r\n case \"b\":\r\n config.debugClipVolumes = enable;\r\n break;\r\n }\r\n }\r\n\r\n return this.run(config);\r\n }\r\n}\r\n\r\nabstract class SectionMarkerConfigTool extends Tool {\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 3; }\r\n\r\n protected abstract update(config: SectionMarkerConfig): void;\r\n\r\n public override async run(config?: SectionMarkerConfig): Promise<boolean> {\r\n config = config ?? { ignoreModelSelector: false, ignoreCategorySelector: false, hiddenSectionTypes: [] };\r\n this.update(config);\r\n return true;\r\n }\r\n\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n if (0 === args.length)\r\n return this.run(); // restore defaults...\r\n\r\n const config: Writeable<SectionMarkerConfig> = {};\r\n for (const arg of args) {\r\n const parts = arg.toLowerCase().split(\"=\");\r\n if (2 !== parts.length)\r\n continue;\r\n\r\n const setting = parts[0][0];\r\n switch (setting) {\r\n case \"h\": {\r\n config.hiddenSectionTypes = [];\r\n for (const c of parts[1]) {\r\n switch (c) {\r\n case \"s\":\r\n config.hiddenSectionTypes.push(SectionType.Section);\r\n break;\r\n case \"d\":\r\n config.hiddenSectionTypes.push(SectionType.Detail);\r\n break;\r\n case \"e\":\r\n config.hiddenSectionTypes.push(SectionType.Elevation);\r\n break;\r\n case \"p\":\r\n config.hiddenSectionTypes.push(SectionType.Plan);\r\n break;\r\n }\r\n }\r\n\r\n break;\r\n }\r\n default: {\r\n const intVal = Number.parseInt(parts[1], 10);\r\n if (!Number.isNaN(intVal) && (0 === intVal || 1 === intVal)) {\r\n if (\"c\" === setting)\r\n config.ignoreCategorySelector = 0 === intVal;\r\n else if (\"m\" === setting)\r\n config.ignoreModelSelector = 0 === intVal;\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return this.run(config);\r\n }\r\n}\r\n\r\nclass SectionMarkerDefaultConfigTool extends SectionMarkerConfigTool {\r\n public static override toolId = \"HyperModeling.Marker.Default.Config\";\r\n\r\n protected update(config: SectionMarkerConfig): void {\r\n HyperModeling.updateConfiguration({ markers: config });\r\n }\r\n}\r\n\r\nclass SectionMarkerDecoratorConfigTool extends SectionMarkerConfigTool {\r\n public static override toolId = \"HyperModeling.Marker.Config\";\r\n\r\n protected update(config: SectionMarkerConfig): void {\r\n const vp = IModelApp.viewManager.selectedView;\r\n const decorator = vp ? HyperModelingDecorator.getForViewport(vp) : undefined;\r\n if (decorator)\r\n decorator.updateConfiguration(config);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function registerTools(namespace: string): void {\r\n const register = (tool: typeof Tool) => IModelApp.tools.register(tool, namespace);\r\n register(HyperModelingTool);\r\n register(SectionGraphicsConfigTool);\r\n register(SectionMarkerDecoratorConfigTool);\r\n register(SectionMarkerDefaultConfigTool);\r\n}\r\n"]}
@@ -1,14 +1,14 @@
1
- export * from "./HyperModeling";
2
- export * from "./HyperModelingConfig";
3
- export * from "./HyperModelingDecorator";
4
- export * from "./SectionMarkerHandler";
5
- export * from "./SectionDrawingLocationState";
6
- export * from "./SectionGraphicsProvider";
7
- export * from "./SectionMarkers";
8
- /** @docs-package-description
9
- * The hypermodeling package enables visualization of section drawings in a spatial context.
10
- */
11
- /** @docs-group-description HyperModeling
12
- * APIs for controlling visualization of section drawings in a spatial context.
13
- */
1
+ export * from "./HyperModeling";
2
+ export * from "./HyperModelingConfig";
3
+ export * from "./HyperModelingDecorator";
4
+ export * from "./SectionMarkerHandler";
5
+ export * from "./SectionDrawingLocationState";
6
+ export * from "./SectionGraphicsProvider";
7
+ export * from "./SectionMarkers";
8
+ /** @docs-package-description
9
+ * The hypermodeling package enables visualization of section drawings in a spatial context.
10
+ */
11
+ /** @docs-group-description HyperModeling
12
+ * APIs for controlling visualization of section drawings in a spatial context.
13
+ */
14
14
  //# sourceMappingURL=hypermodeling-frontend.d.ts.map
@@ -1,18 +1,18 @@
1
- /*---------------------------------------------------------------------------------------------
2
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
- * See LICENSE.md in the project root for license terms and full copyright notice.
4
- *--------------------------------------------------------------------------------------------*/
5
- export * from "./HyperModeling";
6
- export * from "./HyperModelingConfig";
7
- export * from "./HyperModelingDecorator";
8
- export * from "./SectionMarkerHandler";
9
- export * from "./SectionDrawingLocationState";
10
- export * from "./SectionGraphicsProvider";
11
- export * from "./SectionMarkers";
12
- /** @docs-package-description
13
- * The hypermodeling package enables visualization of section drawings in a spatial context.
14
- */
15
- /** @docs-group-description HyperModeling
16
- * APIs for controlling visualization of section drawings in a spatial context.
17
- */
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ export * from "./HyperModeling";
6
+ export * from "./HyperModelingConfig";
7
+ export * from "./HyperModelingDecorator";
8
+ export * from "./SectionMarkerHandler";
9
+ export * from "./SectionDrawingLocationState";
10
+ export * from "./SectionGraphicsProvider";
11
+ export * from "./SectionMarkers";
12
+ /** @docs-package-description
13
+ * The hypermodeling package enables visualization of section drawings in a spatial context.
14
+ */
15
+ /** @docs-group-description HyperModeling
16
+ * APIs for controlling visualization of section drawings in a spatial context.
17
+ */
18
18
  //# sourceMappingURL=hypermodeling-frontend.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hypermodeling-frontend.js","sourceRoot":"","sources":["../../src/hypermodeling-frontend.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AAEjC;;GAEG;AAEH;;GAEG","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\nexport * from \"./HyperModeling\";\r\nexport * from \"./HyperModelingConfig\";\r\nexport * from \"./HyperModelingDecorator\";\r\nexport * from \"./SectionMarkerHandler\";\r\nexport * from \"./SectionDrawingLocationState\";\r\nexport * from \"./SectionGraphicsProvider\";\r\nexport * from \"./SectionMarkers\";\r\n\r\n/** @docs-package-description\r\n * The hypermodeling package enables visualization of section drawings in a spatial context.\r\n */\r\n\r\n/** @docs-group-description HyperModeling\r\n * APIs for controlling visualization of section drawings in a spatial context.\r\n */\r\n"]}
1
+ {"version":3,"file":"hypermodeling-frontend.js","sourceRoot":"","sources":["../../src/hypermodeling-frontend.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AAEjC;;GAEG;AAEH;;GAEG","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nexport * from \"./HyperModeling\";\nexport * from \"./HyperModelingConfig\";\nexport * from \"./HyperModelingDecorator\";\nexport * from \"./SectionMarkerHandler\";\nexport * from \"./SectionDrawingLocationState\";\nexport * from \"./SectionGraphicsProvider\";\nexport * from \"./SectionMarkers\";\n\n/** @docs-package-description\n * The hypermodeling package enables visualization of section drawings in a spatial context.\n */\n\n/** @docs-group-description HyperModeling\n * APIs for controlling visualization of section drawings in a spatial context.\n */\n"]}
@@ -1,32 +1,32 @@
1
- {
2
- "tools": {
3
- "HyperModeling": {
4
- "keyin": "hypermodeling",
5
- "Graphics": {
6
- "Config": {
7
- "keyin": "hypermodeling graphics config"
8
- }
9
- },
10
- "Marker": {
11
- "Config": {
12
- "keyin": "hypermodeling marker config"
13
- },
14
- "Default": {
15
- "Config": {
16
- "keyin": "hypermodeling marker default config"
17
- }
18
- }
19
- }
20
- }
21
- },
22
- "Message": {
23
- "SectionCallout": "Section Callout",
24
- "DetailCallout": "Detail Callout",
25
- "ElevationCallout": "Elevation Callout",
26
- "PlanCallout": "Plan Callout",
27
- "ApplySection": "Apply Section",
28
- "OpenSection": "Open Section View",
29
- "OpenSheet": "Open Sheet View",
30
- "ApplyView": "Apply Spatial View"
31
- }
32
- }
1
+ {
2
+ "tools": {
3
+ "HyperModeling": {
4
+ "keyin": "hypermodeling",
5
+ "Graphics": {
6
+ "Config": {
7
+ "keyin": "hypermodeling graphics config"
8
+ }
9
+ },
10
+ "Marker": {
11
+ "Config": {
12
+ "keyin": "hypermodeling marker config"
13
+ },
14
+ "Default": {
15
+ "Config": {
16
+ "keyin": "hypermodeling marker default config"
17
+ }
18
+ }
19
+ }
20
+ }
21
+ },
22
+ "Message": {
23
+ "SectionCallout": "Section Callout",
24
+ "DetailCallout": "Detail Callout",
25
+ "ElevationCallout": "Elevation Callout",
26
+ "PlanCallout": "Plan Callout",
27
+ "ApplySection": "Apply Section",
28
+ "OpenSection": "Open Section View",
29
+ "OpenSheet": "Open Sheet View",
30
+ "ApplyView": "Apply Spatial View"
31
+ }
32
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itwin/hypermodeling-frontend",
3
- "version": "4.0.0-dev.24",
3
+ "version": "4.0.0-dev.28",
4
4
  "description": "iTwin.js hypermodeling package",
5
5
  "main": "lib/cjs/hypermodeling-frontend.js",
6
6
  "module": "lib/esm/hypermodeling-frontend.js",
@@ -21,19 +21,19 @@
21
21
  "url": "http://www.bentley.com"
22
22
  },
23
23
  "peerDependencies": {
24
- "@itwin/core-bentley": "^4.0.0-dev.24",
25
- "@itwin/core-common": "^4.0.0-dev.24",
26
- "@itwin/core-frontend": "^4.0.0-dev.24",
27
- "@itwin/core-geometry": "^4.0.0-dev.24"
24
+ "@itwin/core-bentley": "^4.0.0-dev.28",
25
+ "@itwin/core-common": "^4.0.0-dev.28",
26
+ "@itwin/core-frontend": "^4.0.0-dev.28",
27
+ "@itwin/core-geometry": "^4.0.0-dev.28"
28
28
  },
29
29
  "devDependencies": {
30
- "@itwin/build-tools": "4.0.0-dev.24",
31
- "@itwin/core-bentley": "4.0.0-dev.24",
32
- "@itwin/core-common": "4.0.0-dev.24",
33
- "@itwin/core-frontend": "4.0.0-dev.24",
34
- "@itwin/core-geometry": "4.0.0-dev.24",
35
- "@itwin/certa": "4.0.0-dev.24",
36
- "@itwin/eslint-plugin": "4.0.0-dev.24",
30
+ "@itwin/build-tools": "4.0.0-dev.28",
31
+ "@itwin/core-bentley": "4.0.0-dev.28",
32
+ "@itwin/core-common": "4.0.0-dev.28",
33
+ "@itwin/core-frontend": "4.0.0-dev.28",
34
+ "@itwin/core-geometry": "4.0.0-dev.28",
35
+ "@itwin/certa": "4.0.0-dev.28",
36
+ "@itwin/eslint-plugin": "4.0.0-dev.28",
37
37
  "@types/chai": "4.3.1",
38
38
  "@types/mocha": "^8.2.2",
39
39
  "@types/node": "^18.11.5",