@itwin/appui-react 5.4.0 → 5.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/CHANGELOG.md +370 -30
  2. package/lib/appui-react/UiFramework.js +1 -1
  3. package/lib/appui-react/UiFramework.js.map +1 -1
  4. package/lib/appui-react/accudraw/AccuDrawWidget.d.ts.map +1 -1
  5. package/lib/appui-react/accudraw/AccuDrawWidget.js +1 -0
  6. package/lib/appui-react/accudraw/AccuDrawWidget.js.map +1 -1
  7. package/lib/appui-react/backstage/BackstageItemUtilities.d.ts.map +1 -1
  8. package/lib/appui-react/backstage/BackstageItemUtilities.js +2 -0
  9. package/lib/appui-react/backstage/BackstageItemUtilities.js.map +1 -1
  10. package/lib/appui-react/content/DefaultViewOverlay.d.ts.map +1 -1
  11. package/lib/appui-react/content/DefaultViewOverlay.js +6 -2
  12. package/lib/appui-react/content/DefaultViewOverlay.js.map +1 -1
  13. package/lib/appui-react/cursor/cursorpopup/CursorPopupManager.d.ts.map +1 -1
  14. package/lib/appui-react/cursor/cursorpopup/CursorPopupManager.js +3 -1
  15. package/lib/appui-react/cursor/cursorpopup/CursorPopupManager.js.map +1 -1
  16. package/lib/appui-react/frontstage/StandardFrontstageProvider.d.ts.map +1 -1
  17. package/lib/appui-react/frontstage/StandardFrontstageProvider.js +1 -0
  18. package/lib/appui-react/frontstage/StandardFrontstageProvider.js.map +1 -1
  19. package/lib/appui-react/messages/Pointer.js +1 -1
  20. package/lib/appui-react/messages/Pointer.js.map +1 -1
  21. package/lib/appui-react/navigationaids/CubeNavigationAidControl.d.ts.map +1 -1
  22. package/lib/appui-react/navigationaids/CubeNavigationAidControl.js +1 -0
  23. package/lib/appui-react/navigationaids/CubeNavigationAidControl.js.map +1 -1
  24. package/lib/appui-react/navigationaids/DrawingNavigationAidControl.d.ts.map +1 -1
  25. package/lib/appui-react/navigationaids/DrawingNavigationAidControl.js +1 -0
  26. package/lib/appui-react/navigationaids/DrawingNavigationAidControl.js.map +1 -1
  27. package/lib/appui-react/navigationaids/SheetNavigationAid.d.ts.map +1 -1
  28. package/lib/appui-react/navigationaids/SheetNavigationAid.js +1 -0
  29. package/lib/appui-react/navigationaids/SheetNavigationAid.js.map +1 -1
  30. package/lib/appui-react/navigationaids/StandardRotationNavigationAid.d.ts.map +1 -1
  31. package/lib/appui-react/navigationaids/StandardRotationNavigationAid.js +1 -0
  32. package/lib/appui-react/navigationaids/StandardRotationNavigationAid.js.map +1 -1
  33. package/lib/appui-react/popup/KeyinPalettePanel.js +1 -1
  34. package/lib/appui-react/popup/KeyinPalettePanel.js.map +1 -1
  35. package/lib/appui-react/popup/PopupManager.d.ts.map +1 -1
  36. package/lib/appui-react/popup/PopupManager.js +9 -3
  37. package/lib/appui-react/popup/PopupManager.js.map +1 -1
  38. package/lib/appui-react/preview/PreviewFeatures.d.ts +10 -0
  39. package/lib/appui-react/preview/PreviewFeatures.d.ts.map +1 -1
  40. package/lib/appui-react/preview/PreviewFeatures.js +2 -0
  41. package/lib/appui-react/preview/PreviewFeatures.js.map +1 -1
  42. package/lib/appui-react/preview/horizontal-panel-alignment/PreviewHorizontalPanelAlign.d.ts.map +1 -1
  43. package/lib/appui-react/preview/horizontal-panel-alignment/PreviewHorizontalPanelAlign.js +8 -2
  44. package/lib/appui-react/preview/horizontal-panel-alignment/PreviewHorizontalPanelAlign.js.map +1 -1
  45. package/lib/appui-react/preview/tool-settings-lock-button/useToolSettingsLockButton.d.ts +4 -0
  46. package/lib/appui-react/preview/tool-settings-lock-button/useToolSettingsLockButton.d.ts.map +1 -0
  47. package/lib/appui-react/preview/tool-settings-lock-button/useToolSettingsLockButton.js +38 -0
  48. package/lib/appui-react/preview/tool-settings-lock-button/useToolSettingsLockButton.js.map +1 -0
  49. package/lib/appui-react/preview/tool-settings-new-editors/useToolSettingsNewEditors.d.ts +5 -0
  50. package/lib/appui-react/preview/tool-settings-new-editors/useToolSettingsNewEditors.d.ts.map +1 -0
  51. package/lib/appui-react/preview/tool-settings-new-editors/useToolSettingsNewEditors.js +13 -0
  52. package/lib/appui-react/preview/tool-settings-new-editors/useToolSettingsNewEditors.js.map +1 -0
  53. package/lib/appui-react/statusbar/StatusBarItemUtilities.d.ts.map +1 -1
  54. package/lib/appui-react/statusbar/StatusBarItemUtilities.js +2 -0
  55. package/lib/appui-react/statusbar/StatusBarItemUtilities.js.map +1 -1
  56. package/lib/appui-react/statusfields/ActivityCenter.js +1 -1
  57. package/lib/appui-react/statusfields/ActivityCenter.js.map +1 -1
  58. package/lib/appui-react/toolbar/ToolbarItemUtilities.d.ts.map +1 -1
  59. package/lib/appui-react/toolbar/ToolbarItemUtilities.js +3 -0
  60. package/lib/appui-react/toolbar/ToolbarItemUtilities.js.map +1 -1
  61. package/lib/appui-react/toolbar/new-toolbars/GroupItem.d.ts +1 -1
  62. package/lib/appui-react/toolbar/new-toolbars/Item.d.ts +2 -2
  63. package/lib/appui-react/toolsettings/DefaultToolSettingsProvider.d.ts.map +1 -1
  64. package/lib/appui-react/toolsettings/DefaultToolSettingsProvider.js +13 -3
  65. package/lib/appui-react/toolsettings/DefaultToolSettingsProvider.js.map +1 -1
  66. package/lib/appui-react/ui-items-provider/AbstractUiItemsManager.d.ts.map +1 -1
  67. package/lib/appui-react/ui-items-provider/AbstractUiItemsManager.js +9 -2
  68. package/lib/appui-react/ui-items-provider/AbstractUiItemsManager.js.map +1 -1
  69. package/lib/appui-react/ui-items-provider/StandardContentToolsProvider.d.ts.map +1 -1
  70. package/lib/appui-react/ui-items-provider/StandardContentToolsProvider.js +1 -0
  71. package/lib/appui-react/ui-items-provider/StandardContentToolsProvider.js.map +1 -1
  72. package/lib/appui-react/ui-items-provider/StandardNavigationToolsProvider.d.ts.map +1 -1
  73. package/lib/appui-react/ui-items-provider/StandardNavigationToolsProvider.js +1 -0
  74. package/lib/appui-react/ui-items-provider/StandardNavigationToolsProvider.js.map +1 -1
  75. package/lib/appui-react/ui-items-provider/StandardStatusbarItemsProvider.d.ts.map +1 -1
  76. package/lib/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js +1 -0
  77. package/lib/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js.map +1 -1
  78. package/lib/appui-react/uiprovider/ComponentGenerator.d.ts.map +1 -1
  79. package/lib/appui-react/uiprovider/ComponentGenerator.js +7 -3
  80. package/lib/appui-react/uiprovider/ComponentGenerator.js.map +1 -1
  81. package/lib/appui-react/uiprovider/LockEditor.d.ts +12 -0
  82. package/lib/appui-react/uiprovider/LockEditor.d.ts.map +1 -0
  83. package/lib/appui-react/uiprovider/LockEditor.js +64 -0
  84. package/lib/appui-react/uiprovider/LockEditor.js.map +1 -0
  85. package/lib/appui-react/utils/PropsHelper.js +1 -1
  86. package/lib/appui-react/utils/PropsHelper.js.map +1 -1
  87. package/lib/appui-react/widgets/BasicToolWidget.d.ts.map +1 -1
  88. package/lib/appui-react/widgets/BasicToolWidget.js +3 -1
  89. package/lib/appui-react/widgets/BasicToolWidget.js.map +1 -1
  90. package/lib/appui-react/widgets/WidgetDef.d.ts.map +1 -1
  91. package/lib/appui-react/widgets/WidgetDef.js +0 -1
  92. package/lib/appui-react/widgets/WidgetDef.js.map +1 -1
  93. package/lib/appui-react.d.ts.map +1 -1
  94. package/lib/appui-react.js +5 -0
  95. package/lib/appui-react.js.map +1 -1
  96. package/package.json +29 -28
