@weaverse/hydrogen 1.0.44 → 1.0.46
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 +30 -6
- package/dist/index.js +56 -67
- package/dist/index.mjs +56 -67
- package/package.json +4 -4
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React, { ForwardRefExoticComponent } from 'react';
|
|
2
2
|
import { LoaderArgs, AppLoadContext } from '@shopify/remix-oxygen';
|
|
3
|
-
import { ElementSchema, WeaverseElement, Weaverse, WeaverseItemStore } from '@weaverse/react';
|
|
3
|
+
import { ElementData, ElementSchema, WeaverseElement, Weaverse, WeaverseItemStore } from '@weaverse/react';
|
|
4
4
|
export * from '@weaverse/react';
|
|
5
5
|
|
|
6
6
|
/**
|
|
@@ -22,21 +22,45 @@ type WeaverseLoaderArgs = LoaderArgs & {
|
|
|
22
22
|
weaverseHost: string;
|
|
23
23
|
};
|
|
24
24
|
};
|
|
25
|
+
interface HydrogenComponentData extends Omit<ElementData, 'childIds' | 'css'> {
|
|
26
|
+
id: string;
|
|
27
|
+
createdAt: string;
|
|
28
|
+
updatedAt: string;
|
|
29
|
+
deletedAt: string;
|
|
30
|
+
parentId: string;
|
|
31
|
+
children: {
|
|
32
|
+
id: string;
|
|
33
|
+
}[];
|
|
34
|
+
loaderData: unknown;
|
|
35
|
+
data: Record<string, unknown>;
|
|
36
|
+
}
|
|
25
37
|
type ComponentFlags = Partial<Record<'isSection', boolean>>;
|
|
26
38
|
interface HydrogenComponentSchema extends Omit<ElementSchema, 'parentTypes' | 'flags'> {
|
|
27
39
|
flags?: ComponentFlags;
|
|
40
|
+
childTypes?: string[];
|
|
28
41
|
}
|
|
29
|
-
interface HydrogenComponentProps<
|
|
30
|
-
|
|
42
|
+
interface HydrogenComponentProps<D = unknown, L = unknown> extends WeaverseElement {
|
|
43
|
+
data: D & {
|
|
44
|
+
className?: string;
|
|
45
|
+
};
|
|
46
|
+
loaderData?: L;
|
|
31
47
|
children?: React.JSX.Element[];
|
|
32
48
|
}
|
|
33
49
|
interface WeaverseHydrogen extends Omit<Weaverse, 'itemInstances'> {
|
|
34
50
|
itemInstances: Map<string | number, HydrogenComponentInstance>;
|
|
35
51
|
}
|
|
36
|
-
|
|
52
|
+
type HydrogenComponentTemplate = any;
|
|
53
|
+
interface HydrogenElement {
|
|
54
|
+
Component: ForwardRefExoticComponent<any>;
|
|
55
|
+
type: string;
|
|
56
|
+
schema?: HydrogenComponentSchema;
|
|
57
|
+
template?: HydrogenComponentTemplate;
|
|
58
|
+
}
|
|
59
|
+
interface HydrogenComponentInstance extends Omit<WeaverseItemStore, '_flags' | 'data' | 'Element'> {
|
|
37
60
|
get _element(): HTMLElement | null;
|
|
38
61
|
get _flags(): ComponentFlags;
|
|
39
|
-
get Element():
|
|
62
|
+
get Element(): HydrogenElement | undefined;
|
|
63
|
+
get data(): HydrogenComponentData;
|
|
40
64
|
}
|
|
41
65
|
interface HydrogenComponent<T = HydrogenComponentProps> {
|
|
42
66
|
default: ForwardRefExoticComponent<T>;
|
|
@@ -75,4 +99,4 @@ interface WeaverseHydrogenRootProps {
|
|
|
75
99
|
}
|
|
76
100
|
declare let WeaverseHydrogenRoot: (props: WeaverseHydrogenRootProps) => React.JSX.Element;
|
|
77
101
|
|
|
78
|
-
export { ComponentFlags, HydrogenComponent, HydrogenComponentInstance, HydrogenComponentProps, HydrogenComponentSchema, HydrogenPageConfigs, HydrogenPageData, TODO, WeaverseHydrogen, WeaverseHydrogenRoot, WeaverseLoaderArgs, fetchWithServerCache, weaverseLoader };
|
|
102
|
+
export { ComponentFlags, HydrogenComponent, HydrogenComponentData, HydrogenComponentInstance, HydrogenComponentProps, HydrogenComponentSchema, HydrogenComponentTemplate, HydrogenElement, HydrogenPageConfigs, HydrogenPageData, TODO, WeaverseHydrogen, WeaverseHydrogenRoot, WeaverseLoaderArgs, fetchWithServerCache, weaverseLoader };
|
package/dist/index.js
CHANGED
|
@@ -59,12 +59,15 @@ function createWeaverseHydrogenContext({ weaverseData }, components) {
|
|
|
59
59
|
pageId: page?.id,
|
|
60
60
|
platformType: "shopify-hydrogen"
|
|
61
61
|
});
|
|
62
|
+
weaverse.elementInstances.clear();
|
|
62
63
|
Object.entries(components).forEach(([key, component]) => {
|
|
63
64
|
weaverse.registerElement({
|
|
64
65
|
type: component?.schema?.type || key,
|
|
65
66
|
Component: component?.default,
|
|
66
|
-
|
|
67
|
-
|
|
67
|
+
// @ts-ignore
|
|
68
|
+
schema: component?.schema,
|
|
69
|
+
// @ts-ignore
|
|
70
|
+
template: component?.template
|
|
68
71
|
});
|
|
69
72
|
});
|
|
70
73
|
return weaverse;
|
|
@@ -545,13 +548,16 @@ var stitchesUtils = {
|
|
|
545
548
|
var WeaverseItemStore = class {
|
|
546
549
|
constructor(itemData, weaverse) {
|
|
547
550
|
this.listeners = /* @__PURE__ */ new Set();
|
|
548
|
-
this.ref = {
|
|
549
|
-
|
|
550
|
-
};
|
|
551
|
+
this.ref = { current: null };
|
|
552
|
+
this.platformType = "shopify-section";
|
|
551
553
|
this.stitchesClass = "";
|
|
552
|
-
this.
|
|
553
|
-
this.setData = (
|
|
554
|
-
|
|
554
|
+
this._store = { id: "", type: "" };
|
|
555
|
+
this.setData = (update) => {
|
|
556
|
+
if (this.platformType === "shopify-hydrogen") {
|
|
557
|
+
this.data = update;
|
|
558
|
+
} else {
|
|
559
|
+
this.data = Object.assign(this.data, update);
|
|
560
|
+
}
|
|
555
561
|
this.triggerUpdate();
|
|
556
562
|
return this.data;
|
|
557
563
|
};
|
|
@@ -568,13 +574,14 @@ var WeaverseItemStore = class {
|
|
|
568
574
|
};
|
|
569
575
|
let { type, id } = itemData;
|
|
570
576
|
this.weaverse = weaverse;
|
|
577
|
+
this.platformType = weaverse.platformType;
|
|
571
578
|
if (id && type) {
|
|
572
579
|
weaverse.itemInstances.set(id, this);
|
|
573
|
-
this.
|
|
580
|
+
this._store = { ...itemData };
|
|
574
581
|
}
|
|
575
582
|
}
|
|
576
583
|
get _id() {
|
|
577
|
-
return this.
|
|
584
|
+
return this._store.id;
|
|
578
585
|
}
|
|
579
586
|
get _element() {
|
|
580
587
|
return this.ref.current;
|
|
@@ -583,17 +590,33 @@ var WeaverseItemStore = class {
|
|
|
583
590
|
return this.Element?.schema?.flags || {};
|
|
584
591
|
}
|
|
585
592
|
get Element() {
|
|
586
|
-
return this.weaverse.elementInstances.get(this.
|
|
593
|
+
return this.weaverse.elementInstances.get(this._store.type);
|
|
587
594
|
}
|
|
588
|
-
set data(
|
|
589
|
-
this.
|
|
595
|
+
set data(update) {
|
|
596
|
+
if (this.platformType === "shopify-hydrogen") {
|
|
597
|
+
let { children, ...rest } = update;
|
|
598
|
+
if (children) {
|
|
599
|
+
this._store.children = children;
|
|
600
|
+
}
|
|
601
|
+
this._store.data = merge(this._store.data, rest);
|
|
602
|
+
} else {
|
|
603
|
+
this._store = { ...this.data, ...update };
|
|
604
|
+
}
|
|
590
605
|
}
|
|
591
606
|
get data() {
|
|
592
|
-
let
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
607
|
+
let defaultProps = { ...this.Element?.Component?.defaultProps };
|
|
608
|
+
if (this.platformType === "shopify-hydrogen") {
|
|
609
|
+
return {
|
|
610
|
+
...this._store,
|
|
611
|
+
data: { ...defaultProps?.data, ...this._store.data }
|
|
612
|
+
};
|
|
613
|
+
} else {
|
|
614
|
+
let defaultCss = this.Element?.defaultCss || {};
|
|
615
|
+
let currentCss = this._store.css || {};
|
|
616
|
+
let css = merge(defaultCss, currentCss);
|
|
617
|
+
let extraData = this.Element?.extraData;
|
|
618
|
+
return { ...defaultProps, ...extraData, ...this._store, css };
|
|
619
|
+
}
|
|
597
620
|
}
|
|
598
621
|
};
|
|
599
622
|
var Weaverse = class {
|
|
@@ -608,18 +631,7 @@ var Weaverse = class {
|
|
|
608
631
|
* @param elementSchemas {Array<ElementSchema>} List of element schemas
|
|
609
632
|
* @param platformType {PlatformTypeEnum} Check the platform, shopify-section or react-ssr(hydrogen)
|
|
610
633
|
*/
|
|
611
|
-
constructor({
|
|
612
|
-
weaverseHost,
|
|
613
|
-
weaverseVersion,
|
|
614
|
-
projectId,
|
|
615
|
-
data,
|
|
616
|
-
mediaBreakPoints,
|
|
617
|
-
isDesignMode,
|
|
618
|
-
ssrMode,
|
|
619
|
-
elementSchemas,
|
|
620
|
-
platformType,
|
|
621
|
-
pageId
|
|
622
|
-
} = {}) {
|
|
634
|
+
constructor(params = {}) {
|
|
623
635
|
this.elementInstances = /* @__PURE__ */ new Map();
|
|
624
636
|
this.itemInstances = /* @__PURE__ */ new Map();
|
|
625
637
|
this.weaverseHost = "https://studio.weaverse.io";
|
|
@@ -651,42 +663,11 @@ var Weaverse = class {
|
|
|
651
663
|
...externalConfig
|
|
652
664
|
});
|
|
653
665
|
};
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
projectId,
|
|
658
|
-
data,
|
|
659
|
-
platformType,
|
|
660
|
-
mediaBreakPoints,
|
|
661
|
-
isDesignMode,
|
|
662
|
-
ssrMode,
|
|
663
|
-
elementSchemas,
|
|
664
|
-
pageId
|
|
666
|
+
Object.entries(params).forEach(([k2, v2]) => {
|
|
667
|
+
let key = k2;
|
|
668
|
+
this[key] = v2 || this[key];
|
|
665
669
|
});
|
|
666
|
-
|
|
667
|
-
init({
|
|
668
|
-
weaverseHost,
|
|
669
|
-
weaverseVersion,
|
|
670
|
-
elementSchemas,
|
|
671
|
-
platformType,
|
|
672
|
-
projectId,
|
|
673
|
-
data,
|
|
674
|
-
mediaBreakPoints,
|
|
675
|
-
isDesignMode,
|
|
676
|
-
ssrMode,
|
|
677
|
-
pageId
|
|
678
|
-
} = {}) {
|
|
679
|
-
this.elementSchemas = elementSchemas || this.elementSchemas;
|
|
680
|
-
this.weaverseHost = weaverseHost || this.weaverseHost;
|
|
681
|
-
this.weaverseVersion = weaverseVersion || this.weaverseVersion;
|
|
682
|
-
this.projectId = projectId || this.projectId;
|
|
683
|
-
this.pageId = pageId || this.pageId;
|
|
684
|
-
this.mediaBreakPoints = mediaBreakPoints || this.mediaBreakPoints;
|
|
685
|
-
this.isDesignMode = isDesignMode || this.isDesignMode;
|
|
686
|
-
this.ssrMode = ssrMode || this.ssrMode;
|
|
687
|
-
this.platformType = platformType || this.platformType;
|
|
688
|
-
this.data = data || this.data;
|
|
689
|
-
this.initProjectItemData();
|
|
670
|
+
this.initProject();
|
|
690
671
|
this.initStitches();
|
|
691
672
|
}
|
|
692
673
|
/**
|
|
@@ -716,12 +697,20 @@ var Weaverse = class {
|
|
|
716
697
|
item.triggerUpdate();
|
|
717
698
|
});
|
|
718
699
|
}
|
|
700
|
+
/**
|
|
701
|
+
* When applying new template,
|
|
702
|
+
* we need to reset the project data and re-initialize the project item data
|
|
703
|
+
* @param data {WeaverseProjectDataType}
|
|
704
|
+
*/
|
|
719
705
|
setProjectData(data) {
|
|
720
706
|
this.data = data;
|
|
721
|
-
this.
|
|
707
|
+
this.initProject();
|
|
722
708
|
this.triggerUpdate();
|
|
723
709
|
}
|
|
724
|
-
|
|
710
|
+
/**
|
|
711
|
+
* Create new WeaverseItemStore instance for each item in project data
|
|
712
|
+
*/
|
|
713
|
+
initProject() {
|
|
725
714
|
const data = this.data;
|
|
726
715
|
if (data?.items) {
|
|
727
716
|
data.items.forEach((item) => {
|
package/dist/index.mjs
CHANGED
|
@@ -22,12 +22,15 @@ function createWeaverseHydrogenContext({ weaverseData }, components) {
|
|
|
22
22
|
pageId: page?.id,
|
|
23
23
|
platformType: "shopify-hydrogen"
|
|
24
24
|
});
|
|
25
|
+
weaverse.elementInstances.clear();
|
|
25
26
|
Object.entries(components).forEach(([key, component]) => {
|
|
26
27
|
weaverse.registerElement({
|
|
27
28
|
type: component?.schema?.type || key,
|
|
28
29
|
Component: component?.default,
|
|
29
|
-
|
|
30
|
-
|
|
30
|
+
// @ts-ignore
|
|
31
|
+
schema: component?.schema,
|
|
32
|
+
// @ts-ignore
|
|
33
|
+
template: component?.template
|
|
31
34
|
});
|
|
32
35
|
});
|
|
33
36
|
return weaverse;
|
|
@@ -508,13 +511,16 @@ var stitchesUtils = {
|
|
|
508
511
|
var WeaverseItemStore = class {
|
|
509
512
|
constructor(itemData, weaverse) {
|
|
510
513
|
this.listeners = /* @__PURE__ */ new Set();
|
|
511
|
-
this.ref = {
|
|
512
|
-
|
|
513
|
-
};
|
|
514
|
+
this.ref = { current: null };
|
|
515
|
+
this.platformType = "shopify-section";
|
|
514
516
|
this.stitchesClass = "";
|
|
515
|
-
this.
|
|
516
|
-
this.setData = (
|
|
517
|
-
|
|
517
|
+
this._store = { id: "", type: "" };
|
|
518
|
+
this.setData = (update) => {
|
|
519
|
+
if (this.platformType === "shopify-hydrogen") {
|
|
520
|
+
this.data = update;
|
|
521
|
+
} else {
|
|
522
|
+
this.data = Object.assign(this.data, update);
|
|
523
|
+
}
|
|
518
524
|
this.triggerUpdate();
|
|
519
525
|
return this.data;
|
|
520
526
|
};
|
|
@@ -531,13 +537,14 @@ var WeaverseItemStore = class {
|
|
|
531
537
|
};
|
|
532
538
|
let { type, id } = itemData;
|
|
533
539
|
this.weaverse = weaverse;
|
|
540
|
+
this.platformType = weaverse.platformType;
|
|
534
541
|
if (id && type) {
|
|
535
542
|
weaverse.itemInstances.set(id, this);
|
|
536
|
-
this.
|
|
543
|
+
this._store = { ...itemData };
|
|
537
544
|
}
|
|
538
545
|
}
|
|
539
546
|
get _id() {
|
|
540
|
-
return this.
|
|
547
|
+
return this._store.id;
|
|
541
548
|
}
|
|
542
549
|
get _element() {
|
|
543
550
|
return this.ref.current;
|
|
@@ -546,17 +553,33 @@ var WeaverseItemStore = class {
|
|
|
546
553
|
return this.Element?.schema?.flags || {};
|
|
547
554
|
}
|
|
548
555
|
get Element() {
|
|
549
|
-
return this.weaverse.elementInstances.get(this.
|
|
556
|
+
return this.weaverse.elementInstances.get(this._store.type);
|
|
550
557
|
}
|
|
551
|
-
set data(
|
|
552
|
-
this.
|
|
558
|
+
set data(update) {
|
|
559
|
+
if (this.platformType === "shopify-hydrogen") {
|
|
560
|
+
let { children, ...rest } = update;
|
|
561
|
+
if (children) {
|
|
562
|
+
this._store.children = children;
|
|
563
|
+
}
|
|
564
|
+
this._store.data = merge(this._store.data, rest);
|
|
565
|
+
} else {
|
|
566
|
+
this._store = { ...this.data, ...update };
|
|
567
|
+
}
|
|
553
568
|
}
|
|
554
569
|
get data() {
|
|
555
|
-
let
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
570
|
+
let defaultProps = { ...this.Element?.Component?.defaultProps };
|
|
571
|
+
if (this.platformType === "shopify-hydrogen") {
|
|
572
|
+
return {
|
|
573
|
+
...this._store,
|
|
574
|
+
data: { ...defaultProps?.data, ...this._store.data }
|
|
575
|
+
};
|
|
576
|
+
} else {
|
|
577
|
+
let defaultCss = this.Element?.defaultCss || {};
|
|
578
|
+
let currentCss = this._store.css || {};
|
|
579
|
+
let css = merge(defaultCss, currentCss);
|
|
580
|
+
let extraData = this.Element?.extraData;
|
|
581
|
+
return { ...defaultProps, ...extraData, ...this._store, css };
|
|
582
|
+
}
|
|
560
583
|
}
|
|
561
584
|
};
|
|
562
585
|
var Weaverse = class {
|
|
@@ -571,18 +594,7 @@ var Weaverse = class {
|
|
|
571
594
|
* @param elementSchemas {Array<ElementSchema>} List of element schemas
|
|
572
595
|
* @param platformType {PlatformTypeEnum} Check the platform, shopify-section or react-ssr(hydrogen)
|
|
573
596
|
*/
|
|
574
|
-
constructor({
|
|
575
|
-
weaverseHost,
|
|
576
|
-
weaverseVersion,
|
|
577
|
-
projectId,
|
|
578
|
-
data,
|
|
579
|
-
mediaBreakPoints,
|
|
580
|
-
isDesignMode,
|
|
581
|
-
ssrMode,
|
|
582
|
-
elementSchemas,
|
|
583
|
-
platformType,
|
|
584
|
-
pageId
|
|
585
|
-
} = {}) {
|
|
597
|
+
constructor(params = {}) {
|
|
586
598
|
this.elementInstances = /* @__PURE__ */ new Map();
|
|
587
599
|
this.itemInstances = /* @__PURE__ */ new Map();
|
|
588
600
|
this.weaverseHost = "https://studio.weaverse.io";
|
|
@@ -614,42 +626,11 @@ var Weaverse = class {
|
|
|
614
626
|
...externalConfig
|
|
615
627
|
});
|
|
616
628
|
};
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
projectId,
|
|
621
|
-
data,
|
|
622
|
-
platformType,
|
|
623
|
-
mediaBreakPoints,
|
|
624
|
-
isDesignMode,
|
|
625
|
-
ssrMode,
|
|
626
|
-
elementSchemas,
|
|
627
|
-
pageId
|
|
629
|
+
Object.entries(params).forEach(([k2, v2]) => {
|
|
630
|
+
let key = k2;
|
|
631
|
+
this[key] = v2 || this[key];
|
|
628
632
|
});
|
|
629
|
-
|
|
630
|
-
init({
|
|
631
|
-
weaverseHost,
|
|
632
|
-
weaverseVersion,
|
|
633
|
-
elementSchemas,
|
|
634
|
-
platformType,
|
|
635
|
-
projectId,
|
|
636
|
-
data,
|
|
637
|
-
mediaBreakPoints,
|
|
638
|
-
isDesignMode,
|
|
639
|
-
ssrMode,
|
|
640
|
-
pageId
|
|
641
|
-
} = {}) {
|
|
642
|
-
this.elementSchemas = elementSchemas || this.elementSchemas;
|
|
643
|
-
this.weaverseHost = weaverseHost || this.weaverseHost;
|
|
644
|
-
this.weaverseVersion = weaverseVersion || this.weaverseVersion;
|
|
645
|
-
this.projectId = projectId || this.projectId;
|
|
646
|
-
this.pageId = pageId || this.pageId;
|
|
647
|
-
this.mediaBreakPoints = mediaBreakPoints || this.mediaBreakPoints;
|
|
648
|
-
this.isDesignMode = isDesignMode || this.isDesignMode;
|
|
649
|
-
this.ssrMode = ssrMode || this.ssrMode;
|
|
650
|
-
this.platformType = platformType || this.platformType;
|
|
651
|
-
this.data = data || this.data;
|
|
652
|
-
this.initProjectItemData();
|
|
633
|
+
this.initProject();
|
|
653
634
|
this.initStitches();
|
|
654
635
|
}
|
|
655
636
|
/**
|
|
@@ -679,12 +660,20 @@ var Weaverse = class {
|
|
|
679
660
|
item.triggerUpdate();
|
|
680
661
|
});
|
|
681
662
|
}
|
|
663
|
+
/**
|
|
664
|
+
* When applying new template,
|
|
665
|
+
* we need to reset the project data and re-initialize the project item data
|
|
666
|
+
* @param data {WeaverseProjectDataType}
|
|
667
|
+
*/
|
|
682
668
|
setProjectData(data) {
|
|
683
669
|
this.data = data;
|
|
684
|
-
this.
|
|
670
|
+
this.initProject();
|
|
685
671
|
this.triggerUpdate();
|
|
686
672
|
}
|
|
687
|
-
|
|
673
|
+
/**
|
|
674
|
+
* Create new WeaverseItemStore instance for each item in project data
|
|
675
|
+
*/
|
|
676
|
+
initProject() {
|
|
688
677
|
const data = this.data;
|
|
689
678
|
if (data?.items) {
|
|
690
679
|
data.items.forEach((item) => {
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.0.
|
|
2
|
+
"version": "1.0.46",
|
|
3
3
|
"license": "MIT",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"typings": "dist/index.d.ts",
|
|
@@ -32,10 +32,10 @@
|
|
|
32
32
|
"name": "@weaverse/hydrogen",
|
|
33
33
|
"author": "Weaverse Team",
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@shopify/hydrogen": "2023.4.
|
|
36
|
-
"@weaverse/react": "1.0.
|
|
35
|
+
"@shopify/hydrogen": "2023.4.3",
|
|
36
|
+
"@weaverse/react": "1.0.46"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
|
-
"@shopify/remix-oxygen": "^1.0.
|
|
39
|
+
"@shopify/remix-oxygen": "^1.0.7"
|
|
40
40
|
}
|
|
41
41
|
}
|