@weaverse/core 2.8.12 → 2.10.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
@@ -6,9 +6,9 @@ type AnyFunction = (...args: any[]) => any;
6
6
  declare class EventEmitter {
7
7
  listeners: Set<AnyFunction>;
8
8
  constructor();
9
- subscribe(fn: AnyFunction): () => void;
10
- unsubscribe(fn: AnyFunction): void;
11
- emit(data?: any): void;
9
+ subscribe: (fn: AnyFunction) => () => void;
10
+ unsubscribe: (fn: AnyFunction) => void;
11
+ emit: (data?: any) => void;
12
12
  }
13
13
 
14
14
  declare class WeaverseItemStore extends EventEmitter {
@@ -20,10 +20,11 @@ declare class WeaverseItemStore extends EventEmitter {
20
20
  get _id(): string;
21
21
  get _element(): HTMLElement | null;
22
22
  get Element(): any;
23
- get css(): ElementCSS;
23
+ getDefaultCss: () => ElementCSS;
24
24
  get data(): ElementData;
25
25
  set data(update: Omit<ElementData, 'id' | 'type'>);
26
26
  setData: (update: Omit<ElementData, 'id' | 'type'>) => ElementData;
27
+ getSnapShot: () => ElementData;
27
28
  triggerUpdate: () => void;
28
29
  }
29
30
  declare class Weaverse extends EventEmitter {
@@ -42,6 +43,7 @@ declare class Weaverse extends EventEmitter {
42
43
  static elementRegistry: Map<any, any>;
43
44
  static mediaBreakPoints: BreakPoints;
44
45
  constructor(params: WeaverseCoreParams);
46
+ getSnapShot: () => WeaverseProjectDataType;
45
47
  /**
46
48
  * Create new `WeaverseItemStore` instance for each item in the project.
47
49
  */
@@ -148,6 +150,7 @@ interface BreakPoints {
148
150
  desktop: string;
149
151
  }
150
152
  interface WeaverseProjectDataType {
153
+ id?: string;
151
154
  items: ElementData[];
152
155
  rootId: string;
153
156
  }
package/dist/index.d.ts CHANGED
@@ -6,9 +6,9 @@ type AnyFunction = (...args: any[]) => any;
6
6
  declare class EventEmitter {
7
7
  listeners: Set<AnyFunction>;
8
8
  constructor();
9
- subscribe(fn: AnyFunction): () => void;
10
- unsubscribe(fn: AnyFunction): void;
11
- emit(data?: any): void;
9
+ subscribe: (fn: AnyFunction) => () => void;
10
+ unsubscribe: (fn: AnyFunction) => void;
11
+ emit: (data?: any) => void;
12
12
  }
13
13
 
14
14
  declare class WeaverseItemStore extends EventEmitter {
@@ -20,10 +20,11 @@ declare class WeaverseItemStore extends EventEmitter {
20
20
  get _id(): string;
21
21
  get _element(): HTMLElement | null;
22
22
  get Element(): any;
23
- get css(): ElementCSS;
23
+ getDefaultCss: () => ElementCSS;
24
24
  get data(): ElementData;
25
25
  set data(update: Omit<ElementData, 'id' | 'type'>);
26
26
  setData: (update: Omit<ElementData, 'id' | 'type'>) => ElementData;
27
+ getSnapShot: () => ElementData;
27
28
  triggerUpdate: () => void;
28
29
  }
29
30
  declare class Weaverse extends EventEmitter {
@@ -42,6 +43,7 @@ declare class Weaverse extends EventEmitter {
42
43
  static elementRegistry: Map<any, any>;
43
44
  static mediaBreakPoints: BreakPoints;
44
45
  constructor(params: WeaverseCoreParams);
46
+ getSnapShot: () => WeaverseProjectDataType;
45
47
  /**
46
48
  * Create new `WeaverseItemStore` instance for each item in the project.
47
49
  */
@@ -148,6 +150,7 @@ interface BreakPoints {
148
150
  desktop: string;
149
151
  }
150
152
  interface WeaverseProjectDataType {
153
+ id?: string;
151
154
  items: ElementData[];
152
155
  rootId: string;
153
156
  }
package/dist/index.js CHANGED
@@ -78,18 +78,18 @@ var EventEmitter = class {
78
78
  constructor() {
79
79
  this.listeners = /* @__PURE__ */ new Set();
80
80
  }
81
- subscribe(fn) {
81
+ subscribe = (fn) => {
82
82
  this.listeners.add(fn);
83
83
  return () => this.unsubscribe(fn);
84
- }
85
- unsubscribe(fn) {
84
+ };
85
+ unsubscribe = (fn) => {
86
86
  this.listeners.delete(fn);
87
- }
88
- emit(data) {
87
+ };
88
+ emit = (data) => {
89
89
  this.listeners.forEach((fn) => {
90
90
  return fn(data);
91
91
  });
92
- }
92
+ };
93
93
  };
94
94
 
95
95
  // src/utils/stitches.ts
@@ -146,6 +146,7 @@ var WeaverseItemStore = class extends EventEmitter {
146
146
  } else {
147
147
  throw new Error(`'id' and 'type' are required to create a new Weaverse item.`);
148
148
  }
149
+ this._store.css = this.getDefaultCss();
149
150
  }
150
151
  get _id() {
151
152
  return this._store.id;
@@ -156,23 +157,23 @@ var WeaverseItemStore = class extends EventEmitter {
156
157
  get Element() {
157
158
  return this.weaverse.elementRegistry.get(this._store.type);
158
159
  }
159
- get css() {
160
+ getDefaultCss = () => {
160
161
  let defaultCss = this.Element?.defaultCss || {};
161
162
  let currentCss = this._store.css || {};
162
163
  return merge(defaultCss, currentCss);
163
- }
164
+ };
164
165
  get data() {
165
- let css = this.css;
166
- return { ...this._store, css };
166
+ return this._store;
167
167
  }
168
168
  set data(update) {
169
169
  this._store = { ...this.data, ...update };
170
170
  }
171
171
  setData = (update) => {
172
- this.data = Object.assign(this.data, update);
172
+ this.data = Object.assign(this._store, update);
173
173
  this.triggerUpdate();
174
174
  return this.data;
175
175
  };
176
+ getSnapShot = () => this.data;
176
177
  triggerUpdate = () => {
177
178
  this.emit(this.data);
178
179
  };
@@ -203,6 +204,9 @@ var Weaverse = class _Weaverse extends EventEmitter {
203
204
  this.initProject();
204
205
  _Weaverse.initStitches();
205
206
  }
207
+ getSnapShot = () => {
208
+ return this.data;
209
+ };
206
210
  /**
207
211
  * Create new `WeaverseItemStore` instance for each item in the project.
208
212
  */
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/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-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(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 } 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 return merge(defaultCss, currentCss)\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 static itemInstances = new Map<string, WeaverseItemStore | any>()\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 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 /**\n * Create new `WeaverseItemStore` instance for each item in the project.\n */\n initProject = () => {\n let { data, ItemConstructor } = 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 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 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-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/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-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(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 } 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 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<string, WeaverseItemStore | any>()\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 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, ItemConstructor } = 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 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 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":[]}
package/dist/index.mjs CHANGED
@@ -36,18 +36,18 @@ var EventEmitter = class {
36
36
  constructor() {
37
37
  this.listeners = /* @__PURE__ */ new Set();
38
38
  }
39
- subscribe(fn) {
39
+ subscribe = (fn) => {
40
40
  this.listeners.add(fn);
41
41
  return () => this.unsubscribe(fn);
42
- }
43
- unsubscribe(fn) {
42
+ };
43
+ unsubscribe = (fn) => {
44
44
  this.listeners.delete(fn);
45
- }
46
- emit(data) {
45
+ };
46
+ emit = (data) => {
47
47
  this.listeners.forEach((fn) => {
48
48
  return fn(data);
49
49
  });
50
- }
50
+ };
51
51
  };
52
52
 
53
53
  // src/utils/stitches.ts
@@ -104,6 +104,7 @@ var WeaverseItemStore = class extends EventEmitter {
104
104
  } else {
105
105
  throw new Error(`'id' and 'type' are required to create a new Weaverse item.`);
106
106
  }
107
+ this._store.css = this.getDefaultCss();
107
108
  }
108
109
  get _id() {
109
110
  return this._store.id;
@@ -114,23 +115,23 @@ var WeaverseItemStore = class extends EventEmitter {
114
115
  get Element() {
115
116
  return this.weaverse.elementRegistry.get(this._store.type);
116
117
  }
117
- get css() {
118
+ getDefaultCss = () => {
118
119
  let defaultCss = this.Element?.defaultCss || {};
119
120
  let currentCss = this._store.css || {};
120
121
  return merge(defaultCss, currentCss);
121
- }
122
+ };
122
123
  get data() {
123
- let css = this.css;
124
- return { ...this._store, css };
124
+ return this._store;
125
125
  }
126
126
  set data(update) {
127
127
  this._store = { ...this.data, ...update };
128
128
  }
129
129
  setData = (update) => {
130
- this.data = Object.assign(this.data, update);
130
+ this.data = Object.assign(this._store, update);
131
131
  this.triggerUpdate();
132
132
  return this.data;
133
133
  };
134
+ getSnapShot = () => this.data;
134
135
  triggerUpdate = () => {
135
136
  this.emit(this.data);
136
137
  };
@@ -161,6 +162,9 @@ var Weaverse = class _Weaverse extends EventEmitter {
161
162
  this.initProject();
162
163
  _Weaverse.initStitches();
163
164
  }
165
+ getSnapShot = () => {
166
+ return this.data;
167
+ };
164
168
  /**
165
169
  * Create new `WeaverseItemStore` instance for each item in the project.
166
170
  */
@@ -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/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-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(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 } 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 return merge(defaultCss, currentCss)\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 static itemInstances = new Map<string, WeaverseItemStore | any>()\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 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 /**\n * Create new `WeaverseItemStore` instance for each item in the project.\n */\n initProject = () => {\n let { data, ItemConstructor } = 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 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 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-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/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-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(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 } 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 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<string, WeaverseItemStore | any>()\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 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, ItemConstructor } = 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 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 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":[]}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@weaverse/core",
3
3
  "author": "Weaverse Team",
4
4
  "description": "Weaverse Core",
5
- "version": "2.8.12",
5
+ "version": "2.10.0",
6
6
  "license": "MIT",
7
7
  "main": "dist/index.js",
8
8
  "types": "dist/index.d.ts",
@@ -24,9 +24,6 @@
24
24
  "dependencies": {
25
25
  "@stitches/core": "^1.2.8"
26
26
  },
27
- "optionalDependencies": {
28
- "@esbuild/darwin-x64": "^0.19.9"
29
- },
30
27
  "scripts": {
31
28
  "start": "npm run dev",
32
29
  "dev": "tsup src/index.ts --format esm,cjs --dts --outDir dist --watch --sourcemap",