@weaverse/react 0.6.22 → 0.6.26
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 +8 -2
- package/dist/index.js +211 -41
- package/dist/index.mjs +212 -42
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -18,8 +18,9 @@ declare type WeaverseRootPropsType = {
|
|
|
18
18
|
declare type ItemComponentProps = {
|
|
19
19
|
instance: InstanceType<typeof WeaverseItemStore>;
|
|
20
20
|
};
|
|
21
|
-
interface PlaceholderProps
|
|
21
|
+
interface PlaceholderProps {
|
|
22
22
|
element: string;
|
|
23
|
+
children: ReactElement | ReactElement[] | ReactNode | ReactNode[];
|
|
23
24
|
}
|
|
24
25
|
interface ButtonElementProps extends WeaverseElementProps {
|
|
25
26
|
value: string;
|
|
@@ -33,6 +34,11 @@ interface ContainerElementProps extends WeaverseElementProps {
|
|
|
33
34
|
interface ImageElementProps extends WeaverseElementProps {
|
|
34
35
|
src: string;
|
|
35
36
|
alt: string;
|
|
37
|
+
objectFit: 'contain' | 'cover';
|
|
38
|
+
objectPosition: 'left' | 'right' | 'top' | 'bottom' | 'center' | 'center left' | 'center right' | 'top left' | 'top right' | 'bottom left' | 'bottom right';
|
|
39
|
+
onClickAction: 'none' | 'open-lightbox' | 'open-link';
|
|
40
|
+
linkTo?: string;
|
|
41
|
+
openLinkInNewTab?: boolean;
|
|
36
42
|
}
|
|
37
43
|
interface LayoutElementProps extends WeaverseElementProps {
|
|
38
44
|
gridSize: number;
|
|
@@ -87,6 +93,6 @@ declare type InstagramMedia = {
|
|
|
87
93
|
caption: string;
|
|
88
94
|
};
|
|
89
95
|
|
|
90
|
-
declare let WeaverseRoot: ({ context }: WeaverseRootPropsType) => JSX.Element;
|
|
96
|
+
declare let WeaverseRoot: ({ context }: WeaverseRootPropsType) => JSX.Element | null;
|
|
91
97
|
|
|
92
98
|
export { ButtonElementProps, ContainerElementProps, CountdownElementProps, CountdownTimeKey, ImageElementProps, InstagramElementProps, InstagramMedia, ItemComponentProps, LayoutElementProps, MapElementProps, PlaceholderProps, TextElementProps, TimerBlockProps, VideoElementProps, WeaverseContext, WeaverseContextConsumer, WeaverseContextProvider, WeaverseElementProps, WeaverseRoot, WeaverseRootPropsType, createRootContext };
|
package/dist/index.js
CHANGED
|
@@ -62,7 +62,7 @@ module.exports = __toCommonJS(src_exports);
|
|
|
62
62
|
|
|
63
63
|
// src/context.ts
|
|
64
64
|
var import_core = require("@weaverse/core");
|
|
65
|
-
var
|
|
65
|
+
var import_react13 = require("react");
|
|
66
66
|
|
|
67
67
|
// src/elements/button.tsx
|
|
68
68
|
var React = __toESM(require("react"));
|
|
@@ -224,7 +224,7 @@ Countdown.defaultProps = {
|
|
|
224
224
|
width: 48,
|
|
225
225
|
textAlign: "center"
|
|
226
226
|
},
|
|
227
|
-
"
|
|
227
|
+
".wv-countdown-label": {
|
|
228
228
|
fontSize: 10
|
|
229
229
|
},
|
|
230
230
|
"& > span": {
|
|
@@ -241,23 +241,58 @@ var countdown_default = Countdown;
|
|
|
241
241
|
// src/elements/image.tsx
|
|
242
242
|
var import_react4 = __toESM(require("react"));
|
|
243
243
|
var Image = import_react4.default.forwardRef((props, ref) => {
|
|
244
|
-
let
|
|
245
|
-
|
|
244
|
+
let { isDesignMode } = (0, import_react4.useContext)(WeaverseContext);
|
|
245
|
+
let _a = props, {
|
|
246
|
+
src,
|
|
247
|
+
alt,
|
|
248
|
+
objectFit,
|
|
249
|
+
objectPosition,
|
|
250
|
+
onClickAction,
|
|
251
|
+
openLinkInNewTab
|
|
252
|
+
} = _a, rest = __objRest(_a, [
|
|
253
|
+
"src",
|
|
254
|
+
"alt",
|
|
255
|
+
"objectFit",
|
|
256
|
+
"objectPosition",
|
|
257
|
+
"onClickAction",
|
|
258
|
+
"openLinkInNewTab"
|
|
259
|
+
]);
|
|
260
|
+
let style = {
|
|
261
|
+
"--wv-img-object-fit": objectFit,
|
|
262
|
+
"--wv-img-object-position": objectPosition
|
|
263
|
+
};
|
|
264
|
+
let handleClick = () => {
|
|
265
|
+
if (isDesignMode) {
|
|
266
|
+
return console.log("Click action:", onClickAction);
|
|
267
|
+
}
|
|
268
|
+
if (onClickAction) {
|
|
269
|
+
console.log("TODO: click action:", onClickAction);
|
|
270
|
+
}
|
|
271
|
+
};
|
|
272
|
+
return /* @__PURE__ */ import_react4.default.createElement("div", __spreadProps(__spreadValues({
|
|
246
273
|
ref
|
|
247
|
-
}, rest),
|
|
274
|
+
}, rest), {
|
|
275
|
+
style,
|
|
276
|
+
onClick: handleClick
|
|
277
|
+
}), /* @__PURE__ */ import_react4.default.createElement("img", {
|
|
248
278
|
alt,
|
|
249
279
|
src
|
|
250
280
|
}));
|
|
251
281
|
});
|
|
252
282
|
Image.defaultProps = {
|
|
253
283
|
src: "https://ucarecdn.com/1cdc9d39-ca62-492e-8ec7-f1a86b241a90/",
|
|
254
|
-
alt: "
|
|
284
|
+
alt: "Image alt text",
|
|
285
|
+
objectFit: "cover",
|
|
286
|
+
objectPosition: "center",
|
|
287
|
+
onClickAction: "open-lightbox",
|
|
288
|
+
openLinkInNewTab: false,
|
|
255
289
|
css: {
|
|
256
290
|
"@desktop": {
|
|
257
291
|
img: {
|
|
258
292
|
width: "100%",
|
|
259
293
|
height: "100%",
|
|
260
|
-
objectFit: "cover"
|
|
294
|
+
objectFit: "var(--wv-img-object-fit, cover)",
|
|
295
|
+
objectPosition: "var(--wv-img-object-position, center)"
|
|
261
296
|
}
|
|
262
297
|
}
|
|
263
298
|
}
|
|
@@ -411,12 +446,16 @@ var import_react8 = __toESM(require("react"));
|
|
|
411
446
|
var Placeholder = (0, import_react8.forwardRef)((props, ref) => {
|
|
412
447
|
let _a = props, { element, children } = _a, rest = __objRest(_a, ["element", "children"]);
|
|
413
448
|
let style = {
|
|
449
|
+
position: "absolute",
|
|
414
450
|
height: "100%",
|
|
451
|
+
width: "100%",
|
|
415
452
|
display: "flex",
|
|
416
453
|
flexDirection: "column",
|
|
417
454
|
alignItems: "center",
|
|
418
455
|
justifyContent: "center",
|
|
419
|
-
color: "#374151"
|
|
456
|
+
color: "#374151",
|
|
457
|
+
pointerEvents: "none",
|
|
458
|
+
zIndex: 1
|
|
420
459
|
};
|
|
421
460
|
return /* @__PURE__ */ import_react8.default.createElement("div", __spreadValues({
|
|
422
461
|
style,
|
|
@@ -430,10 +469,9 @@ var Placeholder_default = Placeholder;
|
|
|
430
469
|
// src/elements/instagram.tsx
|
|
431
470
|
var INSTAGRAM_API = "https://graph.instagram.com";
|
|
432
471
|
var Instagram = (0, import_react9.forwardRef)((props, ref) => {
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
let { isDesignMode } = (0, import_react9.useContext)(WeaverseContext);
|
|
472
|
+
let _a = props, { token, username, numberOfImages, imagesPerRow, gap } = _a, rest = __objRest(_a, ["token", "username", "numberOfImages", "imagesPerRow", "gap"]);
|
|
473
|
+
let [media, setMedia] = (0, import_react9.useState)([]);
|
|
474
|
+
let [error, setError] = (0, import_react9.useState)(null);
|
|
437
475
|
(0, import_react9.useEffect)(() => {
|
|
438
476
|
if (token) {
|
|
439
477
|
let params = new URLSearchParams({
|
|
@@ -459,7 +497,7 @@ var Instagram = (0, import_react9.forwardRef)((props, ref) => {
|
|
|
459
497
|
}
|
|
460
498
|
let style = {
|
|
461
499
|
"--wv-ig-images-per-row": imagesPerRow,
|
|
462
|
-
"--wv-ig-images-gap": gap
|
|
500
|
+
"--wv-ig-images-gap": gap + "px"
|
|
463
501
|
};
|
|
464
502
|
return /* @__PURE__ */ import_react9.default.createElement("div", __spreadProps(__spreadValues({
|
|
465
503
|
ref
|
|
@@ -468,15 +506,15 @@ var Instagram = (0, import_react9.forwardRef)((props, ref) => {
|
|
|
468
506
|
}), /* @__PURE__ */ import_react9.default.createElement("div", {
|
|
469
507
|
className: "wv-ig-media-container"
|
|
470
508
|
}, media.slice(0, numberOfImages).map((item) => {
|
|
471
|
-
let
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
},
|
|
478
|
-
alt:
|
|
479
|
-
src:
|
|
509
|
+
let { id, permalink, caption, media_url } = item;
|
|
510
|
+
return /* @__PURE__ */ import_react9.default.createElement("a", {
|
|
511
|
+
key: id,
|
|
512
|
+
href: permalink,
|
|
513
|
+
target: "_blank",
|
|
514
|
+
rel: "noreferrer"
|
|
515
|
+
}, /* @__PURE__ */ import_react9.default.createElement("img", {
|
|
516
|
+
alt: caption,
|
|
517
|
+
src: media_url
|
|
480
518
|
}));
|
|
481
519
|
})));
|
|
482
520
|
});
|
|
@@ -507,6 +545,126 @@ Instagram.defaultProps = {
|
|
|
507
545
|
};
|
|
508
546
|
var instagram_default = Instagram;
|
|
509
547
|
|
|
548
|
+
// src/elements/accordion/index.tsx
|
|
549
|
+
var import_react10 = __toESM(require("react"));
|
|
550
|
+
var AccordionContext = (0, import_react10.createContext)({
|
|
551
|
+
active: null,
|
|
552
|
+
setActive: () => {
|
|
553
|
+
}
|
|
554
|
+
});
|
|
555
|
+
var Accordion = (0, import_react10.forwardRef)((props, ref) => {
|
|
556
|
+
const _a = props, { items, children } = _a, rest = __objRest(_a, ["items", "children"]);
|
|
557
|
+
const [active, setActive] = (0, import_react10.useState)(null);
|
|
558
|
+
const setOpenAccordion = (id) => {
|
|
559
|
+
if (id === active) {
|
|
560
|
+
setActive(null);
|
|
561
|
+
} else {
|
|
562
|
+
setActive(id);
|
|
563
|
+
}
|
|
564
|
+
};
|
|
565
|
+
console.info("9779 active", active);
|
|
566
|
+
return /* @__PURE__ */ import_react10.default.createElement("div", __spreadValues({
|
|
567
|
+
ref
|
|
568
|
+
}, rest), /* @__PURE__ */ import_react10.default.createElement(AccordionContext.Provider, {
|
|
569
|
+
value: { active, setActive: setOpenAccordion }
|
|
570
|
+
}, children));
|
|
571
|
+
});
|
|
572
|
+
Accordion.defaultProps = {
|
|
573
|
+
items: [
|
|
574
|
+
{
|
|
575
|
+
id: 1,
|
|
576
|
+
headerText: "Header 1",
|
|
577
|
+
childrenId: true
|
|
578
|
+
},
|
|
579
|
+
{
|
|
580
|
+
id: 2,
|
|
581
|
+
headerText: "Header 2"
|
|
582
|
+
}
|
|
583
|
+
],
|
|
584
|
+
css: {
|
|
585
|
+
"@desktop": {
|
|
586
|
+
display: "flex",
|
|
587
|
+
flexDirection: "column",
|
|
588
|
+
gap: 4,
|
|
589
|
+
".wv-accordion-header": {
|
|
590
|
+
borderRadius: 4,
|
|
591
|
+
padding: 4,
|
|
592
|
+
marginBottom: 4,
|
|
593
|
+
backgroundColor: "#aaa",
|
|
594
|
+
"&.active": {
|
|
595
|
+
color: "blue"
|
|
596
|
+
},
|
|
597
|
+
'&.active + [data-wv-type="accordion.content"]': {
|
|
598
|
+
display: "grid"
|
|
599
|
+
}
|
|
600
|
+
}
|
|
601
|
+
}
|
|
602
|
+
}
|
|
603
|
+
};
|
|
604
|
+
var accordion_default = Accordion;
|
|
605
|
+
|
|
606
|
+
// src/elements/accordion/AccordionWrapper.tsx
|
|
607
|
+
var import_react11 = __toESM(require("react"));
|
|
608
|
+
var AccordionWrapper = (0, import_react11.forwardRef)((props, ref) => {
|
|
609
|
+
const _a = props, { wrapperId, headerText, children } = _a, rest = __objRest(_a, ["wrapperId", "headerText", "children"]);
|
|
610
|
+
const { active, setActive } = (0, import_react11.useContext)(AccordionContext);
|
|
611
|
+
return /* @__PURE__ */ import_react11.default.createElement("div", __spreadValues({
|
|
612
|
+
ref
|
|
613
|
+
}, rest), /* @__PURE__ */ import_react11.default.createElement("div", {
|
|
614
|
+
onClick: () => setActive(wrapperId),
|
|
615
|
+
className: `wv-accordion-header ${active === wrapperId ? "active" : ""}`
|
|
616
|
+
}, headerText, " #", wrapperId), children);
|
|
617
|
+
});
|
|
618
|
+
AccordionWrapper.defaultProps = {
|
|
619
|
+
wrapperId: 1,
|
|
620
|
+
headerText: "Header 1",
|
|
621
|
+
css: {
|
|
622
|
+
"@desktop": {
|
|
623
|
+
maxHeight: "100%"
|
|
624
|
+
}
|
|
625
|
+
}
|
|
626
|
+
};
|
|
627
|
+
var AccordionWrapper_default = AccordionWrapper;
|
|
628
|
+
|
|
629
|
+
// src/elements/accordion/AccordionContent.tsx
|
|
630
|
+
var import_react12 = __toESM(require("react"));
|
|
631
|
+
var AccordionContent = (0, import_react12.forwardRef)((props, ref) => {
|
|
632
|
+
const _a = props, { rows, columns, gap, rowSize, children } = _a, rest = __objRest(_a, ["rows", "columns", "gap", "rowSize", "children"]);
|
|
633
|
+
let style = {
|
|
634
|
+
"--rows": rows,
|
|
635
|
+
"--columns": columns,
|
|
636
|
+
"--gap": gap + "px",
|
|
637
|
+
"--row-size": rowSize + "px",
|
|
638
|
+
"--col-size": "calc((var(--grid-size) - calc(var(--columns) - 1) * var(--gap)) / var(--columns))"
|
|
639
|
+
};
|
|
640
|
+
return /* @__PURE__ */ import_react12.default.createElement("div", __spreadProps(__spreadValues({
|
|
641
|
+
ref
|
|
642
|
+
}, rest), {
|
|
643
|
+
style
|
|
644
|
+
}), import_react12.default.Children.count(children) > 0 ? children : /* @__PURE__ */ import_react12.default.createElement(Placeholder_default, {
|
|
645
|
+
element: "Accordion"
|
|
646
|
+
}, "Item Content"));
|
|
647
|
+
});
|
|
648
|
+
AccordionContent.defaultProps = {
|
|
649
|
+
rows: 2,
|
|
650
|
+
columns: 12,
|
|
651
|
+
gap: 4,
|
|
652
|
+
rowSize: 48,
|
|
653
|
+
css: {
|
|
654
|
+
"@desktop": {
|
|
655
|
+
width: "100%",
|
|
656
|
+
maxWidth: "var(--grid-size)",
|
|
657
|
+
backgroundColor: "#DDD",
|
|
658
|
+
display: "none",
|
|
659
|
+
gridTemplateRows: "repeat(var(--rows), var(--row-size))",
|
|
660
|
+
gridTemplateColumns: "repeat(var(--columns), minmax(0, var(--col-size)))",
|
|
661
|
+
gap: "var(--gap)",
|
|
662
|
+
borderRadius: 4
|
|
663
|
+
}
|
|
664
|
+
}
|
|
665
|
+
};
|
|
666
|
+
var AccordionContent_default = AccordionContent;
|
|
667
|
+
|
|
510
668
|
// src/elements/index.ts
|
|
511
669
|
var elements = {
|
|
512
670
|
Countdown: {
|
|
@@ -544,6 +702,18 @@ var elements = {
|
|
|
544
702
|
Video: {
|
|
545
703
|
Component: video_default,
|
|
546
704
|
type: "video"
|
|
705
|
+
},
|
|
706
|
+
Accordion: {
|
|
707
|
+
Component: accordion_default,
|
|
708
|
+
type: "accordion"
|
|
709
|
+
},
|
|
710
|
+
AccordionWrapper: {
|
|
711
|
+
Component: AccordionWrapper_default,
|
|
712
|
+
type: "accordion.wrapper"
|
|
713
|
+
},
|
|
714
|
+
AccordionContent: {
|
|
715
|
+
Component: AccordionContent_default,
|
|
716
|
+
type: "accordion.content"
|
|
547
717
|
}
|
|
548
718
|
};
|
|
549
719
|
var elements_default = elements;
|
|
@@ -556,13 +726,13 @@ var createRootContext = (configs) => {
|
|
|
556
726
|
});
|
|
557
727
|
return rootContext;
|
|
558
728
|
};
|
|
559
|
-
var WeaverseContext = (0,
|
|
729
|
+
var WeaverseContext = (0, import_react13.createContext)({});
|
|
560
730
|
var WeaverseContextProvider = WeaverseContext.Provider;
|
|
561
731
|
var WeaverseContextConsumer = WeaverseContext.Consumer;
|
|
562
732
|
|
|
563
733
|
// src/renderer.tsx
|
|
564
734
|
var import_core2 = require("@weaverse/core");
|
|
565
|
-
var
|
|
735
|
+
var import_react14 = __toESM(require("react"));
|
|
566
736
|
|
|
567
737
|
// src/utils/index.ts
|
|
568
738
|
var shortCssObject = (css) => {
|
|
@@ -589,10 +759,10 @@ function generateItemClass(instance, stitchesInstance) {
|
|
|
589
759
|
|
|
590
760
|
// src/renderer.tsx
|
|
591
761
|
var WeaverseRoot = ({ context }) => {
|
|
592
|
-
var _a;
|
|
593
|
-
let [, setData] = (0,
|
|
594
|
-
let rootRef = (0,
|
|
595
|
-
(0,
|
|
762
|
+
var _a, _b;
|
|
763
|
+
let [, setData] = (0, import_react14.useState)(context.projectData);
|
|
764
|
+
let rootRef = (0, import_react14.useRef)();
|
|
765
|
+
(0, import_react14.useEffect)(() => {
|
|
596
766
|
let update = () => setData({});
|
|
597
767
|
context.subscribe(update);
|
|
598
768
|
if (context.projectData) {
|
|
@@ -605,21 +775,21 @@ var WeaverseRoot = ({ context }) => {
|
|
|
605
775
|
}, []);
|
|
606
776
|
let eventHandlers = ((_a = context == null ? void 0 : context.studioBridge) == null ? void 0 : _a.eventHandlers) || {};
|
|
607
777
|
let themeClass = context.stitchesInstance.theme.className;
|
|
608
|
-
return /* @__PURE__ */
|
|
778
|
+
return ((_b = context.projectData) == null ? void 0 : _b.rootId) ? /* @__PURE__ */ import_react14.default.createElement("div", __spreadProps(__spreadValues({
|
|
609
779
|
className: `weaverse-content-root ${themeClass}`
|
|
610
780
|
}, eventHandlers), {
|
|
611
781
|
ref: rootRef
|
|
612
|
-
}), /* @__PURE__ */
|
|
782
|
+
}), /* @__PURE__ */ import_react14.default.createElement(WeaverseContextProvider, {
|
|
613
783
|
value: context
|
|
614
|
-
}, /* @__PURE__ */
|
|
615
|
-
id: context.projectData.rootId
|
|
616
|
-
})));
|
|
784
|
+
}, /* @__PURE__ */ import_react14.default.createElement(ItemInstance, {
|
|
785
|
+
id: context.projectData.rootId
|
|
786
|
+
}))) : null;
|
|
617
787
|
};
|
|
618
788
|
var ItemComponent = ({ instance }) => {
|
|
619
|
-
let { stitchesInstance, elementInstances } = (0,
|
|
620
|
-
let [data, setData] = (0,
|
|
789
|
+
let { stitchesInstance, elementInstances } = (0, import_react14.useContext)(WeaverseContext);
|
|
790
|
+
let [data, setData] = (0, import_react14.useState)(instance.data);
|
|
621
791
|
let _a = data, { id, type, childIds = [], css, className } = _a, rest = __objRest(_a, ["id", "type", "childIds", "css", "className"]);
|
|
622
|
-
(0,
|
|
792
|
+
(0, import_react14.useEffect)(() => {
|
|
623
793
|
var _a2;
|
|
624
794
|
let update = (data2) => setData(__spreadValues({}, data2));
|
|
625
795
|
instance.subscribe(update);
|
|
@@ -639,12 +809,12 @@ var ItemComponent = ({ instance }) => {
|
|
|
639
809
|
if (Component.$$typeof === Symbol.for("react.forward_ref")) {
|
|
640
810
|
rest.ref = instance.ref;
|
|
641
811
|
}
|
|
642
|
-
return /* @__PURE__ */
|
|
812
|
+
return /* @__PURE__ */ import_react14.default.createElement(Component, __spreadValues({
|
|
643
813
|
key: id,
|
|
644
814
|
"data-wv-type": type,
|
|
645
815
|
"data-wv-id": id,
|
|
646
816
|
className: generateItemClass(instance, stitchesInstance)
|
|
647
|
-
}, rest), childIds.map((id2) => /* @__PURE__ */
|
|
817
|
+
}, rest), childIds.map((id2) => /* @__PURE__ */ import_react14.default.createElement(ItemInstance, {
|
|
648
818
|
key: id2,
|
|
649
819
|
id: id2
|
|
650
820
|
})));
|
|
@@ -652,15 +822,15 @@ var ItemComponent = ({ instance }) => {
|
|
|
652
822
|
return null;
|
|
653
823
|
};
|
|
654
824
|
var ItemInstance = ({ id }) => {
|
|
655
|
-
let context = (0,
|
|
825
|
+
let context = (0, import_react14.useContext)(WeaverseContext);
|
|
656
826
|
let { itemInstances } = context;
|
|
657
827
|
let instance = itemInstances.get(id);
|
|
658
828
|
if (!instance) {
|
|
659
|
-
return /* @__PURE__ */
|
|
829
|
+
return /* @__PURE__ */ import_react14.default.createElement("div", {
|
|
660
830
|
style: { display: "none" }
|
|
661
831
|
}, "Item instance ", id, " not found");
|
|
662
832
|
}
|
|
663
|
-
return /* @__PURE__ */
|
|
833
|
+
return /* @__PURE__ */ import_react14.default.createElement(ItemComponent, {
|
|
664
834
|
instance
|
|
665
835
|
});
|
|
666
836
|
};
|
package/dist/index.mjs
CHANGED
|
@@ -32,7 +32,7 @@ var __objRest = (source, exclude) => {
|
|
|
32
32
|
|
|
33
33
|
// src/context.ts
|
|
34
34
|
import { Weaverse } from "@weaverse/core";
|
|
35
|
-
import { createContext } from "react";
|
|
35
|
+
import { createContext as createContext2 } from "react";
|
|
36
36
|
|
|
37
37
|
// src/elements/button.tsx
|
|
38
38
|
import * as React from "react";
|
|
@@ -194,7 +194,7 @@ Countdown.defaultProps = {
|
|
|
194
194
|
width: 48,
|
|
195
195
|
textAlign: "center"
|
|
196
196
|
},
|
|
197
|
-
"
|
|
197
|
+
".wv-countdown-label": {
|
|
198
198
|
fontSize: 10
|
|
199
199
|
},
|
|
200
200
|
"& > span": {
|
|
@@ -209,25 +209,60 @@ Countdown.defaultProps = {
|
|
|
209
209
|
var countdown_default = Countdown;
|
|
210
210
|
|
|
211
211
|
// src/elements/image.tsx
|
|
212
|
-
import React5 from "react";
|
|
212
|
+
import React5, { useContext as useContext2 } from "react";
|
|
213
213
|
var Image = React5.forwardRef((props, ref) => {
|
|
214
|
-
let
|
|
215
|
-
|
|
214
|
+
let { isDesignMode } = useContext2(WeaverseContext);
|
|
215
|
+
let _a = props, {
|
|
216
|
+
src,
|
|
217
|
+
alt,
|
|
218
|
+
objectFit,
|
|
219
|
+
objectPosition,
|
|
220
|
+
onClickAction,
|
|
221
|
+
openLinkInNewTab
|
|
222
|
+
} = _a, rest = __objRest(_a, [
|
|
223
|
+
"src",
|
|
224
|
+
"alt",
|
|
225
|
+
"objectFit",
|
|
226
|
+
"objectPosition",
|
|
227
|
+
"onClickAction",
|
|
228
|
+
"openLinkInNewTab"
|
|
229
|
+
]);
|
|
230
|
+
let style = {
|
|
231
|
+
"--wv-img-object-fit": objectFit,
|
|
232
|
+
"--wv-img-object-position": objectPosition
|
|
233
|
+
};
|
|
234
|
+
let handleClick = () => {
|
|
235
|
+
if (isDesignMode) {
|
|
236
|
+
return console.log("Click action:", onClickAction);
|
|
237
|
+
}
|
|
238
|
+
if (onClickAction) {
|
|
239
|
+
console.log("TODO: click action:", onClickAction);
|
|
240
|
+
}
|
|
241
|
+
};
|
|
242
|
+
return /* @__PURE__ */ React5.createElement("div", __spreadProps(__spreadValues({
|
|
216
243
|
ref
|
|
217
|
-
}, rest),
|
|
244
|
+
}, rest), {
|
|
245
|
+
style,
|
|
246
|
+
onClick: handleClick
|
|
247
|
+
}), /* @__PURE__ */ React5.createElement("img", {
|
|
218
248
|
alt,
|
|
219
249
|
src
|
|
220
250
|
}));
|
|
221
251
|
});
|
|
222
252
|
Image.defaultProps = {
|
|
223
253
|
src: "https://ucarecdn.com/1cdc9d39-ca62-492e-8ec7-f1a86b241a90/",
|
|
224
|
-
alt: "
|
|
254
|
+
alt: "Image alt text",
|
|
255
|
+
objectFit: "cover",
|
|
256
|
+
objectPosition: "center",
|
|
257
|
+
onClickAction: "open-lightbox",
|
|
258
|
+
openLinkInNewTab: false,
|
|
225
259
|
css: {
|
|
226
260
|
"@desktop": {
|
|
227
261
|
img: {
|
|
228
262
|
width: "100%",
|
|
229
263
|
height: "100%",
|
|
230
|
-
objectFit: "cover"
|
|
264
|
+
objectFit: "var(--wv-img-object-fit, cover)",
|
|
265
|
+
objectPosition: "var(--wv-img-object-position, center)"
|
|
231
266
|
}
|
|
232
267
|
}
|
|
233
268
|
}
|
|
@@ -335,9 +370,9 @@ Text.defaultProps = {
|
|
|
335
370
|
var text_default = Text;
|
|
336
371
|
|
|
337
372
|
// src/elements/video.tsx
|
|
338
|
-
import React9, { forwardRef as forwardRef7, useContext as
|
|
373
|
+
import React9, { forwardRef as forwardRef7, useContext as useContext3 } from "react";
|
|
339
374
|
var Video = forwardRef7((props, ref) => {
|
|
340
|
-
let { isDesignMode } =
|
|
375
|
+
let { isDesignMode } = useContext3(WeaverseContext);
|
|
341
376
|
let _a = props, { src, type, controls, poster, autoPlay, loop, muted } = _a, rest = __objRest(_a, ["src", "type", "controls", "poster", "autoPlay", "loop", "muted"]);
|
|
342
377
|
return /* @__PURE__ */ React9.createElement("div", __spreadValues({
|
|
343
378
|
ref
|
|
@@ -374,19 +409,23 @@ Video.defaultProps = {
|
|
|
374
409
|
var video_default = Video;
|
|
375
410
|
|
|
376
411
|
// src/elements/instagram.tsx
|
|
377
|
-
import React11, { forwardRef as forwardRef9,
|
|
412
|
+
import React11, { forwardRef as forwardRef9, useEffect as useEffect2, useState } from "react";
|
|
378
413
|
|
|
379
414
|
// src/elements/shared/Placeholder.tsx
|
|
380
415
|
import React10, { forwardRef as forwardRef8 } from "react";
|
|
381
416
|
var Placeholder = forwardRef8((props, ref) => {
|
|
382
417
|
let _a = props, { element, children } = _a, rest = __objRest(_a, ["element", "children"]);
|
|
383
418
|
let style = {
|
|
419
|
+
position: "absolute",
|
|
384
420
|
height: "100%",
|
|
421
|
+
width: "100%",
|
|
385
422
|
display: "flex",
|
|
386
423
|
flexDirection: "column",
|
|
387
424
|
alignItems: "center",
|
|
388
425
|
justifyContent: "center",
|
|
389
|
-
color: "#374151"
|
|
426
|
+
color: "#374151",
|
|
427
|
+
pointerEvents: "none",
|
|
428
|
+
zIndex: 1
|
|
390
429
|
};
|
|
391
430
|
return /* @__PURE__ */ React10.createElement("div", __spreadValues({
|
|
392
431
|
style,
|
|
@@ -400,10 +439,9 @@ var Placeholder_default = Placeholder;
|
|
|
400
439
|
// src/elements/instagram.tsx
|
|
401
440
|
var INSTAGRAM_API = "https://graph.instagram.com";
|
|
402
441
|
var Instagram = forwardRef9((props, ref) => {
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
let { isDesignMode } = useContext3(WeaverseContext);
|
|
442
|
+
let _a = props, { token, username, numberOfImages, imagesPerRow, gap } = _a, rest = __objRest(_a, ["token", "username", "numberOfImages", "imagesPerRow", "gap"]);
|
|
443
|
+
let [media, setMedia] = useState([]);
|
|
444
|
+
let [error, setError] = useState(null);
|
|
407
445
|
useEffect2(() => {
|
|
408
446
|
if (token) {
|
|
409
447
|
let params = new URLSearchParams({
|
|
@@ -429,7 +467,7 @@ var Instagram = forwardRef9((props, ref) => {
|
|
|
429
467
|
}
|
|
430
468
|
let style = {
|
|
431
469
|
"--wv-ig-images-per-row": imagesPerRow,
|
|
432
|
-
"--wv-ig-images-gap": gap
|
|
470
|
+
"--wv-ig-images-gap": gap + "px"
|
|
433
471
|
};
|
|
434
472
|
return /* @__PURE__ */ React11.createElement("div", __spreadProps(__spreadValues({
|
|
435
473
|
ref
|
|
@@ -438,15 +476,15 @@ var Instagram = forwardRef9((props, ref) => {
|
|
|
438
476
|
}), /* @__PURE__ */ React11.createElement("div", {
|
|
439
477
|
className: "wv-ig-media-container"
|
|
440
478
|
}, media.slice(0, numberOfImages).map((item) => {
|
|
441
|
-
let
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
},
|
|
448
|
-
alt:
|
|
449
|
-
src:
|
|
479
|
+
let { id, permalink, caption, media_url } = item;
|
|
480
|
+
return /* @__PURE__ */ React11.createElement("a", {
|
|
481
|
+
key: id,
|
|
482
|
+
href: permalink,
|
|
483
|
+
target: "_blank",
|
|
484
|
+
rel: "noreferrer"
|
|
485
|
+
}, /* @__PURE__ */ React11.createElement("img", {
|
|
486
|
+
alt: caption,
|
|
487
|
+
src: media_url
|
|
450
488
|
}));
|
|
451
489
|
})));
|
|
452
490
|
});
|
|
@@ -477,6 +515,126 @@ Instagram.defaultProps = {
|
|
|
477
515
|
};
|
|
478
516
|
var instagram_default = Instagram;
|
|
479
517
|
|
|
518
|
+
// src/elements/accordion/index.tsx
|
|
519
|
+
import React12, { createContext, forwardRef as forwardRef10, useState as useState2 } from "react";
|
|
520
|
+
var AccordionContext = createContext({
|
|
521
|
+
active: null,
|
|
522
|
+
setActive: () => {
|
|
523
|
+
}
|
|
524
|
+
});
|
|
525
|
+
var Accordion = forwardRef10((props, ref) => {
|
|
526
|
+
const _a = props, { items, children } = _a, rest = __objRest(_a, ["items", "children"]);
|
|
527
|
+
const [active, setActive] = useState2(null);
|
|
528
|
+
const setOpenAccordion = (id) => {
|
|
529
|
+
if (id === active) {
|
|
530
|
+
setActive(null);
|
|
531
|
+
} else {
|
|
532
|
+
setActive(id);
|
|
533
|
+
}
|
|
534
|
+
};
|
|
535
|
+
console.info("9779 active", active);
|
|
536
|
+
return /* @__PURE__ */ React12.createElement("div", __spreadValues({
|
|
537
|
+
ref
|
|
538
|
+
}, rest), /* @__PURE__ */ React12.createElement(AccordionContext.Provider, {
|
|
539
|
+
value: { active, setActive: setOpenAccordion }
|
|
540
|
+
}, children));
|
|
541
|
+
});
|
|
542
|
+
Accordion.defaultProps = {
|
|
543
|
+
items: [
|
|
544
|
+
{
|
|
545
|
+
id: 1,
|
|
546
|
+
headerText: "Header 1",
|
|
547
|
+
childrenId: true
|
|
548
|
+
},
|
|
549
|
+
{
|
|
550
|
+
id: 2,
|
|
551
|
+
headerText: "Header 2"
|
|
552
|
+
}
|
|
553
|
+
],
|
|
554
|
+
css: {
|
|
555
|
+
"@desktop": {
|
|
556
|
+
display: "flex",
|
|
557
|
+
flexDirection: "column",
|
|
558
|
+
gap: 4,
|
|
559
|
+
".wv-accordion-header": {
|
|
560
|
+
borderRadius: 4,
|
|
561
|
+
padding: 4,
|
|
562
|
+
marginBottom: 4,
|
|
563
|
+
backgroundColor: "#aaa",
|
|
564
|
+
"&.active": {
|
|
565
|
+
color: "blue"
|
|
566
|
+
},
|
|
567
|
+
'&.active + [data-wv-type="accordion.content"]': {
|
|
568
|
+
display: "grid"
|
|
569
|
+
}
|
|
570
|
+
}
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
};
|
|
574
|
+
var accordion_default = Accordion;
|
|
575
|
+
|
|
576
|
+
// src/elements/accordion/AccordionWrapper.tsx
|
|
577
|
+
import React13, { forwardRef as forwardRef11, useContext as useContext4 } from "react";
|
|
578
|
+
var AccordionWrapper = forwardRef11((props, ref) => {
|
|
579
|
+
const _a = props, { wrapperId, headerText, children } = _a, rest = __objRest(_a, ["wrapperId", "headerText", "children"]);
|
|
580
|
+
const { active, setActive } = useContext4(AccordionContext);
|
|
581
|
+
return /* @__PURE__ */ React13.createElement("div", __spreadValues({
|
|
582
|
+
ref
|
|
583
|
+
}, rest), /* @__PURE__ */ React13.createElement("div", {
|
|
584
|
+
onClick: () => setActive(wrapperId),
|
|
585
|
+
className: `wv-accordion-header ${active === wrapperId ? "active" : ""}`
|
|
586
|
+
}, headerText, " #", wrapperId), children);
|
|
587
|
+
});
|
|
588
|
+
AccordionWrapper.defaultProps = {
|
|
589
|
+
wrapperId: 1,
|
|
590
|
+
headerText: "Header 1",
|
|
591
|
+
css: {
|
|
592
|
+
"@desktop": {
|
|
593
|
+
maxHeight: "100%"
|
|
594
|
+
}
|
|
595
|
+
}
|
|
596
|
+
};
|
|
597
|
+
var AccordionWrapper_default = AccordionWrapper;
|
|
598
|
+
|
|
599
|
+
// src/elements/accordion/AccordionContent.tsx
|
|
600
|
+
import React14, { forwardRef as forwardRef12 } from "react";
|
|
601
|
+
var AccordionContent = forwardRef12((props, ref) => {
|
|
602
|
+
const _a = props, { rows, columns, gap, rowSize, children } = _a, rest = __objRest(_a, ["rows", "columns", "gap", "rowSize", "children"]);
|
|
603
|
+
let style = {
|
|
604
|
+
"--rows": rows,
|
|
605
|
+
"--columns": columns,
|
|
606
|
+
"--gap": gap + "px",
|
|
607
|
+
"--row-size": rowSize + "px",
|
|
608
|
+
"--col-size": "calc((var(--grid-size) - calc(var(--columns) - 1) * var(--gap)) / var(--columns))"
|
|
609
|
+
};
|
|
610
|
+
return /* @__PURE__ */ React14.createElement("div", __spreadProps(__spreadValues({
|
|
611
|
+
ref
|
|
612
|
+
}, rest), {
|
|
613
|
+
style
|
|
614
|
+
}), React14.Children.count(children) > 0 ? children : /* @__PURE__ */ React14.createElement(Placeholder_default, {
|
|
615
|
+
element: "Accordion"
|
|
616
|
+
}, "Item Content"));
|
|
617
|
+
});
|
|
618
|
+
AccordionContent.defaultProps = {
|
|
619
|
+
rows: 2,
|
|
620
|
+
columns: 12,
|
|
621
|
+
gap: 4,
|
|
622
|
+
rowSize: 48,
|
|
623
|
+
css: {
|
|
624
|
+
"@desktop": {
|
|
625
|
+
width: "100%",
|
|
626
|
+
maxWidth: "var(--grid-size)",
|
|
627
|
+
backgroundColor: "#DDD",
|
|
628
|
+
display: "none",
|
|
629
|
+
gridTemplateRows: "repeat(var(--rows), var(--row-size))",
|
|
630
|
+
gridTemplateColumns: "repeat(var(--columns), minmax(0, var(--col-size)))",
|
|
631
|
+
gap: "var(--gap)",
|
|
632
|
+
borderRadius: 4
|
|
633
|
+
}
|
|
634
|
+
}
|
|
635
|
+
};
|
|
636
|
+
var AccordionContent_default = AccordionContent;
|
|
637
|
+
|
|
480
638
|
// src/elements/index.ts
|
|
481
639
|
var elements = {
|
|
482
640
|
Countdown: {
|
|
@@ -514,6 +672,18 @@ var elements = {
|
|
|
514
672
|
Video: {
|
|
515
673
|
Component: video_default,
|
|
516
674
|
type: "video"
|
|
675
|
+
},
|
|
676
|
+
Accordion: {
|
|
677
|
+
Component: accordion_default,
|
|
678
|
+
type: "accordion"
|
|
679
|
+
},
|
|
680
|
+
AccordionWrapper: {
|
|
681
|
+
Component: AccordionWrapper_default,
|
|
682
|
+
type: "accordion.wrapper"
|
|
683
|
+
},
|
|
684
|
+
AccordionContent: {
|
|
685
|
+
Component: AccordionContent_default,
|
|
686
|
+
type: "accordion.content"
|
|
517
687
|
}
|
|
518
688
|
};
|
|
519
689
|
var elements_default = elements;
|
|
@@ -526,13 +696,13 @@ var createRootContext = (configs) => {
|
|
|
526
696
|
});
|
|
527
697
|
return rootContext;
|
|
528
698
|
};
|
|
529
|
-
var WeaverseContext =
|
|
699
|
+
var WeaverseContext = createContext2({});
|
|
530
700
|
var WeaverseContextProvider = WeaverseContext.Provider;
|
|
531
701
|
var WeaverseContextConsumer = WeaverseContext.Consumer;
|
|
532
702
|
|
|
533
703
|
// src/renderer.tsx
|
|
534
704
|
import { isBrowser } from "@weaverse/core";
|
|
535
|
-
import
|
|
705
|
+
import React15, { useContext as useContext5, useEffect as useEffect3, useRef, useState as useState3 } from "react";
|
|
536
706
|
|
|
537
707
|
// src/utils/index.ts
|
|
538
708
|
var shortCssObject = (css) => {
|
|
@@ -559,8 +729,8 @@ function generateItemClass(instance, stitchesInstance) {
|
|
|
559
729
|
|
|
560
730
|
// src/renderer.tsx
|
|
561
731
|
var WeaverseRoot = ({ context }) => {
|
|
562
|
-
var _a;
|
|
563
|
-
let [, setData] =
|
|
732
|
+
var _a, _b;
|
|
733
|
+
let [, setData] = useState3(context.projectData);
|
|
564
734
|
let rootRef = useRef();
|
|
565
735
|
useEffect3(() => {
|
|
566
736
|
let update = () => setData({});
|
|
@@ -575,19 +745,19 @@ var WeaverseRoot = ({ context }) => {
|
|
|
575
745
|
}, []);
|
|
576
746
|
let eventHandlers = ((_a = context == null ? void 0 : context.studioBridge) == null ? void 0 : _a.eventHandlers) || {};
|
|
577
747
|
let themeClass = context.stitchesInstance.theme.className;
|
|
578
|
-
return /* @__PURE__ */
|
|
748
|
+
return ((_b = context.projectData) == null ? void 0 : _b.rootId) ? /* @__PURE__ */ React15.createElement("div", __spreadProps(__spreadValues({
|
|
579
749
|
className: `weaverse-content-root ${themeClass}`
|
|
580
750
|
}, eventHandlers), {
|
|
581
751
|
ref: rootRef
|
|
582
|
-
}), /* @__PURE__ */
|
|
752
|
+
}), /* @__PURE__ */ React15.createElement(WeaverseContextProvider, {
|
|
583
753
|
value: context
|
|
584
|
-
}, /* @__PURE__ */
|
|
585
|
-
id: context.projectData.rootId
|
|
586
|
-
})));
|
|
754
|
+
}, /* @__PURE__ */ React15.createElement(ItemInstance, {
|
|
755
|
+
id: context.projectData.rootId
|
|
756
|
+
}))) : null;
|
|
587
757
|
};
|
|
588
758
|
var ItemComponent = ({ instance }) => {
|
|
589
|
-
let { stitchesInstance, elementInstances } =
|
|
590
|
-
let [data, setData] =
|
|
759
|
+
let { stitchesInstance, elementInstances } = useContext5(WeaverseContext);
|
|
760
|
+
let [data, setData] = useState3(instance.data);
|
|
591
761
|
let _a = data, { id, type, childIds = [], css, className } = _a, rest = __objRest(_a, ["id", "type", "childIds", "css", "className"]);
|
|
592
762
|
useEffect3(() => {
|
|
593
763
|
var _a2;
|
|
@@ -609,12 +779,12 @@ var ItemComponent = ({ instance }) => {
|
|
|
609
779
|
if (Component.$$typeof === Symbol.for("react.forward_ref")) {
|
|
610
780
|
rest.ref = instance.ref;
|
|
611
781
|
}
|
|
612
|
-
return /* @__PURE__ */
|
|
782
|
+
return /* @__PURE__ */ React15.createElement(Component, __spreadValues({
|
|
613
783
|
key: id,
|
|
614
784
|
"data-wv-type": type,
|
|
615
785
|
"data-wv-id": id,
|
|
616
786
|
className: generateItemClass(instance, stitchesInstance)
|
|
617
|
-
}, rest), childIds.map((id2) => /* @__PURE__ */
|
|
787
|
+
}, rest), childIds.map((id2) => /* @__PURE__ */ React15.createElement(ItemInstance, {
|
|
618
788
|
key: id2,
|
|
619
789
|
id: id2
|
|
620
790
|
})));
|
|
@@ -622,15 +792,15 @@ var ItemComponent = ({ instance }) => {
|
|
|
622
792
|
return null;
|
|
623
793
|
};
|
|
624
794
|
var ItemInstance = ({ id }) => {
|
|
625
|
-
let context =
|
|
795
|
+
let context = useContext5(WeaverseContext);
|
|
626
796
|
let { itemInstances } = context;
|
|
627
797
|
let instance = itemInstances.get(id);
|
|
628
798
|
if (!instance) {
|
|
629
|
-
return /* @__PURE__ */
|
|
799
|
+
return /* @__PURE__ */ React15.createElement("div", {
|
|
630
800
|
style: { display: "none" }
|
|
631
801
|
}, "Item instance ", id, " not found");
|
|
632
802
|
}
|
|
633
|
-
return /* @__PURE__ */
|
|
803
|
+
return /* @__PURE__ */ React15.createElement(ItemComponent, {
|
|
634
804
|
instance
|
|
635
805
|
});
|
|
636
806
|
};
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.6.
|
|
2
|
+
"version": "0.6.26",
|
|
3
3
|
"license": "MIT",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"typings": "dist/index.d.ts",
|
|
@@ -31,6 +31,6 @@
|
|
|
31
31
|
"name": "@weaverse/react",
|
|
32
32
|
"author": "Weaverse Team",
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@weaverse/core": "0.6.
|
|
34
|
+
"@weaverse/core": "0.6.26"
|
|
35
35
|
}
|
|
36
36
|
}
|