@itwin/appui-react 3.0.0-dev.130 → 3.0.0-dev.135
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/appui-react/UiFramework.d.ts +15 -10
- package/lib/cjs/appui-react/UiFramework.d.ts.map +1 -1
- package/lib/cjs/appui-react/UiFramework.js +16 -11
- package/lib/cjs/appui-react/UiFramework.js.map +1 -1
- package/lib/cjs/appui-react/accudraw/AccuDrawFieldContainer.d.ts +3 -3
- package/lib/cjs/appui-react/accudraw/AccuDrawFieldContainer.d.ts.map +1 -1
- package/lib/cjs/appui-react/accudraw/AccuDrawFieldContainer.js +3 -3
- package/lib/cjs/appui-react/accudraw/AccuDrawFieldContainer.js.map +1 -1
- package/lib/cjs/appui-react/accudraw/FrameworkAccuDraw.d.ts +4 -4
- package/lib/cjs/appui-react/accudraw/FrameworkAccuDraw.d.ts.map +1 -1
- package/lib/cjs/appui-react/accudraw/FrameworkAccuDraw.js +5 -4
- package/lib/cjs/appui-react/accudraw/FrameworkAccuDraw.js.map +1 -1
- package/lib/cjs/appui-react/childwindow/ChildWindowManager.d.ts.map +1 -1
- package/lib/cjs/appui-react/childwindow/ChildWindowManager.js +2 -3
- package/lib/cjs/appui-react/childwindow/ChildWindowManager.js.map +1 -1
- package/lib/cjs/appui-react/content/StageContentLayout.d.ts.map +1 -1
- package/lib/cjs/appui-react/content/StageContentLayout.js +5 -3
- package/lib/cjs/appui-react/content/StageContentLayout.js.map +1 -1
- package/lib/cjs/appui-react/hooks/useFrameworkVersion.js.map +1 -1
- package/lib/cjs/appui-react/popup/KeyinPalettePanel.js +5 -5
- package/lib/cjs/appui-react/popup/KeyinPalettePanel.js.map +1 -1
- package/lib/cjs/appui-react/settings/ui/UiSettingsPage.js +1 -1
- package/lib/cjs/appui-react/settings/ui/UiSettingsPage.js.map +1 -1
- package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts +7 -7
- package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts.map +1 -1
- package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js +9 -9
- package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
- package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.d.ts +2 -2
- package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.d.ts.map +1 -1
- package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.js +2 -2
- package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.js.map +1 -1
- package/lib/cjs/appui-react/{uisettings → uistate}/AppUiSettings.d.ts +7 -7
- package/lib/cjs/appui-react/uistate/AppUiSettings.d.ts.map +1 -0
- package/lib/cjs/appui-react/{uisettings → uistate}/AppUiSettings.js +8 -8
- package/lib/cjs/appui-react/uistate/AppUiSettings.js.map +1 -0
- package/lib/cjs/appui-react/uistate/UserSettingsStorage.d.ts +15 -0
- package/lib/cjs/appui-react/uistate/UserSettingsStorage.d.ts.map +1 -0
- package/lib/cjs/appui-react/{uisettings → uistate}/UserSettingsStorage.js +12 -13
- package/lib/cjs/appui-react/uistate/UserSettingsStorage.js.map +1 -0
- package/lib/cjs/appui-react/uistate/useUiStateStorage.d.ts +20 -0
- package/lib/cjs/appui-react/uistate/useUiStateStorage.d.ts.map +1 -0
- package/lib/cjs/appui-react/uistate/useUiStateStorage.js +38 -0
- package/lib/cjs/appui-react/uistate/useUiStateStorage.js.map +1 -0
- package/lib/cjs/appui-react/utils/UiShowHideManager.d.ts +5 -5
- package/lib/cjs/appui-react/utils/UiShowHideManager.d.ts.map +1 -1
- package/lib/cjs/appui-react/utils/UiShowHideManager.js +6 -6
- package/lib/cjs/appui-react/utils/UiShowHideManager.js.map +1 -1
- package/lib/cjs/appui-react/widget-panels/Frontstage.d.ts +4 -4
- package/lib/cjs/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
- package/lib/cjs/appui-react/widget-panels/Frontstage.js +10 -10
- package/lib/cjs/appui-react/widget-panels/Frontstage.js.map +1 -1
- package/lib/cjs/appui-react.d.ts +4 -4
- package/lib/cjs/appui-react.d.ts.map +1 -1
- package/lib/cjs/appui-react.js +4 -4
- package/lib/cjs/appui-react.js.map +1 -1
- package/lib/esm/appui-react/UiFramework.d.ts +15 -10
- package/lib/esm/appui-react/UiFramework.d.ts.map +1 -1
- package/lib/esm/appui-react/UiFramework.js +17 -12
- package/lib/esm/appui-react/UiFramework.js.map +1 -1
- package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.d.ts +3 -3
- package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.d.ts.map +1 -1
- package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.js +3 -3
- package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.js.map +1 -1
- package/lib/esm/appui-react/accudraw/FrameworkAccuDraw.d.ts +4 -4
- package/lib/esm/appui-react/accudraw/FrameworkAccuDraw.d.ts.map +1 -1
- package/lib/esm/appui-react/accudraw/FrameworkAccuDraw.js +6 -5
- package/lib/esm/appui-react/accudraw/FrameworkAccuDraw.js.map +1 -1
- package/lib/esm/appui-react/childwindow/ChildWindowManager.d.ts.map +1 -1
- package/lib/esm/appui-react/childwindow/ChildWindowManager.js +2 -3
- package/lib/esm/appui-react/childwindow/ChildWindowManager.js.map +1 -1
- package/lib/esm/appui-react/content/StageContentLayout.d.ts.map +1 -1
- package/lib/esm/appui-react/content/StageContentLayout.js +5 -3
- package/lib/esm/appui-react/content/StageContentLayout.js.map +1 -1
- package/lib/esm/appui-react/hooks/useFrameworkVersion.js.map +1 -1
- package/lib/esm/appui-react/popup/KeyinPalettePanel.js +6 -6
- package/lib/esm/appui-react/popup/KeyinPalettePanel.js.map +1 -1
- package/lib/esm/appui-react/settings/ui/UiSettingsPage.js +1 -1
- package/lib/esm/appui-react/settings/ui/UiSettingsPage.js.map +1 -1
- package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts +7 -7
- package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts.map +1 -1
- package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js +10 -10
- package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
- package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.d.ts +2 -2
- package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.d.ts.map +1 -1
- package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.js +2 -2
- package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.js.map +1 -1
- package/lib/esm/appui-react/{uisettings → uistate}/AppUiSettings.d.ts +7 -7
- package/lib/esm/appui-react/uistate/AppUiSettings.d.ts.map +1 -0
- package/lib/esm/appui-react/{uisettings → uistate}/AppUiSettings.js +9 -9
- package/lib/esm/appui-react/uistate/AppUiSettings.js.map +1 -0
- package/lib/esm/appui-react/uistate/UserSettingsStorage.d.ts +15 -0
- package/lib/esm/appui-react/uistate/UserSettingsStorage.d.ts.map +1 -0
- package/lib/esm/appui-react/{uisettings → uistate}/UserSettingsStorage.js +13 -14
- package/lib/esm/appui-react/uistate/UserSettingsStorage.js.map +1 -0
- package/lib/esm/appui-react/uistate/useUiStateStorage.d.ts +20 -0
- package/lib/esm/appui-react/uistate/useUiStateStorage.d.ts.map +1 -0
- package/lib/esm/appui-react/uistate/useUiStateStorage.js +33 -0
- package/lib/esm/appui-react/uistate/useUiStateStorage.js.map +1 -0
- package/lib/esm/appui-react/utils/UiShowHideManager.d.ts +5 -5
- package/lib/esm/appui-react/utils/UiShowHideManager.d.ts.map +1 -1
- package/lib/esm/appui-react/utils/UiShowHideManager.js +7 -7
- package/lib/esm/appui-react/utils/UiShowHideManager.js.map +1 -1
- package/lib/esm/appui-react/widget-panels/Frontstage.d.ts +4 -4
- package/lib/esm/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
- package/lib/esm/appui-react/widget-panels/Frontstage.js +11 -11
- package/lib/esm/appui-react/widget-panels/Frontstage.js.map +1 -1
- package/lib/esm/appui-react.d.ts +4 -4
- package/lib/esm/appui-react.d.ts.map +1 -1
- package/lib/esm/appui-react.js +4 -4
- package/lib/esm/appui-react.js.map +1 -1
- package/package.json +34 -34
- package/lib/cjs/appui-react/uisettings/AppUiSettings.d.ts.map +0 -1
- package/lib/cjs/appui-react/uisettings/AppUiSettings.js.map +0 -1
- package/lib/cjs/appui-react/uisettings/UserSettingsStorage.d.ts +0 -15
- package/lib/cjs/appui-react/uisettings/UserSettingsStorage.d.ts.map +0 -1
- package/lib/cjs/appui-react/uisettings/UserSettingsStorage.js.map +0 -1
- package/lib/cjs/appui-react/uisettings/useUiSettings.d.ts +0 -22
- package/lib/cjs/appui-react/uisettings/useUiSettings.d.ts.map +0 -1
- package/lib/cjs/appui-react/uisettings/useUiSettings.js +0 -29
- package/lib/cjs/appui-react/uisettings/useUiSettings.js.map +0 -1
- package/lib/esm/appui-react/uisettings/AppUiSettings.d.ts.map +0 -1
- package/lib/esm/appui-react/uisettings/AppUiSettings.js.map +0 -1
- package/lib/esm/appui-react/uisettings/UserSettingsStorage.d.ts +0 -15
- package/lib/esm/appui-react/uisettings/UserSettingsStorage.d.ts.map +0 -1
- package/lib/esm/appui-react/uisettings/UserSettingsStorage.js.map +0 -1
- package/lib/esm/appui-react/uisettings/useUiSettings.d.ts +0 -22
- package/lib/esm/appui-react/uisettings/useUiSettings.d.ts.map +0 -1
- package/lib/esm/appui-react/uisettings/useUiSettings.js +0 -24
- package/lib/esm/appui-react/uisettings/useUiSettings.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccuDrawFieldContainer.js","sourceRoot":"","sources":["../../../../src/appui-react/accudraw/AccuDrawFieldContainer.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module AccuDraw\r\n */\r\n\r\nimport \"./AccuDrawFieldContainer.scss\";\r\nimport classnames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport { ColorDef } from \"@itwin/core-common\";\r\nimport { CompassMode, IModelApp, ItemField, ScreenViewport, SelectedViewportChangedArgs } from \"@itwin/core-frontend\";\r\nimport { IconSpecUtilities } from \"@itwin/appui-abstract\";\r\nimport { CommonProps, IconSpec, Orientation, UiSettingsStorage } from \"@itwin/core-react\";\r\nimport { getCSSColorFromDef } from \"@itwin/imodel-components-react\";\r\n\r\nimport { AccuDrawInputField } from \"./AccuDrawInputField\";\r\nimport { KeyboardShortcutManager } from \"../keyboardshortcut/KeyboardShortcut\";\r\nimport { AccuDrawSetCompassModeEventArgs, AccuDrawSetFieldFocusEventArgs, AccuDrawSetFieldLockEventArgs, FrameworkAccuDraw } from \"./FrameworkAccuDraw\";\r\nimport { AccuDrawUiSettings } from \"./AccuDrawUiSettings\";\r\n\r\nimport angleIconSvg from \"./angle.svg?sprite\";\r\nimport distanceIconSvg from \"./distance.svg?sprite\";\r\n\r\n/** Properties for [[AccuDrawFieldContainer]] component\r\n * @beta */\r\nexport interface AccuDrawFieldContainerProps extends CommonProps {\r\n /** Orientation of the fields */\r\n orientation: Orientation;\r\n /** Optional parameter for persistent UI settings. Defaults to LocalSettingsStorage. */\r\n uiSettingsStorage?: UiSettingsStorage; // eslint-disable-line deprecation/deprecation\r\n /** @internal */\r\n showZOverride?: boolean;\r\n}\r\n\r\nlet AccuDrawContainerIndex = 0;\r\n\r\nfunction determineShowZ(vp?: ScreenViewport): boolean {\r\n const showZ = (vp !== undefined) ? /* istanbul ignore next */ vp.view.is3d() : false;\r\n return showZ;\r\n}\r\n\r\nconst defaultXLabel = \"X\";\r\nconst defaultYLabel = \"Y\";\r\nconst defaultZLabel = \"Z\";\r\nconst defaultAngleIcon = IconSpecUtilities.createSvgIconSpec(angleIconSvg);\r\nconst defaultDistanceIcon = IconSpecUtilities.createSvgIconSpec(distanceIconSvg);\r\n\r\n/** AccuDraw Ui Field Container displays [[AccuDrawInputField]] for each field\r\n * @beta */\r\nexport function AccuDrawFieldContainer(props: AccuDrawFieldContainerProps) {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const { className, style, orientation, uiSettingsStorage, showZOverride, ...otherProps } = props;\r\n\r\n const [containerIndex] = React.useState(() => ++AccuDrawContainerIndex);\r\n const xInputRef = React.useRef<HTMLInputElement>(null);\r\n const yInputRef = React.useRef<HTMLInputElement>(null);\r\n const zInputRef = React.useRef<HTMLInputElement>(null);\r\n const angleInputRef = React.useRef<HTMLInputElement>(null);\r\n const distanceInputRef = React.useRef<HTMLInputElement>(null);\r\n const focusField = React.useRef<ItemField | undefined>(undefined);\r\n const [mode, setMode] = React.useState(CompassMode.Rectangular);\r\n const [xLock, setXLock] = React.useState(false);\r\n const [yLock, setYLock] = React.useState(false);\r\n const [zLock, setZLock] = React.useState(false);\r\n const [angleLock, setAngleLock] = React.useState(false);\r\n const [distanceLock, setDistanceLock] = React.useState(false);\r\n const [showZ, setShowZ] = React.useState(true);\r\n const [xLabel, setXLabel] = React.useState<string | undefined>(defaultXLabel);\r\n const [yLabel, setYLabel] = React.useState<string | undefined>(defaultYLabel);\r\n const [zLabel, setZLabel] = React.useState<string | undefined>(defaultZLabel);\r\n const [angleLabel, setAngleLabel] = React.useState<string | undefined>(undefined);\r\n const [distanceLabel, setDistanceLabel] = React.useState<string | undefined>(undefined);\r\n const [xIcon, setXIcon] = React.useState<IconSpec | undefined>(undefined);\r\n const [yIcon, setYIcon] = React.useState<IconSpec | undefined>(undefined);\r\n const [zIcon, setZIcon] = React.useState<IconSpec | undefined>(undefined);\r\n const [angleIcon, setAngleIcon] = React.useState<IconSpec | undefined>(defaultAngleIcon);\r\n const [distanceIcon, setDistanceIcon] = React.useState<IconSpec | undefined>(defaultDistanceIcon);\r\n const [xStyle, setXStyle] = React.useState<React.CSSProperties | undefined>(undefined);\r\n const [yStyle, setYStyle] = React.useState<React.CSSProperties | undefined>(undefined);\r\n const [zStyle, setZStyle] = React.useState<React.CSSProperties | undefined>(undefined);\r\n const [angleStyle, setAngleStyle] = React.useState<React.CSSProperties | undefined>(undefined);\r\n const [distanceStyle, setDistanceStyle] = React.useState<React.CSSProperties | undefined>(undefined);\r\n\r\n const getInputRef = (field: ItemField): React.RefObject<HTMLInputElement> => {\r\n let inputRef: React.RefObject<HTMLInputElement>;\r\n switch (field) {\r\n case ItemField.X_Item:\r\n inputRef = xInputRef;\r\n break;\r\n case ItemField.Y_Item:\r\n inputRef = yInputRef;\r\n break;\r\n case ItemField.Z_Item:\r\n inputRef = zInputRef;\r\n break;\r\n case ItemField.ANGLE_Item:\r\n inputRef = angleInputRef;\r\n break;\r\n case ItemField.DIST_Item:\r\n inputRef = distanceInputRef;\r\n break;\r\n }\r\n return inputRef;\r\n };\r\n\r\n React.useEffect(() => {\r\n setXLock(IModelApp.accuDraw.getFieldLock(ItemField.X_Item));\r\n setYLock(IModelApp.accuDraw.getFieldLock(ItemField.Y_Item));\r\n setZLock(IModelApp.accuDraw.getFieldLock(ItemField.Z_Item));\r\n setAngleLock(IModelApp.accuDraw.getFieldLock(ItemField.ANGLE_Item));\r\n setDistanceLock(IModelApp.accuDraw.getFieldLock(ItemField.DIST_Item));\r\n\r\n const handleSetFieldLock = (args: AccuDrawSetFieldLockEventArgs) => {\r\n switch (args.field) {\r\n case ItemField.X_Item:\r\n setXLock(args.lock);\r\n break;\r\n case ItemField.Y_Item:\r\n setYLock(args.lock);\r\n break;\r\n case ItemField.Z_Item:\r\n setZLock(args.lock);\r\n break;\r\n case ItemField.ANGLE_Item:\r\n setAngleLock(args.lock);\r\n break;\r\n case ItemField.DIST_Item:\r\n setDistanceLock(args.lock);\r\n break;\r\n }\r\n };\r\n return FrameworkAccuDraw.onAccuDrawSetFieldLockEvent.addListener(handleSetFieldLock);\r\n }, []);\r\n\r\n const setFocusToField = React.useCallback((field: ItemField) => {\r\n const inputRef = getInputRef(field);\r\n\r\n // istanbul ignore else\r\n if (inputRef.current && document.activeElement !== inputRef.current) {\r\n inputRef.current.focus();\r\n inputRef.current.select();\r\n }\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n const handleSetFieldFocus = (args: AccuDrawSetFieldFocusEventArgs) => {\r\n focusField.current = args.field;\r\n setFocusToField(focusField.current);\r\n };\r\n return FrameworkAccuDraw.onAccuDrawSetFieldFocusEvent.addListener(handleSetFieldFocus);\r\n }, [setFocusToField]);\r\n\r\n React.useEffect(() => {\r\n const handleGrabInputFocus = () => {\r\n // istanbul ignore else\r\n if (focusField.current)\r\n setFocusToField(focusField.current);\r\n };\r\n return FrameworkAccuDraw.onAccuDrawGrabInputFocusEvent.addListener(handleGrabInputFocus);\r\n }, [setFocusToField]);\r\n\r\n React.useEffect(() => {\r\n setMode(IModelApp.accuDraw.compassMode);\r\n\r\n const handleSetMode = (args: AccuDrawSetCompassModeEventArgs) => {\r\n setMode(args.mode);\r\n };\r\n\r\n return FrameworkAccuDraw.onAccuDrawSetCompassModeEvent.addListener(handleSetMode);\r\n }, []);\r\n\r\n const handleValueChanged = React.useCallback((field: ItemField, stringValue: string) => {\r\n FrameworkAccuDraw.setFieldValueFromUi(field, stringValue);\r\n }, []);\r\n\r\n const handleEscPressed = React.useCallback(() => {\r\n KeyboardShortcutManager.setFocusToHome();\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n setShowZ(showZOverride || determineShowZ(IModelApp.viewManager.selectedView));\r\n\r\n // istanbul ignore next\r\n const handleSelectedViewportChanged = (args: SelectedViewportChangedArgs) => {\r\n setShowZ(determineShowZ(args.current));\r\n };\r\n\r\n return IModelApp.viewManager.onSelectedViewportChanged.addListener(handleSelectedViewportChanged);\r\n }, [showZOverride]);\r\n\r\n React.useEffect(() => {\r\n\r\n const createFieldStyle = (inStyle: React.CSSProperties | undefined,\r\n backgroundColor: ColorDef | string | undefined,\r\n foregroundColor: ColorDef | string | undefined): React.CSSProperties | undefined => {\r\n let fieldStyle: React.CSSProperties | undefined;\r\n let rgbaString = \"\";\r\n if (inStyle || backgroundColor || foregroundColor) {\r\n fieldStyle = inStyle ? inStyle : {};\r\n if (backgroundColor) {\r\n rgbaString = typeof backgroundColor === \"string\" ? backgroundColor : getCSSColorFromDef(backgroundColor);\r\n fieldStyle = { ...fieldStyle, backgroundColor: rgbaString };\r\n }\r\n if (foregroundColor) {\r\n rgbaString = typeof foregroundColor === \"string\" ? foregroundColor : getCSSColorFromDef(foregroundColor);\r\n fieldStyle = { ...fieldStyle, color: rgbaString };\r\n }\r\n }\r\n return fieldStyle;\r\n };\r\n\r\n const processAccuDrawUiSettings = (settings?: AccuDrawUiSettings) => {\r\n setXStyle(settings ? createFieldStyle(settings.xStyle, settings.xBackgroundColor, settings.xForegroundColor) : undefined);\r\n setYStyle(settings ? createFieldStyle(settings.yStyle, settings.yBackgroundColor, settings.yForegroundColor) : undefined);\r\n setZStyle(settings ? createFieldStyle(settings.zStyle, settings.zBackgroundColor, settings.zForegroundColor) : undefined);\r\n setAngleStyle(settings ? createFieldStyle(settings.angleStyle, settings.angleBackgroundColor, settings.angleForegroundColor) : undefined);\r\n setDistanceStyle(settings ? createFieldStyle(settings.distanceStyle, settings.distanceBackgroundColor, settings.distanceForegroundColor) : undefined);\r\n\r\n setXLabel(settings && settings.xLabel !== undefined ? settings.xLabel : defaultXLabel);\r\n setYLabel(settings && settings.yLabel !== undefined ? settings.yLabel : defaultYLabel);\r\n setZLabel(settings && settings.zLabel !== undefined ? settings.zLabel : defaultZLabel);\r\n setAngleLabel(settings && settings.angleLabel !== undefined ? settings.angleLabel : undefined);\r\n setDistanceLabel(settings && settings.distanceLabel !== undefined ? settings.distanceLabel : undefined);\r\n\r\n setXIcon(settings && settings.xIcon !== undefined ? settings.xIcon : undefined);\r\n setYIcon(settings && settings.yIcon !== undefined ? settings.yIcon : undefined);\r\n setZIcon(settings && settings.zIcon !== undefined ? settings.zIcon : undefined);\r\n setAngleIcon(settings && settings.angleIcon !== undefined ? settings.angleIcon : defaultAngleIcon);\r\n setDistanceIcon(settings && settings.distanceIcon !== undefined ? settings.distanceIcon : defaultDistanceIcon);\r\n };\r\n\r\n if (FrameworkAccuDraw.uiSettings)\r\n processAccuDrawUiSettings(FrameworkAccuDraw.uiSettings);\r\n\r\n // istanbul ignore next\r\n const handleAccuDrawUiSettingsChanged = () => {\r\n processAccuDrawUiSettings(FrameworkAccuDraw.uiSettings);\r\n };\r\n\r\n return FrameworkAccuDraw.onAccuDrawUiSettingsChangedEvent.addListener(handleAccuDrawUiSettingsChanged);\r\n }, []);\r\n\r\n const classNames = classnames(\r\n \"uifw-accudraw-field-container\",\r\n (orientation === Orientation.Vertical) ? \"uifw-accudraw-field-container-vertical\" : \"uifw-accudraw-field-container-horizontal\",\r\n className,\r\n );\r\n\r\n const delay = 250;\r\n const labelCentered = (xLabel !== undefined && xLabel.length === 1 && yLabel !== undefined && yLabel.length === 1 && zLabel !== undefined && zLabel.length === 1);\r\n\r\n return (\r\n <div className={classNames} style={style} {...otherProps}>\r\n {mode === CompassMode.Rectangular &&\r\n <>\r\n <AccuDrawInputField ref={xInputRef} isLocked={xLock} className=\"uifw-accudraw-x-value\" style={xStyle}\r\n field={ItemField.X_Item} id={`uifw-accudraw-x-${containerIndex}`} data-testid=\"uifw-accudraw-x\"\r\n label={xLabel} iconSpec={xIcon} labelCentered={labelCentered}\r\n valueChangedDelay={delay} onValueChanged={(stringValue) => handleValueChanged(ItemField.X_Item, stringValue)}\r\n onEscPressed={handleEscPressed} />\r\n <AccuDrawInputField ref={yInputRef} isLocked={yLock} className=\"uifw-accudraw-y-value\" style={yStyle}\r\n field={ItemField.Y_Item} id={`uifw-accudraw-y-${containerIndex}`} data-testid=\"uifw-accudraw-y\"\r\n label={yLabel} iconSpec={yIcon} labelCentered={labelCentered}\r\n valueChangedDelay={delay} onValueChanged={(stringValue) => handleValueChanged(ItemField.Y_Item, stringValue)}\r\n onEscPressed={handleEscPressed} />\r\n {showZ &&\r\n <AccuDrawInputField ref={zInputRef} isLocked={zLock} className=\"uifw-accudraw-z-value\" style={zStyle}\r\n field={ItemField.Z_Item} id={`uifw-accudraw-z-${containerIndex}`} data-testid=\"uifw-accudraw-z\"\r\n label={zLabel} iconSpec={zIcon} labelCentered={labelCentered}\r\n valueChangedDelay={delay} onValueChanged={(stringValue) => handleValueChanged(ItemField.Z_Item, stringValue)}\r\n onEscPressed={handleEscPressed} />\r\n }\r\n </>\r\n }\r\n {mode === CompassMode.Polar &&\r\n <>\r\n <AccuDrawInputField ref={angleInputRef} isLocked={angleLock} className=\"uifw-accudraw-angle-value\" style={angleStyle}\r\n field={ItemField.ANGLE_Item} id={`uifw-accudraw-angle-${containerIndex}`} data-testid=\"uifw-accudraw-angle\"\r\n label={angleLabel} iconSpec={angleIcon}\r\n valueChangedDelay={delay} onValueChanged={(stringValue) => handleValueChanged(ItemField.ANGLE_Item, stringValue)}\r\n onEscPressed={handleEscPressed} />\r\n <AccuDrawInputField ref={distanceInputRef} isLocked={distanceLock} className=\"uifw-accudraw-distance-value\" style={distanceStyle}\r\n field={ItemField.DIST_Item} id={`uifw-accudraw-distance-${containerIndex}`} data-testid=\"uifw-accudraw-distance\"\r\n label={distanceLabel} iconSpec={distanceIcon}\r\n valueChangedDelay={delay} onValueChanged={(stringValue) => handleValueChanged(ItemField.DIST_Item, stringValue)}\r\n onEscPressed={handleEscPressed} />\r\n </>\r\n }\r\n </div>\r\n );\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"AccuDrawFieldContainer.js","sourceRoot":"","sources":["../../../../src/appui-react/accudraw/AccuDrawFieldContainer.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module AccuDraw\r\n */\r\n\r\nimport \"./AccuDrawFieldContainer.scss\";\r\nimport classnames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport { ColorDef } from \"@itwin/core-common\";\r\nimport { CompassMode, IModelApp, ItemField, ScreenViewport, SelectedViewportChangedArgs } from \"@itwin/core-frontend\";\r\nimport { IconSpecUtilities } from \"@itwin/appui-abstract\";\r\nimport { CommonProps, IconSpec, Orientation, UiStateStorage } from \"@itwin/core-react\";\r\nimport { getCSSColorFromDef } from \"@itwin/imodel-components-react\";\r\n\r\nimport { AccuDrawInputField } from \"./AccuDrawInputField\";\r\nimport { KeyboardShortcutManager } from \"../keyboardshortcut/KeyboardShortcut\";\r\nimport { AccuDrawSetCompassModeEventArgs, AccuDrawSetFieldFocusEventArgs, AccuDrawSetFieldLockEventArgs, FrameworkAccuDraw } from \"./FrameworkAccuDraw\";\r\nimport { AccuDrawUiSettings } from \"./AccuDrawUiSettings\";\r\n\r\nimport angleIconSvg from \"./angle.svg?sprite\";\r\nimport distanceIconSvg from \"./distance.svg?sprite\";\r\n\r\n/** Properties for [[AccuDrawFieldContainer]] component\r\n * @beta */\r\nexport interface AccuDrawFieldContainerProps extends CommonProps {\r\n /** Orientation of the fields */\r\n orientation: Orientation;\r\n /** Optional parameter for persistent UI settings. Defaults to LocalStateStorage. */\r\n uiSettingsStorage?: UiStateStorage;\r\n /** @internal */\r\n showZOverride?: boolean;\r\n}\r\n\r\nlet AccuDrawContainerIndex = 0;\r\n\r\nfunction determineShowZ(vp?: ScreenViewport): boolean {\r\n const showZ = (vp !== undefined) ? /* istanbul ignore next */ vp.view.is3d() : false;\r\n return showZ;\r\n}\r\n\r\nconst defaultXLabel = \"X\";\r\nconst defaultYLabel = \"Y\";\r\nconst defaultZLabel = \"Z\";\r\nconst defaultAngleIcon = IconSpecUtilities.createSvgIconSpec(angleIconSvg);\r\nconst defaultDistanceIcon = IconSpecUtilities.createSvgIconSpec(distanceIconSvg);\r\n\r\n/** AccuDraw Ui Field Container displays [[AccuDrawInputField]] for each field\r\n * @beta */\r\nexport function AccuDrawFieldContainer(props: AccuDrawFieldContainerProps) {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const { className, style, orientation, uiSettingsStorage, showZOverride, ...otherProps } = props;\r\n\r\n const [containerIndex] = React.useState(() => ++AccuDrawContainerIndex);\r\n const xInputRef = React.useRef<HTMLInputElement>(null);\r\n const yInputRef = React.useRef<HTMLInputElement>(null);\r\n const zInputRef = React.useRef<HTMLInputElement>(null);\r\n const angleInputRef = React.useRef<HTMLInputElement>(null);\r\n const distanceInputRef = React.useRef<HTMLInputElement>(null);\r\n const focusField = React.useRef<ItemField | undefined>(undefined);\r\n const [mode, setMode] = React.useState(CompassMode.Rectangular);\r\n const [xLock, setXLock] = React.useState(false);\r\n const [yLock, setYLock] = React.useState(false);\r\n const [zLock, setZLock] = React.useState(false);\r\n const [angleLock, setAngleLock] = React.useState(false);\r\n const [distanceLock, setDistanceLock] = React.useState(false);\r\n const [showZ, setShowZ] = React.useState(true);\r\n const [xLabel, setXLabel] = React.useState<string | undefined>(defaultXLabel);\r\n const [yLabel, setYLabel] = React.useState<string | undefined>(defaultYLabel);\r\n const [zLabel, setZLabel] = React.useState<string | undefined>(defaultZLabel);\r\n const [angleLabel, setAngleLabel] = React.useState<string | undefined>(undefined);\r\n const [distanceLabel, setDistanceLabel] = React.useState<string | undefined>(undefined);\r\n const [xIcon, setXIcon] = React.useState<IconSpec | undefined>(undefined);\r\n const [yIcon, setYIcon] = React.useState<IconSpec | undefined>(undefined);\r\n const [zIcon, setZIcon] = React.useState<IconSpec | undefined>(undefined);\r\n const [angleIcon, setAngleIcon] = React.useState<IconSpec | undefined>(defaultAngleIcon);\r\n const [distanceIcon, setDistanceIcon] = React.useState<IconSpec | undefined>(defaultDistanceIcon);\r\n const [xStyle, setXStyle] = React.useState<React.CSSProperties | undefined>(undefined);\r\n const [yStyle, setYStyle] = React.useState<React.CSSProperties | undefined>(undefined);\r\n const [zStyle, setZStyle] = React.useState<React.CSSProperties | undefined>(undefined);\r\n const [angleStyle, setAngleStyle] = React.useState<React.CSSProperties | undefined>(undefined);\r\n const [distanceStyle, setDistanceStyle] = React.useState<React.CSSProperties | undefined>(undefined);\r\n\r\n const getInputRef = (field: ItemField): React.RefObject<HTMLInputElement> => {\r\n let inputRef: React.RefObject<HTMLInputElement>;\r\n switch (field) {\r\n case ItemField.X_Item:\r\n inputRef = xInputRef;\r\n break;\r\n case ItemField.Y_Item:\r\n inputRef = yInputRef;\r\n break;\r\n case ItemField.Z_Item:\r\n inputRef = zInputRef;\r\n break;\r\n case ItemField.ANGLE_Item:\r\n inputRef = angleInputRef;\r\n break;\r\n case ItemField.DIST_Item:\r\n inputRef = distanceInputRef;\r\n break;\r\n }\r\n return inputRef;\r\n };\r\n\r\n React.useEffect(() => {\r\n setXLock(IModelApp.accuDraw.getFieldLock(ItemField.X_Item));\r\n setYLock(IModelApp.accuDraw.getFieldLock(ItemField.Y_Item));\r\n setZLock(IModelApp.accuDraw.getFieldLock(ItemField.Z_Item));\r\n setAngleLock(IModelApp.accuDraw.getFieldLock(ItemField.ANGLE_Item));\r\n setDistanceLock(IModelApp.accuDraw.getFieldLock(ItemField.DIST_Item));\r\n\r\n const handleSetFieldLock = (args: AccuDrawSetFieldLockEventArgs) => {\r\n switch (args.field) {\r\n case ItemField.X_Item:\r\n setXLock(args.lock);\r\n break;\r\n case ItemField.Y_Item:\r\n setYLock(args.lock);\r\n break;\r\n case ItemField.Z_Item:\r\n setZLock(args.lock);\r\n break;\r\n case ItemField.ANGLE_Item:\r\n setAngleLock(args.lock);\r\n break;\r\n case ItemField.DIST_Item:\r\n setDistanceLock(args.lock);\r\n break;\r\n }\r\n };\r\n return FrameworkAccuDraw.onAccuDrawSetFieldLockEvent.addListener(handleSetFieldLock);\r\n }, []);\r\n\r\n const setFocusToField = React.useCallback((field: ItemField) => {\r\n const inputRef = getInputRef(field);\r\n\r\n // istanbul ignore else\r\n if (inputRef.current && document.activeElement !== inputRef.current) {\r\n inputRef.current.focus();\r\n inputRef.current.select();\r\n }\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n const handleSetFieldFocus = (args: AccuDrawSetFieldFocusEventArgs) => {\r\n focusField.current = args.field;\r\n setFocusToField(focusField.current);\r\n };\r\n return FrameworkAccuDraw.onAccuDrawSetFieldFocusEvent.addListener(handleSetFieldFocus);\r\n }, [setFocusToField]);\r\n\r\n React.useEffect(() => {\r\n const handleGrabInputFocus = () => {\r\n // istanbul ignore else\r\n if (focusField.current)\r\n setFocusToField(focusField.current);\r\n };\r\n return FrameworkAccuDraw.onAccuDrawGrabInputFocusEvent.addListener(handleGrabInputFocus);\r\n }, [setFocusToField]);\r\n\r\n React.useEffect(() => {\r\n setMode(IModelApp.accuDraw.compassMode);\r\n\r\n const handleSetMode = (args: AccuDrawSetCompassModeEventArgs) => {\r\n setMode(args.mode);\r\n };\r\n\r\n return FrameworkAccuDraw.onAccuDrawSetCompassModeEvent.addListener(handleSetMode);\r\n }, []);\r\n\r\n const handleValueChanged = React.useCallback((field: ItemField, stringValue: string) => {\r\n FrameworkAccuDraw.setFieldValueFromUi(field, stringValue);\r\n }, []);\r\n\r\n const handleEscPressed = React.useCallback(() => {\r\n KeyboardShortcutManager.setFocusToHome();\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n setShowZ(showZOverride || determineShowZ(IModelApp.viewManager.selectedView));\r\n\r\n // istanbul ignore next\r\n const handleSelectedViewportChanged = (args: SelectedViewportChangedArgs) => {\r\n setShowZ(determineShowZ(args.current));\r\n };\r\n\r\n return IModelApp.viewManager.onSelectedViewportChanged.addListener(handleSelectedViewportChanged);\r\n }, [showZOverride]);\r\n\r\n React.useEffect(() => {\r\n\r\n const createFieldStyle = (inStyle: React.CSSProperties | undefined,\r\n backgroundColor: ColorDef | string | undefined,\r\n foregroundColor: ColorDef | string | undefined): React.CSSProperties | undefined => {\r\n let fieldStyle: React.CSSProperties | undefined;\r\n let rgbaString = \"\";\r\n if (inStyle || backgroundColor || foregroundColor) {\r\n fieldStyle = inStyle ? inStyle : {};\r\n if (backgroundColor) {\r\n rgbaString = typeof backgroundColor === \"string\" ? backgroundColor : getCSSColorFromDef(backgroundColor);\r\n fieldStyle = { ...fieldStyle, backgroundColor: rgbaString };\r\n }\r\n if (foregroundColor) {\r\n rgbaString = typeof foregroundColor === \"string\" ? foregroundColor : getCSSColorFromDef(foregroundColor);\r\n fieldStyle = { ...fieldStyle, color: rgbaString };\r\n }\r\n }\r\n return fieldStyle;\r\n };\r\n\r\n const processAccuDrawUiSettings = (settings?: AccuDrawUiSettings) => {\r\n setXStyle(settings ? createFieldStyle(settings.xStyle, settings.xBackgroundColor, settings.xForegroundColor) : undefined);\r\n setYStyle(settings ? createFieldStyle(settings.yStyle, settings.yBackgroundColor, settings.yForegroundColor) : undefined);\r\n setZStyle(settings ? createFieldStyle(settings.zStyle, settings.zBackgroundColor, settings.zForegroundColor) : undefined);\r\n setAngleStyle(settings ? createFieldStyle(settings.angleStyle, settings.angleBackgroundColor, settings.angleForegroundColor) : undefined);\r\n setDistanceStyle(settings ? createFieldStyle(settings.distanceStyle, settings.distanceBackgroundColor, settings.distanceForegroundColor) : undefined);\r\n\r\n setXLabel(settings && settings.xLabel !== undefined ? settings.xLabel : defaultXLabel);\r\n setYLabel(settings && settings.yLabel !== undefined ? settings.yLabel : defaultYLabel);\r\n setZLabel(settings && settings.zLabel !== undefined ? settings.zLabel : defaultZLabel);\r\n setAngleLabel(settings && settings.angleLabel !== undefined ? settings.angleLabel : undefined);\r\n setDistanceLabel(settings && settings.distanceLabel !== undefined ? settings.distanceLabel : undefined);\r\n\r\n setXIcon(settings && settings.xIcon !== undefined ? settings.xIcon : undefined);\r\n setYIcon(settings && settings.yIcon !== undefined ? settings.yIcon : undefined);\r\n setZIcon(settings && settings.zIcon !== undefined ? settings.zIcon : undefined);\r\n setAngleIcon(settings && settings.angleIcon !== undefined ? settings.angleIcon : defaultAngleIcon);\r\n setDistanceIcon(settings && settings.distanceIcon !== undefined ? settings.distanceIcon : defaultDistanceIcon);\r\n };\r\n\r\n if (FrameworkAccuDraw.uiStateStorage)\r\n processAccuDrawUiSettings(FrameworkAccuDraw.uiStateStorage);\r\n\r\n // istanbul ignore next\r\n const handleAccuDrawUiSettingsChanged = () => {\r\n processAccuDrawUiSettings(FrameworkAccuDraw.uiStateStorage);\r\n };\r\n\r\n return FrameworkAccuDraw.onAccuDrawUiSettingsChangedEvent.addListener(handleAccuDrawUiSettingsChanged);\r\n }, []);\r\n\r\n const classNames = classnames(\r\n \"uifw-accudraw-field-container\",\r\n (orientation === Orientation.Vertical) ? \"uifw-accudraw-field-container-vertical\" : \"uifw-accudraw-field-container-horizontal\",\r\n className,\r\n );\r\n\r\n const delay = 250;\r\n const labelCentered = (xLabel !== undefined && xLabel.length === 1 && yLabel !== undefined && yLabel.length === 1 && zLabel !== undefined && zLabel.length === 1);\r\n\r\n return (\r\n <div className={classNames} style={style} {...otherProps}>\r\n {mode === CompassMode.Rectangular &&\r\n <>\r\n <AccuDrawInputField ref={xInputRef} isLocked={xLock} className=\"uifw-accudraw-x-value\" style={xStyle}\r\n field={ItemField.X_Item} id={`uifw-accudraw-x-${containerIndex}`} data-testid=\"uifw-accudraw-x\"\r\n label={xLabel} iconSpec={xIcon} labelCentered={labelCentered}\r\n valueChangedDelay={delay} onValueChanged={(stringValue) => handleValueChanged(ItemField.X_Item, stringValue)}\r\n onEscPressed={handleEscPressed} />\r\n <AccuDrawInputField ref={yInputRef} isLocked={yLock} className=\"uifw-accudraw-y-value\" style={yStyle}\r\n field={ItemField.Y_Item} id={`uifw-accudraw-y-${containerIndex}`} data-testid=\"uifw-accudraw-y\"\r\n label={yLabel} iconSpec={yIcon} labelCentered={labelCentered}\r\n valueChangedDelay={delay} onValueChanged={(stringValue) => handleValueChanged(ItemField.Y_Item, stringValue)}\r\n onEscPressed={handleEscPressed} />\r\n {showZ &&\r\n <AccuDrawInputField ref={zInputRef} isLocked={zLock} className=\"uifw-accudraw-z-value\" style={zStyle}\r\n field={ItemField.Z_Item} id={`uifw-accudraw-z-${containerIndex}`} data-testid=\"uifw-accudraw-z\"\r\n label={zLabel} iconSpec={zIcon} labelCentered={labelCentered}\r\n valueChangedDelay={delay} onValueChanged={(stringValue) => handleValueChanged(ItemField.Z_Item, stringValue)}\r\n onEscPressed={handleEscPressed} />\r\n }\r\n </>\r\n }\r\n {mode === CompassMode.Polar &&\r\n <>\r\n <AccuDrawInputField ref={angleInputRef} isLocked={angleLock} className=\"uifw-accudraw-angle-value\" style={angleStyle}\r\n field={ItemField.ANGLE_Item} id={`uifw-accudraw-angle-${containerIndex}`} data-testid=\"uifw-accudraw-angle\"\r\n label={angleLabel} iconSpec={angleIcon}\r\n valueChangedDelay={delay} onValueChanged={(stringValue) => handleValueChanged(ItemField.ANGLE_Item, stringValue)}\r\n onEscPressed={handleEscPressed} />\r\n <AccuDrawInputField ref={distanceInputRef} isLocked={distanceLock} className=\"uifw-accudraw-distance-value\" style={distanceStyle}\r\n field={ItemField.DIST_Item} id={`uifw-accudraw-distance-${containerIndex}`} data-testid=\"uifw-accudraw-distance\"\r\n label={distanceLabel} iconSpec={distanceIcon}\r\n valueChangedDelay={delay} onValueChanged={(stringValue) => handleValueChanged(ItemField.DIST_Item, stringValue)}\r\n onEscPressed={handleEscPressed} />\r\n </>\r\n }\r\n </div>\r\n );\r\n}\r\n"]}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import { BeUiEvent } from "@itwin/core-bentley";
|
|
5
5
|
import { AccuDraw, BeButtonEvent, CompassMode, ItemField } from "@itwin/core-frontend";
|
|
6
6
|
import { ConditionalBooleanValue } from "@itwin/appui-abstract";
|
|
7
|
-
import {
|
|
7
|
+
import { UiStateStorage } from "@itwin/core-react";
|
|
8
8
|
import { UserSettingsProvider } from "../UiFramework";
|
|
9
9
|
import { AccuDrawUiSettings } from "./AccuDrawUiSettings";
|
|
10
10
|
/** Arguments for [[AccuDrawSetFieldFocusEvent]]
|
|
@@ -106,10 +106,10 @@ export declare class FrameworkAccuDraw extends AccuDraw implements UserSettingsP
|
|
|
106
106
|
/** Determines if notifications should be displayed for AccuDraw changes */
|
|
107
107
|
static get displayNotifications(): boolean;
|
|
108
108
|
static set displayNotifications(v: boolean);
|
|
109
|
-
loadUserSettings(storage:
|
|
109
|
+
loadUserSettings(storage: UiStateStorage): Promise<void>;
|
|
110
110
|
/** AccuDraw User Interface settings */
|
|
111
|
-
static get
|
|
112
|
-
static set
|
|
111
|
+
static get uiStateStorage(): AccuDrawUiSettings | undefined;
|
|
112
|
+
static set uiStateStorage(v: AccuDrawUiSettings | undefined);
|
|
113
113
|
constructor();
|
|
114
114
|
private handleSetFieldValueFromUiEvent;
|
|
115
115
|
/** @internal */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FrameworkAccuDraw.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/accudraw/FrameworkAccuDraw.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EACL,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAa,SAAS,EAE3D,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"FrameworkAccuDraw.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/accudraw/FrameworkAccuDraw.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EACL,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAa,SAAS,EAE3D,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAwB,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAe,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAkB1D;WACW;AACX,MAAM,WAAW,8BAA8B;IAC7C,KAAK,EAAE,SAAS,CAAC;CAClB;AAED;WACW;AACX,qBAAa,0BAA2B,SAAQ,SAAS,CAAC,8BAA8B,CAAC;CAAI;AAE7F;WACW;AACX,MAAM,WAAW,kCAAkC;IACjD,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;WACW;AACX,qBAAa,8BAA+B,SAAQ,SAAS,CAAC,kCAAkC,CAAC;CAAI;AAErG;WACW;AACX,MAAM,WAAW,oCAAoC;IACnD,KAAK,EAAE,SAAS,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;WACW;AACX,qBAAa,gCAAiC,SAAQ,SAAS,CAAC,oCAAoC,CAAC;CAAI;AAEzG;WACW;AACX,MAAM,WAAW,6BAA6B;IAC5C,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;CACf;AAED;WACW;AACX,qBAAa,yBAA0B,SAAQ,SAAS,CAAC,6BAA6B,CAAC;CAAI;AAE3F;WACW;AACX,MAAM,WAAW,+BAA+B;IAC9C,IAAI,EAAE,WAAW,CAAC;CACnB;AAED;WACW;AACX,qBAAa,2BAA4B,SAAQ,SAAS,CAAC,+BAA+B,CAAC;CAAI;AAE/F;WACW;AACX,qBAAa,2BAA4B,SAAQ,SAAS,CAAC,EAAE,CAAC;CAAI;AAElE;WACW;AACX,qBAAa,8BAA+B,SAAQ,SAAS,CAAC,EAAE,CAAC;CAAI;AAErE;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,QAAS,YAAW,oBAAoB;IAC7E,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAAS;IAC7C,OAAO,CAAC,MAAM,CAAC,WAAW,CAAiC;IAC3D,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAmB;IACpD,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAA2B;IAC3D,SAAgB,UAAU,uBAAuB;IAEjD,sCAAsC;IACtC,gBAAuB,4BAA4B,6BAAoC;IACvF,4CAA4C;IAC5C,gBAAuB,gCAAgC,iCAAwC;IAC/F,8CAA8C;IAC9C,gBAAuB,kCAAkC,mCAA0C;IACnG,qCAAqC;IACrC,gBAAuB,2BAA2B,4BAAmC;IACrF,+BAA+B;IAC/B,gBAAuB,6BAA6B,8BAAqC;IACzF,uCAAuC;IACvC,gBAAuB,6BAA6B,8BAAqC;IAEzF,+DAA+D;IAC/D,gBAAuB,wBAAwB,0BAAoI;IACnL,iEAAiE;IACjE,gBAAuB,0BAA0B,0BAAsI;IACvL,gEAAgE;IAChE,gBAAuB,yBAAyB,0BAAqI;IACrL,gEAAgE;IAChE,gBAAuB,yBAAyB,0BAAqI;IACrL,+DAA+D;IAC/D,gBAAuB,wBAAwB,0BAAoI;IACnL,mEAAmE;IACnE,gBAAuB,4BAA4B,0BAAwI;IAC3L,+DAA+D;IAC/D,gBAAuB,sBAAsB,0BAAuI;IACpL,qEAAqE;IACrE,gBAAuB,4BAA4B,0BAA6I;IAEhM,uCAAuC;IACvC,gBAAuB,gCAAgC,iCAAwC;IAE/F,2EAA2E;IAC3E,WAAkB,oBAAoB,IAAI,OAAO,CAAoD;IACrG,WAAkB,oBAAoB,CAAC,CAAC,EAAE,OAAO,EAGhD;IAGY,gBAAgB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAMrE,uCAAuC;IACvC,WAAkB,cAAc,IAAI,kBAAkB,GAAG,SAAS,CAA0C;IAC5G,WAAkB,cAAc,CAAC,CAAC,EAAE,kBAAkB,GAAG,SAAS,EAGjE;;IAQD,OAAO,CAAC,8BAA8B,CAEpC;IAEF,gBAAgB;IACA,mBAAmB,IAAI,IAAI;IAO3C,gBAAgB;IACA,oBAAoB,IAAI,IAAI;IAM5C,gBAAgB;IACA,iBAAiB,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAIzD,gBAAgB;IACA,kBAAkB,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAM1D,OAAO,CAAC,kBAAkB;IAQ1B,gBAAgB;IACA,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAIpD;;;;OAIG;IACa,QAAQ,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI;IAUlD;;OAEG;IACH,IAAoB,aAAa,IAAI,OAAO,CAM3C;IAED;;OAEG;IACa,cAAc,IAAI,IAAI;IAItC,mDAAmD;WACrC,oBAAoB,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM;IAY5D,wCAAwC;WAC1B,mBAAmB,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAI9E,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,wBAAwB;IAYhC,OAAO,CAAC,qBAAqB;CAW9B"}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
import { BeUiEvent } from "@itwin/core-bentley";
|
|
9
9
|
import { AccuDraw, CompassMode, IModelApp, ItemField, NotifyMessageDetails, OutputMessagePriority, QuantityType, RotationMode, } from "@itwin/core-frontend";
|
|
10
10
|
import { ConditionalBooleanValue } from "@itwin/appui-abstract";
|
|
11
|
-
import {
|
|
11
|
+
import { UiStateStorageStatus } from "@itwin/core-react";
|
|
12
12
|
import { UiFramework } from "../UiFramework";
|
|
13
13
|
import { SyncUiEventDispatcher, SyncUiEventId } from "../syncui/SyncUiEventDispatcher";
|
|
14
14
|
// cspell:ignore dont
|
|
@@ -69,16 +69,17 @@ export class FrameworkAccuDraw extends AccuDraw {
|
|
|
69
69
|
static get displayNotifications() { return FrameworkAccuDraw._displayNotifications; }
|
|
70
70
|
static set displayNotifications(v) {
|
|
71
71
|
FrameworkAccuDraw._displayNotifications = v;
|
|
72
|
-
|
|
72
|
+
UiFramework.getUiStateStorage().saveSetting(this._settingsNamespace, this._notificationsKey, v); // eslint-disable-line @typescript-eslint/no-floating-promises
|
|
73
73
|
}
|
|
74
|
+
/* @internal */
|
|
74
75
|
async loadUserSettings(storage) {
|
|
75
76
|
const result = await storage.getSetting(FrameworkAccuDraw._settingsNamespace, FrameworkAccuDraw._notificationsKey);
|
|
76
|
-
if (result.status ===
|
|
77
|
+
if (result.status === UiStateStorageStatus.Success)
|
|
77
78
|
FrameworkAccuDraw._displayNotifications = result.setting;
|
|
78
79
|
}
|
|
79
80
|
/** AccuDraw User Interface settings */
|
|
80
|
-
static get
|
|
81
|
-
static set
|
|
81
|
+
static get uiStateStorage() { return FrameworkAccuDraw._uiSettings; }
|
|
82
|
+
static set uiStateStorage(v) {
|
|
82
83
|
FrameworkAccuDraw._uiSettings = v;
|
|
83
84
|
FrameworkAccuDraw.onAccuDrawUiSettingsChangedEvent.emit({});
|
|
84
85
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FrameworkAccuDraw.js","sourceRoot":"","sources":["../../../../src/appui-react/accudraw/FrameworkAccuDraw.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module AccuDraw\r\n */\r\n\r\nimport { BeUiEvent } from \"@itwin/core-bentley\";\r\nimport {\r\n AccuDraw, BeButtonEvent, CompassMode, IModelApp, ItemField,\r\n NotifyMessageDetails, OutputMessagePriority, QuantityType, RotationMode,\r\n} from \"@itwin/core-frontend\";\r\nimport { ConditionalBooleanValue } from \"@itwin/appui-abstract\";\r\nimport { UiSettings, UiSettingsStatus } from \"@itwin/core-react\";\r\nimport { UiFramework, UserSettingsProvider } from \"../UiFramework\";\r\nimport { SyncUiEventDispatcher, SyncUiEventId } from \"../syncui/SyncUiEventDispatcher\";\r\nimport { AccuDrawUiSettings } from \"./AccuDrawUiSettings\";\r\n\r\n// cspell:ignore dont\r\n\r\nconst compassModeToKeyMap = new Map<CompassMode, string>([\r\n [CompassMode.Polar, \"polar\"],\r\n [CompassMode.Rectangular, \"rectangular\"],\r\n]);\r\n\r\nconst rotationModeToKeyMap = new Map<RotationMode, string>([\r\n [RotationMode.Top, \"top\"],\r\n [RotationMode.Front, \"front\"],\r\n [RotationMode.Side, \"side\"],\r\n [RotationMode.View, \"view\"],\r\n [RotationMode.ACS, \"ACS\"],\r\n [RotationMode.Context, \"context\"],\r\n]);\r\n\r\n/** Arguments for [[AccuDrawSetFieldFocusEvent]]\r\n * @beta */\r\nexport interface AccuDrawSetFieldFocusEventArgs {\r\n field: ItemField;\r\n}\r\n\r\n/** AccuDraw Set Field Focus event\r\n * @beta */\r\nexport class AccuDrawSetFieldFocusEvent extends BeUiEvent<AccuDrawSetFieldFocusEventArgs> { }\r\n\r\n/** Arguments for [[AccuDrawSetFieldValueToUiEvent]]\r\n * @beta */\r\nexport interface AccuDrawSetFieldValueToUiEventArgs {\r\n field: ItemField;\r\n value: number;\r\n formattedValue: string;\r\n}\r\n\r\n/** AccuDraw Set Field Value to Ui event\r\n * @beta */\r\nexport class AccuDrawSetFieldValueToUiEvent extends BeUiEvent<AccuDrawSetFieldValueToUiEventArgs> { }\r\n\r\n/** Arguments for [[AccuDrawSetFieldValueFromUiEvent]]\r\n * @beta */\r\nexport interface AccuDrawSetFieldValueFromUiEventArgs {\r\n field: ItemField;\r\n stringValue: string;\r\n}\r\n\r\n/** AccuDraw Set Field Value from Ui event\r\n * @beta */\r\nexport class AccuDrawSetFieldValueFromUiEvent extends BeUiEvent<AccuDrawSetFieldValueFromUiEventArgs> { }\r\n\r\n/** Arguments for [[AccuDrawSetFieldLockEvent]]\r\n * @beta */\r\nexport interface AccuDrawSetFieldLockEventArgs {\r\n field: ItemField;\r\n lock: boolean;\r\n}\r\n\r\n/** AccuDraw Set Field Lock event\r\n * @beta */\r\nexport class AccuDrawSetFieldLockEvent extends BeUiEvent<AccuDrawSetFieldLockEventArgs> { }\r\n\r\n/** Arguments for [[AccuDrawSetCompassModeEvent]]\r\n * @beta */\r\nexport interface AccuDrawSetCompassModeEventArgs {\r\n mode: CompassMode;\r\n}\r\n\r\n/** AccuDraw Set Compass Mode event\r\n * @beta */\r\nexport class AccuDrawSetCompassModeEvent extends BeUiEvent<AccuDrawSetCompassModeEventArgs> { }\r\n\r\n/** AccuDraw Grab Input Focus event\r\n * @beta */\r\nexport class AccuDrawGrabInputFocusEvent extends BeUiEvent<{}> { }\r\n\r\n/** AccuDraw Ui Settings Changed event\r\n * @beta */\r\nexport class AccuDrawUiSettingsChangedEvent extends BeUiEvent<{}> { }\r\n\r\n/** Implementation of AccuDraw that sends events for UI and status changes\r\n * @beta\r\n */\r\nexport class FrameworkAccuDraw extends AccuDraw implements UserSettingsProvider {\r\n private static _displayNotifications = false;\r\n private static _uiSettings: AccuDrawUiSettings | undefined;\r\n private static _settingsNamespace = \"AppUiSettings\";\r\n private static _notificationsKey = \"AccuDrawNotifications\";\r\n public readonly providerId = \"FrameworkAccuDraw\";\r\n\r\n /** AccuDraw Set Field Focus event. */\r\n public static readonly onAccuDrawSetFieldFocusEvent = new AccuDrawSetFieldFocusEvent();\r\n /** AccuDraw Set Field Value to Ui event. */\r\n public static readonly onAccuDrawSetFieldValueToUiEvent = new AccuDrawSetFieldValueToUiEvent();\r\n /** AccuDraw Set Field Value from Ui event. */\r\n public static readonly onAccuDrawSetFieldValueFromUiEvent = new AccuDrawSetFieldValueFromUiEvent();\r\n /** AccuDraw Set Field Lock event. */\r\n public static readonly onAccuDrawSetFieldLockEvent = new AccuDrawSetFieldLockEvent();\r\n /** AccuDraw Set Mode event. */\r\n public static readonly onAccuDrawSetCompassModeEvent = new AccuDrawSetCompassModeEvent();\r\n /** AccuDraw Grab Input Focus event. */\r\n public static readonly onAccuDrawGrabInputFocusEvent = new AccuDrawGrabInputFocusEvent();\r\n\r\n /** Determines if AccuDraw.rotationMode === RotationMode.Top */\r\n public static readonly isTopRotationConditional = new ConditionalBooleanValue(() => IModelApp.accuDraw.rotationMode === RotationMode.Top, [SyncUiEventId.AccuDrawRotationChanged]);\r\n /** Determines if AccuDraw.rotationMode === RotationMode.Front */\r\n public static readonly isFrontRotationConditional = new ConditionalBooleanValue(() => IModelApp.accuDraw.rotationMode === RotationMode.Front, [SyncUiEventId.AccuDrawRotationChanged]);\r\n /** Determines if AccuDraw.rotationMode === RotationMode.Side */\r\n public static readonly isSideRotationConditional = new ConditionalBooleanValue(() => IModelApp.accuDraw.rotationMode === RotationMode.Side, [SyncUiEventId.AccuDrawRotationChanged]);\r\n /** Determines if AccuDraw.rotationMode === RotationMode.View */\r\n public static readonly isViewRotationConditional = new ConditionalBooleanValue(() => IModelApp.accuDraw.rotationMode === RotationMode.View, [SyncUiEventId.AccuDrawRotationChanged]);\r\n /** Determines if AccuDraw.rotationMode === RotationMode.ACS */\r\n public static readonly isACSRotationConditional = new ConditionalBooleanValue(() => IModelApp.accuDraw.rotationMode === RotationMode.ACS, [SyncUiEventId.AccuDrawRotationChanged]);\r\n /** Determines if AccuDraw.rotationMode === RotationMode.Context */\r\n public static readonly isContextRotationConditional = new ConditionalBooleanValue(() => IModelApp.accuDraw.rotationMode === RotationMode.Context, [SyncUiEventId.AccuDrawRotationChanged]);\r\n /** Determines if AccuDraw.compassMode === CompassMode.Polar */\r\n public static readonly isPolarModeConditional = new ConditionalBooleanValue(() => IModelApp.accuDraw.compassMode === CompassMode.Polar, [SyncUiEventId.AccuDrawCompassModeChanged]);\r\n /** Determines if AccuDraw.compassMode === CompassMode.Rectangular */\r\n public static readonly isRectangularModeConditional = new ConditionalBooleanValue(() => IModelApp.accuDraw.compassMode === CompassMode.Rectangular, [SyncUiEventId.AccuDrawCompassModeChanged]);\r\n\r\n /** AccuDraw Grab Input Focus event. */\r\n public static readonly onAccuDrawUiSettingsChangedEvent = new AccuDrawUiSettingsChangedEvent();\r\n\r\n /** Determines if notifications should be displayed for AccuDraw changes */\r\n public static get displayNotifications(): boolean { return FrameworkAccuDraw._displayNotifications; }\r\n public static set displayNotifications(v: boolean) {\r\n FrameworkAccuDraw._displayNotifications = v;\r\n void UiFramework.getUiSettingsStorage().saveSetting(this._settingsNamespace, this._notificationsKey, v);\r\n }\r\n\r\n public async loadUserSettings(storage: UiSettings): Promise<void> {\r\n const result = await storage.getSetting(FrameworkAccuDraw._settingsNamespace, FrameworkAccuDraw._notificationsKey);\r\n if (result.status === UiSettingsStatus.Success)\r\n FrameworkAccuDraw._displayNotifications = result.setting;\r\n }\r\n\r\n /** AccuDraw User Interface settings */\r\n public static get uiSettings(): AccuDrawUiSettings | undefined { return FrameworkAccuDraw._uiSettings; }\r\n public static set uiSettings(v: AccuDrawUiSettings | undefined) {\r\n FrameworkAccuDraw._uiSettings = v;\r\n FrameworkAccuDraw.onAccuDrawUiSettingsChangedEvent.emit({});\r\n }\r\n\r\n constructor() {\r\n super();\r\n FrameworkAccuDraw.onAccuDrawSetFieldValueFromUiEvent.addListener(this.handleSetFieldValueFromUiEvent);\r\n UiFramework.registerUserSettingsProvider(this);\r\n }\r\n\r\n private handleSetFieldValueFromUiEvent = async (args: AccuDrawSetFieldValueFromUiEventArgs) => {\r\n return this.processFieldInput(args.field, args.stringValue, false);\r\n };\r\n\r\n /** @internal */\r\n public override onCompassModeChange(): void {\r\n FrameworkAccuDraw.onAccuDrawSetCompassModeEvent.emit({ mode: this.compassMode });\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.AccuDrawCompassModeChanged);\r\n\r\n this.outputCompassModeMessage();\r\n }\r\n\r\n /** @internal */\r\n public override onRotationModeChange(): void {\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.AccuDrawRotationChanged);\r\n\r\n this.outputRotationMessage();\r\n }\r\n\r\n /** @internal */\r\n public override onFieldLockChange(index: ItemField): void {\r\n FrameworkAccuDraw.onAccuDrawSetFieldLockEvent.emit({ field: index, lock: this.getFieldLock(index) });\r\n }\r\n\r\n /** @internal */\r\n public override onFieldValueChange(index: ItemField): void {\r\n const value = this.getValueByIndex(index);\r\n const formattedValue = FrameworkAccuDraw.getFieldDisplayValue(index);\r\n FrameworkAccuDraw.onAccuDrawSetFieldValueToUiEvent.emit({ field: index, value, formattedValue });\r\n }\r\n\r\n private fieldValuesChanged(): void {\r\n this.onFieldValueChange(ItemField.X_Item);\r\n this.onFieldValueChange(ItemField.Y_Item);\r\n this.onFieldValueChange(ItemField.Z_Item);\r\n this.onFieldValueChange(ItemField.ANGLE_Item);\r\n this.onFieldValueChange(ItemField.DIST_Item);\r\n }\r\n\r\n /** @internal */\r\n public override setFocusItem(index: ItemField): void {\r\n FrameworkAccuDraw.onAccuDrawSetFieldFocusEvent.emit({ field: index });\r\n }\r\n\r\n /** Implemented by sub-classes to update ui fields to show current deltas or coordinates when inactive.\r\n * Should also choose active x or y input field in rectangular mode based on cursor position when\r\n * axis isn't locked to support \"smart lock\".\r\n * @internal\r\n */\r\n public override onMotion(_ev: BeButtonEvent): void {\r\n if (!this.isEnabled || this.isDeactivated || UiFramework.isContextMenuOpen)\r\n return;\r\n\r\n this.fieldValuesChanged();\r\n\r\n if (!this.dontMoveFocus)\r\n this.setFocusItem(this.newFocus);\r\n }\r\n\r\n /** Determine if the AccuDraw UI has focus\r\n * @internal\r\n */\r\n public override get hasInputFocus(): boolean {\r\n let hasFocus = false;\r\n const el = document.querySelector(\"div.uifw-accudraw-field-container\");\r\n if (el)\r\n hasFocus = el.contains(document.activeElement);\r\n return hasFocus;\r\n }\r\n\r\n /** Implement this method to set focus to the AccuDraw UI.\r\n * @internal\r\n */\r\n public override grabInputFocus(): void {\r\n FrameworkAccuDraw.onAccuDrawGrabInputFocusEvent.emit({});\r\n }\r\n\r\n /** Gets the display value for an AccuDraw field */\r\n public static getFieldDisplayValue(index: ItemField): string {\r\n const value = IModelApp.accuDraw.getValueByIndex(index);\r\n let formattedValue = value.toString();\r\n\r\n const formatterSpec = IModelApp.quantityFormatter.findFormatterSpecByQuantityType(ItemField.ANGLE_Item === index ? QuantityType.Angle : QuantityType.Length);\r\n // istanbul ignore else\r\n if (formatterSpec)\r\n formattedValue = IModelApp.quantityFormatter.formatQuantity(value, formatterSpec);\r\n\r\n return formattedValue;\r\n }\r\n\r\n /** AccuDraw Set Field Value from Ui. */\r\n public static setFieldValueFromUi(field: ItemField, stringValue: string): void {\r\n FrameworkAccuDraw.onAccuDrawSetFieldValueFromUiEvent.emit({ field, stringValue });\r\n }\r\n\r\n private outputInfoMessage(message: string): void {\r\n // istanbul ignore else\r\n if (FrameworkAccuDraw.displayNotifications)\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Info, message));\r\n }\r\n\r\n private outputCompassModeMessage(): void {\r\n if (FrameworkAccuDraw.displayNotifications) {\r\n let modeKey = compassModeToKeyMap.get(this.compassMode);\r\n // istanbul ignore if\r\n if (modeKey === undefined)\r\n modeKey = \"polar\";\r\n const modeString = UiFramework.translate(`accuDraw.compassMode.${modeKey}`);\r\n const modeMessage = UiFramework.localization.getLocalizedStringWithNamespace(UiFramework.localizationNamespace, \"accuDraw.compassModeSet\", { modeString });\r\n this.outputInfoMessage(modeMessage);\r\n }\r\n }\r\n\r\n private outputRotationMessage(): void {\r\n if (FrameworkAccuDraw.displayNotifications) {\r\n let rotationKey = rotationModeToKeyMap.get(this.rotationMode);\r\n // istanbul ignore if\r\n if (rotationKey === undefined)\r\n rotationKey = \"top\";\r\n const rotationString = UiFramework.translate(`accuDraw.rotation.${rotationKey}`);\r\n const rotationMessage = UiFramework.localization.getLocalizedStringWithNamespace(UiFramework.localizationNamespace, \"accuDraw.rotationSet\", { rotationString });\r\n this.outputInfoMessage(rotationMessage);\r\n }\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"FrameworkAccuDraw.js","sourceRoot":"","sources":["../../../../src/appui-react/accudraw/FrameworkAccuDraw.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EACL,QAAQ,EAAiB,WAAW,EAAE,SAAS,EAAE,SAAS,EAC1D,oBAAoB,EAAE,qBAAqB,EAAE,YAAY,EAAE,YAAY,GACxE,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAkB,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,WAAW,EAAwB,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAGvF,qBAAqB;AAErB,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAsB;IACvD,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC;IAC5B,CAAC,WAAW,CAAC,WAAW,EAAE,aAAa,CAAC;CACzC,CAAC,CAAC;AAEH,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAuB;IACzD,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC;IACzB,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC;IAC7B,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC;IAC3B,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC;IAC3B,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC;IACzB,CAAC,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC;CAClC,CAAC,CAAC;AAQH;WACW;AACX,MAAM,OAAO,0BAA2B,SAAQ,SAAyC;CAAI;AAU7F;WACW;AACX,MAAM,OAAO,8BAA+B,SAAQ,SAA6C;CAAI;AASrG;WACW;AACX,MAAM,OAAO,gCAAiC,SAAQ,SAA+C;CAAI;AASzG;WACW;AACX,MAAM,OAAO,yBAA0B,SAAQ,SAAwC;CAAI;AAQ3F;WACW;AACX,MAAM,OAAO,2BAA4B,SAAQ,SAA0C;CAAI;AAE/F;WACW;AACX,MAAM,OAAO,2BAA4B,SAAQ,SAAa;CAAI;AAElE;WACW;AACX,MAAM,OAAO,8BAA+B,SAAQ,SAAa;CAAI;AAErE;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,QAAQ;IA6D7C;QACE,KAAK,EAAE,CAAC;QAzDM,eAAU,GAAG,mBAAmB,CAAC;QA8DzC,mCAA8B,GAAG,KAAK,EAAE,IAA0C,EAAE,EAAE;YAC5F,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QACrE,CAAC,CAAC;QANA,iBAAiB,CAAC,kCAAkC,CAAC,WAAW,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QACtG,WAAW,CAAC,4BAA4B,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC;IAzBD,2EAA2E;IACpE,MAAM,KAAK,oBAAoB,KAAc,OAAO,iBAAiB,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAC9F,MAAM,KAAK,oBAAoB,CAAC,CAAU;QAC/C,iBAAiB,CAAC,qBAAqB,GAAG,CAAC,CAAC;QAC5C,WAAW,CAAC,iBAAiB,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC,8DAA8D;IACjK,CAAC;IAED,eAAe;IACR,KAAK,CAAC,gBAAgB,CAAC,OAAuB;QACnD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;QACnH,IAAI,MAAM,CAAC,MAAM,KAAK,oBAAoB,CAAC,OAAO;YAChD,iBAAiB,CAAC,qBAAqB,GAAG,MAAM,CAAC,OAAO,CAAC;IAC7D,CAAC;IAED,uCAAuC;IAChC,MAAM,KAAK,cAAc,KAAqC,OAAO,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC;IACrG,MAAM,KAAK,cAAc,CAAC,CAAiC;QAChE,iBAAiB,CAAC,WAAW,GAAG,CAAC,CAAC;QAClC,iBAAiB,CAAC,gCAAgC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9D,CAAC;IAYD,gBAAgB;IACA,mBAAmB;QACjC,iBAAiB,CAAC,6BAA6B,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACjF,qBAAqB,CAAC,mBAAmB,CAAC,aAAa,CAAC,0BAA0B,CAAC,CAAC;QAEpF,IAAI,CAAC,wBAAwB,EAAE,CAAC;IAClC,CAAC;IAED,gBAAgB;IACA,oBAAoB;QAClC,qBAAqB,CAAC,mBAAmB,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC;QAEjF,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAED,gBAAgB;IACA,iBAAiB,CAAC,KAAgB;QAChD,iBAAiB,CAAC,2BAA2B,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACvG,CAAC;IAED,gBAAgB;IACA,kBAAkB,CAAC,KAAgB;QACjD,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,cAAc,GAAG,iBAAiB,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACrE,iBAAiB,CAAC,gCAAgC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;IACnG,CAAC;IAEO,kBAAkB;QACxB,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC;IAED,gBAAgB;IACA,YAAY,CAAC,KAAgB;QAC3C,iBAAiB,CAAC,4BAA4B,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACxE,CAAC;IAED;;;;OAIG;IACa,QAAQ,CAAC,GAAkB;QACzC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,aAAa,IAAI,WAAW,CAAC,iBAAiB;YACxE,OAAO;QAET,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE1B,IAAI,CAAC,IAAI,CAAC,aAAa;YACrB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,IAAoB,aAAa;QAC/B,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,mCAAmC,CAAC,CAAC;QACvE,IAAI,EAAE;YACJ,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACjD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACa,cAAc;QAC5B,iBAAiB,CAAC,6BAA6B,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,mDAAmD;IAC5C,MAAM,CAAC,oBAAoB,CAAC,KAAgB;QACjD,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACxD,IAAI,cAAc,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QAEtC,MAAM,aAAa,GAAG,SAAS,CAAC,iBAAiB,CAAC,+BAA+B,CAAC,SAAS,CAAC,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC7J,uBAAuB;QACvB,IAAI,aAAa;YACf,cAAc,GAAG,SAAS,CAAC,iBAAiB,CAAC,cAAc,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QAEpF,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,wCAAwC;IACjC,MAAM,CAAC,mBAAmB,CAAC,KAAgB,EAAE,WAAmB;QACrE,iBAAiB,CAAC,kCAAkC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;IACpF,CAAC;IAEO,iBAAiB,CAAC,OAAe;QACvC,uBAAuB;QACvB,IAAI,iBAAiB,CAAC,oBAAoB;YACxC,SAAS,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,oBAAoB,CAAC,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IACzG,CAAC;IAEO,wBAAwB;QAC9B,IAAI,iBAAiB,CAAC,oBAAoB,EAAE;YAC1C,IAAI,OAAO,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACxD,qBAAqB;YACrB,IAAI,OAAO,KAAK,SAAS;gBACvB,OAAO,GAAG,OAAO,CAAC;YACpB,MAAM,UAAU,GAAG,WAAW,CAAC,SAAS,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAC;YAC5E,MAAM,WAAW,GAAG,WAAW,CAAC,YAAY,CAAC,+BAA+B,CAAC,WAAW,CAAC,qBAAqB,EAAE,yBAAyB,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;YAC3J,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;SACrC;IACH,CAAC;IAEO,qBAAqB;QAC3B,IAAI,iBAAiB,CAAC,oBAAoB,EAAE;YAC1C,IAAI,WAAW,GAAG,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC9D,qBAAqB;YACrB,IAAI,WAAW,KAAK,SAAS;gBAC3B,WAAW,GAAG,KAAK,CAAC;YACtB,MAAM,cAAc,GAAG,WAAW,CAAC,SAAS,CAAC,qBAAqB,WAAW,EAAE,CAAC,CAAC;YACjF,MAAM,eAAe,GAAG,WAAW,CAAC,YAAY,CAAC,+BAA+B,CAAC,WAAW,CAAC,qBAAqB,EAAE,sBAAsB,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;YAChK,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;SACzC;IACH,CAAC;;AA7Lc,uCAAqB,GAAG,KAAK,CAAC;AAE9B,oCAAkB,GAAG,eAAe,CAAC;AACrC,mCAAiB,GAAG,uBAAuB,CAAC;AAG3D,sCAAsC;AACf,8CAA4B,GAAG,IAAI,0BAA0B,EAAE,CAAC;AACvF,4CAA4C;AACrB,kDAAgC,GAAG,IAAI,8BAA8B,EAAE,CAAC;AAC/F,8CAA8C;AACvB,oDAAkC,GAAG,IAAI,gCAAgC,EAAE,CAAC;AACnG,qCAAqC;AACd,6CAA2B,GAAG,IAAI,yBAAyB,EAAE,CAAC;AACrF,+BAA+B;AACR,+CAA6B,GAAG,IAAI,2BAA2B,EAAE,CAAC;AACzF,uCAAuC;AAChB,+CAA6B,GAAG,IAAI,2BAA2B,EAAE,CAAC;AAEzF,+DAA+D;AACxC,0CAAwB,GAAG,IAAI,uBAAuB,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,KAAK,YAAY,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC,CAAC;AACnL,iEAAiE;AAC1C,4CAA0B,GAAG,IAAI,uBAAuB,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,KAAK,YAAY,CAAC,KAAK,EAAE,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC,CAAC;AACvL,gEAAgE;AACzC,2CAAyB,GAAG,IAAI,uBAAuB,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,KAAK,YAAY,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC,CAAC;AACrL,gEAAgE;AACzC,2CAAyB,GAAG,IAAI,uBAAuB,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,KAAK,YAAY,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC,CAAC;AACrL,+DAA+D;AACxC,0CAAwB,GAAG,IAAI,uBAAuB,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,KAAK,YAAY,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC,CAAC;AACnL,mEAAmE;AAC5C,8CAA4B,GAAG,IAAI,uBAAuB,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,KAAK,YAAY,CAAC,OAAO,EAAE,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC,CAAC;AAC3L,+DAA+D;AACxC,wCAAsB,GAAG,IAAI,uBAAuB,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,KAAK,WAAW,CAAC,KAAK,EAAE,CAAC,aAAa,CAAC,0BAA0B,CAAC,CAAC,CAAC;AACpL,qEAAqE;AAC9C,8CAA4B,GAAG,IAAI,uBAAuB,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,KAAK,WAAW,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,0BAA0B,CAAC,CAAC,CAAC;AAEhM,uCAAuC;AAChB,kDAAgC,GAAG,IAAI,8BAA8B,EAAE,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module AccuDraw\r\n */\r\n\r\nimport { BeUiEvent } from \"@itwin/core-bentley\";\r\nimport {\r\n AccuDraw, BeButtonEvent, CompassMode, IModelApp, ItemField,\r\n NotifyMessageDetails, OutputMessagePriority, QuantityType, RotationMode,\r\n} from \"@itwin/core-frontend\";\r\nimport { ConditionalBooleanValue } from \"@itwin/appui-abstract\";\r\nimport { UiStateStorage, UiStateStorageStatus } from \"@itwin/core-react\";\r\nimport { UiFramework, UserSettingsProvider } from \"../UiFramework\";\r\nimport { SyncUiEventDispatcher, SyncUiEventId } from \"../syncui/SyncUiEventDispatcher\";\r\nimport { AccuDrawUiSettings } from \"./AccuDrawUiSettings\";\r\n\r\n// cspell:ignore dont\r\n\r\nconst compassModeToKeyMap = new Map<CompassMode, string>([\r\n [CompassMode.Polar, \"polar\"],\r\n [CompassMode.Rectangular, \"rectangular\"],\r\n]);\r\n\r\nconst rotationModeToKeyMap = new Map<RotationMode, string>([\r\n [RotationMode.Top, \"top\"],\r\n [RotationMode.Front, \"front\"],\r\n [RotationMode.Side, \"side\"],\r\n [RotationMode.View, \"view\"],\r\n [RotationMode.ACS, \"ACS\"],\r\n [RotationMode.Context, \"context\"],\r\n]);\r\n\r\n/** Arguments for [[AccuDrawSetFieldFocusEvent]]\r\n * @beta */\r\nexport interface AccuDrawSetFieldFocusEventArgs {\r\n field: ItemField;\r\n}\r\n\r\n/** AccuDraw Set Field Focus event\r\n * @beta */\r\nexport class AccuDrawSetFieldFocusEvent extends BeUiEvent<AccuDrawSetFieldFocusEventArgs> { }\r\n\r\n/** Arguments for [[AccuDrawSetFieldValueToUiEvent]]\r\n * @beta */\r\nexport interface AccuDrawSetFieldValueToUiEventArgs {\r\n field: ItemField;\r\n value: number;\r\n formattedValue: string;\r\n}\r\n\r\n/** AccuDraw Set Field Value to Ui event\r\n * @beta */\r\nexport class AccuDrawSetFieldValueToUiEvent extends BeUiEvent<AccuDrawSetFieldValueToUiEventArgs> { }\r\n\r\n/** Arguments for [[AccuDrawSetFieldValueFromUiEvent]]\r\n * @beta */\r\nexport interface AccuDrawSetFieldValueFromUiEventArgs {\r\n field: ItemField;\r\n stringValue: string;\r\n}\r\n\r\n/** AccuDraw Set Field Value from Ui event\r\n * @beta */\r\nexport class AccuDrawSetFieldValueFromUiEvent extends BeUiEvent<AccuDrawSetFieldValueFromUiEventArgs> { }\r\n\r\n/** Arguments for [[AccuDrawSetFieldLockEvent]]\r\n * @beta */\r\nexport interface AccuDrawSetFieldLockEventArgs {\r\n field: ItemField;\r\n lock: boolean;\r\n}\r\n\r\n/** AccuDraw Set Field Lock event\r\n * @beta */\r\nexport class AccuDrawSetFieldLockEvent extends BeUiEvent<AccuDrawSetFieldLockEventArgs> { }\r\n\r\n/** Arguments for [[AccuDrawSetCompassModeEvent]]\r\n * @beta */\r\nexport interface AccuDrawSetCompassModeEventArgs {\r\n mode: CompassMode;\r\n}\r\n\r\n/** AccuDraw Set Compass Mode event\r\n * @beta */\r\nexport class AccuDrawSetCompassModeEvent extends BeUiEvent<AccuDrawSetCompassModeEventArgs> { }\r\n\r\n/** AccuDraw Grab Input Focus event\r\n * @beta */\r\nexport class AccuDrawGrabInputFocusEvent extends BeUiEvent<{}> { }\r\n\r\n/** AccuDraw Ui Settings Changed event\r\n * @beta */\r\nexport class AccuDrawUiSettingsChangedEvent extends BeUiEvent<{}> { }\r\n\r\n/** Implementation of AccuDraw that sends events for UI and status changes\r\n * @beta\r\n */\r\nexport class FrameworkAccuDraw extends AccuDraw implements UserSettingsProvider {\r\n private static _displayNotifications = false;\r\n private static _uiSettings: AccuDrawUiSettings | undefined;\r\n private static _settingsNamespace = \"AppUiSettings\";\r\n private static _notificationsKey = \"AccuDrawNotifications\";\r\n public readonly providerId = \"FrameworkAccuDraw\";\r\n\r\n /** AccuDraw Set Field Focus event. */\r\n public static readonly onAccuDrawSetFieldFocusEvent = new AccuDrawSetFieldFocusEvent();\r\n /** AccuDraw Set Field Value to Ui event. */\r\n public static readonly onAccuDrawSetFieldValueToUiEvent = new AccuDrawSetFieldValueToUiEvent();\r\n /** AccuDraw Set Field Value from Ui event. */\r\n public static readonly onAccuDrawSetFieldValueFromUiEvent = new AccuDrawSetFieldValueFromUiEvent();\r\n /** AccuDraw Set Field Lock event. */\r\n public static readonly onAccuDrawSetFieldLockEvent = new AccuDrawSetFieldLockEvent();\r\n /** AccuDraw Set Mode event. */\r\n public static readonly onAccuDrawSetCompassModeEvent = new AccuDrawSetCompassModeEvent();\r\n /** AccuDraw Grab Input Focus event. */\r\n public static readonly onAccuDrawGrabInputFocusEvent = new AccuDrawGrabInputFocusEvent();\r\n\r\n /** Determines if AccuDraw.rotationMode === RotationMode.Top */\r\n public static readonly isTopRotationConditional = new ConditionalBooleanValue(() => IModelApp.accuDraw.rotationMode === RotationMode.Top, [SyncUiEventId.AccuDrawRotationChanged]);\r\n /** Determines if AccuDraw.rotationMode === RotationMode.Front */\r\n public static readonly isFrontRotationConditional = new ConditionalBooleanValue(() => IModelApp.accuDraw.rotationMode === RotationMode.Front, [SyncUiEventId.AccuDrawRotationChanged]);\r\n /** Determines if AccuDraw.rotationMode === RotationMode.Side */\r\n public static readonly isSideRotationConditional = new ConditionalBooleanValue(() => IModelApp.accuDraw.rotationMode === RotationMode.Side, [SyncUiEventId.AccuDrawRotationChanged]);\r\n /** Determines if AccuDraw.rotationMode === RotationMode.View */\r\n public static readonly isViewRotationConditional = new ConditionalBooleanValue(() => IModelApp.accuDraw.rotationMode === RotationMode.View, [SyncUiEventId.AccuDrawRotationChanged]);\r\n /** Determines if AccuDraw.rotationMode === RotationMode.ACS */\r\n public static readonly isACSRotationConditional = new ConditionalBooleanValue(() => IModelApp.accuDraw.rotationMode === RotationMode.ACS, [SyncUiEventId.AccuDrawRotationChanged]);\r\n /** Determines if AccuDraw.rotationMode === RotationMode.Context */\r\n public static readonly isContextRotationConditional = new ConditionalBooleanValue(() => IModelApp.accuDraw.rotationMode === RotationMode.Context, [SyncUiEventId.AccuDrawRotationChanged]);\r\n /** Determines if AccuDraw.compassMode === CompassMode.Polar */\r\n public static readonly isPolarModeConditional = new ConditionalBooleanValue(() => IModelApp.accuDraw.compassMode === CompassMode.Polar, [SyncUiEventId.AccuDrawCompassModeChanged]);\r\n /** Determines if AccuDraw.compassMode === CompassMode.Rectangular */\r\n public static readonly isRectangularModeConditional = new ConditionalBooleanValue(() => IModelApp.accuDraw.compassMode === CompassMode.Rectangular, [SyncUiEventId.AccuDrawCompassModeChanged]);\r\n\r\n /** AccuDraw Grab Input Focus event. */\r\n public static readonly onAccuDrawUiSettingsChangedEvent = new AccuDrawUiSettingsChangedEvent();\r\n\r\n /** Determines if notifications should be displayed for AccuDraw changes */\r\n public static get displayNotifications(): boolean { return FrameworkAccuDraw._displayNotifications; }\r\n public static set displayNotifications(v: boolean) {\r\n FrameworkAccuDraw._displayNotifications = v;\r\n UiFramework.getUiStateStorage().saveSetting(this._settingsNamespace, this._notificationsKey, v); // eslint-disable-line @typescript-eslint/no-floating-promises\r\n }\r\n\r\n /* @internal */\r\n public async loadUserSettings(storage: UiStateStorage): Promise<void> {\r\n const result = await storage.getSetting(FrameworkAccuDraw._settingsNamespace, FrameworkAccuDraw._notificationsKey);\r\n if (result.status === UiStateStorageStatus.Success)\r\n FrameworkAccuDraw._displayNotifications = result.setting;\r\n }\r\n\r\n /** AccuDraw User Interface settings */\r\n public static get uiStateStorage(): AccuDrawUiSettings | undefined { return FrameworkAccuDraw._uiSettings; }\r\n public static set uiStateStorage(v: AccuDrawUiSettings | undefined) {\r\n FrameworkAccuDraw._uiSettings = v;\r\n FrameworkAccuDraw.onAccuDrawUiSettingsChangedEvent.emit({});\r\n }\r\n\r\n constructor() {\r\n super();\r\n FrameworkAccuDraw.onAccuDrawSetFieldValueFromUiEvent.addListener(this.handleSetFieldValueFromUiEvent);\r\n UiFramework.registerUserSettingsProvider(this);\r\n }\r\n\r\n private handleSetFieldValueFromUiEvent = async (args: AccuDrawSetFieldValueFromUiEventArgs) => {\r\n return this.processFieldInput(args.field, args.stringValue, false);\r\n };\r\n\r\n /** @internal */\r\n public override onCompassModeChange(): void {\r\n FrameworkAccuDraw.onAccuDrawSetCompassModeEvent.emit({ mode: this.compassMode });\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.AccuDrawCompassModeChanged);\r\n\r\n this.outputCompassModeMessage();\r\n }\r\n\r\n /** @internal */\r\n public override onRotationModeChange(): void {\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.AccuDrawRotationChanged);\r\n\r\n this.outputRotationMessage();\r\n }\r\n\r\n /** @internal */\r\n public override onFieldLockChange(index: ItemField): void {\r\n FrameworkAccuDraw.onAccuDrawSetFieldLockEvent.emit({ field: index, lock: this.getFieldLock(index) });\r\n }\r\n\r\n /** @internal */\r\n public override onFieldValueChange(index: ItemField): void {\r\n const value = this.getValueByIndex(index);\r\n const formattedValue = FrameworkAccuDraw.getFieldDisplayValue(index);\r\n FrameworkAccuDraw.onAccuDrawSetFieldValueToUiEvent.emit({ field: index, value, formattedValue });\r\n }\r\n\r\n private fieldValuesChanged(): void {\r\n this.onFieldValueChange(ItemField.X_Item);\r\n this.onFieldValueChange(ItemField.Y_Item);\r\n this.onFieldValueChange(ItemField.Z_Item);\r\n this.onFieldValueChange(ItemField.ANGLE_Item);\r\n this.onFieldValueChange(ItemField.DIST_Item);\r\n }\r\n\r\n /** @internal */\r\n public override setFocusItem(index: ItemField): void {\r\n FrameworkAccuDraw.onAccuDrawSetFieldFocusEvent.emit({ field: index });\r\n }\r\n\r\n /** Implemented by sub-classes to update ui fields to show current deltas or coordinates when inactive.\r\n * Should also choose active x or y input field in rectangular mode based on cursor position when\r\n * axis isn't locked to support \"smart lock\".\r\n * @internal\r\n */\r\n public override onMotion(_ev: BeButtonEvent): void {\r\n if (!this.isEnabled || this.isDeactivated || UiFramework.isContextMenuOpen)\r\n return;\r\n\r\n this.fieldValuesChanged();\r\n\r\n if (!this.dontMoveFocus)\r\n this.setFocusItem(this.newFocus);\r\n }\r\n\r\n /** Determine if the AccuDraw UI has focus\r\n * @internal\r\n */\r\n public override get hasInputFocus(): boolean {\r\n let hasFocus = false;\r\n const el = document.querySelector(\"div.uifw-accudraw-field-container\");\r\n if (el)\r\n hasFocus = el.contains(document.activeElement);\r\n return hasFocus;\r\n }\r\n\r\n /** Implement this method to set focus to the AccuDraw UI.\r\n * @internal\r\n */\r\n public override grabInputFocus(): void {\r\n FrameworkAccuDraw.onAccuDrawGrabInputFocusEvent.emit({});\r\n }\r\n\r\n /** Gets the display value for an AccuDraw field */\r\n public static getFieldDisplayValue(index: ItemField): string {\r\n const value = IModelApp.accuDraw.getValueByIndex(index);\r\n let formattedValue = value.toString();\r\n\r\n const formatterSpec = IModelApp.quantityFormatter.findFormatterSpecByQuantityType(ItemField.ANGLE_Item === index ? QuantityType.Angle : QuantityType.Length);\r\n // istanbul ignore else\r\n if (formatterSpec)\r\n formattedValue = IModelApp.quantityFormatter.formatQuantity(value, formatterSpec);\r\n\r\n return formattedValue;\r\n }\r\n\r\n /** AccuDraw Set Field Value from Ui. */\r\n public static setFieldValueFromUi(field: ItemField, stringValue: string): void {\r\n FrameworkAccuDraw.onAccuDrawSetFieldValueFromUiEvent.emit({ field, stringValue });\r\n }\r\n\r\n private outputInfoMessage(message: string): void {\r\n // istanbul ignore else\r\n if (FrameworkAccuDraw.displayNotifications)\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Info, message));\r\n }\r\n\r\n private outputCompassModeMessage(): void {\r\n if (FrameworkAccuDraw.displayNotifications) {\r\n let modeKey = compassModeToKeyMap.get(this.compassMode);\r\n // istanbul ignore if\r\n if (modeKey === undefined)\r\n modeKey = \"polar\";\r\n const modeString = UiFramework.translate(`accuDraw.compassMode.${modeKey}`);\r\n const modeMessage = UiFramework.localization.getLocalizedStringWithNamespace(UiFramework.localizationNamespace, \"accuDraw.compassModeSet\", { modeString });\r\n this.outputInfoMessage(modeMessage);\r\n }\r\n }\r\n\r\n private outputRotationMessage(): void {\r\n if (FrameworkAccuDraw.displayNotifications) {\r\n let rotationKey = rotationModeToKeyMap.get(this.rotationMode);\r\n // istanbul ignore if\r\n if (rotationKey === undefined)\r\n rotationKey = \"top\";\r\n const rotationString = UiFramework.translate(`accuDraw.rotation.${rotationKey}`);\r\n const rotationMessage = UiFramework.localization.getLocalizedStringWithNamespace(UiFramework.localizationNamespace, \"accuDraw.rotationSet\", { rotationString });\r\n this.outputInfoMessage(rotationMessage);\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChildWindowManager.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/childwindow/ChildWindowManager.tsx"],"names":[],"mappings":"AAKA;;GAEG;AAEH,OAAO,2BAA2B,CAAC;AACnC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ChildWindowManager.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/childwindow/ChildWindowManager.tsx"],"names":[],"mappings":"AAKA;;GAEG;AAEH,OAAO,2BAA2B,CAAC;AACnC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAqC/B,cAAc;AACd,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,cAAc;AACd,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;aAGa;AACb,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,iBAAiB,CAA6B;IAEtD,IAAW,gBAAgB,0BAE1B;IAEM,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,mBAAmB,GAAG,SAAS;IAOnF,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS;IAStF,OAAO,CAAC,yBAAyB;IA+CjC,gGAAgG;IACzF,oBAAoB;IAMpB,gBAAgB,kBAAmB,MAAM,2CAc9C;IAGF,OAAO,CAAC,mBAAmB;IAuBpB,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,SAAS,EAAE,QAAQ,EAAE,wBAAwB,EAAE,mBAAmB,CAAC,EAAE,OAAO;CA8BzJ"}
|
|
@@ -10,9 +10,8 @@ import * as React from "react";
|
|
|
10
10
|
import * as ReactDOM from "react-dom";
|
|
11
11
|
import { copyStyles } from "./CopyStyles";
|
|
12
12
|
import { Provider } from "react-redux";
|
|
13
|
-
import { UiFramework } from "../UiFramework";
|
|
14
13
|
import { StateManager } from "../redux/StateManager";
|
|
15
|
-
import {
|
|
14
|
+
import { UiStateStorageHandler } from "../uistate/useUiStateStorage";
|
|
16
15
|
import { PopupRenderer } from "../popup/PopupManager";
|
|
17
16
|
import { ModelessDialogRenderer } from "../dialog/ModelessDialogManager";
|
|
18
17
|
import { ModalDialogRenderer } from "../dialog/ModalDialogManager";
|
|
@@ -94,7 +93,7 @@ export class ChildWindowManager {
|
|
|
94
93
|
copyStyles(childWindow.document);
|
|
95
94
|
setImmediate(() => {
|
|
96
95
|
ReactDOM.render(React.createElement(Provider, { store: StateManager.store },
|
|
97
|
-
React.createElement(
|
|
96
|
+
React.createElement(UiStateStorageHandler, null,
|
|
98
97
|
React.createElement(ThemeManager, null,
|
|
99
98
|
React.createElement(FrameworkVersion, null,
|
|
100
99
|
React.createElement("div", { className: "uifw-child-window-container-host" },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChildWindowManager.js","sourceRoot":"","sources":["../../../../src/appui-react/childwindow/ChildWindowManager.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module ChildWindowManager\r\n */\r\n\r\nimport \"./ChildWindowManager.scss\";\r\nimport * as React from \"react\";\r\nimport * as ReactDOM from \"react-dom\";\r\nimport { copyStyles } from \"./CopyStyles\";\r\nimport { Provider } from \"react-redux\";\r\nimport { UiFramework } from \"../UiFramework\";\r\nimport { StateManager } from \"../redux/StateManager\";\r\nimport { UiSettingsProvider } from \"../uisettings/useUiSettings\";\r\nimport { PopupRenderer } from \"../popup/PopupManager\";\r\nimport { ModelessDialogRenderer } from \"../dialog/ModelessDialogManager\";\r\nimport { ModalDialogRenderer } from \"../dialog/ModalDialogManager\";\r\nimport { CursorPopupMenu } from \"../cursor/cursormenu/CursorMenu\";\r\nimport { FrameworkVersion } from \"../hooks/useFrameworkVersion\";\r\nimport { FrontstageManager } from \"../frontstage/FrontstageManager\";\r\nimport { ThemeManager } from \"../theme/ThemeManager\";\r\n\r\nconst childHtml = `<!DOCTYPE html>\r\n<html>\r\n<head>\r\n <meta charset=\"utf-8\" />\r\n <style>\r\n html,\r\n body {\r\n height: 100%;\r\n width: 100%;\r\n margin: 0;\r\n overflow: hidden;\r\n }\r\n #root {\r\n height: 100%;\r\n }\r\n </style>\r\n</head>\r\n<body>\r\n <noscript>You need to enable JavaScript to run this app.</noscript>\r\n <div id=\"root\"></div>\r\n</body>\r\n</html>`;\r\n\r\n/** @public */\r\nexport interface OpenChildWindowInfo {\r\n childWindowId: string;\r\n window: Window;\r\n parentWindow: Window;\r\n}\r\n\r\n/** @public */\r\nexport interface ChildWindowLocationProps {\r\n width: number;\r\n height: number;\r\n left: number;\r\n top: number;\r\n}\r\n\r\n/** Supports opening a child browser window from the main application window. The child window is managed by the main application\r\n * and is running in the same security context. The application must deliver the html file iTwinPopup.html along side its index.html.\r\n * See also: [Child Window Manager]($docs/learning/ui/framework/ChildWindows.md)\r\n * @public */\r\nexport class ChildWindowManager {\r\n private _openChildWindows: OpenChildWindowInfo[] = [];\r\n\r\n public get openChildWindows() {\r\n return this._openChildWindows;\r\n }\r\n\r\n public findChildWindow(childWindowId: string | undefined): OpenChildWindowInfo | undefined {\r\n if (undefined === childWindowId)\r\n return undefined;\r\n\r\n return this.openChildWindows.find((openWindow) => openWindow.childWindowId === childWindowId);\r\n }\r\n\r\n public findChildWindowId(contentWindow: Window | undefined | null): string | undefined {\r\n if (!contentWindow)\r\n return undefined;\r\n\r\n const childWindow = this.openChildWindows.find((openWindow) => openWindow.window === contentWindow);\r\n return childWindow?.childWindowId;\r\n }\r\n\r\n // istanbul ignore next\r\n private renderChildWindowContents(childWindow: Window, childWindowId: string, content: React.ReactNode) {\r\n const reactConnectionDiv = childWindow.document.getElementById(\"root\");\r\n if (reactConnectionDiv) {\r\n // set openChildWindows now so components can use it when they mount\r\n this._openChildWindows.push({\r\n childWindowId,\r\n window: childWindow,\r\n parentWindow: window,\r\n });\r\n\r\n setTimeout(() => {\r\n copyStyles(childWindow.document);\r\n setImmediate(() => {\r\n ReactDOM.render(\r\n <Provider store={StateManager.store} >\r\n <UiSettingsProvider settingsStorage={UiFramework.getUiSettingsStorage()}>\r\n <ThemeManager>\r\n <FrameworkVersion>\r\n <div className=\"uifw-child-window-container-host\">\r\n <PopupRenderer />\r\n <ModalDialogRenderer />\r\n <ModelessDialogRenderer />\r\n <CursorPopupMenu />\r\n <div className=\"uifw-child-window-container nz-widget-widget\">\r\n {content}\r\n </div>\r\n </div>\r\n </FrameworkVersion>\r\n </ThemeManager>\r\n </UiSettingsProvider>\r\n </Provider>,\r\n reactConnectionDiv\r\n );\r\n });\r\n });\r\n\r\n childWindow.onbeforeunload = () => {\r\n const frontStageDef = FrontstageManager.activeFrontstageDef;\r\n if (frontStageDef) {\r\n void frontStageDef.saveChildWindowSizeAndPosition(childWindowId, childWindow).then(() => {\r\n this.closeChildWindow(childWindowId, false);\r\n });\r\n }\r\n };\r\n }\r\n }\r\n\r\n /** Close all child/pop-out windows. This typically is called when the frontstage is changed. */\r\n public closeAllChildWindows() {\r\n // istanbul ignore next\r\n this.openChildWindows.forEach((openChildWindow) => openChildWindow.window.close());\r\n this._openChildWindows = [];\r\n }\r\n\r\n public closeChildWindow = (childWindowId: string, processWindowClose = true) => {\r\n const windowIndex = this.openChildWindows.findIndex((openWindow) => openWindow.childWindowId === childWindowId);\r\n if (-1 === windowIndex)\r\n return false;\r\n const childWindow = this.openChildWindows[windowIndex];\r\n this.openChildWindows.splice(windowIndex, 1);\r\n if (processWindowClose) {\r\n childWindow.window.close();\r\n } else {\r\n // call the following to convert popout to docked widget\r\n const frontStageDef = FrontstageManager.activeFrontstageDef;\r\n frontStageDef && frontStageDef.dockPopoutWidgetContainer(childWindowId);\r\n }\r\n return true;\r\n };\r\n\r\n // istanbul ignore next\r\n private adjustWidowLocation(location: ChildWindowLocationProps, center?: boolean): ChildWindowLocationProps {\r\n const outLocation = { ...location };\r\n if (0 === location.top && 0 === location.left) {\r\n center = center ?? true;\r\n const windowTop = window.top ?? window;\r\n\r\n // Prepare position of the new window to be centered against the 'parent' window.\r\n if (center) {\r\n outLocation.left =\r\n windowTop.outerWidth / 2 + windowTop.screenX - location.width / 2;\r\n outLocation.top =\r\n windowTop.outerHeight / 2 + windowTop.screenY - location.height / 2;\r\n } else {\r\n if (undefined !== window.screenLeft && undefined !== window.screenTop) {\r\n outLocation.top = window.screenTop + location.top;\r\n outLocation.left = window.screenLeft + location.left;\r\n }\r\n }\r\n }\r\n return outLocation;\r\n }\r\n\r\n // istanbul ignore next\r\n public openChildWindow(childWindowId: string, title: string, content: React.ReactNode, location: ChildWindowLocationProps, useDefaultPopoutUrl?: boolean) {\r\n // first check to see if content is already open in child window\r\n if (this.openChildWindows.findIndex((openWindow) => openWindow.childWindowId === childWindowId) >= 0) {\r\n return false;\r\n }\r\n\r\n location = this.adjustWidowLocation(location);\r\n const url = useDefaultPopoutUrl ? \"/iTwinPopup.html\" : \"\";\r\n const childWindow = window.open(url, \"\", `width=${location.width},height=${location.height},left=${location.left},top=${location.top},menubar=no,resizable=yes,scrollbars=no,status=no,location=no`);\r\n if (!childWindow)\r\n return false;\r\n if (0 === url.length) {\r\n childWindow.document.write(childHtml);\r\n this.renderChildWindowContents(childWindow, childWindowId, content);\r\n } else {\r\n childWindow.addEventListener(\"load\", () => {\r\n childWindow.document.title = title;\r\n this.renderChildWindowContents(childWindow, childWindowId, content);\r\n }, false);\r\n }\r\n\r\n window.addEventListener(\"beforeunload\", () => {\r\n const frontStageDef = FrontstageManager.activeFrontstageDef;\r\n if (frontStageDef) {\r\n this.closeChildWindow(childWindowId, true);\r\n }\r\n }, false);\r\n\r\n return true;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"ChildWindowManager.js","sourceRoot":"","sources":["../../../../src/appui-react/childwindow/ChildWindowManager.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module ChildWindowManager\r\n */\r\n\r\nimport \"./ChildWindowManager.scss\";\r\nimport * as React from \"react\";\r\nimport * as ReactDOM from \"react-dom\";\r\nimport { copyStyles } from \"./CopyStyles\";\r\nimport { Provider } from \"react-redux\";\r\nimport { StateManager } from \"../redux/StateManager\";\r\nimport { UiStateStorageHandler } from \"../uistate/useUiStateStorage\";\r\nimport { PopupRenderer } from \"../popup/PopupManager\";\r\nimport { ModelessDialogRenderer } from \"../dialog/ModelessDialogManager\";\r\nimport { ModalDialogRenderer } from \"../dialog/ModalDialogManager\";\r\nimport { CursorPopupMenu } from \"../cursor/cursormenu/CursorMenu\";\r\nimport { FrameworkVersion } from \"../hooks/useFrameworkVersion\";\r\nimport { FrontstageManager } from \"../frontstage/FrontstageManager\";\r\nimport { ThemeManager } from \"../theme/ThemeManager\";\r\n\r\nconst childHtml = `<!DOCTYPE html>\r\n<html>\r\n<head>\r\n <meta charset=\"utf-8\" />\r\n <style>\r\n html,\r\n body {\r\n height: 100%;\r\n width: 100%;\r\n margin: 0;\r\n overflow: hidden;\r\n }\r\n #root {\r\n height: 100%;\r\n }\r\n </style>\r\n</head>\r\n<body>\r\n <noscript>You need to enable JavaScript to run this app.</noscript>\r\n <div id=\"root\"></div>\r\n</body>\r\n</html>`;\r\n\r\n/** @public */\r\nexport interface OpenChildWindowInfo {\r\n childWindowId: string;\r\n window: Window;\r\n parentWindow: Window;\r\n}\r\n\r\n/** @public */\r\nexport interface ChildWindowLocationProps {\r\n width: number;\r\n height: number;\r\n left: number;\r\n top: number;\r\n}\r\n\r\n/** Supports opening a child browser window from the main application window. The child window is managed by the main application\r\n * and is running in the same security context. The application must deliver the html file iTwinPopup.html along side its index.html.\r\n * See also: [Child Window Manager]($docs/learning/ui/framework/ChildWindows.md)\r\n * @public */\r\nexport class ChildWindowManager {\r\n private _openChildWindows: OpenChildWindowInfo[] = [];\r\n\r\n public get openChildWindows() {\r\n return this._openChildWindows;\r\n }\r\n\r\n public findChildWindow(childWindowId: string | undefined): OpenChildWindowInfo | undefined {\r\n if (undefined === childWindowId)\r\n return undefined;\r\n\r\n return this.openChildWindows.find((openWindow) => openWindow.childWindowId === childWindowId);\r\n }\r\n\r\n public findChildWindowId(contentWindow: Window | undefined | null): string | undefined {\r\n if (!contentWindow)\r\n return undefined;\r\n\r\n const childWindow = this.openChildWindows.find((openWindow) => openWindow.window === contentWindow);\r\n return childWindow?.childWindowId;\r\n }\r\n\r\n // istanbul ignore next\r\n private renderChildWindowContents(childWindow: Window, childWindowId: string, content: React.ReactNode) {\r\n const reactConnectionDiv = childWindow.document.getElementById(\"root\");\r\n if (reactConnectionDiv) {\r\n // set openChildWindows now so components can use it when they mount\r\n this._openChildWindows.push({\r\n childWindowId,\r\n window: childWindow,\r\n parentWindow: window,\r\n });\r\n\r\n setTimeout(() => {\r\n copyStyles(childWindow.document);\r\n setImmediate(() => {\r\n ReactDOM.render(\r\n <Provider store={StateManager.store} >\r\n <UiStateStorageHandler>\r\n <ThemeManager>\r\n <FrameworkVersion>\r\n <div className=\"uifw-child-window-container-host\">\r\n <PopupRenderer />\r\n <ModalDialogRenderer />\r\n <ModelessDialogRenderer />\r\n <CursorPopupMenu />\r\n <div className=\"uifw-child-window-container nz-widget-widget\">\r\n {content}\r\n </div>\r\n </div>\r\n </FrameworkVersion>\r\n </ThemeManager>\r\n </UiStateStorageHandler>\r\n </Provider>,\r\n reactConnectionDiv\r\n );\r\n });\r\n });\r\n\r\n childWindow.onbeforeunload = () => {\r\n const frontStageDef = FrontstageManager.activeFrontstageDef;\r\n if (frontStageDef) {\r\n void frontStageDef.saveChildWindowSizeAndPosition(childWindowId, childWindow).then(() => {\r\n this.closeChildWindow(childWindowId, false);\r\n });\r\n }\r\n };\r\n }\r\n }\r\n\r\n /** Close all child/pop-out windows. This typically is called when the frontstage is changed. */\r\n public closeAllChildWindows() {\r\n // istanbul ignore next\r\n this.openChildWindows.forEach((openChildWindow) => openChildWindow.window.close());\r\n this._openChildWindows = [];\r\n }\r\n\r\n public closeChildWindow = (childWindowId: string, processWindowClose = true) => {\r\n const windowIndex = this.openChildWindows.findIndex((openWindow) => openWindow.childWindowId === childWindowId);\r\n if (-1 === windowIndex)\r\n return false;\r\n const childWindow = this.openChildWindows[windowIndex];\r\n this.openChildWindows.splice(windowIndex, 1);\r\n if (processWindowClose) {\r\n childWindow.window.close();\r\n } else {\r\n // call the following to convert popout to docked widget\r\n const frontStageDef = FrontstageManager.activeFrontstageDef;\r\n frontStageDef && frontStageDef.dockPopoutWidgetContainer(childWindowId);\r\n }\r\n return true;\r\n };\r\n\r\n // istanbul ignore next\r\n private adjustWidowLocation(location: ChildWindowLocationProps, center?: boolean): ChildWindowLocationProps {\r\n const outLocation = { ...location };\r\n if (0 === location.top && 0 === location.left) {\r\n center = center ?? true;\r\n const windowTop = window.top ?? window;\r\n\r\n // Prepare position of the new window to be centered against the 'parent' window.\r\n if (center) {\r\n outLocation.left =\r\n windowTop.outerWidth / 2 + windowTop.screenX - location.width / 2;\r\n outLocation.top =\r\n windowTop.outerHeight / 2 + windowTop.screenY - location.height / 2;\r\n } else {\r\n if (undefined !== window.screenLeft && undefined !== window.screenTop) {\r\n outLocation.top = window.screenTop + location.top;\r\n outLocation.left = window.screenLeft + location.left;\r\n }\r\n }\r\n }\r\n return outLocation;\r\n }\r\n\r\n // istanbul ignore next\r\n public openChildWindow(childWindowId: string, title: string, content: React.ReactNode, location: ChildWindowLocationProps, useDefaultPopoutUrl?: boolean) {\r\n // first check to see if content is already open in child window\r\n if (this.openChildWindows.findIndex((openWindow) => openWindow.childWindowId === childWindowId) >= 0) {\r\n return false;\r\n }\r\n\r\n location = this.adjustWidowLocation(location);\r\n const url = useDefaultPopoutUrl ? \"/iTwinPopup.html\" : \"\";\r\n const childWindow = window.open(url, \"\", `width=${location.width},height=${location.height},left=${location.left},top=${location.top},menubar=no,resizable=yes,scrollbars=no,status=no,location=no`);\r\n if (!childWindow)\r\n return false;\r\n if (0 === url.length) {\r\n childWindow.document.write(childHtml);\r\n this.renderChildWindowContents(childWindow, childWindowId, content);\r\n } else {\r\n childWindow.addEventListener(\"load\", () => {\r\n childWindow.document.title = title;\r\n this.renderChildWindowContents(childWindow, childWindowId, content);\r\n }, false);\r\n }\r\n\r\n window.addEventListener(\"beforeunload\", () => {\r\n const frontStageDef = FrontstageManager.activeFrontstageDef;\r\n if (frontStageDef) {\r\n this.closeChildWindow(childWindowId, true);\r\n }\r\n }, false);\r\n\r\n return true;\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StageContentLayout.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/content/StageContentLayout.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAmB,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,cAAc,EAAE,oBAAoB,EAAE,CAAC;CACxC;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;CAC1C;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,qCAAqC;WACvB,iBAAiB,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,GAAE,OAAe,EAAE,eAAe,CAAC,EAAE,eAAe,GAAG,uBAAuB;IAwB/L,gEAAgE;WAC5C,mBAAmB,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,EAAE,uBAAuB,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"StageContentLayout.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/content/StageContentLayout.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAmB,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,cAAc,EAAE,oBAAoB,EAAE,CAAC;CACxC;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;CAC1C;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,qCAAqC;WACvB,iBAAiB,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,GAAE,OAAe,EAAE,eAAe,CAAC,EAAE,eAAe,GAAG,uBAAuB;IAwB/L,gEAAgE;WAC5C,mBAAmB,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,EAAE,uBAAuB,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;IAavJ,iDAAiD;WACnC,0BAA0B,CAAC,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,uBAAuB,GAAG,OAAO;CAiBnH"}
|
|
@@ -35,9 +35,11 @@ export class StageContentLayout {
|
|
|
35
35
|
/** Create an array of ViewStates from the StageContentLayout */
|
|
36
36
|
static async viewStatesFromProps(iModelConnection, savedProps) {
|
|
37
37
|
const viewStates = new Array();
|
|
38
|
-
|
|
39
|
-
const
|
|
40
|
-
|
|
38
|
+
if (savedProps.viewStateProps) {
|
|
39
|
+
for (const savedViewProps of savedProps.viewStateProps) {
|
|
40
|
+
const viewState = await ViewStateHelper.viewStateFromProps(iModelConnection, savedViewProps);
|
|
41
|
+
viewStates.push(viewState);
|
|
42
|
+
}
|
|
41
43
|
}
|
|
42
44
|
return viewStates;
|
|
43
45
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StageContentLayout.js","sourceRoot":"","sources":["../../../../src/appui-react/content/StageContentLayout.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAKH,OAAO,EAAE,eAAe,EAAwB,MAAM,mBAAmB,CAAC;AAqB1E;;GAEG;AACH,MAAM,OAAO,kBAAkB;IAC7B,qCAAqC;IAC9B,MAAM,CAAC,iBAAiB,CAAC,gBAAkC,EAAE,YAA0B,EAAE,oBAA6B,KAAK,EAAE,eAAiC;QACnK,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC;QACrD,oHAAoH;QACpH,MAAM,iBAAiB,GAAG,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;QAClG,MAAM,cAAc,GAAG,IAAI,KAAK,EAAwB,CAAC;QACzD,MAAM,SAAS,GAAG,YAAY,CAAC,YAAY,EAAE,CAAC;QAC9C,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;YAChC,uBAAuB;YACvB,IAAI,QAAQ,EAAE;gBACZ,MAAM,cAAc,GAAG,eAAe,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACvE,IAAI,iBAAiB;oBACnB,eAAe,CAAC,wBAAwB,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;gBACrE,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;aACrC;SACF;QAED,MAAM,oBAAoB,GAA4B;YACpD,iBAAiB;YACjB,cAAc;SACf,CAAC;QAEF,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAED,gEAAgE;IACzD,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,gBAAkC,EAAE,UAAmC;QAC7G,MAAM,UAAU,GAAG,IAAI,KAAK,EAAyB,CAAC;QAEtD,KAAK,MAAM,cAAc,IAAI,UAAU,CAAC,cAAc,EAAE;
|
|
1
|
+
{"version":3,"file":"StageContentLayout.js","sourceRoot":"","sources":["../../../../src/appui-react/content/StageContentLayout.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAKH,OAAO,EAAE,eAAe,EAAwB,MAAM,mBAAmB,CAAC;AAqB1E;;GAEG;AACH,MAAM,OAAO,kBAAkB;IAC7B,qCAAqC;IAC9B,MAAM,CAAC,iBAAiB,CAAC,gBAAkC,EAAE,YAA0B,EAAE,oBAA6B,KAAK,EAAE,eAAiC;QACnK,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC;QACrD,oHAAoH;QACpH,MAAM,iBAAiB,GAAG,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;QAClG,MAAM,cAAc,GAAG,IAAI,KAAK,EAAwB,CAAC;QACzD,MAAM,SAAS,GAAG,YAAY,CAAC,YAAY,EAAE,CAAC;QAC9C,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;YAChC,uBAAuB;YACvB,IAAI,QAAQ,EAAE;gBACZ,MAAM,cAAc,GAAG,eAAe,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACvE,IAAI,iBAAiB;oBACnB,eAAe,CAAC,wBAAwB,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;gBACrE,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;aACrC;SACF;QAED,MAAM,oBAAoB,GAA4B;YACpD,iBAAiB;YACjB,cAAc;SACf,CAAC;QAEF,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAED,gEAAgE;IACzD,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,gBAAkC,EAAE,UAAmC;QAC7G,MAAM,UAAU,GAAG,IAAI,KAAK,EAAyB,CAAC;QAEtD,IAAI,UAAU,CAAC,cAAc,EAAE;YAC7B,KAAK,MAAM,cAAc,IAAI,UAAU,CAAC,cAAc,EAAE;gBACtD,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;gBAC7F,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aAC5B;SACF;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,iDAAiD;IAC1C,MAAM,CAAC,0BAA0B,CAAC,YAA0B,EAAE,UAAmC;QACtG,MAAM,WAAW,GAAG,IAAI,KAAK,EAAW,CAAC;QACzC,MAAM,SAAS,GAAG,YAAY,CAAC,YAAY,EAAE,CAAC;QAE9C,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,cAAc,IAAI,UAAU,CAAC,cAAc,EAAE;YACtD,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;YAClC,uBAAuB;YACvB,IAAI,QAAQ,EAAE;gBACZ,MAAM,OAAO,GAAG,eAAe,CAAC,0BAA0B,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;gBACrF,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aAC3B;YACD,KAAK,EAAE,CAAC;SACT;QAED,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,OAAgB,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;IACzD,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module ContentView\r\n */\r\n\r\nimport { IModelConnection, ViewState } from \"@itwin/core-frontend\";\r\nimport { ContentCallback, ContentGroup, ContentGroupProps } from \"./ContentGroup\";\r\nimport { ContentLayoutDef } from \"./ContentLayout\";\r\nimport { ViewStateHelper, ViewStateHelperProps } from \"./ViewStateHelper\";\r\nimport { ContentLayoutProps } from \"@itwin/appui-abstract\";\r\n\r\n/** StageContentLayoutProps interface for sharing view layout information.\r\n * @public\r\n */\r\nexport interface StageContentLayoutProps {\r\n contentLayoutProps?: ContentLayoutProps;\r\n contentGroupProps: ContentGroupProps;\r\n viewStateProps: ViewStateHelperProps[];\r\n}\r\n\r\n/** ViewLayout interface for sharing view layout information.\r\n * @public\r\n */\r\nexport interface ViewLayout {\r\n contentLayoutDef: ContentLayoutDef;\r\n contentGroup: ContentGroup;\r\n viewStates: Array<ViewState | undefined>;\r\n}\r\n\r\n/** StageContentLayout class. Used to serialize/deserialize a View Layout with Saved Views.\r\n * @public\r\n */\r\nexport class StageContentLayout {\r\n /** Create props for a View Layout */\r\n public static viewLayoutToProps(contentLayoutDef: ContentLayoutDef, contentGroup: ContentGroup, emphasizeElements: boolean = false, contentCallback?: ContentCallback): StageContentLayoutProps {\r\n const contentLayoutProps = contentLayoutDef.toJSON();\r\n // update layout in contentGroup to contain latest values from contentLayoutDef this way we don't need to save both.\r\n const contentGroupProps = { ...contentGroup.toJSON(contentCallback), layout: contentLayoutProps };\r\n const viewStateProps = new Array<ViewStateHelperProps>();\r\n const viewports = contentGroup.getViewports();\r\n for (const viewport of viewports) {\r\n // istanbul ignore else\r\n if (viewport) {\r\n const savedViewProps = ViewStateHelper.viewStateToProps(viewport.view);\r\n if (emphasizeElements)\r\n ViewStateHelper.emphasizeElementsToProps(viewport, savedViewProps);\r\n viewStateProps.push(savedViewProps);\r\n }\r\n }\r\n\r\n const savedViewLayoutProps: StageContentLayoutProps = {\r\n contentGroupProps,\r\n viewStateProps,\r\n };\r\n\r\n return savedViewLayoutProps;\r\n }\r\n\r\n /** Create an array of ViewStates from the StageContentLayout */\r\n public static async viewStatesFromProps(iModelConnection: IModelConnection, savedProps: StageContentLayoutProps): Promise<Array<ViewState | undefined>> {\r\n const viewStates = new Array<ViewState | undefined>();\r\n\r\n if (savedProps.viewStateProps) {\r\n for (const savedViewProps of savedProps.viewStateProps) {\r\n const viewState = await ViewStateHelper.viewStateFromProps(iModelConnection, savedViewProps);\r\n viewStates.push(viewState);\r\n }\r\n }\r\n\r\n return viewStates;\r\n }\r\n\r\n /** Apply EmphasizeElements from the SavedView */\r\n public static emphasizeElementsFromProps(contentGroup: ContentGroup, savedProps: StageContentLayoutProps): boolean {\r\n const changedList = new Array<boolean>();\r\n const viewports = contentGroup.getViewports();\r\n\r\n let index = 0;\r\n for (const savedViewProps of savedProps.viewStateProps) {\r\n const viewport = viewports[index];\r\n // istanbul ignore else\r\n if (viewport) {\r\n const changed = ViewStateHelper.emphasizeElementsFromProps(viewport, savedViewProps);\r\n changedList.push(changed);\r\n }\r\n index++;\r\n }\r\n\r\n return changedList.some((changed: boolean) => changed);\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFrameworkVersion.js","sourceRoot":"","sources":["../../../../src/appui-react/hooks/useFrameworkVersion.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAsB,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAEjE,cAAc;AACd,MAAM,UAAU,mBAAmB;IACjC,OAAO,KAAK,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC;AACnD,CAAC;AAED,cAAc;AACd,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,CAAC,aAAa,CAAqB,GAAG,CAAC,CAAC,CAAC,2DAA2D;AAOhJ;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAA4B;IAC3D,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"useFrameworkVersion.js","sourceRoot":"","sources":["../../../../src/appui-react/hooks/useFrameworkVersion.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAsB,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAEjE,cAAc;AACd,MAAM,UAAU,mBAAmB;IACjC,OAAO,KAAK,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC;AACnD,CAAC;AAED,cAAc;AACd,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,CAAC,aAAa,CAAqB,GAAG,CAAC,CAAC,CAAC,2DAA2D;AAOhJ;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAA4B;IAC3D,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,KAAyB,EAAE,EAAE;QAC1D,MAAM,cAAc,GAAI,KAAa,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;QACrE,OAAO,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,mBAAmB,CAAC,gBAAsC,CAAC,CAAC,CAAC,GAAG,CAAC;IAC1G,CAAC,CAAC,CAAC;IACH,OAAO,oBAAC,uBAAuB,CAAC,QAAQ,IACtC,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,KAAK,EAAE,SAAS,GAChB,CAAC;AACL,CAAC;AAQD,gBAAgB;AAChB,MAAM,UAAU,sBAAsB,CAAC,KAAkC;IACvE,MAAM,OAAO,GAAG,mBAAmB,EAAE,CAAC;IACtC,QAAQ,OAAO,EAAE;QACf,KAAK,GAAG,CAAC,CAAC;YACR,OAAO,0CAAG,KAAK,CAAC,EAAE,CAAI,CAAC;SACxB;QACD,KAAK,GAAG,CAAC;QACT,OAAO,CAAC,CAAC;YACP,OAAO,0CAAG,KAAK,CAAC,EAAE,CAAI,CAAC;SACxB;KACF;AACH,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Hooks\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { FrameworkRootState } from \"../redux/StateManager\";\r\nimport { FrameworkVersionId, UiFramework } from \"../UiFramework\";\r\n\r\n/** @public */\r\nexport function useFrameworkVersion(): FrameworkVersionId {\r\n return React.useContext(FrameworkVersionContext);\r\n}\r\n\r\n/** @public */\r\nexport const FrameworkVersionContext = React.createContext<FrameworkVersionId>(\"2\"); // eslint-disable-line @typescript-eslint/naming-convention\r\n\r\n/** @public */\r\nexport interface FrameworkVersionProps {\r\n children?: React.ReactNode;\r\n}\r\n\r\n/** The FrameworkVersion component provides uiVersion context to react component. The\r\n * component uses the property frameworkState.configurableUiState.frameworkVersion from the redux store\r\n * to determine the ui version. This version will default to \"2\" and should only be set to \"1\" for older\r\n * iModelApp applications.\r\n * @public\r\n */\r\nexport function FrameworkVersion(props: FrameworkVersionProps) { // eslint-disable-line @typescript-eslint/no-redeclare\r\n const uiVersion = useSelector((state: FrameworkRootState) => {\r\n const frameworkState = (state as any)[UiFramework.frameworkStateKey];\r\n return frameworkState ? frameworkState.configurableUiState.frameworkVersion as FrameworkVersionId : \"2\";\r\n });\r\n return <FrameworkVersionContext.Provider\r\n children={props.children} // eslint-disable-line react/no-children-prop\r\n value={uiVersion}\r\n />;\r\n}\r\n\r\n/** @internal */\r\nexport interface FrameworkVersionSwitchProps {\r\n v1?: React.ReactNode;\r\n v2?: React.ReactNode;\r\n}\r\n\r\n/** @internal */\r\nexport function FrameworkVersionSwitch(props: FrameworkVersionSwitchProps) {\r\n const version = useFrameworkVersion();\r\n switch (version) {\r\n case \"1\": {\r\n return <>{props.v1}</>;\r\n }\r\n case \"2\":\r\n default: {\r\n return <>{props.v2}</>;\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -8,18 +8,18 @@
|
|
|
8
8
|
// cSpell:ignore focusvalue uiadmin
|
|
9
9
|
import * as React from "react";
|
|
10
10
|
import "./KeyinPalettePanel.scss";
|
|
11
|
-
import { FilteredText, Listbox, ListboxItem,
|
|
11
|
+
import { FilteredText, Listbox, ListboxItem, UiStateStorageStatus } from "@itwin/core-react";
|
|
12
12
|
import { IModelApp, NotifyMessageDetails, OutputMessagePriority, OutputMessageType, ParseAndRunResult } from "@itwin/core-frontend";
|
|
13
13
|
import { UiFramework } from "../UiFramework";
|
|
14
14
|
import { matchesWords, SpecialKey } from "@itwin/appui-abstract";
|
|
15
15
|
import { ClearKeyinPaletteHistoryTool } from "../tools/KeyinPaletteTools";
|
|
16
|
-
import {
|
|
16
|
+
import { useUiStateStorageHandler } from "../uistate/useUiStateStorage";
|
|
17
17
|
import { Input } from "@itwin/itwinui-react";
|
|
18
18
|
const KEYIN_PALETTE_NAMESPACE = "KeyinPalettePanel";
|
|
19
19
|
const KEYIN_HISTORY_KEY = "historyArray";
|
|
20
20
|
/** @internal */
|
|
21
21
|
export function clearKeyinPaletteHistory() {
|
|
22
|
-
const uiSettingsStorage = UiFramework.
|
|
22
|
+
const uiSettingsStorage = UiFramework.getUiStateStorage();
|
|
23
23
|
// istanbul ignore else
|
|
24
24
|
if (uiSettingsStorage) {
|
|
25
25
|
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
|
@@ -35,12 +35,12 @@ export function KeyinPalettePanel({ keyins, onKeyinExecuted, historyLength: allo
|
|
|
35
35
|
const inputRef = React.useRef(null);
|
|
36
36
|
const keyinSeparator = "--#--";
|
|
37
37
|
const [historyKeyins, setHistoryKeyins] = React.useState([]);
|
|
38
|
-
const uiSettingsStorage =
|
|
38
|
+
const uiSettingsStorage = useUiStateStorageHandler();
|
|
39
39
|
React.useEffect(() => {
|
|
40
40
|
async function fetchState() {
|
|
41
41
|
const settingsResult = await uiSettingsStorage.getSetting(KEYIN_PALETTE_NAMESPACE, KEYIN_HISTORY_KEY);
|
|
42
42
|
// istanbul ignore else
|
|
43
|
-
if (
|
|
43
|
+
if (UiStateStorageStatus.Success === settingsResult.status) {
|
|
44
44
|
const filteredHistory = settingsResult.setting.filter((keyin) => {
|
|
45
45
|
const result = IModelApp.tools.parseKeyin(keyin);
|
|
46
46
|
return result.ok;
|
|
@@ -57,7 +57,7 @@ export function KeyinPalettePanel({ keyins, onKeyinExecuted, historyLength: allo
|
|
|
57
57
|
const storeHistoryKeyins = React.useCallback(async (value) => {
|
|
58
58
|
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
|
59
59
|
const result = await uiSettingsStorage.saveSetting(KEYIN_PALETTE_NAMESPACE, KEYIN_HISTORY_KEY, value);
|
|
60
|
-
if (result.status !==
|
|
60
|
+
if (result.status !== UiStateStorageStatus.Success) {
|
|
61
61
|
const briefMessage = UiFramework.translate("keyinbrowser.couldNotSaveHistory");
|
|
62
62
|
const errorDetails = new NotifyMessageDetails(OutputMessagePriority.Error, briefMessage);
|
|
63
63
|
IModelApp.notifications.outputMessage(errorDetails);
|