@weaverse/react 0.1.6 → 0.1.10

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.
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ export declare const BaseElement: React.ForwardRefExoticComponent<Pick<any, string | number | symbol> & React.RefAttributes<unknown>>;
3
+ export default BaseElement;
@@ -0,0 +1,3 @@
1
+ import * as React from 'react';
2
+ export declare const Button: React.ForwardRefExoticComponent<Pick<any, string | number | symbol> & React.RefAttributes<unknown>>;
3
+ export default Button;
@@ -0,0 +1,12 @@
1
+ /// <reference types="react" />
2
+ declare function Grid(props: any): JSX.Element;
3
+ declare namespace Grid {
4
+ var defaultProps: {
5
+ style: {
6
+ display: string;
7
+ gridTemplate: string;
8
+ };
9
+ type: string;
10
+ };
11
+ }
12
+ export default Grid;
@@ -0,0 +1,8 @@
1
+ /// <reference types="react" />
2
+ import Grid from './grid';
3
+ declare const elements: {
4
+ Button: import("react").ForwardRefExoticComponent<Pick<any, string | number | symbol> & import("react").RefAttributes<unknown>>;
5
+ BaseElement: import("react").ForwardRefExoticComponent<Pick<any, string | number | symbol> & import("react").RefAttributes<unknown>>;
6
+ Grid: typeof Grid;
7
+ };
8
+ export default elements;
package/dist/index.d.ts CHANGED
@@ -1,6 +1 @@
1
- import { Weaverse } from './core';
2
- declare const WeaverseRoot: ({ context, defaultData }: {
3
- context: Weaverse;
4
- defaultData: any;
5
- }) => JSX.Element;
6
- export { Weaverse, WeaverseRoot };
1
+ export { WeaverseRoot, createRootContext } from './renderer';
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ import { Weaverse, WeaverseType } from '@weaverse/core';
3
+ export declare const createRootContext: (configs: WeaverseType) => Weaverse;
4
+ export declare const WeaverseRoot: ({ context, defaultData }: {
5
+ context: Weaverse;
6
+ defaultData: any;
7
+ }) => JSX.Element;
@@ -5,8 +5,8 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
6
6
 
7
7
  var React = require('react');
8
- var fetch = _interopDefault(require('isomorphic-unfetch'));
9
- var Elements = _interopDefault(require('@weaverse/elements'));
8
+ var React__default = _interopDefault(React);
9
+ var core = require('@weaverse/core');
10
10
 
