fcr-ui-scene 3.7.7-rc.1 → 3.7.8

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 (211) hide show
  1. package/lib/creator/provider-initializer.browser.js +2 -2
  2. package/lib/creator/provider-initializer.electron.js +2 -2
  3. package/lib/creator.d.ts +36 -0
  4. package/lib/creator.js +465 -0
  5. package/lib/electron/bootstrap-sdk.js +70 -33
  6. package/lib/electron/hang-detection/index.d.ts +3 -0
  7. package/lib/electron/hang-detection/index.js +15 -0
  8. package/lib/electron/hang-detection/manager.d.ts +28 -0
  9. package/lib/electron/hang-detection/manager.js +231 -0
  10. package/lib/electron/hang-detection/types.d.ts +14 -0
  11. package/lib/electron/hang-detection/types.js +6 -0
  12. package/lib/electron/until.d.ts +1 -4
  13. package/lib/electron/until.js +9 -4
  14. package/lib/modules/action-bar/components/screen-share/index.electron.js +1 -1
  15. package/lib/modules/action-bar/index.d.ts +56 -0
  16. package/lib/modules/action-bar/index.dev.d.ts +0 -0
  17. package/lib/modules/action-bar/index.dev.js +94 -0
  18. package/lib/modules/action-bar/index.js +108 -0
  19. package/lib/modules/action-bar/store.d.ts +256 -0
  20. package/lib/modules/action-bar/store.js +1572 -0
  21. package/lib/modules/action-bar/types.d.ts +90 -0
  22. package/lib/modules/action-bar/types.js +6 -0
  23. package/lib/modules/action-bar/view.d.ts +5 -0
  24. package/lib/modules/action-bar/view.js +112 -0
  25. package/lib/modules/annotation/annotation-index.d.ts +2 -0
  26. package/lib/modules/annotation/annotation-index.js +80 -0
  27. package/lib/modules/annotation/annotation-toolbar-store.d.ts +75 -0
  28. package/lib/modules/annotation/annotation-toolbar-store.js +459 -0
  29. package/lib/modules/annotation/board-cursor.css +77 -0
  30. package/lib/modules/annotation/components/color-picker/components/color.d.ts +5 -0
  31. package/lib/modules/annotation/components/color-picker/components/color.js +38 -0
  32. package/lib/modules/annotation/components/color-picker/components/panel.d.ts +1 -0
  33. package/lib/modules/annotation/components/color-picker/components/panel.js +109 -0
  34. package/lib/modules/annotation/components/color-picker/components/picker.d.ts +1 -0
  35. package/lib/modules/annotation/components/color-picker/components/picker.js +75 -0
  36. package/lib/modules/annotation/components/color-picker/index.d.ts +2 -0
  37. package/lib/modules/annotation/components/color-picker/index.js +47 -0
  38. package/lib/modules/annotation/components/eraser-picker.d.ts +4 -0
  39. package/lib/modules/annotation/components/eraser-picker.js +144 -0
  40. package/lib/modules/annotation/components/expansion/index.d.ts +1 -0
  41. package/lib/modules/annotation/components/expansion/index.js +100 -0
  42. package/lib/modules/annotation/components/extra-tool-picker.d.ts +1 -0
  43. package/lib/modules/annotation/components/extra-tool-picker.js +62 -0
  44. package/lib/modules/annotation/components/history.d.ts +2 -0
  45. package/lib/modules/annotation/components/history.js +78 -0
  46. package/lib/modules/annotation/components/icons/fold-icon.d.ts +2 -0
  47. package/lib/modules/annotation/components/icons/fold-icon.js +41 -0
  48. package/lib/modules/annotation/components/icons/move-icon.d.ts +1 -0
  49. package/lib/modules/annotation/components/icons/move-icon.js +66 -0
  50. package/lib/modules/annotation/components/item/index.d.ts +1 -0
  51. package/lib/modules/annotation/components/item/index.js +43 -0
  52. package/lib/modules/annotation/components/move-handle.d.ts +5 -0
  53. package/lib/modules/annotation/components/move-handle.js +134 -0
  54. package/lib/modules/annotation/components/pen-picker.d.ts +4 -0
  55. package/lib/modules/annotation/components/pen-picker.js +155 -0
  56. package/lib/modules/annotation/components/screen-capture-picker.d.ts +4 -0
  57. package/lib/modules/annotation/components/screen-capture-picker.js +85 -0
  58. package/lib/modules/annotation/components/shape-picker.d.ts +4 -0
  59. package/lib/modules/annotation/components/shape-picker.js +210 -0
  60. package/lib/modules/annotation/hooks/index.d.ts +14 -0
  61. package/lib/modules/annotation/hooks/index.js +292 -0
  62. package/lib/modules/annotation/index.d.ts +45 -0
  63. package/lib/modules/annotation/index.js +168 -0
  64. package/lib/modules/annotation/store.d.ts +98 -0
  65. package/lib/modules/annotation/store.js +621 -0
  66. package/lib/modules/annotation/style.css +36 -0
  67. package/lib/modules/annotation/view.d.ts +3 -0
  68. package/lib/modules/annotation/view.js +44 -0
  69. package/lib/modules/components/control-bar/components/switch-theme/index.js +4 -2
  70. package/lib/modules/components/control-bar/index.js +1 -3
  71. package/lib/modules/components/device-control/store.d.ts +42 -0
  72. package/lib/modules/components/device-control/store.js +241 -0
  73. package/lib/modules/components/leave-meeting/store.d.ts +39 -0
  74. package/lib/modules/components/leave-meeting/store.js +270 -0
  75. package/lib/modules/control-bar/components/annotation-button/index.d.ts +1 -0
  76. package/lib/modules/control-bar/components/annotation-button/index.js +72 -0
  77. package/lib/modules/control-bar/types.d.ts +20 -0
  78. package/lib/modules/control-bar/types.js +6 -0
  79. package/lib/modules/dialog/dialogs/pre-setting/index.css +26 -0
  80. package/lib/modules/dialog/dialogs/pre-setting/index.d.ts +6 -0
  81. package/lib/modules/dialog/dialogs/pre-setting/index.js +62 -0
  82. package/lib/modules/dialog/dialogs/widget/electron.d.ts +6 -0
  83. package/lib/modules/dialog/dialogs/widget/electron.js +38 -0
  84. package/lib/modules/dialog/hooks/use-popover-watcher.d.ts +14 -0
  85. package/lib/modules/dialog/hooks/use-popover-watcher.js +110 -0
  86. package/lib/modules/dialog/hooks/useElectron.d.ts +28 -0
  87. package/lib/modules/dialog/hooks/useElectron.js +277 -0
  88. package/lib/modules/dialog/store.d.ts +135 -0
  89. package/lib/modules/dialog/store.js +616 -0
  90. package/lib/modules/event-confirm/components/window/index.d.ts +4 -0
  91. package/lib/modules/event-confirm/components/window/index.js +197 -0
  92. package/lib/modules/event-confirm/index.css +24 -0
  93. package/lib/modules/event-confirm/index.d.ts +27 -0
  94. package/lib/modules/event-confirm/index.js +76 -0
  95. package/lib/modules/event-confirm/store.d.ts +45 -0
  96. package/lib/modules/event-confirm/store.js +345 -0
  97. package/lib/modules/event-confirm/view.d.ts +2 -0
  98. package/lib/modules/event-confirm/view.js +53 -0
  99. package/lib/modules/event-toast/store.d.ts +27 -0
  100. package/lib/modules/event-toast/store.js +205 -0
  101. package/lib/modules/layout/store.d.ts +176 -0
  102. package/lib/modules/layout/store.js +1466 -0
  103. package/lib/modules/participant/store.base.js +0 -1
  104. package/lib/modules/participant/store.d.ts +222 -0
  105. package/lib/modules/participant/store.js +1927 -0
  106. package/lib/modules/pc-audio-connect/index.d.ts +22 -0
  107. package/lib/modules/pc-audio-connect/index.js +67 -0
  108. package/lib/modules/pc-audio-connect/store.d.ts +46 -0
  109. package/lib/modules/pc-audio-connect/store.js +304 -0
  110. package/lib/modules/setting/common/advance-link.d.ts +3 -0
  111. package/lib/modules/setting/common/advance-link.js +27 -0
  112. package/lib/modules/setting/common/index.css +26 -0
  113. package/lib/modules/setting/common/useNamespace.d.ts +15 -0
  114. package/lib/modules/setting/common/useNamespace.js +66 -0
  115. package/lib/modules/setting/dialog-wrapper.d.ts +2 -0
  116. package/lib/modules/setting/dialog-wrapper.js +110 -0
  117. package/lib/modules/setting/store.d.ts +261 -0
  118. package/lib/modules/setting/store.js +1321 -0
  119. package/lib/modules/share-screen/store.d.ts +148 -0
  120. package/lib/modules/share-screen/store.electron.js +9 -0
  121. package/lib/modules/share-screen/store.js +950 -0
  122. package/lib/modules/share-screen/types.d.ts +26 -0
  123. package/lib/modules/share-screen/types.js +6 -0
  124. package/lib/modules/state-bar/store.base.electron.js +6 -2
  125. package/lib/modules/state-bar/store.d.ts +124 -0
  126. package/lib/modules/state-bar/store.js +664 -0
  127. package/lib/modules/whiteboard/components/progress/electron.d.ts +1 -0
  128. package/lib/modules/whiteboard/components/progress/electron.js +33 -0
  129. package/lib/modules/widget/store.d.ts +14 -0
  130. package/lib/modules/widget/store.js +28 -0
  131. package/lib/providers/annotation-provider.d.ts +124 -0
  132. package/lib/providers/annotation-provider.js +369 -0
  133. package/lib/providers/board-share/bar-control/base.d.ts +2 -0
  134. package/lib/providers/board-share/bar-control/base.js +13 -3
  135. package/lib/providers/board-share/bar-control/electron.d.ts +1 -0
  136. package/lib/providers/board-share/bar-control/electron.js +15 -4
  137. package/lib/providers/board-share/provider.base.d.ts +1 -0
  138. package/lib/providers/board-share/provider.base.js +3 -1
  139. package/lib/providers/board-share/provider.electron.d.ts +1 -0
  140. package/lib/providers/board-share/provider.electron.js +8 -2
  141. package/lib/providers/board-share/type.d.ts +2 -0
  142. package/lib/providers/dialog/provider.electron.js +10 -2
  143. package/lib/providers/dialog-provider.d.ts +137 -0
  144. package/lib/providers/dialog-provider.js +194 -0
  145. package/lib/providers/message-provider.d.ts +69 -0
  146. package/lib/providers/message-provider.js +140 -0
  147. package/lib/providers/room-provider.d.ts +194 -0
  148. package/lib/providers/room-provider.js +916 -0
  149. package/lib/providers/screen-share/strategy/browser.js +50 -3
  150. package/lib/providers/screen-share/strategy/electron.js +77 -8
  151. package/lib/providers/screen-share/stream-state-sync.d.ts +3 -1
  152. package/lib/providers/screen-share/stream-state-sync.js +133 -40
  153. package/lib/providers/screen-share-provider.d.ts +244 -0
  154. package/lib/providers/screen-share-provider.js +835 -0
  155. package/lib/providers/sharing-provider.d.ts +42 -0
  156. package/lib/providers/sharing-provider.js +221 -0
  157. package/lib/providers/user-setting-storage-provider.d.ts +21 -0
  158. package/lib/providers/user-setting-storage-provider.js +65 -0
  159. package/lib/providers/whiteboard-provider.d.ts +24 -0
  160. package/lib/providers/whiteboard-provider.js +127 -0
  161. package/lib/shared-data-source/annotation-data.d.ts +17 -0
  162. package/lib/shared-data-source/annotation-data.js +110 -0
  163. package/lib/shared-data-source/app-list-data.d.ts +34 -0
  164. package/lib/shared-data-source/app-list-data.js +133 -0
  165. package/lib/shared-data-source/chat-data.d.ts +25 -0
  166. package/lib/shared-data-source/chat-data.js +139 -0
  167. package/lib/shared-data-source/config.d.ts +35 -0
  168. package/lib/shared-data-source/config.js +40 -0
  169. package/lib/shared-data-source/confirm-data.d.ts +25 -0
  170. package/lib/shared-data-source/confirm-data.js +97 -0
  171. package/lib/shared-data-source/device-privilege-data.d.ts +8 -0
  172. package/lib/shared-data-source/device-privilege-data.js +25 -0
  173. package/lib/shared-data-source/interpreter.d.ts +77 -0
  174. package/lib/shared-data-source/interpreter.js +247 -0
  175. package/lib/shared-data-source/layout-data.d.ts +31 -0
  176. package/lib/shared-data-source/layout-data.js +189 -0
  177. package/lib/shared-data-source/meeting-time.d.ts +90 -0
  178. package/lib/shared-data-source/meeting-time.js +416 -0
  179. package/lib/shared-data-source/member-data.d.ts +139 -0
  180. package/lib/shared-data-source/member-data.js +517 -0
  181. package/lib/shared-data-source/pin-data.d.ts +13 -0
  182. package/lib/shared-data-source/pin-data.js +111 -0
  183. package/lib/shared-data-source/screen-share-data.d.ts +364 -0
  184. package/lib/shared-data-source/screen-share-data.js +520 -0
  185. package/lib/shared-data-source/security-data.d.ts +39 -0
  186. package/lib/shared-data-source/security-data.js +156 -0
  187. package/lib/shared-data-source/setting.d.ts +67 -0
  188. package/lib/shared-data-source/setting.js +220 -0
  189. package/lib/shared-data-source/speaker-spotlight.d.ts +5 -0
  190. package/lib/shared-data-source/speaker-spotlight.js +15 -0
  191. package/lib/shared-data-source/video-window.d.ts +165 -0
  192. package/lib/shared-data-source/video-window.js +1266 -0
  193. package/lib/shared-data-source/waiting-room.d.ts +46 -0
  194. package/lib/shared-data-source/waiting-room.js +222 -0
  195. package/lib/shared-data-source/whiteboard-data.d.ts +68 -0
  196. package/lib/shared-data-source/whiteboard-data.js +347 -0
  197. package/lib/utilities/board-context.d.ts +4 -0
  198. package/lib/utilities/board-context.js +12 -0
  199. package/lib/utilities/copyText.d.ts +2 -0
  200. package/lib/utilities/copyText.js +48 -0
  201. package/lib/utilities/renderer-event.d.ts +10 -0
  202. package/lib/utilities/renderer-event.js +95 -0
  203. package/lib/utilities/screen-capture-permission.d.ts +2 -0
  204. package/lib/utilities/screen-capture-permission.js +24 -0
  205. package/lib/utilities/screen.d.ts +3 -0
  206. package/lib/utilities/screen.js +53 -0
  207. package/lib/utilities/video-track-render-context.d.ts +6 -0
  208. package/lib/utilities/video-track-render-context.js +9 -0
  209. package/lib/waiting-room-control-manager.d.ts +28 -0
  210. package/lib/waiting-room-control-manager.js +230 -0
  211. package/package.json +5 -5
