@itwin/core-frontend 5.0.0-dev.49 → 5.0.0-dev.50
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/BriefcaseConnection.d.ts +0 -6
- package/lib/cjs/BriefcaseConnection.d.ts.map +1 -1
- package/lib/cjs/BriefcaseConnection.js +1 -4
- package/lib/cjs/BriefcaseConnection.js.map +1 -1
- package/lib/cjs/DisplayStyleState.d.ts.map +1 -1
- package/lib/cjs/DisplayStyleState.js.map +1 -1
- package/lib/cjs/IModelApp.d.ts +3 -3
- package/lib/cjs/IModelApp.d.ts.map +1 -1
- package/lib/cjs/IModelApp.js.map +1 -1
- package/lib/cjs/IModelConnection.d.ts +2 -66
- package/lib/cjs/IModelConnection.d.ts.map +1 -1
- package/lib/cjs/IModelConnection.js +0 -84
- package/lib/cjs/IModelConnection.js.map +1 -1
- package/lib/cjs/IpcApp.d.ts +1 -3
- package/lib/cjs/IpcApp.d.ts.map +1 -1
- package/lib/cjs/IpcApp.js +0 -4
- package/lib/cjs/IpcApp.js.map +1 -1
- package/lib/cjs/NativeApp.d.ts +1 -8
- package/lib/cjs/NativeApp.d.ts.map +1 -1
- package/lib/cjs/NativeApp.js +2 -8
- package/lib/cjs/NativeApp.js.map +1 -1
- package/lib/cjs/SpatialViewState.d.ts +0 -4
- package/lib/cjs/SpatialViewState.d.ts.map +1 -1
- package/lib/cjs/SpatialViewState.js +0 -10
- package/lib/cjs/SpatialViewState.js.map +1 -1
- package/lib/cjs/Viewport.d.ts +1 -15
- package/lib/cjs/Viewport.d.ts.map +1 -1
- package/lib/cjs/Viewport.js +0 -20
- package/lib/cjs/Viewport.js.map +1 -1
- package/lib/cjs/render/GraphicBuilder.d.ts +0 -6
- package/lib/cjs/render/GraphicBuilder.d.ts.map +1 -1
- package/lib/cjs/render/GraphicBuilder.js +0 -7
- package/lib/cjs/render/GraphicBuilder.js.map +1 -1
- package/lib/cjs/render/RenderSystem.d.ts +1 -22
- package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
- package/lib/cjs/render/RenderSystem.js +0 -53
- package/lib/cjs/render/RenderSystem.js.map +1 -1
- package/lib/cjs/render/RenderTarget.d.ts +1 -5
- package/lib/cjs/render/RenderTarget.d.ts.map +1 -1
- package/lib/cjs/render/RenderTarget.js +0 -4
- package/lib/cjs/render/RenderTarget.js.map +1 -1
- package/lib/cjs/render/webgl/System.d.ts +0 -2
- package/lib/cjs/render/webgl/System.d.ts.map +1 -1
- package/lib/cjs/render/webgl/System.js +0 -7
- package/lib/cjs/render/webgl/System.js.map +1 -1
- package/lib/cjs/render/webgl/Target.d.ts +1 -5
- package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Target.js +0 -73
- package/lib/cjs/render/webgl/Target.js.map +1 -1
- package/lib/cjs/tile/ImdlGraphicsCreator.d.ts.map +1 -1
- package/lib/cjs/tile/ImdlGraphicsCreator.js +7 -2
- package/lib/cjs/tile/ImdlGraphicsCreator.js.map +1 -1
- package/lib/cjs/tile/OrbitGtTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/OrbitGtTileTree.js +0 -3
- package/lib/cjs/tile/OrbitGtTileTree.js.map +1 -1
- package/lib/cjs/tile/PrimaryTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
- package/lib/cjs/tile/RealityModelTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/RealityModelTileTree.js +0 -5
- package/lib/cjs/tile/RealityModelTileTree.js.map +1 -1
- package/lib/cjs/tile/TileAdmin.js.map +1 -1
- package/lib/cjs/tools/AccuDrawViewportUI.d.ts +0 -2
- package/lib/cjs/tools/AccuDrawViewportUI.d.ts.map +1 -1
- package/lib/cjs/tools/AccuDrawViewportUI.js +3 -7
- package/lib/cjs/tools/AccuDrawViewportUI.js.map +1 -1
- package/lib/esm/BriefcaseConnection.d.ts +0 -6
- package/lib/esm/BriefcaseConnection.d.ts.map +1 -1
- package/lib/esm/BriefcaseConnection.js +1 -4
- package/lib/esm/BriefcaseConnection.js.map +1 -1
- package/lib/esm/DisplayStyleState.d.ts.map +1 -1
- package/lib/esm/DisplayStyleState.js.map +1 -1
- package/lib/esm/IModelApp.d.ts +3 -3
- package/lib/esm/IModelApp.d.ts.map +1 -1
- package/lib/esm/IModelApp.js.map +1 -1
- package/lib/esm/IModelConnection.d.ts +2 -66
- package/lib/esm/IModelConnection.d.ts.map +1 -1
- package/lib/esm/IModelConnection.js +3 -87
- package/lib/esm/IModelConnection.js.map +1 -1
- package/lib/esm/IpcApp.d.ts +1 -3
- package/lib/esm/IpcApp.d.ts.map +1 -1
- package/lib/esm/IpcApp.js +0 -4
- package/lib/esm/IpcApp.js.map +1 -1
- package/lib/esm/NativeApp.d.ts +1 -8
- package/lib/esm/NativeApp.d.ts.map +1 -1
- package/lib/esm/NativeApp.js +2 -8
- package/lib/esm/NativeApp.js.map +1 -1
- package/lib/esm/SpatialViewState.d.ts +0 -4
- package/lib/esm/SpatialViewState.d.ts.map +1 -1
- package/lib/esm/SpatialViewState.js +0 -10
- package/lib/esm/SpatialViewState.js.map +1 -1
- package/lib/esm/Viewport.d.ts +1 -15
- package/lib/esm/Viewport.d.ts.map +1 -1
- package/lib/esm/Viewport.js +1 -21
- package/lib/esm/Viewport.js.map +1 -1
- package/lib/esm/render/GraphicBuilder.d.ts +0 -6
- package/lib/esm/render/GraphicBuilder.d.ts.map +1 -1
- package/lib/esm/render/GraphicBuilder.js +0 -7
- package/lib/esm/render/GraphicBuilder.js.map +1 -1
- package/lib/esm/render/RenderSystem.d.ts +1 -22
- package/lib/esm/render/RenderSystem.d.ts.map +1 -1
- package/lib/esm/render/RenderSystem.js +1 -54
- package/lib/esm/render/RenderSystem.js.map +1 -1
- package/lib/esm/render/RenderTarget.d.ts +1 -5
- package/lib/esm/render/RenderTarget.d.ts.map +1 -1
- package/lib/esm/render/RenderTarget.js +0 -4
- package/lib/esm/render/RenderTarget.js.map +1 -1
- package/lib/esm/render/webgl/System.d.ts +0 -2
- package/lib/esm/render/webgl/System.d.ts.map +1 -1
- package/lib/esm/render/webgl/System.js +0 -7
- package/lib/esm/render/webgl/System.js.map +1 -1
- package/lib/esm/render/webgl/Target.d.ts +1 -5
- package/lib/esm/render/webgl/Target.d.ts.map +1 -1
- package/lib/esm/render/webgl/Target.js +0 -73
- package/lib/esm/render/webgl/Target.js.map +1 -1
- package/lib/esm/tile/ImdlGraphicsCreator.d.ts.map +1 -1
- package/lib/esm/tile/ImdlGraphicsCreator.js +7 -2
- package/lib/esm/tile/ImdlGraphicsCreator.js.map +1 -1
- package/lib/esm/tile/OrbitGtTileTree.d.ts.map +1 -1
- package/lib/esm/tile/OrbitGtTileTree.js +0 -3
- package/lib/esm/tile/OrbitGtTileTree.js.map +1 -1
- package/lib/esm/tile/PrimaryTileTree.d.ts.map +1 -1
- package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
- package/lib/esm/tile/RealityModelTileTree.d.ts.map +1 -1
- package/lib/esm/tile/RealityModelTileTree.js +0 -5
- package/lib/esm/tile/RealityModelTileTree.js.map +1 -1
- package/lib/esm/tile/TileAdmin.js.map +1 -1
- package/lib/esm/tools/AccuDrawViewportUI.d.ts +0 -2
- package/lib/esm/tools/AccuDrawViewportUI.d.ts.map +1 -1
- package/lib/esm/tools/AccuDrawViewportUI.js +3 -7
- package/lib/esm/tools/AccuDrawViewportUI.js.map +1 -1
- package/package.json +16 -16
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccuDrawViewportUI.js","sourceRoot":"","sources":["../../../src/tools/AccuDrawViewportUI.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module AccuDraw\n */\nimport { FormatType, Parser } from \"@itwin/core-quantity\";\nimport { AccuDraw, CompassMode, ItemField } from \"../AccuDraw\";\nimport { ViewRect } from \"../common/ViewRect\";\nimport { IModelApp } from \"../IModelApp\";\nimport { AccuDrawShortcuts } from \"./AccuDrawTool\";\nimport { BeButtonEvent } from \"./Tool\";\nimport { ScreenViewport } from \"../Viewport\";\n\ninterface AccuDrawControls {\n overlay: HTMLDivElement; // Viewport overlay...\n div: HTMLDivElement; // Child of overlay used to position controls...\n itemFields: HTMLInputElement[]; // Text fields indexed by ItemField...\n itemLocks: HTMLButtonElement[]; // Lock toggles indexed by ItemField...\n}\n\n/** Provides an in viewport user interface for AccuDraw that can optionally follow the cursor or remain at a fixed location.\n * @beta\n */\nexport class AccuDrawViewportUI extends AccuDraw {\n private _focusItem: ItemField;\n private _controls?: AccuDrawControls;\n private _toolTipsSuspended?: true;\n private _expression?: { item: ItemField, operator: string };\n\n /** Settings to control the behavior and visual appearance of the viewport controls.\n * @note Colors were chosen for visibility against viewport background and contents.\n */\n public static controlProps = {\n /** Suspend locate tooltip when controls are shown, may wish to disable when using fixed location. */\n suspendLocateToolTip: true,\n /** Show controls at a fixed location in the view (currently bottom middle) instead of following the cursor. */\n fixedLocation: false,\n /** Layout controls in a single row horizontally instead of in columns vertically as an option when using fixed location. */\n horizontalArrangement: false,\n /** Replace \"^\", \";\", and \"..\" with \"°\" or \":\" for easier input. */\n simplifiedInput: true,\n /** Enable simple math operations not supported by quantity parser. */\n mathOperations: true,\n /** Number of visible characters to show in text input fields. */\n fieldSize: 12,\n /** Row spacing of text input fields for vertical arrangement. */\n rowSpacingFactor: 1.2,\n /** Column spacing of text input fields and buttons for horizontal arrangement. */\n columnSpacingFactor: 1.1,\n /** Corner radius of text input fields and locks buttons. */\n borderRadius: \"0.5em\",\n /** Background color of unfocused text input fields and unlocked buttons. */\n backgroundColor: \"rgba(150, 150, 150, 0.5)\",\n\n /** Settings specific to text input fields and lock button labels. */\n text: {\n /** Font family to use for text input field values and button labels. */\n fontFamily: \"sans-serif\",\n /** Font size to use for text input field values and button labels. */\n fontSize: \"9pt\",\n /** Font color to use for text input field values and button labels. */\n color: \"white\",\n /** Background color of focused text input field. */\n focusColor: \"rgba(50, 50, 200, 0.75)\",\n },\n\n /** Settings specific to lock buttons. */\n button: {\n /** Background color of locked buttons. */\n pressedColor: \"rgba(50, 50, 50, 0.75)\",\n /** Padding to use on left and right of label and affects overall width. */\n padding: \"0.25em\",\n /** Margin to use on left and right to position relative to text input field. */\n margin: \"0.25em\",\n /** Width of border outline. */\n outlineWidth: \"thin\",\n /** Shadow shown when unlocked to make it appear raised. */\n shadow: \"0.25em 0.25em 0.2em rgb(75, 75, 75)\",\n },\n };\n\n /** Create a new instance of this class to set as [[IModelAppOptions.accuDraw]] for this session. */\n public constructor() {\n super();\n this._focusItem = this.defaultFocusItem();\n }\n\n /** Call to set a vertical layout that follows the cursor. This is the default configuration. */\n public setVerticalCursorLayout() {\n const props = AccuDrawViewportUI.controlProps;\n props.horizontalArrangement = false;\n props.fixedLocation = false;\n props.suspendLocateToolTip = true;\n }\n\n /** Call to set a horizontal layout that is anchored to the bottom middle of the view. */\n public setHorizontalFixedLayout() {\n const props = AccuDrawViewportUI.controlProps;\n props.horizontalArrangement = true;\n props.fixedLocation = true;\n props.suspendLocateToolTip = false;\n }\n\n /** Call to update the currently displayed controls after settings are changed. */\n public refreshControls(): void {\n if (undefined === this._controls)\n return;\n\n this.removeControls();\n if (!this.isActive)\n return;\n\n // Shouldn't need to call IModelApp.toolAdmin.simulateMotionEvent() in this case...\n const ev = new BeButtonEvent();\n IModelApp.toolAdmin.fillEventFromCursorLocation(ev);\n this.updateControls(ev);\n }\n\n private suspendToolTips() {\n if (!AccuDrawViewportUI.controlProps.suspendLocateToolTip || undefined === (this._toolTipsSuspended = (IModelApp.accuSnap.userSettings.toolTip ? true : undefined)))\n return;\n IModelApp.accuSnap.userSettings.toolTip = false;\n IModelApp.notifications.clearToolTip();\n }\n\n private unsuspendToolTips() {\n if (undefined === this._toolTipsSuspended)\n return;\n IModelApp.accuSnap.userSettings.toolTip = true;\n this._toolTipsSuspended = undefined;\n }\n\n\n private setDynamicKeyinStatus(item: ItemField): void {\n // This does nothing if keyin status is already dynamic...\n AccuDrawShortcuts.itemFieldCompletedInput(item);\n }\n\n private setPartialKeyinStatus(item: ItemField, selectAll: boolean): void {\n if (!this.isDynamicKeyinStatus(item))\n return;\n\n AccuDrawShortcuts.itemFieldNewInput(item);\n if (undefined === this._controls || !selectAll)\n return;\n\n const itemField = this._controls.itemFields[item];\n itemField.setSelectionRange(0, itemField.value.length);\n }\n\n private makeParserHappy(value: string, isAngle: boolean): string {\n // TODO: Work around for default length parser not accepting output formatted with dash separator, ex. 20'-6\"...\n const parserSpec = (isAngle ? undefined : this.getLengthParser());\n if (undefined === parserSpec)\n return value;\n return (FormatType.Fractional === parserSpec.format.type && -1 !== value.indexOf(\"'-\") ? value.replaceAll(\"'-\", \"':\") : value);\n }\n\n private evaluateExpression(operator: string, operandA: number, operandB: number): number {\n switch (operator) {\n case \"+\":\n return operandA + operandB;\n case \"-\":\n return operandA - operandB;\n case \"*\":\n return operandA * operandB;\n case \"/\":\n return operandA / operandB;\n default:\n return operandA;\n }\n }\n\n private parseExpression(currentValue: string, isAngle: boolean): string | undefined {\n if (undefined === this._expression)\n return undefined; // Not an expression...\n\n // Attempt to parse and apply operation to current value...\n const operator = currentValue.lastIndexOf(this._expression.operator)\n if (-1 === operator) {\n this._expression = undefined; // Operator has been edited out of string, parse current value...\n return undefined;\n }\n\n const parserSpec = (isAngle ? this.getAngleParser() : this.getLengthParser());\n const formatterSpec = (isAngle ? this.getAngleFormatter() : this.getLengthFormatter());\n if (undefined === parserSpec || undefined === formatterSpec)\n return undefined; // Nothing to do...\n\n const operandAStr = currentValue.substring(0, operator);\n const parseResultA = parserSpec.parseToQuantityValue(this.makeParserHappy(operandAStr, isAngle));\n if (!Parser.isParsedQuantity(parseResultA))\n return undefined; // First operand isn't valid, try to parse current value (which is also likely to fail)...\n\n const operandBStr = currentValue.substring(operator + this._expression.operator.length);\n const operatorKey = this._expression.operator[1];\n const isNumber = (\"*\" === operatorKey || \"/\" === operatorKey); // Treat as number for */ and quantity for +-...\n let operandB;\n\n if (isNumber) {\n operandB = parseFloat(operandBStr);\n if (Number.isNaN(operandB))\n return operandAStr; // Second operand is invalid number, set value to first operand which is valid...\n } else {\n const parseResultB = parserSpec.parseToQuantityValue(this.makeParserHappy(operandBStr, isAngle));\n if (!Parser.isParsedQuantity(parseResultB))\n return operandAStr; // Second operand is invalid quantity, set value to first operand which is valid...\n operandB = parseResultB.value;\n }\n\n const operandA = parseResultA.value;\n const newValue = this.evaluateExpression(operatorKey, operandA, operandB);\n const newValueStr = IModelApp.quantityFormatter.formatQuantity(newValue, formatterSpec);\n\n return newValueStr;\n }\n\n private async processPartialInput(item: ItemField): Promise<void> {\n if (undefined === this._controls)\n return;\n\n const itemField = this._controls.itemFields[item];\n const currentValue = itemField.value;\n\n // If current value has been deleted, unlock field and refresh for current cursor location...\n if (0 === currentValue.length) {\n this.updateFieldLock(item, false);\n IModelApp.toolAdmin.simulateMotionEvent();\n return;\n }\n\n const isAngle = (ItemField.ANGLE_Item === item);\n const expressionValue = this.parseExpression(currentValue, isAngle);\n return this.processFieldInput(item, this.makeParserHappy(expressionValue ?? currentValue, isAngle), false);\n }\n\n private async acceptPartialInput(item: ItemField, forward?: boolean): Promise<void> {\n if (undefined === this._controls)\n return;\n\n const itemField = this._controls.itemFields[item];\n const currentValue = itemField.value;\n const isAngle = (ItemField.ANGLE_Item === item);\n const expressionValue = this.parseExpression(currentValue, isAngle);\n\n if (undefined === forward)\n return AccuDrawShortcuts.itemFieldAcceptInput(item, this.makeParserHappy(expressionValue ?? currentValue, isAngle));\n\n return AccuDrawShortcuts.itemFieldNavigate(item, this.makeParserHappy(expressionValue ?? currentValue, isAngle), forward);\n }\n\n private acceptSavedValue(item: ItemField, next: boolean): void {\n if (next)\n AccuDrawShortcuts.chooseNextValue(item);\n else\n AccuDrawShortcuts.choosePreviousValue(item);\n }\n\n private doFocusHome(ev: KeyboardEvent, isDown: boolean, _item: ItemField): void {\n ev.preventDefault();\n if (!isDown || this._isFocusHome)\n return;\n\n ev.stopPropagation();\n this.setFocusHome();\n IModelApp.viewManager.invalidateDecorationsAllViews();\n }\n\n private async doChooseSavedValue(ev: KeyboardEvent, isDown: boolean, item: ItemField, next: boolean): Promise<void> {\n ev.preventDefault();\n ev.stopPropagation();\n\n if (!isDown)\n return;\n\n this.acceptSavedValue(item, next);\n }\n\n private async doNavigate(ev: KeyboardEvent, isDown: boolean, item: ItemField, forward: boolean): Promise<void> {\n ev.preventDefault();\n ev.stopPropagation();\n\n if (!isDown)\n return;\n\n return this.acceptPartialInput(item, forward);\n }\n\n private async doAcceptInput(ev: KeyboardEvent, isDown: boolean, item: ItemField): Promise<void> {\n ev.preventDefault();\n if (!isDown || this.isDynamicKeyinStatus(item))\n return;\n\n ev.stopPropagation();\n return this.acceptPartialInput(item);\n }\n\n private doNewInput(_ev: KeyboardEvent, isDown: boolean, item: ItemField): void {\n if (!isDown)\n return;\n\n this.setPartialKeyinStatus(item, false);\n }\n\n private async doDeleteInput(_ev: KeyboardEvent, isDown: boolean, item: ItemField): Promise<void> {\n if (isDown)\n return this.setPartialKeyinStatus(item, false);\n\n return this.processPartialInput(item);\n }\n\n private processReplacementKey(ev: KeyboardEvent, isDown: boolean, item: ItemField, replacement: string, allowStart: boolean): boolean {\n if (undefined === this._controls)\n return false;\n\n ev.preventDefault()\n if (!isDown || 0 === replacement.length || this.isDynamicKeyinStatus(item))\n return true;\n\n const itemField = this._controls.itemFields[item];\n if (null === itemField.selectionStart || null === itemField.selectionEnd)\n return true;\n\n const currentValue = itemField.value;\n if (!allowStart && (!currentValue.length || !itemField.selectionStart || !itemField.selectionEnd))\n return true;\n\n const selectionStart = (itemField.selectionStart > itemField.selectionEnd ? itemField.selectionEnd : itemField.selectionStart);\n itemField.value = currentValue.substring(0, selectionStart) + replacement + currentValue.substring(itemField.selectionEnd);\n itemField.selectionStart = itemField.selectionEnd = selectionStart + 1;\n\n return false;\n }\n\n private processRepeatedKey(ev: KeyboardEvent, isDown: boolean, item: ItemField, replacement: string): boolean {\n if (undefined === this._controls)\n return false;\n\n const itemField = this._controls.itemFields[item];\n const currentValue = itemField.value;\n if (!currentValue.length || !itemField.selectionStart || !itemField.selectionEnd)\n return false;\n\n const selectionStart = (itemField.selectionStart > itemField.selectionEnd ? itemField.selectionEnd : itemField.selectionStart);\n if (selectionStart !== itemField.selectionEnd)\n return false;\n\n const selectionPrevious = selectionStart - 1;\n if (currentValue[selectionPrevious] !== (isDown ? ev.key : replacement))\n return false;\n\n ev.preventDefault()\n if (!isDown)\n return false;\n\n itemField.value = currentValue.substring(0, selectionPrevious) + replacement + currentValue.substring(selectionStart);\n itemField.selectionStart = itemField.selectionEnd = selectionPrevious + 1;\n\n return false;\n }\n\n private doProcessOverrideKey(ev: KeyboardEvent, isDown: boolean, item: ItemField): boolean {\n if (undefined === this._controls || !AccuDrawViewportUI.controlProps.simplifiedInput)\n return false;\n\n switch (ev.key) {\n case \"^\":\n return this.processReplacementKey(ev, isDown, item, (ItemField.ANGLE_Item === item ? \"°\" : \"\"), false); // Easier \"°\" input...\n case \";\":\n return this.processReplacementKey(ev, isDown, item, (ItemField.ANGLE_Item === item ? \"°\" : \":\"), false); // Easier \":\" input still useful w/o MU:SU:PU?\n case \".\":\n return this.processRepeatedKey(ev, isDown, item, \":\"); // Still useful replacing \"..\" with \":\" for numeric keypad users w/o MU:SU:PU?\n default:\n return false;\n }\n }\n\n private doProcessExpressionKey(ev: KeyboardEvent, isDown: boolean, item: ItemField): boolean {\n if (undefined === this._controls || !AccuDrawViewportUI.controlProps.mathOperations)\n return false;\n\n const itemField = this._controls.itemFields[item];\n const currentValue = itemField.value;\n\n switch (ev.key) {\n case \"ArrowLeft\":\n case \"ArrowRight\":\n if (undefined === this._expression || !isDown || this.isDynamicKeyinStatus(item) || !itemField.selectionStart)\n break;\n\n const moveLeft = (\"ArrowLeft\" === ev.key);\n const operatorPosIns = currentValue.lastIndexOf(this._expression.operator);\n if (itemField.selectionStart !== (moveLeft ? operatorPosIns + this._expression.operator.length : operatorPosIns))\n break;\n\n // Treat expression operator string as a single character when moving the text insertion cursor...\n itemField.selectionStart = itemField.selectionEnd = (moveLeft ? operatorPosIns : operatorPosIns + this._expression.operator.length);\n ev.preventDefault();\n return true;\n\n case \"Backspace\":\n case \"Delete\":\n if (undefined === this._expression || !isDown || this.isDynamicKeyinStatus(item) || !itemField.selectionStart)\n break;\n\n const deleteBefore = (\"Backspace\" === ev.key);\n const operatorPosDel = currentValue.lastIndexOf(this._expression.operator);\n if (itemField.selectionStart !== (deleteBefore ? operatorPosDel + this._expression.operator.length : operatorPosDel))\n break;\n\n // Treat expression operator string as single character for delete...\n itemField.value = currentValue.substring(0, operatorPosDel);\n itemField.selectionStart = itemField.selectionEnd = itemField.value.length;\n this._expression = undefined;\n ev.preventDefault();\n return true;\n\n case \" \":\n if (!isDown || !this.isDynamicKeyinStatus(item))\n break;\n\n this.setPartialKeyinStatus(item, false); // Replacing current w/space isn't useful, append to end to support + or - more conveniently...\n return true;\n\n case \"+\":\n case \"-\":\n case \"*\":\n case \"/\":\n if (!isDown || undefined !== this._expression)\n break;\n\n if (!currentValue.length || !itemField.selectionStart || itemField.selectionStart !== currentValue.length)\n break;\n\n const haveSpace = (\" \" === currentValue[itemField.selectionStart - 1]);\n const requireSpace = (\"+\" === ev.key || \"-\" === ev.key); // These are valid for 1st character to replace current value...\n\n if (!(requireSpace ? haveSpace : (haveSpace || this.isDynamicKeyinStatus(item))))\n break;\n\n const operator = ` ${ev.key} `\n const expression = `${currentValue + (haveSpace ? operator.substring(1) : operator)}`;\n\n itemField.value = expression;\n itemField.selectionStart = itemField.selectionEnd = itemField.value.length;\n this._expression = { item, operator };\n\n this.setPartialKeyinStatus(item, false);\n ev.preventDefault();\n\n return true;\n }\n\n return false;\n }\n\n private async doProcessKey(ev: KeyboardEvent, isDown: boolean, item: ItemField): Promise<void> {\n if (!this.itemFieldInputIsValid(ev.key, item)) {\n ev.preventDefault(); // Ignore potential shortcuts...\n return;\n }\n\n if (this.doProcessOverrideKey(ev, isDown, item))\n return;\n\n if (this.doProcessExpressionKey(ev, isDown, item))\n return;\n\n if (isDown)\n return this.setPartialKeyinStatus(item, true);\n\n return this.processPartialInput(item);\n }\n\n private async onKeyboardEvent(ev: KeyboardEvent, isDown: boolean): Promise<void> {\n if (ev.ctrlKey || ev.altKey || ev.metaKey) {\n ev.preventDefault(); // Ignore qualifiers other than shift...\n return;\n }\n\n switch (ev.key) {\n case \"Escape\":\n return this.doFocusHome(ev, isDown, this._focusItem);\n case \"PageDown\":\n return this.doChooseSavedValue(ev, isDown, this._focusItem, true);\n case \"PageUp\":\n return this.doChooseSavedValue(ev, isDown, this._focusItem, false);\n case \"Tab\":\n return this.doNavigate(ev, isDown, this._focusItem, !ev.shiftKey);\n case \"ArrowDown\":\n if (ev.shiftKey)\n return this.doChooseSavedValue(ev, isDown, this._focusItem, true);\n return this.doNavigate(ev, isDown, this._focusItem, true);\n case \"ArrowUp\":\n if (ev.shiftKey)\n return this.doChooseSavedValue(ev, isDown, this._focusItem, false);\n return this.doNavigate(ev, isDown, this._focusItem, false);\n case \"Enter\":\n return this.doAcceptInput(ev, isDown, this._focusItem);\n case \"Home\":\n case \"End\":\n case \"Insert\":\n return this.doNewInput(ev, isDown, this._focusItem);\n case \"ArrowLeft\":\n case \"ArrowRight\":\n if (this.doProcessExpressionKey(ev, isDown, this._focusItem))\n return;\n return this.doNewInput(ev, isDown, this._focusItem);\n case \"Backspace\":\n case \"Delete\":\n if (this.doProcessExpressionKey(ev, isDown, this._focusItem))\n return;\n return this.doDeleteInput(ev, isDown, this._focusItem);\n default:\n return this.doProcessKey(ev, isDown, this._focusItem);\n }\n }\n\n private removeControls(): void {\n if (undefined === this._controls)\n return;\n\n this._controls.overlay.remove();\n this._controls = undefined;\n this.unsuspendToolTips();\n }\n\n private createControlDiv(): HTMLDivElement {\n const div = document.createElement(\"div\");\n div.className = \"accudraw-controls\";\n\n const style = div.style;\n style.pointerEvents = \"none\";\n style.overflow = \"visible\"; // Don't clip/hide outline or shadow...\n style.position = \"absolute\";\n style.top = style.left = \"0\";\n style.height = style.width = \"100%\";\n\n return div;\n }\n\n private updateItemFieldKeyinStatus(itemField: HTMLInputElement, item: ItemField) {\n const isDynamic = this.isDynamicKeyinStatus(item)\n\n if (isDynamic && item === this._expression?.item)\n this._expression = undefined; // Only valid when entering partial input...\n\n itemField.style.caretColor = isDynamic ? itemField.style.backgroundColor : itemField.style.color;\n }\n\n private updateItemFieldValue(itemField: HTMLInputElement, item: ItemField) {\n const value = this.getFormattedValueByIndex(item)\n itemField.value = value;\n this.updateItemFieldKeyinStatus(itemField, item);\n }\n\n private updateItemFieldLock(itemLock: HTMLButtonElement, item: ItemField) {\n const locked = this.getFieldLock(item);\n itemLock.style.outlineStyle = locked ? \"inset\" : \"outset\";\n itemLock.style.boxShadow = locked ? \"none\" : AccuDrawViewportUI.controlProps.button.shadow;\n itemLock.style.backgroundColor = locked ? AccuDrawViewportUI.controlProps.button.pressedColor : AccuDrawViewportUI.controlProps.backgroundColor;\n }\n\n private initializeItemStyle(style: CSSStyleDeclaration, isButton: boolean): void {\n style.pointerEvents = \"none\"; // Don't receive pointer events...\n style.position = \"absolute\";\n style.textWrap = \"nowrap\";\n style.textAnchor = \"top\";\n style.textAlign = isButton ? \"center\" : \"left\";\n\n const controlProps = AccuDrawViewportUI.controlProps;\n style.fontFamily = controlProps.text.fontFamily;\n style.fontSize = controlProps.text.fontSize;\n style.color = controlProps.text.color;\n style.backgroundColor = controlProps.backgroundColor;\n style.borderRadius = controlProps.borderRadius;\n }\n\n private createItemField(item: ItemField): HTMLInputElement {\n const itemField = document.createElement(\"input\");\n\n itemField.contentEditable = \"true\";\n itemField.size = AccuDrawViewportUI.controlProps.fieldSize;\n\n const style = itemField.style;\n this.initializeItemStyle(style, false);\n this.updateItemFieldValue(itemField, item);\n\n itemField.onkeydown = async (ev: KeyboardEvent) => { await this.onKeyboardEvent(ev, true); };\n itemField.onkeyup = async (ev: KeyboardEvent) => { await this.onKeyboardEvent(ev, false); };\n itemField.onfocus = (ev: FocusEvent) => { this.onFocusChange(ev, item, true); };\n itemField.onblur = (ev: FocusEvent) => { this.onFocusChange(ev, item, false); };;\n\n return itemField;\n }\n\n private createItemFieldLock(item: ItemField): HTMLButtonElement {\n const itemLock = document.createElement(\"button\");\n\n itemLock.type = \"button\";\n itemLock.contentEditable = \"false\";\n itemLock.disabled = true; // Don't receive focus...\n\n switch (item) {\n case ItemField.DIST_Item:\n itemLock.innerHTML = \"\\u21A6\"; // right arrow from bar...\n break;\n case ItemField.ANGLE_Item:\n itemLock.innerHTML = \"\\u2221\"; // measured angle...\n break;\n case ItemField.X_Item:\n itemLock.innerHTML = \"X\";\n break;\n case ItemField.Y_Item:\n itemLock.innerHTML = \"Y\";\n break;\n case ItemField.Z_Item:\n itemLock.innerHTML = \"Z\";\n break;\n }\n\n const style = itemLock.style;\n this.initializeItemStyle(style, true);\n this.updateItemFieldLock(itemLock, item);\n\n const button = AccuDrawViewportUI.controlProps.button;\n style.paddingLeft = style.paddingRight = button.padding;\n style.marginLeft = style.marginRight = button.margin;\n style.outlineWidth = button.outlineWidth;\n\n return itemLock;\n }\n\n /** Use to override the position of the controls in the supplied view. */\n protected modifyControlRect(_rect: ViewRect, _vp: ScreenViewport): void { }\n\n /** Return the ViewRect currently occupied by the controls in the supplied view. */\n protected currentControlRect(vp: ScreenViewport): ViewRect | undefined {\n if (undefined === this._controls || this._controls.overlay.parentElement !== vp.vpDiv)\n return undefined;\n\n const viewRect = vp.vpDiv.getBoundingClientRect();\n const elemRect = this._controls.div.getBoundingClientRect();\n const controlRect = new ViewRect(elemRect.left - viewRect.left, elemRect.top - viewRect.top, elemRect.right - viewRect.left, elemRect.bottom - viewRect.top);\n\n return controlRect;\n }\n\n private updateControlVisibility(isPolar: boolean, is3d?: boolean): void {\n if (undefined === this._controls)\n return;\n\n this._controls.itemFields[ItemField.ANGLE_Item].hidden = !isPolar;\n this._controls.itemLocks[ItemField.ANGLE_Item].hidden = !isPolar;\n\n this._controls.itemFields[ItemField.DIST_Item].hidden = !isPolar;\n this._controls.itemLocks[ItemField.DIST_Item].hidden = !isPolar;\n\n this._controls.itemFields[ItemField.X_Item].hidden = isPolar;\n this._controls.itemLocks[ItemField.X_Item].hidden = isPolar;\n\n this._controls.itemFields[ItemField.Y_Item].hidden = isPolar;\n this._controls.itemLocks[ItemField.Y_Item].hidden = isPolar;\n\n if (undefined === is3d)\n return;\n\n this._controls.itemFields[ItemField.Z_Item].hidden = !is3d;\n this._controls.itemLocks[ItemField.Z_Item].hidden = !is3d;\n }\n\n private updateControls(ev: BeButtonEvent): void {\n const vp = ev.viewport;\n if (undefined === vp || !this.isActive)\n return;\n\n if (undefined !== this._controls && this._controls.overlay.parentElement !== vp.vpDiv)\n this.removeControls(); // Could be enhanced to save/restore partial input of currently focused item...\n\n if (undefined === this._controls) {\n const overlay = vp.addNewDiv(\"accudraw-overlay\", true, 35);\n const div = this.createControlDiv();\n const is3dLayout = vp.view.is3d();\n const isHorizontalLayout = AccuDrawViewportUI.controlProps.horizontalArrangement;\n\n overlay.appendChild(div);\n\n const createFieldAndLock = (item: ItemField) => {\n const itemField = itemFields[item] = this.createItemField(item);\n itemField.style.top = isHorizontalLayout ? \"0\" : `${rowOffset}px`;\n itemField.style.left = isHorizontalLayout ? `${columnOffset}px` : \"0\";\n\n div.appendChild(itemField);\n\n if (is3dLayout || ItemField.Z_Item !== item)\n rowOffset += itemField.offsetHeight * AccuDrawViewportUI.controlProps.rowSpacingFactor;\n\n itemWidth = itemField.offsetWidth;\n itemHeight = itemField.offsetHeight;\n\n const itemLock = itemLocks[item] = this.createItemFieldLock(item);\n itemLock.style.top = itemField.style.top;\n itemLock.style.left = isHorizontalLayout ? `${columnOffset + itemWidth}px` : `${itemWidth}px`;\n\n div.appendChild(itemLock);\n\n if (0 === lockWidth)\n lockWidth = itemLock.offsetWidth;\n else\n itemLock.style.width = `${lockWidth}px`;\n\n if (is3dLayout || ItemField.Z_Item !== item)\n columnOffset += (itemWidth + lockWidth) * AccuDrawViewportUI.controlProps.columnSpacingFactor;\n };\n\n let rowOffset = 0;\n let columnOffset = 0;\n let itemWidth = 0;\n let itemHeight = 0;\n let lockWidth = 0;\n\n const itemFields: HTMLInputElement[] = [];\n const itemLocks: HTMLButtonElement[] = [];\n\n createFieldAndLock(ItemField.DIST_Item);\n createFieldAndLock(ItemField.ANGLE_Item);\n\n rowOffset = 0;\n columnOffset = 0;\n\n createFieldAndLock(ItemField.X_Item);\n createFieldAndLock(ItemField.Y_Item);\n createFieldAndLock(ItemField.Z_Item); // Both polar and rectangular modes support Z in 3d views...\n\n div.style.width = isHorizontalLayout ? `${columnOffset}px` : `${itemWidth + lockWidth + 5}px`;\n div.style.height = isHorizontalLayout ? `${itemHeight * AccuDrawViewportUI.controlProps.rowSpacingFactor}px` : `${rowOffset}px`;\n\n this._controls = { overlay, div, itemFields, itemLocks };\n this.updateControlVisibility(CompassMode.Polar === this.compassMode, vp.view.is3d());\n this.setFocusItem(this._focusItem);\n this.suspendToolTips();\n\n vp.onChangeView.addOnce(() => this.removeControls()); // Clear on view change/closure...\n }\n\n const viewRect = vp.viewRect;\n const position = vp.worldToView(ev.point);\n\n if (AccuDrawViewportUI.controlProps.fixedLocation) {\n position.x = (viewRect.left + ((viewRect.width - this._controls.div.offsetWidth) * 0.5));\n position.y = (viewRect.bottom - this._controls.div.offsetHeight);\n } else {\n position.x += Math.floor(vp.pixelsFromInches(0.4)) + 0.5;\n position.y += Math.floor(vp.pixelsFromInches(0.1)) + 0.5;\n }\n\n const controlRect = new ViewRect(position.x, position.y, position.x + this._controls.div.offsetWidth, position.y + this._controls.div.offsetHeight);\n this.modifyControlRect(controlRect, vp);\n\n if (!controlRect.isContained(viewRect))\n return; // Keep showing at last valid location...\n\n this._controls.div.style.left = `${controlRect.left}px`;\n this._controls.div.style.top = `${controlRect.top}px`;\n }\n\n private get _isFocusHome(): boolean {\n return (document.body === document.activeElement);\n }\n\n private get _isFocusAccuDraw(): boolean {\n return (undefined !== this._controls && document.activeElement?.parentElement === this._controls.itemFields[this._focusItem].parentElement);\n }\n\n private setFocusHome(): void {\n const element = document.activeElement as HTMLElement;\n if (element && element !== document.body)\n element.blur();\n document.body.focus();\n }\n\n /** Return whether keyboard shortcuts can or can't be used.\n * Used to show a visual indication of whether keyboard shortcuts will be processed.\n * Keyboard shortcuts can be supported when focus is either on AccuDraw or Home.\n * When returning false the compass displays in monochrome.\n */\n public override get hasInputFocus(): boolean {\n // Indicate when keyboard shortcuts can't be used (i.e. focus not at AccuDraw or Home) by changing compass to monochrome...\n return (this._isFocusHome || this._isFocusAccuDraw);\n }\n\n /** Request to set focus to the specified AccuDraw input field to start entering values.\n * The focused input field will be indicated by the background color.\n */\n public override setFocusItem(index: ItemField) {\n this._focusItem = index;\n if (undefined === this._controls)\n return;\n const itemField = this._controls.itemFields[this._focusItem];\n itemField.focus();\n }\n\n /** Request to set focus to the active AccuDraw input field to start entering values.\n * The focused input field will be indicated by the background color.\n */\n public override grabInputFocus() {\n // Set focus to active input field for entering values...\n if (this._isFocusAccuDraw)\n return;\n this.setFocusItem(this._focusItem);\n }\n\n private onFocusChange(_ev: FocusEvent, item: ItemField, focusIn: boolean): void {\n if (undefined === this._controls)\n return;\n\n // NOTE: Using \"setSelectionRange\" while value is changing in dynamics isn't pretty, use background+caret color instead...\n const itemField = this._controls.itemFields[item];\n itemField.style.backgroundColor = (focusIn ? AccuDrawViewportUI.controlProps.text.focusColor : AccuDrawViewportUI.controlProps.backgroundColor);\n this.updateItemFieldKeyinStatus(itemField, item);\n\n if (!focusIn)\n this.setDynamicKeyinStatus(item);\n }\n\n /** Change notification for when the compass is shown or hidden.\n * Used to hide the viewport controls when the compass is no longer displayed.\n */\n public override onCompassDisplayChange(state: \"show\" | \"hide\"): void {\n if (\"show\" === state)\n return;\n this.removeControls();\n }\n\n /** Change notification for when the compass mode switches between polar and rectangular inputs.\n * Used to show or hide the input fields that are applicable to the current mode.\n */\n public override onCompassModeChange(): void {\n this.updateControlVisibility(CompassMode.Polar === this.compassMode);\n this.setFocusItem(this.defaultFocusItem());\n }\n\n /** Change notification for when the supplied input field switches between dynamic and partial input.\n * When an input field is in the dynamic state, its value changes according to the current button event unless the field is locked.\n * When an input field is in the partial state, its value is not changed or formatted to allow the value to be changed.\n * Locking a field is expected to change the input state to partial.\n * Unlocking a field or accepting a value by focusing is expected to change the input state to dynamic.\n */\n public override onFieldKeyinStatusChange(item: ItemField) {\n if (undefined === this._controls)\n return;\n this.updateItemFieldKeyinStatus(this._controls.itemFields[item], item)\n }\n\n /** Change notification for when the supplied input field value has been modified.\n * Used to update the displayed input field with the value from the active angle or distance formatter.\n */\n public override onFieldValueChange(item: ItemField) {\n if (undefined === this._controls)\n return;\n this.updateItemFieldValue(this._controls.itemFields[item], item);\n }\n\n /** Change notification for when the supplied input field lock status is modified.\n * Used to update the displayed lock toggles to reflect the current state.\n */\n public override onFieldLockChange(item: ItemField) {\n if (undefined === this._controls)\n return;\n this.updateItemFieldLock(this._controls.itemLocks[item], item);\n }\n\n /** Change notification of a motion event in the view.\n * Used to show as well as update the dynamic input field values to reflect the current deltas when active.\n * Automatically switches the focused input field between x and y in rectangular mode based on\n * cursor position when axis isn't locked to support more intuitive user input and \"smart lock\" keyboard shortcut.\n */\n public override onMotion(ev: BeButtonEvent): void {\n this.updateControls(ev);\n this.processMotion();\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"AccuDrawViewportUI.js","sourceRoot":"","sources":["../../../src/tools/AccuDrawViewportUI.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module AccuDraw\n */\nimport { FormatType, Parser } from \"@itwin/core-quantity\";\nimport { AccuDraw, CompassMode, ItemField } from \"../AccuDraw\";\nimport { ViewRect } from \"../common/ViewRect\";\nimport { IModelApp } from \"../IModelApp\";\nimport { AccuDrawShortcuts } from \"./AccuDrawTool\";\nimport { BeButtonEvent } from \"./Tool\";\nimport { ScreenViewport } from \"../Viewport\";\n\ninterface AccuDrawControls {\n overlay: HTMLDivElement; // Viewport overlay...\n div: HTMLDivElement; // Child of overlay used to position controls...\n itemFields: HTMLInputElement[]; // Text fields indexed by ItemField...\n itemLocks: HTMLButtonElement[]; // Lock toggles indexed by ItemField...\n}\n\n/** Provides an in viewport user interface for AccuDraw that can optionally follow the cursor or remain at a fixed location.\n * @beta\n */\nexport class AccuDrawViewportUI extends AccuDraw {\n private _focusItem: ItemField;\n private _controls?: AccuDrawControls;\n private _toolTipsSuspended?: true;\n private _expression?: { item: ItemField, operator: string };\n\n /** Settings to control the behavior and visual appearance of the viewport controls.\n * @note Colors were chosen for visibility against viewport background and contents.\n */\n public static controlProps = {\n /** Suspend locate tooltip when controls are shown, may wish to disable when using fixed location. */\n suspendLocateToolTip: true,\n /** Show controls at a fixed location in the view (currently bottom middle) instead of following the cursor. */\n fixedLocation: false,\n /** Layout controls in a single row horizontally instead of in columns vertically as an option when using fixed location. */\n horizontalArrangement: false,\n /** Replace \"^\", \";\", and \"..\" with \"°\" or \":\" for easier input. */\n simplifiedInput: true,\n /** Enable simple math operations not supported by quantity parser. */\n mathOperations: true,\n /** Number of visible characters to show in text input fields. */\n fieldSize: 12,\n /** Row spacing of text input fields for vertical arrangement. */\n rowSpacingFactor: 1.2,\n /** Column spacing of text input fields and buttons for horizontal arrangement. */\n columnSpacingFactor: 1.1,\n /** Corner radius of text input fields and locks buttons. */\n borderRadius: \"0.5em\",\n /** Background color of unfocused text input fields and unlocked buttons. */\n backgroundColor: \"rgba(150, 150, 150, 0.5)\",\n\n /** Settings specific to text input fields and lock button labels. */\n text: {\n /** Font family to use for text input field values and button labels. */\n fontFamily: \"sans-serif\",\n /** Font size to use for text input field values and button labels. */\n fontSize: \"9pt\",\n /** Font color to use for text input field values and button labels. */\n color: \"white\",\n /** Background color of focused text input field. */\n focusColor: \"rgba(50, 50, 200, 0.75)\",\n },\n\n /** Settings specific to lock buttons. */\n button: {\n /** Background color of locked buttons. */\n pressedColor: \"rgba(50, 50, 50, 0.75)\",\n /** Margin to use on left and right to position relative to text input field. */\n margin: \"0.25em\",\n /** Width of border outline. */\n outlineWidth: \"thin\",\n /** Shadow shown when unlocked to make it appear raised. */\n shadow: \"0.25em 0.25em 0.2em rgb(75, 75, 75)\",\n },\n };\n\n /** Create a new instance of this class to set as [[IModelAppOptions.accuDraw]] for this session. */\n public constructor() {\n super();\n this._focusItem = this.defaultFocusItem();\n }\n\n /** Call to set a vertical layout that follows the cursor. This is the default configuration. */\n public setVerticalCursorLayout() {\n const props = AccuDrawViewportUI.controlProps;\n props.horizontalArrangement = false;\n props.fixedLocation = false;\n props.suspendLocateToolTip = true;\n }\n\n /** Call to set a horizontal layout that is anchored to the bottom middle of the view. */\n public setHorizontalFixedLayout() {\n const props = AccuDrawViewportUI.controlProps;\n props.horizontalArrangement = true;\n props.fixedLocation = true;\n props.suspendLocateToolTip = false;\n }\n\n /** Call to update the currently displayed controls after settings are changed. */\n public refreshControls(): void {\n if (undefined === this._controls)\n return;\n\n this.removeControls();\n if (!this.isActive)\n return;\n\n // Shouldn't need to call IModelApp.toolAdmin.simulateMotionEvent() in this case...\n const ev = new BeButtonEvent();\n IModelApp.toolAdmin.fillEventFromCursorLocation(ev);\n this.updateControls(ev);\n }\n\n private suspendToolTips() {\n if (!AccuDrawViewportUI.controlProps.suspendLocateToolTip || undefined === (this._toolTipsSuspended = (IModelApp.accuSnap.userSettings.toolTip ? true : undefined)))\n return;\n IModelApp.accuSnap.userSettings.toolTip = false;\n IModelApp.notifications.clearToolTip();\n }\n\n private unsuspendToolTips() {\n if (undefined === this._toolTipsSuspended)\n return;\n IModelApp.accuSnap.userSettings.toolTip = true;\n this._toolTipsSuspended = undefined;\n }\n\n\n private setDynamicKeyinStatus(item: ItemField): void {\n // This does nothing if keyin status is already dynamic...\n AccuDrawShortcuts.itemFieldCompletedInput(item);\n }\n\n private setPartialKeyinStatus(item: ItemField, selectAll: boolean): void {\n if (!this.isDynamicKeyinStatus(item))\n return;\n\n AccuDrawShortcuts.itemFieldNewInput(item);\n if (undefined === this._controls || !selectAll)\n return;\n\n const itemField = this._controls.itemFields[item];\n itemField.setSelectionRange(0, itemField.value.length);\n }\n\n private makeParserHappy(value: string, isAngle: boolean): string {\n // TODO: Work around for default length parser not accepting output formatted with dash separator, ex. 20'-6\"...\n const parserSpec = (isAngle ? undefined : this.getLengthParser());\n if (undefined === parserSpec)\n return value;\n return (FormatType.Fractional === parserSpec.format.type && -1 !== value.indexOf(\"'-\") ? value.replaceAll(\"'-\", \"':\") : value);\n }\n\n private evaluateExpression(operator: string, operandA: number, operandB: number): number {\n switch (operator) {\n case \"+\":\n return operandA + operandB;\n case \"-\":\n return operandA - operandB;\n case \"*\":\n return operandA * operandB;\n case \"/\":\n return operandA / operandB;\n default:\n return operandA;\n }\n }\n\n private parseExpression(currentValue: string, isAngle: boolean): string | undefined {\n if (undefined === this._expression)\n return undefined; // Not an expression...\n\n // Attempt to parse and apply operation to current value...\n const operator = currentValue.lastIndexOf(this._expression.operator)\n if (-1 === operator) {\n this._expression = undefined; // Operator has been edited out of string, parse current value...\n return undefined;\n }\n\n const parserSpec = (isAngle ? this.getAngleParser() : this.getLengthParser());\n const formatterSpec = (isAngle ? this.getAngleFormatter() : this.getLengthFormatter());\n if (undefined === parserSpec || undefined === formatterSpec)\n return undefined; // Nothing to do...\n\n const operandAStr = currentValue.substring(0, operator);\n const parseResultA = parserSpec.parseToQuantityValue(this.makeParserHappy(operandAStr, isAngle));\n if (!Parser.isParsedQuantity(parseResultA))\n return undefined; // First operand isn't valid, try to parse current value (which is also likely to fail)...\n\n const operandBStr = currentValue.substring(operator + this._expression.operator.length);\n const operatorKey = this._expression.operator[1];\n const isNumber = (\"*\" === operatorKey || \"/\" === operatorKey); // Treat as number for */ and quantity for +-...\n let operandB;\n\n if (isNumber) {\n operandB = parseFloat(operandBStr);\n if (Number.isNaN(operandB))\n return operandAStr; // Second operand is invalid number, set value to first operand which is valid...\n } else {\n const parseResultB = parserSpec.parseToQuantityValue(this.makeParserHappy(operandBStr, isAngle));\n if (!Parser.isParsedQuantity(parseResultB))\n return operandAStr; // Second operand is invalid quantity, set value to first operand which is valid...\n operandB = parseResultB.value;\n }\n\n const operandA = parseResultA.value;\n const newValue = this.evaluateExpression(operatorKey, operandA, operandB);\n const newValueStr = IModelApp.quantityFormatter.formatQuantity(newValue, formatterSpec);\n\n return newValueStr;\n }\n\n private async processPartialInput(item: ItemField): Promise<void> {\n if (undefined === this._controls)\n return;\n\n const itemField = this._controls.itemFields[item];\n const currentValue = itemField.value;\n\n // If current value has been deleted, unlock field and refresh for current cursor location...\n if (0 === currentValue.length) {\n this.updateFieldLock(item, false);\n IModelApp.toolAdmin.simulateMotionEvent();\n return;\n }\n\n const isAngle = (ItemField.ANGLE_Item === item);\n const expressionValue = this.parseExpression(currentValue, isAngle);\n return this.processFieldInput(item, this.makeParserHappy(expressionValue ?? currentValue, isAngle), false);\n }\n\n private async acceptPartialInput(item: ItemField, forward?: boolean): Promise<void> {\n if (undefined === this._controls)\n return;\n\n const itemField = this._controls.itemFields[item];\n const currentValue = itemField.value;\n const isAngle = (ItemField.ANGLE_Item === item);\n const expressionValue = this.parseExpression(currentValue, isAngle);\n\n if (undefined === forward)\n return AccuDrawShortcuts.itemFieldAcceptInput(item, this.makeParserHappy(expressionValue ?? currentValue, isAngle));\n\n return AccuDrawShortcuts.itemFieldNavigate(item, this.makeParserHappy(expressionValue ?? currentValue, isAngle), forward);\n }\n\n private acceptSavedValue(item: ItemField, next: boolean): void {\n if (next)\n AccuDrawShortcuts.chooseNextValue(item);\n else\n AccuDrawShortcuts.choosePreviousValue(item);\n }\n\n private doFocusHome(ev: KeyboardEvent, isDown: boolean, _item: ItemField): void {\n ev.preventDefault();\n if (!isDown || this._isFocusHome)\n return;\n\n ev.stopPropagation();\n this.setFocusHome();\n IModelApp.viewManager.invalidateDecorationsAllViews();\n }\n\n private async doChooseSavedValue(ev: KeyboardEvent, isDown: boolean, item: ItemField, next: boolean): Promise<void> {\n ev.preventDefault();\n ev.stopPropagation();\n\n if (!isDown)\n return;\n\n this.acceptSavedValue(item, next);\n }\n\n private async doNavigate(ev: KeyboardEvent, isDown: boolean, item: ItemField, forward: boolean): Promise<void> {\n ev.preventDefault();\n ev.stopPropagation();\n\n if (!isDown)\n return;\n\n return this.acceptPartialInput(item, forward);\n }\n\n private async doAcceptInput(ev: KeyboardEvent, isDown: boolean, item: ItemField): Promise<void> {\n ev.preventDefault();\n if (!isDown || this.isDynamicKeyinStatus(item))\n return;\n\n ev.stopPropagation();\n return this.acceptPartialInput(item);\n }\n\n private doNewInput(_ev: KeyboardEvent, isDown: boolean, item: ItemField): void {\n if (!isDown)\n return;\n\n this.setPartialKeyinStatus(item, false);\n }\n\n private async doDeleteInput(_ev: KeyboardEvent, isDown: boolean, item: ItemField): Promise<void> {\n if (isDown)\n return this.setPartialKeyinStatus(item, false);\n\n return this.processPartialInput(item);\n }\n\n private processReplacementKey(ev: KeyboardEvent, isDown: boolean, item: ItemField, replacement: string, allowStart: boolean): boolean {\n if (undefined === this._controls)\n return false;\n\n ev.preventDefault()\n if (!isDown || 0 === replacement.length || this.isDynamicKeyinStatus(item))\n return true;\n\n const itemField = this._controls.itemFields[item];\n if (null === itemField.selectionStart || null === itemField.selectionEnd)\n return true;\n\n const currentValue = itemField.value;\n if (!allowStart && (!currentValue.length || !itemField.selectionStart || !itemField.selectionEnd))\n return true;\n\n const selectionStart = (itemField.selectionStart > itemField.selectionEnd ? itemField.selectionEnd : itemField.selectionStart);\n itemField.value = currentValue.substring(0, selectionStart) + replacement + currentValue.substring(itemField.selectionEnd);\n itemField.selectionStart = itemField.selectionEnd = selectionStart + 1;\n\n return false;\n }\n\n private processRepeatedKey(ev: KeyboardEvent, isDown: boolean, item: ItemField, replacement: string): boolean {\n if (undefined === this._controls)\n return false;\n\n const itemField = this._controls.itemFields[item];\n const currentValue = itemField.value;\n if (!currentValue.length || !itemField.selectionStart || !itemField.selectionEnd)\n return false;\n\n const selectionStart = (itemField.selectionStart > itemField.selectionEnd ? itemField.selectionEnd : itemField.selectionStart);\n if (selectionStart !== itemField.selectionEnd)\n return false;\n\n const selectionPrevious = selectionStart - 1;\n if (currentValue[selectionPrevious] !== (isDown ? ev.key : replacement))\n return false;\n\n ev.preventDefault()\n if (!isDown)\n return false;\n\n itemField.value = currentValue.substring(0, selectionPrevious) + replacement + currentValue.substring(selectionStart);\n itemField.selectionStart = itemField.selectionEnd = selectionPrevious + 1;\n\n return false;\n }\n\n private doProcessOverrideKey(ev: KeyboardEvent, isDown: boolean, item: ItemField): boolean {\n if (undefined === this._controls || !AccuDrawViewportUI.controlProps.simplifiedInput)\n return false;\n\n switch (ev.key) {\n case \"^\":\n return this.processReplacementKey(ev, isDown, item, (ItemField.ANGLE_Item === item ? \"°\" : \"\"), false); // Easier \"°\" input...\n case \";\":\n return this.processReplacementKey(ev, isDown, item, (ItemField.ANGLE_Item === item ? \"°\" : \":\"), false); // Easier \":\" input still useful w/o MU:SU:PU?\n case \".\":\n return this.processRepeatedKey(ev, isDown, item, \":\"); // Still useful replacing \"..\" with \":\" for numeric keypad users w/o MU:SU:PU?\n default:\n return false;\n }\n }\n\n private doProcessExpressionKey(ev: KeyboardEvent, isDown: boolean, item: ItemField): boolean {\n if (undefined === this._controls || !AccuDrawViewportUI.controlProps.mathOperations)\n return false;\n\n const itemField = this._controls.itemFields[item];\n const currentValue = itemField.value;\n\n switch (ev.key) {\n case \"ArrowLeft\":\n case \"ArrowRight\":\n if (undefined === this._expression || !isDown || this.isDynamicKeyinStatus(item) || !itemField.selectionStart)\n break;\n\n const moveLeft = (\"ArrowLeft\" === ev.key);\n const operatorPosIns = currentValue.lastIndexOf(this._expression.operator);\n if (itemField.selectionStart !== (moveLeft ? operatorPosIns + this._expression.operator.length : operatorPosIns))\n break;\n\n // Treat expression operator string as a single character when moving the text insertion cursor...\n itemField.selectionStart = itemField.selectionEnd = (moveLeft ? operatorPosIns : operatorPosIns + this._expression.operator.length);\n ev.preventDefault();\n return true;\n\n case \"Backspace\":\n case \"Delete\":\n if (undefined === this._expression || !isDown || this.isDynamicKeyinStatus(item) || !itemField.selectionStart)\n break;\n\n const deleteBefore = (\"Backspace\" === ev.key);\n const operatorPosDel = currentValue.lastIndexOf(this._expression.operator);\n if (itemField.selectionStart !== (deleteBefore ? operatorPosDel + this._expression.operator.length : operatorPosDel))\n break;\n\n // Treat expression operator string as single character for delete...\n itemField.value = currentValue.substring(0, operatorPosDel);\n itemField.selectionStart = itemField.selectionEnd = itemField.value.length;\n this._expression = undefined;\n ev.preventDefault();\n return true;\n\n case \" \":\n if (!isDown || !this.isDynamicKeyinStatus(item))\n break;\n\n this.setPartialKeyinStatus(item, false); // Replacing current w/space isn't useful, append to end to support + or - more conveniently...\n return true;\n\n case \"+\":\n case \"-\":\n case \"*\":\n case \"/\":\n if (!isDown || undefined !== this._expression)\n break;\n\n if (!currentValue.length || !itemField.selectionStart || itemField.selectionStart !== currentValue.length)\n break;\n\n const haveSpace = (\" \" === currentValue[itemField.selectionStart - 1]);\n const requireSpace = (\"+\" === ev.key || \"-\" === ev.key); // These are valid for 1st character to replace current value...\n\n if (!(requireSpace ? haveSpace : (haveSpace || this.isDynamicKeyinStatus(item))))\n break;\n\n const operator = ` ${ev.key} `\n const expression = `${currentValue + (haveSpace ? operator.substring(1) : operator)}`;\n\n itemField.value = expression;\n itemField.selectionStart = itemField.selectionEnd = itemField.value.length;\n this._expression = { item, operator };\n\n this.setPartialKeyinStatus(item, false);\n ev.preventDefault();\n\n return true;\n }\n\n return false;\n }\n\n private async doProcessKey(ev: KeyboardEvent, isDown: boolean, item: ItemField): Promise<void> {\n if (!this.itemFieldInputIsValid(ev.key, item)) {\n ev.preventDefault(); // Ignore potential shortcuts...\n return;\n }\n\n if (this.doProcessOverrideKey(ev, isDown, item))\n return;\n\n if (this.doProcessExpressionKey(ev, isDown, item))\n return;\n\n if (isDown)\n return this.setPartialKeyinStatus(item, true);\n\n return this.processPartialInput(item);\n }\n\n private async onKeyboardEvent(ev: KeyboardEvent, isDown: boolean): Promise<void> {\n if (ev.ctrlKey || ev.altKey || ev.metaKey) {\n ev.preventDefault(); // Ignore qualifiers other than shift...\n return;\n }\n\n switch (ev.key) {\n case \"Escape\":\n return this.doFocusHome(ev, isDown, this._focusItem);\n case \"PageDown\":\n return this.doChooseSavedValue(ev, isDown, this._focusItem, true);\n case \"PageUp\":\n return this.doChooseSavedValue(ev, isDown, this._focusItem, false);\n case \"Tab\":\n return this.doNavigate(ev, isDown, this._focusItem, !ev.shiftKey);\n case \"ArrowDown\":\n if (ev.shiftKey)\n return this.doChooseSavedValue(ev, isDown, this._focusItem, true);\n return this.doNavigate(ev, isDown, this._focusItem, true);\n case \"ArrowUp\":\n if (ev.shiftKey)\n return this.doChooseSavedValue(ev, isDown, this._focusItem, false);\n return this.doNavigate(ev, isDown, this._focusItem, false);\n case \"Enter\":\n return this.doAcceptInput(ev, isDown, this._focusItem);\n case \"Home\":\n case \"End\":\n case \"Insert\":\n return this.doNewInput(ev, isDown, this._focusItem);\n case \"ArrowLeft\":\n case \"ArrowRight\":\n if (this.doProcessExpressionKey(ev, isDown, this._focusItem))\n return;\n return this.doNewInput(ev, isDown, this._focusItem);\n case \"Backspace\":\n case \"Delete\":\n if (this.doProcessExpressionKey(ev, isDown, this._focusItem))\n return;\n return this.doDeleteInput(ev, isDown, this._focusItem);\n default:\n return this.doProcessKey(ev, isDown, this._focusItem);\n }\n }\n\n private removeControls(): void {\n if (undefined === this._controls)\n return;\n\n this._controls.overlay.remove();\n this._controls = undefined;\n this.unsuspendToolTips();\n }\n\n private createControlDiv(): HTMLDivElement {\n const div = document.createElement(\"div\");\n div.className = \"accudraw-controls\";\n\n const style = div.style;\n style.pointerEvents = \"none\";\n style.overflow = \"visible\"; // Don't clip/hide outline or shadow...\n style.position = \"absolute\";\n style.top = style.left = \"0\";\n style.height = style.width = \"100%\";\n\n return div;\n }\n\n private updateItemFieldKeyinStatus(itemField: HTMLInputElement, item: ItemField) {\n const isDynamic = this.isDynamicKeyinStatus(item)\n\n if (isDynamic && item === this._expression?.item)\n this._expression = undefined; // Only valid when entering partial input...\n\n itemField.style.caretColor = isDynamic ? itemField.style.backgroundColor : itemField.style.color;\n }\n\n private updateItemFieldValue(itemField: HTMLInputElement, item: ItemField) {\n const value = this.getFormattedValueByIndex(item)\n itemField.value = value;\n this.updateItemFieldKeyinStatus(itemField, item);\n }\n\n private updateItemFieldLock(itemLock: HTMLButtonElement, item: ItemField) {\n const locked = this.getFieldLock(item);\n itemLock.style.outlineStyle = locked ? \"inset\" : \"outset\";\n itemLock.style.boxShadow = locked ? \"none\" : AccuDrawViewportUI.controlProps.button.shadow;\n itemLock.style.backgroundColor = locked ? AccuDrawViewportUI.controlProps.button.pressedColor : AccuDrawViewportUI.controlProps.backgroundColor;\n }\n\n private initializeItemStyle(style: CSSStyleDeclaration, isButton: boolean): void {\n style.pointerEvents = \"none\"; // Don't receive pointer events...\n style.position = \"absolute\";\n style.textWrap = \"nowrap\";\n style.textAnchor = \"top\";\n style.textAlign = isButton ? \"center\" : \"left\";\n\n const controlProps = AccuDrawViewportUI.controlProps;\n style.fontFamily = controlProps.text.fontFamily;\n style.fontSize = controlProps.text.fontSize;\n style.color = controlProps.text.color;\n style.backgroundColor = controlProps.backgroundColor;\n style.borderRadius = controlProps.borderRadius;\n }\n\n private createItemField(item: ItemField): HTMLInputElement {\n const itemField = document.createElement(\"input\");\n\n itemField.contentEditable = \"true\";\n itemField.size = AccuDrawViewportUI.controlProps.fieldSize;\n\n const style = itemField.style;\n this.initializeItemStyle(style, false);\n this.updateItemFieldValue(itemField, item);\n\n itemField.onkeydown = async (ev: KeyboardEvent) => { await this.onKeyboardEvent(ev, true); };\n itemField.onkeyup = async (ev: KeyboardEvent) => { await this.onKeyboardEvent(ev, false); };\n itemField.onfocus = (ev: FocusEvent) => { this.onFocusChange(ev, item, true); };\n itemField.onblur = (ev: FocusEvent) => { this.onFocusChange(ev, item, false); };;\n\n return itemField;\n }\n\n private createItemFieldLock(item: ItemField): HTMLButtonElement {\n const itemLock = document.createElement(\"button\");\n\n itemLock.type = \"button\";\n itemLock.contentEditable = \"false\";\n itemLock.disabled = true; // Don't receive focus...\n\n switch (item) {\n case ItemField.DIST_Item:\n itemLock.innerHTML = \"\\u21A6\"; // right arrow from bar...\n break;\n case ItemField.ANGLE_Item:\n itemLock.innerHTML = \"\\u2221\"; // measured angle...\n break;\n case ItemField.X_Item:\n itemLock.innerHTML = \"X\";\n break;\n case ItemField.Y_Item:\n itemLock.innerHTML = \"Y\";\n break;\n case ItemField.Z_Item:\n itemLock.innerHTML = \"Z\";\n break;\n }\n\n const style = itemLock.style;\n this.initializeItemStyle(style, true);\n this.updateItemFieldLock(itemLock, item);\n\n const button = AccuDrawViewportUI.controlProps.button;\n style.paddingLeft = style.paddingRight = \"0\";\n style.marginLeft = style.marginRight = button.margin;\n style.outlineWidth = button.outlineWidth;\n\n return itemLock;\n }\n\n /** Use to override the position of the controls in the supplied view. */\n protected modifyControlRect(_rect: ViewRect, _vp: ScreenViewport): void { }\n\n /** Return the ViewRect currently occupied by the controls in the supplied view. */\n protected currentControlRect(vp: ScreenViewport): ViewRect | undefined {\n if (undefined === this._controls || this._controls.overlay.parentElement !== vp.vpDiv)\n return undefined;\n\n const viewRect = vp.vpDiv.getBoundingClientRect();\n const elemRect = this._controls.div.getBoundingClientRect();\n const controlRect = new ViewRect(elemRect.left - viewRect.left, elemRect.top - viewRect.top, elemRect.right - viewRect.left, elemRect.bottom - viewRect.top);\n\n return controlRect;\n }\n\n private updateControlVisibility(isPolar: boolean, is3d?: boolean): void {\n if (undefined === this._controls)\n return;\n\n this._controls.itemFields[ItemField.ANGLE_Item].hidden = !isPolar;\n this._controls.itemLocks[ItemField.ANGLE_Item].hidden = !isPolar;\n\n this._controls.itemFields[ItemField.DIST_Item].hidden = !isPolar;\n this._controls.itemLocks[ItemField.DIST_Item].hidden = !isPolar;\n\n this._controls.itemFields[ItemField.X_Item].hidden = isPolar;\n this._controls.itemLocks[ItemField.X_Item].hidden = isPolar;\n\n this._controls.itemFields[ItemField.Y_Item].hidden = isPolar;\n this._controls.itemLocks[ItemField.Y_Item].hidden = isPolar;\n\n if (undefined === is3d)\n return;\n\n this._controls.itemFields[ItemField.Z_Item].hidden = !is3d;\n this._controls.itemLocks[ItemField.Z_Item].hidden = !is3d;\n }\n\n private updateControls(ev: BeButtonEvent): void {\n const vp = ev.viewport;\n if (undefined === vp || !this.isActive)\n return;\n\n if (undefined !== this._controls && this._controls.overlay.parentElement !== vp.vpDiv)\n this.removeControls(); // Could be enhanced to save/restore partial input of currently focused item...\n\n if (undefined === this._controls) {\n const overlay = vp.addNewDiv(\"accudraw-overlay\", true, 35);\n const div = this.createControlDiv();\n const is3dLayout = vp.view.is3d();\n const isHorizontalLayout = AccuDrawViewportUI.controlProps.horizontalArrangement;\n\n overlay.appendChild(div);\n\n const createFieldAndLock = (item: ItemField) => {\n const itemField = itemFields[item] = this.createItemField(item);\n itemField.style.top = isHorizontalLayout ? \"0\" : `${rowOffset}px`;\n itemField.style.left = isHorizontalLayout ? `${columnOffset}px` : \"0\";\n\n div.appendChild(itemField);\n\n if (is3dLayout || ItemField.Z_Item !== item)\n rowOffset += itemField.offsetHeight * AccuDrawViewportUI.controlProps.rowSpacingFactor;\n\n itemWidth = itemField.offsetWidth;\n itemHeight = itemField.offsetHeight;\n\n const itemLock = itemLocks[item] = this.createItemFieldLock(item);\n itemLock.style.top = itemField.style.top;\n itemLock.style.left = isHorizontalLayout ? `${columnOffset + itemWidth}px` : `${itemWidth}px`;\n itemLock.style.width = itemLock.style.height = `${itemHeight}px`; // Make square of same height as text field...\n\n div.appendChild(itemLock);\n\n lockWidth = itemLock.offsetWidth;\n\n if (is3dLayout || ItemField.Z_Item !== item)\n columnOffset += (itemWidth + lockWidth) * AccuDrawViewportUI.controlProps.columnSpacingFactor;\n };\n\n let rowOffset = 0;\n let columnOffset = 0;\n let itemWidth = 0;\n let itemHeight = 0;\n let lockWidth = 0;\n\n const itemFields: HTMLInputElement[] = [];\n const itemLocks: HTMLButtonElement[] = [];\n\n createFieldAndLock(ItemField.DIST_Item);\n createFieldAndLock(ItemField.ANGLE_Item);\n\n rowOffset = 0;\n columnOffset = 0;\n\n createFieldAndLock(ItemField.X_Item);\n createFieldAndLock(ItemField.Y_Item);\n createFieldAndLock(ItemField.Z_Item); // Both polar and rectangular modes support Z in 3d views...\n\n div.style.width = isHorizontalLayout ? `${columnOffset}px` : `${itemWidth + lockWidth + 5}px`;\n div.style.height = isHorizontalLayout ? `${itemHeight * AccuDrawViewportUI.controlProps.rowSpacingFactor}px` : `${rowOffset}px`;\n\n this._controls = { overlay, div, itemFields, itemLocks };\n this.updateControlVisibility(CompassMode.Polar === this.compassMode, vp.view.is3d());\n this.setFocusItem(this._focusItem);\n this.suspendToolTips();\n\n vp.onChangeView.addOnce(() => this.removeControls()); // Clear on view change/closure...\n }\n\n const viewRect = vp.viewRect;\n const position = vp.worldToView(ev.point);\n\n if (AccuDrawViewportUI.controlProps.fixedLocation) {\n position.x = (viewRect.left + ((viewRect.width - this._controls.div.offsetWidth) * 0.5));\n position.y = (viewRect.bottom - this._controls.div.offsetHeight);\n } else {\n position.x += Math.floor(vp.pixelsFromInches(0.4)) + 0.5;\n position.y += Math.floor(vp.pixelsFromInches(0.1)) + 0.5;\n }\n\n const controlRect = new ViewRect(position.x, position.y, position.x + this._controls.div.offsetWidth, position.y + this._controls.div.offsetHeight);\n this.modifyControlRect(controlRect, vp);\n\n if (!controlRect.isContained(viewRect))\n return; // Keep showing at last valid location...\n\n this._controls.div.style.left = `${controlRect.left}px`;\n this._controls.div.style.top = `${controlRect.top}px`;\n }\n\n private get _isFocusHome(): boolean {\n return (document.body === document.activeElement);\n }\n\n private get _isFocusAccuDraw(): boolean {\n return (undefined !== this._controls && document.activeElement?.parentElement === this._controls.itemFields[this._focusItem].parentElement);\n }\n\n private setFocusHome(): void {\n const element = document.activeElement as HTMLElement;\n if (element && element !== document.body)\n element.blur();\n document.body.focus();\n }\n\n /** Return whether keyboard shortcuts can or can't be used.\n * Used to show a visual indication of whether keyboard shortcuts will be processed.\n * Keyboard shortcuts can be supported when focus is either on AccuDraw or Home.\n * When returning false the compass displays in monochrome.\n */\n public override get hasInputFocus(): boolean {\n // Indicate when keyboard shortcuts can't be used (i.e. focus not at AccuDraw or Home) by changing compass to monochrome...\n return (this._isFocusHome || this._isFocusAccuDraw);\n }\n\n /** Request to set focus to the specified AccuDraw input field to start entering values.\n * The focused input field will be indicated by the background color.\n */\n public override setFocusItem(index: ItemField) {\n this._focusItem = index;\n if (undefined === this._controls)\n return;\n const itemField = this._controls.itemFields[this._focusItem];\n itemField.focus();\n }\n\n /** Request to set focus to the active AccuDraw input field to start entering values.\n * The focused input field will be indicated by the background color.\n */\n public override grabInputFocus() {\n // Set focus to active input field for entering values...\n if (this._isFocusAccuDraw)\n return;\n this.setFocusItem(this._focusItem);\n }\n\n private onFocusChange(_ev: FocusEvent, item: ItemField, focusIn: boolean): void {\n if (undefined === this._controls)\n return;\n\n // NOTE: Using \"setSelectionRange\" while value is changing in dynamics isn't pretty, use background+caret color instead...\n const itemField = this._controls.itemFields[item];\n itemField.style.backgroundColor = (focusIn ? AccuDrawViewportUI.controlProps.text.focusColor : AccuDrawViewportUI.controlProps.backgroundColor);\n this.updateItemFieldKeyinStatus(itemField, item);\n\n if (!focusIn)\n this.setDynamicKeyinStatus(item);\n }\n\n /** Change notification for when the compass is shown or hidden.\n * Used to hide the viewport controls when the compass is no longer displayed.\n */\n public override onCompassDisplayChange(state: \"show\" | \"hide\"): void {\n if (\"show\" === state)\n return;\n this.removeControls();\n }\n\n /** Change notification for when the compass mode switches between polar and rectangular inputs.\n * Used to show or hide the input fields that are applicable to the current mode.\n */\n public override onCompassModeChange(): void {\n this.updateControlVisibility(CompassMode.Polar === this.compassMode);\n this.setFocusItem(this.defaultFocusItem());\n }\n\n /** Change notification for when the supplied input field switches between dynamic and partial input.\n * When an input field is in the dynamic state, its value changes according to the current button event unless the field is locked.\n * When an input field is in the partial state, its value is not changed or formatted to allow the value to be changed.\n * Locking a field is expected to change the input state to partial.\n * Unlocking a field or accepting a value by focusing is expected to change the input state to dynamic.\n */\n public override onFieldKeyinStatusChange(item: ItemField) {\n if (undefined === this._controls)\n return;\n this.updateItemFieldKeyinStatus(this._controls.itemFields[item], item)\n }\n\n /** Change notification for when the supplied input field value has been modified.\n * Used to update the displayed input field with the value from the active angle or distance formatter.\n */\n public override onFieldValueChange(item: ItemField) {\n if (undefined === this._controls)\n return;\n this.updateItemFieldValue(this._controls.itemFields[item], item);\n }\n\n /** Change notification for when the supplied input field lock status is modified.\n * Used to update the displayed lock toggles to reflect the current state.\n */\n public override onFieldLockChange(item: ItemField) {\n if (undefined === this._controls)\n return;\n this.updateItemFieldLock(this._controls.itemLocks[item], item);\n }\n\n /** Change notification of a motion event in the view.\n * Used to show as well as update the dynamic input field values to reflect the current deltas when active.\n * Automatically switches the focused input field between x and y in rectangular mode based on\n * cursor position when axis isn't locked to support more intuitive user input and \"smart lock\" keyboard shortcut.\n */\n public override onMotion(ev: BeButtonEvent): void {\n this.updateControls(ev);\n this.processMotion();\n }\n}\n"]}
|
|
@@ -6,7 +6,6 @@ import { ChangesetIndex, ChangesetIndexAndId, IModelConnectionProps, OpenBriefca
|
|
|
6
6
|
import { BriefcaseTxns } from "./BriefcaseTxns";
|
|
7
7
|
import { GraphicalEditingScope } from "./GraphicalEditingScope";
|
|
8
8
|
import { IModelConnection } from "./IModelConnection";
|
|
9
|
-
import { ProgressCallback } from "./request/Request";
|
|
10
9
|
/**
|
|
11
10
|
* Download progress information.
|
|
12
11
|
* @public
|
|
@@ -38,11 +37,6 @@ export interface GenericAbortSignal {
|
|
|
38
37
|
* @public
|
|
39
38
|
*/
|
|
40
39
|
export interface PullChangesOptions {
|
|
41
|
-
/**
|
|
42
|
-
* Function called regularly to report progress of changes download.
|
|
43
|
-
* @deprecated in 3.6. Use [[downloadProgressCallback]] instead.
|
|
44
|
-
*/
|
|
45
|
-
progressCallback?: ProgressCallback;
|
|
46
40
|
/** Function called regularly to report progress of changes download. */
|
|
47
41
|
downloadProgressCallback?: OnDownloadProgress;
|
|
48
42
|
/** Interval for calling progress callback (in milliseconds). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BriefcaseConnection.d.ts","sourceRoot":"","sources":["../../src/BriefcaseConnection.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAU,OAAO,EAA2B,UAAU,EAAE,UAAU,EAAgB,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/H,OAAO,EACL,cAAc,EAAE,mBAAmB,EAA4B,qBAAqB,EACpC,kBAAkB,EAAE,qBAAqB,EAC1F,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"BriefcaseConnection.d.ts","sourceRoot":"","sources":["../../src/BriefcaseConnection.ts"],"names":[],"mappings":"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"}
|
|
@@ -240,12 +240,9 @@ export class BriefcaseConnection extends IModelConnection {
|
|
|
240
240
|
*/
|
|
241
241
|
async pullChanges(toIndex, options) {
|
|
242
242
|
const removeListeners = [];
|
|
243
|
-
|
|
244
|
-
const shouldReportProgress = !!options?.progressCallback || !!options?.downloadProgressCallback;
|
|
243
|
+
const shouldReportProgress = !!options?.downloadProgressCallback;
|
|
245
244
|
if (shouldReportProgress) {
|
|
246
245
|
const handleProgress = (_evt, data) => {
|
|
247
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
248
|
-
options?.progressCallback?.(data);
|
|
249
246
|
options?.downloadProgressCallback?.(data);
|
|
250
247
|
};
|
|
251
248
|
const removeProgressListener = IpcApp.addListener(getPullChangesIpcChannel(this.iModelId), handleProgress);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BriefcaseConnection.js","sourceRoot":"","sources":["../../src/BriefcaseConnection.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module IModelConnection\n */\n\nimport { assert, BeEvent, CompressedId64Set, Guid, GuidString, Id64String, IModelStatus, OpenMode } from \"@itwin/core-bentley\";\nimport {\n ChangesetIndex, ChangesetIndexAndId, getPullChangesIpcChannel, IModelConnectionProps, IModelError,\n PullChangesOptions as IpcAppPullChangesOptions, OpenBriefcaseProps, StandaloneOpenOptions,\n} from \"@itwin/core-common\";\nimport { BriefcaseTxns } from \"./BriefcaseTxns\";\nimport { GraphicalEditingScope } from \"./GraphicalEditingScope\";\nimport { IModelApp } from \"./IModelApp\";\nimport { IModelConnection } from \"./IModelConnection\";\nimport { IpcApp } from \"./IpcApp\";\nimport { ProgressCallback } from \"./request/Request\";\nimport { disposeTileTreesForGeometricModels } from \"./tile/internal\";\nimport { Viewport } from \"./Viewport\";\n\n/**\n * Download progress information.\n * @public\n */\nexport interface DownloadProgressInfo {\n /** Bytes downloaded. */\n loaded: number;\n /** Total size of the download in bytes. */\n total: number;\n}\n\n/**\n * Called to show progress during a download.\n * @public\n */\nexport type OnDownloadProgress = (progress: DownloadProgressInfo) => void;\n\n/**\n * Partial interface of AbortSignal.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal\n * @beta\n */\nexport interface GenericAbortSignal {\n /** Add Listener for abort signal. */\n addEventListener: (type: \"abort\", listener: (this: GenericAbortSignal, ev: any) => any) => void;\n /** Remove Listener for abort signal. */\n removeEventListener: (type: \"abort\", listener: (this: GenericAbortSignal, ev: any) => any) => void;\n}\n\n/**\n * Options for pulling iModel changes.\n * @public\n */\nexport interface PullChangesOptions {\n /**\n * Function called regularly to report progress of changes download.\n * @deprecated in 3.6. Use [[downloadProgressCallback]] instead.\n */\n progressCallback?: ProgressCallback; // eslint-disable-line @typescript-eslint/no-deprecated\n /** Function called regularly to report progress of changes download. */\n downloadProgressCallback?: OnDownloadProgress;\n /** Interval for calling progress callback (in milliseconds). */\n progressInterval?: number;\n /** Signal for cancelling the download.\n * @beta\n */\n abortSignal?: GenericAbortSignal;\n}\n\n/** Keeps track of changes to models, buffering them until synchronization points.\n * While a GraphicalEditingScope is open, the changes are buffered until the scope exits, at which point they are processed.\n * Otherwise, the buffered changes are processed after undo/redo, commit, or pull+merge changes.\n */\nclass ModelChangeMonitor {\n private _editingScope?: GraphicalEditingScope;\n private readonly _briefcase: BriefcaseConnection;\n private readonly _deletedModels = new Set<string>();\n private readonly _modelIdToGuid = new Map<string, string>();\n private readonly _removals: VoidFunction[] = [];\n\n public constructor(briefcase: BriefcaseConnection) {\n this._briefcase = briefcase;\n\n // Buffer updated geometry guids.\n this._removals.push(briefcase.txns.onModelGeometryChanged.addListener((changes) => {\n for (const change of changes) {\n this._deletedModels.delete(change.id);\n this._modelIdToGuid.set(change.id, change.guid);\n }\n }));\n\n // Buffer deletions of models.\n this._removals.push(briefcase.txns.onModelsChanged.addListener((changes) => {\n if (changes.deleted) {\n for (const id of CompressedId64Set.iterable(changes.deleted)) {\n this._modelIdToGuid.delete(id);\n this._deletedModels.add(id);\n }\n }\n }));\n\n // Outside of an editing scope, we want to update viewport contents after commit, undo/redo, or merging changes.\n const maybeProcess = async () => {\n if (this.editingScope)\n return;\n\n const modelIds = Array.from(this._modelIdToGuid.keys());\n if (modelIds.length > 0)\n await IModelApp.tileAdmin.purgeTileTrees(this._briefcase, modelIds);\n\n this.processBuffered();\n };\n\n this._removals.push(briefcase.txns.onCommitted.addListener(maybeProcess));\n this._removals.push(briefcase.txns.onReplayedExternalTxns.addListener(maybeProcess));\n this._removals.push(briefcase.txns.onAfterUndoRedo.addListener(maybeProcess));\n this._removals.push(briefcase.txns.onChangesPulled.addListener(maybeProcess));\n }\n\n public async close(): Promise<void> {\n for (const removal of this._removals)\n removal();\n\n this._removals.length = 0;\n\n if (this._editingScope) {\n await this._editingScope.exit();\n this._editingScope = undefined;\n }\n }\n\n public get editingScope(): GraphicalEditingScope | undefined {\n return this._editingScope;\n }\n\n public async enterEditingScope(): Promise<GraphicalEditingScope> {\n if (this._editingScope)\n throw new Error(\"Cannot create an editing scope for an iModel that already has one\");\n\n this._editingScope = await GraphicalEditingScope.enter(this._briefcase);\n\n const removeGeomListener = this._editingScope.onGeometryChanges.addListener((changes) => {\n const modelIds = [];\n for (const change of changes)\n modelIds.push(change.id);\n\n this.invalidateScenes(modelIds);\n });\n\n this._editingScope.onExited.addOnce((scope) => {\n assert(scope === this._editingScope);\n this._editingScope = undefined;\n removeGeomListener();\n this.processBuffered();\n });\n\n return this._editingScope;\n }\n\n private processBuffered(): void {\n const models = this._briefcase.models;\n for (const [id, guid] of this._modelIdToGuid) {\n const model = models.getLoaded(id)?.asGeometricModel;\n if (model)\n model.geometryGuid = guid;\n }\n\n const modelIds = new Set<string>(this._modelIdToGuid.keys());\n for (const deleted of this._deletedModels) {\n modelIds.add(deleted);\n models.unload(deleted);\n }\n\n this.invalidateScenes(modelIds);\n disposeTileTreesForGeometricModels(modelIds, this._briefcase);\n\n this._briefcase.onBufferedModelChanges.raiseEvent(modelIds);\n\n this._modelIdToGuid.clear();\n this._deletedModels.clear();\n }\n\n private invalidateScenes(changedModels: Iterable<Id64String>): void {\n for (const user of IModelApp.tileAdmin.tileUsers) {\n if (user instanceof Viewport && user.iModel === this._briefcase) {\n for (const modelId of changedModels) {\n if (user.view.viewsModel(modelId)) {\n user.invalidateScene();\n user.setFeatureOverrideProviderChanged();\n break;\n }\n }\n }\n }\n }\n}\n\n/** Settings that can be used to control the behavior of [[Tool]]s that modify a [[BriefcaseConnection]].\n * For example, tools that want to create new elements can consult the briefcase's editor tool settings to\n * determine into which model and category to insert the elements.\n * Specialized tools are free to ignore these settings.\n * @see [[BriefcaseConnection.editorToolSettings]] to query or modify the current settings for a briefcase.\n * @see [CreateElementTool]($editor-frontend) for an example of a tool that uses these settings.\n * @beta\n */\nexport class BriefcaseEditorToolSettings {\n private _category?: Id64String;\n private _model?: Id64String;\n\n /** An event raised just after the default [[category]] is changed. */\n public readonly onCategoryChanged = new BeEvent<(previousCategory: Id64String | undefined) => void>();\n\n /** An event raised just after the default [[model]] is changed. */\n public readonly onModelChanged = new BeEvent<(previousModel: Id64String | undefined) => void>();\n\n /** The [Category]($backend) into which new elements should be inserted by default.\n * Specialized tools are free to ignore this setting and instead use their own logic to select an appropriate category.\n * @see [[onCategoryChanged]] to be notified when this property is modified.\n * @see [CreateElementTool.targetCategory]($editor-frontend) for an example of a tool that uses this setting.\n */\n public get category(): Id64String | undefined {\n return this._category;\n }\n public set category(category: Id64String | undefined) {\n const previousCategory = this.category;\n if (category !== this.category) {\n this._category = category;\n this.onCategoryChanged.raiseEvent(previousCategory);\n }\n }\n\n /** The [Model]($backend) into which new elements should be inserted by default.\n * Specialized tools are free to ignore this setting and instead use their own logic to select an appropriate model.\n * @see [[onModelChanged]] to be notified when this property is modified.\n * @see [CreateElementTool.targetModelId]($editor-frontend) for an example of a tool that uses this setting.\n */\n public get model(): Id64String | undefined {\n return this._model;\n }\n public set model(model: Id64String | undefined) {\n const previousModel = this.model;\n if (model !== this.model) {\n this._model = model;\n this.onModelChanged.raiseEvent(previousModel);\n }\n }\n}\n\n/** A connection to an editable briefcase on the backend. This class uses [Ipc]($docs/learning/IpcInterface.md) to communicate\n * to the backend and may only be used by [[IpcApp]]s.\n * @public\n */\nexport class BriefcaseConnection extends IModelConnection {\n protected _isClosed?: boolean;\n private readonly _modelsMonitor: ModelChangeMonitor;\n /** Default settings that can be used to control the behavior of [[Tool]]s that modify this briefcase.\n * @beta\n */\n public readonly editorToolSettings = new BriefcaseEditorToolSettings();\n\n /** Manages local changes to the briefcase via [Txns]($docs/learning/InteractiveEditing.md). */\n public readonly txns: BriefcaseTxns;\n\n public override isBriefcaseConnection(): this is BriefcaseConnection { return true; }\n\n /** The Guid that identifies the iTwin that owns this iModel. */\n public override get iTwinId(): GuidString { return super.iTwinId!; } // GuidString | undefined for IModelConnection, but required for BriefcaseConnection\n\n /** The Guid that identifies this iModel. */\n public override get iModelId(): GuidString { return super.iModelId!; } // GuidString | undefined for IModelConnection, but required for BriefcaseConnection\n\n protected constructor(props: IModelConnectionProps, openMode: OpenMode) {\n super(props);\n this._openMode = openMode;\n this.txns = new BriefcaseTxns(this);\n this._modelsMonitor = new ModelChangeMonitor(this);\n if (OpenMode.ReadWrite === this._openMode)\n this.txns.onAfterUndoRedo.addListener(async () => { await IModelApp.toolAdmin.restartPrimitiveTool(); });\n }\n\n /** Open a BriefcaseConnection to a [BriefcaseDb]($backend). */\n public static async openFile(briefcaseProps: OpenBriefcaseProps): Promise<BriefcaseConnection> {\n const iModelProps = await IpcApp.appFunctionIpc.openBriefcase(briefcaseProps);\n const connection = new this({ ...briefcaseProps, ...iModelProps }, briefcaseProps.readonly ? OpenMode.Readonly : OpenMode.ReadWrite);\n IModelConnection.onOpen.raiseEvent(connection);\n return connection;\n }\n\n /** Open a BriefcaseConnection to a [StandaloneDb]($backend)\n * @note StandaloneDbs, by definition, may not push or pull changes. Attempting to do so will throw exceptions.\n */\n public static async openStandalone(filePath: string, openMode: OpenMode = OpenMode.ReadWrite, opts?: StandaloneOpenOptions): Promise<BriefcaseConnection> {\n const openResponse = await IpcApp.appFunctionIpc.openStandalone(filePath, openMode, opts);\n const connection = new this(openResponse, openMode);\n IModelConnection.onOpen.raiseEvent(connection);\n return connection;\n }\n\n /** Returns `true` if [[close]] has already been called. */\n public get isClosed(): boolean { return this._isClosed === true; }\n\n /**\n * Close this BriefcaseConnection.\n * @note make sure to call [[saveChanges]] before calling this method. Unsaved local changes are abandoned.\n */\n public async close(): Promise<void> {\n if (this.isClosed)\n return;\n\n await this._modelsMonitor.close();\n\n this.beforeClose();\n this.txns[Symbol.dispose]();\n\n this._isClosed = true;\n await IpcApp.appFunctionIpc.closeIModel(this._fileKey);\n }\n\n private requireTimeline() {\n if (this.iTwinId === Guid.empty)\n throw new IModelError(IModelStatus.WrongIModel, \"iModel has no timeline\");\n }\n\n /** Query if there are any pending Txns in this briefcase that are waiting to be pushed. */\n public async hasPendingTxns(): Promise<boolean> { // eslint-disable-line @itwin/prefer-get\n return this.txns.hasPendingTxns();\n }\n\n /** Commit pending changes to this briefcase.\n * @param description Optional description of the changes.\n */\n public async saveChanges(description?: string): Promise<void> {\n await IpcApp.appFunctionIpc.saveChanges(this.key, description);\n }\n\n /** Pull (and potentially merge if there are local changes) up to a specified changeset from iModelHub into this briefcase\n * @param toIndex The changeset index to pull changes to. If `undefined`, pull all changes.\n * @param options Options for pulling changes.\n * @see [[BriefcaseTxns.onChangesPulled]] for the event dispatched after changes are pulled.\n */\n public async pullChanges(toIndex?: ChangesetIndex, options?: PullChangesOptions): Promise<void> {\n const removeListeners: VoidFunction[] = [];\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const shouldReportProgress = !!options?.progressCallback || !!options?.downloadProgressCallback;\n\n if (shouldReportProgress) {\n const handleProgress = (_evt: Event, data: { loaded: number, total: number }) => {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n options?.progressCallback?.(data);\n options?.downloadProgressCallback?.(data);\n };\n\n const removeProgressListener = IpcApp.addListener(\n getPullChangesIpcChannel(this.iModelId),\n handleProgress,\n );\n removeListeners.push(removeProgressListener);\n }\n\n if (options?.abortSignal) {\n const abort = () => void IpcApp.appFunctionIpc.cancelPullChangesRequest(this.key);\n options?.abortSignal.addEventListener(\"abort\", abort);\n removeListeners.push(() => options?.abortSignal?.removeEventListener(\"abort\", abort));\n }\n\n this.requireTimeline();\n const ipcAppOptions: IpcAppPullChangesOptions = {\n reportProgress: shouldReportProgress,\n progressInterval: options?.progressInterval,\n enableCancellation: !!options?.abortSignal,\n };\n try {\n this.changeset = await IpcApp.appFunctionIpc.pullChanges(this.key, toIndex, ipcAppOptions);\n } finally {\n removeListeners.forEach((remove) => remove());\n }\n }\n\n /** Create a changeset from local Txns and push to iModelHub. On success, clear Txn table.\n * @param description The description for the changeset\n * @returns the changesetId of the pushed changes\n * @see [[BriefcaseTxns.onChangesPushed]] for the event dispatched after changes are pushed.\n */\n public async pushChanges(description: string): Promise<ChangesetIndexAndId> {\n this.requireTimeline();\n return IpcApp.appFunctionIpc.pushChanges(this.key, description);\n }\n\n /** The current graphical editing scope, if one is in progress.\n * @see [[enterEditingScope]] to begin graphical editing.\n */\n public get editingScope(): GraphicalEditingScope | undefined {\n return this._modelsMonitor.editingScope;\n }\n\n /** Return whether graphical editing is supported for this briefcase. It is not supported if the briefcase is read-only, or the briefcase contains a version of\n * the BisCore ECSchema older than v0.1.11.\n * @see [[enterEditingScope]] to enable graphical editing.\n */\n public async supportsGraphicalEditing(): Promise<boolean> {\n return IpcApp.appFunctionIpc.isGraphicalEditingSupported(this.key);\n }\n\n /** Begin a new graphical editing scope.\n * @throws Error if an editing scope already exists or one could not be created.\n * @see [[GraphicalEditingScope.exit]] to exit the scope.\n * @see [[supportsGraphicalEditing]] to determine whether this method should be expected to succeed.\n * @see [[editingScope]] to obtain the current editing scope, if one is in progress.\n */\n public async enterEditingScope(): Promise<GraphicalEditingScope> {\n return this._modelsMonitor.enterEditingScope();\n }\n\n /** Strictly for tests - dispatched from ModelChangeMonitor.processBuffered.\n * @internal\n */\n public readonly onBufferedModelChanges = new BeEvent<(changedModelIds: Set<string>) => void>();\n}\n"]}
|
|
1
|
+
{"version":3,"file":"BriefcaseConnection.js","sourceRoot":"","sources":["../../src/BriefcaseConnection.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAA0B,YAAY,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/H,OAAO,EACgC,wBAAwB,EAAyB,WAAW,GAElG,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,kCAAkC,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AA8CtC;;;GAGG;AACH,MAAM,kBAAkB;IAOtB,YAAmB,SAA8B;QAJhC,mBAAc,GAAG,IAAI,GAAG,EAAU,CAAC;QACnC,mBAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC3C,cAAS,GAAmB,EAAE,CAAC;QAG9C,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAE5B,iCAAiC;QACjC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,EAAE;YAChF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACtC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YAClD,CAAC;QACH,CAAC,CAAC,CAAC,CAAC;QAEJ,8BAA8B;QAC9B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,EAAE;YACzE,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,KAAK,MAAM,EAAE,IAAI,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC7D,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;oBAC/B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC9B,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC,CAAC;QAEJ,gHAAgH;QAChH,MAAM,YAAY,GAAG,KAAK,IAAI,EAAE;YAC9B,IAAI,IAAI,CAAC,YAAY;gBACnB,OAAO;YAET,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;YACxD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;gBACrB,MAAM,SAAS,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAEtE,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC,CAAC;QAEF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC;QAC1E,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC;QACrF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC;QAC9E,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC;IAChF,CAAC;IAEM,KAAK,CAAC,KAAK;QAChB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,SAAS;YAClC,OAAO,EAAE,CAAC;QAEZ,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;QAE1B,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;YAChC,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QACjC,CAAC;IACH,CAAC;IAED,IAAW,YAAY;QACrB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAEM,KAAK,CAAC,iBAAiB;QAC5B,IAAI,IAAI,CAAC,aAAa;YACpB,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;QAEvF,IAAI,CAAC,aAAa,GAAG,MAAM,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAExE,MAAM,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,EAAE;YACtF,MAAM,QAAQ,GAAG,EAAE,CAAC;YACpB,KAAK,MAAM,MAAM,IAAI,OAAO;gBAC1B,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAE3B,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAC5C,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC;YACrC,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;YAC/B,kBAAkB,EAAE,CAAC;YACrB,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAEO,eAAe;QACrB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QACtC,KAAK,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YAC7C,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,gBAAgB,CAAC;YACrD,IAAI,KAAK;gBACP,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;QAC9B,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAS,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7D,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YAC1C,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACtB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;QAED,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAChC,kCAAkC,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAE9D,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAE5D,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;IAEO,gBAAgB,CAAC,aAAmC;QAC1D,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;YACjD,IAAI,IAAI,YAAY,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChE,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE,CAAC;oBACpC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;wBAClC,IAAI,CAAC,eAAe,EAAE,CAAC;wBACvB,IAAI,CAAC,iCAAiC,EAAE,CAAC;wBACzC,MAAM;oBACR,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,OAAO,2BAA2B;IAAxC;QAIE,sEAAsE;QACtD,sBAAiB,GAAG,IAAI,OAAO,EAAsD,CAAC;QAEtG,mEAAmE;QACnD,mBAAc,GAAG,IAAI,OAAO,EAAmD,CAAC;IAiClG,CAAC;IA/BC;;;;OAIG;IACH,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IACD,IAAW,QAAQ,CAAC,QAAgC;QAClD,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC;QACvC,IAAI,QAAQ,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;YAC1B,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IACD,IAAW,KAAK,CAAC,KAA6B;QAC5C,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC;QACjC,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,mBAAoB,SAAQ,gBAAgB;IAWvC,qBAAqB,KAAkC,OAAO,IAAI,CAAC,CAAC,CAAC;IAErF,gEAAgE;IAChE,IAAoB,OAAO,KAAiB,OAAO,KAAK,CAAC,OAAQ,CAAC,CAAC,CAAC,CAAC,oFAAoF;IAEzJ,4CAA4C;IAC5C,IAAoB,QAAQ,KAAiB,OAAO,KAAK,CAAC,QAAS,CAAC,CAAC,CAAC,CAAC,oFAAoF;IAE3J,YAAsB,KAA4B,EAAE,QAAkB;QACpE,KAAK,CAAC,KAAK,CAAC,CAAC;QAjBf;;WAEG;QACa,uBAAkB,GAAG,IAAI,2BAA2B,EAAE,CAAC;QAwJvE;;WAEG;QACa,2BAAsB,GAAG,IAAI,OAAO,EAA0C,CAAC;QA5I7F,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,cAAc,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,QAAQ,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS;YACvC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE,GAAG,MAAM,SAAS,CAAC,SAAS,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7G,CAAC;IAED,+DAA+D;IACxD,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAkC;QAC7D,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QAC9E,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,EAAE,GAAG,cAAc,EAAE,GAAG,WAAW,EAAE,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACrI,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC/C,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,QAAgB,EAAE,WAAqB,QAAQ,CAAC,SAAS,EAAE,IAA4B;QACxH,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC1F,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QACpD,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC/C,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,2DAA2D;IAC3D,IAAW,QAAQ,KAAc,OAAO,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC;IAElE;;;OAGG;IACI,KAAK,CAAC,KAAK;QAChB,IAAI,IAAI,CAAC,QAAQ;YACf,OAAO;QAET,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAElC,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QAE5B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,MAAM,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzD,CAAC;IAEO,eAAe;QACrB,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,KAAK;YAC7B,MAAM,IAAI,WAAW,CAAC,YAAY,CAAC,WAAW,EAAE,wBAAwB,CAAC,CAAC;IAC9E,CAAC;IAED,2FAA2F;IACpF,KAAK,CAAC,cAAc;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;IACpC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,WAAW,CAAC,WAAoB;QAC3C,MAAM,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IACjE,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,WAAW,CAAC,OAAwB,EAAE,OAA4B;QAC7E,MAAM,eAAe,GAAmB,EAAE,CAAC;QAC3C,MAAM,oBAAoB,GAAG,CAAC,CAAC,OAAO,EAAE,wBAAwB,CAAC;QAEjE,IAAI,oBAAoB,EAAE,CAAC;YACzB,MAAM,cAAc,GAAG,CAAC,IAAW,EAAE,IAAuC,EAAE,EAAE;gBAC9E,OAAO,EAAE,wBAAwB,EAAE,CAAC,IAAI,CAAC,CAAC;YAC5C,CAAC,CAAC;YAEF,MAAM,sBAAsB,GAAG,MAAM,CAAC,WAAW,CAC/C,wBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,EACvC,cAAc,CACf,CAAC;YACF,eAAe,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAC/C,CAAC;QAED,IAAI,OAAO,EAAE,WAAW,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC,cAAc,CAAC,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClF,OAAO,EAAE,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACtD,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QACxF,CAAC;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,MAAM,aAAa,GAA6B;YAC9C,cAAc,EAAE,oBAAoB;YACpC,gBAAgB,EAAE,OAAO,EAAE,gBAAgB;YAC3C,kBAAkB,EAAE,CAAC,CAAC,OAAO,EAAE,WAAW;SAC3C,CAAC;QACF,IAAI,CAAC;YACH,IAAI,CAAC,SAAS,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;QAC7F,CAAC;gBAAS,CAAC;YACT,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,WAAW,CAAC,WAAmB;QAC1C,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,OAAO,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACH,IAAW,YAAY;QACrB,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC;IAC1C,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,wBAAwB;QACnC,OAAO,MAAM,CAAC,cAAc,CAAC,2BAA2B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrE,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,iBAAiB;QAC5B,OAAO,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;IACjD,CAAC;CAMF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module IModelConnection\n */\n\nimport { assert, BeEvent, CompressedId64Set, Guid, GuidString, Id64String, IModelStatus, OpenMode } from \"@itwin/core-bentley\";\nimport {\n ChangesetIndex, ChangesetIndexAndId, getPullChangesIpcChannel, IModelConnectionProps, IModelError,\n PullChangesOptions as IpcAppPullChangesOptions, OpenBriefcaseProps, StandaloneOpenOptions,\n} from \"@itwin/core-common\";\nimport { BriefcaseTxns } from \"./BriefcaseTxns\";\nimport { GraphicalEditingScope } from \"./GraphicalEditingScope\";\nimport { IModelApp } from \"./IModelApp\";\nimport { IModelConnection } from \"./IModelConnection\";\nimport { IpcApp } from \"./IpcApp\";\nimport { disposeTileTreesForGeometricModels } from \"./tile/internal\";\nimport { Viewport } from \"./Viewport\";\n\n/**\n * Download progress information.\n * @public\n */\nexport interface DownloadProgressInfo {\n /** Bytes downloaded. */\n loaded: number;\n /** Total size of the download in bytes. */\n total: number;\n}\n\n/**\n * Called to show progress during a download.\n * @public\n */\nexport type OnDownloadProgress = (progress: DownloadProgressInfo) => void;\n\n/**\n * Partial interface of AbortSignal.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal\n * @beta\n */\nexport interface GenericAbortSignal {\n /** Add Listener for abort signal. */\n addEventListener: (type: \"abort\", listener: (this: GenericAbortSignal, ev: any) => any) => void;\n /** Remove Listener for abort signal. */\n removeEventListener: (type: \"abort\", listener: (this: GenericAbortSignal, ev: any) => any) => void;\n}\n\n/**\n * Options for pulling iModel changes.\n * @public\n */\nexport interface PullChangesOptions {\n /** Function called regularly to report progress of changes download. */\n downloadProgressCallback?: OnDownloadProgress;\n /** Interval for calling progress callback (in milliseconds). */\n progressInterval?: number;\n /** Signal for cancelling the download.\n * @beta\n */\n abortSignal?: GenericAbortSignal;\n}\n\n/** Keeps track of changes to models, buffering them until synchronization points.\n * While a GraphicalEditingScope is open, the changes are buffered until the scope exits, at which point they are processed.\n * Otherwise, the buffered changes are processed after undo/redo, commit, or pull+merge changes.\n */\nclass ModelChangeMonitor {\n private _editingScope?: GraphicalEditingScope;\n private readonly _briefcase: BriefcaseConnection;\n private readonly _deletedModels = new Set<string>();\n private readonly _modelIdToGuid = new Map<string, string>();\n private readonly _removals: VoidFunction[] = [];\n\n public constructor(briefcase: BriefcaseConnection) {\n this._briefcase = briefcase;\n\n // Buffer updated geometry guids.\n this._removals.push(briefcase.txns.onModelGeometryChanged.addListener((changes) => {\n for (const change of changes) {\n this._deletedModels.delete(change.id);\n this._modelIdToGuid.set(change.id, change.guid);\n }\n }));\n\n // Buffer deletions of models.\n this._removals.push(briefcase.txns.onModelsChanged.addListener((changes) => {\n if (changes.deleted) {\n for (const id of CompressedId64Set.iterable(changes.deleted)) {\n this._modelIdToGuid.delete(id);\n this._deletedModels.add(id);\n }\n }\n }));\n\n // Outside of an editing scope, we want to update viewport contents after commit, undo/redo, or merging changes.\n const maybeProcess = async () => {\n if (this.editingScope)\n return;\n\n const modelIds = Array.from(this._modelIdToGuid.keys());\n if (modelIds.length > 0)\n await IModelApp.tileAdmin.purgeTileTrees(this._briefcase, modelIds);\n\n this.processBuffered();\n };\n\n this._removals.push(briefcase.txns.onCommitted.addListener(maybeProcess));\n this._removals.push(briefcase.txns.onReplayedExternalTxns.addListener(maybeProcess));\n this._removals.push(briefcase.txns.onAfterUndoRedo.addListener(maybeProcess));\n this._removals.push(briefcase.txns.onChangesPulled.addListener(maybeProcess));\n }\n\n public async close(): Promise<void> {\n for (const removal of this._removals)\n removal();\n\n this._removals.length = 0;\n\n if (this._editingScope) {\n await this._editingScope.exit();\n this._editingScope = undefined;\n }\n }\n\n public get editingScope(): GraphicalEditingScope | undefined {\n return this._editingScope;\n }\n\n public async enterEditingScope(): Promise<GraphicalEditingScope> {\n if (this._editingScope)\n throw new Error(\"Cannot create an editing scope for an iModel that already has one\");\n\n this._editingScope = await GraphicalEditingScope.enter(this._briefcase);\n\n const removeGeomListener = this._editingScope.onGeometryChanges.addListener((changes) => {\n const modelIds = [];\n for (const change of changes)\n modelIds.push(change.id);\n\n this.invalidateScenes(modelIds);\n });\n\n this._editingScope.onExited.addOnce((scope) => {\n assert(scope === this._editingScope);\n this._editingScope = undefined;\n removeGeomListener();\n this.processBuffered();\n });\n\n return this._editingScope;\n }\n\n private processBuffered(): void {\n const models = this._briefcase.models;\n for (const [id, guid] of this._modelIdToGuid) {\n const model = models.getLoaded(id)?.asGeometricModel;\n if (model)\n model.geometryGuid = guid;\n }\n\n const modelIds = new Set<string>(this._modelIdToGuid.keys());\n for (const deleted of this._deletedModels) {\n modelIds.add(deleted);\n models.unload(deleted);\n }\n\n this.invalidateScenes(modelIds);\n disposeTileTreesForGeometricModels(modelIds, this._briefcase);\n\n this._briefcase.onBufferedModelChanges.raiseEvent(modelIds);\n\n this._modelIdToGuid.clear();\n this._deletedModels.clear();\n }\n\n private invalidateScenes(changedModels: Iterable<Id64String>): void {\n for (const user of IModelApp.tileAdmin.tileUsers) {\n if (user instanceof Viewport && user.iModel === this._briefcase) {\n for (const modelId of changedModels) {\n if (user.view.viewsModel(modelId)) {\n user.invalidateScene();\n user.setFeatureOverrideProviderChanged();\n break;\n }\n }\n }\n }\n }\n}\n\n/** Settings that can be used to control the behavior of [[Tool]]s that modify a [[BriefcaseConnection]].\n * For example, tools that want to create new elements can consult the briefcase's editor tool settings to\n * determine into which model and category to insert the elements.\n * Specialized tools are free to ignore these settings.\n * @see [[BriefcaseConnection.editorToolSettings]] to query or modify the current settings for a briefcase.\n * @see [CreateElementTool]($editor-frontend) for an example of a tool that uses these settings.\n * @beta\n */\nexport class BriefcaseEditorToolSettings {\n private _category?: Id64String;\n private _model?: Id64String;\n\n /** An event raised just after the default [[category]] is changed. */\n public readonly onCategoryChanged = new BeEvent<(previousCategory: Id64String | undefined) => void>();\n\n /** An event raised just after the default [[model]] is changed. */\n public readonly onModelChanged = new BeEvent<(previousModel: Id64String | undefined) => void>();\n\n /** The [Category]($backend) into which new elements should be inserted by default.\n * Specialized tools are free to ignore this setting and instead use their own logic to select an appropriate category.\n * @see [[onCategoryChanged]] to be notified when this property is modified.\n * @see [CreateElementTool.targetCategory]($editor-frontend) for an example of a tool that uses this setting.\n */\n public get category(): Id64String | undefined {\n return this._category;\n }\n public set category(category: Id64String | undefined) {\n const previousCategory = this.category;\n if (category !== this.category) {\n this._category = category;\n this.onCategoryChanged.raiseEvent(previousCategory);\n }\n }\n\n /** The [Model]($backend) into which new elements should be inserted by default.\n * Specialized tools are free to ignore this setting and instead use their own logic to select an appropriate model.\n * @see [[onModelChanged]] to be notified when this property is modified.\n * @see [CreateElementTool.targetModelId]($editor-frontend) for an example of a tool that uses this setting.\n */\n public get model(): Id64String | undefined {\n return this._model;\n }\n public set model(model: Id64String | undefined) {\n const previousModel = this.model;\n if (model !== this.model) {\n this._model = model;\n this.onModelChanged.raiseEvent(previousModel);\n }\n }\n}\n\n/** A connection to an editable briefcase on the backend. This class uses [Ipc]($docs/learning/IpcInterface.md) to communicate\n * to the backend and may only be used by [[IpcApp]]s.\n * @public\n */\nexport class BriefcaseConnection extends IModelConnection {\n protected _isClosed?: boolean;\n private readonly _modelsMonitor: ModelChangeMonitor;\n /** Default settings that can be used to control the behavior of [[Tool]]s that modify this briefcase.\n * @beta\n */\n public readonly editorToolSettings = new BriefcaseEditorToolSettings();\n\n /** Manages local changes to the briefcase via [Txns]($docs/learning/InteractiveEditing.md). */\n public readonly txns: BriefcaseTxns;\n\n public override isBriefcaseConnection(): this is BriefcaseConnection { return true; }\n\n /** The Guid that identifies the iTwin that owns this iModel. */\n public override get iTwinId(): GuidString { return super.iTwinId!; } // GuidString | undefined for IModelConnection, but required for BriefcaseConnection\n\n /** The Guid that identifies this iModel. */\n public override get iModelId(): GuidString { return super.iModelId!; } // GuidString | undefined for IModelConnection, but required for BriefcaseConnection\n\n protected constructor(props: IModelConnectionProps, openMode: OpenMode) {\n super(props);\n this._openMode = openMode;\n this.txns = new BriefcaseTxns(this);\n this._modelsMonitor = new ModelChangeMonitor(this);\n if (OpenMode.ReadWrite === this._openMode)\n this.txns.onAfterUndoRedo.addListener(async () => { await IModelApp.toolAdmin.restartPrimitiveTool(); });\n }\n\n /** Open a BriefcaseConnection to a [BriefcaseDb]($backend). */\n public static async openFile(briefcaseProps: OpenBriefcaseProps): Promise<BriefcaseConnection> {\n const iModelProps = await IpcApp.appFunctionIpc.openBriefcase(briefcaseProps);\n const connection = new this({ ...briefcaseProps, ...iModelProps }, briefcaseProps.readonly ? OpenMode.Readonly : OpenMode.ReadWrite);\n IModelConnection.onOpen.raiseEvent(connection);\n return connection;\n }\n\n /** Open a BriefcaseConnection to a [StandaloneDb]($backend)\n * @note StandaloneDbs, by definition, may not push or pull changes. Attempting to do so will throw exceptions.\n */\n public static async openStandalone(filePath: string, openMode: OpenMode = OpenMode.ReadWrite, opts?: StandaloneOpenOptions): Promise<BriefcaseConnection> {\n const openResponse = await IpcApp.appFunctionIpc.openStandalone(filePath, openMode, opts);\n const connection = new this(openResponse, openMode);\n IModelConnection.onOpen.raiseEvent(connection);\n return connection;\n }\n\n /** Returns `true` if [[close]] has already been called. */\n public get isClosed(): boolean { return this._isClosed === true; }\n\n /**\n * Close this BriefcaseConnection.\n * @note make sure to call [[saveChanges]] before calling this method. Unsaved local changes are abandoned.\n */\n public async close(): Promise<void> {\n if (this.isClosed)\n return;\n\n await this._modelsMonitor.close();\n\n this.beforeClose();\n this.txns[Symbol.dispose]();\n\n this._isClosed = true;\n await IpcApp.appFunctionIpc.closeIModel(this._fileKey);\n }\n\n private requireTimeline() {\n if (this.iTwinId === Guid.empty)\n throw new IModelError(IModelStatus.WrongIModel, \"iModel has no timeline\");\n }\n\n /** Query if there are any pending Txns in this briefcase that are waiting to be pushed. */\n public async hasPendingTxns(): Promise<boolean> { // eslint-disable-line @itwin/prefer-get\n return this.txns.hasPendingTxns();\n }\n\n /** Commit pending changes to this briefcase.\n * @param description Optional description of the changes.\n */\n public async saveChanges(description?: string): Promise<void> {\n await IpcApp.appFunctionIpc.saveChanges(this.key, description);\n }\n\n /** Pull (and potentially merge if there are local changes) up to a specified changeset from iModelHub into this briefcase\n * @param toIndex The changeset index to pull changes to. If `undefined`, pull all changes.\n * @param options Options for pulling changes.\n * @see [[BriefcaseTxns.onChangesPulled]] for the event dispatched after changes are pulled.\n */\n public async pullChanges(toIndex?: ChangesetIndex, options?: PullChangesOptions): Promise<void> {\n const removeListeners: VoidFunction[] = [];\n const shouldReportProgress = !!options?.downloadProgressCallback;\n\n if (shouldReportProgress) {\n const handleProgress = (_evt: Event, data: { loaded: number, total: number }) => {\n options?.downloadProgressCallback?.(data);\n };\n\n const removeProgressListener = IpcApp.addListener(\n getPullChangesIpcChannel(this.iModelId),\n handleProgress,\n );\n removeListeners.push(removeProgressListener);\n }\n\n if (options?.abortSignal) {\n const abort = () => void IpcApp.appFunctionIpc.cancelPullChangesRequest(this.key);\n options?.abortSignal.addEventListener(\"abort\", abort);\n removeListeners.push(() => options?.abortSignal?.removeEventListener(\"abort\", abort));\n }\n\n this.requireTimeline();\n const ipcAppOptions: IpcAppPullChangesOptions = {\n reportProgress: shouldReportProgress,\n progressInterval: options?.progressInterval,\n enableCancellation: !!options?.abortSignal,\n };\n try {\n this.changeset = await IpcApp.appFunctionIpc.pullChanges(this.key, toIndex, ipcAppOptions);\n } finally {\n removeListeners.forEach((remove) => remove());\n }\n }\n\n /** Create a changeset from local Txns and push to iModelHub. On success, clear Txn table.\n * @param description The description for the changeset\n * @returns the changesetId of the pushed changes\n * @see [[BriefcaseTxns.onChangesPushed]] for the event dispatched after changes are pushed.\n */\n public async pushChanges(description: string): Promise<ChangesetIndexAndId> {\n this.requireTimeline();\n return IpcApp.appFunctionIpc.pushChanges(this.key, description);\n }\n\n /** The current graphical editing scope, if one is in progress.\n * @see [[enterEditingScope]] to begin graphical editing.\n */\n public get editingScope(): GraphicalEditingScope | undefined {\n return this._modelsMonitor.editingScope;\n }\n\n /** Return whether graphical editing is supported for this briefcase. It is not supported if the briefcase is read-only, or the briefcase contains a version of\n * the BisCore ECSchema older than v0.1.11.\n * @see [[enterEditingScope]] to enable graphical editing.\n */\n public async supportsGraphicalEditing(): Promise<boolean> {\n return IpcApp.appFunctionIpc.isGraphicalEditingSupported(this.key);\n }\n\n /** Begin a new graphical editing scope.\n * @throws Error if an editing scope already exists or one could not be created.\n * @see [[GraphicalEditingScope.exit]] to exit the scope.\n * @see [[supportsGraphicalEditing]] to determine whether this method should be expected to succeed.\n * @see [[editingScope]] to obtain the current editing scope, if one is in progress.\n */\n public async enterEditingScope(): Promise<GraphicalEditingScope> {\n return this._modelsMonitor.enterEditingScope();\n }\n\n /** Strictly for tests - dispatched from ModelChangeMonitor.processBuffered.\n * @internal\n */\n public readonly onBufferedModelChanges = new BeEvent<(changedModelIds: Set<string>) => void>();\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DisplayStyleState.d.ts","sourceRoot":"","sources":["../../src/DisplayStyleState.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,OAAO,EAAU,OAAO,EAAQ,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EACL,kBAAkB,EAAyB,0BAA0B,EAAE,qBAAqB,EAC5F,iBAAiB,EAAwB,QAAQ,EAAE,wBAAwB,EAAE,sBAAsB,EACnG,iBAAiB,EAAE,oBAAoB,EAAE,WAAW,EAAE,iBAAiB,EAAE,SAAS,EAAyB,aAAa,EAAE,aAAa,EACvI,gBAAgB,EAAE,gBAAgB,EAAE,cAAc,EAAE,mBAAmB,EACvE,mBAAmB,EAAE,mBAAmB,EAAE,UAAU,EAAuF,SAAS,EACrJ,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAA4B,aAAa,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAE7F,gBAAgB;AAChB,qBAAa,uBAAuB;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;CAClC;AAED;;;;GAIG;AACH,MAAM,WAAW,yBAAyB;IACxC,oIAAoI;IACpI,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,4FAA4F;IAC5F,mBAAmB,CAAC,EAAE,iBAAiB,CAAC;CACzC;AAED;;;GAGG;AACH,8BAAsB,iBAAkB,SAAQ,YAAa,YAAW,iBAAiB;IACvF,WAA2B,SAAS,WAA6B;IACjE,OAAO,CAAC,gBAAgB,CAAC,CAAiC;IAC1D,OAAO,CAAC,qBAAqB,CAAoC;IACjE,OAAO,CAAC,oCAAoC,CAA8C;IAC1F,gBAAgB;IAChB,SAAS,CAAC,gCAAgC,CAAC,EAAE,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAAC;IACtF,OAAO,CAAC,gBAAgB,CAAS;IAEjC;;OAEG;IACH,SAAgB,gCAAgC,+BAAoC,cAAc,CAAC,eAAe,GAAG,SAAS,KAAK,IAAI,EAAI;
|
|
1
|
+
{"version":3,"file":"DisplayStyleState.d.ts","sourceRoot":"","sources":["../../src/DisplayStyleState.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,OAAO,EAAU,OAAO,EAAQ,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EACL,kBAAkB,EAAyB,0BAA0B,EAAE,qBAAqB,EAC5F,iBAAiB,EAAwB,QAAQ,EAAE,wBAAwB,EAAE,sBAAsB,EACnG,iBAAiB,EAAE,oBAAoB,EAAE,WAAW,EAAE,iBAAiB,EAAE,SAAS,EAAyB,aAAa,EAAE,aAAa,EACvI,gBAAgB,EAAE,gBAAgB,EAAE,cAAc,EAAE,mBAAmB,EACvE,mBAAmB,EAAE,mBAAmB,EAAE,UAAU,EAAuF,SAAS,EACrJ,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAA4B,aAAa,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAE7F,gBAAgB;AAChB,qBAAa,uBAAuB;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;CAClC;AAED;;;;GAIG;AACH,MAAM,WAAW,yBAAyB;IACxC,oIAAoI;IACpI,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,4FAA4F;IAC5F,mBAAmB,CAAC,EAAE,iBAAiB,CAAC;CACzC;AAED;;;GAGG;AACH,8BAAsB,iBAAkB,SAAQ,YAAa,YAAW,iBAAiB;IACvF,WAA2B,SAAS,WAA6B;IACjE,OAAO,CAAC,gBAAgB,CAAC,CAAiC;IAC1D,OAAO,CAAC,qBAAqB,CAAoC;IACjE,OAAO,CAAC,oCAAoC,CAA8C;IAC1F,gBAAgB;IAChB,SAAS,CAAC,gCAAgC,CAAC,EAAE,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAAC;IACtF,OAAO,CAAC,gBAAgB,CAAS;IAEjC;;OAEG;IACH,SAAgB,gCAAgC,+BAAoC,cAAc,CAAC,eAAe,GAAG,SAAS,KAAK,IAAI,EAAI;IAE3I,2EAA2E;IAC3E,SAAgB,uBAAuB,sBAA2B,cAAc,CAAC,MAAM,GAAG,SAAS,KAAK,IAAI,EAAI;IAChH,wGAAwG;IACxG,SAAgB,2BAA2B,sCAA2C,OAAO,KAAK,IAAI,EAAI;IAE1G,uDAAuD;IACvD,aAAoB,QAAQ,IAAI,oBAAoB,CAAC;IAErD,gBAAgB;aACA,sBAAsB,IAAI,uBAAuB,GAAG,SAAS;IAE7E;;;;OAIG;gBACS,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,iBAAiB;IAgB1F;;OAEG;IACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAuBlC,OAAO,CAAC,6BAA6B;YAiBvB,+BAA+B;IA6B7C,gBAAgB;cACA,wBAAwB,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAS1G,gBAAgB;IAChB,IAAW,cAAc,YAExB;IAED,gBAAgB;IAChB,IAAW,SAAS,IAAI,SAAS,CAAkD;IAEnF;;OAEG;IACH,IAAW,iBAAiB,IAAI,iBAAiB,CAEhD;IACD,IAAW,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,EAGnD;IAED;;OAEG;IACH,IAAW,qBAAqB,IAAI,qBAAqB,CAAwC;IACjG,IAAW,qBAAqB,CAAC,QAAQ,EAAE,qBAAqB,EAE/D;IAED;;;;;;;;;;OAUG;IACI,wBAAwB,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI;IAKhE;;;OAGG;IACI,2BAA2B,CAAC,KAAK,EAAE,0BAA0B,GAAG,IAAI;IAY3E;;OAEG;IACI,mBAAmB,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,wBAAwB,KAAK,IAAI,GAAG,IAAI;IAOjF,OAAO,CAAG,gBAAgB;IAO1B,sEAAsE;IACtE,IAAW,aAAa,IAAI,QAAQ,CAAC,wBAAwB,CAAC,CAE7D;IAED,gBAAgB;IACT,yBAAyB,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,iBAAiB,KAAK,IAAI,GAAG,IAAI;IAQ9E,gBAAgB;IACT,kBAAkB,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,iBAAiB,KAAK,IAAI,GAAG,IAAI;IAIvE;;;OAGG;IACI,UAAU,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO;IAOpD,oCAAoC;IACpC,IAAW,IAAI,IAAI,MAAM,CAA4B;IAErD;;;OAGG;IACU,oBAAoB,CAAC,UAAU,EAAE,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAUpF;;OAEG;IACH,IAAW,cAAc,IAAI,cAAc,CAAC,MAAM,GAAG,SAAS,CAE7D;IAED,IAAW,cAAc,CAAC,MAAM,EAAE,cAAc,CAAC,MAAM,GAAG,SAAS,EAkBlE;IAED;;;OAGG;IACH,IAAW,uBAAuB,IAAI,cAAc,CAAC,eAAe,GAAG,SAAS,CAE/E;IAED;;;OAGG;IACI,kBAAkB,CAAC,KAAK,EAAE,wBAAwB,GAAG,wBAAwB;IAMpF;;;OAGG;IACI,8BAA8B,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IAKzE;;OAEG;IACI,0BAA0B,IAAI,wBAAwB,GAAG,SAAS;IAWzE;;;OAGG;IACI,qBAAqB,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO;IA6BzE;;OAEG;IACI,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IAIlE,gBAAgB;IACT,YAAY,CAAC,SAAS,EAAE,OAAO;IAEtC;;;;OAIG;IACI,cAAc,CAAC,OAAO,EAAE;QAAE,QAAQ,EAAE,gBAAgB,CAAC;QAAC,aAAa,EAAE,aAAa,CAAA;KAAE,GAAG,IAAI;IAkBlG;;;OAGG;IACI,mBAAmB,CAAC,OAAO,EAAE;QAAE,KAAK,EAAE,aAAa,CAAC;QAAC,aAAa,EAAE,aAAa,CAAA;KAAE,GAAG,IAAI;IAQjG,gBAAgB;IACT,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO;IAIrF,gBAAgB;IACT,6BAA6B,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,IAAI;IAM5F;;;OAGG;IACI,qBAAqB,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI;IAWhE;;;;;;;OAOG;IACI,gCAAgC,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO;IAIxF;;;OAGG;IACI,eAAe,CAAC,aAAa,EAAE,aAAa,GAAG,gBAAgB,GAAG,SAAS;IAMlF;;OAEG;IACH,IAAW,mBAAmB,IAAI,MAAM,CAEvC;IAED;;OAEG;IACI,yBAAyB,CAAC,YAAY,EAAE,MAAM;IASrD;;;;;;;;;OASG;IACI,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,EAAE,aAAa,EAAE,aAAa;IAStF;;;OAGG;IACI,yBAAyB,CAAC,aAAa,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;IAYnG;;;;;;OAMG;IACI,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC,gBAAgB,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa;IAmBpH,OAAO,CAAC,0BAA0B;IAIlC;;;;OAIG;IACI,iBAAiB,CAAC,aAAa,EAAE,aAAa;IAUrD;;;OAGG;IACI,oBAAoB,CAAC,aAAa,EAAE,aAAa;IAUxD;;;;;OAKG;IACI,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO;IAajF;;OAEG;IACH,IAAW,SAAS,IAAI,SAAS,CAAoC;IACrE,IAAW,SAAS,CAAC,KAAK,EAAE,SAAS,EAAsC;IAE3E,iDAAiD;IACjD,IAAW,eAAe,IAAI,QAAQ,CAA0C;IAChF,IAAW,eAAe,CAAC,GAAG,EAAE,QAAQ,EAA0C;IAElF;;OAEG;IACH,IAAW,eAAe,IAAI,QAAQ,CAA0C;IAChF,IAAW,eAAe,CAAC,GAAG,EAAE,QAAQ,EAA0C;IAElF,OAAO,CAAC,sBAAsB,CAAC,CAI7B;IAEF,gBAAgB;IACT,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAUrD,gBAAgB;IACT,yBAAyB,IAAI,OAAO;IAG3C,gBAAgB;IAChB,IAAW,0BAA0B,IAAI,MAAM,GAAG,SAAS,CAiB1D;IAED,gBAAgB;IACT,wBAAwB,IAAI,qBAAqB,GAAG,SAAS;IAiBpE;;OAEG;IACH,IAAW,yBAAyB,IAAI,aAAa,CAAC,wBAAwB,CAAC,CAE9E;IAED,gBAAgB;IACT,+BAA+B,IAAI;QAAE,QAAQ,EAAE,qBAAqB,CAAC;QAAC,WAAW,EAAE,OAAO,CAAA;KAAE,GAAG,SAAS;IAkB/G,kDAAkD;IAC3C,IAAI,IAAI,IAAI,IAAI,mBAAmB;IAE1C;;;;OAIG;IACI,mBAAmB,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,mBAAmB;IAEnE;;;OAGG;IACI,uBAAuB,CAAC,EAAE,EAAE,UAAU;IAE7C,6EAA6E;IAC7E,IAAW,sBAAsB,YAAmD;IAEpF;;;;OAIG;IACI,sBAAsB,CAAC,EAAE,EAAE,UAAU,GAAG,mBAAmB,GAAG,SAAS;IAE9E;;;;;;OAMG;IACI,4BAA4B,CAAC,WAAW,EAAE,OAAO,GAAG,OAAO;IAalE;;;;;OAKG;IACI,qBAAqB,CAAC,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO;IAiBlF,6EAA6E;IAC7E,IAAW,WAAW,IAAI,OAAO,CAEhC;IAED,gBAAgB;IAChB,SAAS,CAAC,8BAA8B,IAAI,IAAI;IAgChD,gBAAgB;IAChB,SAAS,CAAC,kBAAkB,CAAC,KAAK,EAAE,wBAAwB,GAAG,wBAAwB;IAIvF,gBAAgB;IACT,sBAAsB,CAAC,OAAO,EAAE,UAAU,GAAG,mBAAmB,GAAG,SAAS;CAIpF;AAED;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,iBAAiB;IACxD,WAA2B,SAAS,WAA+B;IACnE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAuB;IAEjD,IAAW,QAAQ,IAAI,oBAAoB,CAA2B;IAEtE,gBAAgB;IACT,sBAAsB,IAAI,uBAAuB,GAAG,SAAS;gBAExD,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,gBAAgB;CAU/D;AAED;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,iBAAiB;IACxD,WAA2B,SAAS,WAA+B;IACnE,OAAO,CAAC,SAAS,CAAyB;IAE1C,IAAW,QAAQ,IAAI,sBAAsB,CAA2B;gBAErD,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,mBAAmB;IAWnG,IAAW,WAAW,IAAI,WAAW,CAEpC;IACD,IAAW,WAAW,CAAC,GAAG,EAAE,WAAW,EAEtC;IAED,IAAW,MAAM,IAAI,aAAa,CAAiC;IACnE,IAAW,MAAM,CAAC,MAAM,EAAE,aAAa,EAAoC;IAE3E,wCAAwC;IACxC,IAAW,YAAY,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAE5C;IAED;;;;OAIG;IACI,UAAU,CAAC,IAAI,EAAE,MAAM;IAI9B,2CAA2C;IAC3C,IAAW,YAAY,IAAI,mBAAmB,CAE7C;IACD,IAAW,YAAY,CAAC,QAAQ,EAAE,mBAAmB,EAEpD;IAED,gBAAgB;cACG,8BAA8B,IAAI,IAAI;IAezD,gBAAgB;IACT,sBAAsB,IAAI,uBAAuB,GAAG,SAAS;CAWrE"}
|