@@ -1 +1 @@
1
- {"version":3,"file":"KeyinPalettePanel.js","sourceRoot":"","sources":["../../../src/appui-react/popup/KeyinPalettePanel.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Popup\n */\n\nimport * as React from \"react\";\nimport { Key } from \"ts-key-enum\";\nimport \"./KeyinPalettePanel.scss\";\nimport { FilteredText, Listbox, ListboxItem } from \"@itwin/core-react\";\nimport {\n IModelApp,\n NotifyMessageDetails,\n OutputMessagePriority,\n OutputMessageType,\n ParseAndRunResult,\n} from \"@itwin/core-frontend\";\nimport { UiFramework } from \"../UiFramework.js\";\nimport type { OnItemExecutedFunc } from \"@itwin/appui-abstract\";\nimport { ClearKeyinPaletteHistoryTool } from \"../tools/KeyinPaletteTools.js\";\nimport { useUiStateStorageHandler } from \"../uistate/useUiStateStorage.js\";\nimport type { KeyinEntry } from \"../keyins/Keyins.js\";\nimport { Input } from \"@itwin/itwinui-react\";\nimport { matchesWords } from \"../utils/matchesWords.js\";\nimport { useTranslation } from \"../hooks/useTranslation.js\";\nimport { UiStateStorageStatus } from \"../uistate/UiStateStorage.js\";\n\nconst KEYIN_PALETTE_NAMESPACE = \"KeyinPalettePanel\";\nconst KEYIN_HISTORY_KEY = \"historyArray\";\n\n/** @internal */\nexport function clearKeyinPaletteHistory() {\n const uiSettingsStorage = UiFramework.getUiStateStorage();\n if (uiSettingsStorage) {\n void uiSettingsStorage.deleteSetting(\n KEYIN_PALETTE_NAMESPACE,\n KEYIN_HISTORY_KEY\n );\n }\n}\n\ninterface KeyinPalettePanelProps {\n keyins: KeyinEntry[];\n onKeyinExecuted?: OnItemExecutedFunc;\n historyLength?: number;\n}\n\n/**\n * @internal\n */\nexport function KeyinPalettePanel({\n keyins,\n onKeyinExecuted,\n historyLength: allowedHistoryLength = 6,\n}: KeyinPalettePanelProps) {\n const { translate } = useTranslation();\n const [currentKeyin, setCurrentKeyin] = React.useState<string>(\"\");\n\n const inputRef = React.useRef<HTMLInputElement>(null);\n const keyinSeparator = \"--#--\";\n const [historyKeyins, setHistoryKeyins] = React.useState<string[]>([]);\n const uiSettingsStorage = useUiStateStorageHandler();\n\n React.useEffect(() => {\n async function fetchState() {\n const settingsResult = await uiSettingsStorage.getSetting(\n KEYIN_PALETTE_NAMESPACE,\n KEYIN_HISTORY_KEY\n );\n if (UiStateStorageStatus.Success === settingsResult.status) {\n const filteredHistory = (settingsResult.setting as string[]).filter(\n (keyin) => {\n const result = IModelApp.tools.parseKeyin(keyin);\n return result.ok;\n }\n );\n setHistoryKeyins(filteredHistory);\n } else {\n setHistoryKeyins([]);\n }\n }\n\n void fetchState();\n }, [uiSettingsStorage]);\n\n const storeHistoryKeyins = React.useCallback(\n async (value: string[]) => {\n const result = await uiSettingsStorage.saveSetting(\n KEYIN_PALETTE_NAMESPACE,\n KEYIN_HISTORY_KEY,\n value\n );\n if (result.status !== UiStateStorageStatus.Success) {\n const errorDetails = new NotifyMessageDetails(\n OutputMessagePriority.Error,\n translate(\"keyinbrowser.couldNotSaveHistory\")\n );\n IModelApp.notifications.outputMessage(errorDetails);\n }\n },\n [translate, uiSettingsStorage]\n );\n\n const allKeyins = React.useMemo(() => {\n const availableKeyins = [];\n historyKeyins.forEach((value: string) => {\n availableKeyins.push({ value, isHistory: true });\n });\n availableKeyins.push(\n ...keyins.sort((a, b) =>\n a.value.toLowerCase().localeCompare(b.value.toLowerCase())\n )\n );\n return availableKeyins;\n }, [historyKeyins, keyins]);\n\n const submitKeyin = React.useCallback(\n async (value: string) => {\n let detailedMessage: string | undefined;\n let message: string | undefined;\n try {\n switch (await IModelApp.tools.parseAndRun(value)) {\n case ParseAndRunResult.ToolNotFound:\n message = `translate(\"keyinbrowser.couldNotFindTool\")} ${value}`;\n break;\n case ParseAndRunResult.BadArgumentCount:\n message = translate(\"keyinbrowser.incorrectArgs\");\n break;\n case ParseAndRunResult.FailedToRun:\n message = translate(\"keyinbrowser.failedToRun\");\n break;\n }\n } catch (ex) {\n {\n message = translate(\"keyinbrowser.exceptionOccurred\");\n detailedMessage = `${translate(\n \"keyinbrowser.exceptionOccurred\"\n )}: ${ex}`;\n }\n }\n\n if (undefined !== message) {\n const errorDetails = new NotifyMessageDetails(\n OutputMessagePriority.Error,\n message,\n detailedMessage,\n OutputMessageType.Sticky\n );\n IModelApp.notifications.outputMessage(errorDetails);\n } else {\n if (\n value.length < 400 &&\n value !== ClearKeyinPaletteHistoryTool.keyin &&\n value !== ClearKeyinPaletteHistoryTool.englishKeyin\n ) {\n const newHistoryEntries: string[] = [value];\n for (const entry of historyKeyins) {\n if (entry !== value) {\n newHistoryEntries.push(entry);\n if (newHistoryEntries.length >= allowedHistoryLength) break;\n }\n }\n await storeHistoryKeyins(newHistoryEntries);\n }\n\n // close the popup by processing the supplied onKeyinExecuted function\n if (onKeyinExecuted) onKeyinExecuted(value);\n }\n },\n [\n translate,\n onKeyinExecuted,\n storeHistoryKeyins,\n historyKeyins,\n allowedHistoryLength,\n ]\n );\n\n const selectKeyin = React.useCallback(() => {\n if (inputRef.current) {\n inputRef.current.focus();\n inputRef.current.setSelectionRange(\n inputRef.current.value.length,\n inputRef.current.value.length\n );\n }\n }, [inputRef]);\n\n const updateKeyin = React.useCallback(\n (value: string) => {\n setCurrentKeyin(value);\n selectKeyin();\n },\n [selectKeyin]\n );\n\n const getKeyinFromListboxValue = (value: string | undefined) => {\n if (value) {\n const indexSeparator = value.search(keyinSeparator);\n if (indexSeparator) return value.substring(0, indexSeparator);\n }\n return undefined;\n };\n\n const handleKeypressOnKeyinsList = React.useCallback(\n async (event: React.KeyboardEvent<HTMLUListElement>) => {\n const key = event.key;\n // built into listbox a \"Space\" key will trigger the selection of a entry so if an Enter key is pressed\n // assume user wants to execute the entry.\n if (key === Key.Enter.valueOf()) {\n event.preventDefault();\n const keyinToSend = getKeyinFromListboxValue(\n event.currentTarget?.dataset?.focusvalue\n );\n if (keyinToSend) {\n if (event.ctrlKey) updateKeyin(keyinToSend);\n else await submitKeyin(keyinToSend);\n }\n }\n },\n [submitKeyin, updateKeyin]\n );\n\n const onListboxValueChange = React.useCallback(\n async (value: string, isControlOrCommandPressed?: boolean) => {\n const keyin = getKeyinFromListboxValue(value);\n if (keyin) {\n if (isControlOrCommandPressed) updateKeyin(keyin);\n else await submitKeyin(keyin);\n }\n },\n [submitKeyin, updateKeyin]\n );\n\n const onInputValueChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n setCurrentKeyin(event.target.value);\n },\n []\n );\n\n const filteredKeyins = React.useMemo(() => {\n const filteredHistory: KeyinEntry[] = [];\n if (undefined === currentKeyin || 0 === currentKeyin.length) {\n return allKeyins;\n } else {\n const newKeyinSet: KeyinEntry[] = [];\n allKeyins.forEach((value) => {\n if (value.value.length >= currentKeyin.length) {\n // Force contiguous searches if key-in is over 60 characters long for performance.\n const matches = matchesWords(\n currentKeyin,\n value.value,\n currentKeyin.length > 60\n );\n if (matches && matches.length) {\n if (value.isHistory) {\n filteredHistory.push(value);\n newKeyinSet.push({ ...value, matches });\n } else {\n // only add entry if no match in filtered history\n if (\n -1 ===\n filteredHistory.findIndex(\n (historyEntry: KeyinEntry) =>\n historyEntry.value === value.value\n )\n )\n newKeyinSet.push({ ...value, matches });\n }\n }\n }\n });\n return newKeyinSet;\n }\n }, [allKeyins, currentKeyin]);\n\n const onInputValueKeyDown = React.useCallback(\n async (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (Key.Enter.valueOf() === event.key) {\n event.preventDefault();\n event.stopPropagation();\n if (1 === filteredKeyins.length) {\n if (event.ctrlKey) updateKeyin(filteredKeyins[0].value);\n else await submitKeyin(filteredKeyins[0].value);\n } else {\n if (currentKeyin) await submitKeyin(currentKeyin);\n }\n } else if (\n Key.Tab.valueOf() === event.key &&\n 1 === filteredKeyins.length\n ) {\n event.preventDefault();\n event.stopPropagation();\n updateKeyin(filteredKeyins[0].value);\n } else {\n if (\n event.key === Key.ArrowDown.valueOf() &&\n filteredKeyins.length > 0\n ) {\n event.preventDefault();\n event.stopPropagation();\n if (inputRef.current) {\n const nextElement = inputRef.current\n .nextElementSibling as HTMLElement;\n nextElement && nextElement.focus();\n }\n }\n }\n },\n [filteredKeyins, submitKeyin, currentKeyin, updateKeyin]\n );\n\n const lastHistoryIndex =\n filteredKeyins.findIndex((entry) => true !== entry.isHistory) - 1;\n\n return (\n <div className=\"uifw-command-palette-panel\">\n <Input\n ref={inputRef}\n type=\"text\"\n onKeyDown={onInputValueKeyDown}\n className={\"uifw-command-palette-input\"}\n data-testid=\"command-palette-input\"\n onChange={onInputValueChange}\n placeholder={translate(\"keyinbrowser.placeholder\")}\n value={currentKeyin}\n size=\"small\"\n />\n {filteredKeyins.length > 0 && (\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n <Listbox\n id=\"uifw-command-sources\"\n className=\"map-manager-source-list\"\n onKeyDown={handleKeypressOnKeyinsList}\n onListboxValueChange={onListboxValueChange}\n >\n {filteredKeyins.map((entry, index) => {\n const value = `${entry.value}${keyinSeparator}${\n entry.isHistory ? \"history\" : \"registry\"\n }`;\n const itemClass = `uifw-command-palette-value-entry${\n index === lastHistoryIndex ? \" uifw-history-bottom-border\" : \"\"\n }`;\n return (\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n <ListboxItem\n key={`${entry.value}-${index}`}\n className={itemClass}\n value={value}\n >\n {/* eslint-disable-next-line @typescript-eslint/no-deprecated */}\n <FilteredText value={entry.value} matches={entry.matches} />\n </ListboxItem>\n );\n })}\n </Listbox>\n )}\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"KeyinPalettePanel.js","sourceRoot":"","sources":["../../../src/appui-react/popup/KeyinPalettePanel.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Popup\n */\n\nimport * as React from \"react\";\nimport { Key } from \"ts-key-enum\";\nimport \"./KeyinPalettePanel.scss\";\nimport { FilteredText, Listbox, ListboxItem } from \"@itwin/core-react\";\nimport {\n IModelApp,\n NotifyMessageDetails,\n OutputMessagePriority,\n OutputMessageType,\n ParseAndRunResult,\n} from \"@itwin/core-frontend\";\nimport { UiFramework } from \"../UiFramework.js\";\nimport type { OnItemExecutedFunc } from \"@itwin/appui-abstract\";\nimport { ClearKeyinPaletteHistoryTool } from \"../tools/KeyinPaletteTools.js\";\nimport { useUiStateStorageHandler } from \"../uistate/useUiStateStorage.js\";\nimport type { KeyinEntry } from \"../keyins/Keyins.js\";\nimport { Input } from \"@itwin/itwinui-react\";\nimport { matchesWords } from \"../utils/matchesWords.js\";\nimport { useTranslation } from \"../hooks/useTranslation.js\";\nimport { UiStateStorageStatus } from \"../uistate/UiStateStorage.js\";\n\nconst KEYIN_PALETTE_NAMESPACE = \"KeyinPalettePanel\";\nconst KEYIN_HISTORY_KEY = \"historyArray\";\n\n/** @internal */\nexport function clearKeyinPaletteHistory() {\n const uiSettingsStorage = UiFramework.getUiStateStorage();\n if (uiSettingsStorage) {\n void uiSettingsStorage.deleteSetting(\n KEYIN_PALETTE_NAMESPACE,\n KEYIN_HISTORY_KEY\n );\n }\n}\n\ninterface KeyinPalettePanelProps {\n keyins: KeyinEntry[];\n onKeyinExecuted?: OnItemExecutedFunc;\n historyLength?: number;\n}\n\n/**\n * @internal\n */\nexport function KeyinPalettePanel({\n keyins,\n onKeyinExecuted,\n historyLength: allowedHistoryLength = 6,\n}: KeyinPalettePanelProps) {\n const { translate } = useTranslation();\n const [currentKeyin, setCurrentKeyin] = React.useState<string>(\"\");\n\n const inputRef = React.useRef<HTMLInputElement>(null);\n const keyinSeparator = \"--#--\";\n const [historyKeyins, setHistoryKeyins] = React.useState<string[]>([]);\n const uiSettingsStorage = useUiStateStorageHandler();\n\n React.useEffect(() => {\n async function fetchState() {\n const settingsResult = await uiSettingsStorage.getSetting(\n KEYIN_PALETTE_NAMESPACE,\n KEYIN_HISTORY_KEY\n );\n if (UiStateStorageStatus.Success === settingsResult.status) {\n const filteredHistory = (settingsResult.setting as string[]).filter(\n (keyin) => {\n const result = IModelApp.tools.parseKeyin(keyin);\n return result.ok;\n }\n );\n setHistoryKeyins(filteredHistory);\n } else {\n setHistoryKeyins([]);\n }\n }\n\n void fetchState();\n }, [uiSettingsStorage]);\n\n const storeHistoryKeyins = React.useCallback(\n async (value: string[]) => {\n const result = await uiSettingsStorage.saveSetting(\n KEYIN_PALETTE_NAMESPACE,\n KEYIN_HISTORY_KEY,\n value\n );\n if (result.status !== UiStateStorageStatus.Success) {\n const errorDetails = new NotifyMessageDetails(\n OutputMessagePriority.Error,\n translate(\"keyinbrowser.couldNotSaveHistory\")\n );\n IModelApp.notifications.outputMessage(errorDetails);\n }\n },\n [translate, uiSettingsStorage]\n );\n\n const allKeyins = React.useMemo(() => {\n const availableKeyins = [];\n historyKeyins.forEach((value: string) => {\n availableKeyins.push({ value, isHistory: true });\n });\n availableKeyins.push(\n ...keyins.sort((a, b) =>\n a.value.toLowerCase().localeCompare(b.value.toLowerCase())\n )\n );\n return availableKeyins;\n }, [historyKeyins, keyins]);\n\n const submitKeyin = React.useCallback(\n async (value: string) => {\n let detailedMessage: string | undefined;\n let message: string | undefined;\n try {\n switch (await IModelApp.tools.parseAndRun(value)) {\n case ParseAndRunResult.ToolNotFound:\n message = `translate(\"keyinbrowser.couldNotFindTool\")} ${value}`;\n break;\n case ParseAndRunResult.BadArgumentCount:\n message = translate(\"keyinbrowser.incorrectArgs\");\n break;\n case ParseAndRunResult.FailedToRun:\n message = translate(\"keyinbrowser.failedToRun\");\n break;\n }\n } catch (ex) {\n {\n message = translate(\"keyinbrowser.exceptionOccurred\");\n detailedMessage = `${translate(\n \"keyinbrowser.exceptionOccurred\"\n )}: ${String(ex)}`;\n }\n }\n\n if (undefined !== message) {\n const errorDetails = new NotifyMessageDetails(\n OutputMessagePriority.Error,\n message,\n detailedMessage,\n OutputMessageType.Sticky\n );\n IModelApp.notifications.outputMessage(errorDetails);\n } else {\n if (\n value.length < 400 &&\n value !== ClearKeyinPaletteHistoryTool.keyin &&\n value !== ClearKeyinPaletteHistoryTool.englishKeyin\n ) {\n const newHistoryEntries: string[] = [value];\n for (const entry of historyKeyins) {\n if (entry !== value) {\n newHistoryEntries.push(entry);\n if (newHistoryEntries.length >= allowedHistoryLength) break;\n }\n }\n await storeHistoryKeyins(newHistoryEntries);\n }\n\n // close the popup by processing the supplied onKeyinExecuted function\n if (onKeyinExecuted) onKeyinExecuted(value);\n }\n },\n [\n translate,\n onKeyinExecuted,\n storeHistoryKeyins,\n historyKeyins,\n allowedHistoryLength,\n ]\n );\n\n const selectKeyin = React.useCallback(() => {\n if (inputRef.current) {\n inputRef.current.focus();\n inputRef.current.setSelectionRange(\n inputRef.current.value.length,\n inputRef.current.value.length\n );\n }\n }, [inputRef]);\n\n const updateKeyin = React.useCallback(\n (value: string) => {\n setCurrentKeyin(value);\n selectKeyin();\n },\n [selectKeyin]\n );\n\n const getKeyinFromListboxValue = (value: string | undefined) => {\n if (value) {\n const indexSeparator = value.search(keyinSeparator);\n if (indexSeparator) return value.substring(0, indexSeparator);\n }\n return undefined;\n };\n\n const handleKeypressOnKeyinsList = React.useCallback(\n async (event: React.KeyboardEvent<HTMLUListElement>) => {\n const key = event.key;\n // built into listbox a \"Space\" key will trigger the selection of a entry so if an Enter key is pressed\n // assume user wants to execute the entry.\n if (key === Key.Enter.valueOf()) {\n event.preventDefault();\n const keyinToSend = getKeyinFromListboxValue(\n event.currentTarget?.dataset?.focusvalue\n );\n if (keyinToSend) {\n if (event.ctrlKey) updateKeyin(keyinToSend);\n else await submitKeyin(keyinToSend);\n }\n }\n },\n [submitKeyin, updateKeyin]\n );\n\n const onListboxValueChange = React.useCallback(\n async (value: string, isControlOrCommandPressed?: boolean) => {\n const keyin = getKeyinFromListboxValue(value);\n if (keyin) {\n if (isControlOrCommandPressed) updateKeyin(keyin);\n else await submitKeyin(keyin);\n }\n },\n [submitKeyin, updateKeyin]\n );\n\n const onInputValueChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n setCurrentKeyin(event.target.value);\n },\n []\n );\n\n const filteredKeyins = React.useMemo(() => {\n const filteredHistory: KeyinEntry[] = [];\n if (undefined === currentKeyin || 0 === currentKeyin.length) {\n return allKeyins;\n } else {\n const newKeyinSet: KeyinEntry[] = [];\n allKeyins.forEach((value) => {\n if (value.value.length >= currentKeyin.length) {\n // Force contiguous searches if key-in is over 60 characters long for performance.\n const matches = matchesWords(\n currentKeyin,\n value.value,\n currentKeyin.length > 60\n );\n if (matches && matches.length) {\n if (value.isHistory) {\n filteredHistory.push(value);\n newKeyinSet.push({ ...value, matches });\n } else {\n // only add entry if no match in filtered history\n if (\n -1 ===\n filteredHistory.findIndex(\n (historyEntry: KeyinEntry) =>\n historyEntry.value === value.value\n )\n )\n newKeyinSet.push({ ...value, matches });\n }\n }\n }\n });\n return newKeyinSet;\n }\n }, [allKeyins, currentKeyin]);\n\n const onInputValueKeyDown = React.useCallback(\n async (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (Key.Enter.valueOf() === event.key) {\n event.preventDefault();\n event.stopPropagation();\n if (1 === filteredKeyins.length) {\n if (event.ctrlKey) updateKeyin(filteredKeyins[0].value);\n else await submitKeyin(filteredKeyins[0].value);\n } else {\n if (currentKeyin) await submitKeyin(currentKeyin);\n }\n } else if (\n Key.Tab.valueOf() === event.key &&\n 1 === filteredKeyins.length\n ) {\n event.preventDefault();\n event.stopPropagation();\n updateKeyin(filteredKeyins[0].value);\n } else {\n if (\n event.key === Key.ArrowDown.valueOf() &&\n filteredKeyins.length > 0\n ) {\n event.preventDefault();\n event.stopPropagation();\n if (inputRef.current) {\n const nextElement = inputRef.current\n .nextElementSibling as HTMLElement;\n nextElement && nextElement.focus();\n }\n }\n }\n },\n [filteredKeyins, submitKeyin, currentKeyin, updateKeyin]\n );\n\n const lastHistoryIndex =\n filteredKeyins.findIndex((entry) => true !== entry.isHistory) - 1;\n\n return (\n <div className=\"uifw-command-palette-panel\">\n <Input\n ref={inputRef}\n type=\"text\"\n onKeyDown={onInputValueKeyDown}\n className={\"uifw-command-palette-input\"}\n data-testid=\"command-palette-input\"\n onChange={onInputValueChange}\n placeholder={translate(\"keyinbrowser.placeholder\")}\n value={currentKeyin}\n size=\"small\"\n />\n {filteredKeyins.length > 0 && (\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n <Listbox\n id=\"uifw-command-sources\"\n className=\"map-manager-source-list\"\n onKeyDown={handleKeypressOnKeyinsList}\n onListboxValueChange={onListboxValueChange}\n >\n {filteredKeyins.map((entry, index) => {\n const value = `${entry.value}${keyinSeparator}${\n entry.isHistory ? \"history\" : \"registry\"\n }`;\n const itemClass = `uifw-command-palette-value-entry${\n index === lastHistoryIndex ? \" uifw-history-bottom-border\" : \"\"\n }`;\n return (\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n <ListboxItem\n key={`${entry.value}-${index}`}\n className={itemClass}\n value={value}\n >\n {/* eslint-disable-next-line @typescript-eslint/no-deprecated */}\n <FilteredText value={entry.value} matches={entry.matches} />\n </ListboxItem>\n );\n })}\n </Listbox>\n )}\n </div>\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"PopupManager.d.ts","sourceRoot":"","sources":["../../../src/appui-react/popup/PopupManager.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PopupManager.d.ts","sourceRoot":"","sources":["../../../src/appui-react/popup/PopupManager.tsx"],"names":[],"mappings":"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"}
@@ -122,7 +122,9 @@ export class PopupManager {
122
122
  static showKeyinPalette(keyins, el, onItemExecuted, onCancel) {
123
123
  const id = PopupManager._keyPalettePopupId;
124
124
  const cancelFn = onCancel ?? (() => PopupManager.hideKeyinPalette());
125
- const component = (React.createElement(KeyinPalettePopup, { keyins: keyins, id: id, el: el, onItemExecuted: onItemExecuted, onCancel: cancelFn }));
125
+ const component = (React.createElement(KeyinPalettePopup, { keyins: keyins, id: id,
126
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
127
+ el: el, onItemExecuted: onItemExecuted, onCancel: cancelFn }));
126
128
  // since the command palette popup is always at top center of specified HTML element and it does not need to move like
127
129
  // cursor popups just set pt to 0,0.
128
130
  const pt = { x: 0, y: 0 };
@@ -213,7 +215,9 @@ export class PopupManager {
213
215
  static showCard(content, title, toolbarProps, el, pt, offset, onItemExecuted, onCancel, relativePosition) {
214
216
  const id = PopupManager._cardId;
215
217
  const placement = mapToPlacement(relativePosition);
216
- const component = (React.createElement(CardPopup, { id: id, el: el, pt: pt, offset: offset, content: content, title: title, items: toolbarProps ? toolbarProps.items : undefined, placement: placement, orientation: Orientation.Horizontal, onCancel: onCancel, onItemExecuted: onItemExecuted }));
218
+ const component = (React.createElement(CardPopup, { id: id, el: el, pt: pt, offset: offset, content: content, title: title, items: toolbarProps ? toolbarProps.items : undefined, placement: placement,
219
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
220
+ orientation: Orientation.Horizontal, onCancel: onCancel, onItemExecuted: onItemExecuted }));
217
221
  const popupInfo = {
218
222
  id,
219
223
  pt,
@@ -227,7 +231,9 @@ export class PopupManager {
227
231
  static displayCard(content, options) {
228
232
  const id = options.id ?? PopupManager._cardId;
229
233
  const { onCancel, location, placement, offset, anchor, title, toolbarProps, onItemExecuted, } = options;
230
- const component = (React.createElement(CardPopup, { id: id, el: anchor, pt: location, offset: offset, content: { reactNode: content }, title: title, items: toolbarProps?.items, placement: placement, orientation: Orientation.Horizontal, onCancel: onCancel, onItemExecuted: onItemExecuted }));
234
+ const component = (React.createElement(CardPopup, { id: id, el: anchor, pt: location, offset: offset, content: { reactNode: content }, title: title, items: toolbarProps?.items, placement: placement,
235
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
236
+ orientation: Orientation.Horizontal, onCancel: onCancel, onItemExecuted: onItemExecuted }));
231
237
  const popupInfo = {
232
238
  id,
233
239
  pt: location,
@@ -1 +1 @@
1
- {"version":3,"file":"PopupManager.js","sourceRoot":"","sources":["../../../src/appui-react/popup/PopupManager.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Popup\n */\nimport * as React from \"react\";\nimport type {\n AbstractToolbarProps,\n DialogLayoutDataProvider,\n OnValueCommitFunc,\n Primitives,\n PrimitiveValue,\n PropertyDescription,\n RelativePosition,\n} from \"@itwin/appui-abstract\";\nimport {\n PropertyRecord,\n PropertyValueFormat,\n UiEvent,\n} from \"@itwin/appui-abstract\";\nimport { Orientation } from \"@itwin/components-react\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport type { XAndY } from \"@itwin/core-geometry\";\nimport type { ListenerType, Point } from \"@itwin/core-react/internal\";\nimport { Rectangle } from \"@itwin/core-react/internal\";\nimport { offsetAndContainInContainer } from \"../layout/popup/Tooltip.js\";\nimport type { KeyinEntry } from \"../keyins/Keyins.js\";\nimport { UiFramework } from \"../UiFramework.js\";\nimport { CardPopup } from \"./CardPopup.js\";\nimport { HTMLElementPopup } from \"./HTMLElementPopup.js\";\nimport {\n InputEditorCommitHandler,\n InputEditorPopup,\n} from \"./InputEditorPopup.js\";\nimport { KeyinPalettePopup } from \"./KeyinPalettePopup.js\";\nimport { ToolbarPopup } from \"./ToolbarPopup.js\";\nimport { ToolSettingsPopup } from \"./ToolSettingsPopup.js\";\nimport { ComponentPopup } from \"./ComponentPopup.js\";\nimport { WrapperContext } from \"../configurableui/ConfigurableUiContent.js\";\nimport { mapToPlacement, type Placement } from \"../utils/Placement.js\";\nimport type { ToolbarItem } from \"../toolbar/ToolbarItem.js\";\nimport type { ToolbarProps } from \"../toolbar/Toolbar.js\";\nimport { InternalConfigurableUiManager } from \"../configurableui/InternalConfigurableUiManager.js\";\nimport type { SizeProps } from \"../utils/SizeProps.js\";\n\n/** Information maintained by PopupManager about a Popup\n * @public\n */\nexport interface PopupInfo {\n id: string;\n pt: XAndY;\n component: React.ReactNode;\n /** @deprecated in 4.11.0. Please use the optional `parent` property moving forward. */\n parentDocument: Document;\n /** will become standard once `parentDocument` is removed. */\n parent?: Document;\n}\n\n/** @internal */\ninterface CommonPopupOptions {\n onCancel: () => void;\n location: XAndY;\n offset: XAndY;\n placement: Placement;\n anchor?: HTMLElement;\n id?: string;\n}\n\ninterface DisplayCardPopupOptions extends CommonPopupOptions {\n title: string | PropertyRecord | undefined;\n toolbarProps?: ToolbarProps;\n onItemExecuted: (item: any) => void;\n}\n\n/**\n * @public\n * @deprecated in 4.13.0. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface PopupsChangedEventArgs {\n popups: ReadonlyArray<PopupInfo>;\n}\n\n/** Popups Changed Event class.\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport class PopupsChangedEvent extends UiEvent<PopupsChangedEventArgs> {}\n\n/** Props for each popup managed by the PopupManager\n * @public\n */\nexport interface PopupPropsBase {\n id: string;\n el: HTMLElement;\n pt: XAndY;\n offset: XAndY;\n}\n\n/** Describes React based content\n * @public\n */\nexport interface ReactContent {\n reactNode: React.ReactNode;\n}\n\n/** Type for Popup Content\n * @public\n */\nexport type PopupContentType = HTMLElement | ReactContent;\n\n/** ReactContent type guard.\n * @internal\n */\nexport const isReactContent = (\n content: PopupContentType\n): content is ReactContent => {\n return (content as ReactContent).reactNode !== undefined;\n};\n\n/** Popup Manager class\n * @public\n */\nexport class PopupManager {\n private static _popups: ReadonlyArray<PopupInfo> = [];\n private static _editorId = \"InputEditor\";\n private static _toolbarId = \"Toolbar\";\n private static _htmlElementId = \"HTMLElement\";\n private static _cardId = \"Card\";\n private static _toolSettingsId = \"ToolSettings\";\n private static _keyPalettePopupId = \"KeyinPalette\";\n\n private static _defaultOffset = { x: 8, y: 8 };\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n public static readonly onPopupsChangedEvent = new PopupsChangedEvent();\n\n public static get popupCount() {\n return this._popups.length;\n }\n public static get popups() {\n return this._popups;\n }\n\n public static set popups(popups: ReadonlyArray<PopupInfo>) {\n if (this._popups === popups) return;\n this._popups = popups;\n this.onPopupsChangedEvent.emit({ popups });\n }\n\n /** @internal */\n public static clearPopups() {\n this.popups = [];\n }\n\n private static addPopup(popupInfo: PopupInfo): void {\n const popups = [...PopupManager._popups, popupInfo];\n this.popups = popups;\n }\n\n private static updatePopup(popupInfo: PopupInfo, itemIndex: number): void {\n if (itemIndex < 0) return;\n\n const popups = [\n ...PopupManager._popups.slice(0, itemIndex),\n popupInfo,\n ...PopupManager._popups.slice(itemIndex + 1),\n ];\n this.popups = popups;\n }\n\n public static addOrUpdatePopup(popupInfo: PopupInfo): void {\n const itemIndex = PopupManager._popups.findIndex(\n (info: PopupInfo) => info.id === popupInfo.id\n );\n if (itemIndex >= 0) PopupManager.updatePopup(popupInfo, itemIndex);\n else PopupManager.addPopup(popupInfo);\n }\n\n public static removePopup(id: string): boolean {\n const index = PopupManager._popups.findIndex(\n (info: PopupInfo) => id === info.id\n );\n let result = true;\n\n if (index >= 0) {\n const popups = PopupManager._popups.filter((info: PopupInfo) => {\n return info.id !== id;\n });\n this.popups = popups;\n } else {\n Logger.logError(\n UiFramework.loggerCategory(\"PopupManager\"),\n `removePopup: Could not find popup with id of '${id}'`\n );\n result = false;\n }\n\n return result;\n }\n\n public static get defaultOffset(): XAndY {\n return PopupManager._defaultOffset;\n }\n public static set defaultOffset(offset: XAndY) {\n PopupManager._defaultOffset = offset;\n }\n\n public static showInputEditor(\n el: HTMLElement,\n pt: XAndY,\n value: Primitives.Value,\n propertyDescription: PropertyDescription,\n onCommit: OnValueCommitFunc,\n onCancel: () => void\n ): boolean {\n const primitiveValue: PrimitiveValue = {\n value,\n valueFormat: PropertyValueFormat.Primitive,\n };\n const record = new PropertyRecord(primitiveValue, propertyDescription);\n const commitHandler = new InputEditorCommitHandler(onCommit);\n const id = PopupManager._editorId;\n const component = (\n <InputEditorPopup\n id={id}\n el={el}\n pt={pt}\n offset={PopupManager.defaultOffset}\n record={record}\n onCancel={onCancel}\n commitHandler={commitHandler}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n parent: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideInputEditor(): boolean {\n return PopupManager.removePopup(PopupManager._editorId);\n }\n\n public static showKeyinPalette(\n keyins: KeyinEntry[],\n el: HTMLElement,\n onItemExecuted?: (item: any) => void,\n onCancel?: () => void\n ): boolean {\n const id = PopupManager._keyPalettePopupId;\n const cancelFn = onCancel ?? (() => PopupManager.hideKeyinPalette());\n const component = (\n <KeyinPalettePopup\n keyins={keyins}\n id={id}\n el={el}\n onItemExecuted={onItemExecuted}\n onCancel={cancelFn}\n />\n );\n\n // since the command palette popup is always at top center of specified HTML element and it does not need to move like\n // cursor popups just set pt to 0,0.\n const pt = { x: 0, y: 0 };\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el?.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideKeyinPalette(): boolean {\n return PopupManager.removePopup(PopupManager._keyPalettePopupId);\n }\n\n /** @deprecated in 4.16.0. Use {@link PopupManager.displayToolbar} instead. */\n public static showToolbar(\n toolbarProps: AbstractToolbarProps,\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n onItemExecuted: (item: any) => void,\n onCancel: () => void,\n relativePosition: RelativePosition\n ): boolean {\n PopupManager.displayToolbar(toolbarProps.items, {\n anchor: el,\n location: pt,\n offset,\n onCancel,\n placement: mapToPlacement(relativePosition),\n onItemExecuted,\n });\n return true;\n }\n\n public static displayToolbar(\n items: ToolbarItem[],\n options: CommonPopupOptions & { onItemExecuted: (item: any) => void }\n ): boolean {\n const id = options.id ?? PopupManager._toolbarId;\n const { anchor, location, offset, onCancel, placement, onItemExecuted } =\n options;\n\n const component = (\n <ToolbarPopup\n id={id}\n el={anchor}\n pt={location}\n offset={offset}\n items={items}\n placement={placement}\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n onItemExecuted={onItemExecuted}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt: location,\n component,\n parentDocument:\n anchor?.ownerDocument ??\n InternalConfigurableUiManager.getWrapperDocument(),\n parent: anchor?.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideToolbar(): boolean {\n return PopupManager.removePopup(PopupManager._toolbarId);\n }\n\n /** @deprecated in 4.16.0. Use {@link PopupManager.showComponent} instead. */\n public static showHTMLElement(\n displayElement: HTMLElement,\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n onCancel: () => void,\n relativePosition: RelativePosition\n ): boolean {\n const id = PopupManager._htmlElementId;\n const component = (\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n <HTMLElementPopup\n id={id}\n el={el}\n pt={pt}\n offset={offset}\n element={displayElement}\n relativePosition={relativePosition}\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n /** @deprecated in 4.16.0. Use {@link PopupManager.hideComponent} instead. */\n public static hideHTMLElement(): boolean {\n return PopupManager.removePopup(PopupManager._htmlElementId);\n }\n\n /**\n * Displays a React component as a popup.\n * @param displayElement The React component to display.\n * @param options for displaying the component.\n */\n public static showComponent(\n displayElement: React.ReactElement,\n options: CommonPopupOptions\n ): boolean {\n const { onCancel, location, offset, placement, anchor, id } = options;\n const _id = PopupManager._htmlElementId;\n\n const component = (\n <ComponentPopup\n id={id ?? _id}\n anchor={anchor ?? undefined}\n pt={location}\n offset={offset}\n placement={placement}\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n >\n {displayElement}\n </ComponentPopup>\n );\n\n const popupInfo: PopupInfo = {\n id: id ?? _id,\n pt: location,\n component,\n parentDocument:\n anchor?.ownerDocument ??\n InternalConfigurableUiManager.getWrapperDocument(),\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideComponent(id?: string): boolean {\n return PopupManager.removePopup(id ?? PopupManager._htmlElementId);\n }\n\n /** @deprecated in 4.16.0. Use {@link PopupManager.displayCard} instead. */\n public static showCard(\n content: PopupContentType,\n title: string | PropertyRecord | undefined,\n toolbarProps: AbstractToolbarProps | undefined,\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n onItemExecuted: (item: any) => void,\n onCancel: () => void,\n relativePosition: RelativePosition\n ): boolean {\n const id = PopupManager._cardId;\n const placement = mapToPlacement(relativePosition);\n const component = (\n <CardPopup\n id={id}\n el={el}\n pt={pt}\n offset={offset}\n content={content}\n title={title}\n items={toolbarProps ? toolbarProps.items : undefined}\n placement={placement}\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n onItemExecuted={onItemExecuted}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n parent: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static displayCard(\n content: React.ReactNode,\n options: DisplayCardPopupOptions\n ): boolean {\n const id = options.id ?? PopupManager._cardId;\n const {\n onCancel,\n location,\n placement,\n offset,\n anchor,\n title,\n toolbarProps,\n onItemExecuted,\n } = options;\n const component = (\n <CardPopup\n id={id}\n el={anchor}\n pt={location}\n offset={offset}\n content={{ reactNode: content }}\n title={title}\n items={toolbarProps?.items}\n placement={placement}\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n onItemExecuted={onItemExecuted}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt: location,\n component,\n parentDocument:\n anchor?.ownerDocument ??\n InternalConfigurableUiManager.getWrapperDocument(),\n parent: anchor?.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideCard(id?: string): boolean {\n const index = PopupManager._popups.findIndex(\n (info: PopupInfo) => id ?? PopupManager._cardId === info.id\n );\n if (index >= 0) return PopupManager.removePopup(PopupManager._cardId);\n return false;\n }\n\n public static openToolSettings(\n dataProvider: DialogLayoutDataProvider,\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n onCancel: () => void,\n relativePosition: RelativePosition\n ): boolean {\n const id = PopupManager._toolSettingsId;\n const component = (\n <ToolSettingsPopup\n id={id}\n el={el}\n pt={pt}\n offset={offset}\n dataProvider={dataProvider}\n relativePosition={relativePosition}\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static closeToolSettings(): boolean {\n return PopupManager.removePopup(PopupManager._toolSettingsId);\n }\n\n public static getPopupPosition(\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n size: SizeProps\n ): Point {\n const containerBounds = Rectangle.create(el.getBoundingClientRect());\n const relativeBounds = Rectangle.createFromSize(size).offset(pt);\n const adjustedPosition: Point = offsetAndContainInContainer(\n relativeBounds,\n containerBounds.getSize(),\n offset\n );\n const position = adjustedPosition.offset(containerBounds.topLeft());\n\n return position;\n }\n}\n\ninterface PopupRendererState {\n parentDocument: Document | null;\n popups: ReadonlyArray<PopupInfo>;\n}\n\n/** Popup Renderer.\n * @public\n */\nexport class PopupRenderer extends React.Component<object, PopupRendererState> {\n /** @internal */\n public static override contextType = WrapperContext;\n /** @internal */\n public declare context: React.ContextType<typeof WrapperContext>;\n\n public override readonly state: PopupRendererState = {\n parentDocument: null,\n popups: PopupManager.popups,\n };\n\n public override componentDidMount(): void {\n Logger.logInfo(\"PopupManager\", `mounting PopupManager`);\n PopupManager.onPopupsChangedEvent.addListener(\n this._handlePopupsChangedEvent\n );\n }\n\n public override componentWillUnmount(): void {\n Logger.logInfo(\"PopupManager\", `un-mounting PopupManager`);\n PopupManager.onPopupsChangedEvent.removeListener(\n this._handlePopupsChangedEvent\n );\n }\n\n private _handleRefSet = (popupDiv: HTMLElement | null) => {\n this.setState({ parentDocument: popupDiv?.ownerDocument ?? null });\n };\n\n public override render(): React.ReactNode {\n if (PopupManager.popupCount <= 0) return null;\n return (\n <div\n className=\"appui-react-popup-render-container\"\n ref={this._handleRefSet}\n >\n {this.state.parentDocument &&\n this.state.popups\n .filter(\n (info) =>\n (info.parent ??\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n info.parentDocument ??\n this.context.ownerDocument) === this.state.parentDocument\n )\n .map((popupInfo: PopupInfo) => {\n return (\n <React.Fragment key={popupInfo.id}>\n {popupInfo.component}\n </React.Fragment>\n );\n })}\n </div>\n );\n }\n\n private _handlePopupsChangedEvent: ListenerType<\n typeof PopupManager.onPopupsChangedEvent\n > = (args) => {\n this.setState({ popups: args.popups });\n };\n}\n"]}
1
+ {"version":3,"file":"PopupManager.js","sourceRoot":"","sources":["../../../src/appui-react/popup/PopupManager.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Popup\n */\nimport * as React from \"react\";\nimport type {\n AbstractToolbarProps,\n DialogLayoutDataProvider,\n OnValueCommitFunc,\n Primitives,\n PrimitiveValue,\n PropertyDescription,\n RelativePosition,\n} from \"@itwin/appui-abstract\";\nimport {\n PropertyRecord,\n PropertyValueFormat,\n UiEvent,\n} from \"@itwin/appui-abstract\";\nimport { Orientation } from \"@itwin/components-react\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport type { XAndY } from \"@itwin/core-geometry\";\nimport type { ListenerType, Point } from \"@itwin/core-react/internal\";\nimport { Rectangle } from \"@itwin/core-react/internal\";\nimport { offsetAndContainInContainer } from \"../layout/popup/Tooltip.js\";\nimport type { KeyinEntry } from \"../keyins/Keyins.js\";\nimport { UiFramework } from \"../UiFramework.js\";\nimport { CardPopup } from \"./CardPopup.js\";\nimport { HTMLElementPopup } from \"./HTMLElementPopup.js\";\nimport {\n InputEditorCommitHandler,\n InputEditorPopup,\n} from \"./InputEditorPopup.js\";\nimport { KeyinPalettePopup } from \"./KeyinPalettePopup.js\";\nimport { ToolbarPopup } from \"./ToolbarPopup.js\";\nimport { ToolSettingsPopup } from \"./ToolSettingsPopup.js\";\nimport { ComponentPopup } from \"./ComponentPopup.js\";\nimport { WrapperContext } from \"../configurableui/ConfigurableUiContent.js\";\nimport { mapToPlacement, type Placement } from \"../utils/Placement.js\";\nimport type { ToolbarItem } from \"../toolbar/ToolbarItem.js\";\nimport type { ToolbarProps } from \"../toolbar/Toolbar.js\";\nimport { InternalConfigurableUiManager } from \"../configurableui/InternalConfigurableUiManager.js\";\nimport type { SizeProps } from \"../utils/SizeProps.js\";\n\n/** Information maintained by PopupManager about a Popup\n * @public\n */\nexport interface PopupInfo {\n id: string;\n pt: XAndY;\n component: React.ReactNode;\n /** @deprecated in 4.11.0. Please use the optional `parent` property moving forward. */\n parentDocument: Document;\n /** will become standard once `parentDocument` is removed. */\n parent?: Document;\n}\n\n/** @internal */\ninterface CommonPopupOptions {\n onCancel: () => void;\n location: XAndY;\n offset: XAndY;\n placement: Placement;\n anchor?: HTMLElement;\n id?: string;\n}\n\ninterface DisplayCardPopupOptions extends CommonPopupOptions {\n title: string | PropertyRecord | undefined;\n toolbarProps?: ToolbarProps;\n onItemExecuted: (item: any) => void;\n}\n\n/**\n * @public\n * @deprecated in 4.13.0. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface PopupsChangedEventArgs {\n popups: ReadonlyArray<PopupInfo>;\n}\n\n/** Popups Changed Event class.\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport class PopupsChangedEvent extends UiEvent<PopupsChangedEventArgs> {}\n\n/** Props for each popup managed by the PopupManager\n * @public\n */\nexport interface PopupPropsBase {\n id: string;\n el: HTMLElement;\n pt: XAndY;\n offset: XAndY;\n}\n\n/** Describes React based content\n * @public\n */\nexport interface ReactContent {\n reactNode: React.ReactNode;\n}\n\n/** Type for Popup Content\n * @public\n */\nexport type PopupContentType = HTMLElement | ReactContent;\n\n/** ReactContent type guard.\n * @internal\n */\nexport const isReactContent = (\n content: PopupContentType\n): content is ReactContent => {\n return (content as ReactContent).reactNode !== undefined;\n};\n\n/** Popup Manager class\n * @public\n */\nexport class PopupManager {\n private static _popups: ReadonlyArray<PopupInfo> = [];\n private static _editorId = \"InputEditor\";\n private static _toolbarId = \"Toolbar\";\n private static _htmlElementId = \"HTMLElement\";\n private static _cardId = \"Card\";\n private static _toolSettingsId = \"ToolSettings\";\n private static _keyPalettePopupId = \"KeyinPalette\";\n\n private static _defaultOffset = { x: 8, y: 8 };\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n public static readonly onPopupsChangedEvent = new PopupsChangedEvent();\n\n public static get popupCount() {\n return this._popups.length;\n }\n public static get popups() {\n return this._popups;\n }\n\n public static set popups(popups: ReadonlyArray<PopupInfo>) {\n if (this._popups === popups) return;\n this._popups = popups;\n this.onPopupsChangedEvent.emit({ popups });\n }\n\n /** @internal */\n public static clearPopups() {\n this.popups = [];\n }\n\n private static addPopup(popupInfo: PopupInfo): void {\n const popups = [...PopupManager._popups, popupInfo];\n this.popups = popups;\n }\n\n private static updatePopup(popupInfo: PopupInfo, itemIndex: number): void {\n if (itemIndex < 0) return;\n\n const popups = [\n ...PopupManager._popups.slice(0, itemIndex),\n popupInfo,\n ...PopupManager._popups.slice(itemIndex + 1),\n ];\n this.popups = popups;\n }\n\n public static addOrUpdatePopup(popupInfo: PopupInfo): void {\n const itemIndex = PopupManager._popups.findIndex(\n (info: PopupInfo) => info.id === popupInfo.id\n );\n if (itemIndex >= 0) PopupManager.updatePopup(popupInfo, itemIndex);\n else PopupManager.addPopup(popupInfo);\n }\n\n public static removePopup(id: string): boolean {\n const index = PopupManager._popups.findIndex(\n (info: PopupInfo) => id === info.id\n );\n let result = true;\n\n if (index >= 0) {\n const popups = PopupManager._popups.filter((info: PopupInfo) => {\n return info.id !== id;\n });\n this.popups = popups;\n } else {\n Logger.logError(\n UiFramework.loggerCategory(\"PopupManager\"),\n `removePopup: Could not find popup with id of '${id}'`\n );\n result = false;\n }\n\n return result;\n }\n\n public static get defaultOffset(): XAndY {\n return PopupManager._defaultOffset;\n }\n public static set defaultOffset(offset: XAndY) {\n PopupManager._defaultOffset = offset;\n }\n\n public static showInputEditor(\n el: HTMLElement,\n pt: XAndY,\n value: Primitives.Value,\n propertyDescription: PropertyDescription,\n onCommit: OnValueCommitFunc,\n onCancel: () => void\n ): boolean {\n const primitiveValue: PrimitiveValue = {\n value,\n valueFormat: PropertyValueFormat.Primitive,\n };\n const record = new PropertyRecord(primitiveValue, propertyDescription);\n const commitHandler = new InputEditorCommitHandler(onCommit);\n const id = PopupManager._editorId;\n const component = (\n <InputEditorPopup\n id={id}\n el={el}\n pt={pt}\n offset={PopupManager.defaultOffset}\n record={record}\n onCancel={onCancel}\n commitHandler={commitHandler}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n parent: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideInputEditor(): boolean {\n return PopupManager.removePopup(PopupManager._editorId);\n }\n\n public static showKeyinPalette(\n keyins: KeyinEntry[],\n el: HTMLElement,\n onItemExecuted?: (item: any) => void,\n onCancel?: () => void\n ): boolean {\n const id = PopupManager._keyPalettePopupId;\n const cancelFn = onCancel ?? (() => PopupManager.hideKeyinPalette());\n const component = (\n <KeyinPalettePopup\n keyins={keyins}\n id={id}\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n el={el}\n onItemExecuted={onItemExecuted}\n onCancel={cancelFn}\n />\n );\n\n // since the command palette popup is always at top center of specified HTML element and it does not need to move like\n // cursor popups just set pt to 0,0.\n const pt = { x: 0, y: 0 };\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el?.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideKeyinPalette(): boolean {\n return PopupManager.removePopup(PopupManager._keyPalettePopupId);\n }\n\n /** @deprecated in 4.16.0. Use {@link PopupManager.displayToolbar} instead. */\n public static showToolbar(\n toolbarProps: AbstractToolbarProps,\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n onItemExecuted: (item: any) => void,\n onCancel: () => void,\n relativePosition: RelativePosition\n ): boolean {\n PopupManager.displayToolbar(toolbarProps.items, {\n anchor: el,\n location: pt,\n offset,\n onCancel,\n placement: mapToPlacement(relativePosition),\n onItemExecuted,\n });\n return true;\n }\n\n public static displayToolbar(\n items: ToolbarItem[],\n options: CommonPopupOptions & { onItemExecuted: (item: any) => void }\n ): boolean {\n const id = options.id ?? PopupManager._toolbarId;\n const { anchor, location, offset, onCancel, placement, onItemExecuted } =\n options;\n\n const component = (\n <ToolbarPopup\n id={id}\n el={anchor}\n pt={location}\n offset={offset}\n items={items}\n placement={placement}\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n onItemExecuted={onItemExecuted}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt: location,\n component,\n parentDocument:\n anchor?.ownerDocument ??\n InternalConfigurableUiManager.getWrapperDocument(),\n parent: anchor?.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideToolbar(): boolean {\n return PopupManager.removePopup(PopupManager._toolbarId);\n }\n\n /** @deprecated in 4.16.0. Use {@link PopupManager.showComponent} instead. */\n public static showHTMLElement(\n displayElement: HTMLElement,\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n onCancel: () => void,\n relativePosition: RelativePosition\n ): boolean {\n const id = PopupManager._htmlElementId;\n const component = (\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n <HTMLElementPopup\n id={id}\n el={el}\n pt={pt}\n offset={offset}\n element={displayElement}\n relativePosition={relativePosition}\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n /** @deprecated in 4.16.0. Use {@link PopupManager.hideComponent} instead. */\n public static hideHTMLElement(): boolean {\n return PopupManager.removePopup(PopupManager._htmlElementId);\n }\n\n /**\n * Displays a React component as a popup.\n * @param displayElement The React component to display.\n * @param options for displaying the component.\n */\n public static showComponent(\n displayElement: React.ReactElement,\n options: CommonPopupOptions\n ): boolean {\n const { onCancel, location, offset, placement, anchor, id } = options;\n const _id = PopupManager._htmlElementId;\n\n const component = (\n <ComponentPopup\n id={id ?? _id}\n anchor={anchor ?? undefined}\n pt={location}\n offset={offset}\n placement={placement}\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n >\n {displayElement}\n </ComponentPopup>\n );\n\n const popupInfo: PopupInfo = {\n id: id ?? _id,\n pt: location,\n component,\n parentDocument:\n anchor?.ownerDocument ??\n InternalConfigurableUiManager.getWrapperDocument(),\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideComponent(id?: string): boolean {\n return PopupManager.removePopup(id ?? PopupManager._htmlElementId);\n }\n\n /** @deprecated in 4.16.0. Use {@link PopupManager.displayCard} instead. */\n public static showCard(\n content: PopupContentType,\n title: string | PropertyRecord | undefined,\n toolbarProps: AbstractToolbarProps | undefined,\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n onItemExecuted: (item: any) => void,\n onCancel: () => void,\n relativePosition: RelativePosition\n ): boolean {\n const id = PopupManager._cardId;\n const placement = mapToPlacement(relativePosition);\n const component = (\n <CardPopup\n id={id}\n el={el}\n pt={pt}\n offset={offset}\n content={content}\n title={title}\n items={toolbarProps ? toolbarProps.items : undefined}\n placement={placement}\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n onItemExecuted={onItemExecuted}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n parent: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static displayCard(\n content: React.ReactNode,\n options: DisplayCardPopupOptions\n ): boolean {\n const id = options.id ?? PopupManager._cardId;\n const {\n onCancel,\n location,\n placement,\n offset,\n anchor,\n title,\n toolbarProps,\n onItemExecuted,\n } = options;\n const component = (\n <CardPopup\n id={id}\n el={anchor}\n pt={location}\n offset={offset}\n content={{ reactNode: content }}\n title={title}\n items={toolbarProps?.items}\n placement={placement}\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n onItemExecuted={onItemExecuted}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt: location,\n component,\n parentDocument:\n anchor?.ownerDocument ??\n InternalConfigurableUiManager.getWrapperDocument(),\n parent: anchor?.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideCard(id?: string): boolean {\n const index = PopupManager._popups.findIndex(\n (info: PopupInfo) => id ?? PopupManager._cardId === info.id\n );\n if (index >= 0) return PopupManager.removePopup(PopupManager._cardId);\n return false;\n }\n\n public static openToolSettings(\n dataProvider: DialogLayoutDataProvider,\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n onCancel: () => void,\n relativePosition: RelativePosition\n ): boolean {\n const id = PopupManager._toolSettingsId;\n const component = (\n <ToolSettingsPopup\n id={id}\n el={el}\n pt={pt}\n offset={offset}\n dataProvider={dataProvider}\n relativePosition={relativePosition}\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static closeToolSettings(): boolean {\n return PopupManager.removePopup(PopupManager._toolSettingsId);\n }\n\n public static getPopupPosition(\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n size: SizeProps\n ): Point {\n const containerBounds = Rectangle.create(el.getBoundingClientRect());\n const relativeBounds = Rectangle.createFromSize(size).offset(pt);\n const adjustedPosition: Point = offsetAndContainInContainer(\n relativeBounds,\n containerBounds.getSize(),\n offset\n );\n const position = adjustedPosition.offset(containerBounds.topLeft());\n\n return position;\n }\n}\n\ninterface PopupRendererState {\n parentDocument: Document | null;\n popups: ReadonlyArray<PopupInfo>;\n}\n\n/** Popup Renderer.\n * @public\n */\nexport class PopupRenderer extends React.Component<object, PopupRendererState> {\n /** @internal */\n public static override contextType = WrapperContext;\n /** @internal */\n public declare context: React.ContextType<typeof WrapperContext>;\n\n public override readonly state: PopupRendererState = {\n parentDocument: null,\n popups: PopupManager.popups,\n };\n\n public override componentDidMount(): void {\n Logger.logInfo(\"PopupManager\", `mounting PopupManager`);\n PopupManager.onPopupsChangedEvent.addListener(\n this._handlePopupsChangedEvent\n );\n }\n\n public override componentWillUnmount(): void {\n Logger.logInfo(\"PopupManager\", `un-mounting PopupManager`);\n PopupManager.onPopupsChangedEvent.removeListener(\n this._handlePopupsChangedEvent\n );\n }\n\n private _handleRefSet = (popupDiv: HTMLElement | null) => {\n this.setState({ parentDocument: popupDiv?.ownerDocument ?? null });\n };\n\n public override render(): React.ReactNode {\n if (PopupManager.popupCount <= 0) return null;\n return (\n <div\n className=\"appui-react-popup-render-container\"\n ref={this._handleRefSet}\n >\n {this.state.parentDocument &&\n this.state.popups\n .filter(\n (info) =>\n (info.parent ??\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n info.parentDocument ??\n this.context.ownerDocument) === this.state.parentDocument\n )\n .map((popupInfo: PopupInfo) => {\n return (\n <React.Fragment key={popupInfo.id}>\n {popupInfo.component}\n </React.Fragment>\n );\n })}\n </div>\n );\n }\n\n private _handlePopupsChangedEvent: ListenerType<\n typeof PopupManager.onPopupsChangedEvent\n > = (args) => {\n this.setState({ popups: args.popups });\n };\n}\n"]}
@@ -53,6 +53,16 @@ interface KnownPreviewFeatures {
53
53
  * Discuss or upvote this feature: https://github.com/iTwin/appui/discussions/859
54
54
  */
55
55
  controlWidgetVisibility: boolean | WidgetDef["id"][];
56
+ /**
57
+ * If `true`, the tool settings will be using the new editor API. The new system delivers same default editors as the old one.
58
+ * However, in order to use custom editors they need to be provided using `EditorsRegistryProvider` component.
59
+ */
60
+ toolSettingsNewEditors: boolean;
61
+ /**
62
+ * If `true`, the default tool settings lock editor will be rendered as an icon button rather than a checkbox.
63
+ * Consumers can still use a custom component to render the lock by customizing the `PropertyDescription`.
64
+ */
65
+ toolSettingsLockButton: boolean;
56
66
  }
57
67
  /** List of preview features that can be enabled/disabled.
58
68
  * This list is expected to change over time, the interface is made
@@ -1 +1 @@
1
- {"version":3,"file":"PreviewFeatures.d.ts","sourceRoot":"","sources":["../../../src/appui-react/preview/PreviewFeatures.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAGzD,sCAAsC;AACtC,UAAU,oBAAoB;IAC5B;;;;OAIG;IACH,oBAAoB,EAAE,OAAO,CAAC;IAC9B;;;OAGG;IACH,6BAA6B,EAAE,OAAO,CAAC;IACvC;;;OAGG;IACH,0BAA0B,EAAE,OAAO,CAAC;IACpC;;;OAGG;IACH,wBAAwB,EAAE,OAAO,CAAC;IAClC;;;OAGG;IACH,oBAAoB,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C;;;OAGG;IACH,wCAAwC,EAAE,OAAO,CAAC;IAClD;;;;;;OAMG;IACH,qBAAqB,EAAE,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;IACnD;;;;;OAKG;IACH,uBAAuB,EAAE,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;CACtD;AAgBD;;;;;GAKG;AACH,MAAM,WAAW,eAAgB,SAAQ,OAAO,CAAC,oBAAoB,CAAC;IACpE,CAAC,WAAW,EAAE,MAAM,GAAG,GAAG,CAAC;CAC5B;AAuDD;;GAEG;AACH,wBAAgB,kBAAkB,oBAEjC;AAED;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,QAAQ,EACR,QAAQ,GACT,EAAE,4BAA4B,qBAgB9B"}
1
+ {"version":3,"file":"PreviewFeatures.d.ts","sourceRoot":"","sources":["../../../src/appui-react/preview/PreviewFeatures.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAGzD,sCAAsC;AACtC,UAAU,oBAAoB;IAC5B;;;;OAIG;IACH,oBAAoB,EAAE,OAAO,CAAC;IAC9B;;;OAGG;IACH,6BAA6B,EAAE,OAAO,CAAC;IACvC;;;OAGG;IACH,0BAA0B,EAAE,OAAO,CAAC;IACpC;;;OAGG;IACH,wBAAwB,EAAE,OAAO,CAAC;IAClC;;;OAGG;IACH,oBAAoB,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C;;;OAGG;IACH,wCAAwC,EAAE,OAAO,CAAC;IAClD;;;;;;OAMG;IACH,qBAAqB,EAAE,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;IACnD;;;;;OAKG;IACH,uBAAuB,EAAE,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;IACrD;;;OAGG;IACH,sBAAsB,EAAE,OAAO,CAAC;IAChC;;;OAGG;IACH,sBAAsB,EAAE,OAAO,CAAC;CACjC;AAkBD;;;;;GAKG;AACH,MAAM,WAAW,eAAgB,SAAQ,OAAO,CAAC,oBAAoB,CAAC;IACpE,CAAC,WAAW,EAAE,MAAM,GAAG,GAAG,CAAC;CAC5B;AAuDD;;GAEG;AACH,wBAAgB,kBAAkB,oBAEjC;AAED;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,QAAQ,EACR,QAAQ,GACT,EAAE,4BAA4B,qBAgB9B"}
@@ -21,6 +21,8 @@ const knownFeaturesObject = {
21
21
  allowBearingLettersInAccuDrawInputFields: undefined,
22
22
  reparentPopoutWidgets: undefined,
23
23
  controlWidgetVisibility: undefined,
24
+ toolSettingsNewEditors: undefined,
25
+ toolSettingsLockButton: undefined,
24
26
  };
25
27
  /** Trim an object to only contain known feature keys.
26
28
  * @param previewFeatures object potentially containing unknown features
@@ -1 +1 @@
1
- {"version":3,"file":"PreviewFeatures.js","sourceRoot":"","sources":["../../../src/appui-react/preview/PreviewFeatures.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Utilities\n */\n\nimport * as React from \"react\";\nimport { create } from \"zustand\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport { UiFramework } from \"../UiFramework.js\";\nimport type { useTransientState } from \"../widget-panels/useTransientState.js\";\nimport type { WidgetDef } from \"../widgets/WidgetDef.js\";\nimport type { UiItemsManager } from \"../ui-items-provider/UiItemsManager.js\";\n\n/** List of known preview features. */\ninterface KnownPreviewFeatures {\n /** If `true`, the panels and tool settings will always be rendered over the content.\n * The content will never change size.\n *\n * Discuss or upvote this feature: https://github.com/iTwin/appui/discussions/672\n */\n contentAlwaysMaxSize: boolean;\n /** If `true`, the floating widget will have a \"maximize\" button. Use `enableMaximizedPanelWidget` to enable the feature for panel widgets.\n *\n * Discuss or upvote this feature: https://github.com/iTwin/appui/discussions/673\n */\n enableMaximizedFloatingWidget: boolean;\n /** If `true`, the panel widget will have a \"maximize\" button. Use `enableMaximizedFloatingWidget` to enable the feature for floating widgets.\n *\n * Discuss or upvote this feature: https://github.com/iTwin/appui/discussions/673\n */\n enableMaximizedPanelWidget: boolean;\n /** If `true`, the horizontal panels will have an additional \"Align\" button.\n *\n * Discuss or upvote this feature: https://github.com/iTwin/appui/discussions/706\n */\n horizontalPanelAlignment: boolean;\n /** If enabled, a dropdown menu will be rendered for widgets that exceed the specified threshold of title bar buttons.\n *\n * Discuss or upvote this feature: https://github.com/iTwin/appui/discussions/723\n */\n widgetActionDropdown: { threshold: number };\n /** If `true`, the accudraw input field will accept some letters for bearing angle. Defaults to `false`.\n *\n * This allows to type letters for Bearing angles in the accudraw input field. (N, S, E, W)\n */\n allowBearingLettersInAccuDrawInputFields: boolean;\n /** If `true`, popout widgets will not be rendered in a separate element tree, instead widget content will be re-parented to a popout content container.\n * Alternatively, an array of widget ids can be specified to only re-parent specific widgets.\n * @note Use {@link useTransientState} to save and restore DOM transient state when re-parenting widgets.\n * @note There is a known limitation where iTwinUI v2 popover elements will be rendered in the main window. Prefer using iTwinUI v3 when using this feature.\n *\n * Discuss or upvote this feature: https://github.com/iTwin/appui/discussions/925\n */\n reparentPopoutWidgets: boolean | WidgetDef[\"id\"][];\n /** If `true`, additional UI elements are rendered to allow the end user of the layout to control widget visibility.\n * Alternatively, an array of widget ids can be specified to only control specific widgets.\n * @note Use {@link UiItemsManager} APIs to manage what widgets are available to the end-user.\n *\n * Discuss or upvote this feature: https://github.com/iTwin/appui/discussions/859\n */\n controlWidgetVisibility: boolean | WidgetDef[\"id\"][];\n}\n\n/** Object used trim to only known features at runtime.\n * @internal\n */\nconst knownFeaturesObject: Record<keyof KnownPreviewFeatures, undefined> = {\n contentAlwaysMaxSize: undefined,\n enableMaximizedFloatingWidget: undefined,\n enableMaximizedPanelWidget: undefined,\n horizontalPanelAlignment: undefined,\n widgetActionDropdown: undefined,\n allowBearingLettersInAccuDrawInputFields: undefined,\n reparentPopoutWidgets: undefined,\n controlWidgetVisibility: undefined,\n};\n\n/** List of preview features that can be enabled/disabled.\n * This list is expected to change over time, the interface is made\n * so that new features can be added or removed without breaking existing code.\n * A console warning will simply appear if unknown features are passed.\n * @beta\n */\nexport interface PreviewFeatures extends Partial<KnownPreviewFeatures> {\n [featureName: string]: any;\n}\n\n/** Trim an object to only contain known feature keys.\n * @param previewFeatures object potentially containing unknown features\n * @returns object containing only known features\n * @internal\n */\nfunction trimToKnownFeaturesOnly(previewFeatures: PreviewFeatures) {\n const knownFeatureKeys = Object.keys(knownFeaturesObject);\n const [knownFeatures, unknownFeatures] = Object.entries(\n previewFeatures\n ).reduce(\n ([known, unknown], [key, value]) => {\n if (knownFeatureKeys.includes(key)) {\n known[key] = value;\n } else {\n unknown.push(key);\n }\n return [known, unknown];\n },\n [{}, []] as [PreviewFeatures, string[]]\n );\n if (Object.keys(unknownFeatures).length > 0) {\n Logger.logWarning(\n UiFramework.loggerCategory(\"trimToKnownFeaturesOnly\"),\n `Features used in \"setPreviewFeatures\" are unknown or no longer in preview`,\n {\n unknownFeatures,\n }\n );\n }\n return knownFeatures;\n}\n\ninterface PreviewFeaturesState {\n previewFeatures: PreviewFeatures;\n setPreviewFeatures: (previewFeatures: PreviewFeatures) => void;\n}\n\n/** Preview features store used by `UiFramework.previewFeatures` and `UiFramework.setPreviewFeatures()` APIs to manage the preview features.\n * Use `usePreviewFeatures` hook to access the preview features set from a react component.\n * Use `usePreviewFeaturesStore.getState().previewFeatures` to access the preview features set from a non-react component.\n * Use `usePreviewFeaturesStore.subscribe()` to subscribe to changes to the preview features set from a non-react component.\n * @internal\n */\nconst usePreviewFeaturesStore = create<PreviewFeaturesState>((set) => {\n return {\n previewFeatures: {},\n setPreviewFeatures: (newPreviewFeatures: PreviewFeatures) => {\n const previewFeatures = trimToKnownFeaturesOnly(newPreviewFeatures);\n set({ previewFeatures });\n },\n };\n});\n\n/** Hook to access the preview features set.\n * @internal\n */\nexport function usePreviewFeatures() {\n return usePreviewFeaturesStore((state) => state.previewFeatures);\n}\n\n/** Props for PreviewFeaturesProvider.\n * @beta\n */\nexport interface PreviewFeaturesProviderProps {\n children?: React.ReactNode;\n features?: PreviewFeatures;\n}\n\n/** Set which preview features are enabled. These features are not yet ready for production use nor have\n * a proper API defined yet.\n * The available set of features are defined in the [[PreviewFeatures]] interface.\n *\n * This component should wrap the Provider component.\n *\n * ```tsx\n * <PreviewFeaturesProvider features={{ enableMaximizedFloatingWidget: true }}>\n * <Provider store={UiFramework.store}>\n * [...]\n * <ConfigurableUIContent />\n * [/...]\n * </Provider>\n * </PreviewFeaturesProvider>\n * ```\n * @beta\n */\nexport function PreviewFeaturesProvider({\n children,\n features,\n}: PreviewFeaturesProviderProps) {\n const setPreviewFeatures = usePreviewFeaturesStore(\n (state) => state.setPreviewFeatures\n );\n React.useEffect(() => {\n setPreviewFeatures(features ?? {});\n }, [features, setPreviewFeatures]);\n\n // Clear preview features when unmounting.\n React.useEffect(\n () => () => {\n setPreviewFeatures({});\n },\n [setPreviewFeatures]\n );\n return <>{children}</>;\n}\n"]}
1
+ {"version":3,"file":"PreviewFeatures.js","sourceRoot":"","sources":["../../../src/appui-react/preview/PreviewFeatures.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Utilities\n */\n\nimport * as React from \"react\";\nimport { create } from \"zustand\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport { UiFramework } from \"../UiFramework.js\";\nimport type { useTransientState } from \"../widget-panels/useTransientState.js\";\nimport type { WidgetDef } from \"../widgets/WidgetDef.js\";\nimport type { UiItemsManager } from \"../ui-items-provider/UiItemsManager.js\";\n\n/** List of known preview features. */\ninterface KnownPreviewFeatures {\n /** If `true`, the panels and tool settings will always be rendered over the content.\n * The content will never change size.\n *\n * Discuss or upvote this feature: https://github.com/iTwin/appui/discussions/672\n */\n contentAlwaysMaxSize: boolean;\n /** If `true`, the floating widget will have a \"maximize\" button. Use `enableMaximizedPanelWidget` to enable the feature for panel widgets.\n *\n * Discuss or upvote this feature: https://github.com/iTwin/appui/discussions/673\n */\n enableMaximizedFloatingWidget: boolean;\n /** If `true`, the panel widget will have a \"maximize\" button. Use `enableMaximizedFloatingWidget` to enable the feature for floating widgets.\n *\n * Discuss or upvote this feature: https://github.com/iTwin/appui/discussions/673\n */\n enableMaximizedPanelWidget: boolean;\n /** If `true`, the horizontal panels will have an additional \"Align\" button.\n *\n * Discuss or upvote this feature: https://github.com/iTwin/appui/discussions/706\n */\n horizontalPanelAlignment: boolean;\n /** If enabled, a dropdown menu will be rendered for widgets that exceed the specified threshold of title bar buttons.\n *\n * Discuss or upvote this feature: https://github.com/iTwin/appui/discussions/723\n */\n widgetActionDropdown: { threshold: number };\n /** If `true`, the accudraw input field will accept some letters for bearing angle. Defaults to `false`.\n *\n * This allows to type letters for Bearing angles in the accudraw input field. (N, S, E, W)\n */\n allowBearingLettersInAccuDrawInputFields: boolean;\n /** If `true`, popout widgets will not be rendered in a separate element tree, instead widget content will be re-parented to a popout content container.\n * Alternatively, an array of widget ids can be specified to only re-parent specific widgets.\n * @note Use {@link useTransientState} to save and restore DOM transient state when re-parenting widgets.\n * @note There is a known limitation where iTwinUI v2 popover elements will be rendered in the main window. Prefer using iTwinUI v3 when using this feature.\n *\n * Discuss or upvote this feature: https://github.com/iTwin/appui/discussions/925\n */\n reparentPopoutWidgets: boolean | WidgetDef[\"id\"][];\n /** If `true`, additional UI elements are rendered to allow the end user of the layout to control widget visibility.\n * Alternatively, an array of widget ids can be specified to only control specific widgets.\n * @note Use {@link UiItemsManager} APIs to manage what widgets are available to the end-user.\n *\n * Discuss or upvote this feature: https://github.com/iTwin/appui/discussions/859\n */\n controlWidgetVisibility: boolean | WidgetDef[\"id\"][];\n /**\n * If `true`, the tool settings will be using the new editor API. The new system delivers same default editors as the old one.\n * However, in order to use custom editors they need to be provided using `EditorsRegistryProvider` component.\n */\n toolSettingsNewEditors: boolean;\n /**\n * If `true`, the default tool settings lock editor will be rendered as an icon button rather than a checkbox.\n * Consumers can still use a custom component to render the lock by customizing the `PropertyDescription`.\n */\n toolSettingsLockButton: boolean;\n}\n\n/** Object used trim to only known features at runtime.\n * @internal\n */\nconst knownFeaturesObject: Record<keyof KnownPreviewFeatures, undefined> = {\n contentAlwaysMaxSize: undefined,\n enableMaximizedFloatingWidget: undefined,\n enableMaximizedPanelWidget: undefined,\n horizontalPanelAlignment: undefined,\n widgetActionDropdown: undefined,\n allowBearingLettersInAccuDrawInputFields: undefined,\n reparentPopoutWidgets: undefined,\n controlWidgetVisibility: undefined,\n toolSettingsNewEditors: undefined,\n toolSettingsLockButton: undefined,\n};\n\n/** List of preview features that can be enabled/disabled.\n * This list is expected to change over time, the interface is made\n * so that new features can be added or removed without breaking existing code.\n * A console warning will simply appear if unknown features are passed.\n * @beta\n */\nexport interface PreviewFeatures extends Partial<KnownPreviewFeatures> {\n [featureName: string]: any;\n}\n\n/** Trim an object to only contain known feature keys.\n * @param previewFeatures object potentially containing unknown features\n * @returns object containing only known features\n * @internal\n */\nfunction trimToKnownFeaturesOnly(previewFeatures: PreviewFeatures) {\n const knownFeatureKeys = Object.keys(knownFeaturesObject);\n const [knownFeatures, unknownFeatures] = Object.entries(\n previewFeatures\n ).reduce(\n ([known, unknown], [key, value]) => {\n if (knownFeatureKeys.includes(key)) {\n known[key] = value;\n } else {\n unknown.push(key);\n }\n return [known, unknown];\n },\n [{}, []] as [PreviewFeatures, string[]]\n );\n if (Object.keys(unknownFeatures).length > 0) {\n Logger.logWarning(\n UiFramework.loggerCategory(\"trimToKnownFeaturesOnly\"),\n `Features used in \"setPreviewFeatures\" are unknown or no longer in preview`,\n {\n unknownFeatures,\n }\n );\n }\n return knownFeatures;\n}\n\ninterface PreviewFeaturesState {\n previewFeatures: PreviewFeatures;\n setPreviewFeatures: (previewFeatures: PreviewFeatures) => void;\n}\n\n/** Preview features store used by `UiFramework.previewFeatures` and `UiFramework.setPreviewFeatures()` APIs to manage the preview features.\n * Use `usePreviewFeatures` hook to access the preview features set from a react component.\n * Use `usePreviewFeaturesStore.getState().previewFeatures` to access the preview features set from a non-react component.\n * Use `usePreviewFeaturesStore.subscribe()` to subscribe to changes to the preview features set from a non-react component.\n * @internal\n */\nconst usePreviewFeaturesStore = create<PreviewFeaturesState>((set) => {\n return {\n previewFeatures: {},\n setPreviewFeatures: (newPreviewFeatures: PreviewFeatures) => {\n const previewFeatures = trimToKnownFeaturesOnly(newPreviewFeatures);\n set({ previewFeatures });\n },\n };\n});\n\n/** Hook to access the preview features set.\n * @internal\n */\nexport function usePreviewFeatures() {\n return usePreviewFeaturesStore((state) => state.previewFeatures);\n}\n\n/** Props for PreviewFeaturesProvider.\n * @beta\n */\nexport interface PreviewFeaturesProviderProps {\n children?: React.ReactNode;\n features?: PreviewFeatures;\n}\n\n/** Set which preview features are enabled. These features are not yet ready for production use nor have\n * a proper API defined yet.\n * The available set of features are defined in the [[PreviewFeatures]] interface.\n *\n * This component should wrap the Provider component.\n *\n * ```tsx\n * <PreviewFeaturesProvider features={{ enableMaximizedFloatingWidget: true }}>\n * <Provider store={UiFramework.store}>\n * [...]\n * <ConfigurableUIContent />\n * [/...]\n * </Provider>\n * </PreviewFeaturesProvider>\n * ```\n * @beta\n */\nexport function PreviewFeaturesProvider({\n children,\n features,\n}: PreviewFeaturesProviderProps) {\n const setPreviewFeatures = usePreviewFeaturesStore(\n (state) => state.setPreviewFeatures\n );\n React.useEffect(() => {\n setPreviewFeatures(features ?? {});\n }, [features, setPreviewFeatures]);\n\n // Clear preview features when unmounting.\n React.useEffect(\n () => () => {\n setPreviewFeatures({});\n },\n [setPreviewFeatures]\n );\n return <>{children}</>;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"PreviewHorizontalPanelAlign.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/preview/horizontal-panel-alignment/PreviewHorizontalPanelAlign.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAMxD,OAAO,KAAK,EACV,mBAAmB,EACnB,SAAS,EACV,MAAM,0CAA0C,CAAC;AAYlD,gBAAgB;AAChB,eAAO,MAAM,2BAA2B;aAC7B,OAAO;gBACJ,GACT,IAA2B,IAAnB,mBAAmB,GAAG,mBAAmB,GACnD;kBACa,CACZ,KAAK,EAAE,SAAS,GAAG,SAAS,EAC5B,SAAS,EAAE,mBAAmB,KAC3B,IAAI;EAKT,CAAC;AAEH;;GAEG;AACH,wBAAgB,0CAA0C,CAAC,EACzD,OAAO,EACP,QAAQ,GACT,EAAE;IACD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,qBA6BA;AAiED,gBAAgB;AAChB,wBAAgB,iCAAiC,sBAgDhD;AAED,gBAAgB;AAChB,wBAAgB,6BAA6B,YAW5C"}
1
+ {"version":3,"file":"PreviewHorizontalPanelAlign.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/preview/horizontal-panel-alignment/PreviewHorizontalPanelAlign.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAMxD,OAAO,KAAK,EACV,mBAAmB,EACnB,SAAS,EACV,MAAM,0CAA0C,CAAC;AAYlD,gBAAgB;AAChB,eAAO,MAAM,2BAA2B;aAC7B,OAAO;gBACJ,GACT,IAA2B,IAAnB,mBAAmB,GAAG,mBAAmB,GACnD;kBACa,CACZ,KAAK,EAAE,SAAS,GAAG,SAAS,EAC5B,SAAS,EAAE,mBAAmB,KAC3B,IAAI;EAKT,CAAC;AAEH;;GAEG;AACH,wBAAgB,0CAA0C,CAAC,EACzD,OAAO,EACP,QAAQ,GACT,EAAE;IACD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,qBA6BA;AAiED,gBAAgB;AAChB,wBAAgB,iCAAiC,sBAkDhD;AAED,gBAAgB;AAChB,wBAAgB,6BAA6B,YAW5C"}
@@ -93,11 +93,17 @@ export function PreviewHorizontalPanelAlignButton() {
93
93
  return (React.createElement(MenuItem, { key: align, onClick: () => {
94
94
  setAlignment(side, align);
95
95
  onClose?.();
96
- }, icon: getIcon(side, align), isSelected: alignments[side] === align }, capitalize(align)));
96
+ },
97
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
98
+ icon: getIcon(side, align), isSelected: alignments[side] === align }, capitalize(align)));
97
99
  });
98
100
  const dropdownContext = React.useContext(WidgetActionDropdownContext);
99
101
  if (dropdownContext !== undefined) {
100
- return (React.createElement(MenuItem, { icon: getIcon(side, alignments[side]), subMenuItems: getMenuItems(dropdownContext.onClose) }, label));
102
+ return (React.createElement(MenuItem
103
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
104
+ , {
105
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
106
+ icon: getIcon(side, alignments[side]), subMenuItems: getMenuItems(dropdownContext.onClose) }, label));
101
107
  }
102
108
  return (React.createElement(DropdownMenu, { menuItems: (close) => getMenuItems(close) },
103
109
  React.createElement(TabBarButton, { label: label }, getIcon(side, alignments[side]))));
@@ -1 +1 @@
1
- {"version":3,"file":"PreviewHorizontalPanelAlign.js","sourceRoot":"","sources":["../../../../src/appui-react/preview/horizontal-panel-alignment/PreviewHorizontalPanelAlign.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EACL,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,qCAAqC,CAAC;AAK7C,OAAO,EAAE,2BAA2B,EAAE,MAAM,yCAAyC,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AAExF,wDAAwD;AACxD,MAAM,iBAAiB,GAAG;IACxB,GAAG,EAAE,mBAAmB,CAAC,OAAO,EAAE,uDAAuD;IACzF,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,uDAAuD;CAC7F,CAAC;AAEF,gBAAgB;AAChB,MAAM,CAAC,MAAM,2BAA2B,GAAG,KAAK,CAAC,aAAa,CAS3D;IACD,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,iBAAiB;IAC7B,YAAY,EAAE,GAAG,EAAE,GAAE,CAAC;CACvB,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,UAAU,0CAA0C,CAAC,EACzD,OAAO,EACP,QAAQ,GAIT;IACC,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,KAAK,CAAC,QAAQ,CAE/C;QACD,GAAG,EAAE,mBAAmB,CAAC,OAAO,EAAE,uDAAuD;QACzF,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,uDAAuD;KAC7F,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW;IACpC,4DAA4D;IAC5D,CAAC,KAA4B,EAAE,SAA8B,EAAE,EAAE;QAC/D,IAAI,CAAC,KAAK,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;YAAE,OAAO;QACpD,aAAa,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACvB,GAAG,IAAI;YACP,CAAC,KAAK,CAAC,EAAE,SAAS;SACnB,CAAC,CAAC,CAAC;IACN,CAAC,EACD,EAAE,CACH,CAAC;IACF,OAAO,CACL,oBAAC,2BAA2B,CAAC,QAAQ,IACnC,KAAK,EAAE;YACL,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,iBAAiB;YACpD,YAAY;SACb,IAEA,QAAQ,CAC4B,CACxC,CAAC;AACJ,CAAC;AAED,SAAS,OAAO,CAAC,KAAoC;IACnD,OAAO,CACL,6BACE,KAAK,EAAC,4BAA4B,EAClC,KAAK,EAAC,MAAM,EACZ,MAAM,EAAC,MAAM,EACb,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,2CAA2C,KAC5C,KAAK;QAET,8BAAM,CAAC,EAAC,+CAA+C,GAAG,CACtD,CACP,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,KAAoC;IACtD,OAAO,CACL,6BACE,KAAK,EAAC,4BAA4B,EAClC,KAAK,EAAC,MAAM,EACZ,MAAM,EAAC,MAAM,EACb,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,2CAA2C,KAC5C,KAAK;QAET,8BAAM,CAAC,EAAC,0DAA0D,GAAG,CACjE,CACP,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,KAAoC;IACrD,OAAO,CACL,6BACE,KAAK,EAAC,4BAA4B,EAClC,KAAK,EAAC,MAAM,EACZ,MAAM,EAAC,MAAM,EACb,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,2CAA2C,KAC5C,KAAK;QAET,8BAAM,CAAC,EAAC,6DAA6D,GAAG,CACpE,CACP,CAAC;AACJ,CAAC;AAED,4DAA4D;AAC5D,SAAS,OAAO,CAAC,IAAyB,EAAE,SAA8B;IACxE,MAAM,MAAM,GAAG,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;IAC3C,4DAA4D;IAC5D,IAAI,SAAS,KAAK,mBAAmB,CAAC,OAAO;QAC3C,OAAO,oBAAC,UAAU,IAAC,SAAS,EAAE,YAAY,MAAM,GAAG,GAAI,CAAC;IAC1D,4DAA4D;IAC5D,IAAI,SAAS,KAAK,mBAAmB,CAAC,MAAM;QAC1C,OAAO,oBAAC,SAAS,IAAC,SAAS,EAAE,YAAY,MAAM,GAAG,GAAI,CAAC;IACzD,4DAA4D;IAC5D,MAAM,MAAM,GAAG,SAAS,KAAK,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IACnE,OAAO,oBAAC,OAAO,IAAC,SAAS,EAAE,SAAS,MAAM,KAAK,MAAM,GAAG,GAAI,CAAC;AAC/D,CAAC;AAED,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,iCAAiC;IAC/C,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAChD,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACf,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;IACpC,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC,UAAU,CACnD,2BAA2B,CAC5B,CAAC;IACF,MAAM,KAAK,GAAG,aAAa,CAAC;IAE5B,MAAM,YAAY,GAAG,CAAC,OAAoB,EAAE,EAAE,CAC5C;QACE,mBAAmB,CAAC,OAAO,EAAE,uDAAuD;QACpF,mBAAmB,CAAC,MAAM,EAAE,uDAAuD;QACnF,mBAAmB,CAAC,IAAI,EAAE,uDAAuD;QACjF,mBAAmB,CAAC,KAAK,EAAE,uDAAuD;KACnF,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACd,OAAO,CACL,oBAAC,QAAQ,IACP,GAAG,EAAE,KAAK,EACV,OAAO,EAAE,GAAG,EAAE;gBACZ,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC1B,OAAO,EAAE,EAAE,CAAC;YACd,CAAC,EACD,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EAC1B,UAAU,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,KAAK,IAErC,UAAU,CAAC,KAAK,CAAC,CACT,CACZ,CAAC;IACJ,CAAC,CAAC,CAAC;IACL,MAAM,eAAe,GAAG,KAAK,CAAC,UAAU,CAAC,2BAA2B,CAAC,CAAC;IACtE,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QAClC,OAAO,CACL,oBAAC,QAAQ,IACP,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,EACrC,YAAY,EAAE,YAAY,CAAC,eAAe,CAAC,OAAO,CAAC,IAElD,KAAK,CACG,CACZ,CAAC;IACJ,CAAC;IACD,OAAO,CACL,oBAAC,YAAY,IAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC;QACrD,oBAAC,YAAY,IAAC,KAAK,EAAE,KAAK,IACvB,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CACnB,CACF,CAChB,CAAC;AACJ,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,6BAA6B;IAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAChD,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,2BAA2B,CAAC,CAAC;IAClE,MAAM,iBAAiB,GAAG,CAAC,CAAC,oBAAoB,EAAE,CAAC;IACnD,MAAM,iBAAiB,GAAG,oBAAoB,EAAE,CAAC;IAEjD,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACxB,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IACtD,OAAO,CACL,OAAO,IAAI,iBAAiB,IAAI,iBAAiB,IAAI,CAAC,iBAAiB,CACxE,CAAC;AACJ,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Widget\n */\n\nimport * as React from \"react\";\nimport { assert } from \"@itwin/core-bentley\";\nimport { HorizontalAlignment } from \"@itwin/core-react\";\nimport { DropdownMenu, MenuItem } from \"@itwin/itwinui-react\";\nimport {\n isHorizontalPanelSide,\n PanelSideContext,\n} from \"../../layout/widget-panels/Panel.js\";\nimport type {\n HorizontalPanelSide,\n PanelSide,\n} from \"../../layout/widget-panels/PanelTypes.js\";\nimport { WidgetActionDropdownContext } from \"../widget-action-dropdown/MoreButton.js\";\nimport { TabBarButton } from \"../../layout/widget/Button.js\";\nimport { useMainPanelWidgetId } from \"../../layout/widget/usePanelWidgetId.js\";\nimport { useIsMaximizedWidget } from \"../enable-maximized-widget/useMaximizedWidget.js\";\n\n/** Default value used when not provided or disabled. */\nconst defaultAlignments = {\n top: HorizontalAlignment.Justify, // eslint-disable-line @typescript-eslint/no-deprecated\n bottom: HorizontalAlignment.Justify, // eslint-disable-line @typescript-eslint/no-deprecated\n};\n\n/** @internal */\nexport const HorizontalPanelAlignContext = React.createContext<{\n enabled: boolean;\n alignments: {\n [side in HorizontalPanelSide]: HorizontalAlignment; // eslint-disable-line @typescript-eslint/no-deprecated\n };\n setAlignment: (\n panel: PanelSide | undefined,\n alignment: HorizontalAlignment // eslint-disable-line @typescript-eslint/no-deprecated\n ) => void;\n}>({\n enabled: false,\n alignments: defaultAlignments,\n setAlignment: () => {},\n});\n\n/** Preview horizontal panel alignment feature provider.\n * @internal\n */\nexport function PreviewHorizontalPanelAlignFeatureProvider({\n enabled,\n children,\n}: {\n enabled?: boolean;\n children?: React.ReactNode;\n}) {\n const [alignments, setAlignments] = React.useState<{\n [x in HorizontalPanelSide]: HorizontalAlignment; // eslint-disable-line @typescript-eslint/no-deprecated\n }>({\n top: HorizontalAlignment.Justify, // eslint-disable-line @typescript-eslint/no-deprecated\n bottom: HorizontalAlignment.Justify, // eslint-disable-line @typescript-eslint/no-deprecated\n });\n const setAlignment = React.useCallback(\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n (panel: PanelSide | undefined, alignment: HorizontalAlignment) => {\n if (!panel || !isHorizontalPanelSide(panel)) return;\n setAlignments((prev) => ({\n ...prev,\n [panel]: alignment,\n }));\n },\n []\n );\n return (\n <HorizontalPanelAlignContext.Provider\n value={{\n enabled: !!enabled,\n alignments: enabled ? alignments : defaultAlignments,\n setAlignment,\n }}\n >\n {children}\n </HorizontalPanelAlignContext.Provider>\n );\n}\n\nfunction SvgSide(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1rem\"\n height=\"1rem\"\n viewBox=\"0 0 16 16\"\n fill=\"var(--iui-color-icon-muted, currentColor)\"\n {...props}\n >\n <path d=\"M0 2v12h16V2H0Zm11 7H1V3h10v6Zm4 4h-3V3h3v10Z\" />\n </svg>\n );\n}\n\nfunction SvgJustify(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1rem\"\n height=\"1rem\"\n viewBox=\"0 0 16 16\"\n fill=\"var(--iui-color-icon-muted, currentColor)\"\n {...props}\n >\n <path d=\"M0 2v12h16V2H0Zm4 7H1V3h3v6Zm1 0V3h6v6H5Zm10 0h-3V3h3v6Z\" />\n </svg>\n );\n}\n\nfunction SvgCenter(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1rem\"\n height=\"1rem\"\n viewBox=\"0 0 16 16\"\n fill=\"var(--iui-color-icon-muted, currentColor)\"\n {...props}\n >\n <path d=\"M0 2v12h16V2H0Zm4 11H1V3h3v10Zm1-4V3h6v6H5Zm10 4h-3V3h3v10Z\" />\n </svg>\n );\n}\n\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nfunction getIcon(side: HorizontalPanelSide, alignment: HorizontalAlignment) {\n const scaleY = side === \"top\" ? \"-1\" : \"1\";\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n if (alignment === HorizontalAlignment.Justify)\n return <SvgJustify transform={`scale(1, ${scaleY})`} />;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n if (alignment === HorizontalAlignment.Center)\n return <SvgCenter transform={`scale(1, ${scaleY})`} />;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const scaleX = alignment === HorizontalAlignment.Left ? \"1\" : \"-1\";\n return <SvgSide transform={`scale(${scaleX}, ${scaleY})`} />;\n}\n\nfunction capitalize(s: string) {\n return s.charAt(0).toUpperCase() + s.slice(1);\n}\n\n/** @internal */\nexport function PreviewHorizontalPanelAlignButton() {\n const side = React.useContext(PanelSideContext);\n assert(!!side);\n assert(isHorizontalPanelSide(side));\n const { alignments, setAlignment } = React.useContext(\n HorizontalPanelAlignContext\n );\n const label = \"Align panel\";\n\n const getMenuItems = (onClose?: () => void) =>\n [\n HorizontalAlignment.Justify, // eslint-disable-line @typescript-eslint/no-deprecated\n HorizontalAlignment.Center, // eslint-disable-line @typescript-eslint/no-deprecated\n HorizontalAlignment.Left, // eslint-disable-line @typescript-eslint/no-deprecated\n HorizontalAlignment.Right, // eslint-disable-line @typescript-eslint/no-deprecated\n ].map((align) => {\n return (\n <MenuItem\n key={align}\n onClick={() => {\n setAlignment(side, align);\n onClose?.();\n }}\n icon={getIcon(side, align)}\n isSelected={alignments[side] === align}\n >\n {capitalize(align)}\n </MenuItem>\n );\n });\n const dropdownContext = React.useContext(WidgetActionDropdownContext);\n if (dropdownContext !== undefined) {\n return (\n <MenuItem\n icon={getIcon(side, alignments[side])}\n subMenuItems={getMenuItems(dropdownContext.onClose)}\n >\n {label}\n </MenuItem>\n );\n }\n return (\n <DropdownMenu menuItems={(close) => getMenuItems(close)}>\n <TabBarButton label={label}>\n {getIcon(side, alignments[side])}\n </TabBarButton>\n </DropdownMenu>\n );\n}\n\n/** @internal */\nexport function useHorizontalPanelAlignButton() {\n const side = React.useContext(PanelSideContext);\n const { enabled } = React.useContext(HorizontalPanelAlignContext);\n const isMainPanelWidget = !!useMainPanelWidgetId();\n const isMaximizedWidget = useIsMaximizedWidget();\n\n if (!side) return false;\n const isHorizontalPanel = isHorizontalPanelSide(side);\n return (\n enabled && isHorizontalPanel && isMainPanelWidget && !isMaximizedWidget\n );\n}\n"]}
1
+ {"version":3,"file":"PreviewHorizontalPanelAlign.js","sourceRoot":"","sources":["../../../../src/appui-react/preview/horizontal-panel-alignment/PreviewHorizontalPanelAlign.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Widget\n */\n\nimport * as React from \"react\";\nimport { assert } from \"@itwin/core-bentley\";\nimport { HorizontalAlignment } from \"@itwin/core-react\";\nimport { DropdownMenu, MenuItem } from \"@itwin/itwinui-react\";\nimport {\n isHorizontalPanelSide,\n PanelSideContext,\n} from \"../../layout/widget-panels/Panel.js\";\nimport type {\n HorizontalPanelSide,\n PanelSide,\n} from \"../../layout/widget-panels/PanelTypes.js\";\nimport { WidgetActionDropdownContext } from \"../widget-action-dropdown/MoreButton.js\";\nimport { TabBarButton } from \"../../layout/widget/Button.js\";\nimport { useMainPanelWidgetId } from \"../../layout/widget/usePanelWidgetId.js\";\nimport { useIsMaximizedWidget } from \"../enable-maximized-widget/useMaximizedWidget.js\";\n\n/** Default value used when not provided or disabled. */\nconst defaultAlignments = {\n top: HorizontalAlignment.Justify, // eslint-disable-line @typescript-eslint/no-deprecated\n bottom: HorizontalAlignment.Justify, // eslint-disable-line @typescript-eslint/no-deprecated\n};\n\n/** @internal */\nexport const HorizontalPanelAlignContext = React.createContext<{\n enabled: boolean;\n alignments: {\n [side in HorizontalPanelSide]: HorizontalAlignment; // eslint-disable-line @typescript-eslint/no-deprecated\n };\n setAlignment: (\n panel: PanelSide | undefined,\n alignment: HorizontalAlignment // eslint-disable-line @typescript-eslint/no-deprecated\n ) => void;\n}>({\n enabled: false,\n alignments: defaultAlignments,\n setAlignment: () => {},\n});\n\n/** Preview horizontal panel alignment feature provider.\n * @internal\n */\nexport function PreviewHorizontalPanelAlignFeatureProvider({\n enabled,\n children,\n}: {\n enabled?: boolean;\n children?: React.ReactNode;\n}) {\n const [alignments, setAlignments] = React.useState<{\n [x in HorizontalPanelSide]: HorizontalAlignment; // eslint-disable-line @typescript-eslint/no-deprecated\n }>({\n top: HorizontalAlignment.Justify, // eslint-disable-line @typescript-eslint/no-deprecated\n bottom: HorizontalAlignment.Justify, // eslint-disable-line @typescript-eslint/no-deprecated\n });\n const setAlignment = React.useCallback(\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n (panel: PanelSide | undefined, alignment: HorizontalAlignment) => {\n if (!panel || !isHorizontalPanelSide(panel)) return;\n setAlignments((prev) => ({\n ...prev,\n [panel]: alignment,\n }));\n },\n []\n );\n return (\n <HorizontalPanelAlignContext.Provider\n value={{\n enabled: !!enabled,\n alignments: enabled ? alignments : defaultAlignments,\n setAlignment,\n }}\n >\n {children}\n </HorizontalPanelAlignContext.Provider>\n );\n}\n\nfunction SvgSide(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1rem\"\n height=\"1rem\"\n viewBox=\"0 0 16 16\"\n fill=\"var(--iui-color-icon-muted, currentColor)\"\n {...props}\n >\n <path d=\"M0 2v12h16V2H0Zm11 7H1V3h10v6Zm4 4h-3V3h3v10Z\" />\n </svg>\n );\n}\n\nfunction SvgJustify(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1rem\"\n height=\"1rem\"\n viewBox=\"0 0 16 16\"\n fill=\"var(--iui-color-icon-muted, currentColor)\"\n {...props}\n >\n <path d=\"M0 2v12h16V2H0Zm4 7H1V3h3v6Zm1 0V3h6v6H5Zm10 0h-3V3h3v6Z\" />\n </svg>\n );\n}\n\nfunction SvgCenter(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1rem\"\n height=\"1rem\"\n viewBox=\"0 0 16 16\"\n fill=\"var(--iui-color-icon-muted, currentColor)\"\n {...props}\n >\n <path d=\"M0 2v12h16V2H0Zm4 11H1V3h3v10Zm1-4V3h6v6H5Zm10 4h-3V3h3v10Z\" />\n </svg>\n );\n}\n\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nfunction getIcon(side: HorizontalPanelSide, alignment: HorizontalAlignment) {\n const scaleY = side === \"top\" ? \"-1\" : \"1\";\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n if (alignment === HorizontalAlignment.Justify)\n return <SvgJustify transform={`scale(1, ${scaleY})`} />;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n if (alignment === HorizontalAlignment.Center)\n return <SvgCenter transform={`scale(1, ${scaleY})`} />;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const scaleX = alignment === HorizontalAlignment.Left ? \"1\" : \"-1\";\n return <SvgSide transform={`scale(${scaleX}, ${scaleY})`} />;\n}\n\nfunction capitalize(s: string) {\n return s.charAt(0).toUpperCase() + s.slice(1);\n}\n\n/** @internal */\nexport function PreviewHorizontalPanelAlignButton() {\n const side = React.useContext(PanelSideContext);\n assert(!!side);\n assert(isHorizontalPanelSide(side));\n const { alignments, setAlignment } = React.useContext(\n HorizontalPanelAlignContext\n );\n const label = \"Align panel\";\n\n const getMenuItems = (onClose?: () => void) =>\n [\n HorizontalAlignment.Justify, // eslint-disable-line @typescript-eslint/no-deprecated\n HorizontalAlignment.Center, // eslint-disable-line @typescript-eslint/no-deprecated\n HorizontalAlignment.Left, // eslint-disable-line @typescript-eslint/no-deprecated\n HorizontalAlignment.Right, // eslint-disable-line @typescript-eslint/no-deprecated\n ].map((align) => {\n return (\n <MenuItem\n key={align}\n onClick={() => {\n setAlignment(side, align);\n onClose?.();\n }}\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n icon={getIcon(side, align)}\n isSelected={alignments[side] === align}\n >\n {capitalize(align)}\n </MenuItem>\n );\n });\n const dropdownContext = React.useContext(WidgetActionDropdownContext);\n if (dropdownContext !== undefined) {\n return (\n <MenuItem\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n icon={getIcon(side, alignments[side])}\n subMenuItems={getMenuItems(dropdownContext.onClose)}\n >\n {label}\n </MenuItem>\n );\n }\n return (\n <DropdownMenu menuItems={(close) => getMenuItems(close)}>\n <TabBarButton label={label}>\n {getIcon(side, alignments[side])}\n </TabBarButton>\n </DropdownMenu>\n );\n}\n\n/** @internal */\nexport function useHorizontalPanelAlignButton() {\n const side = React.useContext(PanelSideContext);\n const { enabled } = React.useContext(HorizontalPanelAlignContext);\n const isMainPanelWidget = !!useMainPanelWidgetId();\n const isMaximizedWidget = useIsMaximizedWidget();\n\n if (!side) return false;\n const isHorizontalPanel = isHorizontalPanelSide(side);\n return (\n enabled && isHorizontalPanel && isMainPanelWidget && !isMaximizedWidget\n );\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import { type PropertyRecord } from "@itwin/appui-abstract";
2
+ /** @internal */
3
+ export declare function useLockButtonPropertyRecord(record: PropertyRecord, enabled: boolean): PropertyRecord;
4
+ //# sourceMappingURL=useToolSettingsLockButton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useToolSettingsLockButton.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/preview/tool-settings-lock-button/useToolSettingsLockButton.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,KAAK,cAAc,EAEpB,MAAM,uBAAuB,CAAC;AAI/B,gBAAgB;AAChB,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,OAAO,kBAmBjB"}
@@ -0,0 +1,38 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ import * as React from "react";
6
+ import { StandardTypeNames, } from "@itwin/appui-abstract";
7
+ import { usePreviewFeatures } from "../PreviewFeatures.js";
8
+ import { LockPropertyEditorName } from "../../uiprovider/LockEditor.js";
9
+ /** @internal */
10
+ export function useLockButtonPropertyRecord(record, enabled) {
11
+ const { toolSettingsLockButton } = usePreviewFeatures();
12
+ return React.useMemo(() => {
13
+ if (!enabled)
14
+ return record;
15
+ if (!toolSettingsLockButton)
16
+ return record;
17
+ // Allow consumers to override the default lock editor.
18
+ if (!isDefaultLockEditor(record.property))
19
+ return record;
20
+ const newRecord = record.copyWithNewValue(record.value, {
21
+ ...record.property,
22
+ editor: {
23
+ ...record.property.editor,
24
+ name: LockPropertyEditorName,
25
+ },
26
+ });
27
+ return newRecord;
28
+ }, [enabled, toolSettingsLockButton, record]);
29
+ }
30
+ function isDefaultLockEditor(property) {
31
+ if (property.typename !== StandardTypeNames.Bool.valueOf() &&
32
+ property.typename !== StandardTypeNames.Boolean.valueOf())
33
+ return false;
34
+ if (property.editor?.name)
35
+ return false;
36
+ return true;
37
+ }
38
+ //# sourceMappingURL=useToolSettingsLockButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useToolSettingsLockButton.js","sourceRoot":"","sources":["../../../../src/appui-react/preview/tool-settings-lock-button/useToolSettingsLockButton.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAGL,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAExE,gBAAgB;AAChB,MAAM,UAAU,2BAA2B,CACzC,MAAsB,EACtB,OAAgB;IAEhB,MAAM,EAAE,sBAAsB,EAAE,GAAG,kBAAkB,EAAE,CAAC;IACxD,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACxB,IAAI,CAAC,OAAO;YAAE,OAAO,MAAM,CAAC;QAC5B,IAAI,CAAC,sBAAsB;YAAE,OAAO,MAAM,CAAC;QAE3C,uDAAuD;QACvD,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC;YAAE,OAAO,MAAM,CAAC;QAEzD,MAAM,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,EAAE;YACtD,GAAG,MAAM,CAAC,QAAQ;YAClB,MAAM,EAAE;gBACN,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM;gBACzB,IAAI,EAAE,sBAAsB;aAC7B;SACF,CAAC,CAAC;QACH,OAAO,SAAS,CAAC;IACnB,CAAC,EAAE,CAAC,OAAO,EAAE,sBAAsB,EAAE,MAAM,CAAC,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,mBAAmB,CAAC,QAA6B;IACxD,IACE,QAAQ,CAAC,QAAQ,KAAK,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE;QACtD,QAAQ,CAAC,QAAQ,KAAK,iBAAiB,CAAC,OAAO,CAAC,OAAO,EAAE;QAEzD,OAAO,KAAK,CAAC;IACf,IAAI,QAAQ,CAAC,MAAM,EAAE,IAAI;QAAE,OAAO,KAAK,CAAC;IACxC,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nimport * as React from \"react\";\nimport {\n type PropertyDescription,\n type PropertyRecord,\n StandardTypeNames,\n} from \"@itwin/appui-abstract\";\nimport { usePreviewFeatures } from \"../PreviewFeatures.js\";\nimport { LockPropertyEditorName } from \"../../uiprovider/LockEditor.js\";\n\n/** @internal */\nexport function useLockButtonPropertyRecord(\n record: PropertyRecord,\n enabled: boolean\n) {\n const { toolSettingsLockButton } = usePreviewFeatures();\n return React.useMemo(() => {\n if (!enabled) return record;\n if (!toolSettingsLockButton) return record;\n\n // Allow consumers to override the default lock editor.\n if (!isDefaultLockEditor(record.property)) return record;\n\n const newRecord = record.copyWithNewValue(record.value, {\n ...record.property,\n editor: {\n ...record.property.editor,\n name: LockPropertyEditorName,\n },\n });\n return newRecord;\n }, [enabled, toolSettingsLockButton, record]);\n}\n\nfunction isDefaultLockEditor(property: PropertyDescription) {\n if (\n property.typename !== StandardTypeNames.Bool.valueOf() &&\n property.typename !== StandardTypeNames.Boolean.valueOf()\n )\n return false;\n if (property.editor?.name) return false;\n return true;\n}\n"]}
@@ -0,0 +1,5 @@
1
+ /** If `true`, tool settings will use editors based on the new editors system.
2
+ * @internal
3
+ */
4
+ export declare function useToolSettingsNewEditors(): boolean | undefined;
5
+ //# sourceMappingURL=useToolSettingsNewEditors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useToolSettingsNewEditors.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/preview/tool-settings-new-editors/useToolSettingsNewEditors.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,wBAAgB,yBAAyB,wBAGxC"}
@@ -0,0 +1,13 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ import { usePreviewFeatures } from "../PreviewFeatures.js";
6
+ /** If `true`, tool settings will use editors based on the new editors system.
7
+ * @internal
8
+ */
9
+ export function useToolSettingsNewEditors() {
10
+ const { toolSettingsNewEditors } = usePreviewFeatures();
11
+ return toolSettingsNewEditors;
12
+ }
13
+ //# sourceMappingURL=useToolSettingsNewEditors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useToolSettingsNewEditors.js","sourceRoot":"","sources":["../../../../src/appui-react/preview/tool-settings-new-editors/useToolSettingsNewEditors.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D;;GAEG;AACH,MAAM,UAAU,yBAAyB;IACvC,MAAM,EAAE,sBAAsB,EAAE,GAAG,kBAAkB,EAAE,CAAC;IACxD,OAAO,sBAAsB,CAAC;AAChC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport { usePreviewFeatures } from \"../PreviewFeatures.js\";\n\n/** If `true`, tool settings will use editors based on the new editors system.\n * @internal\n */\nexport function useToolSettingsNewEditors() {\n const { toolSettingsNewEditors } = usePreviewFeatures();\n return toolSettingsNewEditors;\n}\n"]}