@@ -0,0 +1,28 @@
1
+ import { FcrUIDialogHooksProps } from '../type';
2
+ export declare const DialogInstanceContext: import("react").Context<{
3
+ browserWindow: Electron.BrowserWindow;
4
+ newRendererWindow: Window;
5
+ resizable: boolean;
6
+ baseUrl: string;
7
+ closeDialog: () => void;
8
+ /**
9
+ * @param continueClose - 继续关闭窗口的回调函数
10
+ */
11
+ continueClose: () => void;
12
+ /**
13
+ * 窗口关闭时是否已被拦截,此值只反应状态,不会影响继续关闭的逻辑
14
+ */
15
+ interceptedClose: boolean;
16
+ /**
17
+ * 重置被拦截状态
18
+ */
19
+ setInterceptedClose: (interceptedClose: boolean) => void;
20
+ }>;
21
+ export declare const shadowOffset: number;
22
+ export declare const enterFullScreenHandler: () => void;
23
+ export declare const leaveFullScreenHandler: () => void;
24
+ export declare function useElectronDialog(props: FcrUIDialogHooksProps): {
25
+ store: import("../store").default;
26
+ browserWindow: Electron.BrowserWindow | undefined;
27
+ newRendererWindow: Window | undefined;
28
+ };
@@ -0,0 +1,277 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.symbol.js");
4
+ require("core-js/modules/es.array.filter.js");
5
+ require("core-js/modules/es.array.push.js");
6
+ require("core-js/modules/es.object.define-properties.js");
7
+ require("core-js/modules/es.object.define-property.js");
8
+ require("core-js/modules/es.object.get-own-property-descriptor.js");
9
+ require("core-js/modules/es.object.get-own-property-descriptors.js");
10
+ require("core-js/modules/es.object.keys.js");
11
+ require("core-js/modules/esnext.iterator.filter.js");
12
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
13
+ Object.defineProperty(exports, "__esModule", {
14
+ value: true
15
+ });
16
+ exports.shadowOffset = exports.leaveFullScreenHandler = exports.enterFullScreenHandler = exports.DialogInstanceContext = void 0;
17
+ exports.useElectronDialog = useElectronDialog;
18
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
19
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
20
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
21
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
22
+ require("core-js/modules/es.array.concat.js");
23
+ require("core-js/modules/es.array.for-each.js");
24
+ require("core-js/modules/es.array.includes.js");
25
+ require("core-js/modules/es.date.to-json.js");
26
+ require("core-js/modules/es.json.stringify.js");
27
+ require("core-js/modules/es.object.to-string.js");
28
+ require("core-js/modules/es.promise.js");
29
+ require("core-js/modules/es.string.includes.js");
30
+ require("core-js/modules/esnext.iterator.constructor.js");
31
+ require("core-js/modules/esnext.iterator.for-each.js");
32
+ require("core-js/modules/esnext.promise.with-resolvers.js");
33
+ require("core-js/modules/web.dom-collections.for-each.js");
34
+ var _react = require("react");
35
+ var _store = require("../store");
36
+ var _renderer = require("../../../utilities/renderer");
37
+ var _reactDom = require("react-dom");
38
+ var _levelConfig = require("../level-config");
39
+ var _dialogUtils = require("../../../utilities/dialog-utils");
40
+ var _constant = require("../../../utilities/constant");
41
+ var _mobx = require("mobx");
42
+ var _jsxRuntime = require("react/jsx-runtime");
43
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
44
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
45
+ var DialogInstanceContext = exports.DialogInstanceContext = /*#__PURE__*/(0, _react.createContext)(null);
46
+ var shadowOffset = exports.shadowOffset = 15 + 15;
47
+ var enterFullScreenHandler = exports.enterFullScreenHandler = function enterFullScreenHandler() {
48
+ _store.dialogWindows.forEach(function (win, k) {
49
+ !_levelConfig.TOP_LEVEL_DIALOG_LAYER.includes(k) && win.setAlwaysOnTop(true, _levelConfig.diffPlatformHighLevelLayer);
50
+ });
51
+ };
52
+ var leaveFullScreenHandler = exports.leaveFullScreenHandler = function leaveFullScreenHandler() {
53
+ _store.dialogWindows.forEach(function (win, k) {
54
+ ![].concat((0, _toConsumableArray2["default"])(_levelConfig.TOP_LEVEL_DIALOG_LAYER), (0, _toConsumableArray2["default"])(_levelConfig.HIGH_LEVEL_DIALOG_LAYER)).includes(k) && win.setAlwaysOnTop(true, 'normal');
55
+ });
56
+ };
57
+ function useElectronDialog(props) {
58
+ var store = (0, _react.useContext)(_store.StoreContext);
59
+ var customConfigs = props.config,
60
+ dialogId = props.dialogId,
61
+ dialogKey = props.dialogKey,
62
+ onClose = props.onClose,
63
+ scroll = props.scroll,
64
+ _props$focus = props.focus,
65
+ focus = _props$focus === void 0 ? true : _props$focus,
66
+ children = props.children,
67
+ ignoreMouseEvents = props.ignoreMouseEvents,
68
+ _props$alwaysOnTop = props.alwaysOnTop,
69
+ alwaysOnTop = _props$alwaysOnTop === void 0 ? false : _props$alwaysOnTop,
70
+ fullScreen = props.fullScreen,
71
+ onOpened = props.onOpened,
72
+ onUnmounted = props.onUnmounted,
73
+ _props$hasCustomShado = props.hasCustomShadow,
74
+ hasCustomShadow = _props$hasCustomShado === void 0 ? true : _props$hasCustomShado,
75
+ _props$disableShortcu = props.disableShortcutClose,
76
+ disableShortcutClose = _props$disableShortcu === void 0 ? false : _props$disableShortcu,
77
+ beforeClose = props.beforeClose;
78
+ var dialogIdOrKey = dialogId || dialogKey;
79
+ var windowRef = (0, _react.useRef)();
80
+ var newRendernerWindowRef = (0, _react.useRef)();
81
+ var _customConfigs$width = customConfigs.width,
82
+ w = _customConfigs$width === void 0 ? 0 : _customConfigs$width,
83
+ _customConfigs$height = customConfigs.height,
84
+ h = _customConfigs$height === void 0 ? 0 : _customConfigs$height;
85
+ var config = _objectSpread(_objectSpread({
86
+ type: 'panel',
87
+ hasShadow: false,
88
+ frame: false,
89
+ transparent: true,
90
+ resizeble: false
91
+ }, customConfigs), {}, {
92
+ setAlwaysOnTop: alwaysOnTop,
93
+ width: w + (hasCustomShadow ? shadowOffset : 0),
94
+ height: h + (hasCustomShadow ? shadowOffset : 0)
95
+ });
96
+ (0, _react.useEffect)(function () {
97
+ var node;
98
+ window.runtime.openRendererWindow(dialogIdOrKey, function (dom, browserWindow, newRendererWindow, baseUrl) {
99
+ node = dom;
100
+ windowRef.current = browserWindow;
101
+ newRendernerWindowRef.current = newRendererWindow;
102
+ if (dialogId) {
103
+ store === null || store === void 0 || store.log("[dialog]: open dialog can I find dialog with dialogId: ".concat(dialogKey, ": ").concat(_store.dialogIdWindows.has(dialogId)));
104
+ _store.dialogIdWindows.set(dialogId, browserWindow);
105
+ } else {
106
+ store === null || store === void 0 || store.log("[dialog]: open dialog can I find dialog with dialogKey: ".concat(dialogKey, ": ").concat(_store.dialogWindows.has(dialogKey)));
107
+ _store.dialogWindows.set(dialogKey, browserWindow);
108
+ }
109
+ var isControlbar = dialogKey === _constant.FcrUIDialogKey.CONTROL_BAR;
110
+ var follow = isControlbar ? false : 'screen';
111
+ var _ref = (0, _dialogUtils.followCorrectDisplay)({
112
+ browserWindow: browserWindow,
113
+ alwaysFollowScreen: fullScreen,
114
+ follow: follow
115
+ }),
116
+ nearDisplayBounds = _ref.nearDisplayBounds,
117
+ followControlbar = _ref.followControlbar;
118
+ function handleMouseMove(event) {
119
+ store === null || store === void 0 || store.setConfirmPosition({
120
+ x: event.screenX,
121
+ y: event.screenY
122
+ });
123
+ }
124
+ newRendererWindow.addEventListener('mousemove', handleMouseMove);
125
+ store === null || store === void 0 || store.log("[useElectronDialog][dialog]: ".concat(dialogId ? 'dialogId' : 'dialogKey', ": ").concat(dialogKey, ", ").concat(followControlbar ? 'control bar' : 'main window', " nearing display bounds: ").concat(JSON.stringify(nearDisplayBounds)));
126
+
127
+ // 设置所有窗口为所有工作区可见
128
+ browserWindow.setVisibleOnAllWorkspaces(true, {
129
+ visibleOnFullScreen: true,
130
+ skipTransformProcessType: true
131
+ });
132
+
133
+ // @ts-ignore
134
+ // window._browserWindows = window._browserWindows || {};
135
+ // @ts-ignore
136
+ // window._browserWindows[dialogKey] = browserWindow;
137
+ // @ts-ignore
138
+ // window._windows = window._windows || {};
139
+ // @ts-ignore
140
+ // window._windows[dialogKey] = newRendererWindow;
141
+
142
+ // 因为窗口有可能需要单独设置位置,所以,窗口打开的回调需要放置在默认的位置设置之后
143
+ onOpened === null || onOpened === void 0 || onOpened({
144
+ browserWindow: browserWindow,
145
+ newRendererWindow: newRendererWindow,
146
+ store: store,
147
+ // 重写 setBounds 方法,使得设置 bounds 时,自动加上阴影的宽度
148
+ setBounds: function setBounds(bounds, animate) {
149
+ var b = _objectSpread({}, bounds);
150
+ if (b.width && hasCustomShadow) b.width = b.width + shadowOffset;
151
+ if (b.height && hasCustomShadow) b.height = b.height + shadowOffset;
152
+ browserWindow.setBounds(b, animate);
153
+ },
154
+ nearDisplayBounds: nearDisplayBounds
155
+ });
156
+
157
+ // 同原生 electron 的 ignoreMouseEvents 一样,设置为 true 时,窗口将不再接收鼠标事件
158
+ if (ignoreMouseEvents) {
159
+ browserWindow.setIgnoreMouseEvents(true, typeof ignoreMouseEvents === 'boolean' ? {
160
+ forward: true
161
+ } : ignoreMouseEvents);
162
+ }
163
+ browserWindow.setAlwaysOnTop(typeof alwaysOnTop === 'boolean' ? alwaysOnTop : typeof alwaysOnTop === 'string', typeof alwaysOnTop === 'string' ? alwaysOnTop : _levelConfig.diffPlatformHighLevelLayer);
164
+ if (_levelConfig.TOP_LEVEL_DIALOG_LAYER.includes(dialogKey)) {
165
+ browserWindow.setAlwaysOnTop(true, _levelConfig.diffPlatformTopLevelLayer);
166
+ }
167
+ if (_levelConfig.HIGH_LEVEL_DIALOG_LAYER.includes(dialogKey)) {
168
+ browserWindow.setAlwaysOnTop(true, _levelConfig.diffPlatformHighLevelLayer);
169
+ }
170
+ if (!scroll) {
171
+ browserWindow.webContents.insertCSS("\n ::-webkit-scrollbar {\n display: none;\n }\n #root {\n padding: ".concat(hasCustomShadow ? shadowOffset / 2 : 0, "px;\n display: ").concat(hasCustomShadow ? 'flex' : 'block', ";\n align-items: center;\n }\n "));
172
+ }
173
+ if (disableShortcutClose) {
174
+ newRendererWindow.addEventListener('keydown', function (event) {
175
+ if ((event.ctrlKey || event.metaKey) && event.key === 'w') {
176
+ event.preventDefault();
177
+ }
178
+ });
179
+ }
180
+ focus && browserWindow.focus();
181
+ store === null || store === void 0 || store.log("[useElectronDialog][dialog]: dialog ".concat(dialogIdOrKey, " focused"));
182
+ var _Promise$withResolver = Promise.withResolvers(),
183
+ promise = _Promise$withResolver.promise,
184
+ resolve = _Promise$withResolver.resolve;
185
+ function continueClose() {
186
+ store === null || store === void 0 || store.log("[useElectronDialog][dialog]: continueClose");
187
+ (0, _reactDom.unmountComponentAtNode)(node);
188
+ if (dialogId) {
189
+ store.closeDilaogByDialogId(dialogId);
190
+ } else {
191
+ _store.dialogWindows["delete"](dialogKey);
192
+ store === null || store === void 0 || store.closeDialogByKey(dialogKey);
193
+ }
194
+ onClose === null || onClose === void 0 || onClose({
195
+ store: store,
196
+ browserWindow: browserWindow,
197
+ newRendererWindow: newRendererWindow
198
+ });
199
+ return true;
200
+ }
201
+ var dialogInstanceValue = (0, _mobx.observable)({
202
+ browserWindow: browserWindow,
203
+ newRendererWindow: newRendererWindow,
204
+ resizable: !!customConfigs.resizable,
205
+ baseUrl: baseUrl,
206
+ closeDialog: function closeDialog() {
207
+ dialogId ? store.closeDilaogByDialogId(dialogId) : store.closeDialogByKey(dialogKey);
208
+ },
209
+ continueClose: function continueClose() {
210
+ return resolve(false);
211
+ },
212
+ interceptedClose: false,
213
+ setInterceptedClose: function setInterceptedClose(interceptedClose) {
214
+ dialogInstanceValue.interceptedClose = interceptedClose;
215
+ }
216
+ });
217
+ (0, _renderer.handleWillClose)(browserWindow, /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
218
+ var interception;
219
+ return _regenerator["default"].wrap(function (_context) {
220
+ while (1) switch (_context.prev = _context.next) {
221
+ case 0:
222
+ interception = (beforeClose === null || beforeClose === void 0 ? void 0 : beforeClose({
223
+ store: store,
224
+ browserWindow: browserWindow,
225
+ newRendererWindow: newRendererWindow,
226
+ continueClose: function continueClose() {
227
+ return resolve(false);
228
+ }
229
+ })) || false;
230
+ dialogInstanceValue.setInterceptedClose(interception);
231
+ if (!interception) {
232
+ _context.next = 1;
233
+ break;
234
+ }
235
+ _context.next = 1;
236
+ return promise;
237
+ case 1:
238
+ continueClose();
239
+ return _context.abrupt("return", false);
240
+ case 2:
241
+ case "end":
242
+ return _context.stop();
243
+ }
244
+ }, _callee);
245
+ })));
246
+ (0, _reactDom.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_store.StoreContext.Provider, {
247
+ value: store,
248
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(DialogInstanceContext.Provider, {
249
+ value: dialogInstanceValue,
250
+ children: typeof children === 'function' ? children(browserWindow) : children
251
+ })
252
+ }), dom);
253
+ }, config);
254
+ if ((0, _renderer.isMac)()) {
255
+ // 这组监听是为了处理 mac 全屏模式下,弹窗会因为主窗口全屏而变成独立窗口的问题
256
+ window.runtime.browserWindow.addListener('enter-full-screen', enterFullScreenHandler);
257
+ window.runtime.browserWindow.addListener('leave-full-screen', leaveFullScreenHandler);
258
+ }
259
+ return function () {
260
+ node && (0, _reactDom.unmountComponentAtNode)(node);
261
+ if ((0, _renderer.isMac)()) {
262
+ window.runtime.browserWindow.removeListener('enter-full-screen', enterFullScreenHandler);
263
+ window.runtime.browserWindow.removeListener('leave-full-screen', leaveFullScreenHandler);
264
+ }
265
+ // showtoast 和 confirm 的 dialog 需要常驻,所以不关闭
266
+ if (dialogIdOrKey !== _constant.FcrUIDialogKey.SHOW_TOAST && dialogIdOrKey !== _constant.FcrUIDialogKey.CONFIRM) {
267
+ window.runtime.closeRendererWindow(dialogIdOrKey);
268
+ }
269
+ onUnmounted === null || onUnmounted === void 0 || onUnmounted(store);
270
+ };
271
+ }, []);
272
+ return {
273
+ store: store,
274
+ browserWindow: windowRef.current,
275
+ newRendererWindow: newRendernerWindowRef.current
276
+ };
277
+ }
@@ -0,0 +1,135 @@
1
+ import { FcrStreamControl, FcrUserControl } from 'fcr-core';
2
+ import { FcrUIDialogKey } from '../../utilities/constant';
3
+ import { FcrUIPrivilegeProvider } from '../../providers/privilege-provider';
4
+ import { FcrUIDeviceProvider } from '../../providers/device-provider';
5
+ import { FcrUILocalVideoRenderProvider, FcrUIRemoteVideoRenderProvider } from '../../providers/renderer-provider';
6
+ import { FcrUIEventProvider } from '../../providers/event-provider';
7
+ import { FcrUISharedLayoutDataSource } from '../../shared-data-source/layout-data';
8
+ import { FcrUIDialogProvider } from '../../providers/dialog-provider';
9
+ import { FcrUIPhoneAudioConnectorProvider } from '../../providers/phone-audio-provider';
10
+ import { FcrWindowInfo } from 'fcr-core/lib/type';
11
+ import { CurrentShareBounds } from '../control-bar/types';
12
+ import { FcrUIDialogComponent } from './type';
13
+ import { FcrUIWidgetProvider } from '../../providers/widget-provider';
14
+ import { FcrUIChatProvider } from '../../providers/chat-provider';
15
+ import { FcrUIAbilityProviderImpl } from 'fcr-ui-scene/src/providers/ability-provider';
16
+ import { FcrUIScreenShareSharedDataSource } from '../../shared-data-source/screen-share-data';
17
+ import { FcrUISharedConfirmDataSource } from '../../shared-data-source/confirm-data';
18
+ import { CurrentShareScreenWorkArea } from '../../utilities/dialog-utils';
19
+ import { FcrUIAnnotationProvider } from '../../providers/annotation-provider';
20
+ import { FcrUIMultiDisplayProvider } from '../../providers/multi-display-provider';
21
+ import { FcrUIRoomProvider } from '../../providers/room-provider';
22
+ import { FcrUISharedSettingDataSource } from '../../shared-data-source/setting';
23
+ export declare let dialogWindows: Map<FcrUIDialogKey, Electron.BrowserWindow>;
24
+ export declare let dialogIdWindows: Map<string, Electron.BrowserWindow>;
25
+ export default class DialogStore {
26
+ protected logger: import("agora-foundation/lib/logger").Logger;
27
+ private _eventProvider;
28
+ private _userInfo;
29
+ private _streamControl;
30
+ private _userControl;
31
+ private _deviceStore;
32
+ private _securityStore;
33
+ private _localVideoRenderProvider;
34
+ private _remoteVideoRenderManager;
35
+ private _dialogProvider;
36
+ private _widgetProvider;
37
+ private _sharedSettingDataSource;
38
+ private _roomProvider;
39
+ private _sharedLayoutDataSource;
40
+ private _phoneAudioConnectorProvider;
41
+ private _sharedScreenShareSharedDataSource;
42
+ private _sharedConfirmDataSource;
43
+ private _dialogComponentMapByKey;
44
+ private _chatProvider;
45
+ private _multiDisplayProvider?;
46
+ private _electronDialogs;
47
+ private _annotationProvider;
48
+ private _disposers;
49
+ private _handleDialogEventObserver;
50
+ private _userObserver;
51
+ private _roomObserver;
52
+ private _handleSecondaryWindowEventObserver;
53
+ accessor openedDialogs: {
54
+ dialogKey: FcrUIDialogKey;
55
+ dialogId: string;
56
+ params?: unknown;
57
+ }[];
58
+ accessor confirmDialogs: Map<string, unknown>;
59
+ accessor userCount: number;
60
+ accessor participantElectronDialogContainer: HTMLElement | null;
61
+ accessor currentDialogBounds: Map<FcrUIDialogKey, number>;
62
+ accessor videoWindowBounds: any;
63
+ accessor recordShareBounds: Map<CurrentShareBounds, CurrentShareScreenWorkArea>;
64
+ accessor allApplicationWindows: FcrWindowInfo[];
65
+ accessor interceptClose: boolean;
66
+ get currentShareId(): string;
67
+ get currentShareType(): import("fcr-core/lib/type").FcrScreenCaptureType;
68
+ get currentShareBounds(): CurrentShareBounds;
69
+ get dialogComponentMapByKey(): Map<FcrUIDialogKey, FcrUIDialogComponent>;
70
+ get participantCount(): number;
71
+ get isManager(): boolean;
72
+ get dialogs(): {
73
+ dialogKey: FcrUIDialogKey;
74
+ dialogId: string;
75
+ params?: unknown;
76
+ }[];
77
+ get streamControl(): FcrStreamControl;
78
+ get deviceStore(): FcrUIDeviceProvider;
79
+ get remoteVideoRenderManager(): FcrUIRemoteVideoRenderProvider;
80
+ get localVideoRenderProvider(): FcrUILocalVideoRenderProvider;
81
+ get waitingRoomState(): boolean;
82
+ get isMultiDisplayActive(): boolean;
83
+ get connectType(): import("../../type").FcrUIConnectType;
84
+ get hasOwnPstnStream(): boolean;
85
+ get widgetDialogIds(): Map<string, string>;
86
+ get chatRoomState(): import("fcr-core/lib/type").FcrChatRoomConnectionState;
87
+ get isSharingScreen(): boolean;
88
+ get isSharingScreenOwner(): boolean;
89
+ constructor({ eventProvider, userControl, deviceStore, streamControl, localVideoRenderProvider, remoteVideoRenderManager, securityStore, sharedLayoutDataSource, dialogProvider, phoneAudioConnectorProvider, dialogsByKey, widgetProvider, chatProvider, sharedScreenShareSharedDataSource, sharedConfirmDataSource, annotationProvider, multiDisplayProvider, roomProvider, sharedSettingDataSource, }: {
90
+ streamControl: FcrStreamControl;
91
+ userControl: FcrUserControl;
92
+ eventProvider: FcrUIEventProvider;
93
+ securityStore: FcrUIPrivilegeProvider;
94
+ deviceStore: FcrUIDeviceProvider;
95
+ localVideoRenderProvider: FcrUILocalVideoRenderProvider;
96
+ remoteVideoRenderManager: FcrUIRemoteVideoRenderProvider;
97
+ sharedLayoutDataSource: FcrUISharedLayoutDataSource;
98
+ dialogProvider: FcrUIDialogProvider;
99
+ phoneAudioConnectorProvider: FcrUIPhoneAudioConnectorProvider;
100
+ dialogsByKey: Map<FcrUIDialogKey, FcrUIDialogComponent>;
101
+ widgetProvider: FcrUIWidgetProvider;
102
+ chatProvider: FcrUIChatProvider;
103
+ abilityProvider: FcrUIAbilityProviderImpl;
104
+ sharedScreenShareSharedDataSource: FcrUIScreenShareSharedDataSource;
105
+ sharedConfirmDataSource: FcrUISharedConfirmDataSource;
106
+ annotationProvider: FcrUIAnnotationProvider;
107
+ multiDisplayProvider?: FcrUIMultiDisplayProvider;
108
+ roomProvider: FcrUIRoomProvider;
109
+ sharedSettingDataSource: FcrUISharedSettingDataSource;
110
+ });
111
+ setConfirmPosition(position: {
112
+ x: number;
113
+ y: number;
114
+ }): void;
115
+ setParticipantElectronDialogContainer(dom: HTMLElement | null): void;
116
+ setVideoWindowBounds(payload: any): void;
117
+ closeDialogByKey(dialogKey: FcrUIDialogKey): void;
118
+ closeDilaogByDialogId(dialogId: string): void;
119
+ closeSystemPreferenceDialog(): void;
120
+ closeChatFromDialog(): void;
121
+ moveChatFromDialogToAside(): void;
122
+ closeConnectionDialog(): boolean;
123
+ closeParticipantDialog(): void;
124
+ moveParticipantFromDialogToAside(): void;
125
+ release(): void;
126
+ resizeVideoWindow(width: number, height: number): void;
127
+ recordCurrentSharingScreenBounds(): CurrentShareScreenWorkArea;
128
+ moveMainWindowToIndexLeastDisplay(): void;
129
+ log(info: string): void;
130
+ private _handleDialogEvent;
131
+ private _hanleAllUserCountUpdated;
132
+ private _handleSecondaryWindowEvent;
133
+ private _setInterceptClose;
134
+ }
135
+ export declare const StoreContext: import("react").Context<DialogStore>;