@absolutejs/absolute 0.20.0-beta.7 → 0.20.0-beta.70
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +205 -0
- package/dist/angular/browser.js +392 -405
- package/dist/angular/browser.js.map +3 -3
- package/dist/angular/components/core/streamingSlotRegistrar.js +7 -7
- package/dist/angular/components/core/streamingSlotRegistry.js +4 -4
- package/dist/angular/index.js +379 -321
- package/dist/angular/index.js.map +8 -7
- package/dist/angular/server.js +133 -61
- package/dist/angular/server.js.map +8 -7
- package/dist/build.js +2629 -1416
- package/dist/build.js.map +26 -19
- package/dist/cli/config/client.js +12 -12
- package/dist/cli/config/server.js +1140 -1091
- package/dist/cli/index.js +41579 -15184
- package/dist/client/chunks/angularPatch-arh4sr68.js +157 -0
- package/dist/client/chunks/angularPatch-arh4sr68.js.map +10 -0
- package/dist/client/chunks/index-5py90ctf.js +87 -0
- package/dist/client/chunks/index-5py90ctf.js.map +10 -0
- package/dist/client/chunks/index-m35nbkdp.js +374 -0
- package/dist/client/chunks/index-m35nbkdp.js.map +12 -0
- package/dist/client/chunks/index-qxjc7kc5.js +12 -0
- package/dist/client/chunks/index-qxjc7kc5.js.map +9 -0
- package/dist/client/chunks/islands-xj2n8nwf.js +281 -0
- package/dist/client/chunks/islands-xj2n8nwf.js.map +14 -0
- package/dist/client/chunks/react-pdg4325x.js +65 -0
- package/dist/client/chunks/react-pdg4325x.js.map +10 -0
- package/dist/client/chunks/svelte-s0c964kb.js +19 -0
- package/dist/client/chunks/svelte-s0c964kb.js.map +10 -0
- package/dist/client/chunks/vue-rdskrnyg.js +24 -0
- package/dist/client/chunks/vue-rdskrnyg.js.map +10 -0
- package/dist/client/index.js +73 -841
- package/dist/client/index.js.map +7 -20
- package/dist/core/streamingSlotRegistrar.js +15 -13
- package/dist/core/streamingSlotRegistrar.js.map +2 -2
- package/dist/core/streamingSlotRegistry.js +11 -9
- package/dist/core/streamingSlotRegistry.js.map +2 -2
- package/dist/dev/client/hmrClient.ts +35 -3
- package/dist/dev/client/hmrTiming.ts +6 -0
- package/dist/dev/client/syncDevtools.ts +237 -0
- package/dist/dev/serverBootstrap.js +572 -6
- package/dist/image-client/imageClient.js +7 -7
- package/dist/index.js +4157 -2440
- package/dist/index.js.map +43 -32
- package/dist/islands/browser.js +11 -25
- package/dist/islands/browser.js.map +2 -2
- package/dist/islands/index.js +55 -52
- package/dist/islands/index.js.map +5 -4
- package/dist/mobile/browser.js +429 -20
- package/dist/mobile/browser.js.map +8 -5
- package/dist/mobile/index.js +37077 -4967
- package/dist/mobile/index.js.map +100 -18
- package/dist/mobile/mobilePreviewClient.ts +246 -0
- package/dist/mobile/remoteMacAgentEntry.js +1899 -14
- package/dist/mobile/shellAuth.js +20 -9
- package/dist/mobile/shellBootstrap.js +6801 -120
- package/dist/mobile/shellExpoAuth.js +179 -0
- package/dist/mobile/shellExpoDevices.js +93 -0
- package/dist/mobile/shellExpoSync.js +120 -0
- package/dist/mobile/shellSync.js +152 -3
- package/dist/mobile/shellUpdate.js +559 -0
- package/dist/mobile/uiPrimitives.js +280 -0
- package/dist/react/browser.js +17 -59
- package/dist/react/browser.js.map +2 -2
- package/dist/react/components/browser/index.js +107 -107
- package/dist/react/components/index.js +118 -116
- package/dist/react/components/index.js.map +2 -2
- package/dist/react/hooks/index.js +11 -25
- package/dist/react/hooks/index.js.map +2 -2
- package/dist/react/index.js +110 -67
- package/dist/react/index.js.map +8 -7
- package/dist/react/jsxDevRuntimeCompat.js +11 -9
- package/dist/react/jsxDevRuntimeCompat.js.map +2 -2
- package/dist/react/jsxRuntimeCompat.js +11 -9
- package/dist/react/jsxRuntimeCompat.js.map +2 -2
- package/dist/react/router/browser.js +9 -7
- package/dist/react/router/browser.js.map +2 -2
- package/dist/react/router/index.js +9 -7
- package/dist/react/router/index.js.map +2 -2
- package/dist/react/server.js +67 -11
- package/dist/react/server.js.map +7 -6
- package/dist/src/build/chainInlineSourcemaps.d.ts +2 -0
- package/dist/src/build/pwa.d.ts +16 -0
- package/dist/src/build/vueCompileCache.d.ts +43 -0
- package/dist/src/cli/config/server.d.ts +1 -1
- package/dist/src/cli/instanceStatus.d.ts +1 -0
- package/dist/src/cli/scripts/dev.d.ts +2 -0
- package/dist/src/client/browserTranslation.d.ts +19 -0
- package/dist/src/client/index.d.ts +1 -0
- package/dist/src/core/browserTranslation.d.ts +6 -0
- package/dist/src/core/devBuild.d.ts +1 -0
- package/dist/src/core/prepare.d.ts +376 -0
- package/dist/src/dev/bootLifecycle.d.ts +11 -0
- package/dist/src/dev/clientManager.d.ts +1 -0
- package/dist/src/dev/devCert.d.ts +6 -4
- package/dist/src/dev/earlyListener.d.ts +41 -0
- package/dist/src/dev/serverEntryCopies.d.ts +3 -0
- package/dist/src/ember/browser.d.ts +0 -16
- package/dist/src/mobile/adaptiveShell.d.ts +27 -0
- package/dist/src/mobile/androidEmulatorController.d.ts +8 -1
- package/dist/src/mobile/androidRelease.d.ts +9 -2
- package/dist/src/mobile/androidTestReport.d.ts +14 -0
- package/dist/src/mobile/androidUpgradeConformance.d.ts +47 -0
- package/dist/src/mobile/androidWebView.d.ts +1 -0
- package/dist/src/mobile/browser.d.ts +2 -0
- package/dist/src/mobile/capacitorBundle.d.ts +33 -1
- package/dist/src/mobile/ciWorkflow.d.ts +26 -0
- package/dist/src/mobile/config.d.ts +22 -1
- package/dist/src/mobile/devDeviceAdapter.d.ts +3 -0
- package/dist/src/mobile/deviceCapabilities.d.ts +49 -0
- package/dist/src/mobile/expoBridge.d.ts +91 -0
- package/dist/src/mobile/expoCodeSigning.d.ts +14 -0
- package/dist/src/mobile/expoDevController.d.ts +64 -0
- package/dist/src/mobile/expoNativeObservability.d.ts +3 -0
- package/dist/src/mobile/expoProject.d.ts +16 -0
- package/dist/src/mobile/expoUpdate.d.ts +27 -0
- package/dist/src/mobile/index.d.ts +29 -0
- package/dist/src/mobile/iosDeviceAcceptance.d.ts +32 -0
- package/dist/src/mobile/iosPhysicalDeviceTransport.d.ts +16 -0
- package/dist/src/mobile/iosRelease.d.ts +63 -3
- package/dist/src/mobile/iosSimulatorController.d.ts +20 -2
- package/dist/src/mobile/iosTestReport.d.ts +24 -0
- package/dist/src/mobile/mobileBundleInspection.d.ts +63 -0
- package/dist/src/mobile/mobileInspect.d.ts +156 -0
- package/dist/src/mobile/mobilePreview.d.ts +174 -0
- package/dist/src/mobile/mobilePreviewClient.d.ts +1 -0
- package/dist/src/mobile/nativeAuth.d.ts +6 -0
- package/dist/src/mobile/nativeBackgroundSync.d.ts +4 -0
- package/dist/src/mobile/nativeDeviceCapabilities.d.ts +6 -0
- package/dist/src/mobile/nativeObservability.d.ts +4 -0
- package/dist/src/mobile/nativeRoute.d.ts +13 -0
- package/dist/src/mobile/nativeTestReport.d.ts +91 -0
- package/dist/src/mobile/nativeUpdates.d.ts +4 -0
- package/dist/src/mobile/navigationLifecycle.d.ts +36 -0
- package/dist/src/mobile/navigationState.d.ts +53 -0
- package/dist/src/mobile/pageProtocol.d.ts +2 -0
- package/dist/src/mobile/releaseDoctor.d.ts +23 -1
- package/dist/src/mobile/remoteMacProtocol.d.ts +134 -1
- package/dist/src/mobile/remoteMacWire.d.ts +1 -1
- package/dist/src/mobile/shellAuth.d.ts +5 -1
- package/dist/src/mobile/shellBootstrap.d.ts +12 -2
- package/dist/src/mobile/shellExpoAuth.d.ts +12 -0
- package/dist/src/mobile/shellExpoDevices.d.ts +3 -0
- package/dist/src/mobile/shellExpoSync.d.ts +18 -0
- package/dist/src/mobile/shellHttp.d.ts +2 -0
- package/dist/src/mobile/shellNativeObservability.d.ts +21 -0
- package/dist/src/mobile/shellObservability.d.ts +11 -0
- package/dist/src/mobile/shellPush.d.ts +11 -0
- package/dist/src/mobile/shellSync.d.ts +37 -4
- package/dist/src/mobile/shellUpdate.d.ts +2 -0
- package/dist/src/mobile/syncRemediation.d.ts +10 -0
- package/dist/src/mobile/syncSchema.d.ts +9 -0
- package/dist/src/mobile/transport.d.ts +21 -0
- package/dist/src/mobile/uiPrimitives.d.ts +37 -0
- package/dist/src/mobile/updateClient.d.ts +44 -0
- package/dist/src/mobile/updateProtocol.d.ts +51 -0
- package/dist/src/mobile/updatePublisher.d.ts +66 -0
- package/dist/src/mobile/updateRollout.d.ts +16 -0
- package/dist/src/mobile/updateRuntime.d.ts +37 -0
- package/dist/src/mobile/updateSigning.d.ts +20 -0
- package/dist/src/plugins/hmr.d.ts +3 -0
- package/dist/src/plugins/imageOptimizer.d.ts +1 -1
- package/dist/src/react/hooks/useMediaQuery.d.ts +1 -1
- package/dist/src/utils/imageProcessing.d.ts +3 -0
- package/dist/src/utils/loadConfig.d.ts +1 -0
- package/dist/src/utils/logger.d.ts +1 -0
- package/dist/src/utils/startupBanner.d.ts +1 -0
- package/dist/src/utils/startupTimings.d.ts +4 -0
- package/dist/src/utils/userAgentFunctions.d.ts +1 -1
- package/dist/src/vue/browser.d.ts +1 -0
- package/dist/src/vue/browserTranslation.d.ts +5 -0
- package/dist/src/vue/index.d.ts +1 -0
- package/dist/svelte/browser.js +12 -26
- package/dist/svelte/browser.js.map +2 -2
- package/dist/svelte/index.js +104 -61
- package/dist/svelte/index.js.map +8 -7
- package/dist/svelte/server.js +84 -28
- package/dist/svelte/server.js.map +7 -6
- package/dist/types/build.d.ts +83 -3
- package/dist/types/cli.d.ts +1 -0
- package/dist/types/globals.d.ts +15 -0
- package/dist/types/messages.d.ts +1 -1
- package/dist/vue/browser.js +116 -56
- package/dist/vue/browser.js.map +5 -3
- package/dist/vue/components/Image.js +9 -7
- package/dist/vue/components/Image.js.map +2 -2
- package/dist/vue/components/index.js +11 -9
- package/dist/vue/components/index.js.map +2 -2
- package/dist/vue/index.js +211 -94
- package/dist/vue/index.js.map +10 -7
- package/dist/vue/server.js +69 -13
- package/dist/vue/server.js.map +7 -6
- package/package.json +46 -15
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
import { installDeviceAdapter } from '@absolutejs/devices';
|
|
2
|
+
import {
|
|
3
|
+
createAbsoluteHttpTransport,
|
|
4
|
+
installAbsoluteHttpTransport
|
|
5
|
+
} from '@absolutejs/http';
|
|
6
|
+
import {
|
|
7
|
+
createTestDeviceAdapter,
|
|
8
|
+
type TestDeviceController
|
|
9
|
+
} from '@absolutejs/devices/testing';
|
|
10
|
+
|
|
11
|
+
type PreviewMessage =
|
|
12
|
+
| { type: 'absolute-preview:back' }
|
|
13
|
+
| { type: 'absolute-preview:deep-link'; url: string }
|
|
14
|
+
| { type: 'absolute-preview:keyboard'; heightPx: number; visible: boolean }
|
|
15
|
+
| {
|
|
16
|
+
type: 'absolute-preview:lifecycle';
|
|
17
|
+
state: 'active' | 'background' | 'inactive';
|
|
18
|
+
}
|
|
19
|
+
| {
|
|
20
|
+
type: 'absolute-preview:network';
|
|
21
|
+
connected: boolean;
|
|
22
|
+
connectionType: 'cellular' | 'none' | 'unknown' | 'wifi';
|
|
23
|
+
}
|
|
24
|
+
| {
|
|
25
|
+
type: 'absolute-preview:permission';
|
|
26
|
+
capability: 'camera' | 'location' | 'notifications';
|
|
27
|
+
state: 'blocked' | 'denied' | 'granted' | 'prompt';
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
const isRecord = (value: unknown): value is Record<string, unknown> =>
|
|
31
|
+
typeof value === 'object' && value !== null;
|
|
32
|
+
|
|
33
|
+
const isPreviewMessage = (value: unknown): value is PreviewMessage => {
|
|
34
|
+
if (!isRecord(value) || typeof value.type !== 'string') return false;
|
|
35
|
+
if (value.type === 'absolute-preview:back') return true;
|
|
36
|
+
if (value.type === 'absolute-preview:deep-link')
|
|
37
|
+
return typeof value.url === 'string';
|
|
38
|
+
if (value.type === 'absolute-preview:keyboard')
|
|
39
|
+
return (
|
|
40
|
+
typeof value.heightPx === 'number' &&
|
|
41
|
+
Number.isFinite(value.heightPx) &&
|
|
42
|
+
typeof value.visible === 'boolean'
|
|
43
|
+
);
|
|
44
|
+
if (value.type === 'absolute-preview:lifecycle')
|
|
45
|
+
return ['active', 'background', 'inactive'].includes(
|
|
46
|
+
String(value.state)
|
|
47
|
+
);
|
|
48
|
+
if (value.type === 'absolute-preview:network')
|
|
49
|
+
return (
|
|
50
|
+
typeof value.connected === 'boolean' &&
|
|
51
|
+
['cellular', 'none', 'unknown', 'wifi'].includes(
|
|
52
|
+
String(value.connectionType)
|
|
53
|
+
)
|
|
54
|
+
);
|
|
55
|
+
if (value.type === 'absolute-preview:permission')
|
|
56
|
+
return (
|
|
57
|
+
['camera', 'location', 'notifications'].includes(
|
|
58
|
+
String(value.capability)
|
|
59
|
+
) &&
|
|
60
|
+
['blocked', 'denied', 'granted', 'prompt'].includes(
|
|
61
|
+
String(value.state)
|
|
62
|
+
)
|
|
63
|
+
);
|
|
64
|
+
|
|
65
|
+
return false;
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
const previewPlatform = () =>
|
|
69
|
+
new URLSearchParams(location.search).get('__absolute_preview_platform') ===
|
|
70
|
+
'android'
|
|
71
|
+
? 'android'
|
|
72
|
+
: 'ios';
|
|
73
|
+
|
|
74
|
+
const PREVIEW_STATE_KEY = Symbol.for('@absolutejs/mobile-preview/state');
|
|
75
|
+
type AbsoluteMobilePreviewState = { connected: boolean };
|
|
76
|
+
const isAbsoluteMobilePreviewState = (
|
|
77
|
+
value: unknown
|
|
78
|
+
): value is AbsoluteMobilePreviewState =>
|
|
79
|
+
isRecord(value) && typeof value.connected === 'boolean';
|
|
80
|
+
const getPreviewState = () => {
|
|
81
|
+
const existing = Reflect.get(globalThis, PREVIEW_STATE_KEY);
|
|
82
|
+
if (isAbsoluteMobilePreviewState(existing)) return existing;
|
|
83
|
+
const created: AbsoluteMobilePreviewState = { connected: true };
|
|
84
|
+
Reflect.set(globalThis, PREVIEW_STATE_KEY, created);
|
|
85
|
+
|
|
86
|
+
return created;
|
|
87
|
+
};
|
|
88
|
+
const previewState = getPreviewState();
|
|
89
|
+
const browserFetch = globalThis.fetch;
|
|
90
|
+
const nativeFetch = browserFetch.bind(globalThis);
|
|
91
|
+
const isPreviewInfrastructureRequest = (url: URL) =>
|
|
92
|
+
url.origin === location.origin &&
|
|
93
|
+
(url.pathname.startsWith('/__absolute/') ||
|
|
94
|
+
url.pathname.startsWith('/@src/') ||
|
|
95
|
+
url.pathname === '/hmr-status');
|
|
96
|
+
|
|
97
|
+
const previewPreconnect = (
|
|
98
|
+
...args: Parameters<typeof globalThis.fetch.preconnect>
|
|
99
|
+
) => {
|
|
100
|
+
const preconnect = Reflect.get(browserFetch, 'preconnect');
|
|
101
|
+
if (typeof preconnect === 'function')
|
|
102
|
+
Reflect.apply(preconnect, browserFetch, args);
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
const previewFetch: typeof globalThis.fetch = Object.assign(
|
|
106
|
+
(
|
|
107
|
+
input: Parameters<typeof globalThis.fetch>[0],
|
|
108
|
+
init?: Parameters<typeof globalThis.fetch>[1]
|
|
109
|
+
) => {
|
|
110
|
+
const requestUrl = new URL(
|
|
111
|
+
input instanceof Request ? input.url : String(input),
|
|
112
|
+
location.href
|
|
113
|
+
);
|
|
114
|
+
if (
|
|
115
|
+
!previewState.connected &&
|
|
116
|
+
!isPreviewInfrastructureRequest(requestUrl)
|
|
117
|
+
) {
|
|
118
|
+
return Promise.reject(
|
|
119
|
+
new TypeError(
|
|
120
|
+
'AbsoluteJS mobile preview is offline. Restore connectivity from the preview controls.'
|
|
121
|
+
)
|
|
122
|
+
);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
return nativeFetch(input, init);
|
|
126
|
+
},
|
|
127
|
+
{ preconnect: previewPreconnect }
|
|
128
|
+
);
|
|
129
|
+
|
|
130
|
+
const installPreviewFetch = () => {
|
|
131
|
+
globalThis.fetch = previewFetch;
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
let removePreviewHttpTransport: (() => void) | undefined;
|
|
135
|
+
const installPreviewHttpTransport = () => {
|
|
136
|
+
removePreviewHttpTransport?.();
|
|
137
|
+
removePreviewHttpTransport = installAbsoluteHttpTransport(
|
|
138
|
+
createAbsoluteHttpTransport({
|
|
139
|
+
fetch: previewFetch,
|
|
140
|
+
origin: location.origin,
|
|
141
|
+
runtime: 'web'
|
|
142
|
+
})
|
|
143
|
+
);
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
installPreviewFetch();
|
|
147
|
+
|
|
148
|
+
const postState = (
|
|
149
|
+
type: 'event' | 'ready',
|
|
150
|
+
detail: Record<string, unknown> = {}
|
|
151
|
+
) => {
|
|
152
|
+
if (window.parent === window) return;
|
|
153
|
+
window.parent.postMessage(
|
|
154
|
+
{
|
|
155
|
+
...detail,
|
|
156
|
+
platform: previewPlatform(),
|
|
157
|
+
type: `absolute-preview:${type}`
|
|
158
|
+
},
|
|
159
|
+
location.origin
|
|
160
|
+
);
|
|
161
|
+
};
|
|
162
|
+
|
|
163
|
+
const reportReady = () => {
|
|
164
|
+
const durationMs = Math.max(0, Math.round(performance.now()));
|
|
165
|
+
void nativeFetch('/__absolute/mobile-preview-telemetry', {
|
|
166
|
+
body: JSON.stringify({ durationMs, platform: previewPlatform() }),
|
|
167
|
+
headers: { 'content-type': 'application/json' },
|
|
168
|
+
keepalive: true,
|
|
169
|
+
method: 'POST'
|
|
170
|
+
}).catch(() => undefined);
|
|
171
|
+
};
|
|
172
|
+
|
|
173
|
+
const emitPermission = (
|
|
174
|
+
controller: TestDeviceController,
|
|
175
|
+
message: Extract<PreviewMessage, { type: 'absolute-preview:permission' }>
|
|
176
|
+
) => {
|
|
177
|
+
const status = {
|
|
178
|
+
canRequest: message.state === 'prompt',
|
|
179
|
+
state: message.state
|
|
180
|
+
} as const;
|
|
181
|
+
if (message.capability === 'camera')
|
|
182
|
+
controller.cameraPermission.setStatus(status);
|
|
183
|
+
else if (message.capability === 'location')
|
|
184
|
+
controller.locationPermission.setStatus(status);
|
|
185
|
+
else controller.notificationPermission.setStatus(status);
|
|
186
|
+
};
|
|
187
|
+
|
|
188
|
+
const handlePreviewMessage = (
|
|
189
|
+
controller: TestDeviceController,
|
|
190
|
+
message: PreviewMessage
|
|
191
|
+
) => {
|
|
192
|
+
if (message.type === 'absolute-preview:back') {
|
|
193
|
+
controller.emitBack({ canGoBack: history.length > 1 });
|
|
194
|
+
} else if (message.type === 'absolute-preview:deep-link') {
|
|
195
|
+
controller.emitLink(message.url);
|
|
196
|
+
} else if (message.type === 'absolute-preview:keyboard') {
|
|
197
|
+
controller.emitKeyboard({
|
|
198
|
+
heightPx: Math.max(0, Math.round(message.heightPx)),
|
|
199
|
+
visible: message.visible
|
|
200
|
+
});
|
|
201
|
+
} else if (message.type === 'absolute-preview:lifecycle') {
|
|
202
|
+
controller.emitLifecycle(message.state);
|
|
203
|
+
} else if (message.type === 'absolute-preview:network') {
|
|
204
|
+
previewState.connected = message.connected;
|
|
205
|
+
// Some framework runtimes replace window.fetch while bootstrapping.
|
|
206
|
+
// Reassert the raw-fetch simulation whenever connectivity changes;
|
|
207
|
+
// @absolutejs/http remains pinned to this provider independently.
|
|
208
|
+
installPreviewFetch();
|
|
209
|
+
installPreviewHttpTransport();
|
|
210
|
+
controller.emitNetwork({
|
|
211
|
+
connected: message.connected,
|
|
212
|
+
connectionType: message.connectionType
|
|
213
|
+
});
|
|
214
|
+
} else emitPermission(controller, message);
|
|
215
|
+
postState('event', { event: message.type });
|
|
216
|
+
};
|
|
217
|
+
|
|
218
|
+
export const installAbsoluteMobilePreview = () => {
|
|
219
|
+
if (Reflect.has(globalThis, '__ABS_MOBILE_PREVIEW__')) return;
|
|
220
|
+
const platform = previewPlatform();
|
|
221
|
+
const controller = createTestDeviceAdapter({
|
|
222
|
+
lifecycle: 'active',
|
|
223
|
+
network: { connected: true, connectionType: 'wifi' },
|
|
224
|
+
platform: {
|
|
225
|
+
formFactor: 'phone',
|
|
226
|
+
isNative: true,
|
|
227
|
+
os: platform,
|
|
228
|
+
runtime: 'capacitor',
|
|
229
|
+
safeAreaInsets:
|
|
230
|
+
platform === 'ios'
|
|
231
|
+
? { bottom: 34, left: 0, right: 0, top: 59 }
|
|
232
|
+
: { bottom: 24, left: 0, right: 0, top: 24 }
|
|
233
|
+
}
|
|
234
|
+
});
|
|
235
|
+
installDeviceAdapter(controller.adapter);
|
|
236
|
+
installPreviewHttpTransport();
|
|
237
|
+
Reflect.set(globalThis, '__ABS_MOBILE_PREVIEW__', controller);
|
|
238
|
+
addEventListener('message', (event: MessageEvent<unknown>) => {
|
|
239
|
+
if (event.origin !== location.origin || event.source !== window.parent)
|
|
240
|
+
return;
|
|
241
|
+
if (!isPreviewMessage(event.data)) return;
|
|
242
|
+
handlePreviewMessage(controller, event.data);
|
|
243
|
+
});
|
|
244
|
+
postState('ready');
|
|
245
|
+
reportReady();
|
|
246
|
+
};
|