11
11
  function _extends() {
12
12
  _extends = Object.assign || function (target) {
@@ -41,311 +41,78 @@ function _objectWithoutPropertiesLoose(source, excluded) {
41
41
  return target;
42
42
  }
43
43
 
44
- var isReactNative = typeof navigator === 'object' && navigator.product === 'ReactNative';
45
- var isBrowser = typeof window !== 'undefined' && !isReactNative;
44
+ var Button = /*#__PURE__*/React.forwardRef(function (props, ref) {
45
+ var _React$useState = React.useState(0),
46
+ count = _React$useState[0],
47
+ setCount = _React$useState[1];
46
48
 
47
- // TODO: Implement Weaverse SDK class
48
- var Weaverse = /*#__PURE__*/function () {
49
- function Weaverse(_temp) {
50
- var _this = this;
51
-
52
- var _ref = _temp === void 0 ? {} : _temp,
53
- appUrl = _ref.appUrl,
54
- projectKey = _ref.projectKey,
55
- projectData = _ref.projectData;
56
-
57
- this.elementInstances = new Map();
58
- this.itemInstances = new Map();
59
- this.appUrl = 'http://localhost:3000' ;
60
- this.projectKey = '';
61
- this.projectData = {
62
- items: []
63
- };
64
- this.listeners = new Set();
65
- this.isEditor = false;
66
-
67
- this.handleMessageEvent = function (e) {
68
- var _e$data, _e$data$type;
69
-
70
- if ((_e$data = e.data) != null && (_e$data$type = _e$data.type) != null && _e$data$type.startsWith('weaverse.')) {
71
- var type = e.data.type;
72
-
73
- switch (type) {
74
- case 'weaverse.editor.ready':
75
- _this.isEditor = true;
76
- break;
77
-
78
- case 'weaverse.editor.update':
79
- var payload = e.data.payload;
80
- var itemId = payload.itemId,
81
- background = payload.background;
82
-
83
- var instance = _this.itemInstances.get(itemId);
84
-
85
- if (instance) {
86
- instance.setData({
87
- style: {
88
- background: background
89
- }
90
- });
91
- }
92
-
93
- }
94
- }
95
- };
96
-
97
- this.appUrl = appUrl || this.appUrl;
98
- this.projectKey = projectKey || this.projectKey;
99
- projectData && (this.projectData = projectData);
100
- this.init();
101
- console.log('"development"', "development");
102
- }
103
-
104
- var _proto = Weaverse.prototype;
105
-
106
- _proto.registerElement = function registerElement(name, element) {
107
- this.elementInstances.set(name, element);
108
- };
109
-
110
- _proto.init = function init() {
111
- var _this2 = this;
112
-
113
- Object.keys(Elements).forEach(function (key) {
114
- var _Elements$key, _Elements$key$configs;
115
-
116
- // @ts-ignore
117
- ((_Elements$key = Elements[key]) == null ? void 0 : (_Elements$key$configs = _Elements$key.configs) == null ? void 0 : _Elements$key$configs.type) && _this2.registerElement(Elements[key].configs.type, Elements[key]);
118
- });
119
- this.subscribeMessageEvent();
120
- };
121
-
122
- _proto.subscribe = function subscribe(fn) {
123
- this.listeners.add(fn);
124
- };
125
-
126
- _proto.unsubscribe = function unsubscribe(fn) {
127
- this.listeners["delete"](fn);
128
- };
129
-
130
- _proto.triggerUpdate = function triggerUpdate() {
131
- this.listeners.forEach(function (fn) {
132
- return fn();
133
- });
134
- this.triggerEditorUpdate();
135
- };
136
-
137
- _proto.fetchProjectData = function fetchProjectData() {
138
- return fetch(this.appUrl + ("/api/public/" + this.projectKey)).then(function (r) {
139
- return r.json();
140
- });
141
- };
142
-
143
- _proto.updateProjectData = function updateProjectData() {
144
- var _this3 = this;
145
-
146
- if (this.projectKey) {
147
- this.fetchProjectData().then(function (data) {
148
- if (data) {
149
- _this3.projectData = data;
150
-
151
- _this3.initItemData();
152
-
153
- _this3.triggerUpdate();
154
- }
155
- })["catch"](function (err) {
156
- console.error(err);
157
- });
158
- }
159
- };
160
-
161
- _proto.subscribeMessageEvent = function subscribeMessageEvent() {
162
- var _this4 = this;
163
-
164
- if (typeof this.currentFrameSubscription === 'function') {
165
- this.currentFrameSubscription();
166
- }
167
-
168
- isBrowser && window.addEventListener('message', this.handleMessageEvent);
169
-
170
- this.currentFrameSubscription = function () {
171
- isBrowser && window.removeEventListener('message', _this4.handleMessageEvent);
172
- };
173
-
174
- return this.currentFrameSubscription;
175
- };
176
-
177
- _proto.triggerEditorUpdate = function triggerEditorUpdate(type) {
178
- if (type === void 0) {
179
- type = 'weaverse.workspace.init';
180
- }
181
-
182
- if (this.isEditor) {
183
- var _window$top;
184
-
185
- (_window$top = window.top) == null ? void 0 : _window$top.postMessage({
186
- type: type,
187
- payload: {
188
- projectKey: this.projectKey,
189
- projectData: this.projectData
190
- }
191
- }, '*');
49
+ return React.createElement("button", Object.assign({
50
+ ref: ref
51
+ }, props, {
52
+ onClick: function onClick() {
53
+ return setCount(count + 1);
192
54
  }
193
- };
194
-
195
- _proto.initItemData = function initItemData() {
196
- var _this5 = this;
197
-
198
- var data = this.projectData;
199
-
200
- if (data.items) {
201
- data.items.forEach(function (item) {
202
- var itemStore = _this5.itemInstances.get(item.id) || new WeaverseItemStore(item, _this5);
203
-
204
- _this5.itemInstances.set(item.id, itemStore);
205
- });
206
- }
207
- };
208
-
209
- return Weaverse;
210
- }();
211
- var WeaverseItemStore = function WeaverseItemStore(itemData, weaverse) {
212
- var _this6 = this;
213
-
214
- if (itemData === void 0) {
215
- itemData = {};
216
- }
217
-
218
- this.data = {};
219
- this.listeners = new Set();
220
-
221
- this.setData = function (data) {
222
- _this6.data = Object.assign(_this6.data, data);
223
-
224
- _this6.triggerUpdate();
225
- };
226
-
227
- this.subscribe = function (fn) {
228
- _this6.listeners.add(fn);
229
- };
230
-
231
- this.unsubscribe = function (fn) {
232
- _this6.listeners["delete"](fn);
233
- };
234
-
235
- this.triggerUpdate = function () {
236
- _this6.listeners.forEach(function (fn) {
237
- return fn(_this6.data);
238
- });
239
- };
240
-
241
- this.useSubscription = function (fn) {
242
- React.useEffect(function () {
243
- _this6.subscribe(fn);
244
-
245
- return function () {
246
- _this6.unsubscribe(fn);
247
- };
248
- }, []);
249
- };
250
-
251
- this.data = itemData;
252
- var _itemData = itemData,
253
- type = _itemData.type;
254
-
255
- if (type) {
256
- this.Component = weaverse.elementInstances.get(type);
257
- }
55
+ }), "Test Button ", count);
56
+ });
57
+ Button.defaultProps = {
58
+ style: {
59
+ backgroundColor: 'green',
60
+ borderRadius: '9999px',
61
+ fontSize: '13px',
62
+ padding: '10px 15px'
63
+ },
64
+ type: 'button',
65
+ tag: 'button'
258
66
  };
259
67
 
260
- var _excluded = ["id", "type", "childIds"];
261
-
262
- var WeaverseRoot = function WeaverseRoot(_ref) {
263
- var _context$projectData, _context$projectData$;
264
-
265
- var context = _ref.context,
266
- defaultData = _ref.defaultData;
267
-
268
- var _React$useState = React.useState(context.projectData),
269
- setData = _React$useState[1];
270
-
271
- React.useEffect(function () {
272
- var handleUpdate = function handleUpdate() {
273
- setData(context.projectData);
274
- };
275
-
276
- context.subscribe(handleUpdate);
277
- context.updateProjectData();
278
- return function () {
279
- context.unsubscribe(handleUpdate);
280
- };
281
- }, []);
282
-
283
- if (!((_context$projectData = context.projectData) != null && (_context$projectData$ = _context$projectData.items) != null && _context$projectData$.length) && defaultData) {
284
- context.projectData = defaultData;
285
- context.initItemData();
286
- }
68
+ var _excluded = ["tag", "children"];
69
+ var BaseElement = /*#__PURE__*/React__default.forwardRef(function (_ref, ref) {
70
+ var tag = _ref.tag,
71
+ children = _ref.children,
72
+ props = _objectWithoutPropertiesLoose(_ref, _excluded);
73
+
74
+ return React__default.createElement(tag, _extends({
75
+ ref: ref
76
+ }, props), children);
77
+ });
78
+ BaseElement.defaultProps = {
79
+ type: 'base',
80
+ tag: 'div',
81
+ style: {}
82
+ };
287
83
 
288
- return React.createElement(RenderItem, {
289
- itemId: 0,
290
- context: context
291
- });
84
+ function Grid(props) {
85
+ return React__default.createElement("div", Object.assign({}, props));
86
+ }
87
+ Grid.defaultProps = {
88
+ style: {
89
+ display: 'grid',
90
+ gridTemplate: '1fr / 1fr'
91
+ },
92
+ type: 'grid'
292
93
  };
293
94
 
294
- var Item = function Item(_ref2) {
295
- var itemInstance = _ref2.itemInstance,
296
- elementInstances = _ref2.elementInstances,
297
- context = _ref2.context;
95
+ var elements = {
96
+ Button: Button,
97
+ BaseElement: BaseElement,
98
+ Grid: Grid
99
+ };
298
100
 
299
- var _React$useState2 = React.useState(itemInstance.data),
300
- data = _React$useState2[0],
301
- setData = _React$useState2[1];
101
+ var createRootContext = function createRootContext(configs) {
102
+ var rootContext = new core.Weaverse(configs); // Register the element components
302
103
 
303
- var id = data.id,
304
- type = data.type,
305
- childIds = data.childIds,
306
- rest = _objectWithoutPropertiesLoose(data, _excluded);
104
+ Object.keys(elements).forEach(function (key) {
105
+ var _Elements$key, _Elements$key$default;
307
106
 
308
- var useSubscription = itemInstance.useSubscription;
309
- useSubscription(function (update) {
310
- console.log('update', update);
311
- setData(_extends({}, update));
107
+ // @ts-ignore
108
+ ((_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]);
312
109
  });
313
- var Component = elementInstances.get(type);
314
-
315
- if (Component) {
316
- return React.createElement(Component, Object.assign({
317
- key: id,
318
- "data-wv-id": id
319
- }, rest), Array.isArray(childIds) && childIds.map(function (childId) {
320
- return React.createElement(RenderItem, {
321
- key: childId,
322
- itemId: childId,
323
- context: context
324
- });
325
- }));
326
- }
327
-
328
- return null;
110
+ return rootContext;
329
111
  };
330
-
331
- var RenderItem = function RenderItem(_ref3) {
332
- var itemId = _ref3.itemId,
333
- context = _ref3.context;
334
- var itemInstances = context.itemInstances,
335
- elementInstances = context.elementInstances;
336
- var itemInstance = itemInstances.get(itemId);
337
-
338
- if (itemInstance) {
339
- return React.createElement(Item, {
340
- itemInstance: itemInstance,
341
- elementInstances: elementInstances,
342
- context: context
343
- });
344
- }
345
-
346
- return React.createElement(React.Fragment, null);
112
+ var WeaverseRoot = function WeaverseRoot(_ref) {
113
+ return React.createElement("div", null, "hiii");
347
114
  };
348
115
 
349
- exports.Weaverse = Weaverse;
350
116
  exports.WeaverseRoot = WeaverseRoot;
117
+ exports.createRootContext = createRootContext;
351
118
  //# sourceMappingURL=sdk-react.cjs.development.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sdk-react.cjs.development.js","sources":["../src/utils/index.ts","../src/core.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 Elements from '@weaverse/elements'\nimport {useEffect} from 'react'\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\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({\n\t\t\t\t\tappUrl,\n\t\t\t\t\tprojectKey,\n\t\t\t\t\tprojectData\n\t\t\t\t}: { appUrl?: string, projectKey?: string, projectData?: ProjectDataType } = {}) {\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\tconsole.log('process.env.NODE_ENV', process.env.NODE_ENV)\n\t}\n\n\tregisterElement(name: string, element: any) {\n\t\tthis.elementInstances.set(name, element)\n\t}\n\n\tinit() {\n\t\tObject.keys(Elements).forEach(key => {\n\t\t\t// @ts-ignore\n\t\t\tElements[key]?.configs?.type && this.registerElement(Elements[key].configs.type, Elements[key])\n\t\t})\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\tuseSubscription = (fn: any) => {\n\t\tuseEffect(() => {\n\t\t\tthis.subscribe(fn)\n\t\t\treturn () => {\n\t\t\t\tthis.unsubscribe(fn)\n\t\t\t}\n\t\t}, [])\n\t}\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'\nimport {useEffect} from 'react'\nimport {Weaverse} from './core'\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\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 let {useSubscription} = itemInstance\n useSubscription((update: any) => {\n console.log('update', update)\n setData({...update})\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\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 {Weaverse, WeaverseRoot}\n"],"names":["isReactNative","navigator","product","isBrowser","window","Weaverse","appUrl","projectKey","projectData","Map","process","items","Set","e","data","type","startsWith","isEditor","payload","itemId","background","instance","itemInstances","get","setData","style","init","console","log","registerElement","name","element","elementInstances","set","Object","keys","Elements","forEach","key","configs","subscribeMessageEvent","subscribe","fn","listeners","add","unsubscribe","triggerUpdate","triggerEditorUpdate","fetchProjectData","fetch","then","r","json","updateProjectData","initItemData","err","error","currentFrameSubscription","addEventListener","handleMessageEvent","removeEventListener","top","postMessage","item","itemStore","id","WeaverseItemStore","itemData","weaverse","assign","useEffect","Component","WeaverseRoot","context","defaultData","React","handleUpdate","length","RenderItem","Item","itemInstance","childIds","rest","useSubscription","update","Array","isArray","map","childId"],"mappings":"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"}
1
+ {"version":3,"file":"sdk-react.cjs.development.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 return <div>hiii</div>\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"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEO,IAAMA,MAAM,gBAAGC,gBAAA,CAAiB,UAACC,KAAD,EAAaC,GAAb;AACrC,wBAAwBF,cAAA,CAAe,CAAf,CAAxB;AAAA,MAAKG,KAAL;AAAA,MAAYC,QAAZ;;AACA,SAAOJ,mBAAA,SAAA;AAAQE,IAAAA,GAAG,EAAEA;KAASD;AAAOI,IAAAA,OAAO,EAAE;AAAA,aAAMD,QAAQ,CAACD,KAAK,GAAG,CAAT,CAAd;AAAA;IAAtC,gBAAA,EAA8EA,KAA9E,CAAP;AACD,CAHqB,CAAf;AAKPJ,MAAM,CAACO,YAAP,GAAsB;AAClBC,EAAAA,KAAK,EAAE;AACHC,IAAAA,eAAe,EAAE,OADd;AAEHC,IAAAA,YAAY,EAAE,QAFX;AAGHC,IAAAA,QAAQ,EAAE,MAHP;AAIHC,IAAAA,OAAO,EAAE;AAJN,GADW;AAOlBC,EAAAA,IAAI,EAAE,QAPY;AAQlBC,EAAAA,GAAG,EAAE;AARa,CAAtB;;;ACPA,AAEO,IAAMC,WAAW,gBAAGd,cAAK,CAACe,UAAN,CAAkB,gBAAiCb,GAAjC;MAAEW,WAAAA;MAAKG,gBAAAA;MAAaf;;AAC/D,SAAOD,cAAK,CAACiB,aAAN,CAAoBJ,GAApB;AACLX,IAAAA,GAAG,EAAHA;AADK,KAEFD,KAFE,GAGJe,QAHI,CAAP;AAID,CAL0B,CAApB;AAOPF,WAAW,CAACR,YAAZ,GAA2B;AACzBM,EAAAA,IAAI,EAAE,MADmB;AAEzBC,EAAAA,GAAG,EAAE,KAFoB;AAGzBN,EAAAA,KAAK,EAAE;AAHkB,CAA3B;;SCPwBW,KAAKjB;AAC3B,SAAOD,4BAAA,MAAA,oBAASC,MAAT,CAAP;AACD;AAEDiB,IAAI,CAACZ,YAAL,GAAoB;AAClBC,EAAAA,KAAK,EAAE;AACLY,IAAAA,OAAO,EAAE,MADJ;AAELC,IAAAA,YAAY,EAAE;AAFT,GADW;AAKlBR,EAAAA,IAAI,EAAE;AALY,CAApB;;ACFA,IAAMS,QAAQ,GAAG;AACftB,EAAAA,MAAM,EAANA,MADe;AAEfe,EAAAA,WAAW,EAAXA,WAFe;AAGfI,EAAAA,IAAI,EAAJA;AAHe,CAAjB;;ICAaI,iBAAiB,GAAG,SAApBA,iBAAoB,CAACC,OAAD;AAC/B,MAAMC,WAAW,GAAG,IAAIC,aAAJ,CAAaF,OAAb,CAApB;;AAEAG,EAAAA,MAAM,CAACC,IAAP,CAAYC,QAAZ,EAAsBC,OAAtB,CAA8B,UAAAC,GAAG;;;AAC/B;AACA,sBAAAF,QAAQ,CAACE,GAAD,CAAR,4DAAexB,YAAf,2CAA6BM,IAA7B,KAAqCY,WAAW,CAACO,eAAZ,CAA4BH,QAAQ,CAACE,GAAD,CAAR,CAAcxB,YAAd,CAA2BM,IAAvD,EAA6DgB,QAAQ,CAACE,GAAD,CAArE,CAArC;AACD,GAHD;AAIA,SAAON,WAAP;AACD,CARM;AAUP,IAAaQ,YAAY,GAAG,SAAfA,YAAe;AAC1B,SAAOhC,mBAAA,MAAA,MAAA,QAAA,CAAP;AAqBD,CAtBM;;;;;"}
@@ -1,2 +1,2 @@
1
- "use strict";function t(t){return t&&"object"==typeof t&&"default"in t?t.default:t}Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),n=t(require("isomorphic-unfetch")),i=t(require("@weaverse/elements"));function r(){return(r=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])}return t}).apply(this,arguments)}var s="object"==typeof navigator&&"ReactNative"===navigator.product,a="undefined"!=typeof window&&!s,c=function(){function t(t){var e=this,n=void 0===t?{}:t,i=n.appUrl,r=n.projectKey,s=n.projectData;this.elementInstances=new Map,this.itemInstances=new Map,this.appUrl="https://weaverse.io",this.projectKey="",this.projectData={items:[]},this.listeners=new Set,this.isEditor=!1,this.handleMessageEvent=function(t){var n,i;if(null!=(n=t.data)&&null!=(i=n.type)&&i.startsWith("weaverse."))switch(t.data.type){case"weaverse.editor.ready":e.isEditor=!0;break;case"weaverse.editor.update":var r=t.data.payload,s=r.background,a=e.itemInstances.get(r.itemId);a&&a.setData({style:{background:s}})}},this.appUrl=i||this.appUrl,this.projectKey=r||this.projectKey,s&&(this.projectData=s),this.init(),console.log('"production"',"production")}var e=t.prototype;return e.registerElement=function(t,e){this.elementInstances.set(t,e)},e.init=function(){var t=this;Object.keys(i).forEach((function(e){var n,r;(null==(n=i[e])||null==(r=n.configs)?void 0:r.type)&&t.registerElement(i[e].configs.type,i[e])})),this.subscribeMessageEvent()},e.subscribe=function(t){this.listeners.add(t)},e.unsubscribe=function(t){this.listeners.delete(t)},e.triggerUpdate=function(){this.listeners.forEach((function(t){return t()})),this.triggerEditorUpdate()},e.fetchProjectData=function(){return n(this.appUrl+"/api/public/"+this.projectKey).then((function(t){return t.json()}))},e.updateProjectData=function(){var t=this;this.projectKey&&this.fetchProjectData().then((function(e){e&&(t.projectData=e,t.initItemData(),t.triggerUpdate())})).catch((function(t){console.error(t)}))},e.subscribeMessageEvent=function(){var t=this;return"function"==typeof this.currentFrameSubscription&&this.currentFrameSubscription(),a&&window.addEventListener("message",this.handleMessageEvent),this.currentFrameSubscription=function(){a&&window.removeEventListener("message",t.handleMessageEvent)},this.currentFrameSubscription},e.triggerEditorUpdate=function(t){var e;void 0===t&&(t="weaverse.workspace.init"),this.isEditor&&(null==(e=window.top)||e.postMessage({type:t,payload:{projectKey:this.projectKey,projectData:this.projectData}},"*"))},e.initItemData=function(){var t=this,e=this.projectData;e.items&&e.items.forEach((function(e){var n=t.itemInstances.get(e.id)||new o(e,t);t.itemInstances.set(e.id,n)}))},t}(),o=function(t,n){var i=this;void 0===t&&(t={}),this.data={},this.listeners=new Set,this.setData=function(t){i.data=Object.assign(i.data,t),i.triggerUpdate()},this.subscribe=function(t){i.listeners.add(t)},this.unsubscribe=function(t){i.listeners.delete(t)},this.triggerUpdate=function(){i.listeners.forEach((function(t){return t(i.data)}))},this.useSubscription=function(t){e.useEffect((function(){return i.subscribe(t),function(){i.unsubscribe(t)}}),[])},this.data=t;var r=t.type;r&&(this.Component=n.elementInstances.get(r))},u=["id","type","childIds"],p=function(t){var n=t.itemInstance,i=t.elementInstances,s=t.context,a=e.useState(n.data),c=a[0],o=a[1],p=c.id,l=c.type,h=c.childIds,f=function(t,e){if(null==t)return{};var n,i,r={},s=Object.keys(t);for(i=0;i<s.length;i++)e.indexOf(n=s[i])>=0||(r[n]=t[n]);return r}(c,u);(0,n.useSubscription)((function(t){console.log("update",t),o(r({},t))}));var v=i.get(l);return v?e.createElement(v,Object.assign({key:p,"data-wv-id":p},f),Array.isArray(h)&&h.map((function(t){return e.createElement(d,{key:t,itemId:t,context:s})}))):null},d=function(t){var n=t.context,i=n.elementInstances,r=n.itemInstances.get(t.itemId);return r?e.createElement(p,{itemInstance:r,elementInstances:i,context:n}):e.createElement(e.Fragment,null)};exports.Weaverse=c,exports.WeaverseRoot=function(t){var n,i,r=t.context,s=t.defaultData,a=e.useState(r.projectData)[1];return e.useEffect((function(){var t=function(){a(r.projectData)};return r.subscribe(t),r.updateProjectData(),function(){r.unsubscribe(t)}}),[]),null!=(n=r.projectData)&&null!=(i=n.items)&&i.length||!s||(r.projectData=s,r.initItemData()),e.createElement(d,{itemId:0,context:r})};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e,t=require("react"),r=(e=t)&&"object"==typeof e&&"default"in e?e.default:e,n=require("@weaverse/core");function a(){return(a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}var o=t.forwardRef((function(e,r){var n=t.useState(0),a=n[0],o=n[1];return t.createElement("button",Object.assign({ref:r},e,{onClick:function(){return o(a+1)}}),"Test Button ",a)}));o.defaultProps={style:{backgroundColor:"green",borderRadius:"9999px",fontSize:"13px",padding:"10px 15px"},type:"button",tag:"button"};var u=["tag","children"],i=r.forwardRef((function(e,t){var n=e.tag,o=e.children,i=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)t.indexOf(r=o[n])>=0||(a[r]=e[r]);return a}(e,u);return r.createElement(n,a({ref:t},i),o)}));function l(e){return r.createElement("div",Object.assign({},e))}i.defaultProps={type:"base",tag:"div",style:{}},l.defaultProps={style:{display:"grid",gridTemplate:"1fr / 1fr"},type:"grid"};var f={Button:o,BaseElement:i,Grid:l};exports.WeaverseRoot=function(e){return t.createElement("div",null,"hiii")},exports.createRootContext=function(e){var t=new n.Weaverse(e);return Object.keys(f).forEach((function(e){var r,n;(null==(r=f[e])||null==(n=r.defaultProps)?void 0:n.type)&&t.registerElement(f[e].defaultProps.type,f[e])})),t};
2
2
  //# sourceMappingURL=sdk-react.cjs.production.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sdk-react.cjs.production.min.js","sources":["../src/utils/index.ts","../src/core.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 Elements from '@weaverse/elements'\nimport {useEffect} from 'react'\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\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({\n\t\t\t\t\tappUrl,\n\t\t\t\t\tprojectKey,\n\t\t\t\t\tprojectData\n\t\t\t\t}: { appUrl?: string, projectKey?: string, projectData?: ProjectDataType } = {}) {\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\tconsole.log('process.env.NODE_ENV', process.env.NODE_ENV)\n\t}\n\n\tregisterElement(name: string, element: any) {\n\t\tthis.elementInstances.set(name, element)\n\t}\n\n\tinit() {\n\t\tObject.keys(Elements).forEach(key => {\n\t\t\t// @ts-ignore\n\t\t\tElements[key]?.configs?.type && this.registerElement(Elements[key].configs.type, Elements[key])\n\t\t})\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\tuseSubscription = (fn: any) => {\n\t\tuseEffect(() => {\n\t\t\tthis.subscribe(fn)\n\t\t\treturn () => {\n\t\t\t\tthis.unsubscribe(fn)\n\t\t\t}\n\t\t}, [])\n\t}\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'\nimport {useEffect} from 'react'\nimport {Weaverse} from './core'\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\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 let {useSubscription} = itemInstance\n useSubscription((update: any) => {\n console.log('update', update)\n setData({...update})\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\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 {Weaverse, WeaverseRoot}\n"],"names":["isReactNative","navigator","product","isBrowser","window","Weaverse","appUrl","projectKey","projectData","Map","items","Set","e","data","_e$data","type","_e$data$type","startsWith","_this","isEditor","payload","background","instance","itemInstances","get","itemId","setData","style","this","init","console","log","process","registerElement","name","element","elementInstances","set","Object","keys","Elements","forEach","key","configs","_this2","subscribeMessageEvent","subscribe","fn","listeners","add","unsubscribe","triggerUpdate","triggerEditorUpdate","fetchProjectData","fetch","then","r","json","updateProjectData","_this3","initItemData","err","error","currentFrameSubscription","addEventListener","handleMessageEvent","removeEventListener","_this4","top","postMessage","item","itemStore","_this5","id","WeaverseItemStore","itemData","weaverse","_this6","assign","useEffect","Component","Item","itemInstance","context","React","childIds","rest","useSubscription","update","Array","isArray","map","childId","RenderItem","defaultData","handleUpdate","_context$projectData","_context$projectData$","length"],"mappings":"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"}
1
+ {"version":3,"file":"sdk-react.cjs.production.min.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 return <div>hiii</div>\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","configs","rootContext","Weaverse","Object","keys","Elements","forEach","key","registerElement"],"mappings":"+XAEO,IAAMA,EAASC,cAAiB,SAACC,EAAYC,SAC1BF,WAAe,GAAlCG,OAAOC,cACLJ,wCAAQE,IAAKA,GAASD,GAAOI,QAAS,kBAAMD,EAASD,EAAQ,qBAAiBA,MAGvFJ,EAAOO,aAAe,CAClBC,MAAO,CACHC,gBAAiB,QACjBC,aAAc,SACdC,SAAU,OACVC,QAAS,aAEbC,KAAM,SACNC,IAAK,mCCbIC,EAAcd,EAAMe,YAAY,WAAiCb,OAA/BW,IAAAA,IAAKG,IAAAA,SAAaf,iJACxDD,EAAMiB,cAAcJ,KACzBX,IAAAA,GACGD,GACFe,eCJmBE,EAAKjB,UACpBD,uCAASC,IDMlBa,EAAYR,aAAe,CACzBM,KAAM,OACNC,IAAK,MACLN,MAAO,ICNTW,EAAKZ,aAAe,CAClBC,MAAO,CACLY,QAAS,OACTC,aAAc,aAEhBR,KAAM,YCPFS,EAAW,CACftB,OAAAA,EACAe,YAAAA,EACAI,KAAAA,wBCO0B,mBACnBlB,8DAXwB,SAACsB,OAC1BC,EAAc,IAAIC,WAASF,UAEjCG,OAAOC,KAAKC,GAAUC,SAAQ,SAAAC,qBAE5BF,EAASE,gBAAMvB,uBAAcM,OAAQW,EAAYO,gBAAgBH,EAASE,GAAKvB,aAAaM,KAAMe,EAASE,OAEtGN"}