@weaverse/react 0.7.9 → 0.7.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1,7 +1,3 @@
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) => {
@@ -50,27 +46,40 @@ var Container = forwardRef2(
50
46
  }, children);
51
47
  }
52
48
  );
53
- Container.defaultProps = {
54
- css: {
55
- "@desktop": {
56
- alignItems: "flex-start",
57
- backgroundColor: "rgba(248,203,203,0.38)",
58
- display: "flex",
59
- flexDirection: "column",
60
- gridArea: "1 / 1 / 3 / 6",
61
- height: "fit-content",
62
- justifyContent: "flex-start",
63
- overflow: "hidden",
64
- textAlign: "left",
65
- width: "100%"
66
- }
49
+ var css = {
50
+ "@desktop": {
51
+ alignItems: "flex-start",
52
+ backgroundColor: "rgba(248,203,203,0.38)",
53
+ display: "flex",
54
+ flexDirection: "column",
55
+ gridArea: "1 / 1 / 3 / 6",
56
+ height: "fit-content",
57
+ justifyContent: "flex-start",
58
+ overflow: "hidden",
59
+ textAlign: "left",
60
+ width: "100%"
67
61
  }
68
62
  };
63
+ Container.defaultProps = {};
69
64
  var container_default = Container;
70
65
 
71
66
  // src/elements/countdown/index.tsx
72
67
  import React4, { forwardRef as forwardRef3, useContext, useEffect } from "react";
73
68
 
69
+ // src/context.ts
70
+ import { Weaverse } from "@weaverse/core";
71
+ import { createContext } from "react";
72
+ var createRootContext = (configs) => {
73
+ let rootContext = new Weaverse(configs);
74
+ Object.keys(Elements).forEach((key) => {
75
+ rootContext.registerElement(Elements[key]);
76
+ });
77
+ return rootContext;
78
+ };
79
+ var WeaverseContext = createContext({});
80
+ var WeaverseContextProvider = WeaverseContext.Provider;
81
+ var WeaverseContextConsumer = WeaverseContext.Consumer;
82
+
74
83
  // src/elements/countdown/timer-block.tsx
75
84
  import React3 from "react";
76
85
  function TimerBlock({ value, label }) {
@@ -148,6 +157,29 @@ var Countdown = forwardRef3(
148
157
  }));
149
158
  }
150
159
  );
160
+ var css2 = {
161
+ "@desktop": {
162
+ fontFamily: "Inter",
163
+ fontSize: 36,
164
+ fontWeight: 500,
165
+ display: "grid",
166
+ gridAutoFlow: "column",
167
+ gap: 10,
168
+ "& > div": {
169
+ width: 48,
170
+ textAlign: "center"
171
+ },
172
+ ".wv-countdown-label": {
173
+ fontSize: 10
174
+ },
175
+ "& > span": {
176
+ lineHeight: "100%"
177
+ },
178
+ "& .hidden": {
179
+ visibility: "hidden"
180
+ }
181
+ }
182
+ };
151
183
  Countdown.defaultProps = {
152
184
  timerType: "fixed-time",
153
185
  startTime: Date.now(),
@@ -156,30 +188,7 @@ Countdown.defaultProps = {
156
188
  redirectUrl: "https://myshop.com",
157
189
  openInNewTab: false,
158
190
  showLabel: true,
159
- showColon: true,
160
- css: {
161
- "@desktop": {
162
- fontFamily: "Inter",
163
- fontSize: 36,
164
- fontWeight: 500,
165
- display: "grid",
166
- gridAutoFlow: "column",
167
- gap: 10,
168
- "& > div": {
169
- width: 48,
170
- textAlign: "center"
171
- },
172
- ".wv-countdown-label": {
173
- fontSize: 10
174
- },
175
- "& > span": {
176
- lineHeight: "100%"
177
- },
178
- "& .hidden": {
179
- visibility: "hidden"
180
- }
181
- }
182
- }
191
+ showColon: true
183
192
  };
184
193
  var countdown_default = Countdown;
185
194
 
@@ -220,23 +229,23 @@ var Image = React5.forwardRef(
220
229
  }));
221
230
  }
222
231
  );
232
+ var css3 = {
233
+ "@desktop": {
234
+ img: {
235
+ width: "100%",
236
+ height: "100%",
237
+ objectFit: "var(--wv-img-object-fit, cover)",
238
+ objectPosition: "var(--wv-img-object-position, center)"
239
+ }
240
+ }
241
+ };
223
242
  Image.defaultProps = {
224
243
  src: "https://ucarecdn.com/c413b8fe-ceec-4948-9c42-a0434c4ca920/",
225
244
  alt: "Image alt text",
226
245
  objectFit: "cover",
227
246
  objectPosition: "center",
228
247
  onClickAction: "open-lightbox",
229
- openLinkInNewTab: false,
230
- css: {
231
- "@desktop": {
232
- img: {
233
- width: "100%",
234
- height: "100%",
235
- objectFit: "var(--wv-img-object-fit, cover)",
236
- objectPosition: "var(--wv-img-object-position, center)"
237
- }
238
- }
239
- }
248
+ openLinkInNewTab: false
240
249
  };
