@itwin/appui-react 3.0.0-dev.131 → 3.0.0-dev.136

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 (129) hide show
  1. package/lib/cjs/appui-react/UiFramework.d.ts +15 -10
  2. package/lib/cjs/appui-react/UiFramework.d.ts.map +1 -1
  3. package/lib/cjs/appui-react/UiFramework.js +16 -11
  4. package/lib/cjs/appui-react/UiFramework.js.map +1 -1
  5. package/lib/cjs/appui-react/accudraw/AccuDrawFieldContainer.d.ts +3 -3
  6. package/lib/cjs/appui-react/accudraw/AccuDrawFieldContainer.d.ts.map +1 -1
  7. package/lib/cjs/appui-react/accudraw/AccuDrawFieldContainer.js +3 -3
  8. package/lib/cjs/appui-react/accudraw/AccuDrawFieldContainer.js.map +1 -1
  9. package/lib/cjs/appui-react/accudraw/FrameworkAccuDraw.d.ts +4 -4
  10. package/lib/cjs/appui-react/accudraw/FrameworkAccuDraw.d.ts.map +1 -1
  11. package/lib/cjs/appui-react/accudraw/FrameworkAccuDraw.js +5 -4
  12. package/lib/cjs/appui-react/accudraw/FrameworkAccuDraw.js.map +1 -1
  13. package/lib/cjs/appui-react/childwindow/ChildWindowManager.d.ts.map +1 -1
  14. package/lib/cjs/appui-react/childwindow/ChildWindowManager.js +2 -3
  15. package/lib/cjs/appui-react/childwindow/ChildWindowManager.js.map +1 -1
  16. package/lib/cjs/appui-react/content/StageContentLayout.d.ts.map +1 -1
  17. package/lib/cjs/appui-react/content/StageContentLayout.js +5 -3
  18. package/lib/cjs/appui-react/content/StageContentLayout.js.map +1 -1
  19. package/lib/cjs/appui-react/hooks/useFrameworkVersion.js.map +1 -1
  20. package/lib/cjs/appui-react/popup/KeyinPalettePanel.js +5 -5
  21. package/lib/cjs/appui-react/popup/KeyinPalettePanel.js.map +1 -1
  22. package/lib/cjs/appui-react/settings/ui/UiSettingsPage.js +1 -1
  23. package/lib/cjs/appui-react/settings/ui/UiSettingsPage.js.map +1 -1
  24. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts +7 -7
  25. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts.map +1 -1
  26. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js +9 -9
  27. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
  28. package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.d.ts +2 -2
  29. package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.d.ts.map +1 -1
  30. package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.js +2 -2
  31. package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.js.map +1 -1
  32. package/lib/cjs/appui-react/{uisettings → uistate}/AppUiSettings.d.ts +7 -7
  33. package/lib/cjs/appui-react/uistate/AppUiSettings.d.ts.map +1 -0
  34. package/lib/cjs/appui-react/{uisettings → uistate}/AppUiSettings.js +8 -8
  35. package/lib/cjs/appui-react/uistate/AppUiSettings.js.map +1 -0
  36. package/lib/cjs/appui-react/uistate/UserSettingsStorage.d.ts +15 -0
  37. package/lib/cjs/appui-react/uistate/UserSettingsStorage.d.ts.map +1 -0
  38. package/lib/cjs/appui-react/{uisettings → uistate}/UserSettingsStorage.js +12 -13
  39. package/lib/cjs/appui-react/uistate/UserSettingsStorage.js.map +1 -0
  40. package/lib/cjs/appui-react/uistate/useUiStateStorage.d.ts +20 -0
  41. package/lib/cjs/appui-react/uistate/useUiStateStorage.d.ts.map +1 -0
  42. package/lib/cjs/appui-react/uistate/useUiStateStorage.js +38 -0
  43. package/lib/cjs/appui-react/uistate/useUiStateStorage.js.map +1 -0
  44. package/lib/cjs/appui-react/utils/UiShowHideManager.d.ts +5 -5
  45. package/lib/cjs/appui-react/utils/UiShowHideManager.d.ts.map +1 -1
  46. package/lib/cjs/appui-react/utils/UiShowHideManager.js +6 -6
  47. package/lib/cjs/appui-react/utils/UiShowHideManager.js.map +1 -1
  48. package/lib/cjs/appui-react/widget-panels/Frontstage.d.ts +4 -4
  49. package/lib/cjs/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
  50. package/lib/cjs/appui-react/widget-panels/Frontstage.js +10 -10
  51. package/lib/cjs/appui-react/widget-panels/Frontstage.js.map +1 -1
  52. package/lib/cjs/appui-react.d.ts +4 -4
  53. package/lib/cjs/appui-react.d.ts.map +1 -1
  54. package/lib/cjs/appui-react.js +4 -4
  55. package/lib/cjs/appui-react.js.map +1 -1
  56. package/lib/esm/appui-react/UiFramework.d.ts +15 -10
  57. package/lib/esm/appui-react/UiFramework.d.ts.map +1 -1
  58. package/lib/esm/appui-react/UiFramework.js +17 -12
  59. package/lib/esm/appui-react/UiFramework.js.map +1 -1
  60. package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.d.ts +3 -3
  61. package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.d.ts.map +1 -1
  62. package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.js +3 -3
  63. package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.js.map +1 -1
  64. package/lib/esm/appui-react/accudraw/FrameworkAccuDraw.d.ts +4 -4
  65. package/lib/esm/appui-react/accudraw/FrameworkAccuDraw.d.ts.map +1 -1
  66. package/lib/esm/appui-react/accudraw/FrameworkAccuDraw.js +6 -5
  67. package/lib/esm/appui-react/accudraw/FrameworkAccuDraw.js.map +1 -1
  68. package/lib/esm/appui-react/childwindow/ChildWindowManager.d.ts.map +1 -1
  69. package/lib/esm/appui-react/childwindow/ChildWindowManager.js +2 -3
  70. package/lib/esm/appui-react/childwindow/ChildWindowManager.js.map +1 -1
  71. package/lib/esm/appui-react/content/StageContentLayout.d.ts.map +1 -1
  72. package/lib/esm/appui-react/content/StageContentLayout.js +5 -3
  73. package/lib/esm/appui-react/content/StageContentLayout.js.map +1 -1
  74. package/lib/esm/appui-react/hooks/useFrameworkVersion.js.map +1 -1
  75. package/lib/esm/appui-react/popup/KeyinPalettePanel.js +6 -6
  76. package/lib/esm/appui-react/popup/KeyinPalettePanel.js.map +1 -1
  77. package/lib/esm/appui-react/settings/ui/UiSettingsPage.js +1 -1
  78. package/lib/esm/appui-react/settings/ui/UiSettingsPage.js.map +1 -1
  79. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts +7 -7
  80. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts.map +1 -1
  81. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js +10 -10
  82. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
  83. package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.d.ts +2 -2
  84. package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.d.ts.map +1 -1
  85. package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.js +2 -2
  86. package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.js.map +1 -1
  87. package/lib/esm/appui-react/{uisettings → uistate}/AppUiSettings.d.ts +7 -7
  88. package/lib/esm/appui-react/uistate/AppUiSettings.d.ts.map +1 -0
  89. package/lib/esm/appui-react/{uisettings → uistate}/AppUiSettings.js +9 -9
  90. package/lib/esm/appui-react/uistate/AppUiSettings.js.map +1 -0
  91. package/lib/esm/appui-react/uistate/UserSettingsStorage.d.ts +15 -0
  92. package/lib/esm/appui-react/uistate/UserSettingsStorage.d.ts.map +1 -0
  93. package/lib/esm/appui-react/{uisettings → uistate}/UserSettingsStorage.js +13 -14
  94. package/lib/esm/appui-react/uistate/UserSettingsStorage.js.map +1 -0
  95. package/lib/esm/appui-react/uistate/useUiStateStorage.d.ts +20 -0
  96. package/lib/esm/appui-react/uistate/useUiStateStorage.d.ts.map +1 -0
  97. package/lib/esm/appui-react/uistate/useUiStateStorage.js +33 -0
  98. package/lib/esm/appui-react/uistate/useUiStateStorage.js.map +1 -0
  99. package/lib/esm/appui-react/utils/UiShowHideManager.d.ts +5 -5
  100. package/lib/esm/appui-react/utils/UiShowHideManager.d.ts.map +1 -1
  101. package/lib/esm/appui-react/utils/UiShowHideManager.js +7 -7
  102. package/lib/esm/appui-react/utils/UiShowHideManager.js.map +1 -1
  103. package/lib/esm/appui-react/widget-panels/Frontstage.d.ts +4 -4
  104. package/lib/esm/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
  105. package/lib/esm/appui-react/widget-panels/Frontstage.js +11 -11
  106. package/lib/esm/appui-react/widget-panels/Frontstage.js.map +1 -1
  107. package/lib/esm/appui-react.d.ts +4 -4
  108. package/lib/esm/appui-react.d.ts.map +1 -1
  109. package/lib/esm/appui-react.js +4 -4
  110. package/lib/esm/appui-react.js.map +1 -1
  111. package/package.json +34 -34
  112. package/lib/cjs/appui-react/uisettings/AppUiSettings.d.ts.map +0 -1
  113. package/lib/cjs/appui-react/uisettings/AppUiSettings.js.map +0 -1
  114. package/lib/cjs/appui-react/uisettings/UserSettingsStorage.d.ts +0 -15
  115. package/lib/cjs/appui-react/uisettings/UserSettingsStorage.d.ts.map +0 -1
  116. package/lib/cjs/appui-react/uisettings/UserSettingsStorage.js.map +0 -1
  117. package/lib/cjs/appui-react/uisettings/useUiSettings.d.ts +0 -22
  118. package/lib/cjs/appui-react/uisettings/useUiSettings.d.ts.map +0 -1
  119. package/lib/cjs/appui-react/uisettings/useUiSettings.js +0 -29
  120. package/lib/cjs/appui-react/uisettings/useUiSettings.js.map +0 -1
  121. package/lib/esm/appui-react/uisettings/AppUiSettings.d.ts.map +0 -1
  122. package/lib/esm/appui-react/uisettings/AppUiSettings.js.map +0 -1
  123. package/lib/esm/appui-react/uisettings/UserSettingsStorage.d.ts +0 -15
  124. package/lib/esm/appui-react/uisettings/UserSettingsStorage.d.ts.map +0 -1
  125. package/lib/esm/appui-react/uisettings/UserSettingsStorage.js.map +0 -1
  126. package/lib/esm/appui-react/uisettings/useUiSettings.d.ts +0 -22
  127. package/lib/esm/appui-react/uisettings/useUiSettings.d.ts.map +0 -1
  128. package/lib/esm/appui-react/uisettings/useUiSettings.js +0 -24
  129. package/lib/esm/appui-react/uisettings/useUiSettings.js.map +0 -1
@@ -71,8 +71,8 @@ export var SyncUiEventId;
71
71
  SyncUiEventId["SettingsProvidersChanged"] = "settingsproviderschanged";
72
72
  /** The current view state has changed (used by view undo/redo toolbar buttons). */
73
73
  SyncUiEventId["ViewStateChanged"] = "viewstatechanged";
74
- /** The current object the reads and write UI Settings has changed. */
75
- SyncUiEventId["UiSettingsChanged"] = "uisettingschanged";
74
+ /** The current object the reads and write UI State has changed. */
75
+ SyncUiEventId["UiStateStorageChanged"] = "uistatestoragechanged";
76
76
  SyncUiEventId["ShowHideManagerSettingChange"] = "show-hide-setting-change";
77
77
  })(SyncUiEventId || (SyncUiEventId = {}));
