@weaverse/core 1.0.22 → 1.0.24

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 CHANGED
@@ -61,10 +61,10 @@ declare class WeaverseItemStore {
61
61
  weaverse: Weaverse;
62
62
  stitchesClass: string;
63
63
  _data: ElementData;
64
- _flags: ElementFlags;
65
64
  constructor(itemData: ElementData, weaverse: Weaverse);
66
65
  get _id(): string;
67
66
  get _element(): HTMLElement | null;
67
+ get _flags(): Partial<Record<FlagType, boolean>>;
68
68
  get Element(): WeaverseElement | undefined;
69
69
  set data(data: Omit<ElementData, "id" | "type">);
70
70
  get data(): ElementData;
@@ -91,11 +91,17 @@ declare class Weaverse {
91
91
  * @type {string}
92
92
  */
93
93
  weaverseHost: string;
94
+ /**
95
+ * Weaverse version, it can be used to load the correct version of Weaverse SDK
96
+ * @type {string}
97
+ */
98
+ weaverseVersion: string;
94
99
  /**
95
100
  * Weaverse project key to access project data via API
96
101
  * @type {string}
97
102
  */
98
103
  projectId: string;
104
+ pageId: string;
99
105
  /**
100
106
  * Weaverse project data, by default, user can provide project data via React Component:
101
107
  * <WeaverseRoot data={data} /> it will be used to server-side rendering
@@ -146,8 +152,8 @@ declare class Weaverse {
146
152
  * @param elementSchemas {Array<ElementSchema>} List of element schemas
147
153
  * @param platformType {PlatformTypeEnum} Check the platform, shopify-section or react-ssr(hydrogen)
148
154
  */
149
- constructor({ weaverseHost, projectId, data, mediaBreakPoints, isDesignMode, ssrMode, elementSchemas, platformType, }?: WeaverseType);
150
- init({ weaverseHost, elementSchemas, platformType, projectId, data, mediaBreakPoints, isDesignMode, ssrMode, }?: WeaverseType): void;
155
+ constructor({ weaverseHost, weaverseVersion, projectId, data, mediaBreakPoints, isDesignMode, ssrMode, elementSchemas, platformType, pageId, }?: WeaverseType);
156
+ init({ weaverseHost, weaverseVersion, elementSchemas, platformType, projectId, data, mediaBreakPoints, isDesignMode, ssrMode, pageId, }?: WeaverseType): void;
151
157
  /**
152
158
  * Register the custom React Component to Weaverse, store it into Weaverse.elementInstances
153
159
  * @param element {WeaverseElement} custom React Component
@@ -178,7 +184,9 @@ type PlatformTypeEnum = "shopify-section" | "shopify-hydrogen" | "nextjs";
178
184
  interface WeaverseType {
179
185
  mediaBreakPoints?: BreakPoints;
180
186
  weaverseHost?: string;
187
+ weaverseVersion?: string;
181
188
  projectId?: string;
189
+ pageId?: string;
182
190
  data?: WeaverseProjectDataType;
183
191
  isDesignMode?: boolean;
184
192
  ssrMode?: boolean;
@@ -202,7 +210,7 @@ interface ElementCatalog {
202
210
  interface ElementDataInCatalog extends Omit<ElementData, "id"> {
203
211
  id: string | number;
204
212
  }
205
- type FlagType = "draggable" | "resizable" | "sortable" | "ignoreShortcutKeys" | "hasContextMenu" | "isSortableContext";
213
+ type FlagType = "draggable" | "resizable" | "sortable" | "ignoreShortcutKeys" | "hasContextMenu" | "isSortableContext" | "mustHaveChildren";
206
214
  type ElementFlags = Partial<Record<FlagType, boolean>>;
207
215
  type ChildElementSelector = string | string[];
208
216
  interface ChildElement {
package/dist/index.js CHANGED
@@ -121,7 +121,6 @@ var WeaverseItemStore = class {
121
121
  };
122
122
  this.stitchesClass = "";
123
123
  this._data = { id: "", type: "" };
124
- this._flags = {};
125
124
  this.setData = (data) => {
126
125
  this.data = Object.assign(this.data, data);
127
126
  this.triggerUpdate();
@@ -151,6 +150,9 @@ var WeaverseItemStore = class {
151
150
  get _element() {
152
151
  return this.ref.current;
153
152
  }
153
+ get _flags() {
154
+ return this.Element?.schema?.flags || {};
155
+ }
154
156
  get Element() {
155
157
  return this.weaverse.elementInstances.get(this._data.type);
156
158
  }
@@ -179,13 +181,15 @@ var Weaverse = class {
179
181
  */
180
182
  constructor({
181
183
  weaverseHost,
184
+ weaverseVersion,
182
185
  projectId,
183
186
  data,
184
187
  mediaBreakPoints,
185
188
  isDesignMode,
186
189
  ssrMode,
187
190
  elementSchemas,
188
- platformType
191
+ platformType,
192
+ pageId
189
193
  } = {}) {
190
194
  /**
191
195
  * For storing, registering element React component from Weaverse or created by user/developer
@@ -199,12 +203,18 @@ var Weaverse = class {
199
203
  * Weaverse base URL that can provide by user/developer. for local development, use localhost:3000
200
204
  * @type {string}
201
205
  */
202
- this.weaverseHost = process.env.NODE_ENV === "development" ? "http://localhost:3000" : "https://studio.weaverse.io";
206
+ this.weaverseHost = "https://studio.weaverse.io";
207
+ /**
208
+ * Weaverse version, it can be used to load the correct version of Weaverse SDK
209
+ * @type {string}
210
+ */
211
+ this.weaverseVersion = "";
203
212
  /**
204
213
  * Weaverse project key to access project data via API
205
214
  * @type {string}
206
215
  */
207
216
  this.projectId = "";
217
+ this.pageId = "";
208
218
  /**
209
219
  * Weaverse project data, by default, user can provide project data via React Component:
210
220
  * <WeaverseRoot data={data} /> it will be used to server-side rendering
@@ -253,21 +263,36 @@ var Weaverse = class {
253
263
  utils: stitchesUtils
254
264
  });
255
265
  };
256
- this.init({ weaverseHost, projectId, data, platformType, mediaBreakPoints, isDesignMode, ssrMode, elementSchemas });
266
+ this.init({
267
+ weaverseHost,
268
+ weaverseVersion,
269
+ projectId,
270
+ data,
271
+ platformType,
272
+ mediaBreakPoints,
273
+ isDesignMode,
274
+ ssrMode,
275
+ elementSchemas,
276
+ pageId
277
+ });
257
278
  }
258
279
  init({
259
280
  weaverseHost,
281
+ weaverseVersion,
260
282
  elementSchemas,
261
283
  platformType,
262
284
  projectId,
263
285
  data,
264
286
  mediaBreakPoints,
265
287
  isDesignMode,
266
- ssrMode
288
+ ssrMode,
289
+ pageId
267
290
  } = {}) {
268
291
  this.elementSchemas = elementSchemas || this.elementSchemas;
269
292
  this.weaverseHost = weaverseHost || this.weaverseHost;
293
+ this.weaverseVersion = weaverseVersion || this.weaverseVersion;
270
294
  this.projectId = projectId || this.projectId;
295
+ this.pageId = pageId || this.pageId;
271
296
  this.mediaBreakPoints = mediaBreakPoints || this.mediaBreakPoints;
272
297
  this.isDesignMode = isDesignMode || this.isDesignMode;
273
298
  this.ssrMode = ssrMode || this.ssrMode;
@@ -283,11 +308,12 @@ var Weaverse = class {
283
308
  registerElement(element) {
284
309
  if (element?.type) {
285
310
  if (this.elementInstances.has(element.type)) {
286
- throw new Error(`Weaverse: Element '${element.type}' already registered`);
311
+ console.error(`Weaverse: Element '${element.type}' already registered`);
312
+ return;
287
313
  }
288
314
  this.elementInstances.set(element?.type, element);
289
315
  } else {
290
- throw new Error("Weaverse: registerElement: `type` is required");
316
+ console.error("Weaverse: registerElement: `type` is required");
291
317
  }
292
318
  }
293
319
  subscribe(fn) {
package/dist/index.mjs CHANGED
@@ -79,7 +79,6 @@ var WeaverseItemStore = class {
79
79
  };
80
80
  this.stitchesClass = "";
81
81
  this._data = { id: "", type: "" };
82
- this._flags = {};
83
82
  this.setData = (data) => {
84
83
  this.data = Object.assign(this.data, data);
85
84
  this.triggerUpdate();
@@ -109,6 +108,9 @@ var WeaverseItemStore = class {
109
108
  get _element() {
110
109
  return this.ref.current;
111
110
  }
111
+ get _flags() {
112
+ return this.Element?.schema?.flags || {};
113
+ }
112
114
  get Element() {
113
115
  return this.weaverse.elementInstances.get(this._data.type);
114
116
  }
@@ -137,13 +139,15 @@ var Weaverse = class {
137
139
  */
138
140
  constructor({
139
141
  weaverseHost,
142
+ weaverseVersion,
140
143
  projectId,
141
144
  data,
142
145
  mediaBreakPoints,
143
146
  isDesignMode,
144
147
  ssrMode,
145
148
  elementSchemas,
146
- platformType
149
+ platformType,
150
+ pageId
147
151
  } = {}) {
148
152
  /**
149
153
  * For storing, registering element React component from Weaverse or created by user/developer
@@ -157,12 +161,18 @@ var Weaverse = class {
157
161
  * Weaverse base URL that can provide by user/developer. for local development, use localhost:3000
158
162
  * @type {string}
159
163
  */
160
- this.weaverseHost = process.env.NODE_ENV === "development" ? "http://localhost:3000" : "https://studio.weaverse.io";
164
+ this.weaverseHost = "https://studio.weaverse.io";
165
+ /**
166
+ * Weaverse version, it can be used to load the correct version of Weaverse SDK
167
+ * @type {string}
168
+ */
169
+ this.weaverseVersion = "";
161
170
  /**
162
171
  * Weaverse project key to access project data via API
163
172
  * @type {string}
164
173
  */
165
174
  this.projectId = "";
175
+ this.pageId = "";
166
176
  /**
167
177
  * Weaverse project data, by default, user can provide project data via React Component:
168
178
  * <WeaverseRoot data={data} /> it will be used to server-side rendering
@@ -211,21 +221,36 @@ var Weaverse = class {
211
221
  utils: stitchesUtils
212
222
  });
213
223
  };
214
- this.init({ weaverseHost, projectId, data, platformType, mediaBreakPoints, isDesignMode, ssrMode, elementSchemas });
224
+ this.init({
225
+ weaverseHost,
226
+ weaverseVersion,
227
+ projectId,
228
+ data,
229
+ platformType,
230
+ mediaBreakPoints,
231
+ isDesignMode,
232
+ ssrMode,
233
+ elementSchemas,
234
+ pageId
235
+ });
215
236
  }
216
237
  init({
217
238
  weaverseHost,
239
+ weaverseVersion,
218
240
  elementSchemas,
219
241
  platformType,
220
242
  projectId,
221
243
  data,
222
244
  mediaBreakPoints,
223
245
  isDesignMode,
224
- ssrMode
246
+ ssrMode,
247
+ pageId
225
248
  } = {}) {
226
249
  this.elementSchemas = elementSchemas || this.elementSchemas;
227
250
  this.weaverseHost = weaverseHost || this.weaverseHost;
251
+ this.weaverseVersion = weaverseVersion || this.weaverseVersion;
228
252
  this.projectId = projectId || this.projectId;
253
+ this.pageId = pageId || this.pageId;
229
254
  this.mediaBreakPoints = mediaBreakPoints || this.mediaBreakPoints;
230
255
  this.isDesignMode = isDesignMode || this.isDesignMode;
231
256
  this.ssrMode = ssrMode || this.ssrMode;
@@ -241,11 +266,12 @@ var Weaverse = class {
241
266
  registerElement(element) {
242
267
  if (element?.type) {
243
268
  if (this.elementInstances.has(element.type)) {
244
- throw new Error(`Weaverse: Element '${element.type}' already registered`);
269
+ console.error(`Weaverse: Element '${element.type}' already registered`);
270
+ return;
245
271
  }
246
272
  this.elementInstances.set(element?.type, element);
247
273
  } else {
248
- throw new Error("Weaverse: registerElement: `type` is required");
274
+ console.error("Weaverse: registerElement: `type` is required");
249
275
  }
250
276
  }
251
277
  subscribe(fn) {
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.0.22",
2
+ "version": "1.0.24",
3
3
  "license": "MIT",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",