@weaverse/core 0.6.3 → 0.6.6

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
@@ -1,4 +1,5 @@
1
1
  import Stitches from '@stitches/core/types/stitches';
2
+ import { RefObject } from 'react';
2
3
 
3
4
  declare type TODO = any;
4
5
  declare type WeaverseElementMap = {
@@ -8,13 +9,23 @@ declare type WeaverseElement = {
8
9
  Component: TODO;
9
10
  schema: WeaverseElementSchema;
10
11
  };
12
+ declare type WeaverseElementCatalog = {
13
+ name: string;
14
+ icon?: string;
15
+ group?: 'essential' | 'composition' | 'other';
16
+ };
11
17
  declare type WeaverseElementSchema = {
12
18
  title?: string;
13
19
  type: string;
14
20
  settings?: WeaverseElementInput[];
15
21
  styles?: WeaverseElementInput[];
16
22
  toolbar?: TODO;
17
- data?: TODO;
23
+ data?: WeaverseElementData;
24
+ catalog?: WeaverseElementCatalog;
25
+ };
26
+ declare type WeaverseElementData = {
27
+ id: string;
28
+ [key: string]: any;
18
29
  };
19
30
  declare type WeaverseElementInput = {
20
31
  label?: string;
@@ -29,6 +40,7 @@ declare type WeaverseElementInput = {
29
40
  declare global {
30
41
  interface Window {
31
42
  WeaverseStudioBridge: TODO;
43
+ weaverseShopifyProducts: TODO;
32
44
  }
33
45
  }
34
46
 
@@ -46,16 +58,13 @@ interface ProjectDataType {
46
58
  items: ProjectDataItemType[];
47
59
  rootId: string | number;
48
60
  }
49
- declare type MediaBreakpoints = {
50
- tablet: string;
51
- mobile: string;
52
- };
53
61
  declare type WeaverseType = {
54
- [key: string]: any;
62
+ mediaBreakPoints?: any;
55
63
  appUrl?: string;
56
64
  projectKey?: string;
57
65
  projectData?: ProjectDataType;
58
66
  isDesignMode?: boolean;
67
+ ssrMode?: boolean;
59
68
  };
60
69
  /**
61
70
  * WeaverseItemStore is a store for Weaverse item, it can be used to subscribe/update the item data
@@ -76,8 +85,9 @@ declare type WeaverseType = {
76
85
  */
77
86
  declare class WeaverseItemStore {
78
87
  listeners: Set<any>;
79
- ref: any;
88
+ ref: RefObject<HTMLElement>;
80
89
  weaverse: Weaverse;
90
+ stitchesClass: string;
81
91
  constructor(itemData: any, weaverse: Weaverse);
82
92
  _data: any;
83
93
  get Element(): WeaverseElement;
@@ -126,6 +136,11 @@ declare class Weaverse {
126
136
  * @type {boolean}
127
137
  */
128
138
  isDesignMode: boolean;
139
+ /**
140
+ * Use in element to optionally render special HTML for hydration
141
+ * @type {boolean}
142
+ */
143
+ ssrMode: boolean;
129
144
  /**
130
145
  * stitches instance for handling CSS stylesheet, media, theme for Weaverse project
131
146
  */
@@ -142,8 +157,10 @@ declare class Weaverse {
142
157
  * @param projectKey {string} Weaverse project key to access project data via API
143
158
  * @param projectData {ProjectDataType} Weaverse project data, by default, user can provide project data via React Component.
144
159
  * @param mediaBreakPoints {object} Pass down custom media query breakpoints or just use the default.
160
+ * @param isDesignMode {boolean} check whether the sdk is isDesignMode or not
161
+ * @param ssrMode {boolean} Use in element to optionally render special HTML for hydration
145
162
  */
146
- constructor({ appUrl, projectKey, projectData, mediaBreakPoints, isDesignMode }?: WeaverseType);
163
+ constructor({ appUrl, projectKey, projectData, mediaBreakPoints, isDesignMode, ssrMode }?: WeaverseType);
147
164
  /**
148
165
  * register the custom React Component to Weaverse, store it into Weaverse.elementInstances
149
166
  * @param element {WeaverseElement} custom React Component
@@ -151,7 +168,6 @@ declare class Weaverse {
151
168
  registerElement(element: WeaverseElement): void;
152
169
  init(): void;
153
170
  initStitches: () => void;
154
- loadStudio(): void;
155
171
  subscribe(fn: any): void;
156
172
  unsubscribe(fn: any): void;
157
173
  triggerUpdate(): void;
@@ -177,4 +193,4 @@ declare const isReactNative: boolean;
177
193
  declare const isBrowser: boolean;
178
194
  declare const isIframe: boolean;
179
195
 
180
- export { MediaBreakpoints, ProjectDataItemType, ProjectDataType, TODO, Weaverse, WeaverseElement, WeaverseElementInput, WeaverseElementMap, WeaverseElementSchema, WeaverseItemStore, WeaverseType, isBrowser, isIframe, isReactNative };
196
+ export { ProjectDataItemType, ProjectDataType, TODO, Weaverse, WeaverseElement, 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 = {}, weaverse) {
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,7 +89,7 @@ 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";
@@ -104,6 +100,7 @@ var _Weaverse = class {
104
100
  };
105
101
  this.listeners = /* @__PURE__ */ new Set();
106
102
  this.isDesignMode = false;
103
+ this.ssrMode = false;
107
104
  this.mediaBreakPoints = {
108
105
  desktop: "all",
109
106
  mobile: "(max-width: 767.98px)"
@@ -111,22 +108,14 @@ var _Weaverse = class {
111
108
  this.initStitches = () => {
112
109
  this.stitchesInstance = stitches.createStitches({
113
110
  prefix: "weaverse",
114
- media: this.mediaBreakPoints,
115
- theme: {
116
- sizes: {
117
- rowSize: "48px",
118
- columns: 16
119
- },
120
- space: {
121
- gap: "8px"
122
- }
123
- }
111
+ media: this.mediaBreakPoints
124
112
  });
125
113
  };
126
114
  this.appUrl = appUrl || this.appUrl;
127
115
  this.projectKey = projectKey || this.projectKey;
128
116
  this.mediaBreakPoints = mediaBreakPoints || this.mediaBreakPoints;
129
117
  this.isDesignMode = isDesignMode || this.isDesignMode;
118
+ this.ssrMode = ssrMode || this.ssrMode;
130
119
  projectData && (this.projectData = projectData);
131
120
  this.init();
132
121
  }
@@ -140,27 +129,9 @@ var _Weaverse = class {
140
129
  }
141
130
  init() {
142
131
  this.initStitches();
143
- this.loadStudio();
144
132
  this.initProjectItemData();
145
133
  this.updateProjectData();
146
134
  }
147
- loadStudio() {
148
- if (this.isDesignMode && isIframe) {
149
- let initStudio = () => {
150
- this.studioBridge = new window.WeaverseStudioBridge(this);
151
- this.triggerUpdate();
152
- };
153
- if (!window.WeaverseStudioBridge) {
154
- const studioBridgeScript = document.createElement("script");
155
- studioBridgeScript.src = `${this.appUrl}/assets/studio/studio-bridge.js`;
156
- studioBridgeScript.type = "module";
157
- studioBridgeScript.onload = initStudio;
158
- document.body.appendChild(studioBridgeScript);
159
- } else {
160
- initStudio();
161
- }
162
- }
163
- }
164
135
  subscribe(fn) {
165
136
  this.listeners.add(fn);
166
137
  }
@@ -203,6 +174,11 @@ var _Weaverse = class {
203
174
  };
204
175
  var Weaverse = _Weaverse;
205
176
  Weaverse.WeaverseItemStore = WeaverseItemStore;
177
+
178
+ // src/utils/index.ts
179
+ var isReactNative = typeof navigator === "object" && navigator.product === "ReactNative";
180
+ var isBrowser = typeof window !== "undefined" && !isReactNative;
181
+ var isIframe = isBrowser && window.top !== window.self;
206
182
  // Annotate the CommonJS export names for ESM import in node:
207
183
  0 && (module.exports = {
208
184
  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 = {}, weaverse) {
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,7 +60,7 @@ 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";
@@ -75,6 +71,7 @@ var _Weaverse = class {
75
71
  };
76
72
  this.listeners = /* @__PURE__ */ new Set();
77
73
  this.isDesignMode = false;
74
+ this.ssrMode = false;
78
75
  this.mediaBreakPoints = {
79
76
  desktop: "all",
80
77
  mobile: "(max-width: 767.98px)"
@@ -82,22 +79,14 @@ var _Weaverse = class {
82
79
  this.initStitches = () => {
83
80
  this.stitchesInstance = stitches.createStitches({
84
81
  prefix: "weaverse",
85
- media: this.mediaBreakPoints,
86
- theme: {
87
- sizes: {
88
- rowSize: "48px",
89
- columns: 16
90
- },
91
- space: {
92
- gap: "8px"
93
- }
94
- }
82
+ media: this.mediaBreakPoints
95
83
  });
96
84
  };
97
85
  this.appUrl = appUrl || this.appUrl;
98
86
  this.projectKey = projectKey || this.projectKey;
99
87
  this.mediaBreakPoints = mediaBreakPoints || this.mediaBreakPoints;
100
88
  this.isDesignMode = isDesignMode || this.isDesignMode;
89
+ this.ssrMode = ssrMode || this.ssrMode;
101
90
  projectData && (this.projectData = projectData);
102
91
  this.init();
103
92
  }
@@ -111,27 +100,9 @@ var _Weaverse = class {
111
100
  }
112
101
  init() {
113
102
  this.initStitches();
114
- this.loadStudio();
115
103
  this.initProjectItemData();
116
104
  this.updateProjectData();
117
105
  }
118
- loadStudio() {
119
- if (this.isDesignMode && isIframe) {
120
- let initStudio = () => {
121
- this.studioBridge = new window.WeaverseStudioBridge(this);
122
- this.triggerUpdate();
123
- };
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();
132
- }
133
- }
134
- }
135
106
  subscribe(fn) {
136
107
  this.listeners.add(fn);
137
108
  }
@@ -174,6 +145,11 @@ var _Weaverse = class {
174
145
  };
175
146
  var Weaverse = _Weaverse;
176
147
  Weaverse.WeaverseItemStore = WeaverseItemStore;
148
+
149
+ // src/utils/index.ts
150
+ var isReactNative = typeof navigator === "object" && navigator.product === "ReactNative";
151
+ var isBrowser = typeof window !== "undefined" && !isReactNative;
152
+ var isIframe = isBrowser && window.top !== window.self;
177
153
  export {
178
154
  Weaverse,
179
155
  WeaverseItemStore,
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.6.3",
2
+ "version": "0.6.6",
3
3
  "license": "MIT",
4
4
  "main": "dist/index.js",
5
5
  "typings": "dist/index.d.ts",