78
78
  /** SyncUi Event class.
@@ -1 +1 @@
1
- {"version":3,"file":"SyncUiEventDispatcher.js","sourceRoot":"","sources":["../../../../src/appui-react/syncui/SyncUiEventDispatcher.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module SyncUi\r\n */\r\n\r\nimport { Logger } from \"@itwin/core-bentley\";\r\nimport { IModelApp, IModelConnection, SelectedViewportChangedArgs, SelectionSetEvent } from \"@itwin/core-frontend\";\r\nimport { getInstancesCount, SelectionScope } from \"@itwin/presentation-common\";\r\nimport { ISelectionProvider, Presentation, SelectionChangeEventArgs } from \"@itwin/presentation-frontend\";\r\n// cSpell:ignore configurableui\r\nimport { UiEvent } from \"@itwin/core-react\";\r\nimport { Backstage } from \"../backstage/Backstage\";\r\nimport { ContentViewManager } from \"../content/ContentViewManager\";\r\nimport { FrontstageManager } from \"../frontstage/FrontstageManager\";\r\nimport { PresentationSelectionScope, SessionStateActionId } from \"../redux/SessionState\";\r\nimport { UiFramework } from \"../UiFramework\";\r\nimport { WorkflowManager } from \"../workflow/Workflow\";\r\n\r\n// cSpell:ignore activecontentchanged, activitymessageupdated, activitymessagecancelled, backstagecloseevent, backstageevent, contentlayoutactivated, contentcontrolactivated,\r\n// cSpell:ignore elementtooltipchanged, frontstageactivated, inputfieldmessageadded, inputfieldmessageremoved, modalfrontstagechanged, modaldialogchanged\r\n// cSpell:ignore navigationaidactivated, notificationmessageadded, toolactivated, taskactivated, widgetstatechanged, workflowactivated frontstageactivating\r\n// cSpell:ignore frontstageready activeviewportchanged selectionsetchanged presentationselectionchanged viewstatechanged\r\n// cSpell:ignore accudrawcompassmodechanged accudrawfieldlockchanged accudrawrotationchanged uisettingschanged\r\n\r\n/** Event Id used to sync UI components. Used to refresh visibility or enable state of control.\r\n * @public\r\n */\r\nexport enum SyncUiEventId {\r\n /** AccuDraw compass mode has changed. */\r\n AccuDrawCompassModeChanged = \"accudrawcompassmodechanged\",\r\n /** AccuDraw rotation has changed. */\r\n AccuDrawRotationChanged = \"accudrawrotationchanged\",\r\n /** The active content as maintained by the ContentViewManager has changed. */\r\n ActiveContentChanged = \"activecontentchanged\",\r\n /** The active view maintained by the ViewManager has changed. */\r\n ActiveViewportChanged = \"activeviewportchanged\",\r\n /** Backstage has been closed.\r\n * @deprecated Use BackstageEvent instead\r\n */\r\n BackstageCloseEvent = \"backstagecloseevent\",\r\n /** Backstage has been closed. */\r\n BackstageEvent = \"backstageevent\",\r\n /** A Content Layout has been activated. */\r\n ContentLayoutActivated = \"contentlayoutactivated\",\r\n /** A Content Control maintained by FrontstageManager has been activated. */\r\n ContentControlActivated = \"contentcontrolactivated\",\r\n /** A Frontstage is activating. */\r\n FrontstageActivating = \"frontstageactivating\",\r\n /** A Frontstage has been activated and the content has been assigned. */\r\n FrontstageReady = \"frontstageready\",\r\n /** A Modal Frontstage has been opened or closed. */\r\n ModalFrontstageChanged = \"modalfrontstagechanged\",\r\n /** A Modal Dialog has been opened or closed. */\r\n ModalDialogChanged = \"modaldialogchanged\",\r\n /** A NavigationAid has been activated. */\r\n NavigationAidActivated = \"navigationaidactivated\",\r\n /** An InteractiveTool has been activated via the ToolAdmin. */\r\n ToolActivated = \"toolactivated\",\r\n /** A Task has been activated.\r\n * @deprecated */\r\n TaskActivated = \"taskactivated\",\r\n /** The state of a Widget has changed. */\r\n WidgetStateChanged = \"widgetstatechanged\",\r\n /** A Workflow has been activated.\r\n * @deprecated */\r\n WorkflowActivated = \"workflowactivated\",\r\n /** The SelectionSet for the active IModelConnection has changed. */\r\n SelectionSetChanged = \"selectionsetchanged\",\r\n /** The list of settings providers registered with SettingsManager has changed. */\r\n SettingsProvidersChanged = \"settingsproviderschanged\",\r\n /** The current view state has changed (used by view undo/redo toolbar buttons). */\r\n ViewStateChanged = \"viewstatechanged\",\r\n /** The current object the reads and write UI Settings has changed. */\r\n UiSettingsChanged = \"uisettingschanged\",\r\n ShowHideManagerSettingChange = \"show-hide-setting-change\",\r\n}\r\n\r\n/** SyncUi Event arguments. Contains a set of lower case event Ids.\r\n * @public\r\n */\r\nexport interface SyncUiEventArgs {\r\n eventIds: Set<string>;\r\n}\r\n\r\n/** SyncUi Event class.\r\n * @public\r\n */\r\nexport class SyncUiEvent extends UiEvent<SyncUiEventArgs> { }\r\n\r\n/** This class is used to send eventIds to interested UI components so the component can determine if it needs\r\n * to refresh its display by calling setState on itself.\r\n * @public\r\n */\r\nexport class SyncUiEventDispatcher {\r\n private static _syncEventTimerId: number | undefined;\r\n private static _eventIds: Set<string>;\r\n private static _eventIdAdded = false;\r\n private static _syncUiEvent: SyncUiEvent;\r\n private static _timeoutPeriod = 100;\r\n private static _secondaryTimeoutPeriod = SyncUiEventDispatcher._timeoutPeriod / 2;\r\n private static _unregisterListenerFunc?: () => void;\r\n private static _unregisterListenerFuncs: Array<() => void> = [];\r\n private static initialized = false;\r\n\r\n /** @internal - used for testing only */\r\n /* istanbul ignore next */\r\n public static setTimeoutPeriod(period: number): void {\r\n SyncUiEventDispatcher._timeoutPeriod = period;\r\n SyncUiEventDispatcher._secondaryTimeoutPeriod = Math.floor(SyncUiEventDispatcher._timeoutPeriod / 2);\r\n if (SyncUiEventDispatcher._secondaryTimeoutPeriod < 1)\r\n SyncUiEventDispatcher._secondaryTimeoutPeriod = 1;\r\n if (SyncUiEventDispatcher._syncEventTimerId) {\r\n window.clearTimeout(SyncUiEventDispatcher._syncEventTimerId);\r\n SyncUiEventDispatcher._syncEventTimerId = undefined;\r\n }\r\n if (SyncUiEventDispatcher._eventIds)\r\n SyncUiEventDispatcher._eventIds.clear();\r\n\r\n SyncUiEventDispatcher._eventIdAdded = false;\r\n }\r\n\r\n /** Return set of event ids that will be sent to listeners/. */\r\n public static get syncEventIds(): Set<string> {\r\n if (!SyncUiEventDispatcher._eventIds)\r\n SyncUiEventDispatcher._eventIds = new Set<string>();\r\n\r\n return SyncUiEventDispatcher._eventIds;\r\n }\r\n\r\n /** Return SyncUiEvent so callers can register an event callback. */\r\n public static get onSyncUiEvent(): SyncUiEvent {\r\n if (!SyncUiEventDispatcher._syncUiEvent)\r\n SyncUiEventDispatcher._syncUiEvent = new SyncUiEvent();\r\n\r\n return SyncUiEventDispatcher._syncUiEvent;\r\n }\r\n\r\n /** Immediately trigger sync event processing. */\r\n public static dispatchImmediateSyncUiEvent(eventId: string): void {\r\n const eventIds = new Set<string>();\r\n eventIds.add(eventId.toLowerCase());\r\n SyncUiEventDispatcher.onSyncUiEvent.emit({ eventIds });\r\n }\r\n\r\n /** Save eventId in Set for processing. */\r\n public static dispatchSyncUiEvent(eventId: string): void {\r\n if (0 === SyncUiEventDispatcher._timeoutPeriod) {\r\n Logger.logInfo(UiFramework.loggerCategory(this), `[dispatchSyncUiEvent] not processed because _timeoutPeriod=0`);\r\n return;\r\n }\r\n\r\n SyncUiEventDispatcher.syncEventIds.add(eventId.toLowerCase());\r\n if (!SyncUiEventDispatcher._syncEventTimerId) { // if there is not a timer active, create one\r\n SyncUiEventDispatcher._syncEventTimerId = window.setTimeout(SyncUiEventDispatcher.checkForAdditionalIds, SyncUiEventDispatcher._timeoutPeriod);\r\n } else {\r\n SyncUiEventDispatcher._eventIdAdded = true;\r\n }\r\n }\r\n\r\n /** Save multiple eventIds in Set for processing. */\r\n public static dispatchSyncUiEvents(eventIds: string[]): void {\r\n // istanbul ignore if\r\n if (0 === SyncUiEventDispatcher._timeoutPeriod) {\r\n Logger.logInfo(UiFramework.loggerCategory(this), `[dispatchSyncUiEvents] not processed because _timeoutPeriod=0`);\r\n return;\r\n }\r\n\r\n eventIds.forEach((id) => SyncUiEventDispatcher.syncEventIds.add(id.toLowerCase()));\r\n // istanbul ignore else\r\n if (!SyncUiEventDispatcher._syncEventTimerId) { // if there is not a timer active, create one\r\n SyncUiEventDispatcher._syncEventTimerId = window.setTimeout(SyncUiEventDispatcher.checkForAdditionalIds, SyncUiEventDispatcher._timeoutPeriod);\r\n } else {\r\n SyncUiEventDispatcher._eventIdAdded = true;\r\n }\r\n }\r\n\r\n /** Trigger registered event processing when timer has expired and no addition eventId are added. */\r\n private static checkForAdditionalIds() {\r\n /* istanbul ignore else */\r\n if (!SyncUiEventDispatcher._eventIdAdded) {\r\n // istanbul ignore else\r\n if (SyncUiEventDispatcher._syncEventTimerId) {\r\n window.clearTimeout(SyncUiEventDispatcher._syncEventTimerId);\r\n SyncUiEventDispatcher._syncEventTimerId = undefined;\r\n } else {\r\n Logger.logError(UiFramework.loggerCategory(this), \"SyncUiEventDispatcher.checkForAdditionalIds - expected _syncEventTimerId to be defined\");\r\n }\r\n SyncUiEventDispatcher._eventIdAdded = false;\r\n // istanbul ignore else\r\n if (SyncUiEventDispatcher.syncEventIds.size > 0) {\r\n const eventIds = new Set<string>();\r\n SyncUiEventDispatcher.syncEventIds.forEach((value) => eventIds.add(value));\r\n SyncUiEventDispatcher._eventIds.clear();\r\n SyncUiEventDispatcher.onSyncUiEvent.emit({ eventIds });\r\n }\r\n return;\r\n }\r\n\r\n // istanbul ignore next\r\n if (SyncUiEventDispatcher._syncEventTimerId) {\r\n window.clearTimeout(SyncUiEventDispatcher._syncEventTimerId);\r\n SyncUiEventDispatcher._syncEventTimerId = undefined;\r\n }\r\n // istanbul ignore next\r\n SyncUiEventDispatcher._eventIdAdded = false;\r\n // if events have been added before the initial timer expired wait half that time to see if events are still being added.\r\n // istanbul ignore next\r\n SyncUiEventDispatcher._syncEventTimerId = window.setTimeout(SyncUiEventDispatcher.checkForAdditionalIds, SyncUiEventDispatcher._secondaryTimeoutPeriod);\r\n }\r\n\r\n /** Checks to see if an eventId of interest is contained in the set of eventIds */\r\n public static hasEventOfInterest(eventIds: Set<string>, idsOfInterest: string[]) {\r\n /* istanbul ignore else */\r\n if ((idsOfInterest.length > 0) && idsOfInterest.some((value: string): boolean => eventIds.has(value.toLowerCase())))\r\n return true;\r\n return false;\r\n }\r\n\r\n // istanbul ignore next\r\n private static _dispatchViewChange() {\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ViewStateChanged);\r\n }\r\n\r\n /** Initializes the Monitoring of Events that trigger dispatching sync events */\r\n public static initialize() {\r\n // clear any registered listeners - this should only be encountered in unit test scenarios\r\n this._unregisterListenerFuncs.forEach((unregisterListenerFunc) => unregisterListenerFunc());\r\n\r\n this._unregisterListenerFuncs.push(FrontstageManager.onContentControlActivatedEvent.addListener(() => {\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ContentControlActivated);\r\n }));\r\n\r\n this._unregisterListenerFuncs.push(FrontstageManager.onContentLayoutActivatedEvent.addListener(() => {\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ContentLayoutActivated);\r\n }));\r\n\r\n this._unregisterListenerFuncs.push(FrontstageManager.onFrontstageActivatedEvent.addListener(() => {\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.FrontstageActivating);\r\n }));\r\n\r\n this._unregisterListenerFuncs.push(FrontstageManager.onFrontstageReadyEvent.addListener(() => {\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.FrontstageReady);\r\n }));\r\n\r\n this._unregisterListenerFuncs.push(FrontstageManager.onModalFrontstageChangedEvent.addListener(() => {\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ModalFrontstageChanged);\r\n }));\r\n\r\n this._unregisterListenerFuncs.push(FrontstageManager.onNavigationAidActivatedEvent.addListener(() => {\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.NavigationAidActivated);\r\n }));\r\n\r\n this._unregisterListenerFuncs.push(FrontstageManager.onToolActivatedEvent.addListener(() => {\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ToolActivated);\r\n }));\r\n\r\n this._unregisterListenerFuncs.push(FrontstageManager.onWidgetStateChangedEvent.addListener(() => {\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.WidgetStateChanged);\r\n }));\r\n\r\n this._unregisterListenerFuncs.push(Backstage.onBackstageEvent.addListener(() => { // eslint-disable-line deprecation/deprecation\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.BackstageEvent);\r\n }));\r\n\r\n this._unregisterListenerFuncs.push(WorkflowManager.onTaskActivatedEvent.addListener(() => { // eslint-disable-line deprecation/deprecation\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.TaskActivated); // eslint-disable-line deprecation/deprecation\r\n }));\r\n\r\n this._unregisterListenerFuncs.push(WorkflowManager.onWorkflowActivatedEvent.addListener(() => { // eslint-disable-line deprecation/deprecation\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.WorkflowActivated); // eslint-disable-line deprecation/deprecation\r\n }));\r\n\r\n this._unregisterListenerFuncs.push(ContentViewManager.onActiveContentChangedEvent.addListener(() => {\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ActiveContentChanged);\r\n }));\r\n\r\n // istanbul ignore else\r\n if (IModelApp && IModelApp.viewManager) {\r\n this._unregisterListenerFuncs.push(IModelApp.viewManager.onSelectedViewportChanged.addListener((args: SelectedViewportChangedArgs) => {\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ActiveViewportChanged);\r\n\r\n // if this is the first view being opened up start the default tool so tool admin is happy.\r\n if (undefined === args.previous) {\r\n IModelApp.toolAdmin.startDefaultTool();// eslint-disable-line @typescript-eslint/no-floating-promises\r\n } else {\r\n // istanbul ignore next\r\n if (args.previous.onViewChanged && typeof args.previous.onViewChanged.removeListener === \"function\") // not set during unit test\r\n args.previous.onViewChanged.removeListener(SyncUiEventDispatcher._dispatchViewChange);\r\n }\r\n // istanbul ignore next\r\n if (args.current) {\r\n if (args.current.onViewChanged && typeof args.current.onViewChanged.addListener === \"function\") // not set during unit test\r\n args.current.onViewChanged.addListener(SyncUiEventDispatcher._dispatchViewChange);\r\n }\r\n }));\r\n }\r\n }\r\n\r\n private static selectionChangedHandler(_ev: SelectionSetEvent) {\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.SelectionSetChanged);\r\n }\r\n\r\n /** This should be called by IModelApp when the active IModelConnection is closed. */\r\n public static clearConnectionEvents(iModelConnection: IModelConnection) {\r\n iModelConnection.selectionSet.onChanged.removeListener(SyncUiEventDispatcher.selectionChangedHandler);\r\n SyncUiEventDispatcher._unregisterListenerFunc && SyncUiEventDispatcher._unregisterListenerFunc();\r\n }\r\n\r\n /** This should be called by IModelApp when the active IModelConnection is established. */\r\n public static initializeConnectionEvents(iModelConnection: IModelConnection) {\r\n if (SyncUiEventDispatcher._unregisterListenerFunc)\r\n SyncUiEventDispatcher._unregisterListenerFunc();\r\n\r\n if (iModelConnection.isBlankConnection()) {\r\n UiFramework.dispatchActionToStore(SessionStateActionId.SetNumItemsSelected, 0);\r\n return;\r\n }\r\n\r\n iModelConnection.selectionSet.onChanged.removeListener(SyncUiEventDispatcher.selectionChangedHandler);\r\n iModelConnection.selectionSet.onChanged.addListener(SyncUiEventDispatcher.selectionChangedHandler);\r\n (iModelConnection.iModelId) ? UiFramework.setActiveIModelId(iModelConnection.iModelId) : /* istanbul ignore next */ \"\";\r\n\r\n // listen for changes from presentation rules selection manager (this is done once an iModelConnection is available to ensure Presentation.selection is valid)\r\n SyncUiEventDispatcher._unregisterListenerFunc = Presentation.selection.selectionChange.addListener((args: SelectionChangeEventArgs, provider: ISelectionProvider) => {\r\n // istanbul ignore if\r\n if (args.level !== 0) {\r\n // don't need to handle sub-selections\r\n return;\r\n }\r\n const selection = provider.getSelection(args.imodel, args.level);\r\n const numSelected = getInstancesCount(selection);\r\n UiFramework.dispatchActionToStore(SessionStateActionId.SetNumItemsSelected, numSelected);\r\n });\r\n\r\n Presentation.selection.scopes.getSelectionScopes(iModelConnection).then((availableScopes: SelectionScope[]) => { // eslint-disable-line @typescript-eslint/no-floating-promises\r\n // istanbul ignore else\r\n if (availableScopes) {\r\n const presentationScopes: PresentationSelectionScope[] = [];\r\n availableScopes.map((scope) => presentationScopes.push(scope));\r\n UiFramework.dispatchActionToStore(SessionStateActionId.SetAvailableSelectionScopes, presentationScopes);\r\n }\r\n });\r\n\r\n const activeSelectionScope = Presentation.selection.scopes.activeScope;\r\n if (activeSelectionScope) {\r\n if (typeof (activeSelectionScope) === \"object\") {\r\n UiFramework.dispatchActionToStore(SessionStateActionId.SetSelectionScope, activeSelectionScope.id);\r\n } else {\r\n UiFramework.dispatchActionToStore(SessionStateActionId.SetSelectionScope, activeSelectionScope);\r\n }\r\n }\r\n }\r\n\r\n}\r\n"]}
1
+ {"version":3,"file":"SyncUiEventDispatcher.js","sourceRoot":"","sources":["../../../../src/appui-react/syncui/SyncUiEventDispatcher.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module SyncUi\r\n */\r\n\r\nimport { Logger } from \"@itwin/core-bentley\";\r\nimport { IModelApp, IModelConnection, SelectedViewportChangedArgs, SelectionSetEvent } from \"@itwin/core-frontend\";\r\nimport { getInstancesCount, SelectionScope } from \"@itwin/presentation-common\";\r\nimport { ISelectionProvider, Presentation, SelectionChangeEventArgs } from \"@itwin/presentation-frontend\";\r\n// cSpell:ignore configurableui\r\nimport { UiEvent } from \"@itwin/core-react\";\r\nimport { Backstage } from \"../backstage/Backstage\";\r\nimport { ContentViewManager } from \"../content/ContentViewManager\";\r\nimport { FrontstageManager } from \"../frontstage/FrontstageManager\";\r\nimport { PresentationSelectionScope, SessionStateActionId } from \"../redux/SessionState\";\r\nimport { UiFramework } from \"../UiFramework\";\r\nimport { WorkflowManager } from \"../workflow/Workflow\";\r\n\r\n// cSpell:ignore activecontentchanged, activitymessageupdated, activitymessagecancelled, backstagecloseevent, backstageevent, contentlayoutactivated, contentcontrolactivated,\r\n// cSpell:ignore elementtooltipchanged, frontstageactivated, inputfieldmessageadded, inputfieldmessageremoved, modalfrontstagechanged, modaldialogchanged\r\n// cSpell:ignore navigationaidactivated, notificationmessageadded, toolactivated, taskactivated, widgetstatechanged, workflowactivated frontstageactivating\r\n// cSpell:ignore frontstageready activeviewportchanged selectionsetchanged presentationselectionchanged viewstatechanged\r\n// cSpell:ignore accudrawcompassmodechanged accudrawfieldlockchanged accudrawrotationchanged uisettingschanged\r\n\r\n/** Event Id used to sync UI components. Used to refresh visibility or enable state of control.\r\n * @public\r\n */\r\nexport enum SyncUiEventId {\r\n /** AccuDraw compass mode has changed. */\r\n AccuDrawCompassModeChanged = \"accudrawcompassmodechanged\",\r\n /** AccuDraw rotation has changed. */\r\n AccuDrawRotationChanged = \"accudrawrotationchanged\",\r\n /** The active content as maintained by the ContentViewManager has changed. */\r\n ActiveContentChanged = \"activecontentchanged\",\r\n /** The active view maintained by the ViewManager has changed. */\r\n ActiveViewportChanged = \"activeviewportchanged\",\r\n /** Backstage has been closed.\r\n * @deprecated Use BackstageEvent instead\r\n */\r\n BackstageCloseEvent = \"backstagecloseevent\",\r\n /** Backstage has been closed. */\r\n BackstageEvent = \"backstageevent\",\r\n /** A Content Layout has been activated. */\r\n ContentLayoutActivated = \"contentlayoutactivated\",\r\n /** A Content Control maintained by FrontstageManager has been activated. */\r\n ContentControlActivated = \"contentcontrolactivated\",\r\n /** A Frontstage is activating. */\r\n FrontstageActivating = \"frontstageactivating\",\r\n /** A Frontstage has been activated and the content has been assigned. */\r\n FrontstageReady = \"frontstageready\",\r\n /** A Modal Frontstage has been opened or closed. */\r\n ModalFrontstageChanged = \"modalfrontstagechanged\",\r\n /** A Modal Dialog has been opened or closed. */\r\n ModalDialogChanged = \"modaldialogchanged\",\r\n /** A NavigationAid has been activated. */\r\n NavigationAidActivated = \"navigationaidactivated\",\r\n /** An InteractiveTool has been activated via the ToolAdmin. */\r\n ToolActivated = \"toolactivated\",\r\n /** A Task has been activated.\r\n * @deprecated */\r\n TaskActivated = \"taskactivated\",\r\n /** The state of a Widget has changed. */\r\n WidgetStateChanged = \"widgetstatechanged\",\r\n /** A Workflow has been activated.\r\n * @deprecated */\r\n WorkflowActivated = \"workflowactivated\",\r\n /** The SelectionSet for the active IModelConnection has changed. */\r\n SelectionSetChanged = \"selectionsetchanged\",\r\n /** The list of settings providers registered with SettingsManager has changed. */\r\n SettingsProvidersChanged = \"settingsproviderschanged\",\r\n /** The current view state has changed (used by view undo/redo toolbar buttons). */\r\n ViewStateChanged = \"viewstatechanged\",\r\n /** The current object the reads and write UI State has changed. */\r\n UiStateStorageChanged = \"uistatestoragechanged\",\r\n ShowHideManagerSettingChange = \"show-hide-setting-change\",\r\n}\r\n\r\n/** SyncUi Event arguments. Contains a set of lower case event Ids.\r\n * @public\r\n */\r\nexport interface SyncUiEventArgs {\r\n eventIds: Set<string>;\r\n}\r\n\r\n/** SyncUi Event class.\r\n * @public\r\n */\r\nexport class SyncUiEvent extends UiEvent<SyncUiEventArgs> { }\r\n\r\n/** This class is used to send eventIds to interested UI components so the component can determine if it needs\r\n * to refresh its display by calling setState on itself.\r\n * @public\r\n */\r\nexport class SyncUiEventDispatcher {\r\n private static _syncEventTimerId: number | undefined;\r\n private static _eventIds: Set<string>;\r\n private static _eventIdAdded = false;\r\n private static _syncUiEvent: SyncUiEvent;\r\n private static _timeoutPeriod = 100;\r\n private static _secondaryTimeoutPeriod = SyncUiEventDispatcher._timeoutPeriod / 2;\r\n private static _unregisterListenerFunc?: () => void;\r\n private static _unregisterListenerFuncs: Array<() => void> = [];\r\n private static initialized = false;\r\n\r\n /** @internal - used for testing only */\r\n /* istanbul ignore next */\r\n public static setTimeoutPeriod(period: number): void {\r\n SyncUiEventDispatcher._timeoutPeriod = period;\r\n SyncUiEventDispatcher._secondaryTimeoutPeriod = Math.floor(SyncUiEventDispatcher._timeoutPeriod / 2);\r\n if (SyncUiEventDispatcher._secondaryTimeoutPeriod < 1)\r\n SyncUiEventDispatcher._secondaryTimeoutPeriod = 1;\r\n if (SyncUiEventDispatcher._syncEventTimerId) {\r\n window.clearTimeout(SyncUiEventDispatcher._syncEventTimerId);\r\n SyncUiEventDispatcher._syncEventTimerId = undefined;\r\n }\r\n if (SyncUiEventDispatcher._eventIds)\r\n SyncUiEventDispatcher._eventIds.clear();\r\n\r\n SyncUiEventDispatcher._eventIdAdded = false;\r\n }\r\n\r\n /** Return set of event ids that will be sent to listeners/. */\r\n public static get syncEventIds(): Set<string> {\r\n if (!SyncUiEventDispatcher._eventIds)\r\n SyncUiEventDispatcher._eventIds = new Set<string>();\r\n\r\n return SyncUiEventDispatcher._eventIds;\r\n }\r\n\r\n /** Return SyncUiEvent so callers can register an event callback. */\r\n public static get onSyncUiEvent(): SyncUiEvent {\r\n if (!SyncUiEventDispatcher._syncUiEvent)\r\n SyncUiEventDispatcher._syncUiEvent = new SyncUiEvent();\r\n\r\n return SyncUiEventDispatcher._syncUiEvent;\r\n }\r\n\r\n /** Immediately trigger sync event processing. */\r\n public static dispatchImmediateSyncUiEvent(eventId: string): void {\r\n const eventIds = new Set<string>();\r\n eventIds.add(eventId.toLowerCase());\r\n SyncUiEventDispatcher.onSyncUiEvent.emit({ eventIds });\r\n }\r\n\r\n /** Save eventId in Set for processing. */\r\n public static dispatchSyncUiEvent(eventId: string): void {\r\n if (0 === SyncUiEventDispatcher._timeoutPeriod) {\r\n Logger.logInfo(UiFramework.loggerCategory(this), `[dispatchSyncUiEvent] not processed because _timeoutPeriod=0`);\r\n return;\r\n }\r\n\r\n SyncUiEventDispatcher.syncEventIds.add(eventId.toLowerCase());\r\n if (!SyncUiEventDispatcher._syncEventTimerId) { // if there is not a timer active, create one\r\n SyncUiEventDispatcher._syncEventTimerId = window.setTimeout(SyncUiEventDispatcher.checkForAdditionalIds, SyncUiEventDispatcher._timeoutPeriod);\r\n } else {\r\n SyncUiEventDispatcher._eventIdAdded = true;\r\n }\r\n }\r\n\r\n /** Save multiple eventIds in Set for processing. */\r\n public static dispatchSyncUiEvents(eventIds: string[]): void {\r\n // istanbul ignore if\r\n if (0 === SyncUiEventDispatcher._timeoutPeriod) {\r\n Logger.logInfo(UiFramework.loggerCategory(this), `[dispatchSyncUiEvents] not processed because _timeoutPeriod=0`);\r\n return;\r\n }\r\n\r\n eventIds.forEach((id) => SyncUiEventDispatcher.syncEventIds.add(id.toLowerCase()));\r\n // istanbul ignore else\r\n if (!SyncUiEventDispatcher._syncEventTimerId) { // if there is not a timer active, create one\r\n SyncUiEventDispatcher._syncEventTimerId = window.setTimeout(SyncUiEventDispatcher.checkForAdditionalIds, SyncUiEventDispatcher._timeoutPeriod);\r\n } else {\r\n SyncUiEventDispatcher._eventIdAdded = true;\r\n }\r\n }\r\n\r\n /** Trigger registered event processing when timer has expired and no addition eventId are added. */\r\n private static checkForAdditionalIds() {\r\n /* istanbul ignore else */\r\n if (!SyncUiEventDispatcher._eventIdAdded) {\r\n // istanbul ignore else\r\n if (SyncUiEventDispatcher._syncEventTimerId) {\r\n window.clearTimeout(SyncUiEventDispatcher._syncEventTimerId);\r\n SyncUiEventDispatcher._syncEventTimerId = undefined;\r\n } else {\r\n Logger.logError(UiFramework.loggerCategory(this), \"SyncUiEventDispatcher.checkForAdditionalIds - expected _syncEventTimerId to be defined\");\r\n }\r\n SyncUiEventDispatcher._eventIdAdded = false;\r\n // istanbul ignore else\r\n if (SyncUiEventDispatcher.syncEventIds.size > 0) {\r\n const eventIds = new Set<string>();\r\n SyncUiEventDispatcher.syncEventIds.forEach((value) => eventIds.add(value));\r\n SyncUiEventDispatcher._eventIds.clear();\r\n SyncUiEventDispatcher.onSyncUiEvent.emit({ eventIds });\r\n }\r\n return;\r\n }\r\n\r\n // istanbul ignore next\r\n if (SyncUiEventDispatcher._syncEventTimerId) {\r\n window.clearTimeout(SyncUiEventDispatcher._syncEventTimerId);\r\n SyncUiEventDispatcher._syncEventTimerId = undefined;\r\n }\r\n // istanbul ignore next\r\n SyncUiEventDispatcher._eventIdAdded = false;\r\n // if events have been added before the initial timer expired wait half that time to see if events are still being added.\r\n // istanbul ignore next\r\n SyncUiEventDispatcher._syncEventTimerId = window.setTimeout(SyncUiEventDispatcher.checkForAdditionalIds, SyncUiEventDispatcher._secondaryTimeoutPeriod);\r\n }\r\n\r\n /** Checks to see if an eventId of interest is contained in the set of eventIds */\r\n public static hasEventOfInterest(eventIds: Set<string>, idsOfInterest: string[]) {\r\n /* istanbul ignore else */\r\n if ((idsOfInterest.length > 0) && idsOfInterest.some((value: string): boolean => eventIds.has(value.toLowerCase())))\r\n return true;\r\n return false;\r\n }\r\n\r\n // istanbul ignore next\r\n private static _dispatchViewChange() {\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ViewStateChanged);\r\n }\r\n\r\n /** Initializes the Monitoring of Events that trigger dispatching sync events */\r\n public static initialize() {\r\n // clear any registered listeners - this should only be encountered in unit test scenarios\r\n this._unregisterListenerFuncs.forEach((unregisterListenerFunc) => unregisterListenerFunc());\r\n\r\n this._unregisterListenerFuncs.push(FrontstageManager.onContentControlActivatedEvent.addListener(() => {\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ContentControlActivated);\r\n }));\r\n\r\n this._unregisterListenerFuncs.push(FrontstageManager.onContentLayoutActivatedEvent.addListener(() => {\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ContentLayoutActivated);\r\n }));\r\n\r\n this._unregisterListenerFuncs.push(FrontstageManager.onFrontstageActivatedEvent.addListener(() => {\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.FrontstageActivating);\r\n }));\r\n\r\n this._unregisterListenerFuncs.push(FrontstageManager.onFrontstageReadyEvent.addListener(() => {\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.FrontstageReady);\r\n }));\r\n\r\n this._unregisterListenerFuncs.push(FrontstageManager.onModalFrontstageChangedEvent.addListener(() => {\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ModalFrontstageChanged);\r\n }));\r\n\r\n this._unregisterListenerFuncs.push(FrontstageManager.onNavigationAidActivatedEvent.addListener(() => {\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.NavigationAidActivated);\r\n }));\r\n\r\n this._unregisterListenerFuncs.push(FrontstageManager.onToolActivatedEvent.addListener(() => {\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ToolActivated);\r\n }));\r\n\r\n this._unregisterListenerFuncs.push(FrontstageManager.onWidgetStateChangedEvent.addListener(() => {\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.WidgetStateChanged);\r\n }));\r\n\r\n this._unregisterListenerFuncs.push(Backstage.onBackstageEvent.addListener(() => { // eslint-disable-line deprecation/deprecation\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.BackstageEvent);\r\n }));\r\n\r\n this._unregisterListenerFuncs.push(WorkflowManager.onTaskActivatedEvent.addListener(() => { // eslint-disable-line deprecation/deprecation\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.TaskActivated); // eslint-disable-line deprecation/deprecation\r\n }));\r\n\r\n this._unregisterListenerFuncs.push(WorkflowManager.onWorkflowActivatedEvent.addListener(() => { // eslint-disable-line deprecation/deprecation\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.WorkflowActivated); // eslint-disable-line deprecation/deprecation\r\n }));\r\n\r\n this._unregisterListenerFuncs.push(ContentViewManager.onActiveContentChangedEvent.addListener(() => {\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ActiveContentChanged);\r\n }));\r\n\r\n // istanbul ignore else\r\n if (IModelApp && IModelApp.viewManager) {\r\n this._unregisterListenerFuncs.push(IModelApp.viewManager.onSelectedViewportChanged.addListener((args: SelectedViewportChangedArgs) => {\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ActiveViewportChanged);\r\n\r\n // if this is the first view being opened up start the default tool so tool admin is happy.\r\n if (undefined === args.previous) {\r\n IModelApp.toolAdmin.startDefaultTool();// eslint-disable-line @typescript-eslint/no-floating-promises\r\n } else {\r\n // istanbul ignore next\r\n if (args.previous.onViewChanged && typeof args.previous.onViewChanged.removeListener === \"function\") // not set during unit test\r\n args.previous.onViewChanged.removeListener(SyncUiEventDispatcher._dispatchViewChange);\r\n }\r\n // istanbul ignore next\r\n if (args.current) {\r\n if (args.current.onViewChanged && typeof args.current.onViewChanged.addListener === \"function\") // not set during unit test\r\n args.current.onViewChanged.addListener(SyncUiEventDispatcher._dispatchViewChange);\r\n }\r\n }));\r\n }\r\n }\r\n\r\n private static selectionChangedHandler(_ev: SelectionSetEvent) {\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.SelectionSetChanged);\r\n }\r\n\r\n /** This should be called by IModelApp when the active IModelConnection is closed. */\r\n public static clearConnectionEvents(iModelConnection: IModelConnection) {\r\n iModelConnection.selectionSet.onChanged.removeListener(SyncUiEventDispatcher.selectionChangedHandler);\r\n SyncUiEventDispatcher._unregisterListenerFunc && SyncUiEventDispatcher._unregisterListenerFunc();\r\n }\r\n\r\n /** This should be called by IModelApp when the active IModelConnection is established. */\r\n public static initializeConnectionEvents(iModelConnection: IModelConnection) {\r\n if (SyncUiEventDispatcher._unregisterListenerFunc)\r\n SyncUiEventDispatcher._unregisterListenerFunc();\r\n\r\n if (iModelConnection.isBlankConnection()) {\r\n UiFramework.dispatchActionToStore(SessionStateActionId.SetNumItemsSelected, 0);\r\n return;\r\n }\r\n\r\n iModelConnection.selectionSet.onChanged.removeListener(SyncUiEventDispatcher.selectionChangedHandler);\r\n iModelConnection.selectionSet.onChanged.addListener(SyncUiEventDispatcher.selectionChangedHandler);\r\n (iModelConnection.iModelId) ? UiFramework.setActiveIModelId(iModelConnection.iModelId) : /* istanbul ignore next */ \"\";\r\n\r\n // listen for changes from presentation rules selection manager (this is done once an iModelConnection is available to ensure Presentation.selection is valid)\r\n SyncUiEventDispatcher._unregisterListenerFunc = Presentation.selection.selectionChange.addListener((args: SelectionChangeEventArgs, provider: ISelectionProvider) => {\r\n // istanbul ignore if\r\n if (args.level !== 0) {\r\n // don't need to handle sub-selections\r\n return;\r\n }\r\n const selection = provider.getSelection(args.imodel, args.level);\r\n const numSelected = getInstancesCount(selection);\r\n UiFramework.dispatchActionToStore(SessionStateActionId.SetNumItemsSelected, numSelected);\r\n });\r\n\r\n Presentation.selection.scopes.getSelectionScopes(iModelConnection).then((availableScopes: SelectionScope[]) => { // eslint-disable-line @typescript-eslint/no-floating-promises\r\n // istanbul ignore else\r\n if (availableScopes) {\r\n const presentationScopes: PresentationSelectionScope[] = [];\r\n availableScopes.map((scope) => presentationScopes.push(scope));\r\n UiFramework.dispatchActionToStore(SessionStateActionId.SetAvailableSelectionScopes, presentationScopes);\r\n }\r\n });\r\n\r\n const activeSelectionScope = Presentation.selection.scopes.activeScope;\r\n if (activeSelectionScope) {\r\n if (typeof (activeSelectionScope) === \"object\") {\r\n UiFramework.dispatchActionToStore(SessionStateActionId.SetSelectionScope, activeSelectionScope.id);\r\n } else {\r\n UiFramework.dispatchActionToStore(SessionStateActionId.SetSelectionScope, activeSelectionScope);\r\n }\r\n }\r\n }\r\n\r\n}\r\n"]}
@@ -1,7 +1,7 @@
1
1
  /** @packageDocumentation
2
2
  * @module Settings
3
3
  */