241
250
  var image_default = Image;
242
251
 
@@ -260,35 +269,35 @@ var Layout = forwardRef4((props, ref) => {
260
269
  "data-layout-content": true
261
270
  }, children));
262
271
  });
272
+ var css4 = {
273
+ "@desktop": {
274
+ paddingTop: "16px",
275
+ paddingBottom: "16px",
276
+ paddingLeft: "var(--gap)",
277
+ paddingRight: "var(--gap)",
278
+ "> [data-layout-content]": {
279
+ margin: "0 auto",
280
+ display: "grid !important",
281
+ gridTemplateRows: "repeat(var(--rows), var(--row-size))",
282
+ gridTemplateColumns: "repeat(var(--columns), minmax(0, var(--col-size)))",
283
+ gap: "var(--gap)",
284
+ maxWidth: "var(--grid-size)"
285
+ }
286
+ },
287
+ "@mobile": {
288
+ padding: "0 16px",
289
+ "> [data-layout-content]": {
290
+ display: "flex !important",
291
+ flexDirection: "column"
292
+ }
293
+ }
294
+ };
263
295
  Layout.defaultProps = {
264
296
  gridSize: 1224,
265
297
  rows: 12,
266
298
  columns: 12,
267
299
  gap: 16,
268
- rowSize: 48,
269
- css: {
270
- "@desktop": {
271
- paddingTop: "16px",
272
- paddingBottom: "16px",
273
- paddingLeft: "var(--gap)",
274
- paddingRight: "var(--gap)",
275
- "> [data-layout-content]": {
276
- margin: "0 auto",
277
- display: "grid !important",
278
- gridTemplateRows: "repeat(var(--rows), var(--row-size))",
279
- gridTemplateColumns: "repeat(var(--columns), minmax(0, var(--col-size)))",
280
- gap: "var(--gap)",
281
- maxWidth: "var(--grid-size)"
282
- }
283
- },
284
- "@mobile": {
285
- padding: "0 16px",
286
- "> [data-layout-content]": {
287
- display: "flex !important",
288
- flexDirection: "column"
289
- }
290
- }
291
- }
300
+ rowSize: 48
292
301
  };
293
302
  var layout_default = Layout;
294
303
 
@@ -309,6 +318,7 @@ var Map = forwardRef5((props, ref) => {
309
318
  style: { pointerEvents: "none" }
310
319
  }));
311
320
  });
321
+ var css5 = {};
312
322
  Map.defaultProps = {
313
323
  place: "Hanoi",
314
324
  zoom: 14
@@ -327,17 +337,17 @@ var Text = React8.forwardRef(
327
337
  });
328
338
  }
329
339
  );
330
- Text.defaultProps = {
331
- value: "The quick brown fox jumps over the lazy dog",
332
- css: {
333
- "@desktop": {
334
- padding: "10px",
335
- wordBreak: "break-word",
336
- overflowWrap: "break-word",
337
- whiteSpace: "break-spaces"
338
- }
340
+ var css6 = {
341
+ "@desktop": {
342
+ padding: "10px",
343
+ wordBreak: "break-word",
344
+ overflowWrap: "break-word",
345
+ whiteSpace: "break-spaces"
339
346
  }
340
347
  };
348
+ Text.defaultProps = {
349
+ value: "The quick brown fox jumps over the lazy dog"
350
+ };
341
351
  var text_default = Text;
342
352
 
343
353
  // src/elements/video.tsx
@@ -360,6 +370,15 @@ var Video = forwardRef7((props, ref) => {
360
370
  type: type || "video/mp4"
361
371
  }), "Your browser does not support the video tag."));
362
372
  });
373
+ var css7 = {
374
+ "@desktop": {
375
+ video: {
376
+ height: "100%",
377
+ width: "100%",
378
+ aspectRatio: "16 / 9"
379
+ }
380
+ }
381
+ };
363
382
  Video.defaultProps = {
364
383
  src: "https://youtu.be/wM-NT6hcw48",
365
384
  poster: "https://ucarecdn.com/48d73272-3fe3-43f6-8b5b-22b68fc5a8c8/section.png",
@@ -367,16 +386,7 @@ Video.defaultProps = {
367
386
  type: "video/mp4",
368
387
  controls: false,
369
388
  autoPlay: true,
370
- muted: true,
371
- css: {
372
- "@desktop": {
373
- video: {
374
- height: "100%",
375
- width: "100%",
376
- aspectRatio: "16 / 9"
377
- }
378
- }
379
- }
389
+ muted: true
380
390
  };
381
391
  var video_default = Video;
382
392
 
@@ -455,36 +465,36 @@ var Instagram = forwardRef9(
455
465
  })));
