@weaverse/core 2.2.5 → 2.3.0

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 CHANGED
@@ -145,7 +145,6 @@ interface ElementCSS {
145
145
  type AdvancedGroupType = "border" | "alignment" | "background" | "dimensions" | "spacing" | "typography" | "visibility" | "shadows-and-effects" | "layout-background";
146
146
  interface BasicInput<ConfigsType = AdditionalInputConfigs> {
147
147
  type: InputType;
148
- label?: string;
149
148
  /**
150
149
  * The key of the value of the element data or styles
151
150
  * @example
@@ -154,7 +153,8 @@ interface BasicInput<ConfigsType = AdditionalInputConfigs> {
154
153
  * // Bind to `element.css["@desktop"].backgroundColor`
155
154
  * name: "backgroundColor"
156
155
  */
157
- name?: string;
156
+ name: string;
157
+ label?: string;
158
158
  /**
159
159
  * Additional options for inputs that require more configuration
160
160
  */
@@ -172,17 +172,26 @@ interface BasicInput<ConfigsType = AdditionalInputConfigs> {
172
172
  * `imagesPerRow.gt.1`
173
173
  */
174
174
  condition?: string;
175
- defaultValue?: string | number | boolean | WeaverseImage;
175
+ defaultValue?: string | number | boolean | Partial<WeaverseImage>;
176
176
  placeholder?: string;
177
177
  helpText?: string;
178
178
  }
179
+ type WeaverseResourcePickerData = {
180
+ id: number;
181
+ handle: string;
182
+ };
183
+ type WeaverseImage = {
184
+ id: string;
185
+ url: string;
186
+ alt: string;
187
+ width: number;
188
+ height: number;
189
+ };
179
190
  type AdditionalInputConfigs = SelectInputConfigs | ToggleGroupConfigs | RangeInputConfigs;
180
191
  interface SelectInputConfigs {
181
192
  options?: {
182
193
  value: string;
183
194
  label: string;
184
- icon?: string;
185
- weight?: string;
186
195
  }[];
187
196
  }
188
197
  interface ToggleGroupConfigs {
@@ -199,14 +208,8 @@ interface RangeInputConfigs {
199
208
  step?: number;
200
209
  unit?: string;
201
210
  }
202
- type WeaverseImage = {
203
- id: string;
204
- url: string;
205
- alt: string;
206
- width: number;
207
- height: number;
208
- };
209
- type InputType = "article-list" | "collection" | "collection-list" | "color" | "datepicker" | "image" | "map-autocomplete" | "position" | "product" | "product-list" | "range" | "richtext" | "select" | "switch" | "text" | "textarea" | "toggle-group";
211
+ type PositionInputValue = "top left" | "top center" | "top right" | "center left" | "center center" | "center right" | "bottom left" | "bottom center" | "bottom right";
212
+ type InputType = "blog" | "collection" | "collection-list" | "color" | "datepicker" | "image" | "map-autocomplete" | "position" | "product" | "product-list" | "range" | "richtext" | "select" | "switch" | "text" | "textarea" | "toggle-group";
210
213
  declare global {
211
214
  interface Window {
212
215
  Blinkloader: any;
@@ -227,4 +230,4 @@ declare function merge(target: Record<string, any>, source: Record<string, any>)
227
230
  };
228
231
  declare function loadScript(src: string): Promise<unknown>;
229
232
 
230
- export { AdditionalInputConfigs, AdvancedGroupType, BasicInput, BreakPoints, ChildElementCSS, ElementCSS, ElementData, ElementSchema, InputType, PlatformTypeEnum, RangeInputConfigs, SelectInputConfigs, ToggleGroupConfigs, ToolbarAction, Weaverse, WeaverseCSSProperties, WeaverseCoreParams, WeaverseElement, WeaverseImage, WeaverseItemStore, WeaverseProjectDataType, isBrowser, isIframe, isReactNative, loadScript, merge };
233
+ export { AdditionalInputConfigs, AdvancedGroupType, BasicInput, BreakPoints, ChildElementCSS, ElementCSS, ElementData, ElementSchema, InputType, PlatformTypeEnum, PositionInputValue, RangeInputConfigs, SelectInputConfigs, ToggleGroupConfigs, ToolbarAction, Weaverse, WeaverseCSSProperties, WeaverseCoreParams, WeaverseElement, WeaverseImage, WeaverseItemStore, WeaverseProjectDataType, WeaverseResourcePickerData, isBrowser, isIframe, isReactNative, loadScript, merge };
package/dist/index.d.ts CHANGED
@@ -145,7 +145,6 @@ interface ElementCSS {
145
145
  type AdvancedGroupType = "border" | "alignment" | "background" | "dimensions" | "spacing" | "typography" | "visibility" | "shadows-and-effects" | "layout-background";
146
146
  interface BasicInput<ConfigsType = AdditionalInputConfigs> {
147
147
  type: InputType;
148
- label?: string;
149
148
  /**
150
149
  * The key of the value of the element data or styles
151
150
  * @example
@@ -154,7 +153,8 @@ interface BasicInput<ConfigsType = AdditionalInputConfigs> {
154
153
  * // Bind to `element.css["@desktop"].backgroundColor`
155
154
  * name: "backgroundColor"
156
155
  */
157
- name?: string;
156
+ name: string;
157
+ label?: string;
158
158
  /**
159
159
  * Additional options for inputs that require more configuration
160
160
  */
@@ -172,17 +172,26 @@ interface BasicInput<ConfigsType = AdditionalInputConfigs> {
172
172
  * `imagesPerRow.gt.1`
173
173
  */
174
174
  condition?: string;
175
- defaultValue?: string | number | boolean | WeaverseImage;
175
+ defaultValue?: string | number | boolean | Partial<WeaverseImage>;
176
176
  placeholder?: string;
177
177
  helpText?: string;
178
178
  }
179
+ type WeaverseResourcePickerData = {
180
+ id: number;
181
+ handle: string;
182
+ };
183
+ type WeaverseImage = {
184
+ id: string;
185
+ url: string;
186
+ alt: string;
187
+ width: number;
188
+ height: number;
189
+ };
179
190
  type AdditionalInputConfigs = SelectInputConfigs | ToggleGroupConfigs | RangeInputConfigs;
180
191
  interface SelectInputConfigs {
181
192
  options?: {
182
193
  value: string;
183
194
  label: string;
184
- icon?: string;
185
- weight?: string;
186
195
  }[];
187
196
  }
188
197
  interface ToggleGroupConfigs {
@@ -199,14 +208,8 @@ interface RangeInputConfigs {
199
208
  step?: number;
200
209
  unit?: string;
201
210
  }
202
- type WeaverseImage = {
203
- id: string;
204
- url: string;
205
- alt: string;
206
- width: number;
207
- height: number;
208
- };
209
- type InputType = "article-list" | "collection" | "collection-list" | "color" | "datepicker" | "image" | "map-autocomplete" | "position" | "product" | "product-list" | "range" | "richtext" | "select" | "switch" | "text" | "textarea" | "toggle-group";
211
+ type PositionInputValue = "top left" | "top center" | "top right" | "center left" | "center center" | "center right" | "bottom left" | "bottom center" | "bottom right";
212
+ type InputType = "blog" | "collection" | "collection-list" | "color" | "datepicker" | "image" | "map-autocomplete" | "position" | "product" | "product-list" | "range" | "richtext" | "select" | "switch" | "text" | "textarea" | "toggle-group";
210
213
  declare global {
211
214
  interface Window {
212
215
  Blinkloader: any;
@@ -227,4 +230,4 @@ declare function merge(target: Record<string, any>, source: Record<string, any>)
227
230
  };
228
231
  declare function loadScript(src: string): Promise<unknown>;
229
232
 
230
- export { AdditionalInputConfigs, AdvancedGroupType, BasicInput, BreakPoints, ChildElementCSS, ElementCSS, ElementData, ElementSchema, InputType, PlatformTypeEnum, RangeInputConfigs, SelectInputConfigs, ToggleGroupConfigs, ToolbarAction, Weaverse, WeaverseCSSProperties, WeaverseCoreParams, WeaverseElement, WeaverseImage, WeaverseItemStore, WeaverseProjectDataType, isBrowser, isIframe, isReactNative, loadScript, merge };
233
+ export { AdditionalInputConfigs, AdvancedGroupType, BasicInput, BreakPoints, ChildElementCSS, ElementCSS, ElementData, ElementSchema, InputType, PlatformTypeEnum, PositionInputValue, RangeInputConfigs, SelectInputConfigs, ToggleGroupConfigs, ToolbarAction, Weaverse, WeaverseCSSProperties, WeaverseCoreParams, WeaverseElement, WeaverseImage, WeaverseItemStore, WeaverseProjectDataType, WeaverseResourcePickerData, isBrowser, isIframe, isReactNative, loadScript, merge };
package/dist/index.js CHANGED
@@ -256,7 +256,6 @@ var Weaverse = class extends EventEmitter {
256
256
  */
257
257
  setProjectData = (data) => {
258
258
  this.data = data;
259
- console.log("setProjectData", 2222, data);
260
259
  this.initProject();
261
260
  };
262
261
  };
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-emiiter.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/sdks\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-emiiter\"\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(intialData: ElementData, weaverse: Weaverse) {\n super()\n let { type, id } = intialData || {}\n this.weaverse = weaverse\n if (id && type) {\n weaverse.itemInstances.set(id, this)\n } else {\n throw new Error(`'id' and 'type' are required to create a new Weaverse item.`)\n }\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 get css(): ElementCSS {\n let defaultCss = this.Element?.defaultCss || {}\n let currentCss = this._store.css || {}\n let css = merge(defaultCss, currentCss)\n return css\n }\n\n get data(): ElementData {\n let css = this.css\n return { ...this._store, css }\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.data, update)\n this.triggerUpdate()\n return this.data\n }\n\n triggerUpdate = () => {\n this.emit(this.data)\n }\n}\n\nexport class Weaverse extends EventEmitter {\n contentRootElement: HTMLElement | null = null\n itemInstances = new Map()\n weaverseHost = \"https://weaverse.io\"\n weaverseVersion = \"\"\n projectId = \"\"\n isDesignMode = false\n isPreviewMode = false\n stitchesInstance: Stitches | any\n studioBridge?: any\n\n declare ItemConstructor: typeof WeaverseItemStore\n declare data: WeaverseProjectDataType\n declare platformType: PlatformTypeEnum\n readonly elementRegistry = new Map()\n\n 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 this.initStitches()\n }\n\n /**\n * Create new `WeaverseItemStore` instance for each item in the project.\n */\n initProject = () => {\n let { data, itemInstances, ItemConstructor } = this\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 ItemConstructor(item, this)\n }\n })\n }\n }\n\n initStitches = (externalConfig?: stitches.CreateStitches) => {\n this.stitchesInstance =\n this.stitchesInstance ||\n stitches.createStitches({\n prefix: \"weaverse\",\n media: this.mediaBreakPoints,\n utils: stitchesUtils,\n ...externalConfig,\n })\n }\n\n /**\n * Register the custom React Component to Weaverse, store it into Weaverse.elementRegistry\n */\n registerElement(element: { type: string }) {\n if (element?.type) {\n if (!this.elementRegistry.has(element.type)) {\n this.elementRegistry.set(element?.type, element)\n } else {\n console.warn(`Element with type '${element.type}' already exists.`)\n }\n } else {\n console.error(\"Cannot register element without 'type'.\")\n }\n }\n\n triggerUpdate() {\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 console.log(\"setProjectData\", 2222, 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 constructor() {\n this.listeners = new Set()\n }\n subscribe(fn: AnyFunction) {\n this.listeners.add(fn)\n }\n unsubscribe(fn: AnyFunction) {\n this.listeners.delete(fn)\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-emiiter.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/sdks\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-emiiter\"\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(intialData: ElementData, weaverse: Weaverse) {\n super()\n let { type, id } = intialData || {}\n this.weaverse = weaverse\n if (id && type) {\n weaverse.itemInstances.set(id, this)\n } else {\n throw new Error(`'id' and 'type' are required to create a new Weaverse item.`)\n }\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 get css(): ElementCSS {\n let defaultCss = this.Element?.defaultCss || {}\n let currentCss = this._store.css || {}\n let css = merge(defaultCss, currentCss)\n return css\n }\n\n get data(): ElementData {\n let css = this.css\n return { ...this._store, css }\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.data, update)\n this.triggerUpdate()\n return this.data\n }\n\n triggerUpdate = () => {\n this.emit(this.data)\n }\n}\n\nexport class Weaverse extends EventEmitter {\n contentRootElement: HTMLElement | null = null\n itemInstances = new Map()\n weaverseHost = \"https://weaverse.io\"\n weaverseVersion = \"\"\n projectId = \"\"\n isDesignMode = false\n isPreviewMode = false\n stitchesInstance: Stitches | any\n studioBridge?: any\n\n declare ItemConstructor: typeof WeaverseItemStore\n declare data: WeaverseProjectDataType\n declare platformType: PlatformTypeEnum\n readonly elementRegistry = new Map()\n\n 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 this.initStitches()\n }\n\n /**\n * Create new `WeaverseItemStore` instance for each item in the project.\n */\n initProject = () => {\n let { data, itemInstances, ItemConstructor } = this\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 ItemConstructor(item, this)\n }\n })\n }\n }\n\n initStitches = (externalConfig?: stitches.CreateStitches) => {\n this.stitchesInstance =\n this.stitchesInstance ||\n stitches.createStitches({\n prefix: \"weaverse\",\n media: this.mediaBreakPoints,\n utils: stitchesUtils,\n ...externalConfig,\n })\n }\n\n /**\n * Register the custom React Component to Weaverse, store it into Weaverse.elementRegistry\n */\n registerElement(element: { type: string }) {\n if (element?.type) {\n if (!this.elementRegistry.has(element.type)) {\n this.elementRegistry.set(element?.type, element)\n } else {\n console.warn(`Element with type '${element.type}' already exists.`)\n }\n } else {\n console.error(\"Cannot register element without 'type'.\")\n }\n }\n\n triggerUpdate() {\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 constructor() {\n this.listeners = new Set()\n }\n subscribe(fn: AnyFunction) {\n this.listeners.add(fn)\n }\n unsubscribe(fn: AnyFunction) {\n this.listeners.delete(fn)\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
@@ -214,7 +214,6 @@ var Weaverse = class extends EventEmitter {
214
214
  */
215
215
  setProjectData = (data) => {
216
216
  this.data = data;
217
- console.log("setProjectData", 2222, data);
218
217
  this.initProject();
219
218
  };
220
219
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core.ts","../src/utils/index.ts","../src/utils/event-emiiter.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/sdks\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-emiiter\"\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(intialData: ElementData, weaverse: Weaverse) {\n super()\n let { type, id } = intialData || {}\n this.weaverse = weaverse\n if (id && type) {\n weaverse.itemInstances.set(id, this)\n } else {\n throw new Error(`'id' and 'type' are required to create a new Weaverse item.`)\n }\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 get css(): ElementCSS {\n let defaultCss = this.Element?.defaultCss || {}\n let currentCss = this._store.css || {}\n let css = merge(defaultCss, currentCss)\n return css\n }\n\n get data(): ElementData {\n let css = this.css\n return { ...this._store, css }\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.data, update)\n this.triggerUpdate()\n return this.data\n }\n\n triggerUpdate = () => {\n this.emit(this.data)\n }\n}\n\nexport class Weaverse extends EventEmitter {\n contentRootElement: HTMLElement | null = null\n itemInstances = new Map()\n weaverseHost = \"https://weaverse.io\"\n weaverseVersion = \"\"\n projectId = \"\"\n isDesignMode = false\n isPreviewMode = false\n stitchesInstance: Stitches | any\n studioBridge?: any\n\n declare ItemConstructor: typeof WeaverseItemStore\n declare data: WeaverseProjectDataType\n declare platformType: PlatformTypeEnum\n readonly elementRegistry = new Map()\n\n 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 this.initStitches()\n }\n\n /**\n * Create new `WeaverseItemStore` instance for each item in the project.\n */\n initProject = () => {\n let { data, itemInstances, ItemConstructor } = this\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 ItemConstructor(item, this)\n }\n })\n }\n }\n\n initStitches = (externalConfig?: stitches.CreateStitches) => {\n this.stitchesInstance =\n this.stitchesInstance ||\n stitches.createStitches({\n prefix: \"weaverse\",\n media: this.mediaBreakPoints,\n utils: stitchesUtils,\n ...externalConfig,\n })\n }\n\n /**\n * Register the custom React Component to Weaverse, store it into Weaverse.elementRegistry\n */\n registerElement(element: { type: string }) {\n if (element?.type) {\n if (!this.elementRegistry.has(element.type)) {\n this.elementRegistry.set(element?.type, element)\n } else {\n console.warn(`Element with type '${element.type}' already exists.`)\n }\n } else {\n console.error(\"Cannot register element without 'type'.\")\n }\n }\n\n triggerUpdate() {\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 console.log(\"setProjectData\", 2222, 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 constructor() {\n this.listeners = new Set()\n }\n subscribe(fn: AnyFunction) {\n this.listeners.add(fn)\n }\n unsubscribe(fn: AnyFunction) {\n this.listeners.delete(fn)\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-emiiter.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/sdks\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-emiiter\"\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(intialData: ElementData, weaverse: Weaverse) {\n super()\n let { type, id } = intialData || {}\n this.weaverse = weaverse\n if (id && type) {\n weaverse.itemInstances.set(id, this)\n } else {\n throw new Error(`'id' and 'type' are required to create a new Weaverse item.`)\n }\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 get css(): ElementCSS {\n let defaultCss = this.Element?.defaultCss || {}\n let currentCss = this._store.css || {}\n let css = merge(defaultCss, currentCss)\n return css\n }\n\n get data(): ElementData {\n let css = this.css\n return { ...this._store, css }\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.data, update)\n this.triggerUpdate()\n return this.data\n }\n\n triggerUpdate = () => {\n this.emit(this.data)\n }\n}\n\nexport class Weaverse extends EventEmitter {\n contentRootElement: HTMLElement | null = null\n itemInstances = new Map()\n weaverseHost = \"https://weaverse.io\"\n weaverseVersion = \"\"\n projectId = \"\"\n isDesignMode = false\n isPreviewMode = false\n stitchesInstance: Stitches | any\n studioBridge?: any\n\n declare ItemConstructor: typeof WeaverseItemStore\n declare data: WeaverseProjectDataType\n declare platformType: PlatformTypeEnum\n readonly elementRegistry = new Map()\n\n 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 this.initStitches()\n }\n\n /**\n * Create new `WeaverseItemStore` instance for each item in the project.\n */\n initProject = () => {\n let { data, itemInstances, ItemConstructor } = this\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 ItemConstructor(item, this)\n }\n })\n }\n }\n\n initStitches = (externalConfig?: stitches.CreateStitches) => {\n this.stitchesInstance =\n this.stitchesInstance ||\n stitches.createStitches({\n prefix: \"weaverse\",\n media: this.mediaBreakPoints,\n utils: stitchesUtils,\n ...externalConfig,\n })\n }\n\n /**\n * Register the custom React Component to Weaverse, store it into Weaverse.elementRegistry\n */\n registerElement(element: { type: string }) {\n if (element?.type) {\n if (!this.elementRegistry.has(element.type)) {\n this.elementRegistry.set(element?.type, element)\n } else {\n console.warn(`Element with type '${element.type}' already exists.`)\n }\n } else {\n console.error(\"Cannot register element without 'type'.\")\n }\n }\n\n triggerUpdate() {\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 constructor() {\n this.listeners = new Set()\n }\n subscribe(fn: AnyFunction) {\n this.listeners.add(fn)\n }\n unsubscribe(fn: AnyFunction) {\n this.listeners.delete(fn)\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/package.json CHANGED
@@ -1,31 +1,31 @@
1
1
  {
2
- "version" : "2.2.5",
3
- "license" : "MIT",
4
- "main" : "dist/index.js",
5
- "types" : "dist/index.d.ts",
6
- "module" : "dist/index.mjs",
7
- "publishConfig" : {
8
- "access" : "public"
2
+ "version": "2.3.0",
3
+ "license": "MIT",
4
+ "main": "dist/index.js",
5
+ "types": "dist/index.d.ts",
6
+ "module": "dist/index.mjs",
7
+ "publishConfig": {
8
+ "access": "public"
9
9
  },
10
- "files" : [
10
+ "files": [
11
11
  "dist/*"
12
12
  ],
13
- "engines" : {
14
- "node" : ">=16"
13
+ "engines": {
14
+ "node": ">=16"
15
15
  },
16
- "scripts" : {
17
- "start" : "npm run dev",
18
- "dev" : "tsup src/index.ts --format esm,cjs --dts --outDir dist --watch --sourcemap",
19
- "build" : "tsup src/index.ts --format esm,cjs --dts --outDir dist",
20
- "clean" : "rimraf dist",
21
- "prepublish" : "npm run build"
16
+ "scripts": {
17
+ "start": "npm run dev",
18
+ "dev": "tsup src/index.ts --format esm,cjs --dts --outDir dist --watch --sourcemap",
19
+ "build": "tsup src/index.ts --format esm,cjs --dts --outDir dist",
20
+ "clean": "rimraf dist",
21
+ "prepublish": "npm run build"
22
22
  },
23
- "name" : "@weaverse/core",
24
- "author" : "Weaverse Team",
25
- "dependencies" : {
26
- "@stitches/core" : "^1.2.8"
23
+ "name": "@weaverse/core",
24
+ "author": "Weaverse Team",
25
+ "dependencies": {
26
+ "@stitches/core": "^1.2.8"
27
27
  },
28
- "optionalDependencies" : {
29
- "@esbuild/darwin-x64" : "*"
28
+ "optionalDependencies": {
29
+ "@esbuild/darwin-x64": "*"
30
30
  }
31
31
  }