@weaverse/react 0.1.11 → 0.3.2

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/README.md CHANGED
@@ -1 +0,0 @@
1
- TODO: update readme
package/dist/index.d.ts CHANGED
@@ -1 +1,9 @@
1
- export { WeaverseRoot, createRootContext } from './renderer';
1
+ import { WeaverseType, Weaverse } from '@weaverse/core';
2
+
3
+ declare const createRootContext: (configs: WeaverseType) => Weaverse;
4
+ declare const WeaverseRoot: ({ context, defaultData }: {
5
+ context: Weaverse;
6
+ defaultData: any;
7
+ }) => JSX.Element;
8
+
9
+ export { WeaverseRoot, createRootContext };
package/dist/index.js CHANGED
@@ -1,8 +1,235 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __defProps = Object.defineProperties;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
8
+ var __getProtoOf = Object.getPrototypeOf;
9
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
10
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
11
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
12
+ var __spreadValues = (a, b) => {
13
+ for (var prop in b || (b = {}))
14
+ if (__hasOwnProp.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ if (__getOwnPropSymbols)
17
+ for (var prop of __getOwnPropSymbols(b)) {
18
+ if (__propIsEnum.call(b, prop))
19
+ __defNormalProp(a, prop, b[prop]);
20
+ }
21
+ return a;
22
+ };
23
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
24
+ var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
25
+ var __objRest = (source, exclude) => {
26
+ var target = {};
27
+ for (var prop in source)
28
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
29
+ target[prop] = source[prop];
30
+ if (source != null && __getOwnPropSymbols)
31
+ for (var prop of __getOwnPropSymbols(source)) {
32
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
33
+ target[prop] = source[prop];
34
+ }
35
+ return target;
36
+ };
37
+ var __export = (target, all) => {
38
+ for (var name in all)
39
+ __defProp(target, name, { get: all[name], enumerable: true });
40
+ };
41
+ var __reExport = (target, module2, copyDefault, desc) => {
42
+ if (module2 && typeof module2 === "object" || typeof module2 === "function") {
43
+ for (let key of __getOwnPropNames(module2))
44
+ if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
45
+ __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
46
+ }
47
+ return target;
48
+ };
49
+ var __toESM = (module2, isNodeMode) => {
50
+ return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", !isNodeMode && module2 && module2.__esModule ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
51
+ };
52
+ var __toCommonJS = /* @__PURE__ */ ((cache) => {
53
+ return (module2, temp) => {
54
+ return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
55
+ };
56
+ })(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
1
57
 
2
- 'use strict'
58
+ // src/index.ts
59
+ var src_exports = {};
60
+ __export(src_exports, {
61
+ WeaverseRoot: () => WeaverseRoot,
62
+ createRootContext: () => createRootContext
63
+ });
3
64
 
4
- if (process.env.NODE_ENV === 'production') {
5
- module.exports = require('./sdk-react.cjs.production.min.js')
6
- } else {
7
- module.exports = require('./sdk-react.cjs.development.js')
65
+ // src/renderer.tsx
66
+ var React5 = __toESM(require("react"));
67
+ var import_core = require("@weaverse/core");
68
+
69
+ // src/elements/button.tsx
70
+ var React = __toESM(require("react"));
71
+ var Button = React.forwardRef((props, ref) => {
72
+ let [count, setCount] = React.useState(0);
73
+ return /* @__PURE__ */ React.createElement("button", __spreadProps(__spreadValues({
74
+ ref
75
+ }, props), {
76
+ onClick: () => setCount(count + 1)
77
+ }), "Test Button ", count);
78
+ });
79
+ Button.defaultProps = {
80
+ style: {
81
+ borderRadius: "9999px",
82
+ fontSize: "13px",
83
+ padding: "10px 15px"
84
+ },
85
+ type: "button",
86
+ tag: "button"
87
+ };
88
+ var button_default = Button;
89
+
90
+ // src/elements/base.tsx
91
+ var import_react = __toESM(require("react"));
92
+ var BaseElement = import_react.default.forwardRef((_a, ref) => {
93
+ var _b = _a, { tag, children } = _b, props = __objRest(_b, ["tag", "children"]);
94
+ return import_react.default.createElement(tag, __spreadValues({
95
+ ref
96
+ }, props), children);
97
+ });
98
+ BaseElement.defaultProps = {
99
+ type: "base",
100
+ tag: "div",
101
+ style: {}
102
+ };
103
+ var base_default = BaseElement;
104
+
105
+ // src/elements/grid.tsx
106
+ var import_react2 = __toESM(require("react"));
107
+ function Grid(props) {
108
+ return /* @__PURE__ */ import_react2.default.createElement("div", __spreadValues({}, props));
8
109
  }
110
+ Grid.defaultProps = {
111
+ style: {
112
+ display: "grid",
113
+ gridTemplate: "1fr / 1fr"
114
+ },
115
+ type: "grid"
116
+ };
117
+
118
+ // src/elements/text.tsx
119
+ var React4 = __toESM(require("react"));
120
+ var Text = React4.forwardRef((props, ref) => {
121
+ let _a = props, { children } = _a, rest = __objRest(_a, ["children"]);
122
+ return /* @__PURE__ */ React4.createElement("span", __spreadProps(__spreadValues({
123
+ ref
124
+ }, rest), {
125
+ contentEditable: true,
126
+ dangerouslySetInnerHTML: { __html: "123123" }
127
+ }));
128
+ });
129
+ Text.defaultProps = {
130
+ style: {},
131
+ type: "text",
132
+ tag: "span"
133
+ };
134
+ var text_default = Text;
135
+
136
+ // src/elements/index.ts
137
+ var elements = {
138
+ Button: button_default,
139
+ BaseElement: base_default,
140
+ Grid,
141
+ Text: text_default
142
+ };
143
+ var elements_default = elements;
144
+
145
+ // src/renderer.tsx
146
+ var createRootContext = (configs) => {
147
+ const rootContext = new import_core.Weaverse(configs);
148
+ Object.keys(elements_default).forEach((key) => {
149
+ var _a, _b;
150
+ ((_b = (_a = elements_default[key]) == null ? void 0 : _a.defaultProps) == null ? void 0 : _b.type) && rootContext.registerElement(elements_default[key].defaultProps.type, elements_default[key]);
151
+ });
152
+ return rootContext;
153
+ };
154
+ var WeaverseRoot = ({ context, defaultData }) => {
155
+ var _a, _b, _c;
156
+ let [, setData] = React5.useState(context.projectData);
157
+ React5.useEffect(() => {
158
+ let handleUpdate = () => {
159
+ setData(__spreadValues({}, context.projectData));
160
+ };
161
+ context.subscribe(handleUpdate);
162
+ context.updateProjectData();
163
+ return () => {
164
+ context.unsubscribe(handleUpdate);
165
+ };
166
+ }, []);
167
+ if (!((_b = (_a = context.projectData) == null ? void 0 : _a.items) == null ? void 0 : _b.length) && defaultData) {
168
+ Object.assign(context.projectData, defaultData);
169
+ context.initProjectItemData();
170
+ }
171
+ let handleProps = ((_c = context == null ? void 0 : context.studioBridge) == null ? void 0 : _c.handleProps) || {};
172
+ return /* @__PURE__ */ React5.createElement("div", __spreadValues({
173
+ className: `weaverse-root`,
174
+ id: "weaverse-root"
175
+ }, handleProps), /* @__PURE__ */ React5.createElement(RenderItem, {
176
+ itemId: context.projectData.rootId || 0,
177
+ context
178
+ }));
179
+ };
180
+ var Item = ({ itemInstance, elementInstances, context }) => {
181
+ let [data, setData] = React5.useState(itemInstance.data);
182
+ let _a = data, { id, type, childIds, css, className } = _a, rest = __objRest(_a, ["id", "type", "childIds", "css", "className"]);
183
+ React5.useEffect(() => {
184
+ let handleUpdate = (update) => {
185
+ setData(__spreadValues({}, update));
186
+ };
187
+ itemInstance.subscribe(handleUpdate);
188
+ if (!itemInstance.ref.current && import_core.isBrowser) {
189
+ Object.assign(itemInstance.ref, { current: document.querySelector(`[data-wv-id="${id}"]`) });
190
+ }
191
+ return () => {
192
+ itemInstance.unsubscribe(handleUpdate);
193
+ };
194
+ }, []);
195
+ let realClassName = className || "";
196
+ if (css) {
197
+ let selector = context.stitchesInstance.css(css)().className;
198
+ realClassName += " " + selector;
199
+ }
200
+ let Component = elementInstances.get(type);
201
+ if (Component) {
202
+ if (Component.$$typeof === Symbol.for("react.forward_ref")) {
203
+ rest.ref = itemInstance.ref;
204
+ }
205
+ return /* @__PURE__ */ React5.createElement(Component, __spreadProps(__spreadValues({
206
+ key: id,
207
+ "data-wv-id": id
208
+ }, rest), {
209
+ className: realClassName
210
+ }), Array.isArray(childIds) && childIds.map((childId) => /* @__PURE__ */ React5.createElement(RenderItem, {
211
+ key: childId,
212
+ itemId: childId,
213
+ context
214
+ })));
215
+ }
216
+ return null;
217
+ };
218
+ var RenderItem = ({ itemId, context }) => {
219
+ let { itemInstances, elementInstances } = context;
220
+ let itemInstance = itemInstances.get(itemId);
221
+ if (itemInstance) {
222
+ return /* @__PURE__ */ React5.createElement(Item, {
223
+ itemInstance,
224
+ elementInstances,
225
+ context
226
+ });
227
+ }
228
+ return /* @__PURE__ */ React5.createElement(React5.Fragment, null);
229
+ };
230
+ module.exports = __toCommonJS(src_exports);
231
+ // Annotate the CommonJS export names for ESM import in node:
232
+ 0 && (module.exports = {
233
+ WeaverseRoot,
234
+ createRootContext
235
+ });
package/dist/index.mjs ADDED
@@ -0,0 +1,201 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ var __objRest = (source, exclude) => {
21
+ var target = {};
22
+ for (var prop in source)
23
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
24
+ target[prop] = source[prop];
25
+ if (source != null && __getOwnPropSymbols)
26
+ for (var prop of __getOwnPropSymbols(source)) {
27
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
28
+ target[prop] = source[prop];
29
+ }
30
+ return target;
31
+ };
32
+
33
+ // src/renderer.tsx
34
+ import * as React5 from "react";
35
+ import { isBrowser, Weaverse } from "@weaverse/core";
36
+
37
+ // src/elements/button.tsx
38
+ import * as React from "react";
39
+ var Button = React.forwardRef((props, ref) => {
40
+ let [count, setCount] = React.useState(0);
41
+ return /* @__PURE__ */ React.createElement("button", __spreadProps(__spreadValues({
42
+ ref
43
+ }, props), {
44
+ onClick: () => setCount(count + 1)
45
+ }), "Test Button ", count);
46
+ });
47
+ Button.defaultProps = {
48
+ style: {
49
+ borderRadius: "9999px",
50
+ fontSize: "13px",
51
+ padding: "10px 15px"
52
+ },
53
+ type: "button",
54
+ tag: "button"
55
+ };
56
+ var button_default = Button;
57
+
58
+ // src/elements/base.tsx
59
+ import React2 from "react";
60
+ var BaseElement = React2.forwardRef((_a, ref) => {
61
+ var _b = _a, { tag, children } = _b, props = __objRest(_b, ["tag", "children"]);
62
+ return React2.createElement(tag, __spreadValues({
63
+ ref
64
+ }, props), children);
65
+ });
66
+ BaseElement.defaultProps = {
67
+ type: "base",
68
+ tag: "div",
69
+ style: {}
70
+ };
71
+ var base_default = BaseElement;
72
+
73
+ // src/elements/grid.tsx
74
+ import React3 from "react";
75
+ function Grid(props) {
76
+ return /* @__PURE__ */ React3.createElement("div", __spreadValues({}, props));
77
+ }
78
+ Grid.defaultProps = {
79
+ style: {
80
+ display: "grid",
81
+ gridTemplate: "1fr / 1fr"
82
+ },
83
+ type: "grid"
84
+ };
85
+
86
+ // src/elements/text.tsx
87
+ import * as React4 from "react";
88
+ var Text = React4.forwardRef((props, ref) => {
89
+ let _a = props, { children } = _a, rest = __objRest(_a, ["children"]);
90
+ return /* @__PURE__ */ React4.createElement("span", __spreadProps(__spreadValues({
91
+ ref
92
+ }, rest), {
93
+ contentEditable: true,
94
+ dangerouslySetInnerHTML: { __html: "123123" }
95
+ }));
96
+ });
97
+ Text.defaultProps = {
98
+ style: {},
99
+ type: "text",
100
+ tag: "span"
101
+ };
102
+ var text_default = Text;
103
+
104
+ // src/elements/index.ts
105
+ var elements = {
106
+ Button: button_default,
107
+ BaseElement: base_default,
108
+ Grid,
109
+ Text: text_default
110
+ };
111
+ var elements_default = elements;
112
+
113
+ // src/renderer.tsx
114
+ var createRootContext = (configs) => {
115
+ const rootContext = new Weaverse(configs);
116
+ Object.keys(elements_default).forEach((key) => {
117
+ var _a, _b;
118
+ ((_b = (_a = elements_default[key]) == null ? void 0 : _a.defaultProps) == null ? void 0 : _b.type) && rootContext.registerElement(elements_default[key].defaultProps.type, elements_default[key]);
119
+ });
120
+ return rootContext;
121
+ };
122
+ var WeaverseRoot = ({ context, defaultData }) => {
123
+ var _a, _b, _c;
124
+ let [, setData] = React5.useState(context.projectData);
125
+ React5.useEffect(() => {
126
+ let handleUpdate = () => {
127
+ setData(__spreadValues({}, context.projectData));
128
+ };
129
+ context.subscribe(handleUpdate);
130
+ context.updateProjectData();
131
+ return () => {
132
+ context.unsubscribe(handleUpdate);
133
+ };
134
+ }, []);
135
+ if (!((_b = (_a = context.projectData) == null ? void 0 : _a.items) == null ? void 0 : _b.length) && defaultData) {
136
+ Object.assign(context.projectData, defaultData);
137
+ context.initProjectItemData();
138
+ }
139
+ let handleProps = ((_c = context == null ? void 0 : context.studioBridge) == null ? void 0 : _c.handleProps) || {};
140
+ return /* @__PURE__ */ React5.createElement("div", __spreadValues({
141
+ className: `weaverse-root`,
142
+ id: "weaverse-root"
143
+ }, handleProps), /* @__PURE__ */ React5.createElement(RenderItem, {
144
+ itemId: context.projectData.rootId || 0,
145
+ context
146
+ }));
147
+ };
148
+ var Item = ({ itemInstance, elementInstances, context }) => {
149
+ let [data, setData] = React5.useState(itemInstance.data);
150
+ let _a = data, { id, type, childIds, css, className } = _a, rest = __objRest(_a, ["id", "type", "childIds", "css", "className"]);
151
+ React5.useEffect(() => {
152
+ let handleUpdate = (update) => {
153
+ setData(__spreadValues({}, update));
154
+ };
155
+ itemInstance.subscribe(handleUpdate);
156
+ if (!itemInstance.ref.current && isBrowser) {
157
+ Object.assign(itemInstance.ref, { current: document.querySelector(`[data-wv-id="${id}"]`) });
158
+ }
159
+ return () => {
160
+ itemInstance.unsubscribe(handleUpdate);
161
+ };
162
+ }, []);
163
+ let realClassName = className || "";
164
+ if (css) {
165
+ let selector = context.stitchesInstance.css(css)().className;
166
+ realClassName += " " + selector;
167
+ }
168
+ let Component = elementInstances.get(type);
169
+ if (Component) {
170
+ if (Component.$$typeof === Symbol.for("react.forward_ref")) {
171
+ rest.ref = itemInstance.ref;
172
+ }
173
+ return /* @__PURE__ */ React5.createElement(Component, __spreadProps(__spreadValues({
174
+ key: id,
175
+ "data-wv-id": id
176
+ }, rest), {
177
+ className: realClassName
178
+ }), Array.isArray(childIds) && childIds.map((childId) => /* @__PURE__ */ React5.createElement(RenderItem, {
179
+ key: childId,
180
+ itemId: childId,
181
+ context
182
+ })));
183
+ }
184
+ return null;
185
+ };
186
+ var RenderItem = ({ itemId, context }) => {
187
+ let { itemInstances, elementInstances } = context;
188
+ let itemInstance = itemInstances.get(itemId);
189
+ if (itemInstance) {
190
+ return /* @__PURE__ */ React5.createElement(Item, {
191
+ itemInstance,
192
+ elementInstances,
193
+ context
194
+ });
195
+ }
196
+ return /* @__PURE__ */ React5.createElement(React5.Fragment, null);
197
+ };
198
+ export {
199
+ WeaverseRoot,
200
+ createRootContext
201
+ };
package/package.json CHANGED
@@ -1,8 +1,9 @@
1
1
  {
2
- "version": "0.1.11",
2
+ "version": "0.3.2",
3
3
  "license": "MIT",
4
4
  "main": "dist/index.js",
5
5
  "typings": "dist/index.d.ts",
6
+ "module": "dist/index.mjs",
6
7
  "publishConfig": {
7
8
  "access": "public"
8
9
  },
@@ -13,23 +14,13 @@
13
14
  "node": ">=10"
14
15
  },
15
16
  "scripts": {
16
- "start": "tsdx watch --name sdk-react",
17
- "dev": "tsdx watch --name sdk-react",
18
- "build": "tsdx build --name sdk-react",
19
- "test": "tsdx test --passWithNoTests",
20
- "lint": "tsdx lint",
21
- "prepare": "tsdx build --name sdk-react",
22
- "size": "size-limit",
23
- "analyze": "size-limit --why"
17
+ "start": "npm run dev",
18
+ "dev": "tsup src/index.ts --format esm,cjs --dts --outDir dist --watch --external react",
19
+ "build": "tsup src/index.ts --format esm,cjs --dts --outDir dist --external react"
24
20
  },
25
21
  "peerDependencies": {
26
- "react": ">=17",
27
- "react-dom": ">=17"
28
- },
29
- "husky": {
30
- "hooks": {
31
- "pre-commit": "tsdx lint"
32
- }
22
+ "react": ">=16.8.0",
23
+ "react-dom": ">=16.8.0"
33
24
  },
34
25
  "prettier": {
35
26
  "printWidth": 80,
@@ -39,29 +30,7 @@
39
30
  },
40
31
  "name": "@weaverse/react",
41
32
  "author": "Weaverse Team",
42
- "module": "dist/sdk-react.esm.js",
43
- "size-limit": [
44
- {
45
- "path": "dist/sdk-react.cjs.production.min.js",
46
- "limit": "10 KB"
47
- },
48
- {
49
- "path": "dist/sdk-react.esm.js",
50
- "limit": "10 KB"
51
- }
52
- ],
53
- "devDependencies": {
54
- "@size-limit/preset-small-lib": "^7.0.8",
55
- "@types/react": "^17.0.39",
56
- "@types/react-dom": "^17.0.11",
57
- "@types/react-is": "^17.0.3",
58
- "husky": "^7.0.4",
59
- "size-limit": "^7.0.8",
60
- "tsdx": "^0.14.1",
61
- "tslib": "^2.3.1",
62
- "typescript": "^4.5.5"
63
- },
64
33
  "dependencies": {
65
- "@weaverse/core": "^0.2.4"
34
+ "@weaverse/core": "^0.3.1"
66
35
  }
67
36
  }
@@ -1,3 +0,0 @@
1
- import React from 'react';
2
- export declare const BaseElement: React.ForwardRefExoticComponent<Pick<any, string | number | symbol> & React.RefAttributes<unknown>>;
3
- export default BaseElement;
@@ -1,3 +0,0 @@
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;
@@ -1,12 +0,0 @@
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;
@@ -1,8 +0,0 @@
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;
@@ -1,7 +0,0 @@
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;
@@ -1,234 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
6
-
7
- var React = require('react');
8
- var React__default = _interopDefault(React);
9
- var core = require('@weaverse/core');
10
-
11
- function _extends() {
12
- _extends = Object.assign || function (target) {
13
- for (var i = 1; i < arguments.length; i++) {
14
- var source = arguments[i];
15
-
16
- for (var key in source) {
17
- if (Object.prototype.hasOwnProperty.call(source, key)) {
18
- target[key] = source[key];
19
- }
20
- }
21
- }
22
-
23
- return target;
24
- };
25
-
26
- return _extends.apply(this, arguments);
27
- }
28
-
29
- function _objectWithoutPropertiesLoose(source, excluded) {
30
- if (source == null) return {};
31
- var target = {};
32
- var sourceKeys = Object.keys(source);
33
- var key, i;
34
-
35
- for (i = 0; i < sourceKeys.length; i++) {
36
- key = sourceKeys[i];
37
- if (excluded.indexOf(key) >= 0) continue;
38
- target[key] = source[key];
39
- }
40
-
41
- return target;
42
- }
43
-
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];
48
-
49
- return React.createElement("button", Object.assign({
50
- ref: ref
51
- }, props, {
52
- onClick: function onClick() {
53
- return setCount(count + 1);
54
- }
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'
66
- };
67
-
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
- };
83
-
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'
93
- };
94
-
95
- var elements = {
96
- Button: Button,
97
- BaseElement: BaseElement,
98
- Grid: Grid
99
- };
100
-
101
- var _excluded$1 = ["id", "type", "childIds", "css", "className"];
102
- var createRootContext = function createRootContext(configs) {
103
- var rootContext = new core.Weaverse(configs); // Register the element components
104
-
105
- Object.keys(elements).forEach(function (key) {
106
- var _Elements$key, _Elements$key$default;
107
-
108
- // @ts-ignore
109
- ((_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]);
110
- });
111
- return rootContext;
112
- };
113
- var WeaverseRoot = function WeaverseRoot(_ref) {
114
- var _context$projectData, _context$projectData$, _context$studioBridge;
115
-
116
- var context = _ref.context,
117
- defaultData = _ref.defaultData;
118
-
119
- var _React$useState = React.useState(context.projectData),
120
- setData = _React$useState[1];
121
-
122
- React.useEffect(function () {
123
- var handleUpdate = function handleUpdate() {
124
- setData(_extends({}, context.projectData));
125
- };
126
-
127
- context.subscribe(handleUpdate);
128
- context.updateProjectData();
129
- return function () {
130
- context.unsubscribe(handleUpdate);
131
- };
132
- }, []);
133
-
134
- if (!((_context$projectData = context.projectData) != null && (_context$projectData$ = _context$projectData.items) != null && _context$projectData$.length) && defaultData) {
135
- context.projectData = defaultData;
136
- context.initItemData();
137
- }
138
-
139
- var handleProps = (context == null ? void 0 : (_context$studioBridge = context.studioBridge) == null ? void 0 : _context$studioBridge.handleProps) || {};
140
- console.log('handleProps', handleProps);
141
- return React.createElement("div", Object.assign({}, handleProps), React.createElement(RenderItem, {
142
- itemId: 0,
143
- context: context
144
- }));
145
- };
146
-
147
- var Item = function Item(_ref2) {
148
- var itemInstance = _ref2.itemInstance,
149
- elementInstances = _ref2.elementInstances,
150
- context = _ref2.context;
151
-
152
- var _React$useState2 = React.useState(itemInstance.data),
153
- data = _React$useState2[0],
154
- setData = _React$useState2[1];
155
-
156
- var id = data.id,
157
- type = data.type,
158
- childIds = data.childIds,
159
- css = data.css,
160
- className = data.className,
161
- rest = _objectWithoutPropertiesLoose(data, _excluded$1);
162
-
163
- React.useEffect(function () {
164
- var handleUpdate = function handleUpdate(update) {
165
- setData(_extends({}, update));
166
- };
167
-
168
- itemInstance.subscribe(handleUpdate);
169
-
170
- if (!itemInstance.ref.current && core.isBrowser) {
171
- Object.assign(itemInstance.ref, {
172
- current: document.querySelector("[data-wv-id=\"" + id + "\"]")
173
- });
174
- }
175
-
176
- return function () {
177
- itemInstance.unsubscribe(handleUpdate);
178
- };
179
- }, []);
180
- var realClassName = className || '';
181
-
182
- if (css) {
183
- // let stitches create the style from css object and
184
- // then return the classname, so we can use it in the render
185
- var selector = context.stitchesInstance.css(css)().className;
186
- realClassName += ' ' + selector;
187
- }
188
-
189
- var Component = elementInstances.get(type);
190
-
191
- if (Component) {
192
- // @ts-ignore
193
- if (Component.$$typeof === Symbol["for"]('react.forward_ref')) {
194
- rest.ref = itemInstance.ref;
195
- }
196
-
197
- return React.createElement(Component, Object.assign({
198
- key: id,
199
- "data-wv-id": id
200
- }, rest, {
201
- className: realClassName
202
- }), Array.isArray(childIds) && childIds.map(function (childId) {
203
- return React.createElement(RenderItem, {
204
- key: childId,
205
- itemId: childId,
206
- context: context
207
- });
208
- }));
209
- }
210
-
211
- return null;
212
- };
213
-
214
- var RenderItem = function RenderItem(_ref3) {
215
- var itemId = _ref3.itemId,
216
- context = _ref3.context;
217
- var itemInstances = context.itemInstances,
218
- elementInstances = context.elementInstances;
219
- var itemInstance = itemInstances.get(itemId);
220
-
221
- if (itemInstance) {
222
- return React.createElement(Item, {
223
- itemInstance: itemInstance,
224
- elementInstances: elementInstances,
225
- context: context
226
- });
227
- }
228
-
229
- return React.createElement(React.Fragment, null);
230
- };
231
-
232
- exports.WeaverseRoot = WeaverseRoot;
233
- exports.createRootContext = createRootContext;
234
- //# sourceMappingURL=sdk-react.cjs.development.js.map
@@ -1 +0,0 @@
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 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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"}
@@ -1,2 +0,0 @@
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)}function c(e,t){if(null==e)return{};var r,n,a={},c=Object.keys(e);for(n=0;n<c.length;n++)t.indexOf(r=c[n])>=0||(a[r]=e[r]);return a}var s=t.forwardRef((function(e,r){var n=t.useState(0),a=n[0],c=n[1];return t.createElement("button",Object.assign({ref:r},e,{onClick:function(){return c(a+1)}}),"Test Button ",a)}));s.defaultProps={style:{backgroundColor:"green",borderRadius:"9999px",fontSize:"13px",padding:"10px 15px"},type:"button",tag:"button"};var o=["tag","children"],u=r.forwardRef((function(e,t){var n=e.tag,s=e.children,u=c(e,o);return r.createElement(n,a({ref:t},u),s)}));function i(e){return r.createElement("div",Object.assign({},e))}u.defaultProps={type:"base",tag:"div",style:{}},i.defaultProps={style:{display:"grid",gridTemplate:"1fr / 1fr"},type:"grid"};var l={Button:s,BaseElement:u,Grid:i},f=["id","type","childIds","css","className"],d=function(e){var r=e.itemInstance,s=e.elementInstances,o=e.context,u=t.useState(r.data),i=u[0],l=u[1],d=i.id,m=i.type,v=i.childIds,b=i.css,g=i.className,y=c(i,f);t.useEffect((function(){var e=function(e){l(a({},e))};return r.subscribe(e),!r.ref.current&&n.isBrowser&&Object.assign(r.ref,{current:document.querySelector('[data-wv-id="'+d+'"]')}),function(){r.unsubscribe(e)}}),[]);var j=g||"";b&&(j+=" "+o.stitchesInstance.css(b)().className);var x=s.get(m);return x?(x.$$typeof===Symbol.for("react.forward_ref")&&(y.ref=r.ref),t.createElement(x,Object.assign({key:d,"data-wv-id":d},y,{className:j}),Array.isArray(v)&&v.map((function(e){return t.createElement(p,{key:e,itemId:e,context:o})})))):null},p=function(e){var r=e.context,n=r.elementInstances,a=r.itemInstances.get(e.itemId);return a?t.createElement(d,{itemInstance:a,elementInstances:n,context:r}):t.createElement(t.Fragment,null)};exports.WeaverseRoot=function(e){var r,n,c,s=e.context,o=e.defaultData,u=t.useState(s.projectData)[1];t.useEffect((function(){var e=function(){u(a({},s.projectData))};return s.subscribe(e),s.updateProjectData(),function(){s.unsubscribe(e)}}),[]),null!=(r=s.projectData)&&null!=(n=r.items)&&n.length||!o||(s.projectData=o,s.initItemData());var i=(null==s||null==(c=s.studioBridge)?void 0:c.handleProps)||{};return console.log("handleProps",i),t.createElement("div",Object.assign({},i),t.createElement(p,{itemId:0,context:s}))},exports.createRootContext=function(e){var t=new n.Weaverse(e);return Object.keys(l).forEach((function(e){var r,n;(null==(r=l[e])||null==(n=r.defaultProps)?void 0:n.type)&&t.registerElement(l[e].defaultProps.type,l[e])})),t};
2
- //# sourceMappingURL=sdk-react.cjs.production.min.js.map
@@ -1 +0,0 @@
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 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","Item","itemInstance","elementInstances","context","data","setData","id","childIds","css","className","rest","handleUpdate","update","subscribe","current","isBrowser","Object","assign","document","querySelector","unsubscribe","realClassName","stitchesInstance","Component","get","$$typeof","Symbol","key","Array","isArray","map","childId","RenderItem","itemId","itemInstances","defaultData","projectData","updateProjectData","_context$projectData","items","_context$projectData$","length","initItemData","handleProps","studioBridge","console","log","configs","rootContext","Weaverse","keys","Elements","forEach","registerElement"],"mappings":"mgBAEO,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,gBACxDD,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,gDCsCII,EAAO,gBAAEC,IAAAA,aAAcC,IAAAA,iBAAkBC,IAAAA,UACvBzB,WAAoBuB,EAAaG,MAAlDA,OAAMC,OACNC,EAA+CF,EAA/CE,GAAIhB,EAA2Cc,EAA3Cd,KAAMiB,EAAqCH,EAArCG,SAAUC,EAA2BJ,EAA3BI,IAAKC,EAAsBL,EAAtBK,UAAcC,IAAQN,KACpD1B,aAAgB,eACViC,EAAe,SAACC,GAClBP,OAAYO,YAEdX,EAAaY,UAAUF,IAClBV,EAAarB,IAAIkC,SAAWC,aAC/BC,OAAOC,OAAOhB,EAAarB,IAAK,CAACkC,QAASI,SAASC,8BAA8Bb,UAG5E,WACLL,EAAamB,YAAYT,MAE1B,QAECU,EAAgBZ,GAAa,GAC7BD,IAKFa,GAAiB,IADDlB,EAAQmB,iBAAiBd,IAAIA,EAA7BL,GAAqCM,eAGnDc,EAAYrB,EAAiBsB,IAAIlC,UACjCiC,GAEEA,EAAUE,WAAaC,WAAW,uBACpChB,EAAK9B,IAAMqB,EAAarB,KAEnBF,gBAAC6C,iBAAUI,IAAKrB,eAAgBA,GAAQI,GAAMD,UAAWY,IAC7DO,MAAMC,QAAQtB,IACJA,EAASuB,KAAI,SAAAC,UACRrD,gBAACsD,GACOL,IAAKI,EACLE,OAAQF,EACR5B,QAASA,SAK9B,MAGH6B,EAAa,gBAAU7B,IAAAA,QACPD,EAAoBC,EAApBD,iBAChBD,EADoCE,EAAnC+B,cAC4BV,MAFdS,eAGfhC,EACKvB,gBAACsB,GAAKC,aAAcA,EAAcC,iBAAkBA,EAAkBC,QAASA,IAEjFzB,uDAlFmB,sBAAEyB,IAAAA,QAASgC,IAAAA,YAC9B9B,EAAW3B,WAAoByB,EAAQiC,gBAC9C1D,aAAgB,eACViC,EAAe,WACjBN,OAAYF,EAAQiC,sBAEtBjC,EAAQU,UAAUF,GAClBR,EAAQkC,oBACD,WACLlC,EAAQiB,YAAYT,MAErB,aACER,EAAQiC,uBAARE,EAAqBC,QAArBC,EAA4BC,SAAUN,IACzChC,EAAQiC,YAAcD,EACtBhC,EAAQuC,oBAENC,SAAcxC,YAAAA,EAASyC,uBAAcD,cAAe,UACxDE,QAAQC,IAAI,cAAeH,GACpBjE,uCAASiE,GACdjE,gBAACsD,GAAWC,OAAQ,EAAG9B,QAASA,gCA7BH,SAAC4C,OAC1BC,EAAc,IAAIC,WAASF,UAEjC/B,OAAOkC,KAAKC,GAAUC,SAAQ,SAAAzB,qBAE5BwB,EAASxB,gBAAM3C,uBAAcM,OAAQ0D,EAAYK,gBAAgBF,EAASxB,GAAK3C,aAAaM,KAAM6D,EAASxB,OAEtGqB"}
@@ -1,226 +0,0 @@
1
- import React__default, { forwardRef, useState, createElement, useEffect, Fragment } from 'react';
2
- import { Weaverse, isBrowser } from '@weaverse/core';
3
-
4
- function _extends() {
5
- _extends = Object.assign || function (target) {
6
- for (var i = 1; i < arguments.length; i++) {
7
- var source = arguments[i];
8
-
9
- for (var key in source) {
10
- if (Object.prototype.hasOwnProperty.call(source, key)) {
11
- target[key] = source[key];
12
- }
13
- }
14
- }
15
-
16
- return target;
17
- };
18
-
19
- return _extends.apply(this, arguments);
20
- }
21
-
22
- function _objectWithoutPropertiesLoose(source, excluded) {
23
- if (source == null) return {};
24
- var target = {};
25
- var sourceKeys = Object.keys(source);
26
- var key, i;
27
-
28
- for (i = 0; i < sourceKeys.length; i++) {
29
- key = sourceKeys[i];
30
- if (excluded.indexOf(key) >= 0) continue;
31
- target[key] = source[key];
32
- }
33
-
34
- return target;
35
- }
36
-
37
- var Button = /*#__PURE__*/forwardRef(function (props, ref) {
38
- var _React$useState = useState(0),
39
- count = _React$useState[0],
40
- setCount = _React$useState[1];
41
-
42
- return createElement("button", Object.assign({
43
- ref: ref
44
- }, props, {
45
- onClick: function onClick() {
46
- return setCount(count + 1);
47
- }
48
- }), "Test Button ", count);
49
- });
50
- Button.defaultProps = {
51
- style: {
52
- backgroundColor: 'green',
53
- borderRadius: '9999px',
54
- fontSize: '13px',
55
- padding: '10px 15px'
56
- },
57
- type: 'button',
58
- tag: 'button'
59
- };
60
-
61
- var _excluded = ["tag", "children"];
62
- var BaseElement = /*#__PURE__*/React__default.forwardRef(function (_ref, ref) {
63
- var tag = _ref.tag,
64
- children = _ref.children,
65
- props = _objectWithoutPropertiesLoose(_ref, _excluded);
66
-
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: {}
75
- };
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'
86
- };
87
-
88
- var elements = {
89
- Button: Button,
90
- BaseElement: BaseElement,
91
- Grid: Grid
92
- };
93
-
94
- var _excluded$1 = ["id", "type", "childIds", "css", "className"];
95
- var createRootContext = function createRootContext(configs) {
96
- var rootContext = new Weaverse(configs); // Register the element components
97
-
98
- Object.keys(elements).forEach(function (key) {
99
- var _Elements$key, _Elements$key$default;
100
-
101
- // @ts-ignore
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]);
103
- });
104
- return rootContext;
105
- };
106
- var WeaverseRoot = function WeaverseRoot(_ref) {
107
- var _context$projectData, _context$projectData$, _context$studioBridge;
108
-
109
- var context = _ref.context,
110
- defaultData = _ref.defaultData;
111
-
112
- var _React$useState = useState(context.projectData),
113
- setData = _React$useState[1];
114
-
115
- useEffect(function () {
116
- var handleUpdate = function handleUpdate() {
117
- setData(_extends({}, context.projectData));
118
- };
119
-
120
- context.subscribe(handleUpdate);
121
- context.updateProjectData();
122
- return function () {
123
- context.unsubscribe(handleUpdate);
124
- };
125
- }, []);
126
-
127
- if (!((_context$projectData = context.projectData) != null && (_context$projectData$ = _context$projectData.items) != null && _context$projectData$.length) && defaultData) {
128
- context.projectData = defaultData;
129
- context.initItemData();
130
- }
131
-
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, {
135
- itemId: 0,
136
- context: context
137
- }));
138
- };
139
-
140
- var Item = function Item(_ref2) {
141
- var itemInstance = _ref2.itemInstance,
142
- elementInstances = _ref2.elementInstances,
143
- context = _ref2.context;
144
-
145
- var _React$useState2 = useState(itemInstance.data),
146
- data = _React$useState2[0],
147
- setData = _React$useState2[1];
148
-
149
- var id = data.id,
150
- type = data.type,
151
- childIds = data.childIds,
152
- css = data.css,
153
- className = data.className,
154
- rest = _objectWithoutPropertiesLoose(data, _excluded$1);
155
-
156
- useEffect(function () {
157
- var handleUpdate = function handleUpdate(update) {
158
- setData(_extends({}, update));
159
- };
160
-
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
-
169
- return function () {
170
- itemInstance.unsubscribe(handleUpdate);
171
- };
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
-
182
- var Component = elementInstances.get(type);
183
-
184
- if (Component) {
185
- // @ts-ignore
186
- if (Component.$$typeof === Symbol["for"]('react.forward_ref')) {
187
- rest.ref = itemInstance.ref;
188
- }
189
-
190
- return createElement(Component, Object.assign({
191
- key: id,
192
- "data-wv-id": id
193
- }, rest, {
194
- className: realClassName
195
- }), Array.isArray(childIds) && childIds.map(function (childId) {
196
- return createElement(RenderItem, {
197
- key: childId,
198
- itemId: childId,
199
- context: context
200
- });
201
- }));
202
- }
203
-
204
- return null;
205
- };
206
-
207
- var RenderItem = function RenderItem(_ref3) {
208
- var itemId = _ref3.itemId,
209
- context = _ref3.context;
210
- var itemInstances = context.itemInstances,
211
- elementInstances = context.elementInstances;
212
- var itemInstance = itemInstances.get(itemId);
213
-
214
- if (itemInstance) {
215
- return createElement(Item, {
216
- itemInstance: itemInstance,
217
- elementInstances: elementInstances,
218
- context: context
219
- });
220
- }
221
-
222
- return createElement(Fragment, null);
223
- };
224
-
225
- export { WeaverseRoot, createRootContext };
226
- //# sourceMappingURL=sdk-react.esm.js.map
@@ -1 +0,0 @@
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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"}