456
466
  }
457
467
  );
468
+ var css8 = {
469
+ "@desktop": {
470
+ ".wv-ig-media-container": {
471
+ overflow: "hidden",
472
+ maxWidth: "100%",
473
+ maxHeight: "100%",
474
+ display: "grid",
475
+ gridTemplateColumns: "repeat(var(--wv-ig-images-per-row, 4), 1fr)",
476
+ gap: "var(--wv-ig-images-gap, 0px)",
477
+ img: {
478
+ aspectRatio: "1 / 1",
479
+ width: "100%",
480
+ height: "100%",
481
+ objectFit: "cover"
482
+ }
483
+ }
484
+ }
485
+ };
458
486
  Instagram.defaultProps = {
459
487
  token: "",
460
488
  username: "",
461
489
  numberOfImages: 8,
462
490
  imagesPerRow: 4,
463
- gap: 0,
464
- css: {
465
- "@desktop": {
466
- ".wv-ig-media-container": {
467
- overflow: "hidden",
468
- maxWidth: "100%",
469
- maxHeight: "100%",
470
- display: "grid",
471
- gridTemplateColumns: "repeat(var(--wv-ig-images-per-row, 4), 1fr)",
472
- gap: "var(--wv-ig-images-gap, 0px)",
473
- img: {
474
- aspectRatio: "1 / 1",
475
- width: "100%",
476
- height: "100%",
477
- objectFit: "cover"
478
- }
479
- }
480
- }
481
- }
491
+ gap: 0
482
492
  };
483
493
  var instagram_default = Instagram;
484
494
 
485
495
  // src/elements/accordion/index.tsx