4
- import { UiSetting, UiSettingsStorage } from "@itwin/core-react";
4
+ import { UiStateEntry, UiStateStorage } from "@itwin/core-react";
5
5
  import { FrameworkVersionId, UserSettingsProvider } from "../UiFramework";
6
6
  /** Default values that may be specified for [[AppUiSettings]].
7
7
  * @public
@@ -28,14 +28,14 @@ export declare class AppUiSettings implements UserSettingsProvider {
28
28
  private static _settingNamespace;
29
29
  private _settings;
30
30
  private _applyingLocalSettings;
31
- colorTheme: UiSetting<string>;
32
- dragInteraction: UiSetting<boolean>;
33
- frameworkVersion: UiSetting<FrameworkVersionId>;
34
- widgetOpacity: UiSetting<number>;
31
+ colorTheme: UiStateEntry<string>;
32
+ dragInteraction: UiStateEntry<boolean>;
33
+ frameworkVersion: UiStateEntry<FrameworkVersionId>;
34
+ widgetOpacity: UiStateEntry<number>;
35
35
  private setColorTheme;
36
36
  constructor(defaults: Partial<InitialAppUiSettings>);
37
37
  private handleSyncUiEvent;
38
- apply(storage: UiSettingsStorage): Promise<void>;
39
- loadUserSettings(storage: UiSettingsStorage): Promise<void>;
38
+ apply(storage: UiStateStorage): Promise<void>;
39
+ loadUserSettings(storage: UiStateStorage): Promise<void>;
40
40
  }
41
41
  //# sourceMappingURL=AppUiSettings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppUiSettings.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/uistate/AppUiSettings.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEjE,OAAO,EAAE,kBAAkB,EAAe,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAIvF;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,OAAO,CAAC;IACzB,gBAAgB,EAAE,kBAAkB,CAAC;IACrC,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;GAUG;AACH,qBAAa,aAAc,YAAW,oBAAoB;IACxD,SAAgB,UAAU,2BAA2B;IAErD,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAmB;IACnD,OAAO,CAAC,SAAS,CAAgC;IACjD,OAAO,CAAC,sBAAsB,CAAS;IAEhC,UAAU,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IACjC,eAAe,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;IACvC,gBAAgB,EAAE,YAAY,CAAC,kBAAkB,CAAC,CAAC;IACnD,aAAa,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IAE3C,OAAO,CAAC,aAAa,CAInB;gBAEU,QAAQ,EAAE,OAAO,CAAC,oBAAoB,CAAC;IAuBnD,OAAO,CAAC,iBAAiB,CAkBvB;IAEW,KAAK,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ7C,gBAAgB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;CAGtE"}
@@ -5,7 +5,7 @@
5
5
  /** @packageDocumentation
6
6
  * @module Settings
7
7
  */
