@weaverse/react 0.1.7 → 0.1.11

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.
@@ -1,5 +1,5 @@
1
- import React__default, { useState, createElement, useEffect, Fragment } from 'react';
2
- import fetch from 'isomorphic-unfetch';
1
+ import React__default, { forwardRef, useState, createElement, useEffect, Fragment } from 'react';
2
+ import { Weaverse, isBrowser } from '@weaverse/core';
3
3
 
4
4
  function _extends() {
5
5
  _extends = Object.assign || function (target) {
@@ -34,214 +34,19 @@ function _objectWithoutPropertiesLoose(source, excluded) {
34
34
  return target;
35
35
  }
36
36
 
37
- var isReactNative = typeof navigator === 'object' && navigator.product === 'ReactNative';
38
- var isBrowser = typeof window !== 'undefined' && !isReactNative;
39
-
40
- // TODO: Implement Weaverse SDK class
41
- var Weaverse = /*#__PURE__*/function () {
42
- function Weaverse(_temp) {
43
- var _this = this;
44
-
45
- var _ref = _temp === void 0 ? {} : _temp,
46
- appUrl = _ref.appUrl,
47
- projectKey = _ref.projectKey,
48
- projectData = _ref.projectData;
49
-
50
- this.elementInstances = new Map();
51
- this.itemInstances = new Map();
52
- this.appUrl = process.env.NODE_ENV === 'development' ? 'http://localhost:3000' : 'https://weaverse.io';
53
- this.projectKey = '';
54
- this.projectData = {
55
- items: []
56
- };
57
- this.listeners = new Set();
58
- this.isEditor = false;
59
-
60
- this.handleMessageEvent = function (e) {
61
- var _e$data, _e$data$type;
62
-
63
- if ((_e$data = e.data) != null && (_e$data$type = _e$data.type) != null && _e$data$type.startsWith('weaverse.')) {
64
- var type = e.data.type;
65
-
66
- switch (type) {
67
- case 'weaverse.editor.ready':
68
- _this.isEditor = true;
69
- break;
70
-
71
- case 'weaverse.editor.update':
72
- var payload = e.data.payload;
73
- var itemId = payload.itemId,
74
- background = payload.background;
75
-
76
- var instance = _this.itemInstances.get(itemId);
77
-
78
- if (instance) {
79
- instance.setData({
80
- style: {
81
- background: background
82
- }
83
- });
84
- }
85
-
86
- }
87
- }
88
- };
89
-
90
- this.appUrl = appUrl || this.appUrl;
91
- this.projectKey = projectKey || this.projectKey;
92
- projectData && (this.projectData = projectData);
93
- this.init();
94
- }
95
-
96
- var _proto = Weaverse.prototype;
97
-
98
- _proto.registerElement = function registerElement(name, element) {
99
- this.elementInstances.set(name, element);
100
- };
101
-
102
- _proto.init = function init() {
103
- this.subscribeMessageEvent();
104
- };
105
-
106
- _proto.subscribe = function subscribe(fn) {
107
- this.listeners.add(fn);
108
- };
109
-
110
- _proto.unsubscribe = function unsubscribe(fn) {
111
- this.listeners["delete"](fn);
112
- };
113
-
114
- _proto.triggerUpdate = function triggerUpdate() {
115
- this.listeners.forEach(function (fn) {
116
- return fn();
117
- });
118
- this.triggerEditorUpdate();
119
- };
120
-
121
- _proto.fetchProjectData = function fetchProjectData() {
122
- return fetch(this.appUrl + ("/api/public/" + this.projectKey)).then(function (r) {
123
- return r.json();
124
- });
125
- };
126
-
127
- _proto.updateProjectData = function updateProjectData() {
128
- var _this2 = this;
129
-
130
- if (this.projectKey) {
131
- this.fetchProjectData().then(function (data) {
132
- if (data) {
133
- _this2.projectData = data;
134
-
135
- _this2.initItemData();
136
-
137
- _this2.triggerUpdate();
138
- }
139
- })["catch"](function (err) {
140
- console.error(err);
141
- });
142
- }
143
- };
144
-
145
- _proto.subscribeMessageEvent = function subscribeMessageEvent() {
146
- var _this3 = this;
147
-
148
- if (typeof this.currentFrameSubscription === 'function') {
149
- this.currentFrameSubscription();
150
- }
151
-
152
- isBrowser && window.addEventListener('message', this.handleMessageEvent);
153
-
154
- this.currentFrameSubscription = function () {
155
- isBrowser && window.removeEventListener('message', _this3.handleMessageEvent);
156
- };
157
-
158
- return this.currentFrameSubscription;
159
- };
160
-
161
- _proto.triggerEditorUpdate = function triggerEditorUpdate(type) {
162
- if (type === void 0) {
163
- type = 'weaverse.workspace.init';
164
- }
165
-
166
- if (this.isEditor) {
167
- var _window$top;
168
-
169
- (_window$top = window.top) == null ? void 0 : _window$top.postMessage({
170
- type: type,
171
- payload: {
172
- projectKey: this.projectKey,
173
- projectData: this.projectData
174
- }
175
- }, '*');
176
- }
177
- };
178
-
179
- _proto.initItemData = function initItemData() {
180
- var _this4 = this;
181
-
182
- var data = this.projectData;
183
-
184
- if (data.items) {
185
- data.items.forEach(function (item) {
186
- var itemStore = _this4.itemInstances.get(item.id) || new WeaverseItemStore(item, _this4);
187
-
188
- _this4.itemInstances.set(item.id, itemStore);
189
- });
190
- }
191
- };
192
-
193
- return Weaverse;
194
- }();
195
- var WeaverseItemStore = function WeaverseItemStore(itemData, weaverse) {
196
- var _this5 = this;
197
-
198
- if (itemData === void 0) {
199
- itemData = {};
200
- }
201
-
202
- this.data = {};
203
- this.listeners = new Set();
204
-
205
- this.setData = function (data) {
206
- _this5.data = Object.assign(_this5.data, data);
207
-
208
- _this5.triggerUpdate();
209
- };
210
-
211
- this.subscribe = function (fn) {
212
- _this5.listeners.add(fn);
213
- };
214
-
215
- this.unsubscribe = function (fn) {
216
- _this5.listeners["delete"](fn);
217
- };
218
-
219
- this.triggerUpdate = function () {
220
- _this5.listeners.forEach(function (fn) {
221
- return fn(_this5.data);
222
- });
223
- };
224
-
225
- this.data = itemData;
226
- var _itemData = itemData,
227
- type = _itemData.type;
228
-
229
- if (type) {
230
- this.Component = weaverse.elementInstances.get(type);
231
- }
232
- };
233
-
234
- var Button = function Button(props) {
37
+ var Button = /*#__PURE__*/forwardRef(function (props, ref) {
235
38
  var _React$useState = useState(0),
236
39
  count = _React$useState[0],
237
40
  setCount = _React$useState[1];
238
41
 
239
- return createElement("button", Object.assign({}, props, {
42
+ return createElement("button", Object.assign({
43
+ ref: ref
44
+ }, props, {
240
45
  onClick: function onClick() {
241
46
  return setCount(count + 1);
242
47
  }
243
48
  }), "Test Button ", count);
244
- };
49
+ });
245
50
  Button.defaultProps = {
246
51
  style: {
247
52
  backgroundColor: 'green',
@@ -252,43 +57,54 @@ Button.defaultProps = {
252
57
  type: 'button',
253
58
  tag: 'button'
254
59
  };
255
- Button.configs = {
256
- type: 'button'
257
- };
258
60
 
259
61
  var _excluded = ["tag", "children"];
260
- var BaseElement = function BaseElement(_ref) {
261
- var _ref$tag = _ref.tag,
262
- tag = _ref$tag === void 0 ? 'div' : _ref$tag,
62
+ var BaseElement = /*#__PURE__*/React__default.forwardRef(function (_ref, ref) {
63
+ var tag = _ref.tag,
263
64
  children = _ref.children,
264
65
  props = _objectWithoutPropertiesLoose(_ref, _excluded);
265
66
 
266
- return React__default.createElement(tag, _extends({}, props), children);
67
+ return React__default.createElement(tag, _extends({
68
+ ref: ref
69
+ }, props), children);
70
+ });
71
+ BaseElement.defaultProps = {
72
+ type: 'base',
73
+ tag: 'div',
74
+ style: {}
267
75
  };
268
- BaseElement.configs = {
269
- type: 'base'
76
+
77
+ function Grid(props) {
78
+ return React__default.createElement("div", Object.assign({}, props));
79
+ }
80
+ Grid.defaultProps = {
81
+ style: {
82
+ display: 'grid',
83
+ gridTemplate: '1fr / 1fr'
84
+ },
85
+ type: 'grid'
270
86
  };
271
87
 
272
88
  var elements = {
273
89
  Button: Button,
274
- BaseElement: BaseElement
90
+ BaseElement: BaseElement,
91
+ Grid: Grid
275
92
  };
276
93
 
277
- var _excluded$1 = ["id", "type", "childIds"];
278
-
94
+ var _excluded$1 = ["id", "type", "childIds", "css", "className"];
279
95
  var createRootContext = function createRootContext(configs) {
280
- var rootContext = new Weaverse(configs);
96
+ var rootContext = new Weaverse(configs); // Register the element components
97
+
281
98
  Object.keys(elements).forEach(function (key) {
282
- var _Elements$key, _Elements$key$configs;
99
+ var _Elements$key, _Elements$key$default;
283
100
 
284
101
  // @ts-ignore
285
- ((_Elements$key = elements[key]) == null ? void 0 : (_Elements$key$configs = _Elements$key.configs) == null ? void 0 : _Elements$key$configs.type) && rootContext.registerElement(elements[key].configs.type, elements[key]);
102
+ ((_Elements$key = elements[key]) == null ? void 0 : (_Elements$key$default = _Elements$key.defaultProps) == null ? void 0 : _Elements$key$default.type) && rootContext.registerElement(elements[key].defaultProps.type, elements[key]);
286
103
  });
287
104
  return rootContext;
288
105
  };
289
-
290
106
  var WeaverseRoot = function WeaverseRoot(_ref) {
291
- var _context$projectData, _context$projectData$;
107
+ var _context$projectData, _context$projectData$, _context$studioBridge;
292
108
 
293
109
  var context = _ref.context,
294
110
  defaultData = _ref.defaultData;
@@ -298,7 +114,7 @@ var WeaverseRoot = function WeaverseRoot(_ref) {
298
114
 
299
115
  useEffect(function () {
300
116
  var handleUpdate = function handleUpdate() {
301
- setData(context.projectData);
117
+ setData(_extends({}, context.projectData));
302
118
  };
303
119
 
304
120
  context.subscribe(handleUpdate);
@@ -313,10 +129,12 @@ var WeaverseRoot = function WeaverseRoot(_ref) {
313
129
  context.initItemData();
314
130
  }
315
131
 
316
- return createElement(RenderItem, {
132
+ var handleProps = (context == null ? void 0 : (_context$studioBridge = context.studioBridge) == null ? void 0 : _context$studioBridge.handleProps) || {};
133
+ console.log('handleProps', handleProps);
134
+ return createElement("div", Object.assign({}, handleProps), createElement(RenderItem, {
317
135
  itemId: 0,
318
136
  context: context
319
- });
137
+ }));
320
138
  };
321
139
 
322
140
  var Item = function Item(_ref2) {
@@ -331,6 +149,8 @@ var Item = function Item(_ref2) {
331
149
  var id = data.id,
332
150
  type = data.type,
333
151
  childIds = data.childIds,
152
+ css = data.css,
153
+ className = data.className,
334
154
  rest = _objectWithoutPropertiesLoose(data, _excluded$1);
335
155
 
336
156
  useEffect(function () {
@@ -339,17 +159,40 @@ var Item = function Item(_ref2) {
339
159
  };
340
160
 
341
161
  itemInstance.subscribe(handleUpdate);
162
+
163
+ if (!itemInstance.ref.current && isBrowser) {
164
+ Object.assign(itemInstance.ref, {
165
+ current: document.querySelector("[data-wv-id=\"" + id + "\"]")
166
+ });
167
+ }
168
+
342
169
  return function () {
343
170
  itemInstance.unsubscribe(handleUpdate);
344
171
  };
345
172
  }, []);
173
+ var realClassName = className || '';
174
+
175
+ if (css) {
176
+ // let stitches create the style from css object and
177
+ // then return the classname, so we can use it in the render
178
+ var selector = context.stitchesInstance.css(css)().className;
179
+ realClassName += ' ' + selector;
180
+ }
181
+
346
182
  var Component = elementInstances.get(type);
347
183
 
348
184
  if (Component) {
185
+ // @ts-ignore
186
+ if (Component.$$typeof === Symbol["for"]('react.forward_ref')) {
187
+ rest.ref = itemInstance.ref;
188
+ }
189
+
349
190
  return createElement(Component, Object.assign({
350
191
  key: id,
351
192
  "data-wv-id": id
352
- }, rest), Array.isArray(childIds) && childIds.map(function (childId) {
193
+ }, rest, {
194
+ className: realClassName
195
+ }), Array.isArray(childIds) && childIds.map(function (childId) {
353
196
  return createElement(RenderItem, {
354
197
  key: childId,
355
198
  itemId: childId,
@@ -1 +1 @@
1
- {"version":3,"file":"sdk-react.esm.js","sources":["../src/utils/index.ts","../src/core.ts","../src/elements/button.tsx","../src/elements/base.tsx","../src/elements/index.ts","../src/index.tsx"],"sourcesContent":["export const isReactNative = typeof navigator === 'object' && navigator.product === 'ReactNative'\nexport const isBrowser = typeof window !== 'undefined' && !isReactNative\nexport const isIframe = isBrowser && window.top !== window.self","// TODO: Implement Weaverse SDK class\nimport fetch from 'isomorphic-unfetch'\nimport {isBrowser} from './utils'\n\n\nexport interface ProjectDataItemType {\n\ttype: string\n\tname: string\n\tid: string | number\n}\n\nexport interface ProjectDataType {\n\titems: ProjectDataItemType[]\n}\n\n// const isSheetAccessible = (sheet: CSSStyleSheet) => {\n// \tif (sheet.href && !sheet.href.startsWith(location.origin)) {\n// \t\treturn false\n// \t}\n//\n// \ttry {\n// \t\tsheet.cssRules\n// \t\treturn true\n// \t} catch (e) {\n// \t\treturn false\n// \t}\n// }\n\n// export class WeaverseStyle {\n// \tpublic styleSheets: StyleSheetList\n// \tpublic document: Document\n//\n// \tconstructor(root: Document) {\n// \t\tthis.document = root\n// \t\tthis.styleSheets = this.document.styleSheets\n// \t}\n//\n// \t// Create styleSheet instance that work both on client and server side\n// \tcreateSheet = (root?: Document) => {\n// \t\tlet sheetInstance: any = null\n//\n// \t\tconst reset = () => {\n// \t\t\tconst sheets = Object(root).styleSheets || []\n// \t\t\t// iterate all stylesheets until a hydratable stylesheet is found\n// \t\t\tfor (const sheet of sheets) {\n// \t\t\t\tif (!isSheetAccessible(sheet)) continue\n//\n// \t\t\t\tfor (let index = 0, rules = sheet.cssRules; rules[index]; ++index) {\n// \t\t\t\t\t// /** @type {CSSStyleRule} Possible indicator rule. */\n// \t\t\t\t\tconst check = Object(rules[index])\n// \t\t\t\t\tif (check.selectorText && check.selectorText.includes('@media')) {\n// \t\t\t\t\t\tif (!sheetInstance) sheetInstance = {sheet, reset, rules: sheet.cssRules}\n// \t\t\t\t\t\tbreak\n// \t\t\t\t\t}\n//\n// \t\t\t\t}\n//\n// \t\t\t\t// if a hydratable stylesheet is found, stop looking\n// \t\t\t\tif (sheetInstance) break\n// \t\t\t}\n// \t\t\t// if no hydratable stylesheet is found\n// \t\t\tif (!sheetInstance) {\n// \t\t\t\tconst createCSSMediaRule = (sourceCssText: string) => {\n// \t\t\t\t\tlet rule: any = {\n// \t\t\t\t\t\tcssRules: [],\n// \t\t\t\t\t\tinsertRule(cssText: string, index: number) {\n// \t\t\t\t\t\t\tthis.cssRules.splice(index, 0, createCSSMediaRule(cssText))\n// \t\t\t\t\t\t},\n// \t\t\t\t\t\tget cssText() {\n// \t\t\t\t\t\t\treturn sourceCssText === '@media{}' ? `@media{${[].map.call(this.cssRules, (cssRule: any) => cssRule.cssText).join('')}}` : sourceCssText\n// \t\t\t\t\t\t}\n// \t\t\t\t\t}\n// \t\t\t\t\treturn rule\n// \t\t\t\t}\n//\n// \t\t\t\tsheetInstance = {\n// \t\t\t\t\tsheet: root ? (root.head || root).appendChild(root.createElement('style')).sheet : createCSSMediaRule(''),\n// \t\t\t\t\trules: {},\n// \t\t\t\t\treset,\n// \t\t\t\t\ttoString() {\n// \t\t\t\t\t\tconst {cssRules} = sheetInstance.sheet\n// \t\t\t\t\t\treturn [].map\n// \t\t\t\t\t\t\t.call(cssRules, (cssMediaRule: CSSMediaRule, cssRuleIndex) => {\n// \t\t\t\t\t\t\t\tconst {cssText} = cssMediaRule\n//\n// \t\t\t\t\t\t\t\tlet lastRuleCssText = ''\n// \t\t\t\t\t\t\t\tif (cssRules[cssRuleIndex - 1]) {\n// \t\t\t\t\t\t\t\t\tif (!cssMediaRule.cssRules.length) return ''\n//\n// \t\t\t\t\t\t\t\t\tfor (const name in sheetInstance.rules) {\n// \t\t\t\t\t\t\t\t\t\tif (sheetInstance.rules[name].group === cssMediaRule) {\n// \t\t\t\t\t\t\t\t\t\t\treturn `--sxs{--sxs:${[...sheetInstance.rules[name].cache].join(' ')}}${cssText}`\n// \t\t\t\t\t\t\t\t\t\t}\n// \t\t\t\t\t\t\t\t\t}\n//\n// \t\t\t\t\t\t\t\t\treturn cssMediaRule.cssRules.length ? `${lastRuleCssText}${cssText}` : ''\n// \t\t\t\t\t\t\t\t}\n//\n// \t\t\t\t\t\t\t\treturn cssText\n// \t\t\t\t\t\t\t})\n// \t\t\t\t\t\t\t.join('')\n// \t\t\t\t\t}\n// \t\t\t\t}\n// \t\t\t}\n// \t\t}\n//\n// \t}\n//\n// }\n\nexport type WeaverseType = {\n\t[key: string]: any\n\tappUrl?: string,\n\tprojectKey?: string,\n\tprojectData?: ProjectDataType\n}\n\nexport class Weaverse {\n\telementInstances = new Map<string, any>()\n\titemInstances = new Map<string | number, WeaverseItemStore>()\n\tappUrl: string = process.env.NODE_ENV === 'development' ? 'http://localhost:3000' : 'https://weaverse.io'\n\tprojectKey: string = ''\n\tprojectData: ProjectDataType = {\n\t\titems: []\n\t}\n\tlisteners: Set<any> = new Set()\n\tisEditor = false\n\tcurrentFrameSubscription: any\n\n\tconstructor({appUrl, projectKey, projectData}: WeaverseType = {}) {\n\t\tthis.appUrl = appUrl || this.appUrl\n\t\tthis.projectKey = projectKey || this.projectKey\n\t\tprojectData && (this.projectData = projectData)\n\t\tthis.init()\n\t}\n\n\tregisterElement(name: string, element: any) {\n\t\tthis.elementInstances.set(name, element)\n\t}\n\n\tinit() {\n\t\tthis.subscribeMessageEvent()\n\t}\n\n\tsubscribe(fn: any) {\n\t\tthis.listeners.add(fn)\n\t}\n\n\tunsubscribe(fn: any) {\n\t\tthis.listeners.delete(fn)\n\t}\n\n\ttriggerUpdate() {\n\t\tthis.listeners.forEach(fn => fn())\n\t\tthis.triggerEditorUpdate()\n\t}\n\n\tfetchProjectData() {\n\t\treturn fetch(this.appUrl + `/api/public/${this.projectKey}`).then(r => r.json())\n\t}\n\n\tupdateProjectData() {\n\t\tif (this.projectKey) {\n\t\t\tthis.fetchProjectData().then(data => {\n\t\t\t\tif (data) {\n\t\t\t\t\tthis.projectData = data\n\t\t\t\t\tthis.initItemData()\n\t\t\t\t\tthis.triggerUpdate()\n\t\t\t\t}\n\t\t\t}).catch(err => {\n\t\t\t\tconsole.error(err)\n\t\t\t})\n\t\t}\n\t}\n\n\tsubscribeMessageEvent() {\n\t\tif (typeof this.currentFrameSubscription === 'function') {\n\t\t\tthis.currentFrameSubscription()\n\t\t}\n\t\tisBrowser && window.addEventListener('message', this.handleMessageEvent)\n\t\tthis.currentFrameSubscription = () => {\n\t\t\tisBrowser && window.removeEventListener('message', this.handleMessageEvent)\n\t\t}\n\t\treturn this.currentFrameSubscription\n\t}\n\n\ttriggerEditorUpdate(type = 'weaverse.workspace.init') {\n\t\tif (this.isEditor) {\n\t\t\twindow.top?.postMessage({\n\t\t\t\ttype, payload: {\n\t\t\t\t\tprojectKey: this.projectKey,\n\t\t\t\t\tprojectData: this.projectData\n\t\t\t\t}\n\t\t\t}, '*')\n\t\t}\n\t}\n\n\thandleMessageEvent = (e: MessageEvent) => {\n\t\tif (e.data?.type?.startsWith('weaverse.')) {\n\t\t\tlet type = e.data.type\n\t\t\tswitch (type) {\n\t\t\t\tcase 'weaverse.editor.ready':\n\t\t\t\t\tthis.isEditor = true\n\t\t\t\t\tbreak\n\t\t\t\tcase 'weaverse.editor.update':\n\t\t\t\t\tlet {payload} = e.data\n\t\t\t\t\tlet {itemId, background} = payload\n\t\t\t\t\tlet instance = this.itemInstances.get(itemId)\n\t\t\t\t\tif (instance) {\n\t\t\t\t\t\tinstance.setData({\n\t\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t\tbackground\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tinitItemData() {\n\t\tlet data = this.projectData\n\t\tif (data.items) {\n\t\t\tdata.items.forEach(item => {\n\t\t\t\tlet itemStore = this.itemInstances.get(item.id) || new WeaverseItemStore(item, this)\n\t\t\t\tthis.itemInstances.set(item.id, itemStore)\n\t\t\t})\n\t\t}\n\t}\n}\n\nexport class WeaverseItemStore {\n\tdata: any = {}\n\tlisteners: Set<any> = new Set()\n\tComponent: any\n\n\tconstructor(itemData: any = {}, weaverse: Weaverse) {\n\t\tthis.data = itemData\n\t\tlet {type} = itemData\n\t\tif (type) {\n\t\t\tthis.Component = weaverse.elementInstances.get(type)\n\t\t}\n\t}\n\n\tsetData = (data: any) => {\n\t\tthis.data = Object.assign(this.data, data)\n\t\tthis.triggerUpdate()\n\t}\n\n\tsubscribe = (fn: any) => {\n\t\tthis.listeners.add(fn)\n\t}\n\n\tunsubscribe = (fn: any) => {\n\t\tthis.listeners.delete(fn)\n\t}\n\n\ttriggerUpdate = () => {\n\t\tthis.listeners.forEach(fn => {\n\t\t\treturn fn(this.data)\n\t\t})\n\t}\n\n\n\n\t// addItem(item: any) {\n\t// \tthis.items.push(item)\n\t// \tthis.triggerUpdate()\n\t// }\n\t//\n\t// removeItem(item: any) {\n\t// \tthis.items = this.items.filter(i => i !== item)\n\t// \tthis.triggerUpdate()\n\t// }\n}","import * as React from 'react'\n\nexport const Button = (props: any) => {\n let [count, setCount] = React.useState(0)\n return <button {...props} onClick={() => setCount(count + 1)}>Test Button {count}</button>\n}\n\nButton.defaultProps = {\n style: {\n backgroundColor: 'green',\n borderRadius: '9999px',\n fontSize: '13px',\n padding: '10px 15px'\n },\n type: 'button',\n tag: 'button'\n}\nButton.configs = {\n type: 'button'\n}\n\nexport default Button","import React from 'react'\n\nexport const BaseElement = ({tag = 'div', children, ...props}: any) => {\n return React.createElement(tag, {\n ...props\n }, children)\n}\n\nBaseElement.configs = {\n type: 'base'\n}\nexport default BaseElement\n","import Button from './button'\nimport BaseElement from './base'\n\nconst elements = {\n\tButton,\n\tBaseElement\n}\nexport default elements","import * as React from 'react'\nimport {useEffect} from 'react'\nimport {Weaverse, WeaverseType} from './core'\nimport Elements from './elements'\n\nlet stitches = require('@stitches/core')\n\nconst createRootContext = (configs: WeaverseType) => {\n const rootContext = new Weaverse(configs)\n Object.keys(Elements).forEach(key => {\n // @ts-ignore\n Elements[key]?.configs?.type && rootContext.registerElement(Elements[key].configs.type, Elements[key])\n })\n\n return rootContext\n}\n\nconst WeaverseRoot = ({context, defaultData}: { context: Weaverse, defaultData: any }) => {\n let [, setData] = React.useState<any>(context.projectData)\n useEffect(() => {\n let handleUpdate = () => {\n setData(context.projectData)\n }\n context.subscribe(handleUpdate)\n context.updateProjectData()\n\n return () => {\n context.unsubscribe(handleUpdate)\n }\n }, [])\n if (!context.projectData?.items?.length && defaultData) {\n context.projectData = defaultData\n context.initItemData()\n }\n return <RenderItem itemId={0} context={context}/>\n}\n\n\nconst Item = ({itemInstance, elementInstances, context}: any) => {\n let [data, setData] = React.useState<any>(itemInstance.data)\n let {id, type, childIds, ...rest} = data\n\n useEffect(() => {\n let handleUpdate = (update: any) => {\n setData({...update})\n }\n itemInstance.subscribe(handleUpdate)\n return () => {\n itemInstance.unsubscribe(handleUpdate)\n }\n }, [])\n let Component = elementInstances.get(type)\n if (Component) {\n return <Component key={id} data-wv-id={id} {...rest}>\n {Array.isArray(childIds)\n && childIds.map(childId =>\n <RenderItem\n key={childId}\n itemId={childId}\n context={context}\n />\n )}\n </Component>\n }\n return null\n}\n\n\nconst RenderItem = ({itemId, context}: { itemId: number, context: any }): any => {\n let {itemInstances, elementInstances} = context\n let itemInstance = itemInstances.get(itemId)\n if (itemInstance) {\n return <Item itemInstance={itemInstance} elementInstances={elementInstances} context={context}/>\n }\n return <></>\n}\n\nexport {createRootContext, WeaverseRoot}\n"],"names":["isReactNative","navigator","product","isBrowser","window","Weaverse","appUrl","projectKey","projectData","Map","process","env","NODE_ENV","items","Set","e","data","type","startsWith","isEditor","payload","itemId","background","instance","itemInstances","get","setData","style","init","registerElement","name","element","elementInstances","set","subscribeMessageEvent","subscribe","fn","listeners","add","unsubscribe","triggerUpdate","forEach","triggerEditorUpdate","fetchProjectData","fetch","then","r","json","updateProjectData","initItemData","err","console","error","currentFrameSubscription","addEventListener","handleMessageEvent","removeEventListener","top","postMessage","item","itemStore","id","WeaverseItemStore","itemData","weaverse","Object","assign","Component","Button","props","React","count","setCount","onClick","defaultProps","backgroundColor","borderRadius","fontSize","padding","tag","configs","BaseElement","children","createElement","elements","createRootContext","rootContext","keys","Elements","key","WeaverseRoot","context","defaultData","useEffect","handleUpdate","length","RenderItem","Item","itemInstance","childIds","rest","update","Array","isArray","map","childId"],"mappings":"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"}
1
+ {"version":3,"file":"sdk-react.esm.js","sources":["../src/elements/button.tsx","../src/elements/base.tsx","../src/elements/grid.tsx","../src/elements/index.ts","../src/renderer.tsx"],"sourcesContent":["import * as React from 'react'\n\nexport const Button = React.forwardRef((props: any, ref) => {\n let [count, setCount] = React.useState(0)\n return <button ref={ref} {...props} onClick={() => setCount(count + 1)}>Test Button {count}</button>\n})\n\nButton.defaultProps = {\n style: {\n backgroundColor: 'green',\n borderRadius: '9999px',\n fontSize: '13px',\n padding: '10px 15px'\n },\n type: 'button',\n tag: 'button'\n}\n\nexport default Button","import React from 'react'\n\nexport const BaseElement = React.forwardRef((({tag, children, ...props}: any, ref) => {\n return React.createElement(tag, {\n ref,\n ...props\n }, children)\n}))\n\nBaseElement.defaultProps = {\n type: 'base',\n tag: 'div',\n style: {}\n}\nexport default BaseElement\n","import React from 'react'\n\nexport default function Grid(props: any) {\n return <div {...props} />\n}\n\nGrid.defaultProps = {\n style: {\n display: 'grid',\n gridTemplate: '1fr / 1fr'\n },\n type: 'grid'\n}","import Button from './button'\nimport BaseElement from './base'\nimport Grid from './grid'\n\nconst elements = {\n Button,\n BaseElement,\n Grid\n}\nexport default elements","import * as React from 'react'\nimport {isBrowser, Weaverse, WeaverseItemStore, WeaverseType} from '@weaverse/core'\nimport Elements from './elements'\n\nexport const createRootContext = (configs: WeaverseType) => {\n const rootContext = new Weaverse(configs)\n // Register the element components\n Object.keys(Elements).forEach(key => {\n // @ts-ignore\n Elements[key]?.defaultProps?.type && rootContext.registerElement(Elements[key].defaultProps.type, Elements[key])\n })\n return rootContext\n}\n\nexport const WeaverseRoot = ({context, defaultData}: { context: Weaverse, defaultData: any }) => {\n let [, setData] = React.useState<any>(context.projectData)\n React.useEffect(() => {\n let handleUpdate = () => {\n setData({...context.projectData})\n }\n context.subscribe(handleUpdate)\n context.updateProjectData()\n return () => {\n context.unsubscribe(handleUpdate)\n }\n }, [])\n if (!context.projectData?.items?.length && defaultData) {\n context.projectData = defaultData\n context.initItemData()\n }\n let handleProps = context?.studioBridge?.handleProps || {}\n console.log('handleProps', handleProps)\n return <div {...handleProps}>\n <RenderItem itemId={0} context={context}/>\n </div>\n}\n\n\ntype ItemProps = {\n itemInstance: WeaverseItemStore\n elementInstances: Map<string, React.FC>\n context: Weaverse\n}\n\n\nconst Item = ({itemInstance, elementInstances, context}: ItemProps) => {\n let [data, setData] = React.useState<any>(itemInstance.data)\n let {id, type, childIds, css, className, ...rest} = data\n React.useEffect(() => {\n let handleUpdate = (update: any) => {\n setData({...update})\n }\n itemInstance.subscribe(handleUpdate)\n if (!itemInstance.ref.current && isBrowser) {\n Object.assign(itemInstance.ref, {current: document.querySelector(`[data-wv-id=\"${id}\"]`)})\n }\n\n return () => {\n itemInstance.unsubscribe(handleUpdate)\n }\n }, [])\n\n let realClassName = className || ''\n if (css) {\n\n // let stitches create the style from css object and\n // then return the classname, so we can use it in the render\n let selector = (context.stitchesInstance.css(css)()).className\n realClassName += ' ' + selector\n }\n let Component = elementInstances.get(type)\n if (Component) {\n // @ts-ignore\n if (Component.$$typeof === Symbol.for('react.forward_ref')) {\n rest.ref = itemInstance.ref\n }\n return <Component key={id} data-wv-id={id} {...rest} className={realClassName}>\n {Array.isArray(childIds)\n && childIds.map(childId =>\n <RenderItem\n key={childId}\n itemId={childId}\n context={context}\n />\n )}\n </Component>\n }\n return null\n}\n\nconst RenderItem = ({itemId, context}: { itemId: number, context: any }): any => {\n let {itemInstances, elementInstances} = context\n let itemInstance = itemInstances.get(itemId)\n if (itemInstance) {\n return <Item itemInstance={itemInstance} elementInstances={elementInstances} context={context}/>\n }\n return <></>\n}\n\n"],"names":["Button","React","props","ref","count","setCount","onClick","defaultProps","style","backgroundColor","borderRadius","fontSize","padding","type","tag","BaseElement","forwardRef","children","createElement","Grid","display","gridTemplate","elements","createRootContext","configs","rootContext","Weaverse","Object","keys","Elements","forEach","key","registerElement","WeaverseRoot","context","defaultData","projectData","setData","handleUpdate","subscribe","updateProjectData","unsubscribe","items","length","initItemData","handleProps","studioBridge","console","log","RenderItem","itemId","Item","itemInstance","elementInstances","data","id","childIds","css","className","rest","update","current","isBrowser","assign","document","querySelector","realClassName","selector","stitchesInstance","Component","get","$$typeof","Symbol","Array","isArray","map","childId","itemInstances"],"mappings":"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"}
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.1.7",
2
+ "version": "0.1.11",
3
3
  "license": "MIT",
4
4
  "main": "dist/index.js",
5
5
  "typings": "dist/index.d.ts",
@@ -7,8 +7,7 @@
7
7
  "access": "public"
8
8
  },
9
9
  "files": [
10
- "dist",
11
- "src"
10
+ "dist"
12
11
  ],
13
12
  "engines": {
14
13
  "node": ">=10"
@@ -24,7 +23,8 @@
24
23
  "analyze": "size-limit --why"
25
24
  },
26
25
  "peerDependencies": {
27
- "react": ">=16"
26
+ "react": ">=17",
27
+ "react-dom": ">=17"
28
28
  },
29
29
  "husky": {
30
30
  "hooks": {
@@ -38,7 +38,7 @@
38
38
  "trailingComma": "es5"
39
39
  },
40
40
  "name": "@weaverse/react",
41
- "author": "Paul Phan",
41
+ "author": "Weaverse Team",
42
42
  "module": "dist/sdk-react.esm.js",
43
43
  "size-limit": [
44
44
  {
@@ -51,19 +51,17 @@
51
51
  }
52
52
  ],
53
53
  "devDependencies": {
54
- "@size-limit/preset-small-lib": "^7.0.4",
55
- "@types/react": "^17.0.37",
54
+ "@size-limit/preset-small-lib": "^7.0.8",
55
+ "@types/react": "^17.0.39",
56
56
  "@types/react-dom": "^17.0.11",
57
+ "@types/react-is": "^17.0.3",
57
58
  "husky": "^7.0.4",
58
- "react": "^17.0.2",
59
- "react-dom": "^17.0.2",
60
- "size-limit": "^7.0.4",
59
+ "size-limit": "^7.0.8",
61
60
  "tsdx": "^0.14.1",
62
61
  "tslib": "^2.3.1",
63
- "typescript": "^4.5.4"
62
+ "typescript": "^4.5.5"
64
63
  },
65
64
  "dependencies": {
66
- "@stitches/core": "^1.2.6",
67
- "isomorphic-unfetch": "^3.1.0"
65
+ "@weaverse/core": "^0.2.4"
68
66
  }
69
67
  }
package/dist/core.d.ts DELETED
@@ -1,46 +0,0 @@
1
- export interface ProjectDataItemType {
2
- type: string;
3
- name: string;
4
- id: string | number;
5
- }
6
- export interface ProjectDataType {
7
- items: ProjectDataItemType[];
8
- }
9
- export declare type WeaverseType = {
10
- [key: string]: any;
11
- appUrl?: string;
12
- projectKey?: string;
13
- projectData?: ProjectDataType;
14
- };
15
- export declare class Weaverse {
16
- elementInstances: Map<string, any>;
17
- itemInstances: Map<string | number, WeaverseItemStore>;
18
- appUrl: string;
19
- projectKey: string;
20
- projectData: ProjectDataType;
21
- listeners: Set<any>;
22
- isEditor: boolean;
23
- currentFrameSubscription: any;
24
- constructor({ appUrl, projectKey, projectData }?: WeaverseType);
25
- registerElement(name: string, element: any): void;
26
- init(): void;
27
- subscribe(fn: any): void;
28
- unsubscribe(fn: any): void;
29
- triggerUpdate(): void;
30
- fetchProjectData(): Promise<any>;
31
- updateProjectData(): void;
32
- subscribeMessageEvent(): any;
33
- triggerEditorUpdate(type?: string): void;
34
- handleMessageEvent: (e: MessageEvent) => void;
35
- initItemData(): void;
36
- }
37
- export declare class WeaverseItemStore {
38
- data: any;
39
- listeners: Set<any>;
40
- Component: any;
41
- constructor(itemData: any, weaverse: Weaverse);
42
- setData: (data: any) => void;
43
- subscribe: (fn: any) => void;
44
- unsubscribe: (fn: any) => void;
45
- triggerUpdate: () => void;
46
- }
@@ -1,3 +0,0 @@
1
- export declare const isReactNative: boolean;
2
- export declare const isBrowser: boolean;
3
- export declare const isIframe: boolean;