@weaverse/core 3.1.6 → 3.1.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.mts +192 -3
- package/dist/index.d.ts +192 -3
- package/dist/index.js +8 -6
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +8 -5
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -40,8 +40,196 @@ declare let stitchesUtils: {
|
|
|
40
40
|
};
|
|
41
41
|
};
|
|
42
42
|
|
|
43
|
+
// This file is generated from Weaverse Studio
|
|
44
|
+
|
|
45
|
+
type IconName =
|
|
46
|
+
| "accessibility"
|
|
47
|
+
| "activity-square"
|
|
48
|
+
| "alarm-clock-off"
|
|
49
|
+
| "alarm-clock"
|
|
50
|
+
| "alarm-minus"
|
|
51
|
+
| "alarm-plus"
|
|
52
|
+
| "album"
|
|
53
|
+
| "alert-circle"
|
|
54
|
+
| "alert-octagon"
|
|
55
|
+
| "alert-triangle"
|
|
56
|
+
| "align-center-vertical"
|
|
57
|
+
| "align-end-vertical"
|
|
58
|
+
| "align-left"
|
|
59
|
+
| "align-right"
|
|
60
|
+
| "align-start-vertical"
|
|
61
|
+
| "arrow-down-a-z"
|
|
62
|
+
| "arrow-down-narrow-wide"
|
|
63
|
+
| "arrow-left-from-line"
|
|
64
|
+
| "arrow-up-a-z"
|
|
65
|
+
| "arrow-up-narrow-wide"
|
|
66
|
+
| "atom"
|
|
67
|
+
| "blocks"
|
|
68
|
+
| "book-image"
|
|
69
|
+
| "book-marked"
|
|
70
|
+
| "book-text"
|
|
71
|
+
| "book"
|
|
72
|
+
| "box-select"
|
|
73
|
+
| "box"
|
|
74
|
+
| "boxes"
|
|
75
|
+
| "brackets"
|
|
76
|
+
| "calendar-minus"
|
|
77
|
+
| "calendar-plus"
|
|
78
|
+
| "calendar"
|
|
79
|
+
| "check-check"
|
|
80
|
+
| "check-circle"
|
|
81
|
+
| "check"
|
|
82
|
+
| "chevron-down"
|
|
83
|
+
| "chevron-left"
|
|
84
|
+
| "chevron-right"
|
|
85
|
+
| "chevron-up"
|
|
86
|
+
| "chevrons-up-down"
|
|
87
|
+
| "code"
|
|
88
|
+
| "columns-2"
|
|
89
|
+
| "columns-3"
|
|
90
|
+
| "concierge-bell"
|
|
91
|
+
| "contact"
|
|
92
|
+
| "copy"
|
|
93
|
+
| "corner-up-left"
|
|
94
|
+
| "external-link"
|
|
95
|
+
| "eye-off"
|
|
96
|
+
| "eye"
|
|
97
|
+
| "facebook"
|
|
98
|
+
| "file-code-2"
|
|
99
|
+
| "file-plus-2"
|
|
100
|
+
| "file-search"
|
|
101
|
+
| "file-text"
|
|
102
|
+
| "file"
|
|
103
|
+
| "filter"
|
|
104
|
+
| "flag"
|
|
105
|
+
| "flask-conical"
|
|
106
|
+
| "fold-horizontal"
|
|
107
|
+
| "fold-vertical"
|
|
108
|
+
| "folder-open"
|
|
109
|
+
| "folder-plus"
|
|
110
|
+
| "folder-search"
|
|
111
|
+
| "folder"
|
|
112
|
+
| "form-input"
|
|
113
|
+
| "frown"
|
|
114
|
+
| "gallery-horizontal-end"
|
|
115
|
+
| "gauge"
|
|
116
|
+
| "github"
|
|
117
|
+
| "globe"
|
|
118
|
+
| "grid-2x2"
|
|
119
|
+
| "grip-vertical"
|
|
120
|
+
| "hammer"
|
|
121
|
+
| "hard-drive-download"
|
|
122
|
+
| "help-circle"
|
|
123
|
+
| "home"
|
|
124
|
+
| "hourglass"
|
|
125
|
+
| "image-off"
|
|
126
|
+
| "image-plus"
|
|
127
|
+
| "image"
|
|
128
|
+
| "info"
|
|
129
|
+
| "languages"
|
|
130
|
+
| "layers"
|
|
131
|
+
| "layout-dashboard"
|
|
132
|
+
| "layout-grid"
|
|
133
|
+
| "layout-list"
|
|
134
|
+
| "layout-template"
|
|
135
|
+
| "life-buoy"
|
|
136
|
+
| "lightbulb"
|
|
137
|
+
| "link"
|
|
138
|
+
| "linkedin"
|
|
139
|
+
| "list-todo"
|
|
140
|
+
| "loader-2"
|
|
141
|
+
| "loader"
|
|
142
|
+
| "log-out"
|
|
143
|
+
| "map-pinned"
|
|
144
|
+
| "maximize"
|
|
145
|
+
| "message-circle"
|
|
146
|
+
| "message-square"
|
|
147
|
+
| "messages-square"
|
|
148
|
+
| "minimize"
|
|
149
|
+
| "minus"
|
|
150
|
+
| "monitor-play"
|
|
151
|
+
| "monitor"
|
|
152
|
+
| "moon"
|
|
153
|
+
| "more-horizontal"
|
|
154
|
+
| "more-vertical"
|
|
155
|
+
| "mouse-pointer-2"
|
|
156
|
+
| "mouse-pointer-click"
|
|
157
|
+
| "mouse-pointer-square-dashed"
|
|
158
|
+
| "mouse-pointer-square"
|
|
159
|
+
| "mouse-pointer"
|
|
160
|
+
| "mouse"
|
|
161
|
+
| "move-down-left"
|
|
162
|
+
| "move-down-right"
|
|
163
|
+
| "move-down"
|
|
164
|
+
| "move-horizontal"
|
|
165
|
+
| "move-left"
|
|
166
|
+
| "move-right"
|
|
167
|
+
| "move-up-left"
|
|
168
|
+
| "move-up-right"
|
|
169
|
+
| "move-up"
|
|
170
|
+
| "newspaper"
|
|
171
|
+
| "notebook-tabs"
|
|
172
|
+
| "package-check"
|
|
173
|
+
| "package-open"
|
|
174
|
+
| "package"
|
|
175
|
+
| "paintbrush-2"
|
|
176
|
+
| "paintbrush"
|
|
177
|
+
| "palette"
|
|
178
|
+
| "panel-left"
|
|
179
|
+
| "pen"
|
|
180
|
+
| "pencil-line"
|
|
181
|
+
| "pencil"
|
|
182
|
+
| "phone"
|
|
183
|
+
| "plane-landing"
|
|
184
|
+
| "play-circle"
|
|
185
|
+
| "plus-circle"
|
|
186
|
+
| "plus-square"
|
|
187
|
+
| "plus"
|
|
188
|
+
| "presentation"
|
|
189
|
+
| "puzzle"
|
|
190
|
+
| "rocket"
|
|
191
|
+
| "search"
|
|
192
|
+
| "settings"
|
|
193
|
+
| "shield-question"
|
|
194
|
+
| "shopping-bag"
|
|
195
|
+
| "shopping-cart"
|
|
196
|
+
| "shrink"
|
|
197
|
+
| "slack"
|
|
198
|
+
| "sliders-horizontal"
|
|
199
|
+
| "sliders"
|
|
200
|
+
| "smartphone"
|
|
201
|
+
| "sparkles"
|
|
202
|
+
| "star-filled"
|
|
203
|
+
| "star-half-filled"
|
|
204
|
+
| "star"
|
|
205
|
+
| "store"
|
|
206
|
+
| "stretch-vertical"
|
|
207
|
+
| "sun"
|
|
208
|
+
| "tag"
|
|
209
|
+
| "tags"
|
|
210
|
+
| "terminal"
|
|
211
|
+
| "text-cursor-input"
|
|
212
|
+
| "trash"
|
|
213
|
+
| "truck"
|
|
214
|
+
| "twitter"
|
|
215
|
+
| "type"
|
|
216
|
+
| "undo-2"
|
|
217
|
+
| "undo"
|
|
218
|
+
| "upload-cloud"
|
|
219
|
+
| "upload"
|
|
220
|
+
| "user"
|
|
221
|
+
| "users"
|
|
222
|
+
| "video"
|
|
223
|
+
| "wand-2"
|
|
224
|
+
| "wand-sparkles"
|
|
225
|
+
| "x-logo"
|
|
226
|
+
| "x-octagon"
|
|
227
|
+
| "x"
|
|
228
|
+
| "youtube"
|
|
229
|
+
| "zap";
|
|
230
|
+
|
|
43
231
|
type PlatformTypeEnum = 'shopify-section' | 'shopify-hydrogen' | 'nextjs';
|
|
44
|
-
type ToolbarAction = 'general-settings' | 'settings-level-2' | 'duplicate' | 'delete';
|
|
232
|
+
type ToolbarAction = 'general-settings' | 'settings-level-2' | 'duplicate' | 'delete' | 'global-sections';
|
|
45
233
|
type AdvancedGroupType = 'border' | 'alignment' | 'background' | 'dimensions' | 'spacing' | 'typography' | 'visibility' | 'shadows-and-effects' | 'layout-background';
|
|
46
234
|
type PositionInputValue = 'top left' | 'top center' | 'top right' | 'center left' | 'center center' | 'center right' | 'bottom left' | 'bottom center' | 'bottom right';
|
|
47
235
|
type InputType = 'blog' | 'collection' | 'collection-list' | 'color' | 'datepicker' | 'image' | 'map-autocomplete' | 'position' | 'product' | 'product-list' | 'range' | 'richtext' | 'select' | 'switch' | 'text' | 'textarea' | 'toggle-group' | 'swatches' | 'metaobject' | 'url';
|
|
@@ -132,7 +320,7 @@ interface ToggleGroupConfigs {
|
|
|
132
320
|
options?: {
|
|
133
321
|
value: string;
|
|
134
322
|
label: string;
|
|
135
|
-
icon?:
|
|
323
|
+
icon?: IconName;
|
|
136
324
|
weight?: string;
|
|
137
325
|
}[];
|
|
138
326
|
}
|
|
@@ -164,7 +352,7 @@ declare class WeaverseItemStore extends EventEmitter {
|
|
|
164
352
|
stitchesClass: string;
|
|
165
353
|
constructor(initialData: ElementData, weaverse: Weaverse);
|
|
166
354
|
get _id(): string;
|
|
167
|
-
get _element(): HTMLElement
|
|
355
|
+
get _element(): HTMLElement;
|
|
168
356
|
get Element(): any;
|
|
169
357
|
getDefaultCss: () => ElementCSS;
|
|
170
358
|
get data(): ElementData;
|
|
@@ -195,6 +383,7 @@ declare class Weaverse extends EventEmitter {
|
|
|
195
383
|
*/
|
|
196
384
|
initProject: () => void;
|
|
197
385
|
get itemInstances(): Map<any, any>;
|
|
386
|
+
createItemInstance: (data: ElementData) => WeaverseItemStore;
|
|
198
387
|
static initStitches: (externalConfig?: Stitches.CreateStitches) => void;
|
|
199
388
|
get stitchesInstance(): any;
|
|
200
389
|
/**
|
package/dist/index.d.ts
CHANGED
|
@@ -40,8 +40,196 @@ declare let stitchesUtils: {
|
|
|
40
40
|
};
|
|
41
41
|
};
|
|
42
42
|
|
|
43
|
+
// This file is generated from Weaverse Studio
|
|
44
|
+
|
|
45
|
+
type IconName =
|
|
46
|
+
| "accessibility"
|
|
47
|
+
| "activity-square"
|
|
48
|
+
| "alarm-clock-off"
|
|
49
|
+
| "alarm-clock"
|
|
50
|
+
| "alarm-minus"
|
|
51
|
+
| "alarm-plus"
|
|
52
|
+
| "album"
|
|
53
|
+
| "alert-circle"
|
|
54
|
+
| "alert-octagon"
|
|
55
|
+
| "alert-triangle"
|
|
56
|
+
| "align-center-vertical"
|
|
57
|
+
| "align-end-vertical"
|
|
58
|
+
| "align-left"
|
|
59
|
+
| "align-right"
|
|
60
|
+
| "align-start-vertical"
|
|
61
|
+
| "arrow-down-a-z"
|
|
62
|
+
| "arrow-down-narrow-wide"
|
|
63
|
+
| "arrow-left-from-line"
|
|
64
|
+
| "arrow-up-a-z"
|
|
65
|
+
| "arrow-up-narrow-wide"
|
|
66
|
+
| "atom"
|
|
67
|
+
| "blocks"
|
|
68
|
+
| "book-image"
|
|
69
|
+
| "book-marked"
|
|
70
|
+
| "book-text"
|
|
71
|
+
| "book"
|
|
72
|
+
| "box-select"
|
|
73
|
+
| "box"
|
|
74
|
+
| "boxes"
|
|
75
|
+
| "brackets"
|
|
76
|
+
| "calendar-minus"
|
|
77
|
+
| "calendar-plus"
|
|
78
|
+
| "calendar"
|
|
79
|
+
| "check-check"
|
|
80
|
+
| "check-circle"
|
|
81
|
+
| "check"
|
|
82
|
+
| "chevron-down"
|
|
83
|
+
| "chevron-left"
|
|
84
|
+
| "chevron-right"
|
|
85
|
+
| "chevron-up"
|
|
86
|
+
| "chevrons-up-down"
|
|
87
|
+
| "code"
|
|
88
|
+
| "columns-2"
|
|
89
|
+
| "columns-3"
|
|
90
|
+
| "concierge-bell"
|
|
91
|
+
| "contact"
|
|
92
|
+
| "copy"
|
|
93
|
+
| "corner-up-left"
|
|
94
|
+
| "external-link"
|
|
95
|
+
| "eye-off"
|
|
96
|
+
| "eye"
|
|
97
|
+
| "facebook"
|
|
98
|
+
| "file-code-2"
|
|
99
|
+
| "file-plus-2"
|
|
100
|
+
| "file-search"
|
|
101
|
+
| "file-text"
|
|
102
|
+
| "file"
|
|
103
|
+
| "filter"
|
|
104
|
+
| "flag"
|
|
105
|
+
| "flask-conical"
|
|
106
|
+
| "fold-horizontal"
|
|
107
|
+
| "fold-vertical"
|
|
108
|
+
| "folder-open"
|
|
109
|
+
| "folder-plus"
|
|
110
|
+
| "folder-search"
|
|
111
|
+
| "folder"
|
|
112
|
+
| "form-input"
|
|
113
|
+
| "frown"
|
|
114
|
+
| "gallery-horizontal-end"
|
|
115
|
+
| "gauge"
|
|
116
|
+
| "github"
|
|
117
|
+
| "globe"
|
|
118
|
+
| "grid-2x2"
|
|
119
|
+
| "grip-vertical"
|
|
120
|
+
| "hammer"
|
|
121
|
+
| "hard-drive-download"
|
|
122
|
+
| "help-circle"
|
|
123
|
+
| "home"
|
|
124
|
+
| "hourglass"
|
|
125
|
+
| "image-off"
|
|
126
|
+
| "image-plus"
|
|
127
|
+
| "image"
|
|
128
|
+
| "info"
|
|
129
|
+
| "languages"
|
|
130
|
+
| "layers"
|
|
131
|
+
| "layout-dashboard"
|
|
132
|
+
| "layout-grid"
|
|
133
|
+
| "layout-list"
|
|
134
|
+
| "layout-template"
|
|
135
|
+
| "life-buoy"
|
|
136
|
+
| "lightbulb"
|
|
137
|
+
| "link"
|
|
138
|
+
| "linkedin"
|
|
139
|
+
| "list-todo"
|
|
140
|
+
| "loader-2"
|
|
141
|
+
| "loader"
|
|
142
|
+
| "log-out"
|
|
143
|
+
| "map-pinned"
|
|
144
|
+
| "maximize"
|
|
145
|
+
| "message-circle"
|
|
146
|
+
| "message-square"
|
|
147
|
+
| "messages-square"
|
|
148
|
+
| "minimize"
|
|
149
|
+
| "minus"
|
|
150
|
+
| "monitor-play"
|
|
151
|
+
| "monitor"
|
|
152
|
+
| "moon"
|
|
153
|
+
| "more-horizontal"
|
|
154
|
+
| "more-vertical"
|
|
155
|
+
| "mouse-pointer-2"
|
|
156
|
+
| "mouse-pointer-click"
|
|
157
|
+
| "mouse-pointer-square-dashed"
|
|
158
|
+
| "mouse-pointer-square"
|
|
159
|
+
| "mouse-pointer"
|
|
160
|
+
| "mouse"
|
|
161
|
+
| "move-down-left"
|
|
162
|
+
| "move-down-right"
|
|
163
|
+
| "move-down"
|
|
164
|
+
| "move-horizontal"
|
|
165
|
+
| "move-left"
|
|
166
|
+
| "move-right"
|
|
167
|
+
| "move-up-left"
|
|
168
|
+
| "move-up-right"
|
|
169
|
+
| "move-up"
|
|
170
|
+
| "newspaper"
|
|
171
|
+
| "notebook-tabs"
|
|
172
|
+
| "package-check"
|
|
173
|
+
| "package-open"
|
|
174
|
+
| "package"
|
|
175
|
+
| "paintbrush-2"
|
|
176
|
+
| "paintbrush"
|
|
177
|
+
| "palette"
|
|
178
|
+
| "panel-left"
|
|
179
|
+
| "pen"
|
|
180
|
+
| "pencil-line"
|
|
181
|
+
| "pencil"
|
|
182
|
+
| "phone"
|
|
183
|
+
| "plane-landing"
|
|
184
|
+
| "play-circle"
|
|
185
|
+
| "plus-circle"
|
|
186
|
+
| "plus-square"
|
|
187
|
+
| "plus"
|
|
188
|
+
| "presentation"
|
|
189
|
+
| "puzzle"
|
|
190
|
+
| "rocket"
|
|
191
|
+
| "search"
|
|
192
|
+
| "settings"
|
|
193
|
+
| "shield-question"
|
|
194
|
+
| "shopping-bag"
|
|
195
|
+
| "shopping-cart"
|
|
196
|
+
| "shrink"
|
|
197
|
+
| "slack"
|
|
198
|
+
| "sliders-horizontal"
|
|
199
|
+
| "sliders"
|
|
200
|
+
| "smartphone"
|
|
201
|
+
| "sparkles"
|
|
202
|
+
| "star-filled"
|
|
203
|
+
| "star-half-filled"
|
|
204
|
+
| "star"
|
|
205
|
+
| "store"
|
|
206
|
+
| "stretch-vertical"
|
|
207
|
+
| "sun"
|
|
208
|
+
| "tag"
|
|
209
|
+
| "tags"
|
|
210
|
+
| "terminal"
|
|
211
|
+
| "text-cursor-input"
|
|
212
|
+
| "trash"
|
|
213
|
+
| "truck"
|
|
214
|
+
| "twitter"
|
|
215
|
+
| "type"
|
|
216
|
+
| "undo-2"
|
|
217
|
+
| "undo"
|
|
218
|
+
| "upload-cloud"
|
|
219
|
+
| "upload"
|
|
220
|
+
| "user"
|
|
221
|
+
| "users"
|
|
222
|
+
| "video"
|
|
223
|
+
| "wand-2"
|
|
224
|
+
| "wand-sparkles"
|
|
225
|
+
| "x-logo"
|
|
226
|
+
| "x-octagon"
|
|
227
|
+
| "x"
|
|
228
|
+
| "youtube"
|
|
229
|
+
| "zap";
|
|
230
|
+
|
|
43
231
|
type PlatformTypeEnum = 'shopify-section' | 'shopify-hydrogen' | 'nextjs';
|
|
44
|
-
type ToolbarAction = 'general-settings' | 'settings-level-2' | 'duplicate' | 'delete';
|
|
232
|
+
type ToolbarAction = 'general-settings' | 'settings-level-2' | 'duplicate' | 'delete' | 'global-sections';
|
|
45
233
|
type AdvancedGroupType = 'border' | 'alignment' | 'background' | 'dimensions' | 'spacing' | 'typography' | 'visibility' | 'shadows-and-effects' | 'layout-background';
|
|
46
234
|
type PositionInputValue = 'top left' | 'top center' | 'top right' | 'center left' | 'center center' | 'center right' | 'bottom left' | 'bottom center' | 'bottom right';
|
|
47
235
|
type InputType = 'blog' | 'collection' | 'collection-list' | 'color' | 'datepicker' | 'image' | 'map-autocomplete' | 'position' | 'product' | 'product-list' | 'range' | 'richtext' | 'select' | 'switch' | 'text' | 'textarea' | 'toggle-group' | 'swatches' | 'metaobject' | 'url';
|
|
@@ -132,7 +320,7 @@ interface ToggleGroupConfigs {
|
|
|
132
320
|
options?: {
|
|
133
321
|
value: string;
|
|
134
322
|
label: string;
|
|
135
|
-
icon?:
|
|
323
|
+
icon?: IconName;
|
|
136
324
|
weight?: string;
|
|
137
325
|
}[];
|
|
138
326
|
}
|
|
@@ -164,7 +352,7 @@ declare class WeaverseItemStore extends EventEmitter {
|
|
|
164
352
|
stitchesClass: string;
|
|
165
353
|
constructor(initialData: ElementData, weaverse: Weaverse);
|
|
166
354
|
get _id(): string;
|
|
167
|
-
get _element(): HTMLElement
|
|
355
|
+
get _element(): HTMLElement;
|
|
168
356
|
get Element(): any;
|
|
169
357
|
getDefaultCss: () => ElementCSS;
|
|
170
358
|
get data(): ElementData;
|
|
@@ -195,6 +383,7 @@ declare class Weaverse extends EventEmitter {
|
|
|
195
383
|
*/
|
|
196
384
|
initProject: () => void;
|
|
197
385
|
get itemInstances(): Map<any, any>;
|
|
386
|
+
createItemInstance: (data: ElementData) => WeaverseItemStore;
|
|
198
387
|
static initStitches: (externalConfig?: Stitches.CreateStitches) => void;
|
|
199
388
|
get stitchesInstance(): any;
|
|
200
389
|
/**
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var __create = Object.create;
|
|
3
2
|
var __defProp = Object.defineProperty;
|
|
4
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
@@ -142,7 +141,7 @@ var WeaverseItemStore = class extends EventEmitter {
|
|
|
142
141
|
let { type, id } = initialData || {};
|
|
143
142
|
this.weaverse = weaverse;
|
|
144
143
|
if (id && type) {
|
|
145
|
-
|
|
144
|
+
Weaverse.itemInstances.set(id, this);
|
|
146
145
|
Object.assign(this._store, initialData);
|
|
147
146
|
} else {
|
|
148
147
|
throw new Error(`'id' and 'type' are required to create a new Weaverse item.`);
|
|
@@ -167,7 +166,7 @@ var WeaverseItemStore = class extends EventEmitter {
|
|
|
167
166
|
return this._store;
|
|
168
167
|
}
|
|
169
168
|
set data(update) {
|
|
170
|
-
this._store = { ...this.
|
|
169
|
+
this._store = { ...this._store, ...update };
|
|
171
170
|
}
|
|
172
171
|
setData = (update) => {
|
|
173
172
|
this.data = Object.assign(this._store, update);
|
|
@@ -176,7 +175,7 @@ var WeaverseItemStore = class extends EventEmitter {
|
|
|
176
175
|
};
|
|
177
176
|
getSnapShot = () => this.data;
|
|
178
177
|
triggerUpdate = () => {
|
|
179
|
-
this.emit(this.
|
|
178
|
+
this.emit(this._store);
|
|
180
179
|
};
|
|
181
180
|
};
|
|
182
181
|
var Weaverse = class _Weaverse extends EventEmitter {
|
|
@@ -213,7 +212,7 @@ var Weaverse = class _Weaverse extends EventEmitter {
|
|
|
213
212
|
*/
|
|
214
213
|
initProject = () => {
|
|
215
214
|
let { data } = this;
|
|
216
|
-
let itemInstances =
|
|
215
|
+
let itemInstances = _Weaverse.itemInstances;
|
|
217
216
|
if (data?.items) {
|
|
218
217
|
data.items.forEach((item) => {
|
|
219
218
|
let itemInstance = itemInstances.get(item.id);
|
|
@@ -228,6 +227,9 @@ var Weaverse = class _Weaverse extends EventEmitter {
|
|
|
228
227
|
get itemInstances() {
|
|
229
228
|
return _Weaverse.itemInstances;
|
|
230
229
|
}
|
|
230
|
+
createItemInstance = (data) => {
|
|
231
|
+
return new _Weaverse.ItemConstructor(data, this);
|
|
232
|
+
};
|
|
231
233
|
static initStitches = (externalConfig) => {
|
|
232
234
|
_Weaverse.stitchesInstance = _Weaverse.stitchesInstance || stitches.createStitches({
|
|
233
235
|
prefix: "weaverse",
|
|
@@ -259,7 +261,7 @@ var Weaverse = class _Weaverse extends EventEmitter {
|
|
|
259
261
|
this.emit();
|
|
260
262
|
};
|
|
261
263
|
refreshAllItems() {
|
|
262
|
-
|
|
264
|
+
_Weaverse.itemInstances.forEach((item) => {
|
|
263
265
|
item.triggerUpdate();
|
|
264
266
|
});
|
|
265
267
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/core.ts","../src/utils/index.ts","../src/utils/event-emitter.ts","../src/utils/stitches.ts"],"sourcesContent":["export * from './types'\nexport * from './core'\nexport * from './utils'\n","/*\n @weaverse/core is the core package of Weaverse SDKs, it contains the core logic of Weaverse.\n It is a singleton class that can be used to register item, store project data, trigger update on item or project data, etc.\n ---\n Licensed under MIT License.\n Source: https://github.com/weaverse/weaverse\n About Weaverse: https://weaverse.io\n*/\n\nimport * as stitches from '@stitches/core'\nimport type Stitches from '@stitches/core/types/stitches'\nimport type { RefObject } from 'react'\nimport type {\n BreakPoints,\n ElementCSS,\n ElementData,\n PlatformTypeEnum,\n WeaverseCoreParams,\n WeaverseProjectDataType,\n} from './types'\nimport { merge } from './utils'\nimport { EventEmitter } from './utils/event-emitter'\nimport { stitchesUtils } from './utils/stitches'\n\nexport class WeaverseItemStore extends EventEmitter {\n weaverse: Weaverse\n ref: RefObject<HTMLElement> = { current: null }\n _store: ElementData = { id: '', type: '' }\n stitchesClass = ''\n\n constructor(initialData: ElementData, weaverse: Weaverse) {\n super()\n let { type, id } = initialData || {}\n this.weaverse = weaverse\n if (id && type) {\n weaverse.itemInstances.set(id, this)\n Object.assign(this._store, initialData)\n } else {\n throw new Error(`'id' and 'type' are required to create a new Weaverse item.`)\n }\n this._store.css = this.getDefaultCss()\n }\n\n get _id() {\n return this._store.id\n }\n\n get _element() {\n return this.ref.current\n }\n\n get Element() {\n return this.weaverse.elementRegistry.get(this._store.type)\n }\n\n getDefaultCss = (): ElementCSS => {\n let defaultCss = this.Element?.defaultCss || {}\n let currentCss = this._store.css || {}\n return merge(defaultCss, currentCss)\n }\n\n get data(): ElementData {\n return this._store\n }\n\n set data(update: Omit<ElementData, 'id' | 'type'>) {\n this._store = { ...this.data, ...update }\n }\n\n setData = (update: Omit<ElementData, 'id' | 'type'>) => {\n this.data = Object.assign(this._store, update)\n this.triggerUpdate()\n return this.data\n }\n\n getSnapShot = () => this.data\n\n triggerUpdate = () => {\n this.emit(this.data)\n }\n}\n\nexport class Weaverse extends EventEmitter {\n contentRootElement: HTMLElement | null = null\n static itemInstances = new Map()\n weaverseHost = 'https://studio.weaverse.io'\n weaverseVersion = ''\n projectId = ''\n isDesignMode = false\n isPreviewMode = false\n static stitchesInstance: Stitches | any\n studioBridge?: any\n\n declare static ItemConstructor: typeof WeaverseItemStore\n declare data: WeaverseProjectDataType\n declare platformType: PlatformTypeEnum\n static elementRegistry = new Map()\n\n static mediaBreakPoints: BreakPoints = {\n desktop: 'all',\n // max-width need to subtract 0.02px to prevent bug\n // ref: https://getbootstrap.com/docs/5.1/layout/breakpoints/#max-width\n mobile: '(max-width: 767.98px)',\n }\n\n constructor(params: WeaverseCoreParams) {\n super()\n Object.entries(params).forEach(([k, v]) => {\n let key = k as keyof typeof this\n this[key] = v || this[key]\n })\n this.initProject()\n Weaverse.initStitches()\n }\n\n getSnapShot = () => {\n return this.data\n }\n /**\n * Create new `WeaverseItemStore` instance for each item in the project.\n */\n initProject = () => {\n let { data } = this\n let itemInstances = this.itemInstances\n if (data?.items) {\n data.items.forEach((item) => {\n let itemInstance = itemInstances.get(item.id)\n if (itemInstance) {\n itemInstance.setData(item)\n } else {\n new Weaverse.ItemConstructor(item, this)\n }\n })\n }\n }\n\n get itemInstances() {\n return Weaverse.itemInstances\n }\n\n static initStitches = (externalConfig?: stitches.CreateStitches) => {\n Weaverse.stitchesInstance =\n Weaverse.stitchesInstance ||\n stitches.createStitches({\n prefix: 'weaverse',\n media: Weaverse.mediaBreakPoints,\n utils: stitchesUtils,\n ...externalConfig,\n })\n }\n\n get stitchesInstance() {\n return Weaverse.stitchesInstance\n }\n\n /**\n * Register the custom React Component to Weaverse, store it into Weaverse.elementRegistry\n */\n static registerElement(element: { type: string; [x: string]: any }) {\n if (element?.type) {\n if (!Weaverse.elementRegistry.has(element.type)) {\n Weaverse.elementRegistry.set(element?.type, element)\n }\n } else {\n console.error(\"Cannot register element without 'type'.\")\n }\n }\n\n get elementRegistry() {\n return Weaverse.elementRegistry\n }\n\n triggerUpdate = () => {\n // make new copy of data to trigger update\n this.data = { ...this.data }\n this.emit()\n }\n\n refreshAllItems() {\n this.itemInstances.forEach((item) => {\n item.triggerUpdate()\n })\n }\n\n /**\n * Reset the project data and re-initialize all items.\n * Used when we need to re-render the project with new data (like applying new template)\n * @param data {WeaverseProjectDataType}\n */\n setProjectData = (data: WeaverseProjectDataType) => {\n this.data = data\n this.initProject()\n }\n}\n","export let isReactNative = typeof navigator === 'object' && navigator.product === 'ReactNative'\nexport let isBrowser = typeof window !== 'undefined' && !isReactNative\nexport let isIframe = isBrowser && window.top !== window.self\n\n/**\n * Deep merge two objects.\n * @param target\n * @param source\n */\nexport function merge(target: Record<string, any>, source: Record<string, any>) {\n let t = { ...(target || {}) }\n // Iterate through `source` properties and if an `Object` set property to merge of `target` and `source` properties\n for (let key of Object.keys(source)) {\n if (source[key] instanceof Object && !Array.isArray(source[key])) {\n Object.assign(source[key], merge(t[key], source[key]))\n }\n }\n\n // Join `target` and modified `source`\n Object.assign(t || {}, source)\n return t\n}\n\nexport function loadScript(src: string) {\n return new Promise((resolve, reject) => {\n let currScript = document.querySelector(`script[src=\"${src}\"]`)\n if (currScript) {\n return resolve(true)\n }\n let script = document.createElement('script')\n script.src = src\n script.onload = resolve\n script.onerror = reject\n script.defer = true\n document.body.appendChild(script)\n })\n}\n","type AnyFunction = (...args: any[]) => any\n\nexport class EventEmitter {\n listeners: Set<AnyFunction>\n\n constructor() {\n this.listeners = new Set()\n }\n\n subscribe = (fn: AnyFunction) => {\n this.listeners.add(fn)\n return () => this.unsubscribe(fn)\n }\n\n unsubscribe = (fn: AnyFunction) => {\n this.listeners.delete(fn)\n }\n\n emit = (data?: any) => {\n this.listeners.forEach((fn) => {\n return fn(data)\n })\n }\n}\n","export let stitchesUtils = {\n m: (value: string) => ({\n margin: value,\n }),\n mt: (value: string) => ({\n marginTop: value,\n }),\n mr: (value: string) => ({\n marginRight: value,\n }),\n mb: (value: string) => ({\n marginBottom: value,\n }),\n ml: (value: string) => ({\n marginLeft: value,\n }),\n mx: (value: string) => ({\n marginLeft: value,\n marginRight: value,\n }),\n my: (value: string) => ({\n marginTop: value,\n marginBottom: value,\n }),\n size: (value: string) => ({\n width: value,\n height: value,\n }),\n px: (value: string) => ({\n paddingLeft: value,\n paddingRight: value,\n }),\n py: (value: string) => ({\n paddingTop: value,\n paddingBottom: value,\n }),\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/core.ts","../src/utils/index.ts","../src/utils/event-emitter.ts","../src/utils/stitches.ts"],"sourcesContent":["export * from './types'\nexport * from './core'\nexport * from './utils'\n","/*\n @weaverse/core is the core package of Weaverse SDKs, it contains the core logic of Weaverse.\n It is a singleton class that can be used to register item, store project data, trigger update on item or project data, etc.\n ---\n Licensed under MIT License.\n Source: https://github.com/weaverse/weaverse\n About Weaverse: https://weaverse.io\n*/\n\nimport * as stitches from '@stitches/core'\nimport type Stitches from '@stitches/core/types/stitches'\nimport type { RefObject } from 'react'\nimport type {\n BreakPoints,\n ElementCSS,\n ElementData,\n PlatformTypeEnum,\n WeaverseCoreParams,\n WeaverseProjectDataType,\n} from './types'\nimport { merge } from './utils'\nimport { EventEmitter } from './utils/event-emitter'\nimport { stitchesUtils } from './utils/stitches'\n\nexport class WeaverseItemStore extends EventEmitter {\n weaverse: Weaverse\n ref: RefObject<HTMLElement> = { current: null }\n _store: ElementData = { id: '', type: '' }\n stitchesClass = ''\n\n constructor(initialData: ElementData, weaverse: Weaverse) {\n super()\n let { type, id } = initialData || {}\n this.weaverse = weaverse\n if (id && type) {\n Weaverse.itemInstances.set(id, this)\n Object.assign(this._store, initialData)\n } else {\n throw new Error(`'id' and 'type' are required to create a new Weaverse item.`)\n }\n this._store.css = this.getDefaultCss()\n }\n\n get _id() {\n return this._store.id\n }\n\n get _element() {\n return this.ref.current\n }\n\n get Element() {\n return this.weaverse.elementRegistry.get(this._store.type)\n }\n\n getDefaultCss = (): ElementCSS => {\n let defaultCss = this.Element?.defaultCss || {}\n let currentCss = this._store.css || {}\n return merge(defaultCss, currentCss)\n }\n\n get data(): ElementData {\n return this._store\n }\n\n set data(update: Omit<ElementData, 'id' | 'type'>) {\n this._store = { ...this._store, ...update }\n }\n\n setData = (update: Omit<ElementData, 'id' | 'type'>) => {\n this.data = Object.assign(this._store, update)\n this.triggerUpdate()\n return this.data\n }\n\n getSnapShot = () => this.data\n\n triggerUpdate = () => {\n this.emit(this._store)\n }\n}\n\nexport class Weaverse extends EventEmitter {\n contentRootElement: HTMLElement | null = null\n static itemInstances = new Map()\n weaverseHost = 'https://studio.weaverse.io'\n weaverseVersion = ''\n projectId = ''\n isDesignMode = false\n isPreviewMode = false\n static stitchesInstance: Stitches | any\n studioBridge?: any\n\n declare static ItemConstructor: typeof WeaverseItemStore\n declare data: WeaverseProjectDataType\n declare platformType: PlatformTypeEnum\n static elementRegistry = new Map()\n\n static mediaBreakPoints: BreakPoints = {\n desktop: 'all',\n // max-width need to subtract 0.02px to prevent bug\n // ref: https://getbootstrap.com/docs/5.1/layout/breakpoints/#max-width\n mobile: '(max-width: 767.98px)',\n }\n\n constructor(params: WeaverseCoreParams) {\n super()\n Object.entries(params).forEach(([k, v]) => {\n let key = k as keyof typeof this\n this[key] = v || this[key]\n })\n this.initProject()\n Weaverse.initStitches()\n }\n\n getSnapShot = () => {\n return this.data\n }\n /**\n * Create new `WeaverseItemStore` instance for each item in the project.\n */\n initProject = () => {\n let { data } = this\n let itemInstances = Weaverse.itemInstances\n if (data?.items) {\n data.items.forEach((item) => {\n let itemInstance = itemInstances.get(item.id)\n if (itemInstance) {\n itemInstance.setData(item)\n } else {\n new Weaverse.ItemConstructor(item, this)\n }\n })\n }\n }\n\n get itemInstances() {\n return Weaverse.itemInstances\n }\n createItemInstance = (data: ElementData) => {\n return new Weaverse.ItemConstructor(data, this)\n }\n\n static initStitches = (externalConfig?: stitches.CreateStitches) => {\n Weaverse.stitchesInstance =\n Weaverse.stitchesInstance ||\n stitches.createStitches({\n prefix: 'weaverse',\n media: Weaverse.mediaBreakPoints,\n utils: stitchesUtils,\n ...externalConfig,\n })\n }\n\n get stitchesInstance() {\n return Weaverse.stitchesInstance\n }\n\n /**\n * Register the custom React Component to Weaverse, store it into Weaverse.elementRegistry\n */\n static registerElement(element: { type: string; [x: string]: any }) {\n if (element?.type) {\n if (!Weaverse.elementRegistry.has(element.type)) {\n Weaverse.elementRegistry.set(element?.type, element)\n }\n } else {\n console.error(\"Cannot register element without 'type'.\")\n }\n }\n\n get elementRegistry() {\n return Weaverse.elementRegistry\n }\n\n triggerUpdate = () => {\n // make new copy of data to trigger update\n this.data = { ...this.data }\n this.emit()\n }\n\n refreshAllItems() {\n Weaverse.itemInstances.forEach((item) => {\n item.triggerUpdate()\n })\n }\n\n /**\n * Reset the project data and re-initialize all items.\n * Used when we need to re-render the project with new data (like applying new template)\n * @param data {WeaverseProjectDataType}\n */\n setProjectData = (data: WeaverseProjectDataType) => {\n this.data = data\n this.initProject()\n }\n}\n","export let isReactNative = typeof navigator === 'object' && navigator.product === 'ReactNative'\nexport let isBrowser = typeof window !== 'undefined' && !isReactNative\nexport let isIframe = isBrowser && window.top !== window.self\n\n/**\n * Deep merge two objects.\n * @param target\n * @param source\n */\nexport function merge(target: Record<string, any>, source: Record<string, any>) {\n let t = { ...(target || {}) }\n // Iterate through `source` properties and if an `Object` set property to merge of `target` and `source` properties\n for (let key of Object.keys(source)) {\n if (source[key] instanceof Object && !Array.isArray(source[key])) {\n Object.assign(source[key], merge(t[key], source[key]))\n }\n }\n\n // Join `target` and modified `source`\n Object.assign(t || {}, source)\n return t\n}\n\nexport function loadScript(src: string) {\n return new Promise((resolve, reject) => {\n let currScript = document.querySelector(`script[src=\"${src}\"]`)\n if (currScript) {\n return resolve(true)\n }\n let script = document.createElement('script')\n script.src = src\n script.onload = resolve\n script.onerror = reject\n script.defer = true\n document.body.appendChild(script)\n })\n}\n","type AnyFunction = (...args: any[]) => any\n\nexport class EventEmitter {\n listeners: Set<AnyFunction>\n\n constructor() {\n this.listeners = new Set()\n }\n\n subscribe = (fn: AnyFunction) => {\n this.listeners.add(fn)\n return () => this.unsubscribe(fn)\n }\n\n unsubscribe = (fn: AnyFunction) => {\n this.listeners.delete(fn)\n }\n\n emit = (data?: any) => {\n this.listeners.forEach((fn) => {\n return fn(data)\n })\n }\n}\n","export let stitchesUtils = {\n m: (value: string) => ({\n margin: value,\n }),\n mt: (value: string) => ({\n marginTop: value,\n }),\n mr: (value: string) => ({\n marginRight: value,\n }),\n mb: (value: string) => ({\n marginBottom: value,\n }),\n ml: (value: string) => ({\n marginLeft: value,\n }),\n mx: (value: string) => ({\n marginLeft: value,\n marginRight: value,\n }),\n my: (value: string) => ({\n marginTop: value,\n marginBottom: value,\n }),\n size: (value: string) => ({\n width: value,\n height: value,\n }),\n px: (value: string) => ({\n paddingLeft: value,\n paddingRight: value,\n }),\n py: (value: string) => ({\n paddingTop: value,\n paddingBottom: value,\n }),\n}\n"],"mappings":"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","names":[]}
|
package/dist/index.mjs
CHANGED
|
@@ -100,7 +100,7 @@ var WeaverseItemStore = class extends EventEmitter {
|
|
|
100
100
|
let { type, id } = initialData || {};
|
|
101
101
|
this.weaverse = weaverse;
|
|
102
102
|
if (id && type) {
|
|
103
|
-
|
|
103
|
+
Weaverse.itemInstances.set(id, this);
|
|
104
104
|
Object.assign(this._store, initialData);
|
|
105
105
|
} else {
|
|
106
106
|
throw new Error(`'id' and 'type' are required to create a new Weaverse item.`);
|
|
@@ -125,7 +125,7 @@ var WeaverseItemStore = class extends EventEmitter {
|
|
|
125
125
|
return this._store;
|
|
126
126
|
}
|
|
127
127
|
set data(update) {
|
|
128
|
-
this._store = { ...this.
|
|
128
|
+
this._store = { ...this._store, ...update };
|
|
129
129
|
}
|
|
130
130
|
setData = (update) => {
|
|
131
131
|
this.data = Object.assign(this._store, update);
|
|
@@ -134,7 +134,7 @@ var WeaverseItemStore = class extends EventEmitter {
|
|
|
134
134
|
};
|
|
135
135
|
getSnapShot = () => this.data;
|
|
136
136
|
triggerUpdate = () => {
|
|
137
|
-
this.emit(this.
|
|
137
|
+
this.emit(this._store);
|
|
138
138
|
};
|
|
139
139
|
};
|
|
140
140
|
var Weaverse = class _Weaverse extends EventEmitter {
|
|
@@ -171,7 +171,7 @@ var Weaverse = class _Weaverse extends EventEmitter {
|
|
|
171
171
|
*/
|
|
172
172
|
initProject = () => {
|
|
173
173
|
let { data } = this;
|
|
174
|
-
let itemInstances =
|
|
174
|
+
let itemInstances = _Weaverse.itemInstances;
|
|
175
175
|
if (data?.items) {
|
|
176
176
|
data.items.forEach((item) => {
|
|
177
177
|
let itemInstance = itemInstances.get(item.id);
|
|
@@ -186,6 +186,9 @@ var Weaverse = class _Weaverse extends EventEmitter {
|
|
|
186
186
|
get itemInstances() {
|
|
187
187
|
return _Weaverse.itemInstances;
|
|
188
188
|
}
|
|
189
|
+
createItemInstance = (data) => {
|
|
190
|
+
return new _Weaverse.ItemConstructor(data, this);
|
|
191
|
+
};
|
|
189
192
|
static initStitches = (externalConfig) => {
|
|
190
193
|
_Weaverse.stitchesInstance = _Weaverse.stitchesInstance || stitches.createStitches({
|
|
191
194
|
prefix: "weaverse",
|
|
@@ -217,7 +220,7 @@ var Weaverse = class _Weaverse extends EventEmitter {
|
|
|
217
220
|
this.emit();
|
|
218
221
|
};
|
|
219
222
|
refreshAllItems() {
|
|
220
|
-
|
|
223
|
+
_Weaverse.itemInstances.forEach((item) => {
|
|
221
224
|
item.triggerUpdate();
|
|
222
225
|
});
|
|
223
226
|
}
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core.ts","../src/utils/index.ts","../src/utils/event-emitter.ts","../src/utils/stitches.ts"],"sourcesContent":["/*\n @weaverse/core is the core package of Weaverse SDKs, it contains the core logic of Weaverse.\n It is a singleton class that can be used to register item, store project data, trigger update on item or project data, etc.\n ---\n Licensed under MIT License.\n Source: https://github.com/weaverse/weaverse\n About Weaverse: https://weaverse.io\n*/\n\nimport * as stitches from '@stitches/core'\nimport type Stitches from '@stitches/core/types/stitches'\nimport type { RefObject } from 'react'\nimport type {\n BreakPoints,\n ElementCSS,\n ElementData,\n PlatformTypeEnum,\n WeaverseCoreParams,\n WeaverseProjectDataType,\n} from './types'\nimport { merge } from './utils'\nimport { EventEmitter } from './utils/event-emitter'\nimport { stitchesUtils } from './utils/stitches'\n\nexport class WeaverseItemStore extends EventEmitter {\n weaverse: Weaverse\n ref: RefObject<HTMLElement> = { current: null }\n _store: ElementData = { id: '', type: '' }\n stitchesClass = ''\n\n constructor(initialData: ElementData, weaverse: Weaverse) {\n super()\n let { type, id } = initialData || {}\n this.weaverse = weaverse\n if (id && type) {\n weaverse.itemInstances.set(id, this)\n Object.assign(this._store, initialData)\n } else {\n throw new Error(`'id' and 'type' are required to create a new Weaverse item.`)\n }\n this._store.css = this.getDefaultCss()\n }\n\n get _id() {\n return this._store.id\n }\n\n get _element() {\n return this.ref.current\n }\n\n get Element() {\n return this.weaverse.elementRegistry.get(this._store.type)\n }\n\n getDefaultCss = (): ElementCSS => {\n let defaultCss = this.Element?.defaultCss || {}\n let currentCss = this._store.css || {}\n return merge(defaultCss, currentCss)\n }\n\n get data(): ElementData {\n return this._store\n }\n\n set data(update: Omit<ElementData, 'id' | 'type'>) {\n this._store = { ...this.data, ...update }\n }\n\n setData = (update: Omit<ElementData, 'id' | 'type'>) => {\n this.data = Object.assign(this._store, update)\n this.triggerUpdate()\n return this.data\n }\n\n getSnapShot = () => this.data\n\n triggerUpdate = () => {\n this.emit(this.data)\n }\n}\n\nexport class Weaverse extends EventEmitter {\n contentRootElement: HTMLElement | null = null\n static itemInstances = new Map()\n weaverseHost = 'https://studio.weaverse.io'\n weaverseVersion = ''\n projectId = ''\n isDesignMode = false\n isPreviewMode = false\n static stitchesInstance: Stitches | any\n studioBridge?: any\n\n declare static ItemConstructor: typeof WeaverseItemStore\n declare data: WeaverseProjectDataType\n declare platformType: PlatformTypeEnum\n static elementRegistry = new Map()\n\n static mediaBreakPoints: BreakPoints = {\n desktop: 'all',\n // max-width need to subtract 0.02px to prevent bug\n // ref: https://getbootstrap.com/docs/5.1/layout/breakpoints/#max-width\n mobile: '(max-width: 767.98px)',\n }\n\n constructor(params: WeaverseCoreParams) {\n super()\n Object.entries(params).forEach(([k, v]) => {\n let key = k as keyof typeof this\n this[key] = v || this[key]\n })\n this.initProject()\n Weaverse.initStitches()\n }\n\n getSnapShot = () => {\n return this.data\n }\n /**\n * Create new `WeaverseItemStore` instance for each item in the project.\n */\n initProject = () => {\n let { data } = this\n let itemInstances = this.itemInstances\n if (data?.items) {\n data.items.forEach((item) => {\n let itemInstance = itemInstances.get(item.id)\n if (itemInstance) {\n itemInstance.setData(item)\n } else {\n new Weaverse.ItemConstructor(item, this)\n }\n })\n }\n }\n\n get itemInstances() {\n return Weaverse.itemInstances\n }\n\n static initStitches = (externalConfig?: stitches.CreateStitches) => {\n Weaverse.stitchesInstance =\n Weaverse.stitchesInstance ||\n stitches.createStitches({\n prefix: 'weaverse',\n media: Weaverse.mediaBreakPoints,\n utils: stitchesUtils,\n ...externalConfig,\n })\n }\n\n get stitchesInstance() {\n return Weaverse.stitchesInstance\n }\n\n /**\n * Register the custom React Component to Weaverse, store it into Weaverse.elementRegistry\n */\n static registerElement(element: { type: string; [x: string]: any }) {\n if (element?.type) {\n if (!Weaverse.elementRegistry.has(element.type)) {\n Weaverse.elementRegistry.set(element?.type, element)\n }\n } else {\n console.error(\"Cannot register element without 'type'.\")\n }\n }\n\n get elementRegistry() {\n return Weaverse.elementRegistry\n }\n\n triggerUpdate = () => {\n // make new copy of data to trigger update\n this.data = { ...this.data }\n this.emit()\n }\n\n refreshAllItems() {\n this.itemInstances.forEach((item) => {\n item.triggerUpdate()\n })\n }\n\n /**\n * Reset the project data and re-initialize all items.\n * Used when we need to re-render the project with new data (like applying new template)\n * @param data {WeaverseProjectDataType}\n */\n setProjectData = (data: WeaverseProjectDataType) => {\n this.data = data\n this.initProject()\n }\n}\n","export let isReactNative = typeof navigator === 'object' && navigator.product === 'ReactNative'\nexport let isBrowser = typeof window !== 'undefined' && !isReactNative\nexport let isIframe = isBrowser && window.top !== window.self\n\n/**\n * Deep merge two objects.\n * @param target\n * @param source\n */\nexport function merge(target: Record<string, any>, source: Record<string, any>) {\n let t = { ...(target || {}) }\n // Iterate through `source` properties and if an `Object` set property to merge of `target` and `source` properties\n for (let key of Object.keys(source)) {\n if (source[key] instanceof Object && !Array.isArray(source[key])) {\n Object.assign(source[key], merge(t[key], source[key]))\n }\n }\n\n // Join `target` and modified `source`\n Object.assign(t || {}, source)\n return t\n}\n\nexport function loadScript(src: string) {\n return new Promise((resolve, reject) => {\n let currScript = document.querySelector(`script[src=\"${src}\"]`)\n if (currScript) {\n return resolve(true)\n }\n let script = document.createElement('script')\n script.src = src\n script.onload = resolve\n script.onerror = reject\n script.defer = true\n document.body.appendChild(script)\n })\n}\n","type AnyFunction = (...args: any[]) => any\n\nexport class EventEmitter {\n listeners: Set<AnyFunction>\n\n constructor() {\n this.listeners = new Set()\n }\n\n subscribe = (fn: AnyFunction) => {\n this.listeners.add(fn)\n return () => this.unsubscribe(fn)\n }\n\n unsubscribe = (fn: AnyFunction) => {\n this.listeners.delete(fn)\n }\n\n emit = (data?: any) => {\n this.listeners.forEach((fn) => {\n return fn(data)\n })\n }\n}\n","export let stitchesUtils = {\n m: (value: string) => ({\n margin: value,\n }),\n mt: (value: string) => ({\n marginTop: value,\n }),\n mr: (value: string) => ({\n marginRight: value,\n }),\n mb: (value: string) => ({\n marginBottom: value,\n }),\n ml: (value: string) => ({\n marginLeft: value,\n }),\n mx: (value: string) => ({\n marginLeft: value,\n marginRight: value,\n }),\n my: (value: string) => ({\n marginTop: value,\n marginBottom: value,\n }),\n size: (value: string) => ({\n width: value,\n height: value,\n }),\n px: (value: string) => ({\n paddingLeft: value,\n paddingRight: value,\n }),\n py: (value: string) => ({\n paddingTop: value,\n paddingBottom: value,\n }),\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/core.ts","../src/utils/index.ts","../src/utils/event-emitter.ts","../src/utils/stitches.ts"],"sourcesContent":["/*\n @weaverse/core is the core package of Weaverse SDKs, it contains the core logic of Weaverse.\n It is a singleton class that can be used to register item, store project data, trigger update on item or project data, etc.\n ---\n Licensed under MIT License.\n Source: https://github.com/weaverse/weaverse\n About Weaverse: https://weaverse.io\n*/\n\nimport * as stitches from '@stitches/core'\nimport type Stitches from '@stitches/core/types/stitches'\nimport type { RefObject } from 'react'\nimport type {\n BreakPoints,\n ElementCSS,\n ElementData,\n PlatformTypeEnum,\n WeaverseCoreParams,\n WeaverseProjectDataType,\n} from './types'\nimport { merge } from './utils'\nimport { EventEmitter } from './utils/event-emitter'\nimport { stitchesUtils } from './utils/stitches'\n\nexport class WeaverseItemStore extends EventEmitter {\n weaverse: Weaverse\n ref: RefObject<HTMLElement> = { current: null }\n _store: ElementData = { id: '', type: '' }\n stitchesClass = ''\n\n constructor(initialData: ElementData, weaverse: Weaverse) {\n super()\n let { type, id } = initialData || {}\n this.weaverse = weaverse\n if (id && type) {\n Weaverse.itemInstances.set(id, this)\n Object.assign(this._store, initialData)\n } else {\n throw new Error(`'id' and 'type' are required to create a new Weaverse item.`)\n }\n this._store.css = this.getDefaultCss()\n }\n\n get _id() {\n return this._store.id\n }\n\n get _element() {\n return this.ref.current\n }\n\n get Element() {\n return this.weaverse.elementRegistry.get(this._store.type)\n }\n\n getDefaultCss = (): ElementCSS => {\n let defaultCss = this.Element?.defaultCss || {}\n let currentCss = this._store.css || {}\n return merge(defaultCss, currentCss)\n }\n\n get data(): ElementData {\n return this._store\n }\n\n set data(update: Omit<ElementData, 'id' | 'type'>) {\n this._store = { ...this._store, ...update }\n }\n\n setData = (update: Omit<ElementData, 'id' | 'type'>) => {\n this.data = Object.assign(this._store, update)\n this.triggerUpdate()\n return this.data\n }\n\n getSnapShot = () => this.data\n\n triggerUpdate = () => {\n this.emit(this._store)\n }\n}\n\nexport class Weaverse extends EventEmitter {\n contentRootElement: HTMLElement | null = null\n static itemInstances = new Map()\n weaverseHost = 'https://studio.weaverse.io'\n weaverseVersion = ''\n projectId = ''\n isDesignMode = false\n isPreviewMode = false\n static stitchesInstance: Stitches | any\n studioBridge?: any\n\n declare static ItemConstructor: typeof WeaverseItemStore\n declare data: WeaverseProjectDataType\n declare platformType: PlatformTypeEnum\n static elementRegistry = new Map()\n\n static mediaBreakPoints: BreakPoints = {\n desktop: 'all',\n // max-width need to subtract 0.02px to prevent bug\n // ref: https://getbootstrap.com/docs/5.1/layout/breakpoints/#max-width\n mobile: '(max-width: 767.98px)',\n }\n\n constructor(params: WeaverseCoreParams) {\n super()\n Object.entries(params).forEach(([k, v]) => {\n let key = k as keyof typeof this\n this[key] = v || this[key]\n })\n this.initProject()\n Weaverse.initStitches()\n }\n\n getSnapShot = () => {\n return this.data\n }\n /**\n * Create new `WeaverseItemStore` instance for each item in the project.\n */\n initProject = () => {\n let { data } = this\n let itemInstances = Weaverse.itemInstances\n if (data?.items) {\n data.items.forEach((item) => {\n let itemInstance = itemInstances.get(item.id)\n if (itemInstance) {\n itemInstance.setData(item)\n } else {\n new Weaverse.ItemConstructor(item, this)\n }\n })\n }\n }\n\n get itemInstances() {\n return Weaverse.itemInstances\n }\n createItemInstance = (data: ElementData) => {\n return new Weaverse.ItemConstructor(data, this)\n }\n\n static initStitches = (externalConfig?: stitches.CreateStitches) => {\n Weaverse.stitchesInstance =\n Weaverse.stitchesInstance ||\n stitches.createStitches({\n prefix: 'weaverse',\n media: Weaverse.mediaBreakPoints,\n utils: stitchesUtils,\n ...externalConfig,\n })\n }\n\n get stitchesInstance() {\n return Weaverse.stitchesInstance\n }\n\n /**\n * Register the custom React Component to Weaverse, store it into Weaverse.elementRegistry\n */\n static registerElement(element: { type: string; [x: string]: any }) {\n if (element?.type) {\n if (!Weaverse.elementRegistry.has(element.type)) {\n Weaverse.elementRegistry.set(element?.type, element)\n }\n } else {\n console.error(\"Cannot register element without 'type'.\")\n }\n }\n\n get elementRegistry() {\n return Weaverse.elementRegistry\n }\n\n triggerUpdate = () => {\n // make new copy of data to trigger update\n this.data = { ...this.data }\n this.emit()\n }\n\n refreshAllItems() {\n Weaverse.itemInstances.forEach((item) => {\n item.triggerUpdate()\n })\n }\n\n /**\n * Reset the project data and re-initialize all items.\n * Used when we need to re-render the project with new data (like applying new template)\n * @param data {WeaverseProjectDataType}\n */\n setProjectData = (data: WeaverseProjectDataType) => {\n this.data = data\n this.initProject()\n }\n}\n","export let isReactNative = typeof navigator === 'object' && navigator.product === 'ReactNative'\nexport let isBrowser = typeof window !== 'undefined' && !isReactNative\nexport let isIframe = isBrowser && window.top !== window.self\n\n/**\n * Deep merge two objects.\n * @param target\n * @param source\n */\nexport function merge(target: Record<string, any>, source: Record<string, any>) {\n let t = { ...(target || {}) }\n // Iterate through `source` properties and if an `Object` set property to merge of `target` and `source` properties\n for (let key of Object.keys(source)) {\n if (source[key] instanceof Object && !Array.isArray(source[key])) {\n Object.assign(source[key], merge(t[key], source[key]))\n }\n }\n\n // Join `target` and modified `source`\n Object.assign(t || {}, source)\n return t\n}\n\nexport function loadScript(src: string) {\n return new Promise((resolve, reject) => {\n let currScript = document.querySelector(`script[src=\"${src}\"]`)\n if (currScript) {\n return resolve(true)\n }\n let script = document.createElement('script')\n script.src = src\n script.onload = resolve\n script.onerror = reject\n script.defer = true\n document.body.appendChild(script)\n })\n}\n","type AnyFunction = (...args: any[]) => any\n\nexport class EventEmitter {\n listeners: Set<AnyFunction>\n\n constructor() {\n this.listeners = new Set()\n }\n\n subscribe = (fn: AnyFunction) => {\n this.listeners.add(fn)\n return () => this.unsubscribe(fn)\n }\n\n unsubscribe = (fn: AnyFunction) => {\n this.listeners.delete(fn)\n }\n\n emit = (data?: any) => {\n this.listeners.forEach((fn) => {\n return fn(data)\n })\n }\n}\n","export let stitchesUtils = {\n m: (value: string) => ({\n margin: value,\n }),\n mt: (value: string) => ({\n marginTop: value,\n }),\n mr: (value: string) => ({\n marginRight: value,\n }),\n mb: (value: string) => ({\n marginBottom: value,\n }),\n ml: (value: string) => ({\n marginLeft: value,\n }),\n mx: (value: string) => ({\n marginLeft: value,\n marginRight: value,\n }),\n my: (value: string) => ({\n marginTop: value,\n marginBottom: value,\n }),\n size: (value: string) => ({\n width: value,\n height: value,\n }),\n px: (value: string) => ({\n paddingLeft: value,\n paddingRight: value,\n }),\n py: (value: string) => ({\n paddingTop: value,\n paddingBottom: value,\n }),\n}\n"],"mappings":"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","names":[]}
|