8
- import { UiSetting } from "@itwin/core-react";
8
+ import { UiStateEntry } from "@itwin/core-react";
9
9
  import { SyncUiEventDispatcher } from "../syncui/SyncUiEventDispatcher";
10
10
  import { UiFramework } from "../UiFramework";
11
11
  /** These are the UI settings that are stored in the Redux store. They control the color theme, the UI version,
@@ -33,25 +33,25 @@ export class AppUiSettings {
33
33
  if (this._applyingLocalSettings)
34
34
  return;
35
35
  if (args.eventIds.has("configurableui:set_theme")) {
36
- await this.colorTheme.saveSetting(UiFramework.getUiSettingsStorage());
36
+ await this.colorTheme.saveSetting(UiFramework.getUiStateStorage());
37
37
  // always store as default theme in local storage to avoid flicker during startup if user is not yet logged-in
38
38
  window.localStorage.setItem("uifw:defaultTheme", UiFramework.getColorTheme());
39
39
  }
40
40
  if (args.eventIds.has("configurableui:set-drag-interaction"))
41
- await this.dragInteraction.saveSetting(UiFramework.getUiSettingsStorage());
41
+ await this.dragInteraction.saveSetting(UiFramework.getUiStateStorage());
42
42
  if (args.eventIds.has("configurableui:set-framework-version"))
43
- await this.frameworkVersion.saveSetting(UiFramework.getUiSettingsStorage());
43
+ await this.frameworkVersion.saveSetting(UiFramework.getUiStateStorage());
44
44
  if (args.eventIds.has("configurableui:set_widget_opacity"))
45
- await this.widgetOpacity.saveSetting(UiFramework.getUiSettingsStorage());
45
+ await this.widgetOpacity.saveSetting(UiFramework.getUiStateStorage());
46
46
  };
47
47
  this._settings = [];
48
- this.colorTheme = new UiSetting(AppUiSettings._settingNamespace, "ColorTheme", UiFramework.getColorTheme, this.setColorTheme, defaults.colorTheme);
48
+ this.colorTheme = new UiStateEntry(AppUiSettings._settingNamespace, "ColorTheme", UiFramework.getColorTheme, this.setColorTheme, defaults.colorTheme);
49
49
  this._settings.push(this.colorTheme);
50
- this.dragInteraction = new UiSetting(AppUiSettings._settingNamespace, "DragInteraction", () => UiFramework.useDragInteraction, (value) => UiFramework.setUseDragInteraction(value), defaults.dragInteraction);
50
+ this.dragInteraction = new UiStateEntry(AppUiSettings._settingNamespace, "DragInteraction", () => UiFramework.useDragInteraction, (value) => UiFramework.setUseDragInteraction(value), defaults.dragInteraction);
51
51
  this._settings.push(this.dragInteraction);
52
- this.frameworkVersion = new UiSetting(AppUiSettings._settingNamespace, "FrameworkVersion", () => UiFramework.uiVersion, (value) => UiFramework.setUiVersion(value), defaults.frameworkVersion);
52
+ this.frameworkVersion = new UiStateEntry(AppUiSettings._settingNamespace, "FrameworkVersion", () => UiFramework.uiVersion, (value) => UiFramework.setUiVersion(value), defaults.frameworkVersion);
53
53
  this._settings.push(this.frameworkVersion);
54
- this.widgetOpacity = new UiSetting(AppUiSettings._settingNamespace, "WidgetOpacity", () => UiFramework.getWidgetOpacity(), (value) => UiFramework.setWidgetOpacity(value), defaults.widgetOpacity);
54
+ this.widgetOpacity = new UiStateEntry(AppUiSettings._settingNamespace, "WidgetOpacity", () => UiFramework.getWidgetOpacity(), (value) => UiFramework.setWidgetOpacity(value), defaults.widgetOpacity);
55
55
  this._settings.push(this.widgetOpacity);
56
56
  SyncUiEventDispatcher.onSyncUiEvent.addListener(this.handleSyncUiEvent);
57
57
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppUiSettings.js","sourceRoot":"","sources":["../../../../src/appui-react/uistate/AppUiSettings.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Settings\r\n */\r\n\r\nimport { UiStateEntry, UiStateStorage } from \"@itwin/core-react\";\r\nimport { SyncUiEventArgs, SyncUiEventDispatcher } from \"../syncui/SyncUiEventDispatcher\";\r\nimport { FrameworkVersionId, UiFramework, UserSettingsProvider } from \"../UiFramework\";\r\n\r\n// cSpell:ignore configurableui\r\n\r\n/** Default values that may be specified for [[AppUiSettings]].\r\n * @public\r\n */\r\nexport interface InitialAppUiSettings {\r\n colorTheme: string;\r\n dragInteraction: boolean;\r\n frameworkVersion: FrameworkVersionId;\r\n widgetOpacity: number;\r\n}\r\n\r\n/** These are the UI settings that are stored in the Redux store. They control the color theme, the UI version,\r\n * how toolbar group buttons work, and the opacity of widgets in 1.0 and floating widget in 2.0 when the cursor\r\n * is not inside them. It is expect that an IModelApp using App UI components will create and register AppUiSettings with\r\n * defaults specific to their application. This would be done by calling the following.\r\n *\r\n * ```ts\r\n * UiFramework.registerUserSettingsProvider(new AppUiSettings(defaults));\r\n * ```\r\n *\r\n * @public\r\n */\r\nexport class AppUiSettings implements UserSettingsProvider {\r\n public readonly providerId = \"AppUiSettingsProvider\";\r\n\r\n private static _settingNamespace = \"AppUiSettings\";\r\n private _settings: Array<UiStateEntry<any>> = [];\r\n private _applyingLocalSettings = false;\r\n\r\n public colorTheme: UiStateEntry<string>;\r\n public dragInteraction: UiStateEntry<boolean>;\r\n public frameworkVersion: UiStateEntry<FrameworkVersionId>;\r\n public widgetOpacity: UiStateEntry<number>;\r\n\r\n private setColorTheme = (theme: string) => {\r\n UiFramework.setColorTheme(theme);\r\n // always store to local storage to avoid flicker during startup if user is not yet logged-in\r\n window.localStorage.setItem(\"uifw:defaultTheme\", theme);\r\n };\r\n\r\n constructor(defaults: Partial<InitialAppUiSettings>) {\r\n this._settings = [];\r\n\r\n this.colorTheme = new UiStateEntry<string>(AppUiSettings._settingNamespace, \"ColorTheme\", UiFramework.getColorTheme, this.setColorTheme, defaults.colorTheme);\r\n this._settings.push(this.colorTheme);\r\n\r\n this.dragInteraction = new UiStateEntry<boolean>(AppUiSettings._settingNamespace, \"DragInteraction\",\r\n () => UiFramework.useDragInteraction,\r\n (value: boolean) => UiFramework.setUseDragInteraction(value), defaults.dragInteraction);\r\n this._settings.push(this.dragInteraction);\r\n\r\n this.frameworkVersion = new UiStateEntry<FrameworkVersionId>(AppUiSettings._settingNamespace, \"FrameworkVersion\",\r\n () => UiFramework.uiVersion,\r\n (value: FrameworkVersionId) => UiFramework.setUiVersion(value), defaults.frameworkVersion);\r\n this._settings.push(this.frameworkVersion);\r\n\r\n this.widgetOpacity = new UiStateEntry<number>(AppUiSettings._settingNamespace, \"WidgetOpacity\",\r\n () => UiFramework.getWidgetOpacity(), (value: number) => UiFramework.setWidgetOpacity(value), defaults.widgetOpacity);\r\n this._settings.push(this.widgetOpacity);\r\n\r\n SyncUiEventDispatcher.onSyncUiEvent.addListener(this.handleSyncUiEvent);\r\n }\r\n\r\n private handleSyncUiEvent = async (args: SyncUiEventArgs) => {\r\n if (this._applyingLocalSettings)\r\n return;\r\n\r\n if (args.eventIds.has(\"configurableui:set_theme\")) {\r\n await this.colorTheme.saveSetting(UiFramework.getUiStateStorage());\r\n // always store as default theme in local storage to avoid flicker during startup if user is not yet logged-in\r\n window.localStorage.setItem(\"uifw:defaultTheme\", UiFramework.getColorTheme());\r\n }\r\n\r\n if (args.eventIds.has(\"configurableui:set-drag-interaction\"))\r\n await this.dragInteraction.saveSetting(UiFramework.getUiStateStorage());\r\n\r\n if (args.eventIds.has(\"configurableui:set-framework-version\"))\r\n await this.frameworkVersion.saveSetting(UiFramework.getUiStateStorage());\r\n\r\n if (args.eventIds.has(\"configurableui:set_widget_opacity\"))\r\n await this.widgetOpacity.saveSetting(UiFramework.getUiStateStorage());\r\n };\r\n\r\n public async apply(storage: UiStateStorage): Promise<void> {\r\n this._applyingLocalSettings = true;\r\n for await (const setting of this._settings) {\r\n await setting.getSettingAndApplyValue(storage);\r\n }\r\n this._applyingLocalSettings = false;\r\n }\r\n\r\n public async loadUserSettings(storage: UiStateStorage): Promise<void> {\r\n await this.apply(storage);\r\n }\r\n}\r\n"]}
@@ -0,0 +1,15 @@
1
+ /** @packageDocumentation
2
+ * @module UiStateStorage
3
+ */
4
+ import { UiStateStorage, UiStateStorageResult } from "@itwin/core-react";
5
+ /**
6
+ * Implementation of [[UiStateStorage]] that uses settings admin from [IModelApp.userPreferences]($core-frontend).
7
+ * @public
8
+ * @deprecated Use [IModelApp.userPreferences]($core-frontend) API directly to store user preferences as a replacement.
9
+ */
10
+ export declare class UserSettingsStorage implements UiStateStorage {
11
+ getSetting(namespace: string, name: string): Promise<UiStateStorageResult>;
12
+ saveSetting(namespace: string, name: string, setting: any): Promise<UiStateStorageResult>;
13
+ deleteSetting(namespace: string, name: string): Promise<UiStateStorageResult>;
14
+ }
15
+ //# sourceMappingURL=UserSettingsStorage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserSettingsStorage.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/uistate/UserSettingsStorage.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAwB,MAAM,mBAAmB,CAAC;AAE/F;;;;GAIG;AACH,qBAAa,mBAAoB,YAAW,cAAc;IAC3C,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAgB1E,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAezF,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;CAa3F"}
@@ -3,52 +3,51 @@
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  /** @packageDocumentation
6
- * @module UiSettings
6
+ * @module UiStateStorage
7
7
  */
