@weaverse/core 1.0.18 → 1.0.19
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/index.d.ts +127 -125
- package/dist/index.js +14 -36
- package/dist/index.mjs +13 -36
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as Stitches from '@stitches/core';
|
|
2
|
-
import {
|
|
2
|
+
import { RefObject, ForwardRefExoticComponent } from 'react';
|
|
3
3
|
import Stitches$1 from '@stitches/core/types/stitches';
|
|
4
4
|
|
|
5
5
|
declare let stitchesUtils: {
|
|
@@ -40,6 +40,127 @@ declare let stitchesUtils: {
|
|
|
40
40
|
};
|
|
41
41
|
};
|
|
42
42
|
|
|
43
|
+
/**
|
|
44
|
+
* WeaverseItemStore is a store for Weaverse item, it can be used to subscribe/update the item data
|
|
45
|
+
* @param itemData {ElementData} Weaverse item data
|
|
46
|
+
* @param weaverse {Weaverse} Weaverse instance
|
|
47
|
+
* @example
|
|
48
|
+
* useEffect(() => {
|
|
49
|
+
* let handleUpdate = (update: any) => {
|
|
50
|
+
* setData({...update})
|
|
51
|
+
* }
|
|
52
|
+
* itemInstance.subscribe(handleUpdate)
|
|
53
|
+
* return () => {
|
|
54
|
+
* itemInstance.unsubscribe(handleUpdate)
|
|
55
|
+
* }
|
|
56
|
+
* }, [])
|
|
57
|
+
*/
|
|
58
|
+
declare class WeaverseItemStore {
|
|
59
|
+
listeners: Set<any>;
|
|
60
|
+
ref: RefObject<HTMLElement>;
|
|
61
|
+
weaverse: Weaverse;
|
|
62
|
+
stitchesClass: string;
|
|
63
|
+
_data: ElementData;
|
|
64
|
+
_flags: ElementFlags;
|
|
65
|
+
constructor(itemData: ElementData, weaverse: Weaverse);
|
|
66
|
+
get _id(): string;
|
|
67
|
+
get _element(): HTMLElement | null;
|
|
68
|
+
get Element(): WeaverseElement | undefined;
|
|
69
|
+
set data(data: Omit<ElementData, "id" | "type">);
|
|
70
|
+
get data(): ElementData;
|
|
71
|
+
setData: (data: Omit<ElementData, "id" | "type">) => ElementData;
|
|
72
|
+
subscribe: (fn: any) => void;
|
|
73
|
+
unsubscribe: (fn: any) => void;
|
|
74
|
+
triggerUpdate: () => void;
|
|
75
|
+
}
|
|
76
|
+
declare class Weaverse {
|
|
77
|
+
/**
|
|
78
|
+
* The `weaverse-content-root` element of Weaverse SDK
|
|
79
|
+
*/
|
|
80
|
+
contentRootElement: HTMLElement | undefined;
|
|
81
|
+
/**
|
|
82
|
+
* For storing, registering element React component from Weaverse or created by user/developer
|
|
83
|
+
*/
|
|
84
|
+
elementInstances: Map<string, WeaverseElement>;
|
|
85
|
+
/**
|
|
86
|
+
* list of element/items store to provide data, handle state update, state sharing, etc.
|
|
87
|
+
*/
|
|
88
|
+
itemInstances: Map<string | number, WeaverseItemStore>;
|
|
89
|
+
/**
|
|
90
|
+
* Weaverse base URL that can provide by user/developer. for local development, use localhost:3000
|
|
91
|
+
* @type {string}
|
|
92
|
+
*/
|
|
93
|
+
weaverseHost: string;
|
|
94
|
+
/**
|
|
95
|
+
* Weaverse project key to access project data via API
|
|
96
|
+
* @type {string}
|
|
97
|
+
*/
|
|
98
|
+
projectId: string;
|
|
99
|
+
/**
|
|
100
|
+
* Weaverse project data, by default, user can provide project data via React Component:
|
|
101
|
+
* <WeaverseRoot data={data} /> it will be used to server-side rendering
|
|
102
|
+
*/
|
|
103
|
+
data: WeaverseProjectDataType;
|
|
104
|
+
/**
|
|
105
|
+
* Storing subscribe callback function for any component that want to listen to the change of WeaverseRoot
|
|
106
|
+
* @type {Map<string, (data: any) => void>}
|
|
107
|
+
*/
|
|
108
|
+
listeners: Set<any>;
|
|
109
|
+
/**
|
|
110
|
+
* Check whether the sdk is in editor or not.
|
|
111
|
+
* If isDesignMode is true, it means the sdk is isDesignMode mode, render the editor UI,
|
|
112
|
+
* else render the preview UI, plain HTML + CSS + React hydrate
|
|
113
|
+
* @type {boolean}
|
|
114
|
+
*/
|
|
115
|
+
isDesignMode: boolean;
|
|
116
|
+
/**
|
|
117
|
+
* Check the platform, shopify-section or react-ssr(hydrogen)
|
|
118
|
+
*/
|
|
119
|
+
platformType: PlatformTypeEnum;
|
|
120
|
+
/**
|
|
121
|
+
* Check whether the sdk is in preview mode or not
|
|
122
|
+
* @type {boolean}
|
|
123
|
+
*/
|
|
124
|
+
isPreviewMode: boolean;
|
|
125
|
+
/**
|
|
126
|
+
* Use in element to optionally render special HTML for hydration
|
|
127
|
+
* @type {boolean}
|
|
128
|
+
*/
|
|
129
|
+
ssrMode: boolean;
|
|
130
|
+
/**
|
|
131
|
+
* Stitches instance for handling CSS stylesheet, media, theme for Weaverse project
|
|
132
|
+
*/
|
|
133
|
+
stitchesInstance: Stitches$1 | any;
|
|
134
|
+
studioBridge?: any;
|
|
135
|
+
elementSchemas?: ElementSchema[];
|
|
136
|
+
static WeaverseItemStore: typeof WeaverseItemStore;
|
|
137
|
+
mediaBreakPoints: BreakPoints;
|
|
138
|
+
/**
|
|
139
|
+
* constructor
|
|
140
|
+
* @param weaverseHost {string} Weaverse base URL that can provide by user/developer. for local development, use localhost:3000
|
|
141
|
+
* @param projectId {string} Weaverse project key to access project data via API
|
|
142
|
+
* @param data {WeaverseProjectDataType} Weaverse project data, by default, user can provide project data via React Component.
|
|
143
|
+
* @param mediaBreakPoints {object} Pass down custom media query breakpoints or just use the default.
|
|
144
|
+
* @param isDesignMode {boolean} check whether the sdk is isDesignMode or not
|
|
145
|
+
* @param ssrMode {boolean} Use in element to optionally render special HTML for hydration
|
|
146
|
+
* @param elementSchemas {Array<ElementSchema>} List of element schemas
|
|
147
|
+
* @param platformType {PlatformTypeEnum} Check the platform, shopify-section or react-ssr(hydrogen)
|
|
148
|
+
*/
|
|
149
|
+
constructor({ weaverseHost, projectId, data, mediaBreakPoints, isDesignMode, ssrMode, elementSchemas, platformType, }?: WeaverseType);
|
|
150
|
+
init({ weaverseHost, elementSchemas, platformType, projectId, data, mediaBreakPoints, isDesignMode, ssrMode, }?: WeaverseType): void;
|
|
151
|
+
/**
|
|
152
|
+
* Register the custom React Component to Weaverse, store it into Weaverse.elementInstances
|
|
153
|
+
* @param element {WeaverseElement} custom React Component
|
|
154
|
+
*/
|
|
155
|
+
registerElement(element: WeaverseElement): void;
|
|
156
|
+
initStitches: () => void;
|
|
157
|
+
subscribe(fn: any): void;
|
|
158
|
+
unsubscribe(fn: any): void;
|
|
159
|
+
triggerUpdate(): void;
|
|
160
|
+
setProjectData(data: WeaverseProjectDataType): void;
|
|
161
|
+
initProjectItemData(): void;
|
|
162
|
+
}
|
|
163
|
+
|
|
43
164
|
interface WeaverseProjectDataType {
|
|
44
165
|
items: ElementData[];
|
|
45
166
|
rootId: string;
|
|
@@ -53,7 +174,7 @@ interface BreakPoints {
|
|
|
53
174
|
mobile: string;
|
|
54
175
|
desktop: string;
|
|
55
176
|
}
|
|
56
|
-
type PlatformTypeEnum = "shopify-section" | "
|
|
177
|
+
type PlatformTypeEnum = "shopify-section" | "shopify-hydrogen" | "nextjs";
|
|
57
178
|
interface WeaverseType {
|
|
58
179
|
mediaBreakPoints?: BreakPoints;
|
|
59
180
|
weaverseHost?: string;
|
|
@@ -203,132 +324,13 @@ interface DataSortInputConfigs {
|
|
|
203
324
|
type InputType = "color" | "datepicker" | "image" | "range" | "select" | "children-sort" | "data-sort" | "switch" | "text" | "textarea" | "toggle-group" | "position" | "product" | "product-list" | "product-swatches" | "text-editor" | "custom.html" | "instagram" | "collection-list" | "collection" | "article-list" | "map-autocomplete";
|
|
204
325
|
declare global {
|
|
205
326
|
interface Window {
|
|
206
|
-
|
|
327
|
+
createWeaverseStudioBridge: (weaverse: Weaverse) => any;
|
|
328
|
+
weaverseStudioInitialized: boolean;
|
|
207
329
|
Blinkloader: any;
|
|
208
330
|
}
|
|
209
331
|
}
|
|
210
332
|
|
|
211
|
-
|
|
212
|
-
* WeaverseItemStore is a store for Weaverse item, it can be used to subscribe/update the item data
|
|
213
|
-
* @param itemData {ElementData} Weaverse item data
|
|
214
|
-
* @param weaverse {Weaverse} Weaverse instance
|
|
215
|
-
* @example
|
|
216
|
-
* useEffect(() => {
|
|
217
|
-
* let handleUpdate = (update: any) => {
|
|
218
|
-
* setData({...update})
|
|
219
|
-
* }
|
|
220
|
-
* itemInstance.subscribe(handleUpdate)
|
|
221
|
-
* return () => {
|
|
222
|
-
* itemInstance.unsubscribe(handleUpdate)
|
|
223
|
-
* }
|
|
224
|
-
* }, [])
|
|
225
|
-
*/
|
|
226
|
-
declare class WeaverseItemStore {
|
|
227
|
-
listeners: Set<any>;
|
|
228
|
-
ref: RefObject<HTMLElement>;
|
|
229
|
-
weaverse: Weaverse;
|
|
230
|
-
stitchesClass: string;
|
|
231
|
-
_data: ElementData;
|
|
232
|
-
_flags: ElementFlags;
|
|
233
|
-
constructor(itemData: ElementData, weaverse: Weaverse);
|
|
234
|
-
get _id(): string;
|
|
235
|
-
get _element(): HTMLElement | null;
|
|
236
|
-
get Element(): WeaverseElement | undefined;
|
|
237
|
-
set data(data: Omit<ElementData, "id" | "type">);
|
|
238
|
-
get data(): ElementData;
|
|
239
|
-
setData: (data: Omit<ElementData, "id" | "type">) => ElementData;
|
|
240
|
-
subscribe: (fn: any) => void;
|
|
241
|
-
unsubscribe: (fn: any) => void;
|
|
242
|
-
triggerUpdate: () => void;
|
|
243
|
-
}
|
|
244
|
-
declare class Weaverse {
|
|
245
|
-
/**
|
|
246
|
-
* The `weaverse-content-root` element of Weaverse SDK
|
|
247
|
-
*/
|
|
248
|
-
contentRootElement: HTMLElement | undefined;
|
|
249
|
-
/**
|
|
250
|
-
* For storing, registering element React component from Weaverse or created by user/developer
|
|
251
|
-
*/
|
|
252
|
-
elementInstances: Map<string, WeaverseElement>;
|
|
253
|
-
/**
|
|
254
|
-
* list of element/items store to provide data, handle state update, state sharing, etc.
|
|
255
|
-
*/
|
|
256
|
-
itemInstances: Map<string | number, WeaverseItemStore>;
|
|
257
|
-
/**
|
|
258
|
-
* Weaverse base URL that can provide by user/developer. for local development, use localhost:3000
|
|
259
|
-
* @type {string}
|
|
260
|
-
*/
|
|
261
|
-
weaverseHost: string;
|
|
262
|
-
/**
|
|
263
|
-
* Weaverse project key to access project data via API
|
|
264
|
-
* @type {string}
|
|
265
|
-
*/
|
|
266
|
-
projectId: string;
|
|
267
|
-
/**
|
|
268
|
-
* Weaverse project data, by default, user can provide project data via React Component:
|
|
269
|
-
* <WeaverseRoot data={data} /> it will be used to server-side rendering
|
|
270
|
-
*/
|
|
271
|
-
data: WeaverseProjectDataType;
|
|
272
|
-
/**
|
|
273
|
-
* Storing subscribe callback function for any component that want to listen to the change of WeaverseRoot
|
|
274
|
-
* @type {Map<string, (data: any) => void>}
|
|
275
|
-
*/
|
|
276
|
-
listeners: Set<any>;
|
|
277
|
-
/**
|
|
278
|
-
* Check whether the sdk is in editor or not.
|
|
279
|
-
* If isDesignMode is true, it means the sdk is isDesignMode mode, render the editor UI,
|
|
280
|
-
* else render the preview UI, plain HTML + CSS + React hydrate
|
|
281
|
-
* @type {boolean}
|
|
282
|
-
*/
|
|
283
|
-
isDesignMode: boolean;
|
|
284
|
-
/**
|
|
285
|
-
* Check the platform, shopify-section or react-ssr(hydrogen)
|
|
286
|
-
*/
|
|
287
|
-
platformType: PlatformTypeEnum;
|
|
288
|
-
/**
|
|
289
|
-
* Check whether the sdk is in preview mode or not
|
|
290
|
-
* @type {boolean}
|
|
291
|
-
*/
|
|
292
|
-
isPreviewMode: boolean;
|
|
293
|
-
/**
|
|
294
|
-
* Use in element to optionally render special HTML for hydration
|
|
295
|
-
* @type {boolean}
|
|
296
|
-
*/
|
|
297
|
-
ssrMode: boolean;
|
|
298
|
-
/**
|
|
299
|
-
* Stitches instance for handling CSS stylesheet, media, theme for Weaverse project
|
|
300
|
-
*/
|
|
301
|
-
stitchesInstance: Stitches$1 | any;
|
|
302
|
-
studioBridge?: any;
|
|
303
|
-
elementSchemas?: ElementSchema[];
|
|
304
|
-
static WeaverseItemStore: typeof WeaverseItemStore;
|
|
305
|
-
mediaBreakPoints: BreakPoints;
|
|
306
|
-
/**
|
|
307
|
-
* constructor
|
|
308
|
-
* @param weaverseHost {string} Weaverse base URL that can provide by user/developer. for local development, use localhost:3000
|
|
309
|
-
* @param projectId {string} Weaverse project key to access project data via API
|
|
310
|
-
* @param data {WeaverseProjectDataType} Weaverse project data, by default, user can provide project data via React Component.
|
|
311
|
-
* @param mediaBreakPoints {object} Pass down custom media query breakpoints or just use the default.
|
|
312
|
-
* @param isDesignMode {boolean} check whether the sdk is isDesignMode or not
|
|
313
|
-
* @param ssrMode {boolean} Use in element to optionally render special HTML for hydration
|
|
314
|
-
* @param elementSchemas {Array<ElementSchema>} List of element schemas
|
|
315
|
-
* @param platformType {PlatformTypeEnum} Check the platform, shopify-section or react-ssr(hydrogen)
|
|
316
|
-
*/
|
|
317
|
-
constructor({ weaverseHost, projectId, data, mediaBreakPoints, isDesignMode, ssrMode, elementSchemas, platformType, }?: WeaverseType);
|
|
318
|
-
init({ weaverseHost, elementSchemas, platformType, projectId, data, mediaBreakPoints, isDesignMode, ssrMode, }?: WeaverseType): void;
|
|
319
|
-
loadStudio(version?: string): void;
|
|
320
|
-
/**
|
|
321
|
-
* Register the custom React Component to Weaverse, store it into Weaverse.elementInstances
|
|
322
|
-
* @param element {WeaverseElement} custom React Component
|
|
323
|
-
*/
|
|
324
|
-
registerElement(element: WeaverseElement): void;
|
|
325
|
-
initStitches: () => void;
|
|
326
|
-
subscribe(fn: any): void;
|
|
327
|
-
unsubscribe(fn: any): void;
|
|
328
|
-
triggerUpdate(): void;
|
|
329
|
-
setProjectData(data: WeaverseProjectDataType): void;
|
|
330
|
-
initProjectItemData(): void;
|
|
331
|
-
}
|
|
333
|
+
declare let loadScript: (src: string) => Promise<unknown>;
|
|
332
334
|
|
|
333
335
|
declare let isReactNative: boolean;
|
|
334
336
|
declare let isBrowser: boolean;
|
|
@@ -342,4 +344,4 @@ declare function merge(target: Record<string, any>, source: Record<string, any>)
|
|
|
342
344
|
[x: string]: any;
|
|
343
345
|
};
|
|
344
346
|
|
|
345
|
-
export { AdditionalInputConfigs, AdvancedGroup, AdvancedGroupType, BasicGroup, BasicInput, BreakPoints, CatalogGroup, ChildElement, ChildElementCSS, ChildElementSelector, ChildrenSortInputConfigs, DataSortInputConfigs, ElementCSS, ElementCatalog, ElementData, ElementDataInCatalog, ElementFlags, ElementInspector, ElementSchema, FlagType, GridSize, InputType, ParentType, PlatformTypeEnum, RangeInputConfigs, SelectInputConfigs, SortableItemAction, ToggleGroupConfigs, ToolbarAction, Weaverse, WeaverseCSSProperties, WeaverseElement, WeaverseItemStore, WeaverseProjectDataType, WeaverseType, isBrowser, isIframe, isReactNative, merge };
|
|
347
|
+
export { AdditionalInputConfigs, AdvancedGroup, AdvancedGroupType, BasicGroup, BasicInput, BreakPoints, CatalogGroup, ChildElement, ChildElementCSS, ChildElementSelector, ChildrenSortInputConfigs, DataSortInputConfigs, ElementCSS, ElementCatalog, ElementData, ElementDataInCatalog, ElementFlags, ElementInspector, ElementSchema, FlagType, GridSize, InputType, ParentType, PlatformTypeEnum, RangeInputConfigs, SelectInputConfigs, SortableItemAction, ToggleGroupConfigs, ToolbarAction, Weaverse, WeaverseCSSProperties, WeaverseElement, WeaverseItemStore, WeaverseProjectDataType, WeaverseType, isBrowser, isIframe, isReactNative, loadScript, merge };
|
package/dist/index.js
CHANGED
|
@@ -35,6 +35,7 @@ __export(src_exports, {
|
|
|
35
35
|
isBrowser: () => isBrowser,
|
|
36
36
|
isIframe: () => isIframe,
|
|
37
37
|
isReactNative: () => isReactNative,
|
|
38
|
+
loadScript: () => loadScript,
|
|
38
39
|
merge: () => merge
|
|
39
40
|
});
|
|
40
41
|
module.exports = __toCommonJS(src_exports);
|
|
@@ -42,6 +43,18 @@ module.exports = __toCommonJS(src_exports);
|
|
|
42
43
|
// src/core.ts
|
|
43
44
|
var stitches = __toESM(require("@stitches/core"));
|
|
44
45
|
|
|
46
|
+
// src/utils/load-script.ts
|
|
47
|
+
var loadScript = (src) => {
|
|
48
|
+
return new Promise((resolve, reject) => {
|
|
49
|
+
let script = document.createElement("script");
|
|
50
|
+
script.src = src;
|
|
51
|
+
script.onload = resolve;
|
|
52
|
+
script.onerror = reject;
|
|
53
|
+
script.defer = true;
|
|
54
|
+
document.body.appendChild(script);
|
|
55
|
+
});
|
|
56
|
+
};
|
|
57
|
+
|
|
45
58
|
// src/utils/index.ts
|
|
46
59
|
var isReactNative = typeof navigator === "object" && navigator.product === "ReactNative";
|
|
47
60
|
var isBrowser = typeof window !== "undefined" && !isReactNative;
|
|
@@ -263,42 +276,6 @@ var Weaverse = class {
|
|
|
263
276
|
this.initProjectItemData();
|
|
264
277
|
this.initStitches();
|
|
265
278
|
}
|
|
266
|
-
// initialized = false
|
|
267
|
-
// initializeData = (data: any) => {
|
|
268
|
-
// if (!this.initialized) {
|
|
269
|
-
// let { data: d, isDesignMode, id, projectId, weaverseHost } = data
|
|
270
|
-
// this.projectId = projectId || this.projectId
|
|
271
|
-
// this.weaverseHost = weaverseHost || this.weaverseHost
|
|
272
|
-
// this.data = { ...d, pageId: id }
|
|
273
|
-
// this.isDesignMode = isDesignMode
|
|
274
|
-
// this.initProjectItemData()
|
|
275
|
-
// if (this.isDesignMode) {
|
|
276
|
-
// this.triggerUpdate()
|
|
277
|
-
// this.loadStudio()
|
|
278
|
-
// }
|
|
279
|
-
// }
|
|
280
|
-
// this.initialized = true
|
|
281
|
-
// }
|
|
282
|
-
loadStudio(version) {
|
|
283
|
-
if (isIframe && this.isDesignMode && !this.studioBridge) {
|
|
284
|
-
const initStudio = () => {
|
|
285
|
-
this.studioBridge = new window.WeaverseStudioBridge(this);
|
|
286
|
-
this.triggerUpdate();
|
|
287
|
-
clearInterval(i);
|
|
288
|
-
};
|
|
289
|
-
let i = setInterval(() => {
|
|
290
|
-
if (!window.WeaverseStudioBridge) {
|
|
291
|
-
let studioBridgeScript = document.createElement("script");
|
|
292
|
-
studioBridgeScript.src = `${this.weaverseHost}/assets/studio/studio-bridge.js?v=${version}`;
|
|
293
|
-
studioBridgeScript.type = "module";
|
|
294
|
-
studioBridgeScript.onload = initStudio;
|
|
295
|
-
document.body.appendChild(studioBridgeScript);
|
|
296
|
-
} else {
|
|
297
|
-
initStudio();
|
|
298
|
-
}
|
|
299
|
-
}, 2e3);
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
279
|
/**
|
|
303
280
|
* Register the custom React Component to Weaverse, store it into Weaverse.elementInstances
|
|
304
281
|
* @param element {WeaverseElement} custom React Component
|
|
@@ -346,5 +323,6 @@ Weaverse.WeaverseItemStore = WeaverseItemStore;
|
|
|
346
323
|
isBrowser,
|
|
347
324
|
isIframe,
|
|
348
325
|
isReactNative,
|
|
326
|
+
loadScript,
|
|
349
327
|
merge
|
|
350
328
|
});
|
package/dist/index.mjs
CHANGED
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
// src/core.ts
|
|
2
2
|
import * as stitches from "@stitches/core";
|
|
3
3
|
|
|
4
|
+
// src/utils/load-script.ts
|
|
5
|
+
var loadScript = (src) => {
|
|
6
|
+
return new Promise((resolve, reject) => {
|
|
7
|
+
let script = document.createElement("script");
|
|
8
|
+
script.src = src;
|
|
9
|
+
script.onload = resolve;
|
|
10
|
+
script.onerror = reject;
|
|
11
|
+
script.defer = true;
|
|
12
|
+
document.body.appendChild(script);
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
|
|
4
16
|
// src/utils/index.ts
|
|
5
17
|
var isReactNative = typeof navigator === "object" && navigator.product === "ReactNative";
|
|
6
18
|
var isBrowser = typeof window !== "undefined" && !isReactNative;
|
|
@@ -222,42 +234,6 @@ var Weaverse = class {
|
|
|
222
234
|
this.initProjectItemData();
|
|
223
235
|
this.initStitches();
|
|
224
236
|
}
|
|
225
|
-
// initialized = false
|
|
226
|
-
// initializeData = (data: any) => {
|
|
227
|
-
// if (!this.initialized) {
|
|
228
|
-
// let { data: d, isDesignMode, id, projectId, weaverseHost } = data
|
|
229
|
-
// this.projectId = projectId || this.projectId
|
|
230
|
-
// this.weaverseHost = weaverseHost || this.weaverseHost
|
|
231
|
-
// this.data = { ...d, pageId: id }
|
|
232
|
-
// this.isDesignMode = isDesignMode
|
|
233
|
-
// this.initProjectItemData()
|
|
234
|
-
// if (this.isDesignMode) {
|
|
235
|
-
// this.triggerUpdate()
|
|
236
|
-
// this.loadStudio()
|
|
237
|
-
// }
|
|
238
|
-
// }
|
|
239
|
-
// this.initialized = true
|
|
240
|
-
// }
|
|
241
|
-
loadStudio(version) {
|
|
242
|
-
if (isIframe && this.isDesignMode && !this.studioBridge) {
|
|
243
|
-
const initStudio = () => {
|
|
244
|
-
this.studioBridge = new window.WeaverseStudioBridge(this);
|
|
245
|
-
this.triggerUpdate();
|
|
246
|
-
clearInterval(i);
|
|
247
|
-
};
|
|
248
|
-
let i = setInterval(() => {
|
|
249
|
-
if (!window.WeaverseStudioBridge) {
|
|
250
|
-
let studioBridgeScript = document.createElement("script");
|
|
251
|
-
studioBridgeScript.src = `${this.weaverseHost}/assets/studio/studio-bridge.js?v=${version}`;
|
|
252
|
-
studioBridgeScript.type = "module";
|
|
253
|
-
studioBridgeScript.onload = initStudio;
|
|
254
|
-
document.body.appendChild(studioBridgeScript);
|
|
255
|
-
} else {
|
|
256
|
-
initStudio();
|
|
257
|
-
}
|
|
258
|
-
}, 2e3);
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
237
|
/**
|
|
262
238
|
* Register the custom React Component to Weaverse, store it into Weaverse.elementInstances
|
|
263
239
|
* @param element {WeaverseElement} custom React Component
|
|
@@ -304,5 +280,6 @@ export {
|
|
|
304
280
|
isBrowser,
|
|
305
281
|
isIframe,
|
|
306
282
|
isReactNative,
|
|
283
|
+
loadScript,
|
|
307
284
|
merge
|
|
308
285
|
};
|