@itwin/editor-frontend 3.0.0-dev.154 → 3.0.0-dev.159
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/ElementGeometryTool.d.ts +1 -0
- package/lib/cjs/ElementGeometryTool.d.ts.map +1 -1
- package/lib/cjs/ElementGeometryTool.js +8 -4
- package/lib/cjs/ElementGeometryTool.js.map +1 -1
- package/lib/cjs/SolidModelingTools.d.ts +128 -21
- package/lib/cjs/SolidModelingTools.d.ts.map +1 -1
- package/lib/cjs/SolidModelingTools.js +593 -63
- package/lib/cjs/SolidModelingTools.js.map +1 -1
- package/lib/esm/ElementGeometryTool.d.ts +1 -0
- package/lib/esm/ElementGeometryTool.d.ts.map +1 -1
- package/lib/esm/ElementGeometryTool.js +8 -4
- package/lib/esm/ElementGeometryTool.js.map +1 -1
- package/lib/esm/SolidModelingTools.d.ts +128 -21
- package/lib/esm/SolidModelingTools.d.ts.map +1 -1
- package/lib/esm/SolidModelingTools.js +594 -64
- package/lib/esm/SolidModelingTools.js.map +1 -1
- package/lib/public/locales/en/Editor.json +60 -9
- package/package.json +12 -12
|
@@ -86,6 +86,7 @@ export declare abstract class LocateSubEntityTool extends ElementGeometryCacheTo
|
|
|
86
86
|
protected _currentSubEntity?: SubEntityData;
|
|
87
87
|
protected _acceptedSubEntities: SubEntityData[];
|
|
88
88
|
protected _locatedSubEntities?: SubEntityLocationProps[];
|
|
89
|
+
protected _subEntityGraphicPending?: true;
|
|
89
90
|
protected readonly _summaryIds: Map<string, BRepEntityType[]>;
|
|
90
91
|
protected get wantAgendaAppearanceOverride(): boolean;
|
|
91
92
|
protected get wantGeometrySummary(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ElementGeometryTool.d.ts","sourceRoot":"","sources":["../../src/ElementGeometryTool.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ElementGeometryTool.d.ts","sourceRoot":"","sources":["../../src/ElementGeometryTool.ts"],"names":[],"mappings":"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"}
|
|
@@ -581,12 +581,16 @@ class LocateSubEntityTool extends ElementGeometryCacheTool {
|
|
|
581
581
|
const id = this.wantAdditionalSubEntities ? this.getCurrentElement() : undefined;
|
|
582
582
|
if (undefined === id)
|
|
583
583
|
return this.changeCurrentSubEntity();
|
|
584
|
+
if (this._subEntityGraphicPending)
|
|
585
|
+
return false;
|
|
586
|
+
this._subEntityGraphicPending = true;
|
|
584
587
|
const current = await this.doPickSubEntities(id, ev);
|
|
585
588
|
const chordTolerance = current ? (0, CreateElementTool_1.computeChordToleranceFromPoint)(ev.viewport, core_geometry_1.Point3d.fromJSON(current[0].point)) : 0.0;
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
589
|
+
const status = await this.changeCurrentSubEntity(id, current ? current[0] : undefined, chordTolerance);
|
|
590
|
+
this._subEntityGraphicPending = undefined;
|
|
591
|
+
if (status)
|
|
592
|
+
core_frontend_1.IModelApp.viewManager.invalidateDecorationsAllViews();
|
|
593
|
+
return status;
|
|
590
594
|
}
|
|
591
595
|
async createSubEntityGraphic(id, data, chordTolerance) {
|
|
592
596
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ElementGeometryTool.js","sourceRoot":"","sources":["../../src/ElementGeometryTool.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 { Id64, Id64Arg, Id64Array, Id64String } from \"@itwin/core-bentley\";\r\nimport { BRepEntityType, editorBuiltInCmdIds, ElementGeometryCacheFilter, ElementGeometryResultOptions, ElementGeometryResultProps, LocateSubEntityProps, SolidModelingCommandIpc, SubEntityFilter, SubEntityGeometryProps, SubEntityLocationProps, SubEntityProps, SubEntityType } from \"@itwin/editor-common\";\r\nimport { FeatureAppearance, FeatureAppearanceProvider, RgbColor } from \"@itwin/core-common\";\r\nimport { Point3d, Range3d, Ray3d, Transform } from \"@itwin/core-geometry\";\r\nimport { AccuDrawHintBuilder, BeButtonEvent, BeModifierKeys, CoordinateLockOverrides, CoordSource, DecorateContext, DynamicsContext, ElementSetTool, EventHandled, FeatureOverrideProvider, FeatureSymbology, GraphicBranch, GraphicBranchOptions, GraphicType, HitDetail, IModelApp, IModelConnection, InputSource, LocateResponse, readElementGraphics, RenderGraphicOwner, SelectionMethod, SelectionSet, Viewport } from \"@itwin/core-frontend\";\r\nimport { computeChordToleranceFromPoint } from \"./CreateElementTool\";\r\nimport { EditTools } from \"./EditTool\";\r\n\r\n/** @alpha */\r\nexport class ElementGeometryGraphicsProvider {\r\n public readonly iModel: IModelConnection;\r\n public graphic?: RenderGraphicOwner;\r\n\r\n constructor(iModel: IModelConnection) {\r\n this.iModel = iModel;\r\n }\r\n\r\n /** Call to request a RenderGraphic for the supplied graphic data.\r\n * @see [[cleanupGraphic]] Must be called when the tool exits.\r\n */\r\n public async createGraphic(graphicData: Uint8Array): Promise<boolean> {\r\n try {\r\n const graphic = await readElementGraphics(graphicData, this.iModel, Id64.invalid, true, { noFlash: true, noHilite: true });\r\n const graphicOwner = graphic ? IModelApp.renderSystem.createGraphicOwner(graphic) : undefined;\r\n this.cleanupGraphic();\r\n return (undefined !== (this.graphic = graphicOwner));\r\n } catch {\r\n return false;\r\n }\r\n }\r\n\r\n /** Call to dispose of [[RenderGraphic]] held by [[RenderGraphicOwner]].\r\n * @note Must be called when the tool exits to avoid leaks of graphics memory or other webgl resources.\r\n */\r\n public cleanupGraphic(): void {\r\n if (undefined === this.graphic)\r\n return;\r\n this.graphic.disposeGraphic();\r\n this.graphic = undefined;\r\n }\r\n\r\n public addGraphic(context: DynamicsContext, transform?: Transform, opts?: GraphicBranchOptions): void {\r\n if (undefined === this.graphic)\r\n return;\r\n\r\n if (undefined === transform && undefined === opts) {\r\n context.addGraphic(this.graphic);\r\n return;\r\n }\r\n\r\n const branch = new GraphicBranch(false);\r\n branch.add(this.graphic);\r\n\r\n const branchGraphic = context.createGraphicBranch(branch, transform ? transform : Transform.createIdentity(), opts);\r\n context.addGraphic(branchGraphic);\r\n }\r\n\r\n public addDecoration(context: DecorateContext, type: GraphicType, transform?: Transform, opts?: GraphicBranchOptions): void {\r\n if (undefined === this.graphic)\r\n return;\r\n\r\n const branch = new GraphicBranch(false);\r\n branch.add(this.graphic);\r\n\r\n const branchGraphic = context.createGraphicBranch(branch, transform ? transform : Transform.createIdentity(), opts);\r\n context.addDecoration(type, branchGraphic);\r\n }\r\n}\r\n\r\n/** @alpha */\r\nexport function isSameSubEntity(a: SubEntityProps, b: SubEntityProps): boolean {\r\n if (a.type !== b.type)\r\n return false;\r\n if (a.id !== b.id)\r\n return false;\r\n if ((undefined !== a.index ? a.index : 0) !== (undefined !== b.index ? b.index : 0))\r\n return false;\r\n return true;\r\n}\r\n\r\n/** @alpha */\r\nexport class SubEntityData {\r\n public toolData?: any;\r\n public chordTolerance?: number;\r\n\r\n private _props: SubEntityProps;\r\n private _geometry?: SubEntityGeometryProps;\r\n private _graphicsProvider?: ElementGeometryGraphicsProvider;\r\n\r\n constructor(props: SubEntityProps) { this._props = props; }\r\n\r\n public get props(): SubEntityProps { return this._props; }\r\n public set props(value: SubEntityProps) { this.cleanupGraphic(); this._props = value; }\r\n\r\n public get geometry(): SubEntityGeometryProps | undefined { return this._geometry; }\r\n public set geometry(value: SubEntityGeometryProps | undefined) { this._geometry = value; }\r\n\r\n public isSame(other: SubEntityProps): boolean { return isSameSubEntity(this._props, other); }\r\n\r\n public getAppearance(vp: Viewport, accepted: boolean): FeatureAppearance {\r\n const color = vp.hilite.color;\r\n const rgb = RgbColor.fromColorDef(accepted ? color.inverse() : color);\r\n const transparency = 0.25;\r\n const emphasized = true; // Necessary for obscured sub-entities w/SceneGraphic...\r\n let weight;\r\n\r\n switch (this.props.type) {\r\n case SubEntityType.Face:\r\n break;\r\n case SubEntityType.Edge:\r\n const edgeWeight = accepted ? 1 : 3;\r\n weight = this._geometry?.appearance?.weight ? Math.min(this._geometry.appearance.weight + edgeWeight, 31) : edgeWeight;\r\n break;\r\n case SubEntityType.Vertex:\r\n const vertexWeight = accepted ? 8 : 10;\r\n weight = this._geometry?.appearance?.weight ? Math.min(this._geometry.appearance.weight + vertexWeight, 31) : vertexWeight;\r\n break;\r\n }\r\n\r\n return FeatureAppearance.fromJSON({ rgb, transparency, weight, emphasized, nonLocatable: true });\r\n }\r\n\r\n public async createGraphic(iModel: IModelConnection): Promise<boolean> {\r\n if (undefined === this._geometry?.graphic)\r\n return false;\r\n\r\n if (undefined === this._graphicsProvider)\r\n this._graphicsProvider = new ElementGeometryGraphicsProvider(iModel);\r\n\r\n return this._graphicsProvider.createGraphic(this._geometry.graphic);\r\n }\r\n\r\n public cleanupGraphic(): void {\r\n if (undefined === this._graphicsProvider)\r\n return;\r\n this._graphicsProvider.cleanupGraphic();\r\n this._graphicsProvider = undefined;\r\n }\r\n\r\n public get hasGraphic(): boolean {\r\n return (undefined !== this._graphicsProvider?.graphic);\r\n }\r\n\r\n public display(context: DecorateContext, accepted: boolean): void {\r\n if (undefined === this._graphicsProvider?.graphic)\r\n return;\r\n\r\n const range = (this._geometry?.range ? Range3d.fromJSON(this._geometry.range) : undefined);\r\n const pixelSize = context.viewport.getPixelSizeAtPoint(range ? range.center : undefined);\r\n const offsetDir = context.viewport.view.getZVector();\r\n offsetDir.scaleToLength(3 * pixelSize, offsetDir);\r\n const offsetTrans = Transform.createTranslation(offsetDir);\r\n\r\n const appearanceProvider = FeatureAppearanceProvider.supplement((app: FeatureAppearance) => {\r\n return app.extendAppearance(this.getAppearance(context.viewport, accepted));\r\n });\r\n\r\n this._graphicsProvider.addDecoration(context, GraphicType.Scene, offsetTrans, { appearanceProvider });\r\n }\r\n}\r\n\r\n/** @alpha Base class for tools that want to use the backend geometry cache. */\r\nexport abstract class ElementGeometryCacheTool extends ElementSetTool implements FeatureOverrideProvider {\r\n protected _startedCmd?: string;\r\n protected readonly _checkedIds = new Map<Id64String, boolean>();\r\n protected _graphicsProvider?: ElementGeometryGraphicsProvider;\r\n protected _graphicsPending?: true;\r\n protected _firstResult = true;\r\n protected _agendaAppearanceDefault?: FeatureAppearance;\r\n protected _agendaAppearanceDynamic?: FeatureAppearance;\r\n\r\n protected allowView(vp: Viewport) { return vp.view.is3d(); }\r\n public override isCompatibleViewport(vp: Viewport | undefined, isSelectedViewChange: boolean): boolean { return (super.isCompatibleViewport(vp, isSelectedViewChange) && undefined !== vp && this.allowView(vp)); }\r\n\r\n protected async startCommand(): Promise<string> {\r\n if (undefined !== this._startedCmd)\r\n return this._startedCmd;\r\n return EditTools.startCommand<string>(editorBuiltInCmdIds.cmdSolidModeling, this.iModel.key);\r\n }\r\n\r\n public static callCommand<T extends keyof SolidModelingCommandIpc>(method: T, ...args: Parameters<SolidModelingCommandIpc[T]>): ReturnType<SolidModelingCommandIpc[T]> {\r\n return EditTools.callCommand(method, ...args) as ReturnType<SolidModelingCommandIpc[T]>;\r\n }\r\n\r\n protected agendaAppearance(isDynamics: boolean): FeatureAppearance {\r\n if (isDynamics) {\r\n if (undefined === this._agendaAppearanceDynamic)\r\n this._agendaAppearanceDynamic = FeatureAppearance.fromTransparency(0.0);\r\n\r\n return this._agendaAppearanceDynamic;\r\n }\r\n\r\n if (undefined === this._agendaAppearanceDefault)\r\n this._agendaAppearanceDefault = FeatureAppearance.fromTransparency(0.9);\r\n\r\n return this._agendaAppearanceDefault;\r\n }\r\n\r\n protected get wantAgendaAppearanceOverride(): boolean { return false; }\r\n\r\n public addFeatureOverrides(overrides: FeatureSymbology.Overrides, _vp: Viewport): void {\r\n if (this.agenda.isEmpty)\r\n return;\r\n\r\n const appearance = this.agendaAppearance(false);\r\n this.agenda.elements.forEach((elementId) => { overrides.override({ elementId, appearance }); });\r\n }\r\n\r\n protected updateAgendaAppearanceProvider(drop?: true): void {\r\n if (!this.wantAgendaAppearanceOverride)\r\n return;\r\n\r\n for (const vp of IModelApp.viewManager) {\r\n if (!this.allowView(vp))\r\n continue;\r\n\r\n if (drop || this.agenda.isEmpty)\r\n vp.dropFeatureOverrideProvider(this);\r\n else if (!vp.addFeatureOverrideProvider(this))\r\n vp.setFeatureOverrideProviderChanged();\r\n }\r\n }\r\n\r\n protected get geometryCacheFilter(): ElementGeometryCacheFilter | undefined { return undefined; }\r\n protected onGeometryCacheFilterChanged(): void { this._checkedIds.clear(); }\r\n\r\n protected async createElementGeometryCache(id: Id64String): Promise<boolean> {\r\n // NOTE: Creates cache if it doesn't already exist then test new or existing cache against filter...\r\n try {\r\n this._startedCmd = await this.startCommand();\r\n return await ElementGeometryCacheTool.callCommand(\"createElementGeometryCache\", id, this.geometryCacheFilter);\r\n } catch (err) {\r\n return false;\r\n }\r\n }\r\n\r\n protected async acceptElementForOperation(id: Id64String): Promise<boolean> {\r\n if (Id64.isInvalid(id) || Id64.isTransient(id))\r\n return false;\r\n\r\n let accept = this._checkedIds.get(id);\r\n\r\n if (undefined === accept) {\r\n if (this.agenda.isEmpty && this._checkedIds.size > 1000)\r\n this._checkedIds.clear(); // Limit auto-locate cache size to something reasonable...\r\n\r\n accept = await this.createElementGeometryCache(id);\r\n this._checkedIds.set(id, accept);\r\n }\r\n\r\n return accept;\r\n }\r\n\r\n protected override async isElementValidForOperation(hit: HitDetail, out?: LocateResponse): Promise<boolean> {\r\n if (!await super.isElementValidForOperation(hit, out))\r\n return false;\r\n\r\n return this.acceptElementForOperation(hit.sourceId);\r\n }\r\n\r\n protected async postFilterIds(arg: Id64Arg): Promise<Id64Arg> {\r\n const ids: Id64Array = [];\r\n\r\n for (const id of Id64.iterable(arg)) {\r\n if (await this.acceptElementForOperation(id))\r\n ids.push(id);\r\n }\r\n\r\n return ids;\r\n }\r\n\r\n protected override async getGroupIds(id: Id64String): Promise<Id64Arg> {\r\n return this.postFilterIds(await super.getGroupIds(id));\r\n }\r\n\r\n protected override async getSelectionSetCandidates(ss: SelectionSet): Promise<Id64Arg> {\r\n return this.postFilterIds(await super.getSelectionSetCandidates(ss));\r\n }\r\n\r\n protected override async getDragSelectCandidates(vp: Viewport, origin: Point3d, corner: Point3d, method: SelectionMethod, overlap: boolean): Promise<Id64Arg> {\r\n return this.postFilterIds(await super.getDragSelectCandidates(vp, origin, corner, method, overlap));\r\n }\r\n\r\n public override onDynamicFrame(_ev: BeButtonEvent, context: DynamicsContext): void {\r\n if (undefined === this._graphicsProvider)\r\n return;\r\n\r\n if (!this.wantAgendaAppearanceOverride)\r\n return this._graphicsProvider.addGraphic(context);\r\n\r\n const appearanceProvider = FeatureAppearanceProvider.supplement((app: FeatureAppearance) => {\r\n return app.extendAppearance(this.agendaAppearance(true));\r\n });\r\n\r\n this._graphicsProvider.addGraphic(context, undefined, { appearanceProvider });\r\n }\r\n\r\n public override async onMouseMotion(ev: BeButtonEvent): Promise<void> {\r\n return this.updateGraphic(ev, IModelApp.viewManager.inDynamicsMode);\r\n }\r\n\r\n protected async getGraphicData(_ev: BeButtonEvent): Promise<Uint8Array | undefined> { return undefined; }\r\n\r\n protected async updateGraphic(ev: BeButtonEvent, isDynamics: boolean): Promise<void> {\r\n if (!isDynamics || this._graphicsPending)\r\n return; // Continue displaying previous graphic if new graphic is still pending...\r\n\r\n this._graphicsPending = true;\r\n const graphicData = await this.getGraphicData(ev);\r\n this._graphicsPending = undefined;\r\n\r\n if (undefined !== graphicData) {\r\n if (this._firstResult) {\r\n this.updateAgendaAppearanceProvider();\r\n this._firstResult = false;\r\n }\r\n return this.createGraphic(graphicData);\r\n }\r\n\r\n if (undefined !== this._graphicsProvider)\r\n this._graphicsProvider.cleanupGraphic();\r\n }\r\n\r\n protected async createGraphic(graphicData: Uint8Array): Promise<void> {\r\n if (undefined === this._graphicsProvider)\r\n this._graphicsProvider = new ElementGeometryGraphicsProvider(this.iModel);\r\n\r\n await this._graphicsProvider.createGraphic(graphicData);\r\n }\r\n\r\n protected clearGraphic(): void {\r\n if (undefined === this._graphicsProvider)\r\n return;\r\n this._graphicsProvider.cleanupGraphic();\r\n this._graphicsProvider = undefined;\r\n }\r\n\r\n protected async clearElementGeometryCache(): Promise<void> {\r\n try {\r\n this._startedCmd = await this.startCommand();\r\n await ElementGeometryCacheTool.callCommand(\"clearElementGeometryCache\");\r\n } catch (err) { }\r\n }\r\n\r\n public override async onUnsuspend(): Promise<void> {\r\n if (!this._firstResult)\r\n this.updateAgendaAppearanceProvider();\r\n return super.onUnsuspend();\r\n }\r\n\r\n public override async onSuspend(): Promise<void> {\r\n if (!this._firstResult)\r\n this.updateAgendaAppearanceProvider(true);\r\n return super.onSuspend();\r\n }\r\n\r\n public override async onPostInstall(): Promise<void> {\r\n await super.onPostInstall();\r\n if (this.wantAgendaAppearanceOverride)\r\n this.agenda.manageHiliteState = false;\r\n }\r\n\r\n public override async onCleanup(): Promise<void> {\r\n await super.onCleanup();\r\n await this.clearElementGeometryCache();\r\n this.updateAgendaAppearanceProvider(true);\r\n this.clearGraphic();\r\n }\r\n}\r\n\r\n/** @alpha Base class for tools that need to locate faces, edges, and vertices. */\r\nexport abstract class LocateSubEntityTool extends ElementGeometryCacheTool {\r\n protected _currentSubEntity?: SubEntityData;\r\n protected _acceptedSubEntities: SubEntityData[] = [];\r\n protected _locatedSubEntities?: SubEntityLocationProps[];\r\n protected readonly _summaryIds = new Map<Id64String, BRepEntityType[]>();\r\n\r\n protected override get wantAgendaAppearanceOverride(): boolean { return true; }\r\n protected get wantGeometrySummary(): boolean { return false; }\r\n protected get wantSubEntitySnap(): boolean { return false; }\r\n\r\n protected wantSubEntityType(type: SubEntityType): boolean { return SubEntityType.Face === type; }\r\n protected getMaximumSubEntityHits(type: SubEntityType): number { return this.wantSubEntityType(type) ? 25 : 0; }\r\n\r\n protected get requiredSubEntityCount(): number { return 1; }\r\n protected get haveAcceptedSubEntities(): boolean { return (0 !== this._acceptedSubEntities.length); }\r\n protected get inhibitSubEntityDisplay(): boolean { return this.isDynamicsStarted; }\r\n\r\n protected get allowSubEntityControlSelect(): boolean { return true; }\r\n protected get allowSubEntityControlDeselect(): boolean { return this.allowSubEntityControlSelect; }\r\n protected get allowSubEntitySelectNext(): boolean { return !this.isDynamicsStarted; }\r\n\r\n protected getBRepEntityTypeForSubEntity(id: Id64String, subEntity: SubEntityProps): BRepEntityType {\r\n const summary = this._summaryIds.get(id);\r\n\r\n if (undefined === summary)\r\n return BRepEntityType.Invalid;\r\n\r\n const index = (undefined !== subEntity.index ? subEntity.index : 0);\r\n\r\n if (index >= summary.length)\r\n return BRepEntityType.Invalid;\r\n\r\n return summary[index];\r\n }\r\n\r\n protected async createElementGeometrySummary(id: Id64String): Promise<boolean> {\r\n let summary = this._summaryIds.get(id);\r\n\r\n if (undefined === summary) {\r\n if (this.agenda.isEmpty && this._summaryIds.size > 1000)\r\n this._summaryIds.clear(); // Limit auto-locate cache size to something reasonable...\r\n\r\n try {\r\n this._startedCmd = await this.startCommand();\r\n if (undefined === (summary = await ElementGeometryCacheTool.callCommand(\"summarizeElementGeometryCache\", id)))\r\n return false;\r\n } catch (err) {\r\n return false;\r\n }\r\n\r\n this._summaryIds.set(id, summary);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n protected override async createElementGeometryCache(id: Id64String): Promise<boolean> {\r\n const accept = await super.createElementGeometryCache(id);\r\n return (accept && this.wantGeometrySummary ? this.createElementGeometrySummary(id) : accept);\r\n }\r\n\r\n protected getAcceptedSubEntityData(index: number = -1): SubEntityData | undefined {\r\n if (-1 === index)\r\n index = this._acceptedSubEntities.length - 1;\r\n\r\n if (index < 0 || index > this._acceptedSubEntities.length - 1)\r\n return undefined;\r\n\r\n return this._acceptedSubEntities[index];\r\n }\r\n\r\n protected getAcceptedSubEntities(): SubEntityProps[] {\r\n const accepted: SubEntityProps[] = [];\r\n this._acceptedSubEntities.forEach((entry) => { accepted.push(entry.props); });\r\n return accepted;\r\n }\r\n\r\n protected drawSubEntity(context: DecorateContext, subEntity: SubEntityData, accepted: boolean): void {\r\n subEntity.display(context, accepted);\r\n }\r\n\r\n protected drawAcceptedSubEntities(context: DecorateContext): void {\r\n this._acceptedSubEntities.forEach((entry) => { this.drawSubEntity(context, entry, true); });\r\n }\r\n\r\n public override decorate(context: DecorateContext): void {\r\n if (this.inhibitSubEntityDisplay || !this.allowView(context.viewport))\r\n return;\r\n\r\n if (this.haveAcceptedSubEntities)\r\n this.drawAcceptedSubEntities(context);\r\n\r\n if (undefined !== this._currentSubEntity)\r\n this.drawSubEntity(context, this._currentSubEntity, false);\r\n }\r\n\r\n public override decorateSuspended(context: DecorateContext): void {\r\n if (this.inhibitSubEntityDisplay || !this.allowView(context.viewport))\r\n return;\r\n\r\n if (this.haveAcceptedSubEntities)\r\n this.drawAcceptedSubEntities(context);\r\n }\r\n\r\n protected getLocateAperture(ev: BeButtonEvent): number {\r\n if (undefined === ev.viewport)\r\n return 0.0;\r\n\r\n return ev.viewport.pixelsFromInches(InputSource.Touch === ev.inputSource ? IModelApp.locateManager.touchApertureInches : IModelApp.locateManager.apertureInches);\r\n }\r\n\r\n protected getMaxRayDistance(ev: BeButtonEvent, aperture: number): number {\r\n if (undefined === ev.viewport)\r\n return 0.0;\r\n\r\n // NOTE: Compute a world coordinate radius for ray test, try getting aperature size at point on element...\r\n const hit = IModelApp.accuSnap.currHit;\r\n const vec: Point3d[] = [];\r\n\r\n vec[0] = ev.viewport.worldToView(hit ? hit.hitPoint : ev.point);\r\n vec[1] = vec[0].clone(); vec[1].x += 1;\r\n ev.viewport.viewToWorldArray(vec);\r\n\r\n // The edge and vertex hits get post-filtered on xy distance, so this is fine for perspective views...\r\n return (aperture * vec[0].distance(vec[1]));\r\n }\r\n\r\n protected getRayOrigin(ev: BeButtonEvent): Point3d {\r\n const spacePoint = ev.point.clone();\r\n const vp = ev.viewport;\r\n\r\n if (undefined === vp)\r\n return spacePoint;\r\n\r\n vp.worldToNpc(spacePoint, spacePoint);\r\n spacePoint.z = 1.0;\r\n vp.npcToWorld(spacePoint, spacePoint);\r\n\r\n return spacePoint;\r\n }\r\n\r\n protected wantHiddenEdges(vp: Viewport): boolean {\r\n return vp.viewFlags.hiddenEdgesVisible();\r\n }\r\n\r\n protected getSubEntityFilter(): SubEntityFilter | undefined { return undefined; }\r\n\r\n protected async pickSubEntities(id: Id64String, boresite: Ray3d, maxFace: number, maxEdge: number, maxVertex: number, maxDistance: number, hiddenEdgesVisible: boolean, filter?: SubEntityFilter): Promise<SubEntityLocationProps[] | undefined> {\r\n try {\r\n this._startedCmd = await this.startCommand();\r\n const opts: LocateSubEntityProps = {\r\n maxFace,\r\n maxEdge,\r\n maxVertex,\r\n maxDistance,\r\n hiddenEdgesVisible,\r\n filter,\r\n };\r\n return await ElementGeometryCacheTool.callCommand(\"locateSubEntities\", id, boresite.origin, boresite.direction, opts);\r\n } catch (err) {\r\n return undefined;\r\n }\r\n }\r\n\r\n protected async doPickSubEntities(id: Id64String, ev: BeButtonEvent): Promise<SubEntityLocationProps[] | undefined> {\r\n const vp = ev.viewport;\r\n if (undefined === vp)\r\n return undefined;\r\n\r\n const maxFace = this.getMaximumSubEntityHits(SubEntityType.Face);\r\n const maxEdge = this.getMaximumSubEntityHits(SubEntityType.Edge);\r\n const maxVertex = this.getMaximumSubEntityHits(SubEntityType.Vertex);\r\n\r\n if (0 === maxFace && 0 === maxEdge && 0 === maxVertex)\r\n return undefined;\r\n\r\n const aperture = this.getLocateAperture(ev);\r\n const maxDistance = this.getMaxRayDistance(ev, aperture);\r\n const spacePoint = this.getRayOrigin(ev);\r\n const boresite = AccuDrawHintBuilder.getBoresite(spacePoint, vp);\r\n const hiddenEdgesVisible = this.wantHiddenEdges(vp);\r\n const filter = this.getSubEntityFilter();\r\n\r\n let hits = await this.pickSubEntities(id, boresite, maxFace, maxEdge, maxVertex, maxDistance, hiddenEdgesVisible, filter);\r\n\r\n // NOTE: Remove erroneous edge/vertex hits in perspective views by checking real xy distance to hit point...\r\n if (undefined === hits || !vp.isCameraOn)\r\n return hits;\r\n\r\n if (maxEdge > 0 && hits.length > 1) {\r\n const edgeApertureSquared = (aperture * aperture);\r\n const vertexApertureSquared = ((aperture * 2.0) * (aperture * 2.0));\r\n\r\n const e2 = Math.pow(aperture, 2);\r\n const v2 = Math.pow(aperture * 2.0, 2);\r\n\r\n if (e2 !== edgeApertureSquared || v2 !== vertexApertureSquared)\r\n return hits;\r\n\r\n const rayOrigin = vp.worldToView(boresite.origin);\r\n\r\n hits = hits.filter((hit) => {\r\n if (SubEntityType.Face === hit.subEntity.type)\r\n return true;\r\n\r\n const hitPoint = vp.worldToView(Point3d.fromJSON(hit.point));\r\n const distance = hitPoint.distanceSquaredXY(rayOrigin);\r\n\r\n return (distance <= (SubEntityType.Edge === hit.subEntity.type ? edgeApertureSquared : vertexApertureSquared));\r\n });\r\n }\r\n\r\n return hits;\r\n }\r\n\r\n protected async createSubEntityData(id: Id64String, hit: SubEntityLocationProps): Promise<SubEntityData> {\r\n const data = new SubEntityData(hit.subEntity);\r\n const chordTolerance = (this.targetView ? computeChordToleranceFromPoint(this.targetView, Point3d.fromJSON(hit.point)) : undefined);\r\n\r\n await this.createSubEntityGraphic(id, data, chordTolerance);\r\n\r\n return data;\r\n }\r\n\r\n /** Append specified sub-entity to accepted array. */\r\n protected async addSubEntity(id: Id64String, props: SubEntityLocationProps): Promise<void> {\r\n this._acceptedSubEntities.push(await this.createSubEntityData(id, props));\r\n }\r\n\r\n /** Remove specified sub-entity from accepted array, or pop last sub-entity if undefined. */\r\n protected async removeSubEntity(_id: Id64String, props?: SubEntityLocationProps): Promise<void> {\r\n if (undefined !== props)\r\n this._acceptedSubEntities = this._acceptedSubEntities.filter((entry) => !isSameSubEntity(entry.props, props.subEntity));\r\n else\r\n this._acceptedSubEntities.pop();\r\n }\r\n\r\n /** Locate sub-entities for the most recently added (last) agenda entry. Tool sub-classes that wish to identity\r\n * sub-entities from multiple elements are responsible for maintaining the sub-entities per-element.\r\n */\r\n protected async doLocateSubEntity(ev: BeButtonEvent, newSearch: boolean): Promise<boolean> {\r\n if (this.agenda.isEmpty || undefined === ev.viewport)\r\n return false;\r\n\r\n const id = this.agenda.elements[this.agenda.length - 1];\r\n\r\n if (newSearch) {\r\n this._locatedSubEntities = await this.doPickSubEntities(id, ev);\r\n if (undefined === this._locatedSubEntities || 0 === this._locatedSubEntities.length)\r\n return false;\r\n\r\n /** NOTE: Set last button location to point on sub-entity when not snapping.\r\n * If dynamics are enabled on this event, onDynamicFrame is called with this location.\r\n */\r\n if (CoordSource.ElemSnap !== ev.coordsFrom) {\r\n ev.point.setFrom(Point3d.fromJSON(this._locatedSubEntities[0].point));\r\n IModelApp.toolAdmin.setAdjustedDataPoint(ev);\r\n }\r\n } else {\r\n await this.removeSubEntity(id);\r\n }\r\n\r\n const hit = this._locatedSubEntities?.shift();\r\n if (undefined !== hit) {\r\n if (undefined === this._acceptedSubEntities.find((entry) => isSameSubEntity(entry.props, hit.subEntity)))\r\n await this.addSubEntity(id, hit);\r\n else if (this.allowSubEntityControlDeselect)\r\n await this.removeSubEntity(id, hit);\r\n }\r\n\r\n IModelApp.viewManager.invalidateDecorationsAllViews();\r\n return true;\r\n }\r\n\r\n protected override async chooseNextHit(ev: BeButtonEvent): Promise<EventHandled> {\r\n if (!this.haveAcceptedSubEntities)\r\n return super.chooseNextHit(ev);\r\n\r\n if (!this.allowSubEntitySelectNext) {\r\n await this.onReinitialize(); // Don't cycle through hits after starting dynamics...\r\n } else {\r\n await this.doLocateSubEntity(ev, false);\r\n if (!this.haveAcceptedSubEntities)\r\n await this.onReinitialize();\r\n }\r\n\r\n return EventHandled.No;\r\n }\r\n\r\n protected get wantAdditionalSubEntities(): boolean {\r\n return (this._acceptedSubEntities.length < this.requiredSubEntityCount || (this.allowSubEntityControlSelect && this.isControlDown));\r\n }\r\n\r\n protected override async gatherInput(ev: BeButtonEvent): Promise<EventHandled | undefined> {\r\n if (this.wantAdditionalSubEntities) {\r\n await this.doLocateSubEntity(ev, true);\r\n\r\n if (this.wantAdditionalSubEntities) {\r\n this.setupAndPromptForNextAction();\r\n return EventHandled.No;\r\n }\r\n\r\n this.clearCurrentSubEntity();\r\n }\r\n\r\n return super.gatherInput(ev);\r\n }\r\n\r\n protected getCurrentElement(): Id64String | undefined {\r\n if (!this.agenda.isEmpty)\r\n return this.agenda.elements[this.agenda.length - 1];\r\n\r\n const hit = IModelApp.accuSnap.currHit;\r\n return (undefined !== hit && hit.isElementHit ? hit.sourceId : undefined);\r\n }\r\n\r\n protected clearCurrentSubEntity(): void {\r\n if (undefined === this._currentSubEntity)\r\n return;\r\n this._currentSubEntity.cleanupGraphic();\r\n this._currentSubEntity = undefined;\r\n }\r\n\r\n protected async setCurrentSubEntity(id: Id64String, hit: SubEntityLocationProps, chordTolerance?: number): Promise<boolean> {\r\n if (undefined === this._currentSubEntity)\r\n this._currentSubEntity = new SubEntityData(hit.subEntity);\r\n else\r\n this._currentSubEntity.props = hit.subEntity;\r\n\r\n return this.createSubEntityGraphic(id, this._currentSubEntity, chordTolerance);\r\n }\r\n\r\n protected async changeCurrentSubEntity(id?: Id64String, current?: SubEntityLocationProps, chordTolerance?: number): Promise<boolean> {\r\n if (undefined === id || undefined === current) {\r\n if (undefined === this._currentSubEntity || !this._currentSubEntity.hasGraphic)\r\n return false;\r\n this._currentSubEntity.cleanupGraphic();\r\n return true;\r\n }\r\n\r\n if (undefined !== this._currentSubEntity && this._currentSubEntity.hasGraphic && this._currentSubEntity.isSame(current.subEntity))\r\n return false;\r\n\r\n return this.setCurrentSubEntity(id, current, chordTolerance);\r\n }\r\n\r\n protected async updateCurrentSubEntity(ev: BeButtonEvent): Promise<boolean> {\r\n if (undefined === ev.viewport)\r\n return false;\r\n\r\n const id = this.wantAdditionalSubEntities ? this.getCurrentElement() : undefined;\r\n if (undefined === id)\r\n return this.changeCurrentSubEntity();\r\n\r\n const current = await this.doPickSubEntities(id, ev);\r\n const chordTolerance = current ? computeChordToleranceFromPoint(ev.viewport, Point3d.fromJSON(current[0].point)) : 0.0;\r\n\r\n if (!await this.changeCurrentSubEntity(id, current ? current[0] : undefined, chordTolerance))\r\n return false;\r\n\r\n IModelApp.viewManager.invalidateDecorationsAllViews();\r\n return true;\r\n }\r\n\r\n protected async createSubEntityGraphic(id: Id64String, data: SubEntityData, chordTolerance?: number): Promise<boolean> {\r\n try {\r\n const opts: ElementGeometryResultOptions = {\r\n wantGraphic: true,\r\n wantRange: true,\r\n wantAppearance: true,\r\n chordTolerance,\r\n };\r\n\r\n data.chordTolerance = chordTolerance;\r\n data.geometry = await ElementGeometryCacheTool.callCommand(\"getSubEntityGeometry\", id, data.props, opts);\r\n\r\n return await data.createGraphic(this.iModel);\r\n } catch (err) {\r\n return false;\r\n }\r\n }\r\n\r\n protected override async updateGraphic(ev: BeButtonEvent, isDynamics: boolean): Promise<void> {\r\n if (isDynamics)\r\n return super.updateGraphic(ev, isDynamics);\r\n\r\n await this.updateCurrentSubEntity(ev);\r\n }\r\n\r\n protected override async getGraphicData(ev: BeButtonEvent): Promise<Uint8Array | undefined> {\r\n const result = await this.applyAgendaOperation(ev, false);\r\n return result?.graphic;\r\n }\r\n\r\n protected async applyAgendaOperation(_ev: BeButtonEvent, _isAccept: boolean): Promise<ElementGeometryResultProps | undefined> { return undefined; }\r\n\r\n public override async processAgenda(ev: BeButtonEvent): Promise<void> {\r\n const result = await this.applyAgendaOperation(ev, true);\r\n if (result?.elementId)\r\n await this.saveChanges();\r\n }\r\n\r\n public override async onModifierKeyTransition(wentDown: boolean, modifier: BeModifierKeys, event: KeyboardEvent): Promise<EventHandled> {\r\n if (EventHandled.Yes === await super.onModifierKeyTransition(wentDown, modifier, event))\r\n return EventHandled.Yes;\r\n\r\n if (BeModifierKeys.Control !== modifier)\r\n return EventHandled.No;\r\n\r\n if (IModelApp.toolAdmin.isLocateCircleOn === this.wantAdditionalSubEntities)\r\n return EventHandled.No;\r\n\r\n this.setupAndPromptForNextAction();\r\n return EventHandled.Yes;\r\n }\r\n\r\n public override changeLocateState(enableLocate: boolean, enableSnap?: boolean, cursor?: string, coordLockOvr?: CoordinateLockOverrides): void {\r\n super.changeLocateState(enableLocate, enableSnap, cursor, coordLockOvr);\r\n\r\n // Keep showing locate circle when identifing sub-entities even if done locating elements...\r\n if (!IModelApp.toolAdmin.isLocateCircleOn && this.wantAdditionalSubEntities)\r\n IModelApp.toolAdmin.setLocateCircleOn(true);\r\n }\r\n\r\n protected override get shouldEnableSnap(): boolean {\r\n if (this.isSelectByPoints || !this.wantAccuSnap)\r\n return false;\r\n\r\n if (this.isDynamicsStarted)\r\n return true;\r\n\r\n const isCtrlSelect = (this.isControlDown && (this.controlKeyContinuesSelection || this.allowSubEntityControlSelect));\r\n\r\n if (isCtrlSelect || this.wantAdditionalElements || this.wantAdditionalSubEntities)\r\n return this.wantSubEntitySnap;\r\n\r\n return !this.wantSubEntitySnap;\r\n }\r\n\r\n protected setupAccuDraw(): void { }\r\n\r\n protected override setupAndPromptForNextAction(): void {\r\n this.setupAccuDraw();\r\n super.setupAndPromptForNextAction();\r\n }\r\n\r\n protected clearSubEntityGraphics(): void {\r\n if (undefined !== this._currentSubEntity)\r\n this._currentSubEntity.cleanupGraphic();\r\n this._acceptedSubEntities.forEach((entry) => { entry.cleanupGraphic(); });\r\n }\r\n\r\n public override async onCleanup(): Promise<void> {\r\n this.clearSubEntityGraphics();\r\n return super.onCleanup();\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"ElementGeometryTool.js","sourceRoot":"","sources":["../../src/ElementGeometryTool.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAA2E;AAC3E,wDAAgT;AAChT,oDAA4F;AAC5F,wDAA0E;AAC1E,wDAAob;AACpb,2DAAqE;AACrE,yCAAuC;AAEvC,aAAa;AACb,MAAa,+BAA+B;IAI1C,YAAY,MAAwB;QAClC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,aAAa,CAAC,WAAuB;QAChD,IAAI;YACF,MAAM,OAAO,GAAG,MAAM,IAAA,mCAAmB,EAAC,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE,mBAAI,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3H,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,yBAAS,CAAC,YAAY,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC9F,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,OAAO,CAAC,SAAS,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC;SACtD;QAAC,MAAM;YACN,OAAO,KAAK,CAAC;SACd;IACH,CAAC;IAED;;OAEG;IACI,cAAc;QACnB,IAAI,SAAS,KAAK,IAAI,CAAC,OAAO;YAC5B,OAAO;QACT,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;IAC3B,CAAC;IAEM,UAAU,CAAC,OAAwB,EAAE,SAAqB,EAAE,IAA2B;QAC5F,IAAI,SAAS,KAAK,IAAI,CAAC,OAAO;YAC5B,OAAO;QAET,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,IAAI,EAAE;YACjD,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACjC,OAAO;SACR;QAED,MAAM,MAAM,GAAG,IAAI,6BAAa,CAAC,KAAK,CAAC,CAAC;QACxC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEzB,MAAM,aAAa,GAAG,OAAO,CAAC,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,yBAAS,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,CAAC;QACpH,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IACpC,CAAC;IAEM,aAAa,CAAC,OAAwB,EAAE,IAAiB,EAAE,SAAqB,EAAE,IAA2B;QAClH,IAAI,SAAS,KAAK,IAAI,CAAC,OAAO;YAC5B,OAAO;QAET,MAAM,MAAM,GAAG,IAAI,6BAAa,CAAC,KAAK,CAAC,CAAC;QACxC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEzB,MAAM,aAAa,GAAG,OAAO,CAAC,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,yBAAS,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,CAAC;QACpH,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAC7C,CAAC;CACF;AA1DD,0EA0DC;AAED,aAAa;AACb,SAAgB,eAAe,CAAC,CAAiB,EAAE,CAAiB;IAClE,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI;QACnB,OAAO,KAAK,CAAC;IACf,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE;QACf,OAAO,KAAK,CAAC;IACf,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,OAAO,KAAK,CAAC;IACf,OAAO,IAAI,CAAC;AACd,CAAC;AARD,0CAQC;AAED,aAAa;AACb,MAAa,aAAa;IAQxB,YAAY,KAAqB,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC;IAE3D,IAAW,KAAK,KAAqB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1D,IAAW,KAAK,CAAC,KAAqB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC;IAEvF,IAAW,QAAQ,KAAyC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IACpF,IAAW,QAAQ,CAAC,KAAyC,IAAI,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC;IAEnF,MAAM,CAAC,KAAqB,IAAa,OAAO,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAEtF,aAAa,CAAC,EAAY,EAAE,QAAiB;;QAClD,MAAM,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;QAC9B,MAAM,GAAG,GAAG,sBAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACtE,MAAM,YAAY,GAAG,IAAI,CAAC;QAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,wDAAwD;QACjF,IAAI,MAAM,CAAC;QAEX,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;YACvB,KAAK,6BAAa,CAAC,IAAI;gBACrB,MAAM;YACR,KAAK,6BAAa,CAAC,IAAI;gBACrB,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpC,MAAM,GAAG,CAAA,MAAA,MAAA,IAAI,CAAC,SAAS,0CAAE,UAAU,0CAAE,MAAM,EAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,GAAG,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;gBACvH,MAAM;YACR,KAAK,6BAAa,CAAC,MAAM;gBACvB,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvC,MAAM,GAAG,CAAA,MAAA,MAAA,IAAI,CAAC,SAAS,0CAAE,UAAU,0CAAE,MAAM,EAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,GAAG,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;gBAC3H,MAAM;SACT;QAED,OAAO,+BAAiB,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;IACnG,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,MAAwB;;QACjD,IAAI,SAAS,MAAK,MAAA,IAAI,CAAC,SAAS,0CAAE,OAAO,CAAA;YACvC,OAAO,KAAK,CAAC;QAEf,IAAI,SAAS,KAAK,IAAI,CAAC,iBAAiB;YACtC,IAAI,CAAC,iBAAiB,GAAG,IAAI,+BAA+B,CAAC,MAAM,CAAC,CAAC;QAEvE,OAAO,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACtE,CAAC;IAEM,cAAc;QACnB,IAAI,SAAS,KAAK,IAAI,CAAC,iBAAiB;YACtC,OAAO;QACT,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC;QACxC,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;IACrC,CAAC;IAED,IAAW,UAAU;;QACnB,OAAO,CAAC,SAAS,MAAK,MAAA,IAAI,CAAC,iBAAiB,0CAAE,OAAO,CAAA,CAAC,CAAC;IACzD,CAAC;IAEM,OAAO,CAAC,OAAwB,EAAE,QAAiB;;QACxD,IAAI,SAAS,MAAK,MAAA,IAAI,CAAC,iBAAiB,0CAAE,OAAO,CAAA;YAC/C,OAAO;QAET,MAAM,KAAK,GAAG,CAAC,CAAA,MAAA,IAAI,CAAC,SAAS,0CAAE,KAAK,EAAC,CAAC,CAAC,uBAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC3F,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACzF,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACrD,SAAS,CAAC,aAAa,CAAC,CAAC,GAAG,SAAS,EAAE,SAAS,CAAC,CAAC;QAClD,MAAM,WAAW,GAAG,yBAAS,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAE3D,MAAM,kBAAkB,GAAG,uCAAyB,CAAC,UAAU,CAAC,CAAC,GAAsB,EAAE,EAAE;YACzF,OAAO,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC9E,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,OAAO,EAAE,2BAAW,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,kBAAkB,EAAE,CAAC,CAAC;IACxG,CAAC;CACF;AA9ED,sCA8EC;AAED,+EAA+E;AAC/E,MAAsB,wBAAyB,SAAQ,8BAAc;IAArE;;QAEqB,gBAAW,GAAG,IAAI,GAAG,EAAuB,CAAC;QAGtD,iBAAY,GAAG,IAAI,CAAC;IAyMhC,CAAC;IArMW,SAAS,CAAC,EAAY,IAAI,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC5C,oBAAoB,CAAC,EAAwB,EAAE,oBAA6B,IAAa,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE,EAAE,oBAAoB,CAAC,IAAI,SAAS,KAAK,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzM,KAAK,CAAC,YAAY;QAC1B,IAAI,SAAS,KAAK,IAAI,CAAC,WAAW;YAChC,OAAO,IAAI,CAAC,WAAW,CAAC;QAC1B,OAAO,oBAAS,CAAC,YAAY,CAAS,mCAAmB,CAAC,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC/F,CAAC;IAEM,MAAM,CAAC,WAAW,CAA0C,MAAS,EAAE,GAAG,IAA4C;QAC3H,OAAO,oBAAS,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,IAAI,CAA2C,CAAC;IAC1F,CAAC;IAES,gBAAgB,CAAC,UAAmB;QAC5C,IAAI,UAAU,EAAE;YACd,IAAI,SAAS,KAAK,IAAI,CAAC,wBAAwB;gBAC7C,IAAI,CAAC,wBAAwB,GAAG,+BAAiB,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;YAE1E,OAAO,IAAI,CAAC,wBAAwB,CAAC;SACtC;QAED,IAAI,SAAS,KAAK,IAAI,CAAC,wBAAwB;YAC7C,IAAI,CAAC,wBAAwB,GAAG,+BAAiB,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAE1E,OAAO,IAAI,CAAC,wBAAwB,CAAC;IACvC,CAAC;IAED,IAAc,4BAA4B,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC;IAEhE,mBAAmB,CAAC,SAAqC,EAAE,GAAa;QAC7E,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO;YACrB,OAAO;QAET,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE,GAAG,SAAS,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClG,CAAC;IAES,8BAA8B,CAAC,IAAW;QAClD,IAAI,CAAC,IAAI,CAAC,4BAA4B;YACpC,OAAO;QAET,KAAK,MAAM,EAAE,IAAI,yBAAS,CAAC,WAAW,EAAE;YACtC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;gBACrB,SAAS;YAEX,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO;gBAC7B,EAAE,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC;iBAClC,IAAI,CAAC,EAAE,CAAC,0BAA0B,CAAC,IAAI,CAAC;gBAC3C,EAAE,CAAC,iCAAiC,EAAE,CAAC;SAC1C;IACH,CAAC;IAED,IAAc,mBAAmB,KAA6C,OAAO,SAAS,CAAC,CAAC,CAAC;IACvF,4BAA4B,KAAW,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAElE,KAAK,CAAC,0BAA0B,CAAC,EAAc;QACvD,oGAAoG;QACpG,IAAI;YACF,IAAI,CAAC,WAAW,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAC7C,OAAO,MAAM,wBAAwB,CAAC,WAAW,CAAC,4BAA4B,EAAE,EAAE,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;SAC/G;QAAC,OAAO,GAAG,EAAE;YACZ,OAAO,KAAK,CAAC;SACd;IACH,CAAC;IAES,KAAK,CAAC,yBAAyB,CAAC,EAAc;QACtD,IAAI,mBAAI,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,mBAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YAC5C,OAAO,KAAK,CAAC;QAEf,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEtC,IAAI,SAAS,KAAK,MAAM,EAAE;YACxB,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,IAAI;gBACrD,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,0DAA0D;YAEtF,MAAM,GAAG,MAAM,IAAI,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC;YACnD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;SAClC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAEkB,KAAK,CAAC,0BAA0B,CAAC,GAAc,EAAE,GAAoB;QACtF,IAAI,CAAC,MAAM,KAAK,CAAC,0BAA0B,CAAC,GAAG,EAAE,GAAG,CAAC;YACnD,OAAO,KAAK,CAAC;QAEf,OAAO,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtD,CAAC;IAES,KAAK,CAAC,aAAa,CAAC,GAAY;QACxC,MAAM,GAAG,GAAc,EAAE,CAAC;QAE1B,KAAK,MAAM,EAAE,IAAI,mBAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACnC,IAAI,MAAM,IAAI,CAAC,yBAAyB,CAAC,EAAE,CAAC;gBAC1C,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAChB;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAEkB,KAAK,CAAC,WAAW,CAAC,EAAc;QACjD,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;IACzD,CAAC;IAEkB,KAAK,CAAC,yBAAyB,CAAC,EAAgB;QACjE,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC,CAAC;IACvE,CAAC;IAEkB,KAAK,CAAC,uBAAuB,CAAC,EAAY,EAAE,MAAe,EAAE,MAAe,EAAE,MAAuB,EAAE,OAAgB;QACxI,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,uBAAuB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACtG,CAAC;IAEe,cAAc,CAAC,GAAkB,EAAE,OAAwB;QACzE,IAAI,SAAS,KAAK,IAAI,CAAC,iBAAiB;YACtC,OAAO;QAET,IAAI,CAAC,IAAI,CAAC,4BAA4B;YACpC,OAAO,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAEpD,MAAM,kBAAkB,GAAG,uCAAyB,CAAC,UAAU,CAAC,CAAC,GAAsB,EAAE,EAAE;YACzF,OAAO,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAChF,CAAC;IAEe,KAAK,CAAC,aAAa,CAAC,EAAiB;QACnD,OAAO,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,yBAAS,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IACtE,CAAC;IAES,KAAK,CAAC,cAAc,CAAC,GAAkB,IAAqC,OAAO,SAAS,CAAC,CAAC,CAAC;IAE/F,KAAK,CAAC,aAAa,CAAC,EAAiB,EAAE,UAAmB;QAClE,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,gBAAgB;YACtC,OAAO,CAAC,0EAA0E;QAEpF,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QAClD,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;QAElC,IAAI,SAAS,KAAK,WAAW,EAAE;YAC7B,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,IAAI,CAAC,8BAA8B,EAAE,CAAC;gBACtC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;aAC3B;YACD,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;SACxC;QAED,IAAI,SAAS,KAAK,IAAI,CAAC,iBAAiB;YACtC,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC;IAC5C,CAAC;IAES,KAAK,CAAC,aAAa,CAAC,WAAuB;QACnD,IAAI,SAAS,KAAK,IAAI,CAAC,iBAAiB;YACtC,IAAI,CAAC,iBAAiB,GAAG,IAAI,+BAA+B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE5E,MAAM,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAC1D,CAAC;IAES,YAAY;QACpB,IAAI,SAAS,KAAK,IAAI,CAAC,iBAAiB;YACtC,OAAO;QACT,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC;QACxC,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;IACrC,CAAC;IAES,KAAK,CAAC,yBAAyB;QACvC,IAAI;YACF,IAAI,CAAC,WAAW,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAC7C,MAAM,wBAAwB,CAAC,WAAW,CAAC,2BAA2B,CAAC,CAAC;SACzE;QAAC,OAAO,GAAG,EAAE,GAAG;IACnB,CAAC;IAEe,KAAK,CAAC,WAAW;QAC/B,IAAI,CAAC,IAAI,CAAC,YAAY;YACpB,IAAI,CAAC,8BAA8B,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;IAC7B,CAAC;IAEe,KAAK,CAAC,SAAS;QAC7B,IAAI,CAAC,IAAI,CAAC,YAAY;YACpB,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,CAAC;QAC5C,OAAO,KAAK,CAAC,SAAS,EAAE,CAAC;IAC3B,CAAC;IAEe,KAAK,CAAC,aAAa;QACjC,MAAM,KAAK,CAAC,aAAa,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,4BAA4B;YACnC,IAAI,CAAC,MAAM,CAAC,iBAAiB,GAAG,KAAK,CAAC;IAC1C,CAAC;IAEe,KAAK,CAAC,SAAS;QAC7B,MAAM,KAAK,CAAC,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACvC,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;CACF;AA9MD,4DA8MC;AAED,kFAAkF;AAClF,MAAsB,mBAAoB,SAAQ,wBAAwB;IAA1E;;QAEY,yBAAoB,GAAoB,EAAE,CAAC;QAGlC,gBAAW,GAAG,IAAI,GAAG,EAAgC,CAAC;IA2c3E,CAAC;IAzcC,IAAuB,4BAA4B,KAAc,OAAO,IAAI,CAAC,CAAC,CAAC;IAC/E,IAAc,mBAAmB,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC;IAC9D,IAAc,iBAAiB,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC;IAElD,iBAAiB,CAAC,IAAmB,IAAa,OAAO,6BAAa,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC;IACvF,uBAAuB,CAAC,IAAmB,IAAY,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEhH,IAAc,sBAAsB,KAAa,OAAO,CAAC,CAAC,CAAC,CAAC;IAC5D,IAAc,uBAAuB,KAAc,OAAO,CAAC,CAAC,KAAK,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACrG,IAAc,uBAAuB,KAAc,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAEnF,IAAc,2BAA2B,KAAc,OAAO,IAAI,CAAC,CAAC,CAAC;IACrE,IAAc,6BAA6B,KAAc,OAAO,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;IACnG,IAAc,wBAAwB,KAAc,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAE3E,6BAA6B,CAAC,EAAc,EAAE,SAAyB;QAC/E,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEzC,IAAI,SAAS,KAAK,OAAO;YACvB,OAAO,8BAAc,CAAC,OAAO,CAAC;QAEhC,MAAM,KAAK,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEpE,IAAI,KAAK,IAAI,OAAO,CAAC,MAAM;YACzB,OAAO,8BAAc,CAAC,OAAO,CAAC;QAEhC,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IAES,KAAK,CAAC,4BAA4B,CAAC,EAAc;QACzD,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEvC,IAAI,SAAS,KAAK,OAAO,EAAE;YACzB,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,IAAI;gBACrD,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,0DAA0D;YAEtF,IAAI;gBACF,IAAI,CAAC,WAAW,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC7C,IAAI,SAAS,KAAK,CAAC,OAAO,GAAG,MAAM,wBAAwB,CAAC,WAAW,CAAC,+BAA+B,EAAE,EAAE,CAAC,CAAC;oBAC3G,OAAO,KAAK,CAAC;aAChB;YAAC,OAAO,GAAG,EAAE;gBACZ,OAAO,KAAK,CAAC;aACd;YAED,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;SACnC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEkB,KAAK,CAAC,0BAA0B,CAAC,EAAc;QAChE,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC;QAC1D,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC/F,CAAC;IAES,wBAAwB,CAAC,QAAgB,CAAC,CAAC;QACnD,IAAI,CAAC,CAAC,KAAK,KAAK;YACd,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,CAAC;QAE/C,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC;YAC3D,OAAO,SAAS,CAAC;QAEnB,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IAES,sBAAsB;QAC9B,MAAM,QAAQ,GAAqB,EAAE,CAAC;QACtC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9E,OAAO,QAAQ,CAAC;IAClB,CAAC;IAES,aAAa,CAAC,OAAwB,EAAE,SAAwB,EAAE,QAAiB;QAC3F,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACvC,CAAC;IAES,uBAAuB,CAAC,OAAwB;QACxD,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9F,CAAC;IAEe,QAAQ,CAAC,OAAwB;QAC/C,IAAI,IAAI,CAAC,uBAAuB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC;YACnE,OAAO;QAET,IAAI,IAAI,CAAC,uBAAuB;YAC9B,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;QAExC,IAAI,SAAS,KAAK,IAAI,CAAC,iBAAiB;YACtC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;IAC/D,CAAC;IAEe,iBAAiB,CAAC,OAAwB;QACxD,IAAI,IAAI,CAAC,uBAAuB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC;YACnE,OAAO;QAET,IAAI,IAAI,CAAC,uBAAuB;YAC9B,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAES,iBAAiB,CAAC,EAAiB;QAC3C,IAAI,SAAS,KAAK,EAAE,CAAC,QAAQ;YAC3B,OAAO,GAAG,CAAC;QAEb,OAAO,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,2BAAW,CAAC,KAAK,KAAK,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,yBAAS,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC,CAAC,yBAAS,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;IACnK,CAAC;IAES,iBAAiB,CAAC,EAAiB,EAAE,QAAgB;QAC7D,IAAI,SAAS,KAAK,EAAE,CAAC,QAAQ;YAC3B,OAAO,GAAG,CAAC;QAEb,0GAA0G;QAC1G,MAAM,GAAG,GAAG,yBAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;QACvC,MAAM,GAAG,GAAc,EAAE,CAAC;QAE1B,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QAChE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACvC,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAElC,sGAAsG;QACtG,OAAO,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC;IAES,YAAY,CAAC,EAAiB;QACtC,MAAM,UAAU,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACpC,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC;QAEvB,IAAI,SAAS,KAAK,EAAE;YAClB,OAAO,UAAU,CAAC;QAEpB,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QACtC,UAAU,CAAC,CAAC,GAAG,GAAG,CAAC;QACnB,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAEtC,OAAO,UAAU,CAAC;IACpB,CAAC;IAES,eAAe,CAAC,EAAY;QACpC,OAAO,EAAE,CAAC,SAAS,CAAC,kBAAkB,EAAE,CAAC;IAC3C,CAAC;IAES,kBAAkB,KAAkC,OAAO,SAAS,CAAC,CAAC,CAAC;IAEvE,KAAK,CAAC,eAAe,CAAC,EAAc,EAAE,QAAe,EAAE,OAAe,EAAE,OAAe,EAAE,SAAiB,EAAE,WAAmB,EAAE,kBAA2B,EAAE,MAAwB;QAC9L,IAAI;YACF,IAAI,CAAC,WAAW,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAC7C,MAAM,IAAI,GAAyB;gBACjC,OAAO;gBACP,OAAO;gBACP,SAAS;gBACT,WAAW;gBACX,kBAAkB;gBAClB,MAAM;aACP,CAAC;YACF,OAAO,MAAM,wBAAwB,CAAC,WAAW,CAAC,mBAAmB,EAAE,EAAE,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;SACvH;QAAC,OAAO,GAAG,EAAE;YACZ,OAAO,SAAS,CAAC;SAClB;IACH,CAAC;IAES,KAAK,CAAC,iBAAiB,CAAC,EAAc,EAAE,EAAiB;QACjE,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC;QACvB,IAAI,SAAS,KAAK,EAAE;YAClB,OAAO,SAAS,CAAC;QAEnB,MAAM,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC,6BAAa,CAAC,IAAI,CAAC,CAAC;QACjE,MAAM,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC,6BAAa,CAAC,IAAI,CAAC,CAAC;QACjE,MAAM,SAAS,GAAG,IAAI,CAAC,uBAAuB,CAAC,6BAAa,CAAC,MAAM,CAAC,CAAC;QAErE,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,SAAS;YACnD,OAAO,SAAS,CAAC;QAEnB,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;QAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QACzD,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,mCAAmB,CAAC,WAAW,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACjE,MAAM,kBAAkB,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAEzC,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,CAAC,CAAC;QAE1H,4GAA4G;QAC5G,IAAI,SAAS,KAAK,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU;YACtC,OAAO,IAAI,CAAC;QAEd,IAAI,OAAO,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YAClC,MAAM,mBAAmB,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC;YAClD,MAAM,qBAAqB,GAAG,CAAC,CAAC,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC;YAEpE,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YACjC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;YAEvC,IAAI,EAAE,KAAK,mBAAmB,IAAI,EAAE,KAAK,qBAAqB;gBAC5D,OAAO,IAAI,CAAC;YAEd,MAAM,SAAS,GAAG,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAElD,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;gBACzB,IAAI,6BAAa,CAAC,IAAI,KAAK,GAAG,CAAC,SAAS,CAAC,IAAI;oBAC3C,OAAO,IAAI,CAAC;gBAEd,MAAM,QAAQ,GAAG,EAAE,CAAC,WAAW,CAAC,uBAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC7D,MAAM,QAAQ,GAAG,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;gBAEvD,OAAO,CAAC,QAAQ,IAAI,CAAC,6BAAa,CAAC,IAAI,KAAK,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC;YACjH,CAAC,CAAC,CAAC;SACJ;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAES,KAAK,CAAC,mBAAmB,CAAC,EAAc,EAAE,GAA2B;QAC7E,MAAM,IAAI,GAAG,IAAI,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC9C,MAAM,cAAc,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAA,kDAA8B,EAAC,IAAI,CAAC,UAAU,EAAE,uBAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAEpI,MAAM,IAAI,CAAC,sBAAsB,CAAC,EAAE,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QAE5D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,qDAAqD;IAC3C,KAAK,CAAC,YAAY,CAAC,EAAc,EAAE,KAA6B;QACxE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,mBAAmB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,4FAA4F;IAClF,KAAK,CAAC,eAAe,CAAC,GAAe,EAAE,KAA8B;QAC7E,IAAI,SAAS,KAAK,KAAK;YACrB,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;;YAExH,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,CAAC;IACpC,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,iBAAiB,CAAC,EAAiB,EAAE,SAAkB;;QACrE,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,SAAS,KAAK,EAAE,CAAC,QAAQ;YAClD,OAAO,KAAK,CAAC;QAEf,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAExD,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,mBAAmB,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAChE,IAAI,SAAS,KAAK,IAAI,CAAC,mBAAmB,IAAI,CAAC,KAAK,IAAI,CAAC,mBAAmB,CAAC,MAAM;gBACjF,OAAO,KAAK,CAAC;YAEf;;gBAEI;YACJ,IAAI,2BAAW,CAAC,QAAQ,KAAK,EAAE,CAAC,UAAU,EAAE;gBAC1C,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,uBAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;gBACtE,yBAAS,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;aAC9C;SACF;aAAM;YACL,MAAM,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;SAChC;QAED,MAAM,GAAG,GAAG,MAAA,IAAI,CAAC,mBAAmB,0CAAE,KAAK,EAAE,CAAC;QAC9C,IAAI,SAAS,KAAK,GAAG,EAAE;YACrB,IAAI,SAAS,KAAK,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;gBACtG,MAAM,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;iBAC9B,IAAI,IAAI,CAAC,6BAA6B;gBACzC,MAAM,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;SACvC;QAED,yBAAS,CAAC,WAAW,CAAC,6BAA6B,EAAE,CAAC;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;IAEkB,KAAK,CAAC,aAAa,CAAC,EAAiB;QACtD,IAAI,CAAC,IAAI,CAAC,uBAAuB;YAC/B,OAAO,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QAEjC,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE;YAClC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,sDAAsD;SACpF;aAAM;YACL,MAAM,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YACxC,IAAI,CAAC,IAAI,CAAC,uBAAuB;gBAC/B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;SAC/B;QAED,OAAO,4BAAY,CAAC,EAAE,CAAC;IACzB,CAAC;IAED,IAAc,yBAAyB;QACrC,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,IAAI,CAAC,sBAAsB,IAAI,CAAC,IAAI,CAAC,2BAA2B,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;IACtI,CAAC;IAEkB,KAAK,CAAC,WAAW,CAAC,EAAiB;QACpD,IAAI,IAAI,CAAC,yBAAyB,EAAE;YAClC,MAAM,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YAEvC,IAAI,IAAI,CAAC,yBAAyB,EAAE;gBAClC,IAAI,CAAC,2BAA2B,EAAE,CAAC;gBACnC,OAAO,4BAAY,CAAC,EAAE,CAAC;aACxB;YAED,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAC9B;QAED,OAAO,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IAES,iBAAiB;QACzB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO;YACtB,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAEtD,MAAM,GAAG,GAAG,yBAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;QACvC,OAAO,CAAC,SAAS,KAAK,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC5E,CAAC;IAES,qBAAqB;QAC7B,IAAI,SAAS,KAAK,IAAI,CAAC,iBAAiB;YACtC,OAAO;QACT,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC;QACxC,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;IACrC,CAAC;IAES,KAAK,CAAC,mBAAmB,CAAC,EAAc,EAAE,GAA2B,EAAE,cAAuB;QACtG,IAAI,SAAS,KAAK,IAAI,CAAC,iBAAiB;YACtC,IAAI,CAAC,iBAAiB,GAAG,IAAI,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;;YAE1D,IAAI,CAAC,iBAAiB,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC;QAE/C,OAAO,IAAI,CAAC,sBAAsB,CAAC,EAAE,EAAE,IAAI,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC;IACjF,CAAC;IAES,KAAK,CAAC,sBAAsB,CAAC,EAAe,EAAE,OAAgC,EAAE,cAAuB;QAC/G,IAAI,SAAS,KAAK,EAAE,IAAI,SAAS,KAAK,OAAO,EAAE;YAC7C,IAAI,SAAS,KAAK,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU;gBAC5E,OAAO,KAAK,CAAC;YACf,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC;SACb;QAED,IAAI,SAAS,KAAK,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC,UAAU,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;YAC/H,OAAO,KAAK,CAAC;QAEf,OAAO,IAAI,CAAC,mBAAmB,CAAC,EAAE,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;IAC/D,CAAC;IAES,KAAK,CAAC,sBAAsB,CAAC,EAAiB;QACtD,IAAI,SAAS,KAAK,EAAE,CAAC,QAAQ;YAC3B,OAAO,KAAK,CAAC;QAEf,MAAM,EAAE,GAAG,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACjF,IAAI,SAAS,KAAK,EAAE;YAClB,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAEvC,IAAI,IAAI,CAAC,wBAAwB;YAC/B,OAAO,KAAK,CAAC;QAEf,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;QAErC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACrD,MAAM,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,IAAA,kDAA8B,EAAC,EAAE,CAAC,QAAQ,EAAE,uBAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QACvH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QAEvG,IAAI,CAAC,wBAAwB,GAAG,SAAS,CAAC;QAE1C,IAAI,MAAM;YACR,yBAAS,CAAC,WAAW,CAAC,6BAA6B,EAAE,CAAC;QAExD,OAAO,MAAM,CAAC;IAChB,CAAC;IAES,KAAK,CAAC,sBAAsB,CAAC,EAAc,EAAE,IAAmB,EAAE,cAAuB;QACjG,IAAI;YACF,MAAM,IAAI,GAAiC;gBACzC,WAAW,EAAE,IAAI;gBACjB,SAAS,EAAE,IAAI;gBACf,cAAc,EAAE,IAAI;gBACpB,cAAc;aACf,CAAC;YAEF,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;YACrC,IAAI,CAAC,QAAQ,GAAG,MAAM,wBAAwB,CAAC,WAAW,CAAC,sBAAsB,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAEzG,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC9C;QAAC,OAAO,GAAG,EAAE;YACZ,OAAO,KAAK,CAAC;SACd;IACH,CAAC;IAEkB,KAAK,CAAC,aAAa,CAAC,EAAiB,EAAE,UAAmB;QAC3E,IAAI,UAAU;YACZ,OAAO,KAAK,CAAC,aAAa,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QAE7C,MAAM,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC;IAEkB,KAAK,CAAC,cAAc,CAAC,EAAiB;QACvD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC1D,OAAO,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,CAAC;IACzB,CAAC;IAES,KAAK,CAAC,oBAAoB,CAAC,GAAkB,EAAE,SAAkB,IAAqD,OAAO,SAAS,CAAC,CAAC,CAAC;IAEnI,KAAK,CAAC,aAAa,CAAC,EAAiB;QACnD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACzD,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS;YACnB,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;IAC7B,CAAC;IAEe,KAAK,CAAC,uBAAuB,CAAC,QAAiB,EAAE,QAAwB,EAAE,KAAoB;QAC7G,IAAI,4BAAY,CAAC,GAAG,KAAK,MAAM,KAAK,CAAC,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC;YACrF,OAAO,4BAAY,CAAC,GAAG,CAAC;QAE1B,IAAI,8BAAc,CAAC,OAAO,KAAK,QAAQ;YACrC,OAAO,4BAAY,CAAC,EAAE,CAAC;QAEzB,IAAI,yBAAS,CAAC,SAAS,CAAC,gBAAgB,KAAK,IAAI,CAAC,yBAAyB;YACzE,OAAO,4BAAY,CAAC,EAAE,CAAC;QAEzB,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,OAAO,4BAAY,CAAC,GAAG,CAAC;IAC1B,CAAC;IAEe,iBAAiB,CAAC,YAAqB,EAAE,UAAoB,EAAE,MAAe,EAAE,YAAsC;QACpI,KAAK,CAAC,iBAAiB,CAAC,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;QAExE,4FAA4F;QAC5F,IAAI,CAAC,yBAAS,CAAC,SAAS,CAAC,gBAAgB,IAAI,IAAI,CAAC,yBAAyB;YACzE,yBAAS,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;IAED,IAAuB,gBAAgB;QACrC,IAAI,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,YAAY;YAC7C,OAAO,KAAK,CAAC;QAEf,IAAI,IAAI,CAAC,iBAAiB;YACxB,OAAO,IAAI,CAAC;QAEd,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,4BAA4B,IAAI,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;QAErH,IAAI,YAAY,IAAI,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,yBAAyB;YAC/E,OAAO,IAAI,CAAC,iBAAiB,CAAC;QAEhC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC;IACjC,CAAC;IAES,aAAa,KAAW,CAAC;IAEhB,2BAA2B;QAC5C,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,KAAK,CAAC,2BAA2B,EAAE,CAAC;IACtC,CAAC;IAES,sBAAsB;QAC9B,IAAI,SAAS,KAAK,IAAI,CAAC,iBAAiB;YACtC,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC;QAC1C,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5E,CAAC;IAEe,KAAK,CAAC,SAAS;QAC7B,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,SAAS,EAAE,CAAC;IAC3B,CAAC;CACF;AAhdD,kDAgdC","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 { Id64, Id64Arg, Id64Array, Id64String } from \"@itwin/core-bentley\";\r\nimport { BRepEntityType, editorBuiltInCmdIds, ElementGeometryCacheFilter, ElementGeometryResultOptions, ElementGeometryResultProps, LocateSubEntityProps, SolidModelingCommandIpc, SubEntityFilter, SubEntityGeometryProps, SubEntityLocationProps, SubEntityProps, SubEntityType } from \"@itwin/editor-common\";\r\nimport { FeatureAppearance, FeatureAppearanceProvider, RgbColor } from \"@itwin/core-common\";\r\nimport { Point3d, Range3d, Ray3d, Transform } from \"@itwin/core-geometry\";\r\nimport { AccuDrawHintBuilder, BeButtonEvent, BeModifierKeys, CoordinateLockOverrides, CoordSource, DecorateContext, DynamicsContext, ElementSetTool, EventHandled, FeatureOverrideProvider, FeatureSymbology, GraphicBranch, GraphicBranchOptions, GraphicType, HitDetail, IModelApp, IModelConnection, InputSource, LocateResponse, readElementGraphics, RenderGraphicOwner, SelectionMethod, SelectionSet, Viewport } from \"@itwin/core-frontend\";\r\nimport { computeChordToleranceFromPoint } from \"./CreateElementTool\";\r\nimport { EditTools } from \"./EditTool\";\r\n\r\n/** @alpha */\r\nexport class ElementGeometryGraphicsProvider {\r\n public readonly iModel: IModelConnection;\r\n public graphic?: RenderGraphicOwner;\r\n\r\n constructor(iModel: IModelConnection) {\r\n this.iModel = iModel;\r\n }\r\n\r\n /** Call to request a RenderGraphic for the supplied graphic data.\r\n * @see [[cleanupGraphic]] Must be called when the tool exits.\r\n */\r\n public async createGraphic(graphicData: Uint8Array): Promise<boolean> {\r\n try {\r\n const graphic = await readElementGraphics(graphicData, this.iModel, Id64.invalid, true, { noFlash: true, noHilite: true });\r\n const graphicOwner = graphic ? IModelApp.renderSystem.createGraphicOwner(graphic) : undefined;\r\n this.cleanupGraphic();\r\n return (undefined !== (this.graphic = graphicOwner));\r\n } catch {\r\n return false;\r\n }\r\n }\r\n\r\n /** Call to dispose of [[RenderGraphic]] held by [[RenderGraphicOwner]].\r\n * @note Must be called when the tool exits to avoid leaks of graphics memory or other webgl resources.\r\n */\r\n public cleanupGraphic(): void {\r\n if (undefined === this.graphic)\r\n return;\r\n this.graphic.disposeGraphic();\r\n this.graphic = undefined;\r\n }\r\n\r\n public addGraphic(context: DynamicsContext, transform?: Transform, opts?: GraphicBranchOptions): void {\r\n if (undefined === this.graphic)\r\n return;\r\n\r\n if (undefined === transform && undefined === opts) {\r\n context.addGraphic(this.graphic);\r\n return;\r\n }\r\n\r\n const branch = new GraphicBranch(false);\r\n branch.add(this.graphic);\r\n\r\n const branchGraphic = context.createGraphicBranch(branch, transform ? transform : Transform.createIdentity(), opts);\r\n context.addGraphic(branchGraphic);\r\n }\r\n\r\n public addDecoration(context: DecorateContext, type: GraphicType, transform?: Transform, opts?: GraphicBranchOptions): void {\r\n if (undefined === this.graphic)\r\n return;\r\n\r\n const branch = new GraphicBranch(false);\r\n branch.add(this.graphic);\r\n\r\n const branchGraphic = context.createGraphicBranch(branch, transform ? transform : Transform.createIdentity(), opts);\r\n context.addDecoration(type, branchGraphic);\r\n }\r\n}\r\n\r\n/** @alpha */\r\nexport function isSameSubEntity(a: SubEntityProps, b: SubEntityProps): boolean {\r\n if (a.type !== b.type)\r\n return false;\r\n if (a.id !== b.id)\r\n return false;\r\n if ((undefined !== a.index ? a.index : 0) !== (undefined !== b.index ? b.index : 0))\r\n return false;\r\n return true;\r\n}\r\n\r\n/** @alpha */\r\nexport class SubEntityData {\r\n public toolData?: any;\r\n public chordTolerance?: number;\r\n\r\n private _props: SubEntityProps;\r\n private _geometry?: SubEntityGeometryProps;\r\n private _graphicsProvider?: ElementGeometryGraphicsProvider;\r\n\r\n constructor(props: SubEntityProps) { this._props = props; }\r\n\r\n public get props(): SubEntityProps { return this._props; }\r\n public set props(value: SubEntityProps) { this.cleanupGraphic(); this._props = value; }\r\n\r\n public get geometry(): SubEntityGeometryProps | undefined { return this._geometry; }\r\n public set geometry(value: SubEntityGeometryProps | undefined) { this._geometry = value; }\r\n\r\n public isSame(other: SubEntityProps): boolean { return isSameSubEntity(this._props, other); }\r\n\r\n public getAppearance(vp: Viewport, accepted: boolean): FeatureAppearance {\r\n const color = vp.hilite.color;\r\n const rgb = RgbColor.fromColorDef(accepted ? color.inverse() : color);\r\n const transparency = 0.25;\r\n const emphasized = true; // Necessary for obscured sub-entities w/SceneGraphic...\r\n let weight;\r\n\r\n switch (this.props.type) {\r\n case SubEntityType.Face:\r\n break;\r\n case SubEntityType.Edge:\r\n const edgeWeight = accepted ? 1 : 3;\r\n weight = this._geometry?.appearance?.weight ? Math.min(this._geometry.appearance.weight + edgeWeight, 31) : edgeWeight;\r\n break;\r\n case SubEntityType.Vertex:\r\n const vertexWeight = accepted ? 8 : 10;\r\n weight = this._geometry?.appearance?.weight ? Math.min(this._geometry.appearance.weight + vertexWeight, 31) : vertexWeight;\r\n break;\r\n }\r\n\r\n return FeatureAppearance.fromJSON({ rgb, transparency, weight, emphasized, nonLocatable: true });\r\n }\r\n\r\n public async createGraphic(iModel: IModelConnection): Promise<boolean> {\r\n if (undefined === this._geometry?.graphic)\r\n return false;\r\n\r\n if (undefined === this._graphicsProvider)\r\n this._graphicsProvider = new ElementGeometryGraphicsProvider(iModel);\r\n\r\n return this._graphicsProvider.createGraphic(this._geometry.graphic);\r\n }\r\n\r\n public cleanupGraphic(): void {\r\n if (undefined === this._graphicsProvider)\r\n return;\r\n this._graphicsProvider.cleanupGraphic();\r\n this._graphicsProvider = undefined;\r\n }\r\n\r\n public get hasGraphic(): boolean {\r\n return (undefined !== this._graphicsProvider?.graphic);\r\n }\r\n\r\n public display(context: DecorateContext, accepted: boolean): void {\r\n if (undefined === this._graphicsProvider?.graphic)\r\n return;\r\n\r\n const range = (this._geometry?.range ? Range3d.fromJSON(this._geometry.range) : undefined);\r\n const pixelSize = context.viewport.getPixelSizeAtPoint(range ? range.center : undefined);\r\n const offsetDir = context.viewport.view.getZVector();\r\n offsetDir.scaleToLength(3 * pixelSize, offsetDir);\r\n const offsetTrans = Transform.createTranslation(offsetDir);\r\n\r\n const appearanceProvider = FeatureAppearanceProvider.supplement((app: FeatureAppearance) => {\r\n return app.extendAppearance(this.getAppearance(context.viewport, accepted));\r\n });\r\n\r\n this._graphicsProvider.addDecoration(context, GraphicType.Scene, offsetTrans, { appearanceProvider });\r\n }\r\n}\r\n\r\n/** @alpha Base class for tools that want to use the backend geometry cache. */\r\nexport abstract class ElementGeometryCacheTool extends ElementSetTool implements FeatureOverrideProvider {\r\n protected _startedCmd?: string;\r\n protected readonly _checkedIds = new Map<Id64String, boolean>();\r\n protected _graphicsProvider?: ElementGeometryGraphicsProvider;\r\n protected _graphicsPending?: true;\r\n protected _firstResult = true;\r\n protected _agendaAppearanceDefault?: FeatureAppearance;\r\n protected _agendaAppearanceDynamic?: FeatureAppearance;\r\n\r\n protected allowView(vp: Viewport) { return vp.view.is3d(); }\r\n public override isCompatibleViewport(vp: Viewport | undefined, isSelectedViewChange: boolean): boolean { return (super.isCompatibleViewport(vp, isSelectedViewChange) && undefined !== vp && this.allowView(vp)); }\r\n\r\n protected async startCommand(): Promise<string> {\r\n if (undefined !== this._startedCmd)\r\n return this._startedCmd;\r\n return EditTools.startCommand<string>(editorBuiltInCmdIds.cmdSolidModeling, this.iModel.key);\r\n }\r\n\r\n public static callCommand<T extends keyof SolidModelingCommandIpc>(method: T, ...args: Parameters<SolidModelingCommandIpc[T]>): ReturnType<SolidModelingCommandIpc[T]> {\r\n return EditTools.callCommand(method, ...args) as ReturnType<SolidModelingCommandIpc[T]>;\r\n }\r\n\r\n protected agendaAppearance(isDynamics: boolean): FeatureAppearance {\r\n if (isDynamics) {\r\n if (undefined === this._agendaAppearanceDynamic)\r\n this._agendaAppearanceDynamic = FeatureAppearance.fromTransparency(0.0);\r\n\r\n return this._agendaAppearanceDynamic;\r\n }\r\n\r\n if (undefined === this._agendaAppearanceDefault)\r\n this._agendaAppearanceDefault = FeatureAppearance.fromTransparency(0.9);\r\n\r\n return this._agendaAppearanceDefault;\r\n }\r\n\r\n protected get wantAgendaAppearanceOverride(): boolean { return false; }\r\n\r\n public addFeatureOverrides(overrides: FeatureSymbology.Overrides, _vp: Viewport): void {\r\n if (this.agenda.isEmpty)\r\n return;\r\n\r\n const appearance = this.agendaAppearance(false);\r\n this.agenda.elements.forEach((elementId) => { overrides.override({ elementId, appearance }); });\r\n }\r\n\r\n protected updateAgendaAppearanceProvider(drop?: true): void {\r\n if (!this.wantAgendaAppearanceOverride)\r\n return;\r\n\r\n for (const vp of IModelApp.viewManager) {\r\n if (!this.allowView(vp))\r\n continue;\r\n\r\n if (drop || this.agenda.isEmpty)\r\n vp.dropFeatureOverrideProvider(this);\r\n else if (!vp.addFeatureOverrideProvider(this))\r\n vp.setFeatureOverrideProviderChanged();\r\n }\r\n }\r\n\r\n protected get geometryCacheFilter(): ElementGeometryCacheFilter | undefined { return undefined; }\r\n protected onGeometryCacheFilterChanged(): void { this._checkedIds.clear(); }\r\n\r\n protected async createElementGeometryCache(id: Id64String): Promise<boolean> {\r\n // NOTE: Creates cache if it doesn't already exist then test new or existing cache against filter...\r\n try {\r\n this._startedCmd = await this.startCommand();\r\n return await ElementGeometryCacheTool.callCommand(\"createElementGeometryCache\", id, this.geometryCacheFilter);\r\n } catch (err) {\r\n return false;\r\n }\r\n }\r\n\r\n protected async acceptElementForOperation(id: Id64String): Promise<boolean> {\r\n if (Id64.isInvalid(id) || Id64.isTransient(id))\r\n return false;\r\n\r\n let accept = this._checkedIds.get(id);\r\n\r\n if (undefined === accept) {\r\n if (this.agenda.isEmpty && this._checkedIds.size > 1000)\r\n this._checkedIds.clear(); // Limit auto-locate cache size to something reasonable...\r\n\r\n accept = await this.createElementGeometryCache(id);\r\n this._checkedIds.set(id, accept);\r\n }\r\n\r\n return accept;\r\n }\r\n\r\n protected override async isElementValidForOperation(hit: HitDetail, out?: LocateResponse): Promise<boolean> {\r\n if (!await super.isElementValidForOperation(hit, out))\r\n return false;\r\n\r\n return this.acceptElementForOperation(hit.sourceId);\r\n }\r\n\r\n protected async postFilterIds(arg: Id64Arg): Promise<Id64Arg> {\r\n const ids: Id64Array = [];\r\n\r\n for (const id of Id64.iterable(arg)) {\r\n if (await this.acceptElementForOperation(id))\r\n ids.push(id);\r\n }\r\n\r\n return ids;\r\n }\r\n\r\n protected override async getGroupIds(id: Id64String): Promise<Id64Arg> {\r\n return this.postFilterIds(await super.getGroupIds(id));\r\n }\r\n\r\n protected override async getSelectionSetCandidates(ss: SelectionSet): Promise<Id64Arg> {\r\n return this.postFilterIds(await super.getSelectionSetCandidates(ss));\r\n }\r\n\r\n protected override async getDragSelectCandidates(vp: Viewport, origin: Point3d, corner: Point3d, method: SelectionMethod, overlap: boolean): Promise<Id64Arg> {\r\n return this.postFilterIds(await super.getDragSelectCandidates(vp, origin, corner, method, overlap));\r\n }\r\n\r\n public override onDynamicFrame(_ev: BeButtonEvent, context: DynamicsContext): void {\r\n if (undefined === this._graphicsProvider)\r\n return;\r\n\r\n if (!this.wantAgendaAppearanceOverride)\r\n return this._graphicsProvider.addGraphic(context);\r\n\r\n const appearanceProvider = FeatureAppearanceProvider.supplement((app: FeatureAppearance) => {\r\n return app.extendAppearance(this.agendaAppearance(true));\r\n });\r\n\r\n this._graphicsProvider.addGraphic(context, undefined, { appearanceProvider });\r\n }\r\n\r\n public override async onMouseMotion(ev: BeButtonEvent): Promise<void> {\r\n return this.updateGraphic(ev, IModelApp.viewManager.inDynamicsMode);\r\n }\r\n\r\n protected async getGraphicData(_ev: BeButtonEvent): Promise<Uint8Array | undefined> { return undefined; }\r\n\r\n protected async updateGraphic(ev: BeButtonEvent, isDynamics: boolean): Promise<void> {\r\n if (!isDynamics || this._graphicsPending)\r\n return; // Continue displaying previous graphic if new graphic is still pending...\r\n\r\n this._graphicsPending = true;\r\n const graphicData = await this.getGraphicData(ev);\r\n this._graphicsPending = undefined;\r\n\r\n if (undefined !== graphicData) {\r\n if (this._firstResult) {\r\n this.updateAgendaAppearanceProvider();\r\n this._firstResult = false;\r\n }\r\n return this.createGraphic(graphicData);\r\n }\r\n\r\n if (undefined !== this._graphicsProvider)\r\n this._graphicsProvider.cleanupGraphic();\r\n }\r\n\r\n protected async createGraphic(graphicData: Uint8Array): Promise<void> {\r\n if (undefined === this._graphicsProvider)\r\n this._graphicsProvider = new ElementGeometryGraphicsProvider(this.iModel);\r\n\r\n await this._graphicsProvider.createGraphic(graphicData);\r\n }\r\n\r\n protected clearGraphic(): void {\r\n if (undefined === this._graphicsProvider)\r\n return;\r\n this._graphicsProvider.cleanupGraphic();\r\n this._graphicsProvider = undefined;\r\n }\r\n\r\n protected async clearElementGeometryCache(): Promise<void> {\r\n try {\r\n this._startedCmd = await this.startCommand();\r\n await ElementGeometryCacheTool.callCommand(\"clearElementGeometryCache\");\r\n } catch (err) { }\r\n }\r\n\r\n public override async onUnsuspend(): Promise<void> {\r\n if (!this._firstResult)\r\n this.updateAgendaAppearanceProvider();\r\n return super.onUnsuspend();\r\n }\r\n\r\n public override async onSuspend(): Promise<void> {\r\n if (!this._firstResult)\r\n this.updateAgendaAppearanceProvider(true);\r\n return super.onSuspend();\r\n }\r\n\r\n public override async onPostInstall(): Promise<void> {\r\n await super.onPostInstall();\r\n if (this.wantAgendaAppearanceOverride)\r\n this.agenda.manageHiliteState = false;\r\n }\r\n\r\n public override async onCleanup(): Promise<void> {\r\n await super.onCleanup();\r\n await this.clearElementGeometryCache();\r\n this.updateAgendaAppearanceProvider(true);\r\n this.clearGraphic();\r\n }\r\n}\r\n\r\n/** @alpha Base class for tools that need to locate faces, edges, and vertices. */\r\nexport abstract class LocateSubEntityTool extends ElementGeometryCacheTool {\r\n protected _currentSubEntity?: SubEntityData;\r\n protected _acceptedSubEntities: SubEntityData[] = [];\r\n protected _locatedSubEntities?: SubEntityLocationProps[];\r\n protected _subEntityGraphicPending?: true;\r\n protected readonly _summaryIds = new Map<Id64String, BRepEntityType[]>();\r\n\r\n protected override get wantAgendaAppearanceOverride(): boolean { return true; }\r\n protected get wantGeometrySummary(): boolean { return false; }\r\n protected get wantSubEntitySnap(): boolean { return false; }\r\n\r\n protected wantSubEntityType(type: SubEntityType): boolean { return SubEntityType.Face === type; }\r\n protected getMaximumSubEntityHits(type: SubEntityType): number { return this.wantSubEntityType(type) ? 25 : 0; }\r\n\r\n protected get requiredSubEntityCount(): number { return 1; }\r\n protected get haveAcceptedSubEntities(): boolean { return (0 !== this._acceptedSubEntities.length); }\r\n protected get inhibitSubEntityDisplay(): boolean { return this.isDynamicsStarted; }\r\n\r\n protected get allowSubEntityControlSelect(): boolean { return true; }\r\n protected get allowSubEntityControlDeselect(): boolean { return this.allowSubEntityControlSelect; }\r\n protected get allowSubEntitySelectNext(): boolean { return !this.isDynamicsStarted; }\r\n\r\n protected getBRepEntityTypeForSubEntity(id: Id64String, subEntity: SubEntityProps): BRepEntityType {\r\n const summary = this._summaryIds.get(id);\r\n\r\n if (undefined === summary)\r\n return BRepEntityType.Invalid;\r\n\r\n const index = (undefined !== subEntity.index ? subEntity.index : 0);\r\n\r\n if (index >= summary.length)\r\n return BRepEntityType.Invalid;\r\n\r\n return summary[index];\r\n }\r\n\r\n protected async createElementGeometrySummary(id: Id64String): Promise<boolean> {\r\n let summary = this._summaryIds.get(id);\r\n\r\n if (undefined === summary) {\r\n if (this.agenda.isEmpty && this._summaryIds.size > 1000)\r\n this._summaryIds.clear(); // Limit auto-locate cache size to something reasonable...\r\n\r\n try {\r\n this._startedCmd = await this.startCommand();\r\n if (undefined === (summary = await ElementGeometryCacheTool.callCommand(\"summarizeElementGeometryCache\", id)))\r\n return false;\r\n } catch (err) {\r\n return false;\r\n }\r\n\r\n this._summaryIds.set(id, summary);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n protected override async createElementGeometryCache(id: Id64String): Promise<boolean> {\r\n const accept = await super.createElementGeometryCache(id);\r\n return (accept && this.wantGeometrySummary ? this.createElementGeometrySummary(id) : accept);\r\n }\r\n\r\n protected getAcceptedSubEntityData(index: number = -1): SubEntityData | undefined {\r\n if (-1 === index)\r\n index = this._acceptedSubEntities.length - 1;\r\n\r\n if (index < 0 || index > this._acceptedSubEntities.length - 1)\r\n return undefined;\r\n\r\n return this._acceptedSubEntities[index];\r\n }\r\n\r\n protected getAcceptedSubEntities(): SubEntityProps[] {\r\n const accepted: SubEntityProps[] = [];\r\n this._acceptedSubEntities.forEach((entry) => { accepted.push(entry.props); });\r\n return accepted;\r\n }\r\n\r\n protected drawSubEntity(context: DecorateContext, subEntity: SubEntityData, accepted: boolean): void {\r\n subEntity.display(context, accepted);\r\n }\r\n\r\n protected drawAcceptedSubEntities(context: DecorateContext): void {\r\n this._acceptedSubEntities.forEach((entry) => { this.drawSubEntity(context, entry, true); });\r\n }\r\n\r\n public override decorate(context: DecorateContext): void {\r\n if (this.inhibitSubEntityDisplay || !this.allowView(context.viewport))\r\n return;\r\n\r\n if (this.haveAcceptedSubEntities)\r\n this.drawAcceptedSubEntities(context);\r\n\r\n if (undefined !== this._currentSubEntity)\r\n this.drawSubEntity(context, this._currentSubEntity, false);\r\n }\r\n\r\n public override decorateSuspended(context: DecorateContext): void {\r\n if (this.inhibitSubEntityDisplay || !this.allowView(context.viewport))\r\n return;\r\n\r\n if (this.haveAcceptedSubEntities)\r\n this.drawAcceptedSubEntities(context);\r\n }\r\n\r\n protected getLocateAperture(ev: BeButtonEvent): number {\r\n if (undefined === ev.viewport)\r\n return 0.0;\r\n\r\n return ev.viewport.pixelsFromInches(InputSource.Touch === ev.inputSource ? IModelApp.locateManager.touchApertureInches : IModelApp.locateManager.apertureInches);\r\n }\r\n\r\n protected getMaxRayDistance(ev: BeButtonEvent, aperture: number): number {\r\n if (undefined === ev.viewport)\r\n return 0.0;\r\n\r\n // NOTE: Compute a world coordinate radius for ray test, try getting aperature size at point on element...\r\n const hit = IModelApp.accuSnap.currHit;\r\n const vec: Point3d[] = [];\r\n\r\n vec[0] = ev.viewport.worldToView(hit ? hit.hitPoint : ev.point);\r\n vec[1] = vec[0].clone(); vec[1].x += 1;\r\n ev.viewport.viewToWorldArray(vec);\r\n\r\n // The edge and vertex hits get post-filtered on xy distance, so this is fine for perspective views...\r\n return (aperture * vec[0].distance(vec[1]));\r\n }\r\n\r\n protected getRayOrigin(ev: BeButtonEvent): Point3d {\r\n const spacePoint = ev.point.clone();\r\n const vp = ev.viewport;\r\n\r\n if (undefined === vp)\r\n return spacePoint;\r\n\r\n vp.worldToNpc(spacePoint, spacePoint);\r\n spacePoint.z = 1.0;\r\n vp.npcToWorld(spacePoint, spacePoint);\r\n\r\n return spacePoint;\r\n }\r\n\r\n protected wantHiddenEdges(vp: Viewport): boolean {\r\n return vp.viewFlags.hiddenEdgesVisible();\r\n }\r\n\r\n protected getSubEntityFilter(): SubEntityFilter | undefined { return undefined; }\r\n\r\n protected async pickSubEntities(id: Id64String, boresite: Ray3d, maxFace: number, maxEdge: number, maxVertex: number, maxDistance: number, hiddenEdgesVisible: boolean, filter?: SubEntityFilter): Promise<SubEntityLocationProps[] | undefined> {\r\n try {\r\n this._startedCmd = await this.startCommand();\r\n const opts: LocateSubEntityProps = {\r\n maxFace,\r\n maxEdge,\r\n maxVertex,\r\n maxDistance,\r\n hiddenEdgesVisible,\r\n filter,\r\n };\r\n return await ElementGeometryCacheTool.callCommand(\"locateSubEntities\", id, boresite.origin, boresite.direction, opts);\r\n } catch (err) {\r\n return undefined;\r\n }\r\n }\r\n\r\n protected async doPickSubEntities(id: Id64String, ev: BeButtonEvent): Promise<SubEntityLocationProps[] | undefined> {\r\n const vp = ev.viewport;\r\n if (undefined === vp)\r\n return undefined;\r\n\r\n const maxFace = this.getMaximumSubEntityHits(SubEntityType.Face);\r\n const maxEdge = this.getMaximumSubEntityHits(SubEntityType.Edge);\r\n const maxVertex = this.getMaximumSubEntityHits(SubEntityType.Vertex);\r\n\r\n if (0 === maxFace && 0 === maxEdge && 0 === maxVertex)\r\n return undefined;\r\n\r\n const aperture = this.getLocateAperture(ev);\r\n const maxDistance = this.getMaxRayDistance(ev, aperture);\r\n const spacePoint = this.getRayOrigin(ev);\r\n const boresite = AccuDrawHintBuilder.getBoresite(spacePoint, vp);\r\n const hiddenEdgesVisible = this.wantHiddenEdges(vp);\r\n const filter = this.getSubEntityFilter();\r\n\r\n let hits = await this.pickSubEntities(id, boresite, maxFace, maxEdge, maxVertex, maxDistance, hiddenEdgesVisible, filter);\r\n\r\n // NOTE: Remove erroneous edge/vertex hits in perspective views by checking real xy distance to hit point...\r\n if (undefined === hits || !vp.isCameraOn)\r\n return hits;\r\n\r\n if (maxEdge > 0 && hits.length > 1) {\r\n const edgeApertureSquared = (aperture * aperture);\r\n const vertexApertureSquared = ((aperture * 2.0) * (aperture * 2.0));\r\n\r\n const e2 = Math.pow(aperture, 2);\r\n const v2 = Math.pow(aperture * 2.0, 2);\r\n\r\n if (e2 !== edgeApertureSquared || v2 !== vertexApertureSquared)\r\n return hits;\r\n\r\n const rayOrigin = vp.worldToView(boresite.origin);\r\n\r\n hits = hits.filter((hit) => {\r\n if (SubEntityType.Face === hit.subEntity.type)\r\n return true;\r\n\r\n const hitPoint = vp.worldToView(Point3d.fromJSON(hit.point));\r\n const distance = hitPoint.distanceSquaredXY(rayOrigin);\r\n\r\n return (distance <= (SubEntityType.Edge === hit.subEntity.type ? edgeApertureSquared : vertexApertureSquared));\r\n });\r\n }\r\n\r\n return hits;\r\n }\r\n\r\n protected async createSubEntityData(id: Id64String, hit: SubEntityLocationProps): Promise<SubEntityData> {\r\n const data = new SubEntityData(hit.subEntity);\r\n const chordTolerance = (this.targetView ? computeChordToleranceFromPoint(this.targetView, Point3d.fromJSON(hit.point)) : undefined);\r\n\r\n await this.createSubEntityGraphic(id, data, chordTolerance);\r\n\r\n return data;\r\n }\r\n\r\n /** Append specified sub-entity to accepted array. */\r\n protected async addSubEntity(id: Id64String, props: SubEntityLocationProps): Promise<void> {\r\n this._acceptedSubEntities.push(await this.createSubEntityData(id, props));\r\n }\r\n\r\n /** Remove specified sub-entity from accepted array, or pop last sub-entity if undefined. */\r\n protected async removeSubEntity(_id: Id64String, props?: SubEntityLocationProps): Promise<void> {\r\n if (undefined !== props)\r\n this._acceptedSubEntities = this._acceptedSubEntities.filter((entry) => !isSameSubEntity(entry.props, props.subEntity));\r\n else\r\n this._acceptedSubEntities.pop();\r\n }\r\n\r\n /** Locate sub-entities for the most recently added (last) agenda entry. Tool sub-classes that wish to identity\r\n * sub-entities from multiple elements are responsible for maintaining the sub-entities per-element.\r\n */\r\n protected async doLocateSubEntity(ev: BeButtonEvent, newSearch: boolean): Promise<boolean> {\r\n if (this.agenda.isEmpty || undefined === ev.viewport)\r\n return false;\r\n\r\n const id = this.agenda.elements[this.agenda.length - 1];\r\n\r\n if (newSearch) {\r\n this._locatedSubEntities = await this.doPickSubEntities(id, ev);\r\n if (undefined === this._locatedSubEntities || 0 === this._locatedSubEntities.length)\r\n return false;\r\n\r\n /** NOTE: Set last button location to point on sub-entity when not snapping.\r\n * If dynamics are enabled on this event, onDynamicFrame is called with this location.\r\n */\r\n if (CoordSource.ElemSnap !== ev.coordsFrom) {\r\n ev.point.setFrom(Point3d.fromJSON(this._locatedSubEntities[0].point));\r\n IModelApp.toolAdmin.setAdjustedDataPoint(ev);\r\n }\r\n } else {\r\n await this.removeSubEntity(id);\r\n }\r\n\r\n const hit = this._locatedSubEntities?.shift();\r\n if (undefined !== hit) {\r\n if (undefined === this._acceptedSubEntities.find((entry) => isSameSubEntity(entry.props, hit.subEntity)))\r\n await this.addSubEntity(id, hit);\r\n else if (this.allowSubEntityControlDeselect)\r\n await this.removeSubEntity(id, hit);\r\n }\r\n\r\n IModelApp.viewManager.invalidateDecorationsAllViews();\r\n return true;\r\n }\r\n\r\n protected override async chooseNextHit(ev: BeButtonEvent): Promise<EventHandled> {\r\n if (!this.haveAcceptedSubEntities)\r\n return super.chooseNextHit(ev);\r\n\r\n if (!this.allowSubEntitySelectNext) {\r\n await this.onReinitialize(); // Don't cycle through hits after starting dynamics...\r\n } else {\r\n await this.doLocateSubEntity(ev, false);\r\n if (!this.haveAcceptedSubEntities)\r\n await this.onReinitialize();\r\n }\r\n\r\n return EventHandled.No;\r\n }\r\n\r\n protected get wantAdditionalSubEntities(): boolean {\r\n return (this._acceptedSubEntities.length < this.requiredSubEntityCount || (this.allowSubEntityControlSelect && this.isControlDown));\r\n }\r\n\r\n protected override async gatherInput(ev: BeButtonEvent): Promise<EventHandled | undefined> {\r\n if (this.wantAdditionalSubEntities) {\r\n await this.doLocateSubEntity(ev, true);\r\n\r\n if (this.wantAdditionalSubEntities) {\r\n this.setupAndPromptForNextAction();\r\n return EventHandled.No;\r\n }\r\n\r\n this.clearCurrentSubEntity();\r\n }\r\n\r\n return super.gatherInput(ev);\r\n }\r\n\r\n protected getCurrentElement(): Id64String | undefined {\r\n if (!this.agenda.isEmpty)\r\n return this.agenda.elements[this.agenda.length - 1];\r\n\r\n const hit = IModelApp.accuSnap.currHit;\r\n return (undefined !== hit && hit.isElementHit ? hit.sourceId : undefined);\r\n }\r\n\r\n protected clearCurrentSubEntity(): void {\r\n if (undefined === this._currentSubEntity)\r\n return;\r\n this._currentSubEntity.cleanupGraphic();\r\n this._currentSubEntity = undefined;\r\n }\r\n\r\n protected async setCurrentSubEntity(id: Id64String, hit: SubEntityLocationProps, chordTolerance?: number): Promise<boolean> {\r\n if (undefined === this._currentSubEntity)\r\n this._currentSubEntity = new SubEntityData(hit.subEntity);\r\n else\r\n this._currentSubEntity.props = hit.subEntity;\r\n\r\n return this.createSubEntityGraphic(id, this._currentSubEntity, chordTolerance);\r\n }\r\n\r\n protected async changeCurrentSubEntity(id?: Id64String, current?: SubEntityLocationProps, chordTolerance?: number): Promise<boolean> {\r\n if (undefined === id || undefined === current) {\r\n if (undefined === this._currentSubEntity || !this._currentSubEntity.hasGraphic)\r\n return false;\r\n this._currentSubEntity.cleanupGraphic();\r\n return true;\r\n }\r\n\r\n if (undefined !== this._currentSubEntity && this._currentSubEntity.hasGraphic && this._currentSubEntity.isSame(current.subEntity))\r\n return false;\r\n\r\n return this.setCurrentSubEntity(id, current, chordTolerance);\r\n }\r\n\r\n protected async updateCurrentSubEntity(ev: BeButtonEvent): Promise<boolean> {\r\n if (undefined === ev.viewport)\r\n return false;\r\n\r\n const id = this.wantAdditionalSubEntities ? this.getCurrentElement() : undefined;\r\n if (undefined === id)\r\n return this.changeCurrentSubEntity();\r\n\r\n if (this._subEntityGraphicPending)\r\n return false;\r\n\r\n this._subEntityGraphicPending = true;\r\n\r\n const current = await this.doPickSubEntities(id, ev);\r\n const chordTolerance = current ? computeChordToleranceFromPoint(ev.viewport, Point3d.fromJSON(current[0].point)) : 0.0;\r\n const status = await this.changeCurrentSubEntity(id, current ? current[0] : undefined, chordTolerance);\r\n\r\n this._subEntityGraphicPending = undefined;\r\n\r\n if (status)\r\n IModelApp.viewManager.invalidateDecorationsAllViews();\r\n\r\n return status;\r\n }\r\n\r\n protected async createSubEntityGraphic(id: Id64String, data: SubEntityData, chordTolerance?: number): Promise<boolean> {\r\n try {\r\n const opts: ElementGeometryResultOptions = {\r\n wantGraphic: true,\r\n wantRange: true,\r\n wantAppearance: true,\r\n chordTolerance,\r\n };\r\n\r\n data.chordTolerance = chordTolerance;\r\n data.geometry = await ElementGeometryCacheTool.callCommand(\"getSubEntityGeometry\", id, data.props, opts);\r\n\r\n return await data.createGraphic(this.iModel);\r\n } catch (err) {\r\n return false;\r\n }\r\n }\r\n\r\n protected override async updateGraphic(ev: BeButtonEvent, isDynamics: boolean): Promise<void> {\r\n if (isDynamics)\r\n return super.updateGraphic(ev, isDynamics);\r\n\r\n await this.updateCurrentSubEntity(ev);\r\n }\r\n\r\n protected override async getGraphicData(ev: BeButtonEvent): Promise<Uint8Array | undefined> {\r\n const result = await this.applyAgendaOperation(ev, false);\r\n return result?.graphic;\r\n }\r\n\r\n protected async applyAgendaOperation(_ev: BeButtonEvent, _isAccept: boolean): Promise<ElementGeometryResultProps | undefined> { return undefined; }\r\n\r\n public override async processAgenda(ev: BeButtonEvent): Promise<void> {\r\n const result = await this.applyAgendaOperation(ev, true);\r\n if (result?.elementId)\r\n await this.saveChanges();\r\n }\r\n\r\n public override async onModifierKeyTransition(wentDown: boolean, modifier: BeModifierKeys, event: KeyboardEvent): Promise<EventHandled> {\r\n if (EventHandled.Yes === await super.onModifierKeyTransition(wentDown, modifier, event))\r\n return EventHandled.Yes;\r\n\r\n if (BeModifierKeys.Control !== modifier)\r\n return EventHandled.No;\r\n\r\n if (IModelApp.toolAdmin.isLocateCircleOn === this.wantAdditionalSubEntities)\r\n return EventHandled.No;\r\n\r\n this.setupAndPromptForNextAction();\r\n return EventHandled.Yes;\r\n }\r\n\r\n public override changeLocateState(enableLocate: boolean, enableSnap?: boolean, cursor?: string, coordLockOvr?: CoordinateLockOverrides): void {\r\n super.changeLocateState(enableLocate, enableSnap, cursor, coordLockOvr);\r\n\r\n // Keep showing locate circle when identifing sub-entities even if done locating elements...\r\n if (!IModelApp.toolAdmin.isLocateCircleOn && this.wantAdditionalSubEntities)\r\n IModelApp.toolAdmin.setLocateCircleOn(true);\r\n }\r\n\r\n protected override get shouldEnableSnap(): boolean {\r\n if (this.isSelectByPoints || !this.wantAccuSnap)\r\n return false;\r\n\r\n if (this.isDynamicsStarted)\r\n return true;\r\n\r\n const isCtrlSelect = (this.isControlDown && (this.controlKeyContinuesSelection || this.allowSubEntityControlSelect));\r\n\r\n if (isCtrlSelect || this.wantAdditionalElements || this.wantAdditionalSubEntities)\r\n return this.wantSubEntitySnap;\r\n\r\n return !this.wantSubEntitySnap;\r\n }\r\n\r\n protected setupAccuDraw(): void { }\r\n\r\n protected override setupAndPromptForNextAction(): void {\r\n this.setupAccuDraw();\r\n super.setupAndPromptForNextAction();\r\n }\r\n\r\n protected clearSubEntityGraphics(): void {\r\n if (undefined !== this._currentSubEntity)\r\n this._currentSubEntity.cleanupGraphic();\r\n this._acceptedSubEntities.forEach((entry) => { entry.cleanupGraphic(); });\r\n }\r\n\r\n public override async onCleanup(): Promise<void> {\r\n this.clearSubEntityGraphics();\r\n return super.onCleanup();\r\n }\r\n}\r\n"]}
|
|
@@ -6,6 +6,7 @@ import { BooleanMode, ChamferMode, ElementGeometryCacheFilter, ElementGeometryRe
|
|
|
6
6
|
import { Matrix3d, Point3d, Vector3d, XYZProps } from "@itwin/core-geometry";
|
|
7
7
|
import { BeButtonEvent, DecorateContext, DynamicsContext, EventHandled, HitDetail } from "@itwin/core-frontend";
|
|
8
8
|
import { ElementGeometryCacheTool, LocateSubEntityTool, SubEntityData } from "./ElementGeometryTool";
|
|
9
|
+
import { DialogItem, DialogProperty, DialogPropertySyncItem } from "@itwin/appui-abstract";
|
|
9
10
|
/** @alpha Base class for tools that perform boolean operations on a set of elements. */
|
|
10
11
|
export declare abstract class BooleanOperationTool extends ElementGeometryCacheTool {
|
|
11
12
|
protected abstract get mode(): BooleanMode;
|
|
@@ -56,11 +57,19 @@ export declare class SewSheetElementsTool extends ElementGeometryCacheTool {
|
|
|
56
57
|
export declare class ThickenSheetElementsTool extends ElementGeometryCacheTool {
|
|
57
58
|
static toolId: string;
|
|
58
59
|
static iconSpec: string;
|
|
59
|
-
|
|
60
|
-
|
|
60
|
+
private _frontDistanceProperty;
|
|
61
|
+
get frontDistanceProperty(): DialogProperty<number>;
|
|
62
|
+
get frontDistance(): number;
|
|
63
|
+
set frontDistance(value: number);
|
|
64
|
+
private _backDistanceProperty;
|
|
65
|
+
get backDistanceProperty(): DialogProperty<number>;
|
|
66
|
+
get backDistance(): number;
|
|
67
|
+
set backDistance(value: number);
|
|
61
68
|
protected get geometryCacheFilter(): ElementGeometryCacheFilter | undefined;
|
|
62
69
|
protected applyAgendaOperation(): Promise<ElementGeometryResultProps | undefined>;
|
|
63
70
|
processAgenda(_ev: BeButtonEvent): Promise<void>;
|
|
71
|
+
applyToolSettingPropertyChange(updatedValue: DialogPropertySyncItem): Promise<boolean>;
|
|
72
|
+
supplyToolSettingsProperties(): DialogItem[] | undefined;
|
|
64
73
|
onRestartTool(): Promise<void>;
|
|
65
74
|
}
|
|
66
75
|
/** @alpha Perform cut operation on solid using region or path profile. */
|
|
@@ -69,9 +78,22 @@ export declare class CutSolidElementsTool extends ElementGeometryCacheTool {
|
|
|
69
78
|
static iconSpec: string;
|
|
70
79
|
protected targetPoint?: Point3d;
|
|
71
80
|
protected toolPoint?: Point3d;
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
81
|
+
private _bothDirectionsProperty;
|
|
82
|
+
get bothDirectionsProperty(): DialogProperty<boolean>;
|
|
83
|
+
get bothDirections(): boolean;
|
|
84
|
+
set bothDirections(value: boolean);
|
|
85
|
+
private _outsideProperty;
|
|
86
|
+
get outsideProperty(): DialogProperty<boolean>;
|
|
87
|
+
get outside(): boolean;
|
|
88
|
+
set outside(value: boolean);
|
|
89
|
+
private _useDepthProperty;
|
|
90
|
+
get useDepthProperty(): DialogProperty<boolean>;
|
|
91
|
+
get useDepth(): boolean;
|
|
92
|
+
set useDepth(value: boolean);
|
|
93
|
+
private _depthProperty;
|
|
94
|
+
get depthProperty(): DialogProperty<number>;
|
|
95
|
+
get depth(): number;
|
|
96
|
+
set depth(value: number);
|
|
75
97
|
protected get requiredElementCount(): number;
|
|
76
98
|
protected get isProfilePhase(): boolean;
|
|
77
99
|
protected get geometryCacheFilter(): ElementGeometryCacheFilter | undefined;
|
|
@@ -80,6 +102,9 @@ export declare class CutSolidElementsTool extends ElementGeometryCacheTool {
|
|
|
80
102
|
protected applyAgendaOperation(): Promise<ElementGeometryResultProps | undefined>;
|
|
81
103
|
processAgenda(_ev: BeButtonEvent): Promise<void>;
|
|
82
104
|
protected buildLocateAgenda(hit: HitDetail): Promise<boolean>;
|
|
105
|
+
private syncDepthState;
|
|
106
|
+
applyToolSettingPropertyChange(updatedValue: DialogPropertySyncItem): Promise<boolean>;
|
|
107
|
+
supplyToolSettingsProperties(): DialogItem[] | undefined;
|
|
83
108
|
onRestartTool(): Promise<void>;
|
|
84
109
|
}
|
|
85
110
|
/** @alpha Perform emboss operation on solid or sheet using sheet profile. */
|
|
@@ -128,9 +153,18 @@ export declare class FaceLocationData {
|
|
|
128
153
|
export declare class OffsetFacesTool extends LocateSubEntityTool {
|
|
129
154
|
static toolId: string;
|
|
130
155
|
static iconSpec: string;
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
156
|
+
private _addSmoothProperty;
|
|
157
|
+
get addSmoothProperty(): DialogProperty<boolean>;
|
|
158
|
+
get addSmooth(): boolean;
|
|
159
|
+
set addSmooth(value: boolean);
|
|
160
|
+
private _useDistanceProperty;
|
|
161
|
+
get useDistanceProperty(): DialogProperty<boolean>;
|
|
162
|
+
get useDistance(): boolean;
|
|
163
|
+
set useDistance(value: boolean);
|
|
164
|
+
private _distanceProperty;
|
|
165
|
+
get distanceProperty(): DialogProperty<number>;
|
|
166
|
+
get distance(): number;
|
|
167
|
+
set distance(value: number);
|
|
134
168
|
protected get wantDynamics(): boolean;
|
|
135
169
|
protected get wantAccuSnap(): boolean;
|
|
136
170
|
protected get geometryCacheFilter(): ElementGeometryCacheFilter | undefined;
|
|
@@ -139,16 +173,27 @@ export declare class OffsetFacesTool extends LocateSubEntityTool {
|
|
|
139
173
|
protected getSmoothFaces(id: Id64String, face: SubEntityProps): Promise<SubEntityProps[] | undefined>;
|
|
140
174
|
protected applyAgendaOperation(ev: BeButtonEvent, isAccept: boolean): Promise<ElementGeometryResultProps | undefined>;
|
|
141
175
|
protected setupAccuDraw(): void;
|
|
176
|
+
private syncDistanceState;
|
|
177
|
+
applyToolSettingPropertyChange(updatedValue: DialogPropertySyncItem): Promise<boolean>;
|
|
178
|
+
supplyToolSettingsProperties(): DialogItem[] | undefined;
|
|
142
179
|
onRestartTool(): Promise<void>;
|
|
143
180
|
}
|
|
144
181
|
/** @alpha Identify faces to offset to hollow solids. */
|
|
145
182
|
export declare class HollowFacesTool extends LocateSubEntityTool {
|
|
146
183
|
static toolId: string;
|
|
147
184
|
static iconSpec: string;
|
|
148
|
-
|
|
149
|
-
|
|
185
|
+
private _shellThicknessProperty;
|
|
186
|
+
get shellThicknessProperty(): DialogProperty<number>;
|
|
187
|
+
get shellThickness(): number;
|
|
188
|
+
set shellThickness(value: number);
|
|
189
|
+
private _faceThicknessProperty;
|
|
190
|
+
get faceThicknessProperty(): DialogProperty<number>;
|
|
191
|
+
get faceThickness(): number;
|
|
192
|
+
set faceThickness(value: number);
|
|
150
193
|
protected get geometryCacheFilter(): ElementGeometryCacheFilter | undefined;
|
|
151
194
|
protected applyAgendaOperation(ev: BeButtonEvent, isAccept: boolean): Promise<ElementGeometryResultProps | undefined>;
|
|
195
|
+
applyToolSettingPropertyChange(updatedValue: DialogPropertySyncItem): Promise<boolean>;
|
|
196
|
+
supplyToolSettingsProperties(): DialogItem[] | undefined;
|
|
152
197
|
onRestartTool(): Promise<void>;
|
|
153
198
|
}
|
|
154
199
|
/** @alpha Identify faces or edges for removal by growing surrounding faces. */
|
|
@@ -175,10 +220,22 @@ export declare enum ImprintSolidMethod {
|
|
|
175
220
|
export declare class ImprintSolidElementsTool extends LocateSubEntityTool {
|
|
176
221
|
static toolId: string;
|
|
177
222
|
static iconSpec: string;
|
|
178
|
-
protected method: ImprintSolidMethod;
|
|
179
223
|
protected points: Point3d[];
|
|
180
|
-
|
|
181
|
-
|
|
224
|
+
private static methodMessage;
|
|
225
|
+
private static getMethodChoices;
|
|
226
|
+
private _methodProperty;
|
|
227
|
+
get methodProperty(): DialogProperty<number>;
|
|
228
|
+
get method(): ImprintSolidMethod;
|
|
229
|
+
set method(method: ImprintSolidMethod);
|
|
230
|
+
private _distanceProperty;
|
|
231
|
+
get distanceProperty(): DialogProperty<number>;
|
|
232
|
+
get distance(): number;
|
|
233
|
+
set distance(value: number);
|
|
234
|
+
private _extendProperty;
|
|
235
|
+
get extendProperty(): DialogProperty<boolean>;
|
|
236
|
+
get extend(): boolean;
|
|
237
|
+
set extend(value: boolean);
|
|
238
|
+
protected get requiredSubEntityCount(): number;
|
|
182
239
|
protected get requiredElementCount(): number;
|
|
183
240
|
protected get allowSubEntityControlSelect(): boolean;
|
|
184
241
|
protected get inhibitSubEntityDisplay(): boolean;
|
|
@@ -193,17 +250,23 @@ export declare class ImprintSolidElementsTool extends LocateSubEntityTool {
|
|
|
193
250
|
protected gatherInput(ev: BeButtonEvent): Promise<EventHandled | undefined>;
|
|
194
251
|
protected get wantAdditionalInput(): boolean;
|
|
195
252
|
protected setupAccuDraw(): void;
|
|
253
|
+
applyToolSettingPropertyChange(updatedValue: DialogPropertySyncItem): Promise<boolean>;
|
|
254
|
+
supplyToolSettingsProperties(): DialogItem[] | undefined;
|
|
196
255
|
onRestartTool(): Promise<void>;
|
|
197
256
|
}
|
|
198
257
|
/** @alpha Base class for tools to identify edges of solids and surfaces and apply blends. */
|
|
199
258
|
export declare abstract class BlendEdgesTool extends LocateSubEntityTool {
|
|
200
|
-
|
|
259
|
+
private _addSmoothProperty;
|
|
260
|
+
get addSmoothProperty(): DialogProperty<boolean>;
|
|
261
|
+
get addSmooth(): boolean;
|
|
262
|
+
set addSmooth(value: boolean);
|
|
201
263
|
protected wantSubEntityType(type: SubEntityType): boolean;
|
|
202
264
|
protected getSubEntityFilter(): SubEntityFilter | undefined;
|
|
203
265
|
protected get geometryCacheFilter(): ElementGeometryCacheFilter | undefined;
|
|
204
266
|
protected getTangentEdges(id: Id64String, edge: SubEntityProps): Promise<SubEntityProps[] | undefined>;
|
|
205
267
|
protected addTangentEdges(id: Id64String, edge?: SubEntityProps, chordTolerance?: number): Promise<void>;
|
|
206
268
|
protected removeTangentEdges(_id: Id64String, edge?: SubEntityProps): Promise<void>;
|
|
269
|
+
protected syncTangentEdges(): Promise<void>;
|
|
207
270
|
protected addSubEntity(id: Id64String, props: SubEntityLocationProps): Promise<void>;
|
|
208
271
|
protected removeSubEntity(id: Id64String, props?: SubEntityLocationProps): Promise<void>;
|
|
209
272
|
protected getAcceptedSubEntities(): SubEntityProps[];
|
|
@@ -212,17 +275,44 @@ export declare abstract class BlendEdgesTool extends LocateSubEntityTool {
|
|
|
212
275
|
export declare class RoundEdgesTool extends BlendEdgesTool {
|
|
213
276
|
static toolId: string;
|
|
214
277
|
static iconSpec: string;
|
|
215
|
-
|
|
278
|
+
private _radiusProperty;
|
|
279
|
+
get radiusProperty(): DialogProperty<number>;
|
|
280
|
+
get radius(): number;
|
|
281
|
+
set radius(value: number);
|
|
216
282
|
protected applyAgendaOperation(ev: BeButtonEvent, isAccept: boolean): Promise<ElementGeometryResultProps | undefined>;
|
|
283
|
+
applyToolSettingPropertyChange(updatedValue: DialogPropertySyncItem): Promise<boolean>;
|
|
284
|
+
supplyToolSettingsProperties(): DialogItem[] | undefined;
|
|
217
285
|
onRestartTool(): Promise<void>;
|
|
218
286
|
}
|
|
219
287
|
/** @alpha Identify edges of solids and surfaces to apply a rolling ball blend to. */
|
|
220
288
|
export declare class ChamferEdgesTool extends BlendEdgesTool {
|
|
221
289
|
static toolId: string;
|
|
222
290
|
static iconSpec: string;
|
|
223
|
-
|
|
224
|
-
|
|
291
|
+
private static methodMessage;
|
|
292
|
+
private static getMethodChoices;
|
|
293
|
+
private _methodProperty;
|
|
294
|
+
get methodProperty(): DialogProperty<number>;
|
|
295
|
+
get method(): ChamferMode;
|
|
296
|
+
set method(method: ChamferMode);
|
|
297
|
+
private _lengthProperty;
|
|
298
|
+
get lengthProperty(): DialogProperty<number>;
|
|
299
|
+
get length(): number;
|
|
300
|
+
set length(value: number);
|
|
301
|
+
private _distanceLeftProperty;
|
|
302
|
+
get distanceLeftProperty(): DialogProperty<number>;
|
|
303
|
+
get distanceLeft(): number;
|
|
304
|
+
set distanceLeft(value: number);
|
|
305
|
+
private _distanceRightProperty;
|
|
306
|
+
get distanceRightProperty(): DialogProperty<number>;
|
|
307
|
+
get distanceRight(): number;
|
|
308
|
+
set distanceRight(value: number);
|
|
309
|
+
private _angleProperty;
|
|
310
|
+
get angleProperty(): DialogProperty<number>;
|
|
311
|
+
get angle(): number;
|
|
312
|
+
set angle(value: number);
|
|
225
313
|
protected applyAgendaOperation(ev: BeButtonEvent, isAccept: boolean): Promise<ElementGeometryResultProps | undefined>;
|
|
314
|
+
applyToolSettingPropertyChange(updatedValue: DialogPropertySyncItem): Promise<boolean>;
|
|
315
|
+
supplyToolSettingsProperties(): DialogItem[] | undefined;
|
|
226
316
|
onRestartTool(): Promise<void>;
|
|
227
317
|
}
|
|
228
318
|
/** @alpha */
|
|
@@ -248,20 +338,35 @@ export declare class SweepFacesTool extends LocateFaceOrProfileTool {
|
|
|
248
338
|
protected get wantDynamics(): boolean;
|
|
249
339
|
protected get wantAccuSnap(): boolean;
|
|
250
340
|
protected get wantSubEntitySnap(): boolean;
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
341
|
+
private _addSmoothProperty;
|
|
342
|
+
get addSmoothProperty(): DialogProperty<boolean>;
|
|
343
|
+
get addSmooth(): boolean;
|
|
344
|
+
set addSmooth(value: boolean);
|
|
345
|
+
private _useDistanceProperty;
|
|
346
|
+
get useDistanceProperty(): DialogProperty<boolean>;
|
|
347
|
+
get useDistance(): boolean;
|
|
348
|
+
set useDistance(value: boolean);
|
|
349
|
+
private _distanceProperty;
|
|
350
|
+
get distanceProperty(): DialogProperty<number>;
|
|
351
|
+
get distance(): number;
|
|
352
|
+
set distance(value: number);
|
|
254
353
|
protected getSmoothFaces(id: Id64String, face: SubEntityProps): Promise<SubEntityProps[] | undefined>;
|
|
255
354
|
protected applyAgendaOperation(ev: BeButtonEvent, isAccept: boolean): Promise<ElementGeometryResultProps | undefined>;
|
|
256
355
|
protected setupAccuDraw(): void;
|
|
356
|
+
private syncDistanceState;
|
|
357
|
+
applyToolSettingPropertyChange(updatedValue: DialogPropertySyncItem): Promise<boolean>;
|
|
358
|
+
supplyToolSettingsProperties(): DialogItem[] | undefined;
|
|
257
359
|
onRestartTool(): Promise<void>;
|
|
258
360
|
}
|
|
259
361
|
/** @alpha Identify faces of solids and surfaces to revolve. */
|
|
260
362
|
export declare class SpinFacesTool extends LocateFaceOrProfileTool {
|
|
261
363
|
static toolId: string;
|
|
262
364
|
static iconSpec: string;
|
|
263
|
-
protected sweep: number;
|
|
264
365
|
protected points: Point3d[];
|
|
366
|
+
private _angleProperty;
|
|
367
|
+
get angleProperty(): DialogProperty<number>;
|
|
368
|
+
get angle(): number;
|
|
369
|
+
set angle(value: number);
|
|
265
370
|
protected get wantDynamics(): boolean;
|
|
266
371
|
protected get wantAccuSnap(): boolean;
|
|
267
372
|
protected get wantSubEntitySnap(): boolean;
|
|
@@ -270,6 +375,8 @@ export declare class SpinFacesTool extends LocateFaceOrProfileTool {
|
|
|
270
375
|
protected gatherInput(ev: BeButtonEvent): Promise<EventHandled | undefined>;
|
|
271
376
|
protected get wantAdditionalInput(): boolean;
|
|
272
377
|
protected setupAccuDraw(): void;
|
|
378
|
+
applyToolSettingPropertyChange(updatedValue: DialogPropertySyncItem): Promise<boolean>;
|
|
379
|
+
supplyToolSettingsProperties(): DialogItem[] | undefined;
|
|
273
380
|
onRestartTool(): Promise<void>;
|
|
274
381
|
}
|
|
275
382
|
//# sourceMappingURL=SolidModelingTools.d.ts.map
|