@wix/editor-application 1.392.0 → 1.394.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.js +23 -605
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/index.js +23 -602
- package/dist/esm/index.js.map +1 -1
- package/dist/statics/index.js +26 -609
- package/dist/statics/index.js.map +1 -1
- package/dist/types/index.d.ts +18 -192
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +10 -35
- package/dist/cjs/environment-api/index.js +0 -634
- package/dist/cjs/environment-api/index.js.map +0 -1
- package/dist/cjs/platform-frame/index.js +0 -403
- package/dist/cjs/platform-frame/index.js.map +0 -1
- package/dist/cjs/platform-frame-api/index.js +0 -377
- package/dist/cjs/platform-frame-api/index.js.map +0 -1
- package/dist/cjs/platform-worker/index.js +0 -580
- package/dist/cjs/platform-worker/index.js.map +0 -1
- package/dist/cjs/platform-worker-api/index.js +0 -579
- package/dist/cjs/platform-worker-api/index.js.map +0 -1
- package/dist/esm/environment-api/index.js +0 -630
- package/dist/esm/environment-api/index.js.map +0 -1
- package/dist/esm/platform-frame/index.js +0 -401
- package/dist/esm/platform-frame/index.js.map +0 -1
- package/dist/esm/platform-frame-api/index.js +0 -375
- package/dist/esm/platform-frame-api/index.js.map +0 -1
- package/dist/esm/platform-worker/index.js +0 -578
- package/dist/esm/platform-worker/index.js.map +0 -1
- package/dist/esm/platform-worker-api/index.js +0 -577
- package/dist/esm/platform-worker-api/index.js.map +0 -1
- package/dist/statics/environment-api/index.js +0 -636
- package/dist/statics/environment-api/index.js.map +0 -1
- package/dist/statics/platform-frame/index.js +0 -404
- package/dist/statics/platform-frame/index.js.map +0 -1
- package/dist/statics/platform-frame-api/index.js +0 -380
- package/dist/statics/platform-frame-api/index.js.map +0 -1
- package/dist/statics/platform-worker/index.js +0 -581
- package/dist/statics/platform-worker/index.js.map +0 -1
- package/dist/statics/platform-worker-api/index.js +0 -581
- package/dist/statics/platform-worker-api/index.js.map +0 -1
- package/dist/types/environment-api/index.d.ts +0 -59
- package/dist/types/environment-api/index.d.ts.map +0 -1
- package/dist/types/platform-frame/index.d.ts +0 -59
- package/dist/types/platform-frame/index.d.ts.map +0 -1
- package/dist/types/platform-frame-api/index.d.ts +0 -59
- package/dist/types/platform-frame-api/index.d.ts.map +0 -1
- package/dist/types/platform-worker/index.d.ts +0 -59
- package/dist/types/platform-worker/index.d.ts.map +0 -1
- package/dist/types/platform-worker-api/index.d.ts +0 -59
- package/dist/types/platform-worker-api/index.d.ts.map +0 -1
|
@@ -1,377 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var publicEditorPlatformEvents = require('@wix/public-editor-platform-events');
|
|
4
|
-
var publicEditorPlatformErrors = require('@wix/public-editor-platform-errors');
|
|
5
|
-
|
|
6
|
-
class WorkerEventsBridge {
|
|
7
|
-
constructor(platformAppEvents) {
|
|
8
|
-
this.platformAppEvents = platformAppEvents;
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* Notify by event from Worker Manager (platform infrastructure)
|
|
12
|
-
*/
|
|
13
|
-
notify(event) {
|
|
14
|
-
switch (event.type) {
|
|
15
|
-
case publicEditorPlatformEvents.PlatformLifecycleEvent.EditorReady:
|
|
16
|
-
this.platformAppEvents.notify({
|
|
17
|
-
...event,
|
|
18
|
-
// @ts-expect-error TODO: fix me
|
|
19
|
-
type: publicEditorPlatformEvents.PlatformAppEvent.EditorReady
|
|
20
|
-
});
|
|
21
|
-
break;
|
|
22
|
-
case publicEditorPlatformEvents.PlatformPrivateEvent.HostEvent:
|
|
23
|
-
this.platformAppEvents.notify({
|
|
24
|
-
...event,
|
|
25
|
-
type: publicEditorPlatformEvents.PlatformAppEvent.HostEvent
|
|
26
|
-
});
|
|
27
|
-
break;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Subscribe to Worker (Application) event
|
|
32
|
-
*/
|
|
33
|
-
subscribe(cb) {
|
|
34
|
-
this.platformAppEvents.subscribe((event) => {
|
|
35
|
-
cb(event);
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
var PlatformConsumerEnvironmentAPIType = /* @__PURE__ */ ((PlatformConsumerEnvironmentAPIType2) => {
|
|
41
|
-
PlatformConsumerEnvironmentAPIType2["Frame"] = "PLATFORM_FRAME_API";
|
|
42
|
-
PlatformConsumerEnvironmentAPIType2["Worker"] = "PLATFORM_WORKER_API";
|
|
43
|
-
return PlatformConsumerEnvironmentAPIType2;
|
|
44
|
-
})(PlatformConsumerEnvironmentAPIType || {});
|
|
45
|
-
class AbstractEnvironmentAPI {
|
|
46
|
-
constructor(env) {
|
|
47
|
-
this.env = env;
|
|
48
|
-
this.create();
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
var EditorPlatformApplicationContextErrorCode = /* @__PURE__ */ ((EditorPlatformApplicationContextErrorCode2) => {
|
|
53
|
-
EditorPlatformApplicationContextErrorCode2["IncorrectEnvironment"] = "IncorrectEnvironment";
|
|
54
|
-
EditorPlatformApplicationContextErrorCode2["ClientAuthError"] = "ClientAuthError";
|
|
55
|
-
return EditorPlatformApplicationContextErrorCode2;
|
|
56
|
-
})(EditorPlatformApplicationContextErrorCode || {});
|
|
57
|
-
class EditorPlatformApplicationContextError extends publicEditorPlatformErrors.BaseError {
|
|
58
|
-
state = {};
|
|
59
|
-
constructor(message, code) {
|
|
60
|
-
super(message, code, "Editor Platform Application Context Error");
|
|
61
|
-
}
|
|
62
|
-
withUrl(url) {
|
|
63
|
-
this.state = { ...this.state, url };
|
|
64
|
-
return this;
|
|
65
|
-
}
|
|
66
|
-
withAppDefinitionId(appDefinitionId) {
|
|
67
|
-
this.state = { ...this.state, appDefinitionId };
|
|
68
|
-
return this;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
const createEditorPlatformApplicationContextError = publicEditorPlatformErrors.createErrorBuilder(EditorPlatformApplicationContextError);
|
|
72
|
-
async function transformEventPayload(eventPayload, privateAPI) {
|
|
73
|
-
if (!eventPayload?.type) {
|
|
74
|
-
return eventPayload;
|
|
75
|
-
}
|
|
76
|
-
switch (eventPayload.type) {
|
|
77
|
-
case "componentSelectionChanged":
|
|
78
|
-
const componentRefs = eventPayload.componentRefs || [];
|
|
79
|
-
const components = await Promise.all(
|
|
80
|
-
componentRefs.map((ref) => {
|
|
81
|
-
return privateAPI.components.getComponent(ref);
|
|
82
|
-
})
|
|
83
|
-
);
|
|
84
|
-
return {
|
|
85
|
-
type: eventPayload.type,
|
|
86
|
-
components
|
|
87
|
-
};
|
|
88
|
-
default:
|
|
89
|
-
return eventPayload;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
class ApplicationBoundEvents {
|
|
93
|
-
constructor(appDefinitionId, events, privateAPI) {
|
|
94
|
-
this.appDefinitionId = appDefinitionId;
|
|
95
|
-
this.privateAPI = privateAPI;
|
|
96
|
-
this.events = events;
|
|
97
|
-
this.subscribe = events.subscribe.bind(events);
|
|
98
|
-
this.commit = events.commit.bind(events);
|
|
99
|
-
this.startTransaction = events.startTransaction.bind(events);
|
|
100
|
-
this.silent = events.silent.bind(events);
|
|
101
|
-
}
|
|
102
|
-
events;
|
|
103
|
-
subscribe;
|
|
104
|
-
commit;
|
|
105
|
-
startTransaction;
|
|
106
|
-
silent;
|
|
107
|
-
notify(event) {
|
|
108
|
-
this.events.notify({
|
|
109
|
-
type: event.type,
|
|
110
|
-
payload: event.payload,
|
|
111
|
-
meta: {
|
|
112
|
-
appDefinitionId: this.appDefinitionId
|
|
113
|
-
}
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
notifyCustomEvent(type, payload) {
|
|
117
|
-
this.notify({
|
|
118
|
-
type: publicEditorPlatformEvents.PlatformAppEvent.CustomEvent,
|
|
119
|
-
payload: {
|
|
120
|
-
...payload,
|
|
121
|
-
type
|
|
122
|
-
}
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* TODO: we should use same interface for all events
|
|
127
|
-
* (subscribe vs addEventListener)
|
|
128
|
-
*/
|
|
129
|
-
addEventListener(eventType, fn) {
|
|
130
|
-
return this.events.subscribe(async (event) => {
|
|
131
|
-
const isAppMatch = event.meta?.appDefinitionId === this.appDefinitionId || event.meta?.appDefinitionId === null;
|
|
132
|
-
const transformPayload = () => transformEventPayload(event.payload, this.privateAPI);
|
|
133
|
-
if (eventType === "*") {
|
|
134
|
-
fn(await transformPayload());
|
|
135
|
-
} else if (event.type === publicEditorPlatformEvents.PlatformAppEvent.CustomEvent) {
|
|
136
|
-
if (eventType === event.payload?.type && !isAppMatch) {
|
|
137
|
-
fn(await transformPayload());
|
|
138
|
-
}
|
|
139
|
-
} else if (event.type === publicEditorPlatformEvents.PlatformAppEvent.HostEvent) {
|
|
140
|
-
if (eventType === event.payload?.type && isAppMatch) {
|
|
141
|
-
fn(await transformPayload());
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
});
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
const WAIT_INJECTED_TIMEOUT = 200;
|
|
148
|
-
const WAIT_INJECTED_RETRY_COUNT = 50;
|
|
149
|
-
class ContextInjectionStatus {
|
|
150
|
-
_resolveContextInjected = () => {
|
|
151
|
-
};
|
|
152
|
-
_isInjected = false;
|
|
153
|
-
key;
|
|
154
|
-
constructor(uuid) {
|
|
155
|
-
this.key = `__${uuid}_CONTEXT_INJECTION_STATUS_KEY`;
|
|
156
|
-
if (!globalThis[this.key]) {
|
|
157
|
-
globalThis[this.key] = new Promise((resolve) => {
|
|
158
|
-
this._resolveContextInjected = () => {
|
|
159
|
-
this._isInjected = true;
|
|
160
|
-
resolve();
|
|
161
|
-
};
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
isInjected() {
|
|
166
|
-
return !!this._isInjected;
|
|
167
|
-
}
|
|
168
|
-
resolveInjected() {
|
|
169
|
-
this._resolveContextInjected?.();
|
|
170
|
-
}
|
|
171
|
-
waitInjected() {
|
|
172
|
-
return new Promise((resolve, reject) => {
|
|
173
|
-
let injected = false;
|
|
174
|
-
let timeoutId;
|
|
175
|
-
let retryCount = 0;
|
|
176
|
-
const timeout = () => {
|
|
177
|
-
if (injected) {
|
|
178
|
-
return;
|
|
179
|
-
}
|
|
180
|
-
timeoutId = setTimeout(() => {
|
|
181
|
-
retryCount++;
|
|
182
|
-
if (retryCount < WAIT_INJECTED_RETRY_COUNT) {
|
|
183
|
-
if (retryCount % 10 === 0) {
|
|
184
|
-
console.log(
|
|
185
|
-
createEditorPlatformApplicationContextError(
|
|
186
|
-
EditorPlatformApplicationContextErrorCode.IncorrectEnvironment,
|
|
187
|
-
"contexts are not resolved, still re-trying"
|
|
188
|
-
).withMessage(`try number ${retryCount}`).message
|
|
189
|
-
);
|
|
190
|
-
}
|
|
191
|
-
timeout();
|
|
192
|
-
return;
|
|
193
|
-
}
|
|
194
|
-
if (!injected) {
|
|
195
|
-
const error = createEditorPlatformApplicationContextError(
|
|
196
|
-
EditorPlatformApplicationContextErrorCode.IncorrectEnvironment,
|
|
197
|
-
"contexts are not resolved, threw by timeout"
|
|
198
|
-
);
|
|
199
|
-
reject(error);
|
|
200
|
-
}
|
|
201
|
-
}, WAIT_INJECTED_TIMEOUT);
|
|
202
|
-
};
|
|
203
|
-
timeout();
|
|
204
|
-
const _waitContextInjectedPromise = globalThis[this.key];
|
|
205
|
-
_waitContextInjectedPromise.then(() => {
|
|
206
|
-
injected = true;
|
|
207
|
-
clearTimeout(timeoutId);
|
|
208
|
-
resolve();
|
|
209
|
-
});
|
|
210
|
-
});
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
const ENVIRONMENT_CONTEXT_KEY = "__ENVIRONMENT_CONTEXT_KEY";
|
|
214
|
-
var PlatformEnvironment = /* @__PURE__ */ ((PlatformEnvironment2) => {
|
|
215
|
-
PlatformEnvironment2["Worker"] = "Worker";
|
|
216
|
-
PlatformEnvironment2["Frame"] = "Frame";
|
|
217
|
-
PlatformEnvironment2["ComponentPanel"] = "ComponentPanel";
|
|
218
|
-
return PlatformEnvironment2;
|
|
219
|
-
})(PlatformEnvironment || {});
|
|
220
|
-
class EnvironmentContext {
|
|
221
|
-
constructor(environmentContext) {
|
|
222
|
-
this.environmentContext = environmentContext;
|
|
223
|
-
}
|
|
224
|
-
static status = new ContextInjectionStatus("environment");
|
|
225
|
-
static async inject(context) {
|
|
226
|
-
if (globalThis[ENVIRONMENT_CONTEXT_KEY]) {
|
|
227
|
-
throw createEditorPlatformApplicationContextError(
|
|
228
|
-
EditorPlatformApplicationContextErrorCode.IncorrectEnvironment,
|
|
229
|
-
"Environment context already exists and should not be overridden"
|
|
230
|
-
);
|
|
231
|
-
}
|
|
232
|
-
globalThis[ENVIRONMENT_CONTEXT_KEY] = new EnvironmentContext(context);
|
|
233
|
-
this.status.resolveInjected();
|
|
234
|
-
}
|
|
235
|
-
static async getInstance() {
|
|
236
|
-
await this.status.waitInjected();
|
|
237
|
-
return globalThis[ENVIRONMENT_CONTEXT_KEY];
|
|
238
|
-
}
|
|
239
|
-
getPrivateAPI() {
|
|
240
|
-
return this.environmentContext.privateApi;
|
|
241
|
-
}
|
|
242
|
-
getEvents() {
|
|
243
|
-
return this.environmentContext.events;
|
|
244
|
-
}
|
|
245
|
-
getApplicationAPIs() {
|
|
246
|
-
return this.environmentContext.applicationAPIs ?? {};
|
|
247
|
-
}
|
|
248
|
-
getEnvironment() {
|
|
249
|
-
return this.environmentContext.environment;
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
const APPLICATION_CONTEXT_KEY = "__APPLICATION_CONTEXT_KEY";
|
|
253
|
-
class ApplicationContext {
|
|
254
|
-
constructor(applicationContext, environment) {
|
|
255
|
-
this.applicationContext = applicationContext;
|
|
256
|
-
this.environment = environment;
|
|
257
|
-
this.events = new ApplicationBoundEvents(
|
|
258
|
-
this.applicationContext.appDefinitionId,
|
|
259
|
-
this.environment.getEvents(),
|
|
260
|
-
this.environment.getPrivateAPI()
|
|
261
|
-
);
|
|
262
|
-
}
|
|
263
|
-
static status = new ContextInjectionStatus("application");
|
|
264
|
-
/**
|
|
265
|
-
* TODO: use generics for context type
|
|
266
|
-
* - application
|
|
267
|
-
* - editor
|
|
268
|
-
*/
|
|
269
|
-
static async inject(context) {
|
|
270
|
-
const environment = await EnvironmentContext.getInstance();
|
|
271
|
-
if (environment.getEnvironment() !== PlatformEnvironment.Frame) {
|
|
272
|
-
throw createEditorPlatformApplicationContextError(
|
|
273
|
-
EditorPlatformApplicationContextErrorCode.IncorrectEnvironment,
|
|
274
|
-
"Application context can be injected only in frame environment"
|
|
275
|
-
);
|
|
276
|
-
}
|
|
277
|
-
if (globalThis[APPLICATION_CONTEXT_KEY]) {
|
|
278
|
-
throw createEditorPlatformApplicationContextError(
|
|
279
|
-
EditorPlatformApplicationContextErrorCode.IncorrectEnvironment,
|
|
280
|
-
"Application context already exists and should not be overridden"
|
|
281
|
-
);
|
|
282
|
-
}
|
|
283
|
-
globalThis[APPLICATION_CONTEXT_KEY] = new ApplicationContext(
|
|
284
|
-
context,
|
|
285
|
-
await EnvironmentContext.getInstance()
|
|
286
|
-
);
|
|
287
|
-
this.status.resolveInjected();
|
|
288
|
-
}
|
|
289
|
-
static async getInstance() {
|
|
290
|
-
const environment = await EnvironmentContext.getInstance();
|
|
291
|
-
if (environment.getEnvironment() === PlatformEnvironment.Frame) {
|
|
292
|
-
await this.status.waitInjected();
|
|
293
|
-
return globalThis[APPLICATION_CONTEXT_KEY];
|
|
294
|
-
} else {
|
|
295
|
-
return __APPLICATION_CONTEXT_KEY;
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
events;
|
|
299
|
-
getAppDefinitionId() {
|
|
300
|
-
return this.applicationContext.appDefinitionId;
|
|
301
|
-
}
|
|
302
|
-
getBindings() {
|
|
303
|
-
return this.applicationContext;
|
|
304
|
-
}
|
|
305
|
-
getEvents() {
|
|
306
|
-
return this.events;
|
|
307
|
-
}
|
|
308
|
-
getPrivateAPI() {
|
|
309
|
-
return this.environment.getPrivateAPI();
|
|
310
|
-
}
|
|
311
|
-
getPrivateApplicationAPI() {
|
|
312
|
-
const appDefinitionId = this.getAppDefinitionId();
|
|
313
|
-
if (!appDefinitionId) {
|
|
314
|
-
throw createEditorPlatformApplicationContextError(
|
|
315
|
-
EditorPlatformApplicationContextErrorCode.IncorrectEnvironment,
|
|
316
|
-
"appDefinitionId is not available"
|
|
317
|
-
);
|
|
318
|
-
}
|
|
319
|
-
return this.environment.getApplicationAPIs()[appDefinitionId];
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
const DESIGN_SYSTEM_STYLES_MAP = {
|
|
324
|
-
classic: "https://www.unpkg.com/@wix/design-system/dist/statics/tokens-default.global.css",
|
|
325
|
-
studio: "https://www.unpkg.com/@wix/design-system/dist/statics/tokens-studio.global.css"
|
|
326
|
-
};
|
|
327
|
-
class PlatformFrameAPI extends AbstractEnvironmentAPI {
|
|
328
|
-
type = PlatformConsumerEnvironmentAPIType.Frame;
|
|
329
|
-
#events = new publicEditorPlatformEvents.PlatformAppEventEmitter();
|
|
330
|
-
#eventsBridge = new WorkerEventsBridge(this.#events);
|
|
331
|
-
#privateAPI;
|
|
332
|
-
#applicationPrivateAPI;
|
|
333
|
-
constructor() {
|
|
334
|
-
super(PlatformConsumerEnvironmentAPIType.Frame);
|
|
335
|
-
}
|
|
336
|
-
create() {
|
|
337
|
-
if (typeof globalThis?.document?.head?.prepend === "function") {
|
|
338
|
-
const params = new URL(globalThis.location.href).searchParams;
|
|
339
|
-
const host = params.get("editorType") === "CLASSIC" ? "classic" : "studio";
|
|
340
|
-
const url = DESIGN_SYSTEM_STYLES_MAP[host];
|
|
341
|
-
const isAlreadyLoaded = url && !!document.querySelectorAll(`link[type="text/css"][href="${url}"]`)?.length;
|
|
342
|
-
if (url && !isAlreadyLoaded) {
|
|
343
|
-
const link = document.createElement("link");
|
|
344
|
-
link.setAttribute("rel", "stylesheet");
|
|
345
|
-
link.setAttribute("type", "text/css");
|
|
346
|
-
link.setAttribute("href", url);
|
|
347
|
-
globalThis.document.head.prepend(link);
|
|
348
|
-
}
|
|
349
|
-
}
|
|
350
|
-
}
|
|
351
|
-
async initEnvironment(props) {
|
|
352
|
-
const { applicationPrivateAPI, privateAPI, appDefinitionId } = props;
|
|
353
|
-
this.#applicationPrivateAPI = applicationPrivateAPI;
|
|
354
|
-
this.#privateAPI = privateAPI;
|
|
355
|
-
await EnvironmentContext.inject({
|
|
356
|
-
environment: PlatformEnvironment.Frame,
|
|
357
|
-
privateApi: privateAPI,
|
|
358
|
-
events: this.#events,
|
|
359
|
-
applicationAPIs: {
|
|
360
|
-
[appDefinitionId]: this.#applicationPrivateAPI
|
|
361
|
-
}
|
|
362
|
-
});
|
|
363
|
-
await ApplicationContext.inject({
|
|
364
|
-
appDefinitionId,
|
|
365
|
-
appDefinitionName: ""
|
|
366
|
-
});
|
|
367
|
-
}
|
|
368
|
-
notify(event) {
|
|
369
|
-
this.#eventsBridge.notify(event);
|
|
370
|
-
}
|
|
371
|
-
subscribe(cb) {
|
|
372
|
-
this.#eventsBridge.subscribe(cb);
|
|
373
|
-
}
|
|
374
|
-
}
|
|
375
|
-
|
|
376
|
-
exports.PlatformFrameAPI = PlatformFrameAPI;
|
|
377
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/Events/WorkerEventsBridge.ts","../../../src/PlatformEnvironmentAPI/AbstractEnvironmentAPI.ts","../../../../editor-platform-application-context/dist/esm/index.js","../../../src/PlatformEnvironmentAPI/PlatformFrameAPI/PlatformFrameAPI.ts"],"sourcesContent":["import {\n IPlatformPrivateEvent,\n PlatformLifecycleEvent,\n PlatformPrivateEvent,\n // --\n IPlatformAppEvent,\n PlatformAppEvent,\n PlatformAppEventEmitter,\n} from '@wix/public-editor-platform-events';\n\n/**\n * The events bridge between platform events (private) and app events\n */\nexport class WorkerEventsBridge {\n constructor(private platformAppEvents: PlatformAppEventEmitter) {}\n\n /**\n * Notify by event from Worker Manager (platform infrastructure)\n */\n public notify(event: IPlatformPrivateEvent) {\n switch (event.type) {\n case PlatformLifecycleEvent.EditorReady:\n this.platformAppEvents.notify({\n ...event,\n // @ts-expect-error TODO: fix me\n type: PlatformAppEvent.EditorReady,\n });\n break;\n case PlatformPrivateEvent.HostEvent:\n this.platformAppEvents.notify({\n ...event,\n type: PlatformAppEvent.HostEvent,\n });\n break;\n }\n }\n\n /**\n * Subscribe to Worker (Application) event\n */\n public subscribe(cb: (event: IPlatformAppEvent) => void) {\n this.platformAppEvents.subscribe((event) => {\n cb(event);\n });\n }\n}\n","export enum PlatformConsumerEnvironmentAPIType {\n Frame = 'PLATFORM_FRAME_API',\n Worker = 'PLATFORM_WORKER_API',\n}\n\n/**\n * rename these entities -> API to Env\n */\nexport abstract class AbstractEnvironmentAPI<\n TEnv extends PlatformConsumerEnvironmentAPIType,\n> {\n /**\n * NOTE: we can't `type` declare getter within current abstract class\n * because then after transferring API between threads this getter becomes promise,\n * which is not expected\n *\n * get type() {\n * return this.env;\n * }\n */\n public abstract type: TEnv;\n\n protected constructor(protected env: TEnv) {\n this.create();\n }\n\n abstract create(): void;\n abstract initEnvironment(props: unknown): void;\n}\n","import { createErrorBuilder, BaseError } from '@wix/public-editor-platform-errors';\nimport { PlatformAppEvent } from '@wix/public-editor-platform-events';\n\nvar EditorPlatformApplicationContextErrorCode = /* @__PURE__ */ ((EditorPlatformApplicationContextErrorCode2) => {\n EditorPlatformApplicationContextErrorCode2[\"IncorrectEnvironment\"] = \"IncorrectEnvironment\";\n EditorPlatformApplicationContextErrorCode2[\"ClientAuthError\"] = \"ClientAuthError\";\n return EditorPlatformApplicationContextErrorCode2;\n})(EditorPlatformApplicationContextErrorCode || {});\nclass EditorPlatformApplicationContextError extends BaseError {\n state = {};\n constructor(message, code) {\n super(message, code, \"Editor Platform Application Context Error\");\n }\n withUrl(url) {\n this.state = { ...this.state, url };\n return this;\n }\n withAppDefinitionId(appDefinitionId) {\n this.state = { ...this.state, appDefinitionId };\n return this;\n }\n}\nconst createEditorPlatformApplicationContextError = createErrorBuilder(EditorPlatformApplicationContextError);\n\nasync function transformEventPayload(eventPayload, privateAPI) {\n if (!eventPayload?.type) {\n return eventPayload;\n }\n switch (eventPayload.type) {\n case \"componentSelectionChanged\":\n const componentRefs = eventPayload.componentRefs || [];\n const components = await Promise.all(\n componentRefs.map((ref) => {\n return privateAPI.components.getComponent(ref);\n })\n );\n return {\n type: eventPayload.type,\n components\n };\n default:\n return eventPayload;\n }\n}\n\nclass ApplicationBoundEvents {\n constructor(appDefinitionId, events, privateAPI) {\n this.appDefinitionId = appDefinitionId;\n this.privateAPI = privateAPI;\n this.events = events;\n this.subscribe = events.subscribe.bind(events);\n this.commit = events.commit.bind(events);\n this.startTransaction = events.startTransaction.bind(events);\n this.silent = events.silent.bind(events);\n }\n events;\n subscribe;\n commit;\n startTransaction;\n silent;\n notify(event) {\n this.events.notify({\n type: event.type,\n payload: event.payload,\n meta: {\n appDefinitionId: this.appDefinitionId\n }\n });\n }\n notifyCustomEvent(type, payload) {\n this.notify({\n type: PlatformAppEvent.CustomEvent,\n payload: {\n ...payload,\n type\n }\n });\n }\n /**\n * TODO: we should use same interface for all events\n * (subscribe vs addEventListener)\n */\n addEventListener(eventType, fn) {\n return this.events.subscribe(async (event) => {\n const isAppMatch = event.meta?.appDefinitionId === this.appDefinitionId || event.meta?.appDefinitionId === null;\n const transformPayload = () => transformEventPayload(event.payload, this.privateAPI);\n if (eventType === \"*\") {\n fn(await transformPayload());\n } else if (event.type === PlatformAppEvent.CustomEvent) {\n if (eventType === event.payload?.type && !isAppMatch) {\n fn(await transformPayload());\n }\n } else if (event.type === PlatformAppEvent.HostEvent) {\n if (eventType === event.payload?.type && isAppMatch) {\n fn(await transformPayload());\n }\n }\n });\n }\n}\n\nconst WAIT_INJECTED_TIMEOUT = 200;\nconst WAIT_INJECTED_RETRY_COUNT = 50;\nclass ContextInjectionStatus {\n _resolveContextInjected = () => {\n };\n _isInjected = false;\n key;\n constructor(uuid) {\n this.key = `__${uuid}_CONTEXT_INJECTION_STATUS_KEY`;\n if (!globalThis[this.key]) {\n globalThis[this.key] = new Promise((resolve) => {\n this._resolveContextInjected = () => {\n this._isInjected = true;\n resolve();\n };\n });\n }\n }\n isInjected() {\n return !!this._isInjected;\n }\n resolveInjected() {\n this._resolveContextInjected?.();\n }\n waitInjected() {\n return new Promise((resolve, reject) => {\n let injected = false;\n let timeoutId;\n let retryCount = 0;\n const timeout = () => {\n if (injected) {\n return;\n }\n timeoutId = setTimeout(() => {\n retryCount++;\n if (retryCount < WAIT_INJECTED_RETRY_COUNT) {\n if (retryCount % 10 === 0) {\n console.log(\n createEditorPlatformApplicationContextError(\n EditorPlatformApplicationContextErrorCode.IncorrectEnvironment,\n \"contexts are not resolved, still re-trying\"\n ).withMessage(`try number ${retryCount}`).message\n );\n }\n timeout();\n return;\n }\n if (!injected) {\n const error = createEditorPlatformApplicationContextError(\n EditorPlatformApplicationContextErrorCode.IncorrectEnvironment,\n \"contexts are not resolved, threw by timeout\"\n );\n reject(error);\n }\n }, WAIT_INJECTED_TIMEOUT);\n };\n timeout();\n const _waitContextInjectedPromise = globalThis[this.key];\n _waitContextInjectedPromise.then(() => {\n injected = true;\n clearTimeout(timeoutId);\n resolve();\n });\n });\n }\n}\n\nconst ENVIRONMENT_CONTEXT_KEY = \"__ENVIRONMENT_CONTEXT_KEY\";\nvar PlatformEnvironment = /* @__PURE__ */ ((PlatformEnvironment2) => {\n PlatformEnvironment2[\"Worker\"] = \"Worker\";\n PlatformEnvironment2[\"Frame\"] = \"Frame\";\n PlatformEnvironment2[\"ComponentPanel\"] = \"ComponentPanel\";\n return PlatformEnvironment2;\n})(PlatformEnvironment || {});\nclass EnvironmentContext {\n constructor(environmentContext) {\n this.environmentContext = environmentContext;\n }\n static status = new ContextInjectionStatus(\"environment\");\n static async inject(context) {\n if (globalThis[ENVIRONMENT_CONTEXT_KEY]) {\n throw createEditorPlatformApplicationContextError(\n EditorPlatformApplicationContextErrorCode.IncorrectEnvironment,\n \"Environment context already exists and should not be overridden\"\n );\n }\n globalThis[ENVIRONMENT_CONTEXT_KEY] = new EnvironmentContext(context);\n this.status.resolveInjected();\n }\n static async getInstance() {\n await this.status.waitInjected();\n return globalThis[ENVIRONMENT_CONTEXT_KEY];\n }\n getPrivateAPI() {\n return this.environmentContext.privateApi;\n }\n getEvents() {\n return this.environmentContext.events;\n }\n getApplicationAPIs() {\n return this.environmentContext.applicationAPIs ?? {};\n }\n getEnvironment() {\n return this.environmentContext.environment;\n }\n}\n\nconst APPLICATION_CONTEXT_KEY = \"__APPLICATION_CONTEXT_KEY\";\nclass ApplicationContext {\n constructor(applicationContext, environment) {\n this.applicationContext = applicationContext;\n this.environment = environment;\n this.events = new ApplicationBoundEvents(\n this.applicationContext.appDefinitionId,\n this.environment.getEvents(),\n this.environment.getPrivateAPI()\n );\n }\n static status = new ContextInjectionStatus(\"application\");\n /**\n * TODO: use generics for context type\n * - application\n * - editor\n */\n static async inject(context) {\n const environment = await EnvironmentContext.getInstance();\n if (environment.getEnvironment() !== PlatformEnvironment.Frame) {\n throw createEditorPlatformApplicationContextError(\n EditorPlatformApplicationContextErrorCode.IncorrectEnvironment,\n \"Application context can be injected only in frame environment\"\n );\n }\n if (globalThis[APPLICATION_CONTEXT_KEY]) {\n throw createEditorPlatformApplicationContextError(\n EditorPlatformApplicationContextErrorCode.IncorrectEnvironment,\n \"Application context already exists and should not be overridden\"\n );\n }\n globalThis[APPLICATION_CONTEXT_KEY] = new ApplicationContext(\n context,\n await EnvironmentContext.getInstance()\n );\n this.status.resolveInjected();\n }\n static async getInstance() {\n const environment = await EnvironmentContext.getInstance();\n if (environment.getEnvironment() === PlatformEnvironment.Frame) {\n await this.status.waitInjected();\n return globalThis[APPLICATION_CONTEXT_KEY];\n } else {\n return __APPLICATION_CONTEXT_KEY;\n }\n }\n events;\n getAppDefinitionId() {\n return this.applicationContext.appDefinitionId;\n }\n getBindings() {\n return this.applicationContext;\n }\n getEvents() {\n return this.events;\n }\n getPrivateAPI() {\n return this.environment.getPrivateAPI();\n }\n getPrivateApplicationAPI() {\n const appDefinitionId = this.getAppDefinitionId();\n if (!appDefinitionId) {\n throw createEditorPlatformApplicationContextError(\n EditorPlatformApplicationContextErrorCode.IncorrectEnvironment,\n \"appDefinitionId is not available\"\n );\n }\n return this.environment.getApplicationAPIs()[appDefinitionId];\n }\n}\n\nexport { APPLICATION_CONTEXT_KEY, ApplicationBoundEvents, ApplicationContext, ENVIRONMENT_CONTEXT_KEY, EnvironmentContext, PlatformEnvironment };\n//# sourceMappingURL=index.js.map\n","import { IPrivateAPIFixMe } from '../../types';\n\nimport {\n IPlatformAppEvent,\n IPlatformPrivateEvent,\n PlatformAppEventEmitter,\n} from '@wix/public-editor-platform-events';\n\nimport { WorkerEventsBridge } from '../../Events';\nimport {\n AbstractEnvironmentAPI,\n PlatformConsumerEnvironmentAPIType,\n} from '../AbstractEnvironmentAPI';\nimport {\n ApplicationContext,\n EnvironmentContext,\n PlatformEnvironment,\n} from '@wix/editor-application-context';\n\nconst DESIGN_SYSTEM_STYLES_MAP = {\n classic:\n 'https://www.unpkg.com/@wix/design-system/dist/statics/tokens-default.global.css',\n studio:\n 'https://www.unpkg.com/@wix/design-system/dist/statics/tokens-studio.global.css',\n};\n\nexport class PlatformFrameAPI extends AbstractEnvironmentAPI<PlatformConsumerEnvironmentAPIType.Frame> {\n public type: PlatformConsumerEnvironmentAPIType.Frame =\n PlatformConsumerEnvironmentAPIType.Frame;\n\n #events = new PlatformAppEventEmitter();\n #eventsBridge = new WorkerEventsBridge(this.#events);\n #privateAPI: IPrivateAPIFixMe;\n #applicationPrivateAPI: any;\n\n constructor() {\n super(PlatformConsumerEnvironmentAPIType.Frame);\n }\n\n create() {\n if (typeof globalThis?.document?.head?.prepend === 'function') {\n const params = new URL(globalThis.location.href).searchParams;\n\n // TODO: check all possible editorType values\n const host =\n params.get('editorType') === 'CLASSIC' ? 'classic' : 'studio';\n\n const url = DESIGN_SYSTEM_STYLES_MAP[host];\n\n const isAlreadyLoaded =\n url &&\n !!document.querySelectorAll(`link[type=\"text/css\"][href=\"${url}\"]`)\n ?.length;\n\n if (url && !isAlreadyLoaded) {\n const link: HTMLLinkElement = document.createElement('link');\n\n link.setAttribute('rel', 'stylesheet');\n link.setAttribute('type', 'text/css');\n link.setAttribute('href', url);\n\n globalThis.document.head.prepend(link);\n }\n }\n }\n\n async initEnvironment(props: {\n appDefinitionId: string;\n privateAPI: IPrivateAPIFixMe;\n applicationPrivateAPI: any;\n }) {\n const { applicationPrivateAPI, privateAPI, appDefinitionId } = props;\n\n this.#applicationPrivateAPI = applicationPrivateAPI;\n this.#privateAPI = privateAPI;\n\n await EnvironmentContext.inject({\n environment: PlatformEnvironment.Frame,\n privateApi: privateAPI,\n events: this.#events,\n applicationAPIs: {\n [appDefinitionId]: this.#applicationPrivateAPI,\n },\n });\n\n await ApplicationContext.inject({\n appDefinitionId,\n appDefinitionName: '',\n });\n }\n\n notify(event: IPlatformPrivateEvent) {\n this.#eventsBridge.notify(event);\n }\n\n subscribe(cb: (event: IPlatformAppEvent) => void) {\n this.#eventsBridge.subscribe(cb);\n }\n}\n"],"names":["PlatformLifecycleEvent","PlatformAppEvent","PlatformPrivateEvent","PlatformConsumerEnvironmentAPIType","BaseError","createErrorBuilder","PlatformAppEventEmitter"],"mappings":"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"}
|