@weaverse/react 0.7.7 → 0.7.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.
- package/dist/index.d.ts +11 -5
- package/dist/index.js +159 -203
- package/dist/index.mjs +53 -99
- package/package.json +3 -3
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
2
|
import { ReactElement, ReactNode, CSSProperties } from 'react';
|
|
3
|
-
import { WeaverseType, Weaverse, ElementCSS, WeaverseItemStore } from '@weaverse/core';
|
|
3
|
+
import { ElementsMap, WeaverseType, Weaverse, ElementCSS, WeaverseItemStore } from '@weaverse/core';
|
|
4
4
|
export * from '@weaverse/core';
|
|
5
5
|
|
|
6
|
+
declare const SharedComponents: {
|
|
7
|
+
Placeholder: react.ForwardRefExoticComponent<PlaceholderProps & react.RefAttributes<HTMLDivElement>>;
|
|
8
|
+
};
|
|
9
|
+
declare const Elements: ElementsMap;
|
|
10
|
+
|
|
6
11
|
declare let createRootContext: (configs: WeaverseType) => Weaverse;
|
|
7
12
|
declare let WeaverseContext: react.Context<Weaverse>;
|
|
8
13
|
declare let WeaverseContextProvider: react.Provider<Weaverse>;
|
|
@@ -26,10 +31,11 @@ interface PlaceholderProps {
|
|
|
26
31
|
style?: CSSProperties;
|
|
27
32
|
}
|
|
28
33
|
interface ButtonElementProps extends WeaverseElementProps {
|
|
29
|
-
value: string;
|
|
30
|
-
openInNewTab: boolean;
|
|
31
|
-
target: string;
|
|
32
34
|
type: 'button' | 'submit' | 'reset';
|
|
35
|
+
text: string;
|
|
36
|
+
clickAction: 'none' | 'openLink';
|
|
37
|
+
linkTo: string;
|
|
38
|
+
openInNewTab: boolean;
|
|
33
39
|
}
|
|
34
40
|
interface ContainerElementProps extends WeaverseElementProps {
|
|
35
41
|
[key: string]: any;
|
|
@@ -101,4 +107,4 @@ declare type InstagramMedia = {
|
|
|
101
107
|
|
|
102
108
|
declare let WeaverseRoot: ({ context }: WeaverseRootPropsType) => JSX.Element | null;
|
|
103
109
|
|
|
104
|
-
export { ButtonElementProps, ContainerElementProps, CountdownElementProps, CountdownTimeKey, CountdownTimerType, GridContentElementProps, ImageElementProps, InstagramElementProps, InstagramMedia, ItemComponentProps, LayoutElementProps, MapElementProps, PlaceholderProps, TextElementProps, TimerBlockProps, VideoElementProps, WeaverseContext, WeaverseContextConsumer, WeaverseContextProvider, WeaverseElementProps, WeaverseRoot, WeaverseRootPropsType, createRootContext };
|
|
110
|
+
export { ButtonElementProps, ContainerElementProps, CountdownElementProps, CountdownTimeKey, CountdownTimerType, Elements, GridContentElementProps, ImageElementProps, InstagramElementProps, InstagramMedia, ItemComponentProps, LayoutElementProps, MapElementProps, PlaceholderProps, SharedComponents, TextElementProps, TimerBlockProps, VideoElementProps, WeaverseContext, WeaverseContextConsumer, WeaverseContextProvider, WeaverseElementProps, WeaverseRoot, WeaverseRootPropsType, createRootContext };
|
package/dist/index.js
CHANGED
|
@@ -27,6 +27,8 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
27
27
|
// src/index.ts
|
|
28
28
|
var src_exports = {};
|
|
29
29
|
__export(src_exports, {
|
|
30
|
+
Elements: () => Elements,
|
|
31
|
+
SharedComponents: () => SharedComponents,
|
|
30
32
|
WeaverseContext: () => WeaverseContext,
|
|
31
33
|
WeaverseContextConsumer: () => WeaverseContextConsumer,
|
|
32
34
|
WeaverseContextProvider: () => WeaverseContextProvider,
|
|
@@ -35,33 +37,30 @@ __export(src_exports, {
|
|
|
35
37
|
});
|
|
36
38
|
module.exports = __toCommonJS(src_exports);
|
|
37
39
|
|
|
38
|
-
// src/context.ts
|
|
39
|
-
var import_core = require("@weaverse/core");
|
|
40
|
-
var import_react20 = require("react");
|
|
41
|
-
|
|
42
40
|
// src/elements/button.tsx
|
|
43
41
|
var React = __toESM(require("react"));
|
|
44
42
|
var Button = React.forwardRef((props, ref) => {
|
|
45
|
-
let {
|
|
46
|
-
if (
|
|
43
|
+
let { text, clickAction, linkTo, openInNewTab, ...rest } = props;
|
|
44
|
+
if (clickAction && linkTo) {
|
|
47
45
|
return /* @__PURE__ */ React.createElement("a", {
|
|
48
|
-
href:
|
|
46
|
+
href: linkTo,
|
|
49
47
|
target: openInNewTab ? "_blank" : "_self",
|
|
50
48
|
rel: "noreferrer",
|
|
51
49
|
...rest,
|
|
52
50
|
ref
|
|
53
|
-
},
|
|
51
|
+
}, text);
|
|
54
52
|
}
|
|
55
53
|
return /* @__PURE__ */ React.createElement("button", {
|
|
56
54
|
ref,
|
|
57
55
|
...rest
|
|
58
|
-
},
|
|
56
|
+
}, text);
|
|
59
57
|
});
|
|
60
58
|
Button.defaultProps = {
|
|
61
|
-
value: "Shop now",
|
|
62
|
-
openInNewTab: false,
|
|
63
|
-
target: "",
|
|
64
59
|
type: "button",
|
|
60
|
+
text: "Shop now",
|
|
61
|
+
clickAction: "none",
|
|
62
|
+
linkTo: "",
|
|
63
|
+
openInNewTab: false,
|
|
65
64
|
css: {
|
|
66
65
|
"@desktop": {
|
|
67
66
|
borderRadius: "72px",
|
|
@@ -105,14 +104,28 @@ Container.defaultProps = {
|
|
|
105
104
|
var container_default = Container;
|
|
106
105
|
|
|
107
106
|
// src/elements/countdown/index.tsx
|
|
108
|
-
var
|
|
107
|
+
var import_react4 = __toESM(require("react"));
|
|
108
|
+
|
|
109
|
+
// src/context.ts
|
|
110
|
+
var import_core = require("@weaverse/core");
|
|
111
|
+
var import_react2 = require("react");
|
|
112
|
+
var createRootContext = (configs) => {
|
|
113
|
+
let rootContext = new import_core.Weaverse(configs);
|
|
114
|
+
Object.keys(Elements).forEach((key) => {
|
|
115
|
+
rootContext.registerElement(Elements[key]);
|
|
116
|
+
});
|
|
117
|
+
return rootContext;
|
|
118
|
+
};
|
|
119
|
+
var WeaverseContext = (0, import_react2.createContext)({});
|
|
120
|
+
var WeaverseContextProvider = WeaverseContext.Provider;
|
|
121
|
+
var WeaverseContextConsumer = WeaverseContext.Consumer;
|
|
109
122
|
|
|
110
123
|
// src/elements/countdown/timer-block.tsx
|
|
111
|
-
var
|
|
124
|
+
var import_react3 = __toESM(require("react"));
|
|
112
125
|
function TimerBlock({ value, label }) {
|
|
113
|
-
return /* @__PURE__ */
|
|
126
|
+
return /* @__PURE__ */ import_react3.default.createElement("div", null, /* @__PURE__ */ import_react3.default.createElement("div", {
|
|
114
127
|
className: "wv-countdown-number"
|
|
115
|
-
}, value.toString().padStart(2, "0")), label && /* @__PURE__ */
|
|
128
|
+
}, value.toString().padStart(2, "0")), label && /* @__PURE__ */ import_react3.default.createElement("div", {
|
|
116
129
|
className: "wv-countdown-label"
|
|
117
130
|
}, label));
|
|
118
131
|
}
|
|
@@ -135,9 +148,9 @@ function getTime(_seconds) {
|
|
|
135
148
|
}
|
|
136
149
|
|
|
137
150
|
// src/elements/countdown/index.tsx
|
|
138
|
-
var Countdown = (0,
|
|
151
|
+
var Countdown = (0, import_react4.forwardRef)(
|
|
139
152
|
(props, ref) => {
|
|
140
|
-
const { isDesignMode } = (0,
|
|
153
|
+
const { isDesignMode } = (0, import_react4.useContext)(WeaverseContext);
|
|
141
154
|
let {
|
|
142
155
|
timerType,
|
|
143
156
|
startTime,
|
|
@@ -149,11 +162,11 @@ var Countdown = (0, import_react3.forwardRef)(
|
|
|
149
162
|
showLabel,
|
|
150
163
|
...rest
|
|
151
164
|
} = props;
|
|
152
|
-
const [remaining, setRemaining] =
|
|
165
|
+
const [remaining, setRemaining] = import_react4.default.useState(0);
|
|
153
166
|
if (typeof endTime !== "number") {
|
|
154
167
|
endTime = Number.parseInt(endTime);
|
|
155
168
|
}
|
|
156
|
-
(0,
|
|
169
|
+
(0, import_react4.useEffect)(() => {
|
|
157
170
|
const flag = setInterval(() => {
|
|
158
171
|
const remainingTime = Math.max(
|
|
159
172
|
(timerType === "fixed-time" ? new Date(endTime).getTime() : new Date(startTime).getTime() + periods * 60 * 1e3) - Date.now(),
|
|
@@ -169,16 +182,16 @@ var Countdown = (0, import_react3.forwardRef)(
|
|
|
169
182
|
};
|
|
170
183
|
}, [startTime, endTime, periods, timerType]);
|
|
171
184
|
const timer = getTime(remaining);
|
|
172
|
-
return /* @__PURE__ */
|
|
185
|
+
return /* @__PURE__ */ import_react4.default.createElement("div", {
|
|
173
186
|
ref,
|
|
174
187
|
...rest
|
|
175
188
|
}, times.map((time) => {
|
|
176
|
-
return /* @__PURE__ */
|
|
189
|
+
return /* @__PURE__ */ import_react4.default.createElement(import_react4.default.Fragment, {
|
|
177
190
|
key: time
|
|
178
|
-
}, /* @__PURE__ */
|
|
191
|
+
}, /* @__PURE__ */ import_react4.default.createElement(TimerBlock, {
|
|
179
192
|
label: showLabel ? time : "",
|
|
180
193
|
value: timer[time]
|
|
181
|
-
}), time !== "seconds" && /* @__PURE__ */
|
|
194
|
+
}), time !== "seconds" && /* @__PURE__ */ import_react4.default.createElement("span", {
|
|
182
195
|
className: `wv-countdown-number ${showColon ? "" : "hidden"}`
|
|
183
196
|
}, ":"));
|
|
184
197
|
}));
|
|
@@ -220,10 +233,10 @@ Countdown.defaultProps = {
|
|
|
220
233
|
var countdown_default = Countdown;
|
|
221
234
|
|
|
222
235
|
// src/elements/image.tsx
|
|
223
|
-
var
|
|
224
|
-
var Image =
|
|
236
|
+
var import_react5 = __toESM(require("react"));
|
|
237
|
+
var Image = import_react5.default.forwardRef(
|
|
225
238
|
(props, ref) => {
|
|
226
|
-
let { isDesignMode } = (0,
|
|
239
|
+
let { isDesignMode } = (0, import_react5.useContext)(WeaverseContext);
|
|
227
240
|
let {
|
|
228
241
|
src,
|
|
229
242
|
alt,
|
|
@@ -245,12 +258,12 @@ var Image = import_react4.default.forwardRef(
|
|
|
245
258
|
console.log("TODO: click action:", onClickAction);
|
|
246
259
|
}
|
|
247
260
|
};
|
|
248
|
-
return /* @__PURE__ */
|
|
261
|
+
return /* @__PURE__ */ import_react5.default.createElement("div", {
|
|
249
262
|
ref,
|
|
250
263
|
...rest,
|
|
251
264
|
style,
|
|
252
265
|
onClick: handleClick
|
|
253
|
-
}, /* @__PURE__ */
|
|
266
|
+
}, /* @__PURE__ */ import_react5.default.createElement("img", {
|
|
254
267
|
alt,
|
|
255
268
|
src
|
|
256
269
|
}));
|
|
@@ -277,8 +290,8 @@ Image.defaultProps = {
|
|
|
277
290
|
var image_default = Image;
|
|
278
291
|
|
|
279
292
|
// src/elements/layout.tsx
|
|
280
|
-
var
|
|
281
|
-
var Layout = (0,
|
|
293
|
+
var import_react6 = __toESM(require("react"));
|
|
294
|
+
var Layout = (0, import_react6.forwardRef)((props, ref) => {
|
|
282
295
|
let { children, rows, gap, rowSize, columns, gridSize, ...rest } = props;
|
|
283
296
|
let style = {
|
|
284
297
|
"--grid-size": gridSize + "px",
|
|
@@ -288,11 +301,11 @@ var Layout = (0, import_react5.forwardRef)((props, ref) => {
|
|
|
288
301
|
"--row-size": rowSize + "px",
|
|
289
302
|
"--col-size": "calc((var(--grid-size) - calc(var(--columns) - 1) * var(--gap)) / var(--columns))"
|
|
290
303
|
};
|
|
291
|
-
return /* @__PURE__ */
|
|
304
|
+
return /* @__PURE__ */ import_react6.default.createElement("section", {
|
|
292
305
|
ref,
|
|
293
306
|
...rest,
|
|
294
307
|
style
|
|
295
|
-
}, /* @__PURE__ */
|
|
308
|
+
}, /* @__PURE__ */ import_react6.default.createElement("div", {
|
|
296
309
|
"data-layout-content": true
|
|
297
310
|
}, children));
|
|
298
311
|
});
|
|
@@ -329,13 +342,13 @@ Layout.defaultProps = {
|
|
|
329
342
|
var layout_default = Layout;
|
|
330
343
|
|
|
331
344
|
// src/elements/map.tsx
|
|
332
|
-
var
|
|
333
|
-
var Map = (0,
|
|
345
|
+
var import_react7 = __toESM(require("react"));
|
|
346
|
+
var Map = (0, import_react7.forwardRef)((props, ref) => {
|
|
334
347
|
let { place, zoom, ...rest } = props;
|
|
335
|
-
return /* @__PURE__ */
|
|
348
|
+
return /* @__PURE__ */ import_react7.default.createElement("div", {
|
|
336
349
|
ref,
|
|
337
350
|
...rest
|
|
338
|
-
}, /* @__PURE__ */
|
|
351
|
+
}, /* @__PURE__ */ import_react7.default.createElement("iframe", {
|
|
339
352
|
loading: "lazy",
|
|
340
353
|
scrolling: "no",
|
|
341
354
|
width: "100%",
|
|
@@ -367,10 +380,7 @@ Text.defaultProps = {
|
|
|
367
380
|
value: "The quick brown fox jumps over the lazy dog",
|
|
368
381
|
css: {
|
|
369
382
|
"@desktop": {
|
|
370
|
-
|
|
371
|
-
height: "fit-content",
|
|
372
|
-
padding: "20px",
|
|
373
|
-
outline: "none",
|
|
383
|
+
padding: "10px",
|
|
374
384
|
wordBreak: "break-word",
|
|
375
385
|
overflowWrap: "break-word",
|
|
376
386
|
whiteSpace: "break-spaces"
|
|
@@ -380,21 +390,21 @@ Text.defaultProps = {
|
|
|
380
390
|
var text_default = Text;
|
|
381
391
|
|
|
382
392
|
// src/elements/video.tsx
|
|
383
|
-
var
|
|
384
|
-
var Video = (0,
|
|
385
|
-
let { isDesignMode } = (0,
|
|
393
|
+
var import_react8 = __toESM(require("react"));
|
|
394
|
+
var Video = (0, import_react8.forwardRef)((props, ref) => {
|
|
395
|
+
let { isDesignMode } = (0, import_react8.useContext)(WeaverseContext);
|
|
386
396
|
let { src, type, controls, poster, autoPlay, loop, muted, ...rest } = props;
|
|
387
|
-
return /* @__PURE__ */
|
|
397
|
+
return /* @__PURE__ */ import_react8.default.createElement("div", {
|
|
388
398
|
ref,
|
|
389
399
|
...rest
|
|
390
|
-
}, /* @__PURE__ */
|
|
400
|
+
}, /* @__PURE__ */ import_react8.default.createElement("video", {
|
|
391
401
|
controls: isDesignMode ? false : controls,
|
|
392
402
|
autoPlay: isDesignMode ? false : autoPlay,
|
|
393
403
|
loop,
|
|
394
404
|
muted: true,
|
|
395
405
|
controlsList: "nodownload",
|
|
396
406
|
disablePictureInPicture: true
|
|
397
|
-
}, /* @__PURE__ */
|
|
407
|
+
}, /* @__PURE__ */ import_react8.default.createElement("source", {
|
|
398
408
|
src,
|
|
399
409
|
type: type || "video/mp4"
|
|
400
410
|
}), "Your browser does not support the video tag."));
|
|
@@ -420,33 +430,33 @@ Video.defaultProps = {
|
|
|
420
430
|
var video_default = Video;
|
|
421
431
|
|
|
422
432
|
// src/elements/instagram.tsx
|
|
423
|
-
var
|
|
433
|
+
var import_react10 = __toESM(require("react"));
|
|
424
434
|
|
|
425
435
|
// src/elements/shared/Placeholder.tsx
|
|
426
|
-
var
|
|
427
|
-
var Placeholder = (0,
|
|
436
|
+
var import_react9 = __toESM(require("react"));
|
|
437
|
+
var Placeholder = (0, import_react9.forwardRef)(
|
|
428
438
|
(props, ref) => {
|
|
429
439
|
let { element, children, ...rest } = props;
|
|
430
|
-
return /* @__PURE__ */
|
|
440
|
+
return /* @__PURE__ */ import_react9.default.createElement("div", {
|
|
431
441
|
"data-wv-type": "placeholder",
|
|
432
442
|
style: { display: "none" },
|
|
433
443
|
ref,
|
|
434
444
|
...rest
|
|
435
|
-
}, /* @__PURE__ */
|
|
445
|
+
}, /* @__PURE__ */ import_react9.default.createElement("div", {
|
|
436
446
|
style: { fontWeight: 600, marginBottom: "10px" }
|
|
437
|
-
}, element), /* @__PURE__ */
|
|
447
|
+
}, element), /* @__PURE__ */ import_react9.default.createElement("div", null, children));
|
|
438
448
|
}
|
|
439
449
|
);
|
|
440
450
|
var Placeholder_default = Placeholder;
|
|
441
451
|
|
|
442
452
|
// src/elements/instagram.tsx
|
|
443
453
|
var INSTAGRAM_API = "https://graph.instagram.com";
|
|
444
|
-
var Instagram = (0,
|
|
454
|
+
var Instagram = (0, import_react10.forwardRef)(
|
|
445
455
|
(props, ref) => {
|
|
446
456
|
let { token, username, numberOfImages, imagesPerRow, gap, ...rest } = props;
|
|
447
|
-
let [media, setMedia] = (0,
|
|
448
|
-
let [error, setError] = (0,
|
|
449
|
-
(0,
|
|
457
|
+
let [media, setMedia] = (0, import_react10.useState)([]);
|
|
458
|
+
let [error, setError] = (0, import_react10.useState)(null);
|
|
459
|
+
(0, import_react10.useEffect)(() => {
|
|
450
460
|
if (token) {
|
|
451
461
|
let params = new URLSearchParams({
|
|
452
462
|
access_token: token,
|
|
@@ -463,31 +473,31 @@ var Instagram = (0, import_react9.forwardRef)(
|
|
|
463
473
|
}
|
|
464
474
|
}, [token]);
|
|
465
475
|
if (!token || error) {
|
|
466
|
-
return /* @__PURE__ */
|
|
476
|
+
return /* @__PURE__ */ import_react10.default.createElement("div", {
|
|
467
477
|
ref,
|
|
468
478
|
...rest
|
|
469
|
-
}, /* @__PURE__ */
|
|
479
|
+
}, /* @__PURE__ */ import_react10.default.createElement(Placeholder_default, {
|
|
470
480
|
element: "Instagram"
|
|
471
|
-
}, !token ? "Connect
|
|
481
|
+
}, !token ? "Connect to Instagram to display photos on your site." : "Invalid or expired token!"));
|
|
472
482
|
}
|
|
473
483
|
let style = {
|
|
474
484
|
"--wv-ig-images-per-row": imagesPerRow,
|
|
475
485
|
"--wv-ig-images-gap": gap + "px"
|
|
476
486
|
};
|
|
477
|
-
return /* @__PURE__ */
|
|
487
|
+
return /* @__PURE__ */ import_react10.default.createElement("div", {
|
|
478
488
|
ref,
|
|
479
489
|
...rest,
|
|
480
490
|
style
|
|
481
|
-
}, /* @__PURE__ */
|
|
491
|
+
}, /* @__PURE__ */ import_react10.default.createElement("div", {
|
|
482
492
|
className: "wv-ig-media-container"
|
|
483
493
|
}, media.slice(0, numberOfImages).map((item) => {
|
|
484
494
|
let { id, permalink, caption, media_url } = item;
|
|
485
|
-
return /* @__PURE__ */
|
|
495
|
+
return /* @__PURE__ */ import_react10.default.createElement("a", {
|
|
486
496
|
key: id,
|
|
487
497
|
href: permalink,
|
|
488
498
|
target: "_blank",
|
|
489
499
|
rel: "noreferrer"
|
|
490
|
-
}, /* @__PURE__ */
|
|
500
|
+
}, /* @__PURE__ */ import_react10.default.createElement("img", {
|
|
491
501
|
alt: caption,
|
|
492
502
|
src: media_url
|
|
493
503
|
}));
|
|
@@ -522,17 +532,17 @@ Instagram.defaultProps = {
|
|
|
522
532
|
var instagram_default = Instagram;
|
|
523
533
|
|
|
524
534
|
// src/elements/accordion/index.tsx
|
|
525
|
-
var
|
|
526
|
-
var AccordionContext = (0,
|
|
535
|
+
var import_react11 = __toESM(require("react"));
|
|
536
|
+
var AccordionContext = (0, import_react11.createContext)({
|
|
527
537
|
iconName: "arrow",
|
|
528
538
|
active: [],
|
|
529
539
|
setActive: () => {
|
|
530
540
|
}
|
|
531
541
|
});
|
|
532
|
-
var Accordion = (0,
|
|
542
|
+
var Accordion = (0, import_react11.forwardRef)(
|
|
533
543
|
(props, ref) => {
|
|
534
544
|
const { iconName, children, ...rest } = props;
|
|
535
|
-
const [active, setActive] = (0,
|
|
545
|
+
const [active, setActive] = (0, import_react11.useState)([]);
|
|
536
546
|
const setOpenAccordion = (id) => {
|
|
537
547
|
if (active.includes(id)) {
|
|
538
548
|
setActive(active.filter((_id) => _id !== id));
|
|
@@ -540,10 +550,10 @@ var Accordion = (0, import_react10.forwardRef)(
|
|
|
540
550
|
setActive([...active, id]);
|
|
541
551
|
}
|
|
542
552
|
};
|
|
543
|
-
return /* @__PURE__ */
|
|
553
|
+
return /* @__PURE__ */ import_react11.default.createElement("div", {
|
|
544
554
|
ref,
|
|
545
555
|
...rest
|
|
546
|
-
}, /* @__PURE__ */
|
|
556
|
+
}, /* @__PURE__ */ import_react11.default.createElement(AccordionContext.Provider, {
|
|
547
557
|
value: { active, setActive: setOpenAccordion, iconName }
|
|
548
558
|
}, children));
|
|
549
559
|
}
|
|
@@ -561,10 +571,10 @@ Accordion.defaultProps = {
|
|
|
561
571
|
var accordion_default = Accordion;
|
|
562
572
|
|
|
563
573
|
// src/elements/accordion/AccordionWrapper.tsx
|
|
564
|
-
var
|
|
574
|
+
var import_react13 = __toESM(require("react"));
|
|
565
575
|
|
|
566
576
|
// src/elements/accordion/Icon.tsx
|
|
567
|
-
var
|
|
577
|
+
var import_react12 = __toESM(require("react"));
|
|
568
578
|
var ICONS = {
|
|
569
579
|
caret: {
|
|
570
580
|
animationType: "rotate90",
|
|
@@ -621,7 +631,7 @@ var rotateAnimation = {
|
|
|
621
631
|
};
|
|
622
632
|
function Icon(props) {
|
|
623
633
|
let { name, active = false, style, ...rest } = props;
|
|
624
|
-
let { stitchesInstance } = (0,
|
|
634
|
+
let { stitchesInstance } = (0, import_react12.useContext)(WeaverseContext);
|
|
625
635
|
const { animationType, css } = ICONS[name];
|
|
626
636
|
if (active && animationType === "rotate90") {
|
|
627
637
|
style = { ...rotateAnimation, ...style };
|
|
@@ -629,27 +639,27 @@ function Icon(props) {
|
|
|
629
639
|
let { className } = stitchesInstance.css(css)();
|
|
630
640
|
if (active)
|
|
631
641
|
className += " active";
|
|
632
|
-
return /* @__PURE__ */
|
|
642
|
+
return /* @__PURE__ */ import_react12.default.createElement("span", {
|
|
633
643
|
style,
|
|
634
644
|
...rest
|
|
635
|
-
}, /* @__PURE__ */
|
|
645
|
+
}, /* @__PURE__ */ import_react12.default.createElement("i", {
|
|
636
646
|
className
|
|
637
647
|
}));
|
|
638
648
|
}
|
|
639
649
|
var Icon_default = Icon;
|
|
640
650
|
|
|
641
651
|
// src/elements/accordion/AccordionWrapper.tsx
|
|
642
|
-
var AccordionWrapper = (0,
|
|
652
|
+
var AccordionWrapper = (0, import_react13.forwardRef)((props, ref) => {
|
|
643
653
|
const { ["data-wv-id"]: wvId, name, children, ...rest } = props;
|
|
644
|
-
const { iconName, active, setActive } = (0,
|
|
654
|
+
const { iconName, active, setActive } = (0, import_react13.useContext)(AccordionContext);
|
|
645
655
|
const isActive = active.includes(wvId);
|
|
646
|
-
return /* @__PURE__ */
|
|
656
|
+
return /* @__PURE__ */ import_react13.default.createElement("div", {
|
|
647
657
|
ref,
|
|
648
658
|
...rest
|
|
649
|
-
}, /* @__PURE__ */
|
|
659
|
+
}, /* @__PURE__ */ import_react13.default.createElement("div", {
|
|
650
660
|
onClick: () => setActive(wvId),
|
|
651
661
|
className: `wv-acc-header ${isActive ? "active" : ""}`
|
|
652
|
-
}, /* @__PURE__ */
|
|
662
|
+
}, /* @__PURE__ */ import_react13.default.createElement("span", null, name), /* @__PURE__ */ import_react13.default.createElement(Icon_default, {
|
|
653
663
|
className: "wv-acc-icon",
|
|
654
664
|
active: isActive,
|
|
655
665
|
name: iconName
|
|
@@ -685,8 +695,8 @@ AccordionWrapper.defaultProps = {
|
|
|
685
695
|
var AccordionWrapper_default = AccordionWrapper;
|
|
686
696
|
|
|
687
697
|
// src/elements/accordion/AccordionContent.tsx
|
|
688
|
-
var
|
|
689
|
-
var AccordionContent = (0,
|
|
698
|
+
var import_react14 = __toESM(require("react"));
|
|
699
|
+
var AccordionContent = (0, import_react14.forwardRef)(
|
|
690
700
|
(props, ref) => {
|
|
691
701
|
const { rows, columns, gap, rowSize, children, ...rest } = props;
|
|
692
702
|
let style = {
|
|
@@ -697,13 +707,13 @@ var AccordionContent = (0, import_react13.forwardRef)(
|
|
|
697
707
|
"--col-size": "calc((var(--grid-size) - calc(var(--columns) - 1) * var(--gap)) / var(--columns))",
|
|
698
708
|
"--max-height": rows * rowSize + gap * (rowSize - 1) + "px"
|
|
699
709
|
};
|
|
700
|
-
return /* @__PURE__ */
|
|
710
|
+
return /* @__PURE__ */ import_react14.default.createElement("div", {
|
|
701
711
|
ref,
|
|
702
712
|
...rest,
|
|
703
713
|
style
|
|
704
|
-
},
|
|
714
|
+
}, import_react14.default.Children.count(children) > 0 ? children : /* @__PURE__ */ import_react14.default.createElement(Placeholder_default, {
|
|
705
715
|
element: "Accordion Content"
|
|
706
|
-
}, "
|
|
716
|
+
}, "Drag and drop an element here."));
|
|
707
717
|
}
|
|
708
718
|
);
|
|
709
719
|
AccordionContent.defaultProps = {
|
|
@@ -729,64 +739,64 @@ AccordionContent.defaultProps = {
|
|
|
729
739
|
var AccordionContent_default = AccordionContent;
|
|
730
740
|
|
|
731
741
|
// src/elements/tab/index.tsx
|
|
732
|
-
var
|
|
742
|
+
var import_react16 = __toESM(require("react"));
|
|
733
743
|
|
|
734
744
|
// src/elements/tab/TabHeaderWrapper.tsx
|
|
735
|
-
var
|
|
745
|
+
var import_react15 = __toESM(require("react"));
|
|
736
746
|
function TabHeader(props) {
|
|
737
747
|
const { wvId } = props;
|
|
738
|
-
const { active, setActive } = (0,
|
|
739
|
-
const { itemInstances } = (0,
|
|
748
|
+
const { active, setActive } = (0, import_react15.useContext)(TabContext);
|
|
749
|
+
const { itemInstances } = (0, import_react15.useContext)(WeaverseContext);
|
|
740
750
|
const instance = itemInstances.get(wvId);
|
|
741
|
-
let [data, setData] = (0,
|
|
742
|
-
(0,
|
|
751
|
+
let [data, setData] = (0, import_react15.useState)(instance.data);
|
|
752
|
+
(0, import_react15.useEffect)(() => {
|
|
743
753
|
let update = (data2) => setData({ ...data2 });
|
|
744
754
|
instance.subscribe(update);
|
|
745
755
|
}, []);
|
|
746
|
-
return /* @__PURE__ */
|
|
756
|
+
return /* @__PURE__ */ import_react15.default.createElement("div", {
|
|
747
757
|
onClick: () => setActive(wvId),
|
|
748
758
|
className: `wv-tab-header${active === wvId ? " active" : ""}`
|
|
749
759
|
}, data.name);
|
|
750
760
|
}
|
|
751
761
|
function TabHeaderWrapper(props) {
|
|
752
|
-
const { itemInstances } = (0,
|
|
762
|
+
const { itemInstances } = (0, import_react15.useContext)(WeaverseContext);
|
|
753
763
|
const instance = itemInstances.get(props.wvId);
|
|
754
764
|
const data = instance.data;
|
|
755
765
|
const childIds = data.childIds;
|
|
756
|
-
return /* @__PURE__ */
|
|
766
|
+
return /* @__PURE__ */ import_react15.default.createElement("div", {
|
|
757
767
|
className: "wv-tab-header-wrapper"
|
|
758
|
-
}, childIds.map((id) => /* @__PURE__ */
|
|
768
|
+
}, childIds.map((id) => /* @__PURE__ */ import_react15.default.createElement(TabHeader, {
|
|
759
769
|
key: id,
|
|
760
770
|
wvId: id
|
|
761
771
|
})));
|
|
762
772
|
}
|
|
763
773
|
|
|
764
774
|
// src/elements/tab/index.tsx
|
|
765
|
-
var TabContext = (0,
|
|
775
|
+
var TabContext = (0, import_react16.createContext)({
|
|
766
776
|
active: null,
|
|
767
777
|
setActive: () => {
|
|
768
778
|
}
|
|
769
779
|
});
|
|
770
|
-
var Tab = (0,
|
|
780
|
+
var Tab = (0, import_react16.forwardRef)((props, ref) => {
|
|
771
781
|
var _a, _b, _c;
|
|
772
782
|
const wvId = props["data-wv-id"];
|
|
773
783
|
const { fullWidthTabHeader, children, ...rest } = props;
|
|
774
|
-
const defaultActive = (_c = (_b = (_a =
|
|
775
|
-
const [active, setActive] = (0,
|
|
784
|
+
const defaultActive = (_c = (_b = (_a = import_react16.default.Children.toArray(children)) == null ? void 0 : _a[0]) == null ? void 0 : _b.props) == null ? void 0 : _c.id;
|
|
785
|
+
const [active, setActive] = (0, import_react16.useState)(defaultActive);
|
|
776
786
|
const setOpenTab = (id) => {
|
|
777
787
|
if (id !== active) {
|
|
778
788
|
setActive(id);
|
|
779
789
|
}
|
|
780
790
|
};
|
|
781
|
-
return /* @__PURE__ */
|
|
791
|
+
return /* @__PURE__ */ import_react16.default.createElement("div", {
|
|
782
792
|
ref,
|
|
783
793
|
...rest,
|
|
784
794
|
style: {
|
|
785
795
|
"--tab-width": fullWidthTabHeader ? "100%" : "auto"
|
|
786
796
|
}
|
|
787
|
-
}, /* @__PURE__ */
|
|
797
|
+
}, /* @__PURE__ */ import_react16.default.createElement(TabContext.Provider, {
|
|
788
798
|
value: { active, setActive: setOpenTab }
|
|
789
|
-
}, /* @__PURE__ */
|
|
799
|
+
}, /* @__PURE__ */ import_react16.default.createElement(TabHeaderWrapper, {
|
|
790
800
|
wvId
|
|
791
801
|
}), children));
|
|
792
802
|
});
|
|
@@ -819,10 +829,10 @@ Tab.defaultProps = {
|
|
|
819
829
|
var tab_default = Tab;
|
|
820
830
|
|
|
821
831
|
// src/elements/tab/TabContent.tsx
|
|
822
|
-
var
|
|
823
|
-
var TabContent = (0,
|
|
832
|
+
var import_react17 = __toESM(require("react"));
|
|
833
|
+
var TabContent = (0, import_react17.forwardRef)(
|
|
824
834
|
(props, ref) => {
|
|
825
|
-
const { active } = (0,
|
|
835
|
+
const { active } = (0, import_react17.useContext)(TabContext);
|
|
826
836
|
const wvId = props["data-wv-id"];
|
|
827
837
|
const { rows, columns, gap, rowSize, children, ...rest } = props;
|
|
828
838
|
let style = {
|
|
@@ -834,13 +844,13 @@ var TabContent = (0, import_react16.forwardRef)(
|
|
|
834
844
|
"--max-height": rows * rowSize + gap * (rowSize - 1) + "px",
|
|
835
845
|
"--content-active": active === wvId ? "grid" : "none"
|
|
836
846
|
};
|
|
837
|
-
return /* @__PURE__ */
|
|
847
|
+
return /* @__PURE__ */ import_react17.default.createElement("div", {
|
|
838
848
|
ref,
|
|
839
849
|
...rest,
|
|
840
850
|
style
|
|
841
|
-
},
|
|
851
|
+
}, import_react17.default.Children.count(children) > 0 ? children : /* @__PURE__ */ import_react17.default.createElement(Placeholder_default, {
|
|
842
852
|
element: "Tab Content"
|
|
843
|
-
}, "
|
|
853
|
+
}, "Drag and drop an element here."));
|
|
844
854
|
}
|
|
845
855
|
);
|
|
846
856
|
TabContent.defaultProps = {
|
|
@@ -864,29 +874,28 @@ TabContent.defaultProps = {
|
|
|
864
874
|
var TabContent_default = TabContent;
|
|
865
875
|
|
|
866
876
|
// src/elements/slider/index.tsx
|
|
867
|
-
var
|
|
868
|
-
var
|
|
869
|
-
var
|
|
870
|
-
|
|
871
|
-
const { isDesignMode } = (0, import_react17.useContext)(WeaverseContext);
|
|
877
|
+
var import_react18 = __toESM(require("react"));
|
|
878
|
+
var import_carousel = require("nuka-carousel/lib/carousel");
|
|
879
|
+
var Slider = (0, import_react18.forwardRef)((props, ref) => {
|
|
880
|
+
const { isDesignMode } = (0, import_react18.useContext)(WeaverseContext);
|
|
872
881
|
const { autoplay, delay, children, ...rest } = props;
|
|
873
|
-
return /* @__PURE__ */
|
|
882
|
+
return /* @__PURE__ */ import_react18.default.createElement("div", {
|
|
874
883
|
...rest,
|
|
875
884
|
ref
|
|
876
|
-
}, /* @__PURE__ */
|
|
885
|
+
}, /* @__PURE__ */ import_react18.default.createElement(import_carousel.Carousel, {
|
|
877
886
|
dragging: false,
|
|
878
|
-
renderCenterLeftControls: (props2) => /* @__PURE__ */
|
|
887
|
+
renderCenterLeftControls: (props2) => /* @__PURE__ */ import_react18.default.createElement("button", {
|
|
879
888
|
className: "wv-slider-btn",
|
|
880
889
|
onClick: props2.previousSlide,
|
|
881
890
|
disabled: (isDesignMode || !autoplay) && props2.currentSlide === 0
|
|
882
|
-
}, /* @__PURE__ */
|
|
891
|
+
}, /* @__PURE__ */ import_react18.default.createElement("i", {
|
|
883
892
|
className: "wv-slider-arrow wv-slider-arrow-left"
|
|
884
893
|
})),
|
|
885
|
-
renderCenterRightControls: (props2) => /* @__PURE__ */
|
|
894
|
+
renderCenterRightControls: (props2) => /* @__PURE__ */ import_react18.default.createElement("button", {
|
|
886
895
|
className: "wv-slider-btn",
|
|
887
896
|
onClick: props2.nextSlide,
|
|
888
897
|
disabled: (isDesignMode || !autoplay) && props2.slideCount === props2.currentSlide
|
|
889
|
-
}, /* @__PURE__ */
|
|
898
|
+
}, /* @__PURE__ */ import_react18.default.createElement("i", {
|
|
890
899
|
className: "wv-slider-arrow wv-slider-arrow-right"
|
|
891
900
|
})),
|
|
892
901
|
wrapAround: !isDesignMode,
|
|
@@ -934,10 +943,10 @@ Slider.defaultProps = {
|
|
|
934
943
|
var slider_default = Slider;
|
|
935
944
|
|
|
936
945
|
// src/elements/slider/SliderContent.tsx
|
|
937
|
-
var
|
|
938
|
-
var SliderContent = (0,
|
|
946
|
+
var import_react19 = __toESM(require("react"));
|
|
947
|
+
var SliderContent = (0, import_react19.forwardRef)(
|
|
939
948
|
(props, ref) => {
|
|
940
|
-
const { isDesignMode } = (0,
|
|
949
|
+
const { isDesignMode } = (0, import_react19.useContext)(WeaverseContext);
|
|
941
950
|
const {
|
|
942
951
|
mediaUrl,
|
|
943
952
|
targetLink,
|
|
@@ -963,13 +972,13 @@ var SliderContent = (0, import_react18.forwardRef)(
|
|
|
963
972
|
window.open(targetLink, openInNewTab ? "_blank" : "_self");
|
|
964
973
|
}
|
|
965
974
|
};
|
|
966
|
-
return /* @__PURE__ */
|
|
975
|
+
return /* @__PURE__ */ import_react19.default.createElement("div", {
|
|
967
976
|
...rest,
|
|
968
977
|
style,
|
|
969
978
|
onClick: handleClick
|
|
970
|
-
},
|
|
979
|
+
}, import_react19.default.Children.count(children) > 0 ? children : /* @__PURE__ */ import_react19.default.createElement(Placeholder_default, {
|
|
971
980
|
element: "Slider Content"
|
|
972
|
-
}, "
|
|
981
|
+
}, "Drag and drop an element here."));
|
|
973
982
|
}
|
|
974
983
|
);
|
|
975
984
|
SliderContent.defaultProps = {
|
|
@@ -996,44 +1005,10 @@ SliderContent.defaultProps = {
|
|
|
996
1005
|
};
|
|
997
1006
|
var SliderContent_default = SliderContent;
|
|
998
1007
|
|
|
999
|
-
// src/elements/custom-html.tsx
|
|
1000
|
-
var import_react19 = __toESM(require("react"));
|
|
1001
|
-
var CustomHTML = (0, import_react19.forwardRef)(
|
|
1002
|
-
(props, ref) => {
|
|
1003
|
-
const { content, children, ...rest } = props;
|
|
1004
|
-
const { isDesignMode } = (0, import_react19.useContext)(WeaverseContext);
|
|
1005
|
-
const style = {
|
|
1006
|
-
"--pointer-events": isDesignMode ? "none" : "auto"
|
|
1007
|
-
};
|
|
1008
|
-
if (!content)
|
|
1009
|
-
return /* @__PURE__ */ import_react19.default.createElement("div", {
|
|
1010
|
-
ref,
|
|
1011
|
-
...rest
|
|
1012
|
-
}, /* @__PURE__ */ import_react19.default.createElement(Placeholder_default, {
|
|
1013
|
-
element: "Custom HTML"
|
|
1014
|
-
}, "Please add your custom HTML codes."));
|
|
1015
|
-
return /* @__PURE__ */ import_react19.default.createElement("div", {
|
|
1016
|
-
ref,
|
|
1017
|
-
...rest,
|
|
1018
|
-
style,
|
|
1019
|
-
dangerouslySetInnerHTML: { __html: content }
|
|
1020
|
-
});
|
|
1021
|
-
}
|
|
1022
|
-
);
|
|
1023
|
-
CustomHTML.defaultProps = {
|
|
1024
|
-
content: "",
|
|
1025
|
-
type: "custom.html",
|
|
1026
|
-
css: {
|
|
1027
|
-
"@desktop": {
|
|
1028
|
-
"& > *": {
|
|
1029
|
-
pointerEvents: "var(--pointer-events, unset)"
|
|
1030
|
-
}
|
|
1031
|
-
}
|
|
1032
|
-
}
|
|
1033
|
-
};
|
|
1034
|
-
var custom_html_default = CustomHTML;
|
|
1035
|
-
|
|
1036
1008
|
// src/elements/index.ts
|
|
1009
|
+
var SharedComponents = {
|
|
1010
|
+
Placeholder: Placeholder_default
|
|
1011
|
+
};
|
|
1037
1012
|
var Elements = {
|
|
1038
1013
|
Countdown: {
|
|
1039
1014
|
Component: countdown_default,
|
|
@@ -1098,28 +1073,12 @@ var Elements = {
|
|
|
1098
1073
|
SliderContent: {
|
|
1099
1074
|
Component: SliderContent_default,
|
|
1100
1075
|
type: "slider.content"
|
|
1101
|
-
},
|
|
1102
|
-
CustomHTML: {
|
|
1103
|
-
Component: custom_html_default,
|
|
1104
|
-
type: "custom.html"
|
|
1105
1076
|
}
|
|
1106
1077
|
};
|
|
1107
1078
|
|
|
1108
|
-
// src/context.ts
|
|
1109
|
-
var createRootContext = (configs) => {
|
|
1110
|
-
let rootContext = new import_core.Weaverse(configs);
|
|
1111
|
-
Object.keys(Elements).forEach((key) => {
|
|
1112
|
-
rootContext.registerElement(Elements[key]);
|
|
1113
|
-
});
|
|
1114
|
-
return rootContext;
|
|
1115
|
-
};
|
|
1116
|
-
var WeaverseContext = (0, import_react20.createContext)({});
|
|
1117
|
-
var WeaverseContextProvider = WeaverseContext.Provider;
|
|
1118
|
-
var WeaverseContextConsumer = WeaverseContext.Consumer;
|
|
1119
|
-
|
|
1120
1079
|
// src/renderer.tsx
|
|
1121
1080
|
var import_core2 = require("@weaverse/core");
|
|
1122
|
-
var
|
|
1081
|
+
var import_react20 = __toESM(require("react"));
|
|
1123
1082
|
|
|
1124
1083
|
// src/utils/index.ts
|
|
1125
1084
|
function shortCssObject(css) {
|
|
@@ -1129,15 +1088,14 @@ function shortCssObject(css) {
|
|
|
1129
1088
|
};
|
|
1130
1089
|
}
|
|
1131
1090
|
function generateItemClass(instance, stitchesInstance) {
|
|
1132
|
-
var _a
|
|
1091
|
+
var _a;
|
|
1133
1092
|
let { css, className: cls = "" } = instance.data;
|
|
1134
|
-
let defaultCss = ((_c = (_b = (_a = instance.Element) == null ? void 0 : _a.Component) == null ? void 0 : _b.defaultProps) == null ? void 0 : _c.css) || {};
|
|
1135
1093
|
let className = "";
|
|
1136
|
-
if (css
|
|
1137
|
-
let formattedCss = shortCssObject(css
|
|
1094
|
+
if (css) {
|
|
1095
|
+
let formattedCss = shortCssObject(css);
|
|
1138
1096
|
let { className: newClass = "" } = stitchesInstance.css(formattedCss)();
|
|
1139
1097
|
let { stitchesClass } = instance;
|
|
1140
|
-
let otherClass = (((
|
|
1098
|
+
let otherClass = (((_a = instance.ref.current) == null ? void 0 : _a.className) || "").replace(stitchesClass, "").replace(cls, "").trim();
|
|
1141
1099
|
className = `${cls} ${newClass} ${otherClass}`.trim();
|
|
1142
1100
|
instance.stitchesClass = newClass;
|
|
1143
1101
|
}
|
|
@@ -1147,10 +1105,10 @@ function generateItemClass(instance, stitchesInstance) {
|
|
|
1147
1105
|
// src/renderer.tsx
|
|
1148
1106
|
var WeaverseRoot = ({ context }) => {
|
|
1149
1107
|
var _a, _b;
|
|
1150
|
-
let [, setData] = (0,
|
|
1151
|
-
let rootRef = (0,
|
|
1108
|
+
let [, setData] = (0, import_react20.useState)(context.projectData);
|
|
1109
|
+
let rootRef = (0, import_react20.useRef)();
|
|
1152
1110
|
let update = () => setData({});
|
|
1153
|
-
(0,
|
|
1111
|
+
(0, import_react20.useEffect)(() => {
|
|
1154
1112
|
context.subscribe(update);
|
|
1155
1113
|
context.contentRootElement = rootRef.current;
|
|
1156
1114
|
return () => {
|
|
@@ -1159,22 +1117,21 @@ var WeaverseRoot = ({ context }) => {
|
|
|
1159
1117
|
}, []);
|
|
1160
1118
|
let eventHandlers = ((_a = context == null ? void 0 : context.studioBridge) == null ? void 0 : _a.eventHandlers) || {};
|
|
1161
1119
|
let themeClass = context.stitchesInstance.theme.className;
|
|
1162
|
-
return ((_b = context.projectData) == null ? void 0 : _b.rootId) ? /* @__PURE__ */
|
|
1120
|
+
return ((_b = context.projectData) == null ? void 0 : _b.rootId) ? /* @__PURE__ */ import_react20.default.createElement("div", {
|
|
1163
1121
|
className: `weaverse-content-root ${themeClass}`,
|
|
1164
1122
|
...eventHandlers,
|
|
1165
1123
|
ref: rootRef
|
|
1166
|
-
}, /* @__PURE__ */
|
|
1124
|
+
}, /* @__PURE__ */ import_react20.default.createElement(WeaverseContextProvider, {
|
|
1167
1125
|
value: context
|
|
1168
|
-
}, /* @__PURE__ */
|
|
1126
|
+
}, /* @__PURE__ */ import_react20.default.createElement(ItemInstance, {
|
|
1169
1127
|
id: context.projectData.rootId
|
|
1170
1128
|
}))) : null;
|
|
1171
1129
|
};
|
|
1172
1130
|
var ItemComponent = ({ instance }) => {
|
|
1173
|
-
let { stitchesInstance, elementInstances } = (0,
|
|
1174
|
-
let [data, setData] = (0,
|
|
1131
|
+
let { stitchesInstance, elementInstances } = (0, import_react20.useContext)(WeaverseContext);
|
|
1132
|
+
let [data, setData] = (0, import_react20.useState)(instance.data);
|
|
1175
1133
|
let { id, type, childIds = [], css, className, ...rest } = data;
|
|
1176
|
-
(0,
|
|
1177
|
-
var _a;
|
|
1134
|
+
(0, import_react20.useEffect)(() => {
|
|
1178
1135
|
let update = (data2) => setData({ ...data2 });
|
|
1179
1136
|
instance.subscribe(update);
|
|
1180
1137
|
if (import_core2.isBrowser && !instance.ref.current) {
|
|
@@ -1182,10 +1139,7 @@ var ItemComponent = ({ instance }) => {
|
|
|
1182
1139
|
current: document.querySelector(`[data-wv-id="${id}"]`)
|
|
1183
1140
|
});
|
|
1184
1141
|
}
|
|
1185
|
-
(
|
|
1186
|
-
return () => {
|
|
1187
|
-
instance.unsubscribe(update);
|
|
1188
|
-
};
|
|
1142
|
+
return () => instance.unsubscribe(update);
|
|
1189
1143
|
}, []);
|
|
1190
1144
|
let Element = elementInstances.get(type);
|
|
1191
1145
|
if (Element == null ? void 0 : Element.Component) {
|
|
@@ -1193,13 +1147,13 @@ var ItemComponent = ({ instance }) => {
|
|
|
1193
1147
|
if (Component.$$typeof === Symbol.for("react.forward_ref")) {
|
|
1194
1148
|
rest.ref = instance.ref;
|
|
1195
1149
|
}
|
|
1196
|
-
return /* @__PURE__ */
|
|
1150
|
+
return /* @__PURE__ */ import_react20.default.createElement(Component, {
|
|
1197
1151
|
key: id,
|
|
1198
1152
|
"data-wv-type": type,
|
|
1199
1153
|
"data-wv-id": id,
|
|
1200
1154
|
className: generateItemClass(instance, stitchesInstance),
|
|
1201
1155
|
...rest
|
|
1202
|
-
}, childIds.map((id2) => /* @__PURE__ */
|
|
1156
|
+
}, childIds.map((id2) => /* @__PURE__ */ import_react20.default.createElement(ItemInstance, {
|
|
1203
1157
|
key: id2,
|
|
1204
1158
|
id: id2
|
|
1205
1159
|
})));
|
|
@@ -1207,15 +1161,15 @@ var ItemComponent = ({ instance }) => {
|
|
|
1207
1161
|
return null;
|
|
1208
1162
|
};
|
|
1209
1163
|
var ItemInstance = ({ id }) => {
|
|
1210
|
-
let context = (0,
|
|
1164
|
+
let context = (0, import_react20.useContext)(WeaverseContext);
|
|
1211
1165
|
let { itemInstances } = context;
|
|
1212
1166
|
let instance = itemInstances.get(id);
|
|
1213
1167
|
if (!instance) {
|
|
1214
|
-
return /* @__PURE__ */
|
|
1168
|
+
return /* @__PURE__ */ import_react20.default.createElement("div", {
|
|
1215
1169
|
style: { display: "none" }
|
|
1216
1170
|
}, "Item instance ", id, " not found");
|
|
1217
1171
|
}
|
|
1218
|
-
return /* @__PURE__ */
|
|
1172
|
+
return /* @__PURE__ */ import_react20.default.createElement(ItemComponent, {
|
|
1219
1173
|
instance
|
|
1220
1174
|
});
|
|
1221
1175
|
};
|
|
@@ -1224,6 +1178,8 @@ var ItemInstance = ({ id }) => {
|
|
|
1224
1178
|
__reExport(src_exports, require("@weaverse/core"), module.exports);
|
|
1225
1179
|
// Annotate the CommonJS export names for ESM import in node:
|
|
1226
1180
|
0 && (module.exports = {
|
|
1181
|
+
Elements,
|
|
1182
|
+
SharedComponents,
|
|
1227
1183
|
WeaverseContext,
|
|
1228
1184
|
WeaverseContextConsumer,
|
|
1229
1185
|
WeaverseContextProvider,
|
package/dist/index.mjs
CHANGED
|
@@ -1,30 +1,27 @@
|
|
|
1
|
-
// src/context.ts
|
|
2
|
-
import { Weaverse } from "@weaverse/core";
|
|
3
|
-
import { createContext as createContext3 } from "react";
|
|
4
|
-
|
|
5
1
|
// src/elements/button.tsx
|
|
6
2
|
import * as React from "react";
|
|
7
3
|
var Button = React.forwardRef((props, ref) => {
|
|
8
|
-
let {
|
|
9
|
-
if (
|
|
4
|
+
let { text, clickAction, linkTo, openInNewTab, ...rest } = props;
|
|
5
|
+
if (clickAction && linkTo) {
|
|
10
6
|
return /* @__PURE__ */ React.createElement("a", {
|
|
11
|
-
href:
|
|
7
|
+
href: linkTo,
|
|
12
8
|
target: openInNewTab ? "_blank" : "_self",
|
|
13
9
|
rel: "noreferrer",
|
|
14
10
|
...rest,
|
|
15
11
|
ref
|
|
16
|
-
},
|
|
12
|
+
}, text);
|
|
17
13
|
}
|
|
18
14
|
return /* @__PURE__ */ React.createElement("button", {
|
|
19
15
|
ref,
|
|
20
16
|
...rest
|
|
21
|
-
},
|
|
17
|
+
}, text);
|
|
22
18
|
});
|
|
23
19
|
Button.defaultProps = {
|
|
24
|
-
value: "Shop now",
|
|
25
|
-
openInNewTab: false,
|
|
26
|
-
target: "",
|
|
27
20
|
type: "button",
|
|
21
|
+
text: "Shop now",
|
|
22
|
+
clickAction: "none",
|
|
23
|
+
linkTo: "",
|
|
24
|
+
openInNewTab: false,
|
|
28
25
|
css: {
|
|
29
26
|
"@desktop": {
|
|
30
27
|
borderRadius: "72px",
|
|
@@ -70,6 +67,20 @@ var container_default = Container;
|
|
|
70
67
|
// src/elements/countdown/index.tsx
|
|
71
68
|
import React4, { forwardRef as forwardRef3, useContext, useEffect } from "react";
|
|
72
69
|
|
|
70
|
+
// src/context.ts
|
|
71
|
+
import { Weaverse } from "@weaverse/core";
|
|
72
|
+
import { createContext } from "react";
|
|
73
|
+
var createRootContext = (configs) => {
|
|
74
|
+
let rootContext = new Weaverse(configs);
|
|
75
|
+
Object.keys(Elements).forEach((key) => {
|
|
76
|
+
rootContext.registerElement(Elements[key]);
|
|
77
|
+
});
|
|
78
|
+
return rootContext;
|
|
79
|
+
};
|
|
80
|
+
var WeaverseContext = createContext({});
|
|
81
|
+
var WeaverseContextProvider = WeaverseContext.Provider;
|
|
82
|
+
var WeaverseContextConsumer = WeaverseContext.Consumer;
|
|
83
|
+
|
|
73
84
|
// src/elements/countdown/timer-block.tsx
|
|
74
85
|
import React3 from "react";
|
|
75
86
|
function TimerBlock({ value, label }) {
|
|
@@ -330,10 +341,7 @@ Text.defaultProps = {
|
|
|
330
341
|
value: "The quick brown fox jumps over the lazy dog",
|
|
331
342
|
css: {
|
|
332
343
|
"@desktop": {
|
|
333
|
-
|
|
334
|
-
height: "fit-content",
|
|
335
|
-
padding: "20px",
|
|
336
|
-
outline: "none",
|
|
344
|
+
padding: "10px",
|
|
337
345
|
wordBreak: "break-word",
|
|
338
346
|
overflowWrap: "break-word",
|
|
339
347
|
whiteSpace: "break-spaces"
|
|
@@ -431,7 +439,7 @@ var Instagram = forwardRef9(
|
|
|
431
439
|
...rest
|
|
432
440
|
}, /* @__PURE__ */ React11.createElement(Placeholder_default, {
|
|
433
441
|
element: "Instagram"
|
|
434
|
-
}, !token ? "Connect
|
|
442
|
+
}, !token ? "Connect to Instagram to display photos on your site." : "Invalid or expired token!"));
|
|
435
443
|
}
|
|
436
444
|
let style = {
|
|
437
445
|
"--wv-ig-images-per-row": imagesPerRow,
|
|
@@ -485,8 +493,8 @@ Instagram.defaultProps = {
|
|
|
485
493
|
var instagram_default = Instagram;
|
|
486
494
|
|
|
487
495
|
// src/elements/accordion/index.tsx
|
|
488
|
-
import React12, { createContext, forwardRef as forwardRef10, useState as useState2 } from "react";
|
|
489
|
-
var AccordionContext =
|
|
496
|
+
import React12, { createContext as createContext2, forwardRef as forwardRef10, useState as useState2 } from "react";
|
|
497
|
+
var AccordionContext = createContext2({
|
|
490
498
|
iconName: "arrow",
|
|
491
499
|
active: [],
|
|
492
500
|
setActive: () => {
|
|
@@ -666,7 +674,7 @@ var AccordionContent = forwardRef12(
|
|
|
666
674
|
style
|
|
667
675
|
}, React15.Children.count(children) > 0 ? children : /* @__PURE__ */ React15.createElement(Placeholder_default, {
|
|
668
676
|
element: "Accordion Content"
|
|
669
|
-
}, "
|
|
677
|
+
}, "Drag and drop an element here."));
|
|
670
678
|
}
|
|
671
679
|
);
|
|
672
680
|
AccordionContent.defaultProps = {
|
|
@@ -692,7 +700,7 @@ AccordionContent.defaultProps = {
|
|
|
692
700
|
var AccordionContent_default = AccordionContent;
|
|
693
701
|
|
|
694
702
|
// src/elements/tab/index.tsx
|
|
695
|
-
import React17, { createContext as
|
|
703
|
+
import React17, { createContext as createContext3, forwardRef as forwardRef13, useState as useState4 } from "react";
|
|
696
704
|
|
|
697
705
|
// src/elements/tab/TabHeaderWrapper.tsx
|
|
698
706
|
import React16, { useContext as useContext6, useEffect as useEffect3, useState as useState3 } from "react";
|
|
@@ -725,7 +733,7 @@ function TabHeaderWrapper(props) {
|
|
|
725
733
|
}
|
|
726
734
|
|
|
727
735
|
// src/elements/tab/index.tsx
|
|
728
|
-
var TabContext =
|
|
736
|
+
var TabContext = createContext3({
|
|
729
737
|
active: null,
|
|
730
738
|
setActive: () => {
|
|
731
739
|
}
|
|
@@ -803,7 +811,7 @@ var TabContent = forwardRef14(
|
|
|
803
811
|
style
|
|
804
812
|
}, React18.Children.count(children) > 0 ? children : /* @__PURE__ */ React18.createElement(Placeholder_default, {
|
|
805
813
|
element: "Tab Content"
|
|
806
|
-
}, "
|
|
814
|
+
}, "Drag and drop an element here."));
|
|
807
815
|
}
|
|
808
816
|
);
|
|
809
817
|
TabContent.defaultProps = {
|
|
@@ -828,8 +836,7 @@ var TabContent_default = TabContent;
|
|
|
828
836
|
|
|
829
837
|
// src/elements/slider/index.tsx
|
|
830
838
|
import React19, { forwardRef as forwardRef15, useContext as useContext8 } from "react";
|
|
831
|
-
import
|
|
832
|
-
var Carousel = C.default;
|
|
839
|
+
import { Carousel } from "nuka-carousel/lib/carousel";
|
|
833
840
|
var Slider = forwardRef15((props, ref) => {
|
|
834
841
|
const { isDesignMode } = useContext8(WeaverseContext);
|
|
835
842
|
const { autoplay, delay, children, ...rest } = props;
|
|
@@ -932,7 +939,7 @@ var SliderContent = forwardRef16(
|
|
|
932
939
|
onClick: handleClick
|
|
933
940
|
}, React20.Children.count(children) > 0 ? children : /* @__PURE__ */ React20.createElement(Placeholder_default, {
|
|
934
941
|
element: "Slider Content"
|
|
935
|
-
}, "
|
|
942
|
+
}, "Drag and drop an element here."));
|
|
936
943
|
}
|
|
937
944
|
);
|
|
938
945
|
SliderContent.defaultProps = {
|
|
@@ -959,44 +966,10 @@ SliderContent.defaultProps = {
|
|
|
959
966
|
};
|
|
960
967
|
var SliderContent_default = SliderContent;
|
|
961
968
|
|
|
962
|
-
// src/elements/custom-html.tsx
|
|
963
|
-
import React21, { forwardRef as forwardRef17, useContext as useContext10 } from "react";
|
|
964
|
-
var CustomHTML = forwardRef17(
|
|
965
|
-
(props, ref) => {
|
|
966
|
-
const { content, children, ...rest } = props;
|
|
967
|
-
const { isDesignMode } = useContext10(WeaverseContext);
|
|
968
|
-
const style = {
|
|
969
|
-
"--pointer-events": isDesignMode ? "none" : "auto"
|
|
970
|
-
};
|
|
971
|
-
if (!content)
|
|
972
|
-
return /* @__PURE__ */ React21.createElement("div", {
|
|
973
|
-
ref,
|
|
974
|
-
...rest
|
|
975
|
-
}, /* @__PURE__ */ React21.createElement(Placeholder_default, {
|
|
976
|
-
element: "Custom HTML"
|
|
977
|
-
}, "Please add your custom HTML codes."));
|
|
978
|
-
return /* @__PURE__ */ React21.createElement("div", {
|
|
979
|
-
ref,
|
|
980
|
-
...rest,
|
|
981
|
-
style,
|
|
982
|
-
dangerouslySetInnerHTML: { __html: content }
|
|
983
|
-
});
|
|
984
|
-
}
|
|
985
|
-
);
|
|
986
|
-
CustomHTML.defaultProps = {
|
|
987
|
-
content: "",
|
|
988
|
-
type: "custom.html",
|
|
989
|
-
css: {
|
|
990
|
-
"@desktop": {
|
|
991
|
-
"& > *": {
|
|
992
|
-
pointerEvents: "var(--pointer-events, unset)"
|
|
993
|
-
}
|
|
994
|
-
}
|
|
995
|
-
}
|
|
996
|
-
};
|
|
997
|
-
var custom_html_default = CustomHTML;
|
|
998
|
-
|
|
999
969
|
// src/elements/index.ts
|
|
970
|
+
var SharedComponents = {
|
|
971
|
+
Placeholder: Placeholder_default
|
|
972
|
+
};
|
|
1000
973
|
var Elements = {
|
|
1001
974
|
Countdown: {
|
|
1002
975
|
Component: countdown_default,
|
|
@@ -1061,28 +1034,12 @@ var Elements = {
|
|
|
1061
1034
|
SliderContent: {
|
|
1062
1035
|
Component: SliderContent_default,
|
|
1063
1036
|
type: "slider.content"
|
|
1064
|
-
},
|
|
1065
|
-
CustomHTML: {
|
|
1066
|
-
Component: custom_html_default,
|
|
1067
|
-
type: "custom.html"
|
|
1068
1037
|
}
|
|
1069
1038
|
};
|
|
1070
1039
|
|
|
1071
|
-
// src/context.ts
|
|
1072
|
-
var createRootContext = (configs) => {
|
|
1073
|
-
let rootContext = new Weaverse(configs);
|
|
1074
|
-
Object.keys(Elements).forEach((key) => {
|
|
1075
|
-
rootContext.registerElement(Elements[key]);
|
|
1076
|
-
});
|
|
1077
|
-
return rootContext;
|
|
1078
|
-
};
|
|
1079
|
-
var WeaverseContext = createContext3({});
|
|
1080
|
-
var WeaverseContextProvider = WeaverseContext.Provider;
|
|
1081
|
-
var WeaverseContextConsumer = WeaverseContext.Consumer;
|
|
1082
|
-
|
|
1083
1040
|
// src/renderer.tsx
|
|
1084
1041
|
import { isBrowser } from "@weaverse/core";
|
|
1085
|
-
import
|
|
1042
|
+
import React21, { useContext as useContext10, useEffect as useEffect4, useRef, useState as useState5 } from "react";
|
|
1086
1043
|
|
|
1087
1044
|
// src/utils/index.ts
|
|
1088
1045
|
function shortCssObject(css) {
|
|
@@ -1092,15 +1049,14 @@ function shortCssObject(css) {
|
|
|
1092
1049
|
};
|
|
1093
1050
|
}
|
|
1094
1051
|
function generateItemClass(instance, stitchesInstance) {
|
|
1095
|
-
var _a
|
|
1052
|
+
var _a;
|
|
1096
1053
|
let { css, className: cls = "" } = instance.data;
|
|
1097
|
-
let defaultCss = ((_c = (_b = (_a = instance.Element) == null ? void 0 : _a.Component) == null ? void 0 : _b.defaultProps) == null ? void 0 : _c.css) || {};
|
|
1098
1054
|
let className = "";
|
|
1099
|
-
if (css
|
|
1100
|
-
let formattedCss = shortCssObject(css
|
|
1055
|
+
if (css) {
|
|
1056
|
+
let formattedCss = shortCssObject(css);
|
|
1101
1057
|
let { className: newClass = "" } = stitchesInstance.css(formattedCss)();
|
|
1102
1058
|
let { stitchesClass } = instance;
|
|
1103
|
-
let otherClass = (((
|
|
1059
|
+
let otherClass = (((_a = instance.ref.current) == null ? void 0 : _a.className) || "").replace(stitchesClass, "").replace(cls, "").trim();
|
|
1104
1060
|
className = `${cls} ${newClass} ${otherClass}`.trim();
|
|
1105
1061
|
instance.stitchesClass = newClass;
|
|
1106
1062
|
}
|
|
@@ -1122,22 +1078,21 @@ var WeaverseRoot = ({ context }) => {
|
|
|
1122
1078
|
}, []);
|
|
1123
1079
|
let eventHandlers = ((_a = context == null ? void 0 : context.studioBridge) == null ? void 0 : _a.eventHandlers) || {};
|
|
1124
1080
|
let themeClass = context.stitchesInstance.theme.className;
|
|
1125
|
-
return ((_b = context.projectData) == null ? void 0 : _b.rootId) ? /* @__PURE__ */
|
|
1081
|
+
return ((_b = context.projectData) == null ? void 0 : _b.rootId) ? /* @__PURE__ */ React21.createElement("div", {
|
|
1126
1082
|
className: `weaverse-content-root ${themeClass}`,
|
|
1127
1083
|
...eventHandlers,
|
|
1128
1084
|
ref: rootRef
|
|
1129
|
-
}, /* @__PURE__ */
|
|
1085
|
+
}, /* @__PURE__ */ React21.createElement(WeaverseContextProvider, {
|
|
1130
1086
|
value: context
|
|
1131
|
-
}, /* @__PURE__ */
|
|
1087
|
+
}, /* @__PURE__ */ React21.createElement(ItemInstance, {
|
|
1132
1088
|
id: context.projectData.rootId
|
|
1133
1089
|
}))) : null;
|
|
1134
1090
|
};
|
|
1135
1091
|
var ItemComponent = ({ instance }) => {
|
|
1136
|
-
let { stitchesInstance, elementInstances } =
|
|
1092
|
+
let { stitchesInstance, elementInstances } = useContext10(WeaverseContext);
|
|
1137
1093
|
let [data, setData] = useState5(instance.data);
|
|
1138
1094
|
let { id, type, childIds = [], css, className, ...rest } = data;
|
|
1139
1095
|
useEffect4(() => {
|
|
1140
|
-
var _a;
|
|
1141
1096
|
let update = (data2) => setData({ ...data2 });
|
|
1142
1097
|
instance.subscribe(update);
|
|
1143
1098
|
if (isBrowser && !instance.ref.current) {
|
|
@@ -1145,10 +1100,7 @@ var ItemComponent = ({ instance }) => {
|
|
|
1145
1100
|
current: document.querySelector(`[data-wv-id="${id}"]`)
|
|
1146
1101
|
});
|
|
1147
1102
|
}
|
|
1148
|
-
(
|
|
1149
|
-
return () => {
|
|
1150
|
-
instance.unsubscribe(update);
|
|
1151
|
-
};
|
|
1103
|
+
return () => instance.unsubscribe(update);
|
|
1152
1104
|
}, []);
|
|
1153
1105
|
let Element = elementInstances.get(type);
|
|
1154
1106
|
if (Element == null ? void 0 : Element.Component) {
|
|
@@ -1156,13 +1108,13 @@ var ItemComponent = ({ instance }) => {
|
|
|
1156
1108
|
if (Component.$$typeof === Symbol.for("react.forward_ref")) {
|
|
1157
1109
|
rest.ref = instance.ref;
|
|
1158
1110
|
}
|
|
1159
|
-
return /* @__PURE__ */
|
|
1111
|
+
return /* @__PURE__ */ React21.createElement(Component, {
|
|
1160
1112
|
key: id,
|
|
1161
1113
|
"data-wv-type": type,
|
|
1162
1114
|
"data-wv-id": id,
|
|
1163
1115
|
className: generateItemClass(instance, stitchesInstance),
|
|
1164
1116
|
...rest
|
|
1165
|
-
}, childIds.map((id2) => /* @__PURE__ */
|
|
1117
|
+
}, childIds.map((id2) => /* @__PURE__ */ React21.createElement(ItemInstance, {
|
|
1166
1118
|
key: id2,
|
|
1167
1119
|
id: id2
|
|
1168
1120
|
})));
|
|
@@ -1170,15 +1122,15 @@ var ItemComponent = ({ instance }) => {
|
|
|
1170
1122
|
return null;
|
|
1171
1123
|
};
|
|
1172
1124
|
var ItemInstance = ({ id }) => {
|
|
1173
|
-
let context =
|
|
1125
|
+
let context = useContext10(WeaverseContext);
|
|
1174
1126
|
let { itemInstances } = context;
|
|
1175
1127
|
let instance = itemInstances.get(id);
|
|
1176
1128
|
if (!instance) {
|
|
1177
|
-
return /* @__PURE__ */
|
|
1129
|
+
return /* @__PURE__ */ React21.createElement("div", {
|
|
1178
1130
|
style: { display: "none" }
|
|
1179
1131
|
}, "Item instance ", id, " not found");
|
|
1180
1132
|
}
|
|
1181
|
-
return /* @__PURE__ */
|
|
1133
|
+
return /* @__PURE__ */ React21.createElement(ItemComponent, {
|
|
1182
1134
|
instance
|
|
1183
1135
|
});
|
|
1184
1136
|
};
|
|
@@ -1186,6 +1138,8 @@ var ItemInstance = ({ id }) => {
|
|
|
1186
1138
|
// src/index.ts
|
|
1187
1139
|
export * from "@weaverse/core";
|
|
1188
1140
|
export {
|
|
1141
|
+
Elements,
|
|
1142
|
+
SharedComponents,
|
|
1189
1143
|
WeaverseContext,
|
|
1190
1144
|
WeaverseContextConsumer,
|
|
1191
1145
|
WeaverseContextProvider,
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.7.
|
|
2
|
+
"version": "0.7.10",
|
|
3
3
|
"license": "MIT",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"typings": "dist/index.d.ts",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"name": "@weaverse/react",
|
|
32
32
|
"author": "Weaverse Team",
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@weaverse/core": "0.7.
|
|
35
|
-
"nuka-carousel": "^5.
|
|
34
|
+
"@weaverse/core": "0.7.10",
|
|
35
|
+
"nuka-carousel": "^5.3.0"
|
|
36
36
|
}
|
|
37
37
|
}
|