@weaverse/core 0.6.4 → 0.6.8
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 +52 -39
- package/dist/index.js +16 -39
- package/dist/index.mjs +16 -39
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,23 @@
|
|
|
1
|
+
import { CSSProperties } from '@stitches/core';
|
|
1
2
|
import Stitches from '@stitches/core/types/stitches';
|
|
2
3
|
import { RefObject } from 'react';
|
|
3
4
|
|
|
5
|
+
interface ProjectDataType {
|
|
6
|
+
items: WeaverseElementData[];
|
|
7
|
+
rootId: string | number;
|
|
8
|
+
script: {
|
|
9
|
+
css: string;
|
|
10
|
+
js: string;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
declare type WeaverseType = {
|
|
14
|
+
mediaBreakPoints?: any;
|
|
15
|
+
appUrl?: string;
|
|
16
|
+
projectKey?: string;
|
|
17
|
+
projectData?: ProjectDataType;
|
|
18
|
+
isDesignMode?: boolean;
|
|
19
|
+
ssrMode?: boolean;
|
|
20
|
+
};
|
|
4
21
|
declare type TODO = any;
|
|
5
22
|
declare type WeaverseElementMap = {
|
|
6
23
|
[key: string]: WeaverseElement;
|
|
@@ -20,9 +37,24 @@ declare type WeaverseElementSchema = {
|
|
|
20
37
|
settings?: WeaverseElementInput[];
|
|
21
38
|
styles?: WeaverseElementInput[];
|
|
22
39
|
toolbar?: TODO;
|
|
23
|
-
data?:
|
|
40
|
+
data?: WeaverseElementData;
|
|
24
41
|
catalog?: WeaverseElementCatalog;
|
|
25
42
|
};
|
|
43
|
+
declare type WeaverseElementData = {
|
|
44
|
+
id?: string | number;
|
|
45
|
+
type?: string | undefined;
|
|
46
|
+
childIds?: (string | number)[] | undefined;
|
|
47
|
+
css?: WeaverseElementCSS;
|
|
48
|
+
[key: string]: any;
|
|
49
|
+
};
|
|
50
|
+
declare type WeaverseElementCSS = {
|
|
51
|
+
'@desktop'?: CSSProperties | {
|
|
52
|
+
[key: string]: CSSProperties;
|
|
53
|
+
};
|
|
54
|
+
'@mobile'?: CSSProperties | {
|
|
55
|
+
[key: string]: CSSProperties;
|
|
56
|
+
};
|
|
57
|
+
};
|
|
26
58
|
declare type WeaverseElementInput = {
|
|
27
59
|
label?: string;
|
|
28
60
|
type: 'select' | 'checkbox' | 'radio' | 'range' | 'button' | 'image' | 'file' | 'hidden' | 'alignment' | 'color' | 'dimensions' | 'flex' | 'grid' | 'input' | 'switch' | 'spacing' | 'textarea' | 'visibility' | 'border' | 'background' | 'typography' | 'shadow' | 'position' | 'overflow' | 'display' | 'other';
|
|
@@ -36,40 +68,15 @@ declare type WeaverseElementInput = {
|
|
|
36
68
|
declare global {
|
|
37
69
|
interface Window {
|
|
38
70
|
WeaverseStudioBridge: TODO;
|
|
71
|
+
weaverseShopifyProducts: TODO;
|
|
39
72
|
}
|
|
40
73
|
}
|
|
41
74
|
|
|
42
|
-
interface ProjectDataItemType {
|
|
43
|
-
type: string;
|
|
44
|
-
name?: string;
|
|
45
|
-
id: string | number;
|
|
46
|
-
description?: string;
|
|
47
|
-
childIds?: Array<string | number>;
|
|
48
|
-
css?: {
|
|
49
|
-
[key: string]: string;
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
interface ProjectDataType {
|
|
53
|
-
items: ProjectDataItemType[];
|
|
54
|
-
rootId: string | number;
|
|
55
|
-
}
|
|
56
|
-
declare type MediaBreakpoints = {
|
|
57
|
-
tablet: string;
|
|
58
|
-
mobile: string;
|
|
59
|
-
};
|
|
60
|
-
declare type WeaverseType = {
|
|
61
|
-
[key: string]: any;
|
|
62
|
-
appUrl?: string;
|
|
63
|
-
projectKey?: string;
|
|
64
|
-
projectData?: ProjectDataType;
|
|
65
|
-
isDesignMode?: boolean;
|
|
66
|
-
};
|
|
67
75
|
/**
|
|
68
76
|
* WeaverseItemStore is a store for Weaverse item, it can be used to subscribe/update the item data
|
|
69
|
-
* @param itemData {
|
|
77
|
+
* @param itemData {WeaverseElementData} Weaverse item data
|
|
70
78
|
* @param weaverse {Weaverse} Weaverse instance
|
|
71
|
-
*
|
|
72
|
-
* ```jsx
|
|
79
|
+
* @example
|
|
73
80
|
* useEffect(() => {
|
|
74
81
|
* let handleUpdate = (update: any) => {
|
|
75
82
|
* setData({...update})
|
|
@@ -78,19 +85,19 @@ declare type WeaverseType = {
|
|
|
78
85
|
* return () => {
|
|
79
86
|
* itemInstance.unsubscribe(handleUpdate)
|
|
80
87
|
* }
|
|
81
|
-
*
|
|
82
|
-
* ```
|
|
88
|
+
* }, [])
|
|
83
89
|
*/
|
|
84
90
|
declare class WeaverseItemStore {
|
|
85
91
|
listeners: Set<any>;
|
|
86
92
|
ref: RefObject<HTMLElement>;
|
|
87
93
|
weaverse: Weaverse;
|
|
88
|
-
|
|
89
|
-
|
|
94
|
+
stitchesClass: string;
|
|
95
|
+
constructor(itemData: WeaverseElementData, weaverse: Weaverse);
|
|
96
|
+
_data: WeaverseElementData;
|
|
90
97
|
get Element(): WeaverseElement;
|
|
91
|
-
set data(data:
|
|
92
|
-
get data():
|
|
93
|
-
setData: (data:
|
|
98
|
+
set data(data: WeaverseElementData);
|
|
99
|
+
get data(): WeaverseElementData;
|
|
100
|
+
setData: (data: WeaverseElementData) => WeaverseElementData;
|
|
94
101
|
subscribe: (fn: any) => void;
|
|
95
102
|
unsubscribe: (fn: any) => void;
|
|
96
103
|
triggerUpdate: () => void;
|
|
@@ -133,6 +140,11 @@ declare class Weaverse {
|
|
|
133
140
|
* @type {boolean}
|
|
134
141
|
*/
|
|
135
142
|
isDesignMode: boolean;
|
|
143
|
+
/**
|
|
144
|
+
* Use in element to optionally render special HTML for hydration
|
|
145
|
+
* @type {boolean}
|
|
146
|
+
*/
|
|
147
|
+
ssrMode: boolean;
|
|
136
148
|
/**
|
|
137
149
|
* stitches instance for handling CSS stylesheet, media, theme for Weaverse project
|
|
138
150
|
*/
|
|
@@ -149,8 +161,10 @@ declare class Weaverse {
|
|
|
149
161
|
* @param projectKey {string} Weaverse project key to access project data via API
|
|
150
162
|
* @param projectData {ProjectDataType} Weaverse project data, by default, user can provide project data via React Component.
|
|
151
163
|
* @param mediaBreakPoints {object} Pass down custom media query breakpoints or just use the default.
|
|
164
|
+
* @param isDesignMode {boolean} check whether the sdk is isDesignMode or not
|
|
165
|
+
* @param ssrMode {boolean} Use in element to optionally render special HTML for hydration
|
|
152
166
|
*/
|
|
153
|
-
constructor({ appUrl, projectKey, projectData, mediaBreakPoints, isDesignMode }?: WeaverseType);
|
|
167
|
+
constructor({ appUrl, projectKey, projectData, mediaBreakPoints, isDesignMode, ssrMode }?: WeaverseType);
|
|
154
168
|
/**
|
|
155
169
|
* register the custom React Component to Weaverse, store it into Weaverse.elementInstances
|
|
156
170
|
* @param element {WeaverseElement} custom React Component
|
|
@@ -158,7 +172,6 @@ declare class Weaverse {
|
|
|
158
172
|
registerElement(element: WeaverseElement): void;
|
|
159
173
|
init(): void;
|
|
160
174
|
initStitches: () => void;
|
|
161
|
-
loadStudio(): void;
|
|
162
175
|
subscribe(fn: any): void;
|
|
163
176
|
unsubscribe(fn: any): void;
|
|
164
177
|
triggerUpdate(): void;
|
|
@@ -184,4 +197,4 @@ declare const isReactNative: boolean;
|
|
|
184
197
|
declare const isBrowser: boolean;
|
|
185
198
|
declare const isIframe: boolean;
|
|
186
199
|
|
|
187
|
-
export {
|
|
200
|
+
export { ProjectDataType, TODO, Weaverse, WeaverseElement, WeaverseElementCSS, WeaverseElementCatalog, WeaverseElementData, WeaverseElementInput, WeaverseElementMap, WeaverseElementSchema, WeaverseItemStore, WeaverseType, isBrowser, isIframe, isReactNative };
|
package/dist/index.js
CHANGED
|
@@ -44,19 +44,15 @@ __export(src_exports, {
|
|
|
44
44
|
});
|
|
45
45
|
module.exports = __toCommonJS(src_exports);
|
|
46
46
|
|
|
47
|
-
// src/utils/index.ts
|
|
48
|
-
var isReactNative = typeof navigator === "object" && navigator.product === "ReactNative";
|
|
49
|
-
var isBrowser = typeof window !== "undefined" && !isReactNative;
|
|
50
|
-
var isIframe = isBrowser && window.top !== window.self;
|
|
51
|
-
|
|
52
47
|
// src/core.ts
|
|
53
48
|
var stitches = __toESM(require("@stitches/core"));
|
|
54
49
|
var WeaverseItemStore = class {
|
|
55
|
-
constructor(itemData
|
|
50
|
+
constructor(itemData, weaverse) {
|
|
56
51
|
this.listeners = /* @__PURE__ */ new Set();
|
|
57
52
|
this.ref = {
|
|
58
53
|
current: null
|
|
59
54
|
};
|
|
55
|
+
this.stitchesClass = "";
|
|
60
56
|
this._data = {};
|
|
61
57
|
this.setData = (data) => {
|
|
62
58
|
this.data = Object.assign(this.data, data);
|
|
@@ -93,17 +89,22 @@ var WeaverseItemStore = class {
|
|
|
93
89
|
}
|
|
94
90
|
};
|
|
95
91
|
var _Weaverse = class {
|
|
96
|
-
constructor({ appUrl, projectKey, projectData, mediaBreakPoints, isDesignMode } = {}) {
|
|
92
|
+
constructor({ appUrl, projectKey, projectData, mediaBreakPoints, isDesignMode, ssrMode } = {}) {
|
|
97
93
|
this.elementInstances = /* @__PURE__ */ new Map();
|
|
98
94
|
this.itemInstances = /* @__PURE__ */ new Map();
|
|
99
95
|
this.appUrl = process.env.NODE_ENV === "development" ? "http://localhost:3000" : "https://weaverse.io";
|
|
100
96
|
this.projectKey = "";
|
|
101
97
|
this.projectData = {
|
|
102
98
|
items: [],
|
|
103
|
-
rootId: 0
|
|
99
|
+
rootId: 0,
|
|
100
|
+
script: {
|
|
101
|
+
css: "",
|
|
102
|
+
js: ""
|
|
103
|
+
}
|
|
104
104
|
};
|
|
105
105
|
this.listeners = /* @__PURE__ */ new Set();
|
|
106
106
|
this.isDesignMode = false;
|
|
107
|
+
this.ssrMode = false;
|
|
107
108
|
this.mediaBreakPoints = {
|
|
108
109
|
desktop: "all",
|
|
109
110
|
mobile: "(max-width: 767.98px)"
|
|
@@ -111,25 +112,14 @@ var _Weaverse = class {
|
|
|
111
112
|
this.initStitches = () => {
|
|
112
113
|
this.stitchesInstance = stitches.createStitches({
|
|
113
114
|
prefix: "weaverse",
|
|
114
|
-
media: this.mediaBreakPoints
|
|
115
|
-
theme: {
|
|
116
|
-
sizes: {
|
|
117
|
-
"width": "100%",
|
|
118
|
-
"max-width": "100%",
|
|
119
|
-
"column-count": "16",
|
|
120
|
-
"row-count": "12",
|
|
121
|
-
"row-size": "48px"
|
|
122
|
-
},
|
|
123
|
-
space: {
|
|
124
|
-
gap: "8px"
|
|
125
|
-
}
|
|
126
|
-
}
|
|
115
|
+
media: this.mediaBreakPoints
|
|
127
116
|
});
|
|
128
117
|
};
|
|
129
118
|
this.appUrl = appUrl || this.appUrl;
|
|
130
119
|
this.projectKey = projectKey || this.projectKey;
|
|
131
120
|
this.mediaBreakPoints = mediaBreakPoints || this.mediaBreakPoints;
|
|
132
121
|
this.isDesignMode = isDesignMode || this.isDesignMode;
|
|
122
|
+
this.ssrMode = ssrMode || this.ssrMode;
|
|
133
123
|
projectData && (this.projectData = projectData);
|
|
134
124
|
this.init();
|
|
135
125
|
}
|
|
@@ -143,27 +133,9 @@ var _Weaverse = class {
|
|
|
143
133
|
}
|
|
144
134
|
init() {
|
|
145
135
|
this.initStitches();
|
|
146
|
-
this.loadStudio();
|
|
147
136
|
this.initProjectItemData();
|
|
148
137
|
this.updateProjectData();
|
|
149
138
|
}
|
|
150
|
-
loadStudio() {
|
|
151
|
-
if (this.isDesignMode && isIframe) {
|
|
152
|
-
let initStudio = () => {
|
|
153
|
-
this.studioBridge = new window.WeaverseStudioBridge(this);
|
|
154
|
-
this.triggerUpdate();
|
|
155
|
-
};
|
|
156
|
-
if (!window.WeaverseStudioBridge) {
|
|
157
|
-
const studioBridgeScript = document.createElement("script");
|
|
158
|
-
studioBridgeScript.src = `${this.appUrl}/assets/studio/studio-bridge.js`;
|
|
159
|
-
studioBridgeScript.type = "module";
|
|
160
|
-
studioBridgeScript.onload = initStudio;
|
|
161
|
-
document.body.appendChild(studioBridgeScript);
|
|
162
|
-
} else {
|
|
163
|
-
initStudio();
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
139
|
subscribe(fn) {
|
|
168
140
|
this.listeners.add(fn);
|
|
169
141
|
}
|
|
@@ -206,6 +178,11 @@ var _Weaverse = class {
|
|
|
206
178
|
};
|
|
207
179
|
var Weaverse = _Weaverse;
|
|
208
180
|
Weaverse.WeaverseItemStore = WeaverseItemStore;
|
|
181
|
+
|
|
182
|
+
// src/utils/index.ts
|
|
183
|
+
var isReactNative = typeof navigator === "object" && navigator.product === "ReactNative";
|
|
184
|
+
var isBrowser = typeof window !== "undefined" && !isReactNative;
|
|
185
|
+
var isIframe = isBrowser && window.top !== window.self;
|
|
209
186
|
// Annotate the CommonJS export names for ESM import in node:
|
|
210
187
|
0 && (module.exports = {
|
|
211
188
|
Weaverse,
|
package/dist/index.mjs
CHANGED
|
@@ -15,19 +15,15 @@ var __spreadValues = (a, b) => {
|
|
|
15
15
|
return a;
|
|
16
16
|
};
|
|
17
17
|
|
|
18
|
-
// src/utils/index.ts
|
|
19
|
-
var isReactNative = typeof navigator === "object" && navigator.product === "ReactNative";
|
|
20
|
-
var isBrowser = typeof window !== "undefined" && !isReactNative;
|
|
21
|
-
var isIframe = isBrowser && window.top !== window.self;
|
|
22
|
-
|
|
23
18
|
// src/core.ts
|
|
24
19
|
import * as stitches from "@stitches/core";
|
|
25
20
|
var WeaverseItemStore = class {
|
|
26
|
-
constructor(itemData
|
|
21
|
+
constructor(itemData, weaverse) {
|
|
27
22
|
this.listeners = /* @__PURE__ */ new Set();
|
|
28
23
|
this.ref = {
|
|
29
24
|
current: null
|
|
30
25
|
};
|
|
26
|
+
this.stitchesClass = "";
|
|
31
27
|
this._data = {};
|
|
32
28
|
this.setData = (data) => {
|
|
33
29
|
this.data = Object.assign(this.data, data);
|
|
@@ -64,17 +60,22 @@ var WeaverseItemStore = class {
|
|
|
64
60
|
}
|
|
65
61
|
};
|
|
66
62
|
var _Weaverse = class {
|
|
67
|
-
constructor({ appUrl, projectKey, projectData, mediaBreakPoints, isDesignMode } = {}) {
|
|
63
|
+
constructor({ appUrl, projectKey, projectData, mediaBreakPoints, isDesignMode, ssrMode } = {}) {
|
|
68
64
|
this.elementInstances = /* @__PURE__ */ new Map();
|
|
69
65
|
this.itemInstances = /* @__PURE__ */ new Map();
|
|
70
66
|
this.appUrl = process.env.NODE_ENV === "development" ? "http://localhost:3000" : "https://weaverse.io";
|
|
71
67
|
this.projectKey = "";
|
|
72
68
|
this.projectData = {
|
|
73
69
|
items: [],
|
|
74
|
-
rootId: 0
|
|
70
|
+
rootId: 0,
|
|
71
|
+
script: {
|
|
72
|
+
css: "",
|
|
73
|
+
js: ""
|
|
74
|
+
}
|
|
75
75
|
};
|
|
76
76
|
this.listeners = /* @__PURE__ */ new Set();
|
|
77
77
|
this.isDesignMode = false;
|
|
78
|
+
this.ssrMode = false;
|
|
78
79
|
this.mediaBreakPoints = {
|
|
79
80
|
desktop: "all",
|
|
80
81
|
mobile: "(max-width: 767.98px)"
|
|
@@ -82,25 +83,14 @@ var _Weaverse = class {
|
|
|
82
83
|
this.initStitches = () => {
|
|
83
84
|
this.stitchesInstance = stitches.createStitches({
|
|
84
85
|
prefix: "weaverse",
|
|
85
|
-
media: this.mediaBreakPoints
|
|
86
|
-
theme: {
|
|
87
|
-
sizes: {
|
|
88
|
-
"width": "100%",
|
|
89
|
-
"max-width": "100%",
|
|
90
|
-
"column-count": "16",
|
|
91
|
-
"row-count": "12",
|
|
92
|
-
"row-size": "48px"
|
|
93
|
-
},
|
|
94
|
-
space: {
|
|
95
|
-
gap: "8px"
|
|
96
|
-
}
|
|
97
|
-
}
|
|
86
|
+
media: this.mediaBreakPoints
|
|
98
87
|
});
|
|
99
88
|
};
|
|
100
89
|
this.appUrl = appUrl || this.appUrl;
|
|
101
90
|
this.projectKey = projectKey || this.projectKey;
|
|
102
91
|
this.mediaBreakPoints = mediaBreakPoints || this.mediaBreakPoints;
|
|
103
92
|
this.isDesignMode = isDesignMode || this.isDesignMode;
|
|
93
|
+
this.ssrMode = ssrMode || this.ssrMode;
|
|
104
94
|
projectData && (this.projectData = projectData);
|
|
105
95
|
this.init();
|
|
106
96
|
}
|
|
@@ -114,27 +104,9 @@ var _Weaverse = class {
|
|
|
114
104
|
}
|
|
115
105
|
init() {
|
|
116
106
|
this.initStitches();
|
|
117
|
-
this.loadStudio();
|
|
118
107
|
this.initProjectItemData();
|
|
119
108
|
this.updateProjectData();
|
|
120
109
|
}
|
|
121
|
-
loadStudio() {
|
|
122
|
-
if (this.isDesignMode && isIframe) {
|
|
123
|
-
let initStudio = () => {
|
|
124
|
-
this.studioBridge = new window.WeaverseStudioBridge(this);
|
|
125
|
-
this.triggerUpdate();
|
|
126
|
-
};
|
|
127
|
-
if (!window.WeaverseStudioBridge) {
|
|
128
|
-
const studioBridgeScript = document.createElement("script");
|
|
129
|
-
studioBridgeScript.src = `${this.appUrl}/assets/studio/studio-bridge.js`;
|
|
130
|
-
studioBridgeScript.type = "module";
|
|
131
|
-
studioBridgeScript.onload = initStudio;
|
|
132
|
-
document.body.appendChild(studioBridgeScript);
|
|
133
|
-
} else {
|
|
134
|
-
initStudio();
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
110
|
subscribe(fn) {
|
|
139
111
|
this.listeners.add(fn);
|
|
140
112
|
}
|
|
@@ -177,6 +149,11 @@ var _Weaverse = class {
|
|
|
177
149
|
};
|
|
178
150
|
var Weaverse = _Weaverse;
|
|
179
151
|
Weaverse.WeaverseItemStore = WeaverseItemStore;
|
|
152
|
+
|
|
153
|
+
// src/utils/index.ts
|
|
154
|
+
var isReactNative = typeof navigator === "object" && navigator.product === "ReactNative";
|
|
155
|
+
var isBrowser = typeof window !== "undefined" && !isReactNative;
|
|
156
|
+
var isIframe = isBrowser && window.top !== window.self;
|
|
180
157
|
export {
|
|
181
158
|
Weaverse,
|
|
182
159
|
WeaverseItemStore,
|
package/package.json
CHANGED