expo 52.0.0-preview.0 → 52.0.0-preview.10

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.
@@ -33,7 +33,7 @@ def getRNVersion() {
33
33
  ensureDependeciesWereEvaluated(project)
34
34
 
35
35
  group = 'host.exp.exponent'
36
- version = '52.0.0-preview.0'
36
+ version = '52.0.0-preview.10'
37
37
 
38
38
  buildscript {
39
39
  // Simple helper that allows the root project to override versions declared by this library.
@@ -46,7 +46,7 @@ android {
46
46
  namespace "expo.core"
47
47
  defaultConfig {
48
48
  versionCode 1
49
- versionName "52.0.0-preview.0"
49
+ versionName "52.0.0-preview.10"
50
50
  consumerProguardFiles("proguard-rules.pro")
51
51
  }
52
52
  testOptions {
@@ -1 +1 @@
1
- {"version":3,"file":"dom-hooks.d.ts","sourceRoot":"","sources":["../../src/dom/dom-hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+C,KAAK,cAAc,EAAE,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAEnG,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAExD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,oBAAoB,EACnE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EACX,IAAI,EAAE,MAAM,CAAC,EACb,IAAI,CAAC,EAAE,cAAc,QAqBtB"}
1
+ {"version":3,"file":"dom-hooks.d.ts","sourceRoot":"","sources":["../../src/dom/dom-hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+C,KAAK,cAAc,EAAE,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAEnG,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAGxD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,oBAAoB,EACnE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EACX,IAAI,EAAE,MAAM,CAAC,EACb,IAAI,CAAC,EAAE,cAAc,QA4BtB"}
@@ -0,0 +1,4 @@
1
+ import { BridgeMessage, JSONValue } from './dom.types';
2
+ export declare function _emitGlobalEvent<TData extends JSONValue>(message: BridgeMessage<TData>): void;
3
+ export declare const addGlobalDomEventListener: <TData extends JSONValue>(onSubscribe: (message: BridgeMessage<TData>) => void) => (() => void);
4
+ //# sourceMappingURL=global-events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global-events.d.ts","sourceRoot":"","sources":["../../src/dom/global-events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAIvD,wBAAgB,gBAAgB,CAAC,KAAK,SAAS,SAAS,EAAE,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,QAEtF;AAED,eAAO,MAAM,yBAAyB,4EACY,IAAI,KACnD,CAAC,MAAM,IAAI,CAKb,CAAC"}
@@ -3,6 +3,7 @@ export declare const NATIVE_ACTION = "$$native_action";
3
3
  export declare const NATIVE_ACTION_RESULT = "$$native_action_result";
4
4
  export declare const DOM_EVENT = "$$dom_event";
5
5
  export declare const MATCH_CONTENTS_EVENT = "$$match_contents_event";
6
+ export declare const REGISTER_DOM_IMPERATIVE_HANDLE_PROPS = "$$register_dom_imperative_handle_props";
6
7
  export declare const getInjectEventScript: <T extends BridgeMessage<any>>(detail: T) => string;
7
8
  export declare function getInjectEnvsScript(): string;
8
9
  export declare function getInjectBodySizeObserverScript(): string;
@@ -1 +1 @@
1
- {"version":3,"file":"injection.d.ts","sourceRoot":"","sources":["../../src/dom/injection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,eAAO,MAAM,aAAa,oBAAoB,CAAC;AAC/C,eAAO,MAAM,oBAAoB,2BAA2B,CAAC;AAC7D,eAAO,MAAM,SAAS,gBAAgB,CAAC;AACvC,eAAO,MAAM,oBAAoB,2BAA2B,CAAC;AAE7D,eAAO,MAAM,oBAAoB,qDAOhC,CAAC;AAEF,wBAAgB,mBAAmB,WAalC;AAED,wBAAgB,+BAA+B,WAwB9C"}
1
+ {"version":3,"file":"injection.d.ts","sourceRoot":"","sources":["../../src/dom/injection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,eAAO,MAAM,aAAa,oBAAoB,CAAC;AAC/C,eAAO,MAAM,oBAAoB,2BAA2B,CAAC;AAC7D,eAAO,MAAM,SAAS,gBAAgB,CAAC;AACvC,eAAO,MAAM,oBAAoB,2BAA2B,CAAC;AAC7D,eAAO,MAAM,oCAAoC,2CAA2C,CAAC;AAE7F,eAAO,MAAM,oBAAoB,qDAOhC,CAAC;AAEF,wBAAgB,mBAAmB,WAalC;AAED,wBAAgB,+BAA+B,WAwB9C"}
@@ -1 +1 @@
1
- {"version":3,"file":"webview-wrapper.d.ts","sourceRoot":"","sources":["../../src/dom/webview-wrapper.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAiB,QAAQ,EAA4B,MAAM,aAAa,CAAC;AAYrF,UAAU,KAAK;IACb,GAAG,EAAE,QAAQ,CAAC;IACd,MAAM,EAAE;QACN,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;CACH;AAED,QAAA,MAAM,UAAU,sEA8Jd,CAAC;AAaH,wBAAgB,cAAc,CAAC,iBAAiB,EAAE,OAAO,OASxD;AAED,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"webview-wrapper.d.ts","sourceRoot":"","sources":["../../src/dom/webview-wrapper.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAiB,QAAQ,EAA4B,MAAM,aAAa,CAAC;AAcrF,UAAU,KAAK;IACb,GAAG,EAAE,QAAQ,CAAC;IACd,MAAM,EAAE;QACN,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;CACH;AAED,QAAA,MAAM,UAAU,sEA6Kd,CAAC;AAaH,wBAAgB,cAAc,CAAC,iBAAiB,EAAE,OAAO,OASxD;AAED,eAAe,UAAU,CAAC"}
@@ -5,39 +5,39 @@
5
5
  "@react-native-community/datetimepicker": "8.2.0",
6
6
  "@react-native-masked-view/masked-view": "0.3.1",
7
7
  "@react-native-community/netinfo": "11.4.1",
8
- "@react-native-community/slider": "4.5.2",
8
+ "@react-native-community/slider": "4.5.5",
9
9
  "@react-native-community/viewpager": "5.0.11",
10
- "@react-native-picker/picker": "2.8.1",
10
+ "@react-native-picker/picker": "2.9.0",
11
11
  "@react-native-segmented-control/segmented-control": "2.5.4",
12
12
  "@stripe/stripe-react-native": "0.38.6",
13
- "eslint-config-expo": "~8.0.0",
13
+ "eslint-config-expo": "~8.0.1",
14
14
  "expo-analytics-amplitude": "~11.3.0",
15
15
  "expo-app-auth": "~11.1.0",
16
16
  "expo-app-loader-provider": "~8.0.0",
17
- "expo-apple-authentication": "~7.0.0",
18
- "expo-application": "~6.0.0",
17
+ "expo-apple-authentication": "~7.0.1",
18
+ "expo-application": "~6.0.1",
19
19
  "expo-asset": "~11.0.0",
20
- "expo-audio": "~0.2.0",
20
+ "expo-audio": "~0.2.3",
21
21
  "expo-auth-session": "~6.0.0",
22
- "expo-av": "~15.0.0",
23
- "expo-background-fetch": "~13.0.0",
24
- "expo-barcode-scanner": "~14.0.0",
25
- "expo-battery": "~9.0.0",
26
- "expo-blur": "~14.0.0",
27
- "expo-brightness": "~13.0.0",
28
- "expo-build-properties": "~0.13.0",
29
- "expo-calendar": "~14.0.0",
30
- "expo-camera": "~16.0.0",
31
- "expo-cellular": "~7.0.0",
22
+ "expo-av": "~15.0.1",
23
+ "expo-background-fetch": "~13.0.1",
24
+ "expo-barcode-scanner": "~14.0.1",
25
+ "expo-battery": "~9.0.1",
26
+ "expo-blur": "~14.0.1",
27
+ "expo-brightness": "~13.0.2",
28
+ "expo-build-properties": "~0.13.1",
29
+ "expo-calendar": "~14.0.2",
30
+ "expo-camera": "~16.0.3",
31
+ "expo-cellular": "~7.0.1",
32
32
  "expo-checkbox": "~4.0.0",
33
33
  "expo-clipboard": "~7.0.0",
34
- "expo-constants": "~17.0.0",
35
- "expo-contacts": "~14.0.0",
36
- "expo-crypto": "~14.0.0",
37
- "expo-dev-client": "~5.0.0-preview.0",
38
- "expo-device": "~7.0.0",
39
- "expo-document-picker": "~13.0.0",
40
- "expo-face-detector": "~13.0.0",
34
+ "expo-constants": "~17.0.2",
35
+ "expo-contacts": "~14.0.1",
36
+ "expo-crypto": "~14.0.1",
37
+ "expo-dev-client": "~5.0.0-preview.3",
38
+ "expo-device": "~7.0.1",
39
+ "expo-document-picker": "~13.0.1",
40
+ "expo-face-detector": "~13.0.1",
41
41
  "expo-file-system": "~18.0.0",
42
42
  "expo-font": "~13.0.0",
43
43
  "expo-gl": "~15.0.0",
@@ -45,57 +45,57 @@
45
45
  "expo-haptics": "~14.0.0",
46
46
  "expo-image": "~2.0.0-preview.0",
47
47
  "expo-image-loader": "~5.0.0",
48
- "expo-image-manipulator": "~13.0.0",
48
+ "expo-image-manipulator": "~13.0.5",
49
49
  "expo-image-picker": "~16.0.0",
50
- "expo-intent-launcher": "~12.0.0",
51
- "expo-insights": "~0.8.0",
52
- "expo-keep-awake": "~14.0.0",
53
- "expo-linear-gradient": "~14.0.0",
54
- "expo-linking": "~7.0.0",
55
- "expo-local-authentication": "~15.0.0",
50
+ "expo-intent-launcher": "~12.0.1",
51
+ "expo-insights": "~0.8.1",
52
+ "expo-keep-awake": "~14.0.1",
53
+ "expo-linear-gradient": "~14.0.1",
54
+ "expo-linking": "~7.0.2",
55
+ "expo-local-authentication": "~15.0.1",
56
56
  "expo-localization": "~16.0.0",
57
- "expo-location": "~18.0.0",
58
- "expo-mail-composer": "~14.0.0",
57
+ "expo-location": "~18.0.1",
58
+ "expo-mail-composer": "~14.0.1",
59
59
  "expo-media-library": "~17.0.0",
60
- "expo-module-template": "~10.15.0",
61
- "expo-modules-core": "~2.0.0-preview.0",
62
- "expo-navigation-bar": "~4.0.0",
60
+ "expo-module-template": "~10.15.4",
61
+ "expo-modules-core": "~2.0.0-preview.7",
62
+ "expo-navigation-bar": "~4.0.1",
63
63
  "expo-network": "~7.0.0",
64
- "expo-notifications": "~0.29.0",
65
- "expo-print": "~14.0.0",
66
- "expo-router": "~4.0.0-preview.0",
64
+ "expo-notifications": "~0.29.4",
65
+ "expo-print": "~14.0.2",
66
+ "expo-router": "~4.0.0-preview.6",
67
67
  "expo-screen-capture": "~7.0.0",
68
68
  "expo-screen-orientation": "~8.0.0",
69
69
  "expo-secure-store": "~14.0.0",
70
- "expo-sensors": "~14.0.0",
70
+ "expo-sensors": "~14.0.1",
71
71
  "expo-sharing": "~13.0.0",
72
72
  "expo-sms": "~13.0.0",
73
73
  "expo-speech": "~13.0.0",
74
- "expo-splash-screen": "~0.28.0",
75
- "expo-sqlite": "~15.0.0",
74
+ "expo-splash-screen": "~0.28.4",
75
+ "expo-sqlite": "~15.0.1",
76
76
  "expo-status-bar": "~2.0.0",
77
77
  "expo-store-review": "~8.0.0",
78
78
  "expo-symbols": "~0.2.0",
79
- "expo-system-ui": "~4.0.0",
79
+ "expo-system-ui": "~4.0.1",
80
80
  "expo-task-manager": "~12.0.0",
81
81
  "expo-tracking-transparency": "~5.0.0",
82
- "expo-updates": "~0.26.0",
82
+ "expo-updates": "~0.26.2",
83
83
  "expo-video-thumbnails": "~9.0.0",
84
84
  "expo-video": "~2.0.0-preview.0",
85
85
  "expo-web-browser": "~14.0.0",
86
- "jest-expo": "~52.0.0-preview.0",
86
+ "jest-expo": "~52.0.0-preview.2",
87
87
  "lottie-react-native": "7.0.0",
88
88
  "react": "18.3.1",
89
89
  "react-dom": "18.3.1",
90
- "react-native": "0.76.0-rc.6",
90
+ "react-native": "0.76.0",
91
91
  "react-native-web": "~0.19.13",
92
- "react-native-gesture-handler": "~2.20.0",
92
+ "react-native-gesture-handler": "~2.20.2",
93
93
  "react-native-get-random-values": "~1.11.0",
94
94
  "react-native-maps": "1.18.0",
95
95
  "react-native-pager-view": "6.4.1",
96
96
  "react-native-reanimated": "~3.16.1",
97
- "react-native-screens": "4.0.0-beta.13",
98
- "react-native-safe-area-context": "4.11.0",
97
+ "react-native-screens": "4.0.0-beta.14",
98
+ "react-native-safe-area-context": "4.12.0",
99
99
  "react-native-svg": "15.8.0",
100
100
  "react-native-view-shot": "3.8.0",
101
101
  "react-native-webview": "13.12.2",
@@ -0,0 +1 @@
1
+ export * from '../build/dom/global-events';
package/dom/global.js ADDED
@@ -0,0 +1 @@
1
+ export * from '../src/dom/global-events';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo",
3
- "version": "52.0.0-preview.0",
3
+ "version": "52.0.0-preview.10",
4
4
  "description": "The Expo SDK",
5
5
  "main": "src/Expo.ts",
6
6
  "module": "src/Expo.ts",
@@ -66,29 +66,29 @@
66
66
  "homepage": "https://github.com/expo/expo/tree/main/packages/expo",
67
67
  "dependencies": {
68
68
  "@babel/runtime": "^7.20.0",
69
- "@expo/cli": "0.19.0",
70
- "@expo/config": "10.0.0",
71
- "@expo/config-plugins": "9.0.0",
72
- "@expo/metro-config": "0.19.0-preview.0",
69
+ "@expo/cli": "0.19.6",
70
+ "@expo/config": "10.0.2",
71
+ "@expo/config-plugins": "9.0.4",
72
+ "@expo/metro-config": "0.19.0-preview.2",
73
73
  "@expo/vector-icons": "^14.0.0",
74
- "babel-preset-expo": "~12.0.0-preview.0",
74
+ "babel-preset-expo": "~12.0.0-preview.1",
75
75
  "expo-asset": "~11.0.0",
76
76
  "expo-file-system": "~18.0.0",
77
77
  "expo-font": "~13.0.0",
78
- "expo-keep-awake": "~14.0.0",
79
- "expo-modules-autolinking": "2.0.0-preview.0",
80
- "expo-modules-core": "2.0.0-preview.0",
78
+ "expo-keep-awake": "~14.0.1",
79
+ "expo-modules-autolinking": "2.0.0-preview.2",
80
+ "expo-modules-core": "2.0.0-preview.7",
81
81
  "fbemitter": "^3.0.0",
82
82
  "web-streams-polyfill": "^3.3.2",
83
83
  "whatwg-url-without-unicode": "8.0.0-3"
84
84
  },
85
85
  "devDependencies": {
86
- "@types/react": "~18.2.79",
87
- "@types/react-test-renderer": "^18.0.0",
86
+ "@types/react": "~18.3.12",
87
+ "@types/react-test-renderer": "^18.3.0",
88
88
  "expo-module-scripts": "^4.0.0",
89
89
  "react": "18.3.1",
90
90
  "react-dom": "18.3.1",
91
- "react-native": "0.76.0-rc.6"
91
+ "react-native": "0.76.0"
92
92
  },
93
93
  "peerDependencies": {
94
94
  "@expo/dom-webview": "*",
@@ -108,5 +108,5 @@
108
108
  "optional": true
109
109
  }
110
110
  },
111
- "gitHead": "7c7d2362fff23bec26cd145ed34edd9c403551bd"
111
+ "gitHead": "08a7689635ffb16f4020565c56cf7a4adf730314"
112
112
  }
@@ -1,6 +1,7 @@
1
1
  import { useCallback, useEffect, useImperativeHandle, type DependencyList, type Ref } from 'react';
2
2
 
3
3
  import type { DOMImperativeFactory } from './dom.types';
4
+ import { REGISTER_DOM_IMPERATIVE_HANDLE_PROPS } from './injection';
4
5
 
5
6
  /**
6
7
  * A React `useImperativeHandle` like hook for DOM components.
@@ -23,6 +24,13 @@ export function useDOMImperativeHandle<T extends DOMImperativeFactory>(
23
24
  useEffect(() => {
24
25
  if (!isTargetWeb) {
25
26
  globalThis._domRefProxy = init();
27
+ // @ts-expect-error: Added via react-native-webview
28
+ window.ReactNativeWebView.postMessage(
29
+ JSON.stringify({
30
+ type: REGISTER_DOM_IMPERATIVE_HANDLE_PROPS,
31
+ data: Object.keys(globalThis._domRefProxy),
32
+ })
33
+ );
26
34
  }
27
35
  return () => {
28
36
  if (!isTargetWeb) {
@@ -0,0 +1,16 @@
1
+ import { BridgeMessage, JSONValue } from './dom.types';
2
+
3
+ const globalListeners = new Set<(message: BridgeMessage<any>) => void>();
4
+
5
+ export function _emitGlobalEvent<TData extends JSONValue>(message: BridgeMessage<TData>) {
6
+ globalListeners.forEach((listener) => listener(message));
7
+ }
8
+
9
+ export const addGlobalDomEventListener = <TData extends JSONValue>(
10
+ onSubscribe: (message: BridgeMessage<TData>) => void
11
+ ): (() => void) => {
12
+ globalListeners.add(onSubscribe);
13
+ return () => {
14
+ globalListeners.delete(onSubscribe);
15
+ };
16
+ };
@@ -4,6 +4,7 @@ export const NATIVE_ACTION = '$$native_action';
4
4
  export const NATIVE_ACTION_RESULT = '$$native_action_result';
5
5
  export const DOM_EVENT = '$$dom_event';
6
6
  export const MATCH_CONTENTS_EVENT = '$$match_contents_event';
7
+ export const REGISTER_DOM_IMPERATIVE_HANDLE_PROPS = '$$register_dom_imperative_handle_props';
7
8
 
8
9
  export const getInjectEventScript = <T extends BridgeMessage<any>>(detail: T) => {
9
10
  return `;(function() {
@@ -3,6 +3,7 @@ import React from 'react';
3
3
  import { AppState } from 'react-native';
4
4
 
5
5
  import type { BridgeMessage, DOMProps, WebViewProps, WebViewRef } from './dom.types';
6
+ import { _emitGlobalEvent } from './global-events';
6
7
  import {
7
8
  getInjectBodySizeObserverScript,
8
9
  getInjectEventScript,
@@ -10,6 +11,7 @@ import {
10
11
  MATCH_CONTENTS_EVENT,
11
12
  NATIVE_ACTION,
12
13
  NATIVE_ACTION_RESULT,
14
+ REGISTER_DOM_IMPERATIVE_HANDLE_PROPS,
13
15
  } from './injection';
14
16
  import ExpoDomWebView from './webview/ExpoDOMWebView';
15
17
  import RNWebView from './webview/RNWebView';
@@ -22,18 +24,26 @@ interface Props {
22
24
  }
23
25
 
24
26
  const RawWebView = React.forwardRef<object, Props>(({ dom, source, ...marshalProps }, ref) => {
25
- if (ref != null && typeof ref == 'object' && ref.current == null) {
27
+ if (ref != null && typeof ref === 'object' && ref.current == null) {
26
28
  ref.current = new Proxy(
27
29
  {},
28
30
  {
29
- get(target, prop) {
31
+ get(_, prop) {
30
32
  const propName = String(prop);
31
- return function (...args) {
32
- const serializedArgs = args.map((arg) => JSON.stringify(arg)).join(',');
33
- webviewRef.current?.injectJavaScript(
34
- `window._domRefProxy.${propName}(${serializedArgs})`
35
- );
36
- };
33
+ if (domImperativeHandlePropsRef.current?.includes(propName)) {
34
+ return function (...args) {
35
+ const serializedArgs = args.map((arg) => JSON.stringify(arg)).join(',');
36
+ webviewRef.current?.injectJavaScript(
37
+ `window._domRefProxy.${propName}(${serializedArgs})`
38
+ );
39
+ };
40
+ }
41
+ if (typeof webviewRef.current?.[propName] === 'function') {
42
+ return function (...args) {
43
+ return webviewRef.current?.[propName](...args);
44
+ };
45
+ }
46
+ return undefined;
37
47
  },
38
48
  }
39
49
  );
@@ -41,6 +51,7 @@ const RawWebView = React.forwardRef<object, Props>(({ dom, source, ...marshalPro
41
51
 
42
52
  const webView = resolveWebView(dom?.useExpoDOMWebView ?? false);
43
53
  const webviewRef = React.useRef<WebViewRef>(null);
54
+ const domImperativeHandlePropsRef = React.useRef<string[]>([]);
44
55
  const [containerStyle, setContainerStyle] = React.useState<WebViewProps['containerStyle']>(null);
45
56
 
46
57
  const emit = React.useCallback(
@@ -76,7 +87,7 @@ const RawWebView = React.forwardRef<object, Props>(({ dom, source, ...marshalPro
76
87
  return React.createElement(webView, {
77
88
  webviewDebuggingEnabled: __DEV__,
78
89
  // Make iOS scrolling feel native.
79
- decelerationRate: 'normal',
90
+ decelerationRate: process.env.EXPO_OS === 'ios' ? 'normal' : undefined,
80
91
  originWhitelist: ['*'],
81
92
  allowFileAccess: true,
82
93
  allowFileAccessFromFileURLs: true,
@@ -127,6 +138,11 @@ const RawWebView = React.forwardRef<object, Props>(({ dom, source, ...marshalPro
127
138
  return;
128
139
  }
129
140
 
141
+ if (type === REGISTER_DOM_IMPERATIVE_HANDLE_PROPS) {
142
+ domImperativeHandlePropsRef.current = data;
143
+ return;
144
+ }
145
+
130
146
  if (type === NATIVE_ACTION) {
131
147
  const action = marshalProps[data.actionId];
132
148
  if (action == null) {
@@ -177,6 +193,7 @@ const RawWebView = React.forwardRef<object, Props>(({ dom, source, ...marshalPro
177
193
  } else {
178
194
  dom?.onMessage?.(event);
179
195
  }
196
+ _emitGlobalEvent({ type, data });
180
197
  },
181
198
  });
182
199
  });