486
- import React12, { createContext, forwardRef as forwardRef10, useState as useState2 } from "react";
487
- var AccordionContext = createContext({
496
+ import React12, { createContext as createContext2, forwardRef as forwardRef10, useState as useState2 } from "react";
497
+ var AccordionContext = createContext2({
488
498
  iconName: "arrow",
489
499
  active: [],
490
500
  setActive: () => {
@@ -509,16 +519,16 @@ var Accordion = forwardRef10(
509
519
  }, children));
510
520
  }
511
521
  );
512
- Accordion.defaultProps = {
513
- iconName: "arrow",
514
- css: {
515
- "@desktop": {
516
- display: "flex",
517
- flexDirection: "column",
518
- gap: 4
519
- }
522
+ var css9 = {
523
+ "@desktop": {
524
+ display: "flex",
525
+ flexDirection: "column",
526
+ gap: 4
520
527
  }
521
528
  };
529
+ Accordion.defaultProps = {
530
+ iconName: "arrow"
531
+ };
522
532
  var accordion_default = Accordion;
523
533
 
524
534
  // src/elements/accordion/AccordionWrapper.tsx
@@ -583,11 +593,11 @@ var rotateAnimation = {
583
593
  function Icon(props) {
584
594
  let { name, active = false, style, ...rest } = props;
585
595
  let { stitchesInstance } = useContext4(WeaverseContext);
586
- const { animationType, css } = ICONS[name];
596
+ const { animationType, css: css16 } = ICONS[name];
587
597
  if (active && animationType === "rotate90") {
588
598
  style = { ...rotateAnimation, ...style };
589
599
  }
590
- let { className } = stitchesInstance.css(css)();
600
+ let { className } = stitchesInstance.css(css16)();
591
601
  if (active)
592
602
  className += " active";
593
603
  return /* @__PURE__ */ React13.createElement("span", {
@@ -616,33 +626,33 @@ var AccordionWrapper = forwardRef11((props, ref) => {
616
626
  name: iconName
617
627
  })), children);
618
628
  });
619
- AccordionWrapper.defaultProps = {
620
- name: "Accordion item",
621
- css: {
622
- "@desktop": {
623
- maxHeight: "100%",
624
- ".wv-acc-icon": {
625
- position: "absolute",
626
- right: 16,
627
- width: 16,
628
- height: 16,
629
- transition: "all 0.3s ease-in-out 0s"
630
- },
631
- ".wv-acc-header": {
632
- display: "flex",
633
- alignItems: "center",
634
- borderRadius: 4,
635
- padding: 12,
636
- marginBottom: 4,
637
- border: "1px solid #76A9FA",
638
- cursor: "pointer",
639
- '&.active + [data-wv-type="accordion.content"]': {
640
- maxHeight: "var(--max-height, inherit)"
641
- }
629
+ var css10 = {
630
+ "@desktop": {
631
+ maxHeight: "100%",
632
+ ".wv-acc-icon": {
633
+ position: "absolute",
634
+ right: 16,
635
+ width: 16,
636
+ height: 16,
637
+ transition: "all 0.3s ease-in-out 0s"
638
+ },
639
+ ".wv-acc-header": {
640
+ display: "flex",
641
+ alignItems: "center",
642
+ borderRadius: 4,
643
+ padding: 12,
644
+ marginBottom: 4,
645
+ border: "1px solid #76A9FA",
646
+ cursor: "pointer",
647
+ '&.active + [data-wv-type="accordion.content"]': {
648
+ maxHeight: "var(--max-height, inherit)"
642
649
  }
643
650
  }
644
651
  }
645
652
  };
653
+ AccordionWrapper.defaultProps = {
654
+ name: "Accordion item"
655
+ };
646
656
  var AccordionWrapper_default = AccordionWrapper;
647
657
 
648
658
  // src/elements/accordion/AccordionContent.tsx
@@ -667,30 +677,30 @@ var AccordionContent = forwardRef12(
667
677
  }, "Drag and drop an element here."));
668
678
  }
669
679
  );
680
+ var css11 = {
681
+ "@desktop": {
682
+ width: "100%",
683
+ maxWidth: "var(--grid-size)",
684
+ display: "grid",
685
+ gridTemplateRows: "repeat(var(--rows), var(--row-size))",
686
+ gridTemplateColumns: "repeat(var(--columns), minmax(0, var(--col-size)))",
687
+ gap: "var(--gap)",
688
+ overflow: "hidden",
689
+ maxHeight: 0,
690
+ transition: "all var(--transition-duration, 0.3s) ease-in-out",
691
+ borderRadius: 4
692
+ }
693
+ };
670
694
  AccordionContent.defaultProps = {
671
695
  rows: 3,
672
696
  columns: 12,
673
697
  gap: 4,
674
- rowSize: 48,
675
- css: {
676
- "@desktop": {
677
- width: "100%",
678
- maxWidth: "var(--grid-size)",
679
- display: "grid",
680
- gridTemplateRows: "repeat(var(--rows), var(--row-size))",
681
- gridTemplateColumns: "repeat(var(--columns), minmax(0, var(--col-size)))",
682
- gap: "var(--gap)",
683
- overflow: "hidden",
684
- maxHeight: 0,
685
- transition: "all var(--transition-duration, 0.3s) ease-in-out",
686
- borderRadius: 4
687
- }
688
- }
698
+ rowSize: 48
689
699
  };
690
700
  var AccordionContent_default = AccordionContent;
691
701
 
692
702
  // src/elements/tab/index.tsx
693
- import React17, { createContext as createContext2, forwardRef as forwardRef13, useState as useState4 } from "react";
703
+ import React17, { createContext as createContext3, forwardRef as forwardRef13, useState as useState4 } from "react";
694
704
 
695
705
  // src/elements/tab/TabHeaderWrapper.tsx
696
706
  import React16, { useContext as useContext6, useEffect as useEffect3, useState as useState3 } from "react";
@@ -723,7 +733,7 @@ function TabHeaderWrapper(props) {
723
733
  }
724
734
 
725
735
  // src/elements/tab/index.tsx
726
- var TabContext = createContext2({
736
+ var TabContext = createContext3({
727
737
  active: null,
728
738
  setActive: () => {
729
739
  }
@@ -751,32 +761,32 @@ var Tab = forwardRef13((props, ref) => {
751
761
  wvId
752
762
  }), children));
753
763
  });
754
- Tab.defaultProps = {
755
- fullWidthTabHeader: false,
756
- css: {
757
- "@desktop": {
764
+ var css12 = {
765
+ "@desktop": {
766
+ display: "flex",
767
+ flexDirection: "column",
768
+ gap: 4,
769
+ "& .wv-tab-header-wrapper": {
770
+ width: "100%",
758
771
  display: "flex",
759
- flexDirection: "column",
760
- gap: 4,
761
- "& .wv-tab-header-wrapper": {
762
- width: "100%",
763
- display: "flex",
764
- marginBottom: 10
765
- },
766
- "& .wv-tab-header": {
767
- backgroundColor: "#fff",
768
- padding: "15px 24px",
769
- border: "1px solid #E4E7EB",
770
- cursor: "pointer",
771
- textAlign: "center",
772
- width: "var(--tab-width, auto)",
773
- "&.active": {
774
- backgroundColor: "#E4E7EB"
775
- }
772
+ marginBottom: 10
773
+ },
774
+ "& .wv-tab-header": {
775
+ backgroundColor: "#fff",
776
+ padding: "15px 24px",
777
+ border: "1px solid #E4E7EB",
778
+ cursor: "pointer",
779
+ textAlign: "center",
780
+ width: "var(--tab-width, auto)",
781
+ "&.active": {
782
+ backgroundColor: "#E4E7EB"
776
783
  }
777
784
  }
778
785
  }
779
786
  };
787
+ Tab.defaultProps = {
788
+ fullWidthTabHeader: false
789
+ };
780
790
  var tab_default = Tab;
781
791
 
782
792
  // src/elements/tab/TabContent.tsx
@@ -804,23 +814,23 @@ var TabContent = forwardRef14(
804
814
  }, "Drag and drop an element here."));
805
815
  }
806
816
  );
817
+ var css13 = {
818
+ "@desktop": {
819
+ width: "100%",
820
+ maxWidth: "var(--grid-size)",
821
+ display: "var(--content-active, none)",
822
+ gridTemplateRows: "repeat(var(--rows), var(--row-size))",
823
+ gridTemplateColumns: "repeat(var(--columns), minmax(0, var(--col-size)))",
824
+ gap: "var(--gap)",
825
+ borderRadius: 4
826
+ }
827
+ };
807
828
  TabContent.defaultProps = {
808
829
  rows: 3,
809
830
  columns: 12,
810
831
  gap: 4,
811
832
  rowSize: 48,
812
- name: "Tab header",
813
- css: {
814
- "@desktop": {
815
- width: "100%",
816
- maxWidth: "var(--grid-size)",
817
- display: "var(--content-active, none)",
818
- gridTemplateRows: "repeat(var(--rows), var(--row-size))",
819
- gridTemplateColumns: "repeat(var(--columns), minmax(0, var(--col-size)))",
820
- gap: "var(--gap)",
821
- borderRadius: 4
822
- }
823
- }
833
+ name: "Tab header"
824
834
  };
825
835
  var TabContent_default = TabContent;
826
836
 
@@ -854,43 +864,43 @@ var Slider = forwardRef15((props, ref) => {
854
864
  autoplayInterval: delay * 1e3
855
865
  }, children));
856
866
  });