8
- /* eslint-disable deprecation/deprecation */
9
8
  import { IModelApp } from "@itwin/core-frontend";
10
- import { UiSettingsStatus } from "@itwin/core-react";
9
+ import { UiStateStorageStatus } from "@itwin/core-react";
11
10
  /**
12
- * Implementation of [[UiSettings]] that uses settings admin from [IModelApp.userPreferences]($core-frontend).
11
+ * Implementation of [[UiStateStorage]] that uses settings admin from [IModelApp.userPreferences]($core-frontend).
13
12
  * @public
14
13
  * @deprecated Use [IModelApp.userPreferences]($core-frontend) API directly to store user preferences as a replacement.
15
14
  */
16
15
  export class UserSettingsStorage {
17
16
  async getSetting(namespace, name) {
18
17
  if (undefined === IModelApp.authorizationClient)
19
- return { status: UiSettingsStatus.AuthorizationError };
18
+ return { status: UiStateStorageStatus.AuthorizationError };
20
19
  const accessToken = await IModelApp.getAccessToken();
21
20
  if (accessToken === "")
22
- return { status: UiSettingsStatus.AuthorizationError };
21
+ return { status: UiStateStorageStatus.AuthorizationError };
23
22
  if (!IModelApp.userPreferences)
24
- return { status: UiSettingsStatus.Uninitialized };
23
+ return { status: UiStateStorageStatus.Uninitialized };
25
24
  const result = await IModelApp.userPreferences.get({ accessToken, key: `${namespace}.${name}` });
26
25
  return {
27
- status: UiSettingsStatus.Success,
26
+ status: UiStateStorageStatus.Success,
28
27
  setting: result,
29
28
  };
30
29
  }
31
30
  async saveSetting(namespace, name, setting) {
32
31
  if (!IModelApp.userPreferences)
33
- return { status: UiSettingsStatus.Uninitialized };
32
+ return { status: UiStateStorageStatus.Uninitialized };
34
33
  const accessToken = await IModelApp.getAccessToken();
35
34
  if (accessToken === "")
36
- return { status: UiSettingsStatus.AuthorizationError };
35
+ return { status: UiStateStorageStatus.AuthorizationError };
37
36
  const result = await IModelApp.userPreferences.save({ accessToken, content: setting, key: `${namespace}.${name}` });
38
37
  return {
39
- status: UiSettingsStatus.Success,
38
+ status: UiStateStorageStatus.Success,
40
39
  setting: result,
41
40
  };
42
41
  }
43
42
  async deleteSetting(namespace, name) {
44
43
  if (!IModelApp.userPreferences)
45
- return { status: UiSettingsStatus.Uninitialized };
44
+ return { status: UiStateStorageStatus.Uninitialized };
46
45
  const accessToken = await IModelApp.getAccessToken();
47
46
  if (accessToken === "")
48
- return { status: UiSettingsStatus.AuthorizationError };
47
+ return { status: UiStateStorageStatus.AuthorizationError };
49
48
  const result = await IModelApp.userPreferences.delete({ accessToken, key: `${namespace}.${name}` });
50
49
  return {
51
- status: UiSettingsStatus.Success,
50
+ status: UiStateStorageStatus.Success,
52
51
  setting: result,
53
52
  };
54
53
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserSettingsStorage.js","sourceRoot":"","sources":["../../../../src/appui-react/uistate/UserSettingsStorage.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAwC,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE/F;;;;GAIG;AACH,MAAM,OAAO,mBAAmB;IACvB,KAAK,CAAC,UAAU,CAAC,SAAiB,EAAE,IAAY;QACrD,IAAI,SAAS,KAAK,SAAS,CAAC,mBAAmB;YAC7C,OAAO,EAAE,MAAM,EAAE,oBAAoB,CAAC,kBAAkB,EAAE,CAAC;QAC7D,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,cAAc,EAAE,CAAC;QACrD,IAAI,WAAW,KAAK,EAAE;YACpB,OAAO,EAAE,MAAM,EAAE,oBAAoB,CAAC,kBAAkB,EAAE,CAAC;QAE7D,IAAI,CAAC,SAAS,CAAC,eAAe;YAC5B,OAAO,EAAE,MAAM,EAAE,oBAAoB,CAAC,aAAa,EAAE,CAAC;QACxD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,SAAS,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;QACjG,OAAO;YACL,MAAM,EAAE,oBAAoB,CAAC,OAAO;YACpC,OAAO,EAAE,MAAM;SAChB,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,SAAiB,EAAE,IAAY,EAAE,OAAY;QACpE,IAAI,CAAC,SAAS,CAAC,eAAe;YAC5B,OAAO,EAAE,MAAM,EAAE,oBAAoB,CAAC,aAAa,EAAE,CAAC;QAExD,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,cAAc,EAAE,CAAC;QACrD,IAAI,WAAW,KAAK,EAAE;YACpB,OAAO,EAAE,MAAM,EAAE,oBAAoB,CAAC,kBAAkB,EAAE,CAAC;QAE7D,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,SAAS,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;QACpH,OAAO;YACL,MAAM,EAAE,oBAAoB,CAAC,OAAO;YACpC,OAAO,EAAE,MAAM;SAChB,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,SAAiB,EAAE,IAAY;QACxD,IAAI,CAAC,SAAS,CAAC,eAAe;YAC5B,OAAO,EAAE,MAAM,EAAE,oBAAoB,CAAC,aAAa,EAAE,CAAC;QAExD,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,cAAc,EAAE,CAAC;QACrD,IAAI,WAAW,KAAK,EAAE;YACpB,OAAO,EAAE,MAAM,EAAE,oBAAoB,CAAC,kBAAkB,EAAE,CAAC;QAC7D,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,SAAS,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;QACpG,OAAO;YACL,MAAM,EAAE,oBAAoB,CAAC,OAAO;YACpC,OAAO,EAAE,MAAM;SAChB,CAAC;IACJ,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module UiStateStorage\r\n */\r\n\r\nimport { IModelApp } from \"@itwin/core-frontend\";\r\nimport { UiStateStorage, UiStateStorageResult, UiStateStorageStatus } from \"@itwin/core-react\";\r\n\r\n/**\r\n * Implementation of [[UiStateStorage]] that uses settings admin from [IModelApp.userPreferences]($core-frontend).\r\n * @public\r\n * @deprecated Use [IModelApp.userPreferences]($core-frontend) API directly to store user preferences as a replacement.\r\n */\r\nexport class UserSettingsStorage implements UiStateStorage {\r\n public async getSetting(namespace: string, name: string): Promise<UiStateStorageResult> {\r\n if (undefined === IModelApp.authorizationClient)\r\n return { status: UiStateStorageStatus.AuthorizationError };\r\n const accessToken = await IModelApp.getAccessToken();\r\n if (accessToken === \"\")\r\n return { status: UiStateStorageStatus.AuthorizationError };\r\n\r\n if (!IModelApp.userPreferences)\r\n return { status: UiStateStorageStatus.Uninitialized };\r\n const result = await IModelApp.userPreferences.get({ accessToken, key: `${namespace}.${name}` });\r\n return {\r\n status: UiStateStorageStatus.Success,\r\n setting: result,\r\n };\r\n }\r\n\r\n public async saveSetting(namespace: string, name: string, setting: any): Promise<UiStateStorageResult> {\r\n if (!IModelApp.userPreferences)\r\n return { status: UiStateStorageStatus.Uninitialized };\r\n\r\n const accessToken = await IModelApp.getAccessToken();\r\n if (accessToken === \"\")\r\n return { status: UiStateStorageStatus.AuthorizationError };\r\n\r\n const result = await IModelApp.userPreferences.save({ accessToken, content: setting, key: `${namespace}.${name}` });\r\n return {\r\n status: UiStateStorageStatus.Success,\r\n setting: result,\r\n };\r\n }\r\n\r\n public async deleteSetting(namespace: string, name: string): Promise<UiStateStorageResult> {\r\n if (!IModelApp.userPreferences)\r\n return { status: UiStateStorageStatus.Uninitialized };\r\n\r\n const accessToken = await IModelApp.getAccessToken();\r\n if (accessToken === \"\")\r\n return { status: UiStateStorageStatus.AuthorizationError };\r\n const result = await IModelApp.userPreferences.delete({ accessToken, key: `${namespace}.${name}` });\r\n return {\r\n status: UiStateStorageStatus.Success,\r\n setting: result,\r\n };\r\n }\r\n}\r\n"]}
@@ -0,0 +1,20 @@
1
+ /** @packageDocumentation
2
+ * @module UiStateStorage
3
+ */
4
+ import * as React from "react";
5
+ import { UiStateStorage } from "@itwin/core-react";
6
+ /** @public */
7
+ export declare function useUiStateStorageHandler(): UiStateStorage;
8
+ /** @internal */
9
+ export declare const UiStateStorageContext: React.Context<UiStateStorage>;
10
+ /** Properties for the [[UiStateStorageHandler]] component.
11
+ * @public
12
+ */
13
+ export interface UiSettingsProviderProps {
14
+ children?: React.ReactNode;
15
+ }
16
+ /** Allows to provide a custom [[UiStateStorage]] implementation to persist UI settings.
17
+ * @public
18
+ */
19
+ export declare function UiStateStorageHandler(props: UiSettingsProviderProps): JSX.Element;
20
+ //# sourceMappingURL=useUiStateStorage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useUiStateStorage.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/uistate/useUiStateStorage.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAqB,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAItE,cAAc;AACd,wBAAgB,wBAAwB,IAAI,cAAc,CAEzD;AAED,gBAAgB;AAChB,eAAO,MAAM,qBAAqB,+BAA+D,CAAC;AAGlG;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,uBAAuB,eAkBnE"}
@@ -0,0 +1,33 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ /** @packageDocumentation
6
+ * @module UiStateStorage
7
+ */
8
+ import * as React from "react";
9
+ import { LocalStateStorage } from "@itwin/core-react";
10
+ import { UiFramework } from "../UiFramework";
11
+ import { SyncUiEventDispatcher, SyncUiEventId } from "../syncui/SyncUiEventDispatcher";
12
+ /** @public */
13
+ export function useUiStateStorageHandler() {
14
+ return React.useContext(UiStateStorageContext);
15
+ }
16
+ /** @internal */
17
+ export const UiStateStorageContext = React.createContext(new LocalStateStorage()); // eslint-disable-line @typescript-eslint/naming-convention
18
+ UiStateStorageContext.displayName = "uifw:UiStateStorageContext";
19
+ /** Allows to provide a custom [[UiStateStorage]] implementation to persist UI settings.
20
+ * @public
21
+ */
22
+ export function UiStateStorageHandler(props) {
23
+ const [stateStorage, setStateStorage] = React.useState(UiFramework.getUiStateStorage());
24
+ React.useEffect(() => {
25
+ const handleSyncUiEvent = (args) => {
26
+ if (SyncUiEventDispatcher.hasEventOfInterest(args.eventIds, [SyncUiEventId.UiStateStorageChanged]))
27
+ setStateStorage(UiFramework.getUiStateStorage());
28
+ };
29
+ return SyncUiEventDispatcher.onSyncUiEvent.addListener(handleSyncUiEvent);
30
+ });
31
+ return (React.createElement(UiStateStorageContext.Provider, { children: props.children, value: stateStorage }));
32
+ }
33
+ //# sourceMappingURL=useUiStateStorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useUiStateStorage.js","sourceRoot":"","sources":["../../../../src/appui-react/uistate/useUiStateStorage.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAkB,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAmB,qBAAqB,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAExG,cAAc;AACd,MAAM,UAAU,wBAAwB;IACtC,OAAO,KAAK,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;AACjD,CAAC;AAED,gBAAgB;AAChB,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC,aAAa,CAAiB,IAAI,iBAAiB,EAAE,CAAC,CAAC,CAAC,2DAA2D;AAC9J,qBAAqB,CAAC,WAAW,GAAG,4BAA4B,CAAC;AASjE;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAA8B;IAClE,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAExF,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,iBAAiB,GAAG,CAAC,IAAqB,EAAQ,EAAE;YACxD,IAAI,qBAAqB,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;gBAChG,eAAe,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC,CAAC;QACrD,CAAC,CAAC;QAEF,OAAO,qBAAqB,CAAC,aAAa,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IAEH,OAAO,CACL,oBAAC,qBAAqB,CAAC,QAAQ,IAC7B,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,KAAK,EAAE,YAAY,GACnB,CACH,CAAC;AACJ,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module UiStateStorage\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport { LocalStateStorage, UiStateStorage } from \"@itwin/core-react\";\r\nimport { UiFramework } from \"../UiFramework\";\r\nimport { SyncUiEventArgs, SyncUiEventDispatcher, SyncUiEventId } from \"../syncui/SyncUiEventDispatcher\";\r\n\r\n/** @public */\r\nexport function useUiStateStorageHandler(): UiStateStorage {\r\n return React.useContext(UiStateStorageContext);\r\n}\r\n\r\n/** @internal */\r\nexport const UiStateStorageContext = React.createContext<UiStateStorage>(new LocalStateStorage()); // eslint-disable-line @typescript-eslint/naming-convention\r\nUiStateStorageContext.displayName = \"uifw:UiStateStorageContext\";\r\n\r\n/** Properties for the [[UiStateStorageHandler]] component.\r\n * @public\r\n */\r\nexport interface UiSettingsProviderProps {\r\n children?: React.ReactNode;\r\n}\r\n\r\n/** Allows to provide a custom [[UiStateStorage]] implementation to persist UI settings.\r\n * @public\r\n */\r\nexport function UiStateStorageHandler(props: UiSettingsProviderProps) {\r\n const [stateStorage, setStateStorage] = React.useState(UiFramework.getUiStateStorage());\r\n\r\n React.useEffect(() => {\r\n const handleSyncUiEvent = (args: SyncUiEventArgs): void => {\r\n if (SyncUiEventDispatcher.hasEventOfInterest(args.eventIds, [SyncUiEventId.UiStateStorageChanged]))\r\n setStateStorage(UiFramework.getUiStateStorage());\r\n };\r\n\r\n return SyncUiEventDispatcher.onSyncUiEvent.addListener(handleSyncUiEvent);\r\n });\r\n\r\n return (\r\n <UiStateStorageContext.Provider\r\n children={props.children} // eslint-disable-line react/no-children-prop\r\n value={stateStorage}\r\n />\r\n );\r\n}\r\n"]}
@@ -2,7 +2,7 @@
2
2
  * @module Utilities
