@weaverse/core 0.3.2 → 0.3.3
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 +29 -31
- package/dist/index.js +66 -75
- package/dist/index.mjs +66 -75
- package/package.json +4 -4
package/dist/index.d.ts
CHANGED
|
@@ -20,6 +20,34 @@ declare type WeaverseType = {
|
|
|
20
20
|
projectKey?: string;
|
|
21
21
|
projectData?: ProjectDataType;
|
|
22
22
|
};
|
|
23
|
+
/**
|
|
24
|
+
* WeaverseItemStore is a store for Weaverse item, it can be used to subscribe/update the item data
|
|
25
|
+
* @param itemData {ProjectDataItemType} Weaverse item data
|
|
26
|
+
* @param weaverse {Weaverse} Weaverse instance
|
|
27
|
+
* Usage:
|
|
28
|
+
* ```jsx
|
|
29
|
+
* useEffect(() => {
|
|
30
|
+
* let handleUpdate = (update: any) => {
|
|
31
|
+
* setData({...update})
|
|
32
|
+
* }
|
|
33
|
+
* itemInstance.subscribe(handleUpdate)
|
|
34
|
+
* return () => {
|
|
35
|
+
* itemInstance.unsubscribe(handleUpdate)
|
|
36
|
+
* }
|
|
37
|
+
* }, [])
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
declare class WeaverseItemStore {
|
|
41
|
+
data: any;
|
|
42
|
+
listeners: Set<any>;
|
|
43
|
+
Component: any;
|
|
44
|
+
ref: any;
|
|
45
|
+
constructor(itemData: any, weaverse: Weaverse);
|
|
46
|
+
setData: (data: any) => void;
|
|
47
|
+
subscribe: (fn: any) => void;
|
|
48
|
+
unsubscribe: (fn: any) => void;
|
|
49
|
+
triggerUpdate: () => void;
|
|
50
|
+
}
|
|
23
51
|
declare class Weaverse {
|
|
24
52
|
/**
|
|
25
53
|
* For storing, registering element React component from Weaverse or created by user/developer
|
|
@@ -63,6 +91,7 @@ declare class Weaverse {
|
|
|
63
91
|
*/
|
|
64
92
|
stitchesInstance: Stitches | any;
|
|
65
93
|
studioBridge?: any;
|
|
94
|
+
static WeaverseItemStore: typeof WeaverseItemStore;
|
|
66
95
|
/**
|
|
67
96
|
* constructor
|
|
68
97
|
* @param appUrl {string} Weaverse base URL that can provide by user/developer. for local development, use localhost:3000
|
|
@@ -77,7 +106,6 @@ declare class Weaverse {
|
|
|
77
106
|
*/
|
|
78
107
|
registerElement(name: string, element: any): void;
|
|
79
108
|
init(): void;
|
|
80
|
-
listen(callback: any): void;
|
|
81
109
|
loadStudio(): void;
|
|
82
110
|
subscribe(fn: any): void;
|
|
83
111
|
unsubscribe(fn: any): void;
|
|
@@ -91,37 +119,7 @@ declare class Weaverse {
|
|
|
91
119
|
* fetch and update the project data, then trigger update to re-render the WeaverseRoot
|
|
92
120
|
*/
|
|
93
121
|
updateProjectData(): void;
|
|
94
|
-
triggerEditorUpdate(type?: string): void;
|
|
95
122
|
initProjectItemData(): void;
|
|
96
|
-
addItem(item: any): WeaverseItemStore;
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* WeaverseItemStore is a store for Weaverse item, it can be used to subscribe/update the item data
|
|
100
|
-
* @param itemData {ProjectDataItemType} Weaverse item data
|
|
101
|
-
* @param weaverse {Weaverse} Weaverse instance
|
|
102
|
-
* Usage:
|
|
103
|
-
* ```jsx
|
|
104
|
-
* useEffect(() => {
|
|
105
|
-
* let handleUpdate = (update: any) => {
|
|
106
|
-
* setData({...update})
|
|
107
|
-
* }
|
|
108
|
-
* itemInstance.subscribe(handleUpdate)
|
|
109
|
-
* return () => {
|
|
110
|
-
* itemInstance.unsubscribe(handleUpdate)
|
|
111
|
-
* }
|
|
112
|
-
* }, [])
|
|
113
|
-
* ```
|
|
114
|
-
*/
|
|
115
|
-
declare class WeaverseItemStore {
|
|
116
|
-
data: any;
|
|
117
|
-
listeners: Set<any>;
|
|
118
|
-
Component: any;
|
|
119
|
-
ref: any;
|
|
120
|
-
constructor(itemData: any, weaverse: Weaverse);
|
|
121
|
-
setData: (data: any) => void;
|
|
122
|
-
subscribe: (fn: any) => void;
|
|
123
|
-
unsubscribe: (fn: any) => void;
|
|
124
|
-
triggerUpdate: () => void;
|
|
125
123
|
}
|
|
126
124
|
|
|
127
125
|
declare const isReactNative: boolean;
|
package/dist/index.js
CHANGED
|
@@ -43,6 +43,37 @@ var isIframe = isBrowser && window.top !== window.self;
|
|
|
43
43
|
|
|
44
44
|
// src/core.ts
|
|
45
45
|
var stitches = __toESM(require("@stitches/core"));
|
|
46
|
+
var WeaverseItemStore = class {
|
|
47
|
+
constructor(itemData = {}, weaverse) {
|
|
48
|
+
this.data = {};
|
|
49
|
+
this.listeners = /* @__PURE__ */ new Set();
|
|
50
|
+
this.ref = {
|
|
51
|
+
current: null
|
|
52
|
+
};
|
|
53
|
+
this.setData = (data) => {
|
|
54
|
+
this.data = Object.assign(this.data, data);
|
|
55
|
+
this.triggerUpdate();
|
|
56
|
+
};
|
|
57
|
+
this.subscribe = (fn) => {
|
|
58
|
+
this.listeners.add(fn);
|
|
59
|
+
};
|
|
60
|
+
this.unsubscribe = (fn) => {
|
|
61
|
+
this.listeners.delete(fn);
|
|
62
|
+
};
|
|
63
|
+
this.triggerUpdate = () => {
|
|
64
|
+
this.listeners.forEach((fn) => {
|
|
65
|
+
return fn(this.data);
|
|
66
|
+
});
|
|
67
|
+
};
|
|
68
|
+
this.data = itemData;
|
|
69
|
+
let { type, id } = itemData;
|
|
70
|
+
if (type && id) {
|
|
71
|
+
this.Component = weaverse.elementInstances.get(type);
|
|
72
|
+
weaverse.itemInstances.set(id, this);
|
|
73
|
+
console.log("WeaverseItemStore created", this);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
};
|
|
46
77
|
var Weaverse = class {
|
|
47
78
|
constructor({ appUrl, projectKey, projectData } = {}) {
|
|
48
79
|
this.elementInstances = /* @__PURE__ */ new Map();
|
|
@@ -74,39 +105,32 @@ var Weaverse = class {
|
|
|
74
105
|
});
|
|
75
106
|
this.loadStudio();
|
|
76
107
|
}
|
|
77
|
-
listen(callback) {
|
|
78
|
-
if (window.addEventListener) {
|
|
79
|
-
window.addEventListener("message", callback, false);
|
|
80
|
-
} else {
|
|
81
|
-
window.attachEvent("onmessage", callback);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
108
|
loadStudio() {
|
|
109
|
+
console.log("loadStudio", { isIframe });
|
|
85
110
|
if (isIframe) {
|
|
86
111
|
console.log("Weaverse SDK is initializing...", isIframe);
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
}
|
|
112
|
+
window.addEventListener("message", (e) => {
|
|
113
|
+
var _a;
|
|
114
|
+
if (((_a = e.data) == null ? void 0 : _a.type) === "weaverse.preview.initializeEditor") {
|
|
115
|
+
let initStudio = () => {
|
|
116
|
+
let StudioBridge = window.WeaverseStudioBridge;
|
|
117
|
+
this.studioBridge = new StudioBridge(this);
|
|
118
|
+
this.studioBridge.subscribeMessageEvent();
|
|
119
|
+
this.triggerUpdate();
|
|
120
|
+
console.log("studio bridge initialized", this.studioBridge);
|
|
121
|
+
};
|
|
122
|
+
console.log("studio message", e.data);
|
|
123
|
+
this.isEditor = true;
|
|
124
|
+
if (!window.WeaverseStudioBridge) {
|
|
125
|
+
const studioBridgeScript = document.createElement("script");
|
|
126
|
+
studioBridgeScript.src = `${this.appUrl}/assets/studio/studio-bridge.js`;
|
|
127
|
+
studioBridgeScript.type = "module";
|
|
128
|
+
studioBridgeScript.onload = initStudio;
|
|
129
|
+
document.body.appendChild(studioBridgeScript);
|
|
130
|
+
} else {
|
|
131
|
+
initStudio();
|
|
108
132
|
}
|
|
109
|
-
}
|
|
133
|
+
}
|
|
110
134
|
});
|
|
111
135
|
}
|
|
112
136
|
}
|
|
@@ -118,7 +142,13 @@ var Weaverse = class {
|
|
|
118
142
|
}
|
|
119
143
|
triggerUpdate() {
|
|
120
144
|
this.listeners.forEach((fn) => fn());
|
|
121
|
-
this.
|
|
145
|
+
if (this.isEditor && this.studioBridge) {
|
|
146
|
+
this.studioBridge.sendMessageToEditor("weaverse.editor.updateProject", {
|
|
147
|
+
projectData: this.projectData,
|
|
148
|
+
projectKey: this.projectKey,
|
|
149
|
+
appUrl: this.appUrl
|
|
150
|
+
});
|
|
151
|
+
}
|
|
122
152
|
}
|
|
123
153
|
fetchProjectData(fetch = globalThis.fetch) {
|
|
124
154
|
console.log("fetching project data...");
|
|
@@ -137,59 +167,20 @@ var Weaverse = class {
|
|
|
137
167
|
});
|
|
138
168
|
}
|
|
139
169
|
}
|
|
140
|
-
triggerEditorUpdate(type = "weaverse.workspace.init") {
|
|
141
|
-
if (this.isEditor && this.studioBridge) {
|
|
142
|
-
this.studioBridge.sendMessageToEditor(type, {
|
|
143
|
-
projectData: this.projectData,
|
|
144
|
-
projectKey: this.projectKey,
|
|
145
|
-
appUrl: this.appUrl
|
|
146
|
-
});
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
170
|
initProjectItemData() {
|
|
150
171
|
let data = this.projectData;
|
|
172
|
+
console.log("init project data", data);
|
|
151
173
|
if (data.items) {
|
|
152
174
|
data.items.forEach((item) => {
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
}
|
|
158
|
-
addItem(item) {
|
|
159
|
-
let itemStore = new WeaverseItemStore(item, this);
|
|
160
|
-
this.itemInstances.set(item.id, itemStore);
|
|
161
|
-
return itemStore;
|
|
162
|
-
}
|
|
163
|
-
};
|
|
164
|
-
var WeaverseItemStore = class {
|
|
165
|
-
constructor(itemData = {}, weaverse) {
|
|
166
|
-
this.data = {};
|
|
167
|
-
this.listeners = /* @__PURE__ */ new Set();
|
|
168
|
-
this.ref = {
|
|
169
|
-
current: null
|
|
170
|
-
};
|
|
171
|
-
this.setData = (data) => {
|
|
172
|
-
this.data = Object.assign(this.data, data);
|
|
173
|
-
this.triggerUpdate();
|
|
174
|
-
};
|
|
175
|
-
this.subscribe = (fn) => {
|
|
176
|
-
this.listeners.add(fn);
|
|
177
|
-
};
|
|
178
|
-
this.unsubscribe = (fn) => {
|
|
179
|
-
this.listeners.delete(fn);
|
|
180
|
-
};
|
|
181
|
-
this.triggerUpdate = () => {
|
|
182
|
-
this.listeners.forEach((fn) => {
|
|
183
|
-
return fn(this.data);
|
|
175
|
+
if (!this.itemInstances.get(item.id)) {
|
|
176
|
+
console.log("init item instance", item);
|
|
177
|
+
new WeaverseItemStore(item, this);
|
|
178
|
+
}
|
|
184
179
|
});
|
|
185
|
-
};
|
|
186
|
-
this.data = itemData;
|
|
187
|
-
let { type, id } = itemData;
|
|
188
|
-
if (type && id) {
|
|
189
|
-
this.Component = weaverse.elementInstances.get(type);
|
|
190
180
|
}
|
|
191
181
|
}
|
|
192
182
|
};
|
|
183
|
+
Weaverse.WeaverseItemStore = WeaverseItemStore;
|
|
193
184
|
module.exports = __toCommonJS(src_exports);
|
|
194
185
|
// Annotate the CommonJS export names for ESM import in node:
|
|
195
186
|
0 && (module.exports = {
|
package/dist/index.mjs
CHANGED
|
@@ -5,6 +5,37 @@ var isIframe = isBrowser && window.top !== window.self;
|
|
|
5
5
|
|
|
6
6
|
// src/core.ts
|
|
7
7
|
import * as stitches from "@stitches/core";
|
|
8
|
+
var WeaverseItemStore = class {
|
|
9
|
+
constructor(itemData = {}, weaverse) {
|
|
10
|
+
this.data = {};
|
|
11
|
+
this.listeners = /* @__PURE__ */ new Set();
|
|
12
|
+
this.ref = {
|
|
13
|
+
current: null
|
|
14
|
+
};
|
|
15
|
+
this.setData = (data) => {
|
|
16
|
+
this.data = Object.assign(this.data, data);
|
|
17
|
+
this.triggerUpdate();
|
|
18
|
+
};
|
|
19
|
+
this.subscribe = (fn) => {
|
|
20
|
+
this.listeners.add(fn);
|
|
21
|
+
};
|
|
22
|
+
this.unsubscribe = (fn) => {
|
|
23
|
+
this.listeners.delete(fn);
|
|
24
|
+
};
|
|
25
|
+
this.triggerUpdate = () => {
|
|
26
|
+
this.listeners.forEach((fn) => {
|
|
27
|
+
return fn(this.data);
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
this.data = itemData;
|
|
31
|
+
let { type, id } = itemData;
|
|
32
|
+
if (type && id) {
|
|
33
|
+
this.Component = weaverse.elementInstances.get(type);
|
|
34
|
+
weaverse.itemInstances.set(id, this);
|
|
35
|
+
console.log("WeaverseItemStore created", this);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
};
|
|
8
39
|
var Weaverse = class {
|
|
9
40
|
constructor({ appUrl, projectKey, projectData } = {}) {
|
|
10
41
|
this.elementInstances = /* @__PURE__ */ new Map();
|
|
@@ -36,39 +67,32 @@ var Weaverse = class {
|
|
|
36
67
|
});
|
|
37
68
|
this.loadStudio();
|
|
38
69
|
}
|
|
39
|
-
listen(callback) {
|
|
40
|
-
if (window.addEventListener) {
|
|
41
|
-
window.addEventListener("message", callback, false);
|
|
42
|
-
} else {
|
|
43
|
-
window.attachEvent("onmessage", callback);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
70
|
loadStudio() {
|
|
71
|
+
console.log("loadStudio", { isIframe });
|
|
47
72
|
if (isIframe) {
|
|
48
73
|
console.log("Weaverse SDK is initializing...", isIframe);
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
}
|
|
74
|
+
window.addEventListener("message", (e) => {
|
|
75
|
+
var _a;
|
|
76
|
+
if (((_a = e.data) == null ? void 0 : _a.type) === "weaverse.preview.initializeEditor") {
|
|
77
|
+
let initStudio = () => {
|
|
78
|
+
let StudioBridge = window.WeaverseStudioBridge;
|
|
79
|
+
this.studioBridge = new StudioBridge(this);
|
|
80
|
+
this.studioBridge.subscribeMessageEvent();
|
|
81
|
+
this.triggerUpdate();
|
|
82
|
+
console.log("studio bridge initialized", this.studioBridge);
|
|
83
|
+
};
|
|
84
|
+
console.log("studio message", e.data);
|
|
85
|
+
this.isEditor = true;
|
|
86
|
+
if (!window.WeaverseStudioBridge) {
|
|
87
|
+
const studioBridgeScript = document.createElement("script");
|
|
88
|
+
studioBridgeScript.src = `${this.appUrl}/assets/studio/studio-bridge.js`;
|
|
89
|
+
studioBridgeScript.type = "module";
|
|
90
|
+
studioBridgeScript.onload = initStudio;
|
|
91
|
+
document.body.appendChild(studioBridgeScript);
|
|
92
|
+
} else {
|
|
93
|
+
initStudio();
|
|
70
94
|
}
|
|
71
|
-
}
|
|
95
|
+
}
|
|
72
96
|
});
|
|
73
97
|
}
|
|
74
98
|
}
|
|
@@ -80,7 +104,13 @@ var Weaverse = class {
|
|
|
80
104
|
}
|
|
81
105
|
triggerUpdate() {
|
|
82
106
|
this.listeners.forEach((fn) => fn());
|
|
83
|
-
this.
|
|
107
|
+
if (this.isEditor && this.studioBridge) {
|
|
108
|
+
this.studioBridge.sendMessageToEditor("weaverse.editor.updateProject", {
|
|
109
|
+
projectData: this.projectData,
|
|
110
|
+
projectKey: this.projectKey,
|
|
111
|
+
appUrl: this.appUrl
|
|
112
|
+
});
|
|
113
|
+
}
|
|
84
114
|
}
|
|
85
115
|
fetchProjectData(fetch = globalThis.fetch) {
|
|
86
116
|
console.log("fetching project data...");
|
|
@@ -99,59 +129,20 @@ var Weaverse = class {
|
|
|
99
129
|
});
|
|
100
130
|
}
|
|
101
131
|
}
|
|
102
|
-
triggerEditorUpdate(type = "weaverse.workspace.init") {
|
|
103
|
-
if (this.isEditor && this.studioBridge) {
|
|
104
|
-
this.studioBridge.sendMessageToEditor(type, {
|
|
105
|
-
projectData: this.projectData,
|
|
106
|
-
projectKey: this.projectKey,
|
|
107
|
-
appUrl: this.appUrl
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
132
|
initProjectItemData() {
|
|
112
133
|
let data = this.projectData;
|
|
134
|
+
console.log("init project data", data);
|
|
113
135
|
if (data.items) {
|
|
114
136
|
data.items.forEach((item) => {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
}
|
|
120
|
-
addItem(item) {
|
|
121
|
-
let itemStore = new WeaverseItemStore(item, this);
|
|
122
|
-
this.itemInstances.set(item.id, itemStore);
|
|
123
|
-
return itemStore;
|
|
124
|
-
}
|
|
125
|
-
};
|
|
126
|
-
var WeaverseItemStore = class {
|
|
127
|
-
constructor(itemData = {}, weaverse) {
|
|
128
|
-
this.data = {};
|
|
129
|
-
this.listeners = /* @__PURE__ */ new Set();
|
|
130
|
-
this.ref = {
|
|
131
|
-
current: null
|
|
132
|
-
};
|
|
133
|
-
this.setData = (data) => {
|
|
134
|
-
this.data = Object.assign(this.data, data);
|
|
135
|
-
this.triggerUpdate();
|
|
136
|
-
};
|
|
137
|
-
this.subscribe = (fn) => {
|
|
138
|
-
this.listeners.add(fn);
|
|
139
|
-
};
|
|
140
|
-
this.unsubscribe = (fn) => {
|
|
141
|
-
this.listeners.delete(fn);
|
|
142
|
-
};
|
|
143
|
-
this.triggerUpdate = () => {
|
|
144
|
-
this.listeners.forEach((fn) => {
|
|
145
|
-
return fn(this.data);
|
|
137
|
+
if (!this.itemInstances.get(item.id)) {
|
|
138
|
+
console.log("init item instance", item);
|
|
139
|
+
new WeaverseItemStore(item, this);
|
|
140
|
+
}
|
|
146
141
|
});
|
|
147
|
-
};
|
|
148
|
-
this.data = itemData;
|
|
149
|
-
let { type, id } = itemData;
|
|
150
|
-
if (type && id) {
|
|
151
|
-
this.Component = weaverse.elementInstances.get(type);
|
|
152
142
|
}
|
|
153
143
|
}
|
|
154
144
|
};
|
|
145
|
+
Weaverse.WeaverseItemStore = WeaverseItemStore;
|
|
155
146
|
export {
|
|
156
147
|
Weaverse,
|
|
157
148
|
WeaverseItemStore,
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.3.
|
|
2
|
+
"version": "0.3.3",
|
|
3
3
|
"license": "MIT",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"typings": "dist/index.d.ts",
|
|
@@ -16,12 +16,12 @@
|
|
|
16
16
|
"scripts": {
|
|
17
17
|
"start": "npm run dev",
|
|
18
18
|
"dev": "tsup src/index.ts --format esm,cjs --dts --outDir dist --watch",
|
|
19
|
-
"build": "tsup src/index.ts --format esm,cjs --dts --outDir dist"
|
|
19
|
+
"build": "tsup src/index.ts --format esm,cjs --dts --outDir dist",
|
|
20
|
+
"prepublish": "npm run build"
|
|
20
21
|
},
|
|
21
22
|
"name": "@weaverse/core",
|
|
22
23
|
"author": "Paul",
|
|
23
24
|
"dependencies": {
|
|
24
|
-
"@stitches/core": "^1.2.7"
|
|
25
|
-
"uuid": "^8.3.2"
|
|
25
|
+
"@stitches/core": "^1.2.7"
|
|
26
26
|
}
|
|
27
27
|
}
|