857
- Slider.defaultProps = {
858
- fullWidth: true,
859
- autoplay: true,
860
- delay: 3,
861
- css: {
862
- "@desktop": {
863
- "& .wv-slider-btn": {
864
- borderRadius: "100%",
865
- width: 40,
866
- height: 40,
867
- background: "#fff",
868
- border: "none",
869
- cursor: "pointer",
870
- "&[disabled]": {
871
- cursor: "not-allowed"
872
- },
873
- "&:hover .wv-slider-arrow": {
874
- borderColor: "#999"
875
- },
876
- "& .wv-slider-arrow": {
877
- border: "solid black",
878
- borderWidth: "0 1px 1px 0",
879
- display: "inline-block",
880
- padding: 5
881
- },
882
- "& .wv-slider-arrow-right": {
883
- transform: "rotate(-45deg)",
884
- marginRight: 5
885
- },
886
- "& .wv-slider-arrow-left": {
887
- transform: "rotate(135deg)",
888
- marginLeft: 5
889
- }
867
+ var css14 = {
868
+ "@desktop": {
869
+ "& .wv-slider-btn": {
870
+ borderRadius: "100%",
871
+ width: 40,
872
+ height: 40,
873
+ background: "#fff",
874
+ border: "none",
875
+ cursor: "pointer",
876
+ "&[disabled]": {
877
+ cursor: "not-allowed"
878
+ },
879
+ "&:hover .wv-slider-arrow": {
880
+ borderColor: "#999"
881
+ },
882
+ "& .wv-slider-arrow": {
883
+ border: "solid black",
884
+ borderWidth: "0 1px 1px 0",
885
+ display: "inline-block",
886
+ padding: 5
887
+ },
888
+ "& .wv-slider-arrow-right": {
889
+ transform: "rotate(-45deg)",
890
+ marginRight: 5
891
+ },
892
+ "& .wv-slider-arrow-left": {
893
+ transform: "rotate(135deg)",
894
+ marginLeft: 5
890
895
  }
891
896
  }
892
897
  }
893
898
  };
899
+ Slider.defaultProps = {
900
+ fullWidth: true,
901
+ autoplay: true,
902
+ delay: 3
903
+ };
894
904
  var slider_default = Slider;
895
905
 
896
906
  // src/elements/slider/SliderContent.tsx
@@ -932,6 +942,18 @@ var SliderContent = forwardRef16(
932
942
  }, "Drag and drop an element here."));
933
943
  }
934
944
  );