3
3
  */
4
4
  /// <reference types="react" />
5
- import { UiSettings } from "@itwin/core-react";
5
+ import { UiStateStorage } from "@itwin/core-react";
6
6
  import { UserSettingsProvider } from "../UiFramework";
7
7
  /** Class that maintain UiShowHide user settings between sessions
8
8
  * @internal
@@ -14,10 +14,10 @@ export declare class UiShowHideSettingsProvider implements UserSettingsProvider
14
14
  private static _snapWidgetOpacityKey;
15
15
  readonly providerId = "UiShowHideSettingsProvider";
16
16
  static initialize(): void;
17
- loadUserSettings(storage: UiSettings): Promise<void>;
18
- static storeAutoHideUi(v: boolean, storage?: UiSettings): Promise<void>;
19
- static storeUseProximityOpacity(v: boolean, storage?: UiSettings): Promise<void>;
20
- static storeSnapWidgetOpacity(v: boolean, storage?: UiSettings): Promise<void>;
17
+ loadUserSettings(storage: UiStateStorage): Promise<void>;
18
+ static storeAutoHideUi(v: boolean, storage?: UiStateStorage): Promise<void>;
19
+ static storeUseProximityOpacity(v: boolean, storage?: UiStateStorage): Promise<void>;
20
+ static storeSnapWidgetOpacity(v: boolean, storage?: UiStateStorage): Promise<void>;
21
21
  }
22
22
  /** The default inactivity time.
23
23
  * @internal
@@ -1 +1 @@
1
- {"version":3,"file":"UiShowHideManager.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/utils/UiShowHideManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UiShowHideManager.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/utils/UiShowHideManager.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@
5
5
  /** @packageDocumentation
6
6
  * @module Utilities
7
7
  */
8
- import { UiSettingsStatus } from "@itwin/core-react";
8
+ import { UiStateStorageStatus } from "@itwin/core-react";
9
9
  import { SyncUiEventDispatcher, SyncUiEventId } from "../syncui/SyncUiEventDispatcher";
10
10
  import { UiFramework } from "../UiFramework";
11
11
  /** Class that maintain UiShowHide user settings between sessions
@@ -20,23 +20,23 @@ export class UiShowHideSettingsProvider {
20
20
  }
21
21
  async loadUserSettings(storage) {
22
22
  let result = await storage.getSetting(UiShowHideSettingsProvider._settingsNamespace, UiShowHideSettingsProvider._autoHideUiKey);
23
- if (result.status === UiSettingsStatus.Success)
23
+ if (result.status === UiStateStorageStatus.Success)
24
24
  UiShowHideManager.setAutoHideUi(result.setting);
25
25
  result = await storage.getSetting(UiShowHideSettingsProvider._settingsNamespace, UiShowHideSettingsProvider._useProximityOpacityKey);
26
- if (result.status === UiSettingsStatus.Success)
26
+ if (result.status === UiStateStorageStatus.Success)
27
27
  UiShowHideManager.setUseProximityOpacity(result.setting);
28
28
  result = await storage.getSetting(UiShowHideSettingsProvider._settingsNamespace, UiShowHideSettingsProvider._snapWidgetOpacityKey);
29
- if (result.status === UiSettingsStatus.Success)
29
+ if (result.status === UiStateStorageStatus.Success)
30
30
  UiShowHideManager.setSnapWidgetOpacity(result.setting);
31
31
  }
32
32
  static async storeAutoHideUi(v, storage) {
33
- void (storage !== null && storage !== void 0 ? storage : UiFramework.getUiSettingsStorage()).saveSetting(this._settingsNamespace, this._autoHideUiKey, v);
33
+ void (storage !== null && storage !== void 0 ? storage : UiFramework.getUiStateStorage()).saveSetting(this._settingsNamespace, this._autoHideUiKey, v);
34
34
  }
35
35
  static async storeUseProximityOpacity(v, storage) {
36
- void (storage !== null && storage !== void 0 ? storage : UiFramework.getUiSettingsStorage()).saveSetting(this._settingsNamespace, this._useProximityOpacityKey, v);
36
+ void (storage !== null && storage !== void 0 ? storage : UiFramework.getUiStateStorage()).saveSetting(this._settingsNamespace, this._useProximityOpacityKey, v);
37
37
  }
38
38
  static async storeSnapWidgetOpacity(v, storage) {
39
- void (storage !== null && storage !== void 0 ? storage : UiFramework.getUiSettingsStorage()).saveSetting(this._settingsNamespace, this._snapWidgetOpacityKey, v);
39
+ void (storage !== null && storage !== void 0 ? storage : UiFramework.getUiStateStorage()).saveSetting(this._settingsNamespace, this._snapWidgetOpacityKey, v);
40
40
  }
41
41
  }
42
42
  UiShowHideSettingsProvider._settingsNamespace = "AppUiSettings";
@@ -1 +1 @@
1
- {"version":3,"file":"UiShowHideManager.js","sourceRoot":"","sources":["../../../../src/appui-react/utils/UiShowHideManager.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Utilities\r\n */\r\n\r\nimport { UiSettings, UiSettingsStatus } from \"@itwin/core-react\";\r\nimport { SyncUiEventDispatcher, SyncUiEventId } from \"../syncui/SyncUiEventDispatcher\";\r\nimport { UiFramework, UserSettingsProvider } from \"../UiFramework\";\r\n\r\n/** Class that maintain UiShowHide user settings between sessions\r\n * @internal\r\n */\r\nexport class UiShowHideSettingsProvider implements UserSettingsProvider {\r\n private static _settingsNamespace = \"AppUiSettings\";\r\n private static _autoHideUiKey = \"AutoHideUi\";\r\n private static _useProximityOpacityKey = \"UseProximityOpacity\";\r\n private static _snapWidgetOpacityKey = \"SnapWidgetOpacity\";\r\n public readonly providerId = \"UiShowHideSettingsProvider\";\r\n\r\n public static initialize() {\r\n UiFramework.registerUserSettingsProvider(new UiShowHideSettingsProvider());\r\n }\r\n\r\n public async loadUserSettings(storage: UiSettings): Promise<void> {\r\n let result = await storage.getSetting(UiShowHideSettingsProvider._settingsNamespace, UiShowHideSettingsProvider._autoHideUiKey);\r\n if (result.status === UiSettingsStatus.Success)\r\n UiShowHideManager.setAutoHideUi(result.setting);\r\n\r\n result = await storage.getSetting(UiShowHideSettingsProvider._settingsNamespace, UiShowHideSettingsProvider._useProximityOpacityKey);\r\n if (result.status === UiSettingsStatus.Success)\r\n UiShowHideManager.setUseProximityOpacity(result.setting);\r\n\r\n result = await storage.getSetting(UiShowHideSettingsProvider._settingsNamespace, UiShowHideSettingsProvider._snapWidgetOpacityKey);\r\n if (result.status === UiSettingsStatus.Success)\r\n UiShowHideManager.setSnapWidgetOpacity(result.setting);\r\n }\r\n\r\n public static async storeAutoHideUi(v: boolean, storage?: UiSettings) {\r\n void (storage ?? UiFramework.getUiSettingsStorage()).saveSetting(this._settingsNamespace, this._autoHideUiKey, v);\r\n }\r\n\r\n public static async storeUseProximityOpacity(v: boolean, storage?: UiSettings) {\r\n void (storage ?? UiFramework.getUiSettingsStorage()).saveSetting(this._settingsNamespace, this._useProximityOpacityKey, v);\r\n }\r\n\r\n public static async storeSnapWidgetOpacity(v: boolean, storage?: UiSettings) {\r\n void (storage ?? UiFramework.getUiSettingsStorage()).saveSetting(this._settingsNamespace, this._snapWidgetOpacityKey, v);\r\n }\r\n}\r\n\r\n/** The default inactivity time.\r\n * @internal\r\n */\r\nexport const INACTIVITY_TIME_DEFAULT = 3500; /** Wait 3.5 seconds */\r\n\r\n/** Maintains Ui Show/Hide state. The `Ui` includes widgets, panels and the status bar.\r\n * @public\r\n */\r\nexport class UiShowHideManager {\r\n private static _isUiVisible: boolean = true;\r\n private static _autoHideUi: boolean = false;\r\n private static _showHidePanels: boolean = false;\r\n private static _showHideFooter: boolean = false;\r\n private static _inactivityTime: number = INACTIVITY_TIME_DEFAULT;\r\n private static _timeout: NodeJS.Timeout;\r\n private static _useProximityOpacity: boolean = true;\r\n private static _snapWidgetOpacity: boolean = false;\r\n\r\n /** Determines if the Ui is visible */\r\n public static get isUiVisible() {\r\n return UiShowHideManager._isUiVisible;\r\n }\r\n public static set isUiVisible(visible: boolean) {\r\n UiShowHideManager._isUiVisible = visible;\r\n }\r\n\r\n /** @internal */\r\n public static setAutoHideUi(value: boolean) {\r\n UiShowHideManager._autoHideUi = value;\r\n }\r\n\r\n /** @internal */\r\n public static setUseProximityOpacity(value: boolean) {\r\n UiShowHideManager._useProximityOpacity = value;\r\n }\r\n\r\n /** @internal */\r\n public static setSnapWidgetOpacity(value: boolean) {\r\n UiShowHideManager._snapWidgetOpacity = value;\r\n }\r\n\r\n /** Determines whether the `auto-hide Ui` feature is on. Defaults to false.\r\n * When true, the Ui automatically hides after a few seconds of inactivity.\r\n */\r\n public static get autoHideUi(): boolean {\r\n return UiShowHideManager._autoHideUi;\r\n }\r\n\r\n public static set autoHideUi(autoHide: boolean) {\r\n void UiShowHideSettingsProvider.storeAutoHideUi(autoHide);\r\n UiShowHideManager._autoHideUi = autoHide;\r\n SyncUiEventDispatcher.dispatchImmediateSyncUiEvent(SyncUiEventId.ShowHideManagerSettingChange);\r\n }\r\n /** Determines whether the widget panels are shown and hidden. Defaults to false. */\r\n public static get showHidePanels(): boolean {\r\n return UiShowHideManager._showHidePanels;\r\n }\r\n public static set showHidePanels(showHide: boolean) {\r\n UiShowHideManager._showHidePanels = showHide;\r\n UiFramework.onUiVisibilityChanged.emit({ visible: UiFramework.getIsUiVisible() });\r\n }\r\n\r\n /** Determines whether the status bar is shown and hidden. Defaults to false. */\r\n public static get showHideFooter(): boolean {\r\n return UiShowHideManager._showHideFooter;\r\n }\r\n public static set showHideFooter(showHide: boolean) {\r\n UiShowHideManager._showHideFooter = showHide;\r\n UiFramework.onUiVisibilityChanged.emit({ visible: UiFramework.getIsUiVisible() });\r\n }\r\n\r\n /** Determines the amount of inactivity time before the Ui is hidden. Defaults to 3.5 seconds. */\r\n public static get inactivityTime(): number {\r\n return UiShowHideManager._inactivityTime;\r\n }\r\n public static set inactivityTime(time: number) {\r\n UiShowHideManager._inactivityTime = time;\r\n }\r\n\r\n /** Determines whether the proximity of the mouse should alter the opacity of a toolbar. Defaults to true. */\r\n public static get useProximityOpacity(): boolean {\r\n return UiShowHideManager._useProximityOpacity;\r\n }\r\n public static set useProximityOpacity(value: boolean) {\r\n UiShowHideManager._useProximityOpacity = value;\r\n void UiShowHideSettingsProvider.storeUseProximityOpacity(value);\r\n SyncUiEventDispatcher.dispatchImmediateSyncUiEvent(SyncUiEventId.ShowHideManagerSettingChange);\r\n UiFramework.onUiVisibilityChanged.emit({ visible: UiFramework.getIsUiVisible() });\r\n }\r\n\r\n /** Determines whether the opacity of a toolbar should snap. Defaults to false. */\r\n public static get snapWidgetOpacity(): boolean {\r\n return UiShowHideManager._snapWidgetOpacity;\r\n }\r\n public static set snapWidgetOpacity(value: boolean) {\r\n UiShowHideManager._snapWidgetOpacity = value;\r\n void UiShowHideSettingsProvider.storeSnapWidgetOpacity(value);\r\n SyncUiEventDispatcher.dispatchImmediateSyncUiEvent(SyncUiEventId.ShowHideManagerSettingChange);\r\n UiFramework.onUiVisibilityChanged.emit({ visible: UiFramework.getIsUiVisible() });\r\n }\r\n\r\n /** Handler for when a Frontstage is ready */\r\n public static handleFrontstageReady() {\r\n if (!UiShowHideManager._autoHideUi)\r\n return;\r\n\r\n UiShowHideManager.showUiAndResetTimer();\r\n }\r\n\r\n /** Handler for when the mouse moves over the content area */\r\n public static handleContentMouseMove(_event?: React.MouseEvent<HTMLElement, MouseEvent>) {\r\n if (!UiShowHideManager._autoHideUi)\r\n return;\r\n\r\n UiShowHideManager.showUiAndResetTimer();\r\n }\r\n\r\n /** Handler for when the mouse enters a widget */\r\n public static handleWidgetMouseEnter(_event?: React.MouseEvent<HTMLElement, MouseEvent>) {\r\n if (!UiShowHideManager._autoHideUi)\r\n return;\r\n\r\n UiShowHideManager.showUiAndCancelTimer();\r\n }\r\n\r\n /** Shows the Ui and resets the inactivity timer */\r\n public static showUiAndResetTimer() {\r\n setTimeout(() => {\r\n UiShowHideManager.showUi();\r\n UiShowHideManager.resetTimer();\r\n });\r\n }\r\n\r\n /** Shows the Ui and cancels the inactivity timer */\r\n public static showUiAndCancelTimer() {\r\n setTimeout(() => {\r\n UiShowHideManager.showUi();\r\n UiShowHideManager.cancelTimer();\r\n });\r\n }\r\n\r\n private static cancelTimer() {\r\n clearTimeout(UiShowHideManager._timeout);\r\n }\r\n\r\n private static resetTimer() {\r\n UiShowHideManager.cancelTimer();\r\n UiShowHideManager._timeout = setTimeout(UiShowHideManager.hideUi, UiShowHideManager._inactivityTime);\r\n }\r\n\r\n private static showUi() {\r\n UiFramework.setIsUiVisible(true);\r\n }\r\n\r\n private static hideUi() {\r\n UiFramework.setIsUiVisible(false);\r\n }\r\n\r\n /** @internal */\r\n public static terminate() {\r\n UiShowHideManager.cancelTimer();\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"UiShowHideManager.js","sourceRoot":"","sources":["../../../../src/appui-react/utils/UiShowHideManager.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Utilities\r\n */\r\n\r\nimport { UiStateStorage, UiStateStorageStatus } from \"@itwin/core-react\";\r\nimport { SyncUiEventDispatcher, SyncUiEventId } from \"../syncui/SyncUiEventDispatcher\";\r\nimport { UiFramework, UserSettingsProvider } from \"../UiFramework\";\r\n\r\n/** Class that maintain UiShowHide user settings between sessions\r\n * @internal\r\n */\r\nexport class UiShowHideSettingsProvider implements UserSettingsProvider {\r\n private static _settingsNamespace = \"AppUiSettings\";\r\n private static _autoHideUiKey = \"AutoHideUi\";\r\n private static _useProximityOpacityKey = \"UseProximityOpacity\";\r\n private static _snapWidgetOpacityKey = \"SnapWidgetOpacity\";\r\n public readonly providerId = \"UiShowHideSettingsProvider\";\r\n\r\n public static initialize() {\r\n UiFramework.registerUserSettingsProvider(new UiShowHideSettingsProvider());\r\n }\r\n\r\n public async loadUserSettings(storage: UiStateStorage): Promise<void> {\r\n let result = await storage.getSetting(UiShowHideSettingsProvider._settingsNamespace, UiShowHideSettingsProvider._autoHideUiKey);\r\n if (result.status === UiStateStorageStatus.Success)\r\n UiShowHideManager.setAutoHideUi(result.setting);\r\n\r\n result = await storage.getSetting(UiShowHideSettingsProvider._settingsNamespace, UiShowHideSettingsProvider._useProximityOpacityKey);\r\n if (result.status === UiStateStorageStatus.Success)\r\n UiShowHideManager.setUseProximityOpacity(result.setting);\r\n\r\n result = await storage.getSetting(UiShowHideSettingsProvider._settingsNamespace, UiShowHideSettingsProvider._snapWidgetOpacityKey);\r\n if (result.status === UiStateStorageStatus.Success)\r\n UiShowHideManager.setSnapWidgetOpacity(result.setting);\r\n }\r\n\r\n public static async storeAutoHideUi(v: boolean, storage?: UiStateStorage) {\r\n void (storage ?? UiFramework.getUiStateStorage()).saveSetting(this._settingsNamespace, this._autoHideUiKey, v);\r\n }\r\n\r\n public static async storeUseProximityOpacity(v: boolean, storage?: UiStateStorage) {\r\n void (storage ?? UiFramework.getUiStateStorage()).saveSetting(this._settingsNamespace, this._useProximityOpacityKey, v);\r\n }\r\n\r\n public static async storeSnapWidgetOpacity(v: boolean, storage?: UiStateStorage) {\r\n void (storage ?? UiFramework.getUiStateStorage()).saveSetting(this._settingsNamespace, this._snapWidgetOpacityKey, v);\r\n }\r\n}\r\n\r\n/** The default inactivity time.\r\n * @internal\r\n */\r\nexport const INACTIVITY_TIME_DEFAULT = 3500; /** Wait 3.5 seconds */\r\n\r\n/** Maintains Ui Show/Hide state. The `Ui` includes widgets, panels and the status bar.\r\n * @public\r\n */\r\nexport class UiShowHideManager {\r\n private static _isUiVisible: boolean = true;\r\n private static _autoHideUi: boolean = false;\r\n private static _showHidePanels: boolean = false;\r\n private static _showHideFooter: boolean = false;\r\n private static _inactivityTime: number = INACTIVITY_TIME_DEFAULT;\r\n private static _timeout: NodeJS.Timeout;\r\n private static _useProximityOpacity: boolean = true;\r\n private static _snapWidgetOpacity: boolean = false;\r\n\r\n /** Determines if the Ui is visible */\r\n public static get isUiVisible() {\r\n return UiShowHideManager._isUiVisible;\r\n }\r\n public static set isUiVisible(visible: boolean) {\r\n UiShowHideManager._isUiVisible = visible;\r\n }\r\n\r\n /** @internal */\r\n public static setAutoHideUi(value: boolean) {\r\n UiShowHideManager._autoHideUi = value;\r\n }\r\n\r\n /** @internal */\r\n public static setUseProximityOpacity(value: boolean) {\r\n UiShowHideManager._useProximityOpacity = value;\r\n }\r\n\r\n /** @internal */\r\n public static setSnapWidgetOpacity(value: boolean) {\r\n UiShowHideManager._snapWidgetOpacity = value;\r\n }\r\n\r\n /** Determines whether the `auto-hide Ui` feature is on. Defaults to false.\r\n * When true, the Ui automatically hides after a few seconds of inactivity.\r\n */\r\n public static get autoHideUi(): boolean {\r\n return UiShowHideManager._autoHideUi;\r\n }\r\n\r\n public static set autoHideUi(autoHide: boolean) {\r\n void UiShowHideSettingsProvider.storeAutoHideUi(autoHide);\r\n UiShowHideManager._autoHideUi = autoHide;\r\n SyncUiEventDispatcher.dispatchImmediateSyncUiEvent(SyncUiEventId.ShowHideManagerSettingChange);\r\n }\r\n /** Determines whether the widget panels are shown and hidden. Defaults to false. */\r\n public static get showHidePanels(): boolean {\r\n return UiShowHideManager._showHidePanels;\r\n }\r\n public static set showHidePanels(showHide: boolean) {\r\n UiShowHideManager._showHidePanels = showHide;\r\n UiFramework.onUiVisibilityChanged.emit({ visible: UiFramework.getIsUiVisible() });\r\n }\r\n\r\n /** Determines whether the status bar is shown and hidden. Defaults to false. */\r\n public static get showHideFooter(): boolean {\r\n return UiShowHideManager._showHideFooter;\r\n }\r\n public static set showHideFooter(showHide: boolean) {\r\n UiShowHideManager._showHideFooter = showHide;\r\n UiFramework.onUiVisibilityChanged.emit({ visible: UiFramework.getIsUiVisible() });\r\n }\r\n\r\n /** Determines the amount of inactivity time before the Ui is hidden. Defaults to 3.5 seconds. */\r\n public static get inactivityTime(): number {\r\n return UiShowHideManager._inactivityTime;\r\n }\r\n public static set inactivityTime(time: number) {\r\n UiShowHideManager._inactivityTime = time;\r\n }\r\n\r\n /** Determines whether the proximity of the mouse should alter the opacity of a toolbar. Defaults to true. */\r\n public static get useProximityOpacity(): boolean {\r\n return UiShowHideManager._useProximityOpacity;\r\n }\r\n public static set useProximityOpacity(value: boolean) {\r\n UiShowHideManager._useProximityOpacity = value;\r\n void UiShowHideSettingsProvider.storeUseProximityOpacity(value);\r\n SyncUiEventDispatcher.dispatchImmediateSyncUiEvent(SyncUiEventId.ShowHideManagerSettingChange);\r\n UiFramework.onUiVisibilityChanged.emit({ visible: UiFramework.getIsUiVisible() });\r\n }\r\n\r\n /** Determines whether the opacity of a toolbar should snap. Defaults to false. */\r\n public static get snapWidgetOpacity(): boolean {\r\n return UiShowHideManager._snapWidgetOpacity;\r\n }\r\n public static set snapWidgetOpacity(value: boolean) {\r\n UiShowHideManager._snapWidgetOpacity = value;\r\n void UiShowHideSettingsProvider.storeSnapWidgetOpacity(value);\r\n SyncUiEventDispatcher.dispatchImmediateSyncUiEvent(SyncUiEventId.ShowHideManagerSettingChange);\r\n UiFramework.onUiVisibilityChanged.emit({ visible: UiFramework.getIsUiVisible() });\r\n }\r\n\r\n /** Handler for when a Frontstage is ready */\r\n public static handleFrontstageReady() {\r\n if (!UiShowHideManager._autoHideUi)\r\n return;\r\n\r\n UiShowHideManager.showUiAndResetTimer();\r\n }\r\n\r\n /** Handler for when the mouse moves over the content area */\r\n public static handleContentMouseMove(_event?: React.MouseEvent<HTMLElement, MouseEvent>) {\r\n if (!UiShowHideManager._autoHideUi)\r\n return;\r\n\r\n UiShowHideManager.showUiAndResetTimer();\r\n }\r\n\r\n /** Handler for when the mouse enters a widget */\r\n public static handleWidgetMouseEnter(_event?: React.MouseEvent<HTMLElement, MouseEvent>) {\r\n if (!UiShowHideManager._autoHideUi)\r\n return;\r\n\r\n UiShowHideManager.showUiAndCancelTimer();\r\n }\r\n\r\n /** Shows the Ui and resets the inactivity timer */\r\n public static showUiAndResetTimer() {\r\n setTimeout(() => {\r\n UiShowHideManager.showUi();\r\n UiShowHideManager.resetTimer();\r\n });\r\n }\r\n\r\n /** Shows the Ui and cancels the inactivity timer */\r\n public static showUiAndCancelTimer() {\r\n setTimeout(() => {\r\n UiShowHideManager.showUi();\r\n UiShowHideManager.cancelTimer();\r\n });\r\n }\r\n\r\n private static cancelTimer() {\r\n clearTimeout(UiShowHideManager._timeout);\r\n }\r\n\r\n private static resetTimer() {\r\n UiShowHideManager.cancelTimer();\r\n UiShowHideManager._timeout = setTimeout(UiShowHideManager.hideUi, UiShowHideManager._inactivityTime);\r\n }\r\n\r\n private static showUi() {\r\n UiFramework.setIsUiVisible(true);\r\n }\r\n\r\n private static hideUi() {\r\n UiFramework.setIsUiVisible(false);\r\n }\r\n\r\n /** @internal */\r\n public static terminate() {\r\n UiShowHideManager.cancelTimer();\r\n }\r\n}\r\n"]}