945
+ var css15 = {
946
+ "@desktop": {
947
+ width: "100%",
948
+ maxWidth: "var(--grid-size)",
949
+ display: "grid",
950
+ gridTemplateRows: "repeat(var(--rows), var(--row-size))",
951
+ gridTemplateColumns: "repeat(var(--columns), minmax(0, var(--col-size)))",
952
+ gap: "var(--gap)",
953
+ borderRadius: 4,
954
+ backgroundImage: "var(--background-url, none)"
955
+ }
956
+ };
935
957
  SliderContent.defaultProps = {
936
958
  name: "Slider",
937
959
  mediaUrl: "",
@@ -940,64 +962,19 @@ SliderContent.defaultProps = {
940
962
  rows: 4,
941
963
  columns: 12,
942
964
  gap: 4,
943
- rowSize: 48,
944
- css: {
945
- "@desktop": {
946
- width: "100%",
947
- maxWidth: "var(--grid-size)",
948
- display: "grid",
949
- gridTemplateRows: "repeat(var(--rows), var(--row-size))",
950
- gridTemplateColumns: "repeat(var(--columns), minmax(0, var(--col-size)))",
951
- gap: "var(--gap)",
952
- borderRadius: 4,
953
- backgroundImage: "var(--background-url, none)"
954
- }
955
- }
965
+ rowSize: 48
956
966
  };
957
967
  var SliderContent_default = SliderContent;
958
968
 
959
- // src/elements/custom-html.tsx
960
- import React21, { forwardRef as forwardRef17, useContext as useContext10 } from "react";
961
- var CustomHTML = forwardRef17(
962
- (props, ref) => {
963
- const { content, children, ...rest } = props;
964
- const { isDesignMode } = useContext10(WeaverseContext);
965
- const style = {
966
- "--pointer-events": isDesignMode ? "none" : "auto"
967
- };
968
- if (!content)
969
- return /* @__PURE__ */ React21.createElement("div", {
970
- ref,
971
- ...rest
972
- }, /* @__PURE__ */ React21.createElement(Placeholder_default, {
973
- element: "Custom HTML"
974
- }, "Add your custom HTML code."));
975
- return /* @__PURE__ */ React21.createElement("div", {
976
- ref,
977
- ...rest,
978
- style,
979
- dangerouslySetInnerHTML: { __html: content }
980
- });
981
- }
982
- );
983
- CustomHTML.defaultProps = {
984
- content: "",
985
- type: "custom.html",
986
- css: {
987
- "@desktop": {
988
- "& > *": {
989
- pointerEvents: "var(--pointer-events, unset)"
990
- }
991
- }
992
- }
993
- };
994
- var custom_html_default = CustomHTML;
995
-
996
969
  // src/elements/index.ts
970
+ var SharedComponents = {
971
+ Placeholder: Placeholder_default
972
+ };
997
973
  var Elements = {
998
974
  Countdown: {
999
975
  Component: countdown_default,
1000
- type: "countdown"
976
+ type: "countdown",
977
+ defaultCss: css2
1001
978
  },
1002
979
  Button: {
1003
980
  Component: button_default,
@@ -1005,100 +982,110 @@ var Elements = {
1005
982
  },
1006
983
  Container: {
1007
984
  Component: container_default,
1008
- type: "container"
985
+ type: "container",
986
+ defaultCss: css
1009
987
  },
1010
988
  Image: {
1011
989
  Component: image_default,
1012
- type: "image"
990
+ type: "image",
991
+ defaultCss: css3
1013
992
  },
1014
993
  Instagram: {
1015
994
  Component: instagram_default,
1016
- type: "instagram"
995
+ type: "instagram",
996
+ defaultCss: css8
1017
997
  },
1018
998
  Layout: {
1019
999
  Component: layout_default,
1020
- type: "layout"
1000
+ type: "layout",
1001
+ defaultCss: css4
1021
1002
  },
1022
1003
  Map: {
1023
1004
  Component: map_default,
1024
- type: "map"
1005
+ type: "map",
1006
+ defaultCss: css5
1025
1007
  },
1026
1008
  Text: {
1027
1009
  Component: text_default,
1028
- type: "text"
1010
+ type: "text",
1011
+ defaultCss: css6
1029
1012
  },
1030
1013
  Video: {
1031
1014
  Component: video_default,
1032
- type: "video"
1015
+ type: "video",
1016
+ defaultCss: css7
1033
1017
  },
1034
1018
  Accordion: {
1035
1019
  Component: accordion_default,
1036
- type: "accordion"
1020
+ type: "accordion",
1021
+ defaultCss: css9
1037
1022
  },
1038
1023
  AccordionWrapper: {
1039
1024
  Component: AccordionWrapper_default,
1040
- type: "accordion.wrapper"
1025
+ type: "accordion.wrapper",
1026
+ defaultCss: css10
1041
1027
  },
1042
1028
  AccordionContent: {
1043
1029
  Component: AccordionContent_default,
1044
- type: "accordion.content"
1030
+ type: "accordion.content",
1031
+ defaultCss: css11
1045
1032
  },
1046
1033
  Tab: {
1047
1034
  Component: tab_default,
1048
- type: "tab"
1035
+ type: "tab",
1036
+ defaultCss: css12
1049
1037
  },
1050
1038
  TabContent: {
1051
1039
  Component: TabContent_default,
1052
- type: "tab.content"
1040
+ type: "tab.content",
1041
+ defaultCss: css13
1053
1042
  },
1054
1043
  Slider: {
1055
1044
  Component: slider_default,
1056
- type: "slider"
1045
+ type: "slider",
1046
+ defaultCss: css14
1057
1047
  },
1058
1048
  SliderContent: {
1059
1049
  Component: SliderContent_default,
1060
- type: "slider.content"
1061
- },
1062
- CustomHTML: {
1063
- Component: custom_html_default,
1064
- type: "custom.html"
1050
+ type: "slider.content",
1051
+ defaultCss: css15
1065
1052
  }
1066
1053
  };
1067
1054
 
1068
- // src/context.ts
1069
- var createRootContext = (configs) => {
1070
- let rootContext = new Weaverse(configs);
1071
- Object.keys(Elements).forEach((key) => {
1072
- rootContext.registerElement(Elements[key]);
1073
- });
1074
- return rootContext;
1075
- };
1076
- var WeaverseContext = createContext3({});
1077
- var WeaverseContextProvider = WeaverseContext.Provider;
1078
- var WeaverseContextConsumer = WeaverseContext.Consumer;
1079
-
1080
1055
  // src/renderer.tsx
1081
1056
  import { isBrowser } from "@weaverse/core";
1082
- import React22, { useContext as useContext11, useEffect as useEffect4, useRef, useState as useState5 } from "react";
1057
+ import React21, { useContext as useContext10, useEffect as useEffect4, useRef, useState as useState5 } from "react";
1083
1058
 
1084
1059
  // src/utils/index.ts
1085
- function shortCssObject(css) {
1060
+ function shortCssObject(css16) {
1086
1061
  return {
1087
- "@desktop": css["@desktop"],
1088
- "@mobile": css["@mobile"]
1062
+ "@desktop": css16["@desktop"],
1063
+ "@mobile": css16["@mobile"]
1089
1064
  };
1090
1065
  }
1066
+ var permanentClasses = {};
1091
1067
  function generateItemClass(instance, stitchesInstance) {
1092
- var _a, _b, _c, _d;
1093
- let { css, className: cls = "" } = instance.data;
1094
- let defaultCss = ((_c = (_b = (_a = instance.Element) == null ? void 0 : _a.Component) == null ? void 0 : _b.defaultProps) == null ? void 0 : _c.css) || {};
1068
+ var _a, _b;
1069
+ let { css: css16, type, className: cls = "" } = instance.data;
1095
1070
  let className = "";
1096
- if (css || defaultCss) {
1097
- let formattedCss = shortCssObject(css || defaultCss);
1071
+ let permanentClass = "";
1072
+ let perCss = (_a = instance.Element) == null ? void 0 : _a.permanentCss;
1073
+ if (perCss) {
1074
+ if (type in permanentClasses) {
1075
+ permanentClass = permanentClasses[type];
1076
+ } else {
1077
+ let { className: perCls } = stitchesInstance.css(perCss)();
1078
+ Object.assign(permanentClasses, { [type]: perCls });
1079
+ permanentClass = perCls;
1080
+ }
1081
+ }
1082
+ className = permanentClass;
1083
+ if (css16) {
1084
+ let formattedCss = shortCssObject(css16);
1098
1085
  let { className: newClass = "" } = stitchesInstance.css(formattedCss)();
1099
1086
  let { stitchesClass } = instance;
1100
- let otherClass = (((_d = instance.ref.current) == null ? void 0 : _d.className) || "").replace(stitchesClass, "").replace(cls, "").trim();
1101
- className = `${cls} ${newClass} ${otherClass}`.trim();
1087
+ let otherClass = (((_b = instance.ref.current) == null ? void 0 : _b.className) || "").replace(stitchesClass, "").replace(cls, "").replace(permanentClass, "").trim();
1088
+ className = `${permanentClass} ${cls} ${newClass} ${otherClass}`.trim();
1102
1089
  instance.stitchesClass = newClass;
1103
1090
  }
1104
1091
  return className;
@@ -1119,22 +1106,21 @@ var WeaverseRoot = ({ context }) => {
1119
1106
  }, []);
1120
1107
  let eventHandlers = ((_a = context == null ? void 0 : context.studioBridge) == null ? void 0 : _a.eventHandlers) || {};
1121
1108
  let themeClass = context.stitchesInstance.theme.className;
1122
- return ((_b = context.projectData) == null ? void 0 : _b.rootId) ? /* @__PURE__ */ React22.createElement("div", {
1109
+ return ((_b = context.projectData) == null ? void 0 : _b.rootId) ? /* @__PURE__ */ React21.createElement("div", {
1123
1110
  className: `weaverse-content-root ${themeClass}`,
1124
1111
  ...eventHandlers,
1125
1112
  ref: rootRef
1126
- }, /* @__PURE__ */ React22.createElement(WeaverseContextProvider, {
1113
+ }, /* @__PURE__ */ React21.createElement(WeaverseContextProvider, {
1127
1114
  value: context
1128
- }, /* @__PURE__ */ React22.createElement(ItemInstance, {
1115
+ }, /* @__PURE__ */ React21.createElement(ItemInstance, {
1129
1116
  id: context.projectData.rootId
1130
1117
  }))) : null;
1131
1118
  };
1132
1119
  var ItemComponent = ({ instance }) => {
1133
- let { stitchesInstance, elementInstances } = useContext11(WeaverseContext);
1120
+ let { stitchesInstance, elementInstances } = useContext10(WeaverseContext);
1134
1121
  let [data, setData] = useState5(instance.data);
1135
- let { id, type, childIds = [], css, className, ...rest } = data;
1122
+ let { id, type, childIds = [], css: css16, className, ...rest } = data;
1136
1123
  useEffect4(() => {
1137
- var _a;
1138
1124
  let update = (data2) => setData({ ...data2 });
1139
1125
  instance.subscribe(update);
1140
1126
  if (isBrowser && !instance.ref.current) {
@@ -1142,10 +1128,7 @@ var ItemComponent = ({ instance }) => {
1142
1128
  current: document.querySelector(`[data-wv-id="${id}"]`)
1143
1129
  });
1144
1130
  }
1145
- (_a = instance.ref.current) == null ? void 0 : _a.removeAttribute("css");
1146
- return () => {
1147
- instance.unsubscribe(update);
1148
- };
1131
+ return () => instance.unsubscribe(update);
1149
1132
  }, []);
1150
1133
  let Element = elementInstances.get(type);
1151
1134
  if (Element == null ? void 0 : Element.Component) {
@@ -1153,13 +1136,13 @@ var ItemComponent = ({ instance }) => {
1153
1136
  if (Component.$$typeof === Symbol.for("react.forward_ref")) {
1154
1137
  rest.ref = instance.ref;
1155
1138
  }
1156
- return /* @__PURE__ */ React22.createElement(Component, {
1139
+ return /* @__PURE__ */ React21.createElement(Component, {
1157
1140
  key: id,
1158
1141
  "data-wv-type": type,
1159
1142
  "data-wv-id": id,
1160
1143
  className: generateItemClass(instance, stitchesInstance),
1161
1144
  ...rest
1162
- }, childIds.map((id2) => /* @__PURE__ */ React22.createElement(ItemInstance, {
1145
+ }, childIds.map((id2) => /* @__PURE__ */ React21.createElement(ItemInstance, {
1163
1146
  key: id2,
1164
1147
  id: id2
1165
1148
  })));
@@ -1167,15 +1150,15 @@ var ItemComponent = ({ instance }) => {
1167
1150
  return null;
1168
1151
  };
1169
1152
  var ItemInstance = ({ id }) => {
1170
- let context = useContext11(WeaverseContext);
1153
+ let context = useContext10(WeaverseContext);
1171
1154
  let { itemInstances } = context;
1172
1155
  let instance = itemInstances.get(id);
1173
1156
  if (!instance) {
1174
- return /* @__PURE__ */ React22.createElement("div", {
1157
+ return /* @__PURE__ */ React21.createElement("div", {
1175
1158
  style: { display: "none" }
1176
1159
  }, "Item instance ", id, " not found");
1177
1160
  }
1178
- return /* @__PURE__ */ React22.createElement(ItemComponent, {
1161
+ return /* @__PURE__ */ React21.createElement(ItemComponent, {
1179
1162
  instance
1180
1163
  });
1181
1164
  };
@@ -1183,6 +1166,8 @@ var ItemInstance = ({ id }) => {
1183
1166
  // src/index.ts
1184
1167
  export * from "@weaverse/core";
1185
1168
  export {
1169
+ Elements,
1170
+ SharedComponents,
1186
1171
  WeaverseContext,
1187
1172
  WeaverseContextConsumer,
1188
1173
  WeaverseContextProvider,