@weaverse/hydrogen 5.1.0 → 5.2.0
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.mts +10 -24
- package/dist/index.d.ts +10 -24
- package/dist/index.js +7 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -2
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -2
package/dist/index.d.mts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { SelectedOptionInput } from '@shopify/hydrogen/storefront-api-types';
|
|
2
|
-
import { EventEmitter,
|
|
3
|
-
export {
|
|
2
|
+
import { EventEmitter, ElementData, WeaverseElement, WeaverseProjectDataType, WeaverseCoreParams, WeaverseResourcePickerData, Weaverse, PlatformTypeEnum, WeaverseItemStore } from '@weaverse/react';
|
|
3
|
+
export { PositionInputValue, WeaverseImage, WeaverseVideo, isBrowser, isIframe, useChildInstances, useItemInstance, useParentInstance, useWeaverse } from '@weaverse/react';
|
|
4
4
|
import { createWithCache, I18nBase, HydrogenContext } from '@shopify/hydrogen';
|
|
5
5
|
import { LoaderFunctionArgs, AppLoadContext } from '@shopify/remix-oxygen';
|
|
6
|
+
import { PageType, InspectorGroup, SchemaType, ComponentPresets } from '@weaverse/schema';
|
|
7
|
+
export * from '@weaverse/schema';
|
|
8
|
+
export { InspectorGroup, PageType } from '@weaverse/schema';
|
|
6
9
|
import * as React$1 from 'react';
|
|
7
10
|
import { ForwardRefExoticComponent, ComponentType, JSX } from 'react';
|
|
8
11
|
import { NavigateFunction } from 'react-router';
|
|
@@ -79,8 +82,9 @@ interface HydrogenComponentData extends ElementData {
|
|
|
79
82
|
updatedAt?: string;
|
|
80
83
|
deletedAt?: string;
|
|
81
84
|
}
|
|
82
|
-
interface HydrogenComponentSchema extends
|
|
85
|
+
interface HydrogenComponentSchema extends SchemaType {
|
|
83
86
|
childTypes?: string[];
|
|
87
|
+
/** @deprecated Use settings instead */
|
|
84
88
|
inspector?: InspectorGroup[];
|
|
85
89
|
settings?: InspectorGroup[];
|
|
86
90
|
presets?: Omit<HydrogenComponentPresets, 'type'>;
|
|
@@ -90,20 +94,6 @@ interface HydrogenComponentSchema extends ElementSchema {
|
|
|
90
94
|
groups?: ('*' | 'header' | 'footer' | 'body')[];
|
|
91
95
|
};
|
|
92
96
|
}
|
|
93
|
-
type BasicInput = Omit<BasicInput$1, 'condition'> & {
|
|
94
|
-
shouldRevalidate?: boolean;
|
|
95
|
-
condition?: string | ((data: ElementData, weaverse: WeaverseHydrogen) => boolean);
|
|
96
|
-
};
|
|
97
|
-
type HeadingInputType = 'heading';
|
|
98
|
-
type HeadingInput = {
|
|
99
|
-
type: HeadingInputType;
|
|
100
|
-
label: string;
|
|
101
|
-
[key: string]: any;
|
|
102
|
-
};
|
|
103
|
-
interface InspectorGroup {
|
|
104
|
-
group: string;
|
|
105
|
-
inputs: (BasicInput | HeadingInput)[];
|
|
106
|
-
}
|
|
107
97
|
interface HydrogenComponentProps<L = any> extends WeaverseElement {
|
|
108
98
|
className?: string;
|
|
109
99
|
loaderData?: L;
|
|
@@ -133,11 +123,7 @@ type WeaverseInternal = {
|
|
|
133
123
|
revalidate: () => void;
|
|
134
124
|
themeSettingsStore: ThemeSettingsStore;
|
|
135
125
|
};
|
|
136
|
-
type HydrogenComponentPresets =
|
|
137
|
-
type: string;
|
|
138
|
-
children?: HydrogenComponentPresets[];
|
|
139
|
-
[key: string]: any;
|
|
140
|
-
};
|
|
126
|
+
type HydrogenComponentPresets = ComponentPresets;
|
|
141
127
|
interface HydrogenElement {
|
|
142
128
|
Component: ForwardRefExoticComponent<HydrogenComponentProps> | ((props: HydrogenComponentProps) => React$1.JSX.Element);
|
|
143
129
|
type: string;
|
|
@@ -213,6 +199,7 @@ interface HydrogenThemeSchema {
|
|
|
213
199
|
documentationUrl: string;
|
|
214
200
|
supportUrl: string;
|
|
215
201
|
};
|
|
202
|
+
/** @deprecated Use settings instead */
|
|
216
203
|
inspector?: InspectorGroup[];
|
|
217
204
|
settings?: InspectorGroup[];
|
|
218
205
|
i18n?: {
|
|
@@ -221,7 +208,6 @@ interface HydrogenThemeSchema {
|
|
|
221
208
|
shopLocales: WeaverseI18n[];
|
|
222
209
|
};
|
|
223
210
|
}
|
|
224
|
-
type PageType = 'INDEX' | 'PRODUCT' | 'ALL_PRODUCTS' | 'COLLECTION' | 'COLLECTION_LIST' | 'PAGE' | 'BLOG' | 'ARTICLE' | 'CUSTOM';
|
|
225
211
|
type FetchProjectRequestBody = {
|
|
226
212
|
projectId: string;
|
|
227
213
|
url: string;
|
|
@@ -334,4 +320,4 @@ declare const IMAGES_PLACEHOLDERS: {
|
|
|
334
320
|
product_18: string;
|
|
335
321
|
};
|
|
336
322
|
|
|
337
|
-
export { type AllCacheOptions, type
|
|
323
|
+
export { type AllCacheOptions, type ComponentLoaderArgs, type FetchProjectPayload, type FetchProjectRequestBody, type HydrogenComponent, type HydrogenComponentData, type HydrogenComponentPresets, type HydrogenComponentProps, type HydrogenComponentSchema, type HydrogenElement, type HydrogenPageAssignment, type HydrogenPageData, type HydrogenProjectType, type HydrogenThemeSchema, type HydrogenThemeSettings, IMAGES_PLACEHOLDERS, type PublicEnv, type RouteLoaderArgs, type WeaverseArticle, type WeaverseBlog, WeaverseClient, type WeaverseClientArgs, type WeaverseCollection, WeaverseHydrogen, WeaverseHydrogenItem, type WeaverseHydrogenParams, WeaverseHydrogenRoot, type WeaverseI18n, type WeaverseInternal, type WeaverseLoaderData, type WeaverseLoaderRequestInfo, type WeaverseMetaObject, type WeaverseProduct, type WeaverseProjectConfigs, type WeaverseStudioQueries, getSelectedProductOptions, registerComponent, useThemeSettings, withWeaverse };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { SelectedOptionInput } from '@shopify/hydrogen/storefront-api-types';
|
|
2
|
-
import { EventEmitter,
|
|
3
|
-
export {
|
|
2
|
+
import { EventEmitter, ElementData, WeaverseElement, WeaverseProjectDataType, WeaverseCoreParams, WeaverseResourcePickerData, Weaverse, PlatformTypeEnum, WeaverseItemStore } from '@weaverse/react';
|
|
3
|
+
export { PositionInputValue, WeaverseImage, WeaverseVideo, isBrowser, isIframe, useChildInstances, useItemInstance, useParentInstance, useWeaverse } from '@weaverse/react';
|
|
4
4
|
import { createWithCache, I18nBase, HydrogenContext } from '@shopify/hydrogen';
|
|
5
5
|
import { LoaderFunctionArgs, AppLoadContext } from '@shopify/remix-oxygen';
|
|
6
|
+
import { PageType, InspectorGroup, SchemaType, ComponentPresets } from '@weaverse/schema';
|
|
7
|
+
export * from '@weaverse/schema';
|
|
8
|
+
export { InspectorGroup, PageType } from '@weaverse/schema';
|
|
6
9
|
import * as React$1 from 'react';
|
|
7
10
|
import { ForwardRefExoticComponent, ComponentType, JSX } from 'react';
|
|
8
11
|
import { NavigateFunction } from 'react-router';
|
|
@@ -79,8 +82,9 @@ interface HydrogenComponentData extends ElementData {
|
|
|
79
82
|
updatedAt?: string;
|
|
80
83
|
deletedAt?: string;
|
|
81
84
|
}
|
|
82
|
-
interface HydrogenComponentSchema extends
|
|
85
|
+
interface HydrogenComponentSchema extends SchemaType {
|
|
83
86
|
childTypes?: string[];
|
|
87
|
+
/** @deprecated Use settings instead */
|
|
84
88
|
inspector?: InspectorGroup[];
|
|
85
89
|
settings?: InspectorGroup[];
|
|
86
90
|
presets?: Omit<HydrogenComponentPresets, 'type'>;
|
|
@@ -90,20 +94,6 @@ interface HydrogenComponentSchema extends ElementSchema {
|
|
|
90
94
|
groups?: ('*' | 'header' | 'footer' | 'body')[];
|
|
91
95
|
};
|
|
92
96
|
}
|
|
93
|
-
type BasicInput = Omit<BasicInput$1, 'condition'> & {
|
|
94
|
-
shouldRevalidate?: boolean;
|
|
95
|
-
condition?: string | ((data: ElementData, weaverse: WeaverseHydrogen) => boolean);
|
|
96
|
-
};
|
|
97
|
-
type HeadingInputType = 'heading';
|
|
98
|
-
type HeadingInput = {
|
|
99
|
-
type: HeadingInputType;
|
|
100
|
-
label: string;
|
|
101
|
-
[key: string]: any;
|
|
102
|
-
};
|
|
103
|
-
interface InspectorGroup {
|
|
104
|
-
group: string;
|
|
105
|
-
inputs: (BasicInput | HeadingInput)[];
|
|
106
|
-
}
|
|
107
97
|
interface HydrogenComponentProps<L = any> extends WeaverseElement {
|
|
108
98
|
className?: string;
|
|
109
99
|
loaderData?: L;
|
|
@@ -133,11 +123,7 @@ type WeaverseInternal = {
|
|
|
133
123
|
revalidate: () => void;
|
|
134
124
|
themeSettingsStore: ThemeSettingsStore;
|
|
135
125
|
};
|
|
136
|
-
type HydrogenComponentPresets =
|
|
137
|
-
type: string;
|
|
138
|
-
children?: HydrogenComponentPresets[];
|
|
139
|
-
[key: string]: any;
|
|
140
|
-
};
|
|
126
|
+
type HydrogenComponentPresets = ComponentPresets;
|
|
141
127
|
interface HydrogenElement {
|
|
142
128
|
Component: ForwardRefExoticComponent<HydrogenComponentProps> | ((props: HydrogenComponentProps) => React$1.JSX.Element);
|
|
143
129
|
type: string;
|
|
@@ -213,6 +199,7 @@ interface HydrogenThemeSchema {
|
|
|
213
199
|
documentationUrl: string;
|
|
214
200
|
supportUrl: string;
|
|
215
201
|
};
|
|
202
|
+
/** @deprecated Use settings instead */
|
|
216
203
|
inspector?: InspectorGroup[];
|
|
217
204
|
settings?: InspectorGroup[];
|
|
218
205
|
i18n?: {
|
|
@@ -221,7 +208,6 @@ interface HydrogenThemeSchema {
|
|
|
221
208
|
shopLocales: WeaverseI18n[];
|
|
222
209
|
};
|
|
223
210
|
}
|
|
224
|
-
type PageType = 'INDEX' | 'PRODUCT' | 'ALL_PRODUCTS' | 'COLLECTION' | 'COLLECTION_LIST' | 'PAGE' | 'BLOG' | 'ARTICLE' | 'CUSTOM';
|
|
225
211
|
type FetchProjectRequestBody = {
|
|
226
212
|
projectId: string;
|
|
227
213
|
url: string;
|
|
@@ -334,4 +320,4 @@ declare const IMAGES_PLACEHOLDERS: {
|
|
|
334
320
|
product_18: string;
|
|
335
321
|
};
|
|
336
322
|
|
|
337
|
-
export { type AllCacheOptions, type
|
|
323
|
+
export { type AllCacheOptions, type ComponentLoaderArgs, type FetchProjectPayload, type FetchProjectRequestBody, type HydrogenComponent, type HydrogenComponentData, type HydrogenComponentPresets, type HydrogenComponentProps, type HydrogenComponentSchema, type HydrogenElement, type HydrogenPageAssignment, type HydrogenPageData, type HydrogenProjectType, type HydrogenThemeSchema, type HydrogenThemeSettings, IMAGES_PLACEHOLDERS, type PublicEnv, type RouteLoaderArgs, type WeaverseArticle, type WeaverseBlog, WeaverseClient, type WeaverseClientArgs, type WeaverseCollection, WeaverseHydrogen, WeaverseHydrogenItem, type WeaverseHydrogenParams, WeaverseHydrogenRoot, type WeaverseI18n, type WeaverseInternal, type WeaverseLoaderData, type WeaverseLoaderRequestInfo, type WeaverseMetaObject, type WeaverseProduct, type WeaverseProjectConfigs, type WeaverseStudioQueries, getSelectedProductOptions, registerComponent, useThemeSettings, withWeaverse };
|
package/dist/index.js
CHANGED
|
@@ -6,6 +6,7 @@ var react$1 = require('react');
|
|
|
6
6
|
var reactErrorBoundary = require('react-error-boundary');
|
|
7
7
|
var reactRouter = require('react-router');
|
|
8
8
|
var jsxRuntime = require('react/jsx-runtime');
|
|
9
|
+
var schema$1 = require('@weaverse/schema');
|
|
9
10
|
|
|
10
11
|
var __defProp = Object.defineProperty;
|
|
11
12
|
var __export = (target, all) => {
|
|
@@ -658,8 +659,6 @@ var WeaverseClient = class {
|
|
|
658
659
|
return item;
|
|
659
660
|
};
|
|
660
661
|
};
|
|
661
|
-
|
|
662
|
-
// src/index.ts
|
|
663
662
|
function getSelectedProductOptions(request) {
|
|
664
663
|
let options = hydrogen.getSelectedProductOptions(request);
|
|
665
664
|
return options.filter(
|
|
@@ -731,5 +730,11 @@ exports.getSelectedProductOptions = getSelectedProductOptions;
|
|
|
731
730
|
exports.registerComponent = registerComponent;
|
|
732
731
|
exports.useThemeSettings = useThemeSettings;
|
|
733
732
|
exports.withWeaverse = withWeaverse;
|
|
733
|
+
Object.keys(schema$1).forEach(function (k) {
|
|
734
|
+
if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
|
|
735
|
+
enumerable: true,
|
|
736
|
+
get: function () { return schema$1[k]; }
|
|
737
|
+
});
|
|
738
|
+
});
|
|
734
739
|
//# sourceMappingURL=index.js.map
|
|
735
740
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/main.tsx","../src/components/index.ts","../src/utils/index.ts","../src/utils/use-theme-settings-store.ts","../src/utils/use-studio.ts","../src/WeaverseHydrogenRoot.tsx","../src/weaverse-client.ts","../src/index.ts"],"names":["jsx","schema","type","children","data","EventEmitter","isBrowser","useRouteLoaderData","useRevalidator","useNavigation","useLocation","useNavigate","useEffect","loadScript","WeaverseItemStore","Weaverse","memo","jsxs","Fragment","WeaverseRoot","useLoaderData","ErrorBoundary","Suspense","Await","createContext","useSafeExternalStore","createWithCache","generateCacheControlHeader","res","hydrogen_getSelectedProductOptions"],"mappings":"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","file":"index.js","sourcesContent":["import type { HTMLAttributes } from 'react'\nimport type { HydrogenComponentProps, HydrogenComponentSchema } from '~/types'\n\n/*\n Main is the default Weaverse component that is used to render the main content.\n This component wraps all the sections/components inside a Weaverse page.\n*/\nfunction Main(props: HydrogenComponentProps & HTMLAttributes<HTMLDivElement>) {\n let { children, dangerouslySetInnerHTML, ...rest } = props\n\n return (\n <div\n {...rest}\n // biome-ignore lint/correctness/noChildrenProp: <explanation>\n children={children}\n // biome-ignore lint/security/noDangerouslySetInnerHtmlWithChildren: <explanation>\n dangerouslySetInnerHTML={children ? undefined : dangerouslySetInnerHTML}\n />\n )\n}\n\nexport default Main\n\nexport let schema: HydrogenComponentSchema = {\n type: 'main',\n title: 'Main',\n settings: [],\n}\n","import type { HydrogenComponent } from '~/types'\nimport * as Main from './main'\n\nexport let defaultComponents: HydrogenComponent[] = [Main]\n","import type { HydrogenEnv } from '@shopify/hydrogen'\nimport type {\n HydrogenComponent,\n HydrogenComponentSchema,\n HydrogenThemeSchema,\n WeaverseLoaderData,\n WeaverseProjectConfigs,\n WeaverseStudioQueries,\n} from '../types'\n\n// Track warned types to avoid spam\nlet warnedTypes = new Set<string>()\n\nfunction logOnce(type: string, message: string) {\n if (!warnedTypes.has(type)) {\n console.warn(message)\n warnedTypes.add(type)\n }\n}\n\nfunction deepMergeArrays<T>(target: T[], source: T[]): T[] {\n return [...target, ...source]\n}\n\nfunction mergeInspectorSettings(\n settings: any[],\n inspector: any[],\n type: string,\n): any[] {\n if (!inspector?.length) return settings\n if (!settings?.length) return inspector\n\n // Log collision notice\n console.info(\n `Schema \"${type}\": Both 'settings' and 'inspector' found. Using 'settings' with 'inspector' as fallback.`,\n )\n\n return deepMergeArrays(settings, inspector)\n}\n\nexport function getRequestQueries<T = Record<string, string | boolean>>(\n request: Request,\n) {\n let url = new URL(request.url)\n return Array.from(url.searchParams.entries()).reduce(\n (q: Record<string, unknown>, [k, v]) => {\n q[k] = v === 'true' ? true : v === 'false' ? false : v\n return q\n },\n {},\n ) as T\n}\n\nexport function getWeaverseConfigs(\n request: Request,\n env: HydrogenEnv,\n): WeaverseProjectConfigs {\n let queries = getRequestQueries<WeaverseStudioQueries>(request)\n let {\n WEAVERSE_PROJECT_ID,\n WEAVERSE_API_KEY,\n WEAVERSE_HOST,\n PUBLIC_STORE_DOMAIN,\n PUBLIC_STOREFRONT_API_TOKEN,\n } = env || {}\n let envFromProcess = (typeof process !== 'undefined' && process.env) || {}\n let {\n weaverseProjectId,\n weaverseHost,\n isDesignMode,\n isPreviewMode,\n sectionType,\n weaverseVersion,\n weaverseApiKey,\n } = queries\n return {\n projectId:\n weaverseProjectId ||\n WEAVERSE_PROJECT_ID ||\n envFromProcess.WEAVERSE_PROJECT_ID ||\n '',\n weaverseHost:\n weaverseHost ||\n WEAVERSE_HOST ||\n envFromProcess.WEAVERSE_HOST ||\n 'https://studio.weaverse.io',\n weaverseApiKey:\n weaverseApiKey ||\n WEAVERSE_API_KEY ||\n envFromProcess.WEAVERSE_API_KEY ||\n '',\n weaverseVersion: weaverseVersion || '',\n isDesignMode: isDesignMode || false,\n isPreviewMode: isPreviewMode || false,\n sectionType: sectionType || '',\n publicEnv: {\n PUBLIC_STORE_DOMAIN: PUBLIC_STORE_DOMAIN || '',\n PUBLIC_STOREFRONT_API_TOKEN: PUBLIC_STOREFRONT_API_TOKEN || '',\n },\n }\n}\n\nexport function generateDataFromSchema(\n schema: HydrogenComponentSchema | HydrogenThemeSchema,\n) {\n let data: Record<string, any> = {}\n\n // Handle migration from inspector to settings\n let inspectorGroups: any[] = []\n\n // Type guard to check if it's a component schema\n const isComponentSchema = (\n s: HydrogenComponentSchema | HydrogenThemeSchema,\n ): s is HydrogenComponentSchema => {\n return 'type' in s && typeof s.type === 'string'\n }\n\n if (isComponentSchema(schema)) {\n // Handle HydrogenComponentSchema\n if (schema.settings) {\n inspectorGroups = schema.settings\n }\n\n if (schema.inspector) {\n if (schema.settings?.length) {\n // Both exist - merge with settings taking priority\n inspectorGroups = mergeInspectorSettings(\n schema.settings,\n schema.inspector,\n schema.type || 'unknown',\n )\n } else {\n // Only inspector exists - use it but warn about deprecation\n inspectorGroups = schema.inspector\n if (schema.type) {\n logOnce(\n schema.type,\n `⚠️ Schema \"${schema.type}\": The 'inspector' property is deprecated. Please use 'settings' instead.`,\n )\n }\n }\n }\n } else {\n // Handle HydrogenThemeSchema\n if (schema.settings) {\n inspectorGroups = schema.settings\n }\n\n if (schema.inspector) {\n if (schema.settings?.length) {\n // Both exist - merge with settings taking priority\n inspectorGroups = mergeInspectorSettings(\n schema.settings,\n schema.inspector,\n 'Theme Schema',\n )\n } else {\n // Only inspector exists - use it but warn about deprecation\n inspectorGroups = schema.inspector\n logOnce(\n 'ThemeSchema',\n `⚠️ Theme Schema: The 'inspector' property is deprecated. Please use 'settings' instead.`,\n )\n }\n }\n }\n\n if (inspectorGroups?.length) {\n for (let group of inspectorGroups) {\n for (let input of group.inputs) {\n let { name, defaultValue } = input\n if (name && defaultValue !== null && defaultValue !== undefined) {\n data[name] = defaultValue\n }\n }\n }\n }\n return data\n}\n\nfunction recursivelyAddDataItem(\n type: string,\n components: HydrogenComponent<any>[],\n items: any[],\n initData?: object,\n) {\n let component = components.find((c) => c.schema.type === type)\n if (!component) {\n return\n }\n let childIds = []\n let id = crypto.randomUUID()\n let { children, ...data } = component.schema?.presets || {}\n if (children) {\n for (let c of children) {\n let { type, children, ...data } = c\n let childId = recursivelyAddDataItem(type, components, items, data)\n childIds.push({ id: childId })\n }\n }\n items.push({\n data: { ...data, ...initData },\n id,\n type,\n children: childIds,\n })\n return id\n}\n\nexport function getPreviewData(\n type: string,\n components: HydrogenComponent[],\n weaverseHost: string,\n) {\n let items = []\n return {\n project: { id: 'x', weaverseShopId: 'shop-id', name: 'Section Preview' },\n configs: {\n projectId: 'x',\n weaverseHost,\n isDesignMode: false,\n isPreviewMode: true,\n requestInfo: {\n i18n: {\n label: 'United States (USD $)',\n language: 'EN',\n country: 'US',\n currency: 'USD',\n pathPrefix: '',\n },\n queries: {},\n pathname: '/',\n search: '',\n },\n },\n page: {\n id: '0',\n name: 'Preview section',\n rootId: '1',\n items: [\n {\n data: {},\n id: '1',\n type: 'main',\n children: [{ id: recursivelyAddDataItem(type, components, items) }],\n },\n ...items,\n ],\n },\n } as unknown as WeaverseLoaderData\n}\n","import { EventEmitter, isBrowser } from '@weaverse/react'\nimport { useRouteLoaderData } from 'react-router'\nimport type {\n HydrogenThemeSchema,\n HydrogenThemeSettings,\n PublicEnv,\n} from '~/types'\n\ntype WeaverseThemeData = {\n theme: HydrogenThemeSettings\n schema?: HydrogenThemeSchema\n publicEnv?: PublicEnv\n}\n\nexport class ThemeSettingsStore extends EventEmitter {\n settings: HydrogenThemeSettings = {}\n schema?: HydrogenThemeSchema\n publicEnv?: PublicEnv\n\n constructor(data: WeaverseThemeData) {\n super()\n let { theme, schema, publicEnv } = data || {}\n this.settings = { ...theme }\n this.schema = schema\n this.publicEnv = publicEnv\n if (isBrowser) {\n window.__weaverseThemeSettingsStore = this\n }\n }\n\n updateThemeSettings = (newSettings: HydrogenThemeSettings) => {\n this.settings = {\n ...this.settings,\n ...newSettings,\n }\n this.emit(this.settings)\n }\n\n getSnapshot = () => {\n return this.settings\n }\n\n getServerSnapshot = () => {\n return this.settings\n }\n}\n\nexport function useThemeSettingsStore() {\n let data = useRouteLoaderData('root') as { weaverseTheme: WeaverseThemeData }\n if (isBrowser && window.__weaverseThemeSettingsStore) {\n return window.__weaverseThemeSettingsStore\n }\n return new ThemeSettingsStore(data?.weaverseTheme)\n}\n","import { loadScript } from '@weaverse/react'\nimport { useEffect } from 'react'\nimport {\n useLocation,\n useNavigate,\n useNavigation,\n useRevalidator,\n} from 'react-router'\nimport type { WeaverseHydrogen } from '~/index'\nimport { useThemeSettingsStore } from './use-theme-settings-store'\n\nexport function useStudio(weaverse: WeaverseHydrogen) {\n let { revalidate } = useRevalidator()\n let navigation = useNavigation()\n let { pathname, search } = useLocation()\n let navigate = useNavigate()\n let themeSettingsStore = useThemeSettingsStore()\n let { isDesignMode, weaverseHost, weaverseVersion, isPreviewMode } = weaverse\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>\n useEffect(() => {\n if (navigation.state === 'idle') {\n if (isPreviewMode) {\n let previewSrc = `${weaverseHost}/static/studio/hydrogen/preview.js?v=${weaverseVersion}`\n loadScript(previewSrc).catch(console.error)\n } else if (isDesignMode) {\n weaverse.internal = {\n ...weaverse.internal,\n navigate,\n revalidate,\n themeSettingsStore,\n }\n let studioSrc = `${weaverseHost}/static/studio/hydrogen/index.js?v=${weaverseVersion}`\n loadScript(studioSrc)\n .then(() => {\n window.weaverseStudio?.init(weaverse)\n })\n .catch(console.error)\n }\n }\n }, [pathname, search, navigation.state])\n usePixel(weaverse)\n}\n\nexport function usePixel(context: WeaverseHydrogen) {\n let { projectId, pageId, weaverseHost, isDesignMode } = context\n // biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>\n useEffect(() => {\n if (!projectId || !pageId || !weaverseHost || isDesignMode) return\n let url = `${weaverseHost}/api/public/px`\n let img = new Image()\n img.onload = () => img.remove()\n img.src = `${url}?projectId=${projectId}&pageId=${pageId}`\n }, [])\n}\n","import {\n isBrowser,\n type PlatformTypeEnum,\n useSafeExternalStore,\n Weaverse,\n WeaverseItemStore,\n WeaverseRoot,\n} from '@weaverse/react'\nimport {\n type ComponentType,\n createContext,\n type JSX,\n memo,\n Suspense,\n} from 'react'\nimport { ErrorBoundary } from 'react-error-boundary'\nimport { Await, useLoaderData } from 'react-router'\nimport { defaultComponents } from '~/components'\nimport type {\n HydrogenComponentData,\n HydrogenElement,\n HydrogenPageData,\n HydrogenThemeSettings,\n WeaverseInternal,\n WeaverseLoaderRequestInfo,\n} from './index'\nimport type {\n HydrogenComponent,\n WeaverseHydrogenParams,\n WeaverseLoaderData,\n} from './types'\nimport { generateDataFromSchema } from './utils'\nimport { useStudio } from './utils/use-studio'\nimport { useThemeSettingsStore } from './utils/use-theme-settings-store'\n\nexport class WeaverseHydrogenItem extends WeaverseItemStore {\n declare weaverse: WeaverseHydrogen\n\n constructor(initialData: HydrogenComponentData, weaverse: WeaverseHydrogen) {\n super(initialData, weaverse)\n let { data, ...rest } = initialData\n if (!this.Element?.schema) {\n console.error('Element is missing schema or not found!')\n return\n }\n let schemaData = generateDataFromSchema(this.Element.schema)\n Object.assign(this._store, schemaData, data, rest)\n }\n\n get Element(): HydrogenElement {\n return super.Element\n }\n}\n\nWeaverse.ItemConstructor = WeaverseHydrogenItem\n\nexport class WeaverseHydrogen extends Weaverse {\n platformType: PlatformTypeEnum = 'shopify-hydrogen'\n pageId: string\n internal: Partial<WeaverseInternal>\n requestInfo: WeaverseLoaderRequestInfo\n declare ItemConstructor: typeof WeaverseHydrogenItem\n declare data: HydrogenPageData\n static itemInstances: Map<string, WeaverseHydrogenItem>\n static elementRegistry: Map<string, HydrogenElement>\n\n constructor(params: WeaverseHydrogenParams) {\n let { internal, pageId, requestInfo, ...coreParams } = params\n super({ ...coreParams })\n this.internal = internal\n this.pageId = pageId\n this.requestInfo = requestInfo\n }\n}\n\nfunction createWeaverseInstance(\n params: WeaverseHydrogenParams,\n): WeaverseHydrogen {\n if (isBrowser) {\n // Check if the weaverse instance already exists in the window object\n window.__weaverses = window.__weaverses || {}\n let weaverse = window.__weaverses[params.pageId]\n // If the weaverse instance does not exist, or the pathname or search has changed, create a new instance\n if (\n !weaverse ||\n weaverse?.requestInfo?.pathname !== params.requestInfo.pathname ||\n weaverse?.requestInfo?.search !== params.requestInfo.search\n ) {\n weaverse = new WeaverseHydrogen(params)\n window.__weaverses[params.pageId] = weaverse\n }\n if (weaverse?.isDesignMode) {\n weaverse.requestInfo = params.requestInfo\n window.weaverseStudio?.refreshStudio(params)\n }\n return weaverse\n }\n return new WeaverseHydrogen(params)\n}\n\nlet StudioBridge = memo(({ context }: { context: WeaverseHydrogen }) => {\n useStudio(context)\n return null\n})\n\nfunction RenderRoot(props: {\n data: WeaverseLoaderData\n components: HydrogenComponent[]\n}) {\n let { data, components } = props\n for (let comp of [...components, ...defaultComponents]) {\n comp?.schema?.type &&\n registerComponent({\n type: comp?.schema.type,\n Component: comp.default,\n schema: comp.schema,\n loader: comp.loader,\n })\n }\n let { page, configs, project, pageAssignment } = data || {}\n let weaverse = createWeaverseInstance({\n ...configs,\n data: page,\n pageId: page?.id,\n internal: { project, pageAssignment },\n })\n return (\n <>\n <WeaverseRoot context={weaverse} />\n <StudioBridge context={weaverse} />\n </>\n )\n}\n\nexport function registerComponent(element: HydrogenElement) {\n WeaverseHydrogen.registerElement(element)\n}\n\nexport let WeaverseHydrogenRoot = memo(\n ({\n components,\n errorComponent: ErrorComponent = ({ error }) => (\n <div>{error?.message || 'An unexpected error occurred'}</div>\n ),\n }: {\n components: HydrogenComponent[]\n errorComponent?: React.FC<{ error }>\n }) => {\n let loaderData = useLoaderData()\n // @ts-ignore\n let data = loaderData?.weaverseData as\n | WeaverseLoaderData\n | Promise<WeaverseLoaderData>\n\n if (data) {\n if (data instanceof Promise) {\n return (\n <ErrorBoundary fallbackRender={ErrorComponent as any}>\n <Suspense>\n <Await resolve={data}>\n {(resolvedData) => (\n <RenderRoot data={resolvedData} components={components} />\n )}\n </Await>\n </Suspense>\n </ErrorBoundary>\n )\n }\n return <RenderRoot data={data} components={components} />\n }\n return (\n <ErrorComponent\n error={{ message: 'No Weaverse data return from route loader!' }}\n />\n )\n },\n)\n\nlet ThemeSettingsProvider = createContext<HydrogenThemeSettings | null>(null)\nThemeSettingsProvider.displayName = 'WeaverseThemeSettingsProvider'\n\nexport function withWeaverse(Component: ComponentType<any>) {\n return (props: JSX.IntrinsicAttributes) => {\n let { settings } = useThemeSettingsStore()\n return (\n <ThemeSettingsProvider.Provider value={settings}>\n <Component {...props} />\n </ThemeSettingsProvider.Provider>\n )\n }\n}\n\nexport function useThemeSettings<T = HydrogenThemeSettings>() {\n let themeSettingsStore = useThemeSettingsStore()\n let settings = useSafeExternalStore(\n themeSettingsStore.subscribe,\n themeSettingsStore.getSnapshot,\n themeSettingsStore.getServerSnapshot,\n )\n return settings as T\n}\n","import {\n createWithCache,\n generateCacheControlHeader,\n type HydrogenEnv,\n type I18nBase,\n} from '@shopify/hydrogen'\nimport type {\n AllCacheOptions,\n FetchProjectPayload,\n FetchProjectRequestBody,\n HydrogenComponentData,\n HydrogenPageData,\n PageType,\n WeaverseClientArgs,\n WeaverseLoaderData,\n WeaverseProjectConfigs,\n WeaverseStudioQueries,\n} from './types'\nimport {\n generateDataFromSchema,\n getPreviewData,\n getRequestQueries,\n getWeaverseConfigs,\n} from './utils'\n\n// Constants at the top\nconst API_PATH = 'api/public'\nconst DEFAULT_CACHE_STRATEGY = {\n maxAge: 10,\n sMaxAge: 10,\n staleWhileRevalidate: 82800,\n staleIfError: 82800,\n}\n\nexport class WeaverseClient {\n public API = API_PATH\n public basePageConfigs: Omit<WeaverseProjectConfigs, 'requestInfo'>\n public basePageRequestBody: Omit<FetchProjectRequestBody, 'url'>\n public configs: WeaverseProjectConfigs\n public withCache: ReturnType<typeof createWithCache>\n\n // Required dependencies\n public request: WeaverseClientArgs['request']\n public storefront: WeaverseClientArgs['storefront']\n public components: WeaverseClientArgs['components']\n public themeSchema: WeaverseClientArgs['themeSchema']\n public env: WeaverseClientArgs['env']\n public cache: WeaverseClientArgs['cache']\n public waitUntil: WeaverseClientArgs['waitUntil']\n\n constructor(args: WeaverseClientArgs) {\n // Destructure and initialize all dependencies\n const {\n env,\n storefront,\n components,\n cache,\n waitUntil,\n themeSchema,\n request,\n } = args\n\n // Initialize required properties\n this.request = request\n this.storefront = storefront\n this.components = components\n this.themeSchema = themeSchema\n this.env = env\n this.cache = cache\n this.waitUntil = waitUntil\n this.withCache = createWithCache({ cache, waitUntil, request })\n\n // Initialize configs\n this.configs = getWeaverseConfigs(request, env as HydrogenEnv)\n\n // Initialize base configurations\n this.basePageConfigs = {\n projectId: this.configs.projectId,\n weaverseHost: this.configs.weaverseHost,\n weaverseApiKey: this.configs.weaverseApiKey,\n weaverseVersion: this.configs.weaverseVersion,\n isDesignMode: this.configs.isDesignMode,\n }\n\n this.basePageRequestBody = {\n isDesignMode: this.configs.isDesignMode,\n i18n: storefront.i18n,\n projectId: this.configs.projectId,\n }\n }\n\n // Helper method for direct fetching in design mode\n private directFetch = async <T>(\n url: string,\n options: RequestInit = {},\n ): Promise<T> => {\n try {\n let res = await fetch(url, options)\n if (!res.ok) {\n let error = await res.text()\n throw new Error(`${res.status} ${res.statusText} ${error}`)\n }\n return res.json()\n } catch (err) {\n throw new Error(`Failed to fetch data from ${url}`, { cause: err })\n }\n }\n\n public fetchWithCache = async <T extends object>(\n url: string,\n options: RequestInit & { strategy?: AllCacheOptions } = {},\n ): Promise<T> => {\n let {\n strategy = this.storefront.CacheCustom(DEFAULT_CACHE_STRATEGY),\n ...reqInit\n } = options\n let cacheKey = [url, options.body]\n\n if (this.configs.isDesignMode) {\n return this.directFetch<T>(url, reqInit)\n }\n\n return this.withCache.run(\n {\n cacheKey,\n cacheStrategy: strategy,\n shouldCacheResult: (result: any) => result?.data,\n },\n async () => {\n return this.directFetch<T>(url, {\n ...reqInit,\n headers: {\n 'Cache-Control': generateCacheControlHeader(strategy),\n ...reqInit.headers,\n },\n })\n },\n ) as Promise<T>\n }\n\n loadThemeSettings = async (strategy?: AllCacheOptions) => {\n let defaultThemeSettings = generateDataFromSchema(this.themeSchema)\n try {\n let { API, configs } = this\n let { weaverseHost, projectId, isDesignMode } = configs\n if (!projectId) {\n throw new Error('Missing Weaverse projectId!')\n }\n let url = `${weaverseHost}/${API}/project_configs`\n let res: any\n let body = JSON.stringify({ isDesignMode, projectId })\n if (isDesignMode) {\n res = await fetch(url, { method: 'POST', body }).then((res) =>\n res.json(),\n )\n } else {\n res = await this.fetchWithCache(url, {\n method: 'POST',\n strategy,\n body,\n })\n }\n let data: any = res || {}\n if (this.themeSchema?.inspector) {\n data.theme = {\n ...defaultThemeSettings,\n ...data.theme,\n }\n }\n if (this.configs.isDesignMode) {\n data = {\n ...data,\n schema: this.themeSchema,\n publicEnv: this.configs.publicEnv,\n }\n }\n return data\n } catch (e) {\n console.info('Unable to load theme settings', e)\n return defaultThemeSettings\n }\n }\n\n generateFallbackPage = (message: string): HydrogenPageData => {\n let rootId = crypto.randomUUID()\n return {\n id: `fallback_page_${Date.now()}`,\n rootId,\n name: 'Default Page',\n items: [\n {\n type: 'main',\n id: rootId,\n data: { dangerouslySetInnerHTML: { __html: message } },\n },\n ],\n }\n }\n\n loadPage = async (\n params: {\n type?: PageType\n locale?: string\n handle?: string\n strategy?: AllCacheOptions\n } = {},\n ): Promise<WeaverseLoaderData | null> => {\n try {\n let { request, storefront, basePageRequestBody, basePageConfigs } = this\n let {\n projectId,\n isDesignMode,\n weaverseHost,\n isPreviewMode,\n sectionType,\n } = this.configs\n\n if (isPreviewMode) {\n return getPreviewData(sectionType, this.components, weaverseHost)\n }\n\n if (!projectId) {\n throw new Error('Missing Weaverse projectId!')\n }\n\n let { strategy, ...pageLoadParams } = params\n let body: {\n projectId: string\n url: string\n i18n?: I18nBase\n params?: {\n type?: PageType\n locale?: string\n handle?: string\n }\n isDesignMode?: boolean\n } = {\n ...basePageRequestBody,\n params: pageLoadParams,\n url: request.url,\n }\n\n let reqInit: RequestInit = {\n method: 'POST',\n body: JSON.stringify(body),\n }\n let url = `${weaverseHost}/${this.API}/project`\n let payload: FetchProjectPayload\n\n if (isDesignMode) {\n payload = await fetch(url, reqInit).then((res) => res.json())\n } else {\n payload = await this.fetchWithCache(url, {\n ...reqInit,\n strategy,\n })\n }\n\n if (payload?.error) {\n throw new Error(payload?.error)\n }\n let { page, project, pageAssignment } = payload\n if (!project) {\n console.error('Weaverse project not found. Id:', projectId)\n project = {\n id: projectId,\n name: 'Weaverse project not found.',\n weaverseShopId: '',\n }\n page = this.generateFallbackPage('Weaverse project not found.')\n }\n if (!page) {\n page = this.generateFallbackPage('Please add new section to start.')\n }\n if (page?.items) {\n let items = page.items\n page.items = await Promise.all(items.map(this.execComponentLoader))\n }\n return {\n page,\n project,\n pageAssignment,\n configs: {\n ...basePageConfigs,\n requestInfo: {\n i18n: storefront.i18n,\n queries: getRequestQueries<WeaverseStudioQueries>(request),\n pathname: new URL(request.url).pathname,\n search: new URL(request.url).search,\n },\n },\n }\n } catch (e) {\n // biome-ignore lint/style/noUnusedTemplateLiteral: <explanation>\n console.error(`❌ Page load failed.`, e)\n return null\n }\n }\n\n execComponentLoader = async (item: HydrogenComponentData) => {\n let { data = {}, type, id } = item\n let component = this.components.find(({ schema }) => schema?.type === type)\n let loader = component?.loader\n if (typeof loader === 'function') {\n try {\n return {\n ...item,\n loaderData: await Promise.resolve(\n loader({\n data: { ...generateDataFromSchema(component.schema), ...data },\n weaverse: this,\n }),\n ),\n }\n } catch (e) {\n console.warn('❌ Item loader run failed.', type, id, e)\n return item\n }\n }\n return item\n }\n}\n","import { getSelectedProductOptions as hydrogen_getSelectedProductOptions } from '@shopify/hydrogen'\nimport type { SelectedOptionInput } from '@shopify/hydrogen/storefront-api-types'\nimport {\n isBrowser,\n isIframe,\n useChildInstances,\n useItemInstance,\n useParentInstance,\n useWeaverse,\n} from '@weaverse/react'\n\nexport function getSelectedProductOptions(\n request: Request,\n): SelectedOptionInput[] {\n let options = hydrogen_getSelectedProductOptions(request)\n return options.filter(\n ({ name }) => name !== 'isDesignMode' && !name.startsWith('weaverse'),\n )\n}\n\nexport const IMAGES_PLACEHOLDERS = {\n logo_white:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-logo-w-600x200.svg',\n logo_black:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-logo-k-600x200.svg',\n image:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-image-1024x1024.svg',\n banner_1:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-lifestyle-1-1800x900.svg',\n banner_2:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-lifestyle-2-1800x900.svg',\n collection_1:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-collection-hats-1024x1024.svg',\n collection_2:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-collection-shoes-1024x1024.svg',\n collection_3:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-collection-glasses-1024x1024.svg',\n collection_4:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-collection-lamps-1024x1024.svg',\n collection_5:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-collection-bags-1024x1024.svg',\n collection_6:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-collection-watches-1024x1024.svg',\n product_1:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-watch-3-1024x1024.svg',\n product_2:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-bag-2-1024x1024.svg',\n product_3:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-shoe-1-1024x1024.svg',\n product_4:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-lamp-2-1024x1024.svg',\n product_5:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-glasses-1-1024x1024.svg',\n product_6:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-lamp-1-1024x1024.svg',\n product_7:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-glasses-2-1024x1024.svg',\n product_8:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-hat-3-1024x1024.svg',\n product_9:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-bag-1-1024x1024.svg',\n product_10:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-shoe-2-1024x1024.svg',\n product_11:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-hat-2-1024x1024.svg',\n product_12:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-glasses-3-1024x1024.svg',\n product_13:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-shoe-3-1024x1024.svg',\n product_14:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-bag-3-1024x1024.svg',\n product_15:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-hat-1-1024x1024.svg',\n product_16:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-lamp-3-1024x1024.svg',\n product_17:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-watch-1-1024x1024.svg',\n product_18:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-watch-2-1024x1024.svg',\n}\n\nexport {\n isBrowser,\n isIframe,\n useChildInstances,\n useItemInstance,\n useParentInstance,\n useWeaverse,\n}\nexport * from './types'\nexport * from './WeaverseHydrogenRoot'\nexport * from './weaverse-client'\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/main.tsx","../src/components/index.ts","../src/utils/index.ts","../src/utils/use-theme-settings-store.ts","../src/utils/use-studio.ts","../src/WeaverseHydrogenRoot.tsx","../src/weaverse-client.ts","../src/index.ts"],"names":["jsx","schema","type","children","data","EventEmitter","isBrowser","useRouteLoaderData","useRevalidator","useNavigation","useLocation","useNavigate","useEffect","loadScript","WeaverseItemStore","Weaverse","memo","jsxs","Fragment","WeaverseRoot","useLoaderData","ErrorBoundary","Suspense","Await","createContext","useSafeExternalStore","createWithCache","generateCacheControlHeader","res","hydrogen_getSelectedProductOptions"],"mappings":"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","file":"index.js","sourcesContent":["import type { HTMLAttributes } from 'react'\nimport type { HydrogenComponentProps, HydrogenComponentSchema } from '~/types'\n\n/*\n Main is the default Weaverse component that is used to render the main content.\n This component wraps all the sections/components inside a Weaverse page.\n*/\nfunction Main(props: HydrogenComponentProps & HTMLAttributes<HTMLDivElement>) {\n let { children, dangerouslySetInnerHTML, ...rest } = props\n\n return (\n <div\n {...rest}\n // biome-ignore lint/correctness/noChildrenProp: <explanation>\n children={children}\n // biome-ignore lint/security/noDangerouslySetInnerHtmlWithChildren: <explanation>\n dangerouslySetInnerHTML={children ? undefined : dangerouslySetInnerHTML}\n />\n )\n}\n\nexport default Main\n\nexport let schema: HydrogenComponentSchema = {\n type: 'main',\n title: 'Main',\n settings: [],\n}\n","import type { HydrogenComponent } from '~/types'\nimport * as Main from './main'\n\nexport let defaultComponents: HydrogenComponent[] = [Main]\n","import type { HydrogenEnv } from '@shopify/hydrogen'\nimport type {\n HydrogenComponent,\n HydrogenComponentSchema,\n HydrogenThemeSchema,\n WeaverseLoaderData,\n WeaverseProjectConfigs,\n WeaverseStudioQueries,\n} from '../types'\n\n// Track warned types to avoid spam\nlet warnedTypes = new Set<string>()\n\nfunction logOnce(type: string, message: string) {\n if (!warnedTypes.has(type)) {\n console.warn(message)\n warnedTypes.add(type)\n }\n}\n\nfunction deepMergeArrays<T>(target: T[], source: T[]): T[] {\n return [...target, ...source]\n}\n\nfunction mergeInspectorSettings(\n settings: any[],\n inspector: any[],\n type: string,\n): any[] {\n if (!inspector?.length) return settings\n if (!settings?.length) return inspector\n\n // Log collision notice\n console.info(\n `Schema \"${type}\": Both 'settings' and 'inspector' found. Using 'settings' with 'inspector' as fallback.`,\n )\n\n return deepMergeArrays(settings, inspector)\n}\n\nexport function getRequestQueries<T = Record<string, string | boolean>>(\n request: Request,\n) {\n let url = new URL(request.url)\n return Array.from(url.searchParams.entries()).reduce(\n (q: Record<string, unknown>, [k, v]) => {\n q[k] = v === 'true' ? true : v === 'false' ? false : v\n return q\n },\n {},\n ) as T\n}\n\nexport function getWeaverseConfigs(\n request: Request,\n env: HydrogenEnv,\n): WeaverseProjectConfigs {\n let queries = getRequestQueries<WeaverseStudioQueries>(request)\n let {\n WEAVERSE_PROJECT_ID,\n WEAVERSE_API_KEY,\n WEAVERSE_HOST,\n PUBLIC_STORE_DOMAIN,\n PUBLIC_STOREFRONT_API_TOKEN,\n } = env || {}\n let envFromProcess = (typeof process !== 'undefined' && process.env) || {}\n let {\n weaverseProjectId,\n weaverseHost,\n isDesignMode,\n isPreviewMode,\n sectionType,\n weaverseVersion,\n weaverseApiKey,\n } = queries\n return {\n projectId:\n weaverseProjectId ||\n WEAVERSE_PROJECT_ID ||\n envFromProcess.WEAVERSE_PROJECT_ID ||\n '',\n weaverseHost:\n weaverseHost ||\n WEAVERSE_HOST ||\n envFromProcess.WEAVERSE_HOST ||\n 'https://studio.weaverse.io',\n weaverseApiKey:\n weaverseApiKey ||\n WEAVERSE_API_KEY ||\n envFromProcess.WEAVERSE_API_KEY ||\n '',\n weaverseVersion: weaverseVersion || '',\n isDesignMode: isDesignMode || false,\n isPreviewMode: isPreviewMode || false,\n sectionType: sectionType || '',\n publicEnv: {\n PUBLIC_STORE_DOMAIN: PUBLIC_STORE_DOMAIN || '',\n PUBLIC_STOREFRONT_API_TOKEN: PUBLIC_STOREFRONT_API_TOKEN || '',\n },\n }\n}\n\nexport function generateDataFromSchema(\n schema: HydrogenComponentSchema | HydrogenThemeSchema,\n) {\n let data: Record<string, any> = {}\n\n // Handle migration from inspector to settings\n let inspectorGroups: any[] = []\n\n // Type guard to check if it's a component schema\n const isComponentSchema = (\n s: HydrogenComponentSchema | HydrogenThemeSchema,\n ): s is HydrogenComponentSchema => {\n return 'type' in s && typeof s.type === 'string'\n }\n\n if (isComponentSchema(schema)) {\n // Handle HydrogenComponentSchema\n if (schema.settings) {\n inspectorGroups = schema.settings\n }\n\n if (schema.inspector) {\n if (schema.settings?.length) {\n // Both exist - merge with settings taking priority\n inspectorGroups = mergeInspectorSettings(\n schema.settings,\n schema.inspector,\n schema.type || 'unknown',\n )\n } else {\n // Only inspector exists - use it but warn about deprecation\n inspectorGroups = schema.inspector\n if (schema.type) {\n logOnce(\n schema.type,\n `⚠️ Schema \"${schema.type}\": The 'inspector' property is deprecated. Please use 'settings' instead.`,\n )\n }\n }\n }\n } else {\n // Handle HydrogenThemeSchema\n if (schema.settings) {\n inspectorGroups = schema.settings\n }\n\n if (schema.inspector) {\n if (schema.settings?.length) {\n // Both exist - merge with settings taking priority\n inspectorGroups = mergeInspectorSettings(\n schema.settings,\n schema.inspector,\n 'Theme Schema',\n )\n } else {\n // Only inspector exists - use it but warn about deprecation\n inspectorGroups = schema.inspector\n logOnce(\n 'ThemeSchema',\n `⚠️ Theme Schema: The 'inspector' property is deprecated. Please use 'settings' instead.`,\n )\n }\n }\n }\n\n if (inspectorGroups?.length) {\n for (let group of inspectorGroups) {\n for (let input of group.inputs) {\n let { name, defaultValue } = input\n if (name && defaultValue !== null && defaultValue !== undefined) {\n data[name] = defaultValue\n }\n }\n }\n }\n return data\n}\n\nfunction recursivelyAddDataItem(\n type: string,\n components: HydrogenComponent<any>[],\n items: any[],\n initData?: object,\n) {\n let component = components.find((c) => c.schema.type === type)\n if (!component) {\n return\n }\n let childIds = []\n let id = crypto.randomUUID()\n let { children, ...data } = component.schema?.presets || {}\n if (children) {\n for (let c of children) {\n let { type, children, ...data } = c\n let childId = recursivelyAddDataItem(type, components, items, data)\n childIds.push({ id: childId })\n }\n }\n items.push({\n data: { ...data, ...initData },\n id,\n type,\n children: childIds,\n })\n return id\n}\n\nexport function getPreviewData(\n type: string,\n components: HydrogenComponent[],\n weaverseHost: string,\n) {\n let items = []\n return {\n project: { id: 'x', weaverseShopId: 'shop-id', name: 'Section Preview' },\n configs: {\n projectId: 'x',\n weaverseHost,\n isDesignMode: false,\n isPreviewMode: true,\n requestInfo: {\n i18n: {\n label: 'United States (USD $)',\n language: 'EN',\n country: 'US',\n currency: 'USD',\n pathPrefix: '',\n },\n queries: {},\n pathname: '/',\n search: '',\n },\n },\n page: {\n id: '0',\n name: 'Preview section',\n rootId: '1',\n items: [\n {\n data: {},\n id: '1',\n type: 'main',\n children: [{ id: recursivelyAddDataItem(type, components, items) }],\n },\n ...items,\n ],\n },\n } as unknown as WeaverseLoaderData\n}\n","import { EventEmitter, isBrowser } from '@weaverse/react'\nimport { useRouteLoaderData } from 'react-router'\nimport type {\n HydrogenThemeSchema,\n HydrogenThemeSettings,\n PublicEnv,\n} from '~/types'\n\ntype WeaverseThemeData = {\n theme: HydrogenThemeSettings\n schema?: HydrogenThemeSchema\n publicEnv?: PublicEnv\n}\n\nexport class ThemeSettingsStore extends EventEmitter {\n settings: HydrogenThemeSettings = {}\n schema?: HydrogenThemeSchema\n publicEnv?: PublicEnv\n\n constructor(data: WeaverseThemeData) {\n super()\n let { theme, schema, publicEnv } = data || {}\n this.settings = { ...theme }\n this.schema = schema\n this.publicEnv = publicEnv\n if (isBrowser) {\n window.__weaverseThemeSettingsStore = this\n }\n }\n\n updateThemeSettings = (newSettings: HydrogenThemeSettings) => {\n this.settings = {\n ...this.settings,\n ...newSettings,\n }\n this.emit(this.settings)\n }\n\n getSnapshot = () => {\n return this.settings\n }\n\n getServerSnapshot = () => {\n return this.settings\n }\n}\n\nexport function useThemeSettingsStore() {\n let data = useRouteLoaderData('root') as { weaverseTheme: WeaverseThemeData }\n if (isBrowser && window.__weaverseThemeSettingsStore) {\n return window.__weaverseThemeSettingsStore\n }\n return new ThemeSettingsStore(data?.weaverseTheme)\n}\n","import { loadScript } from '@weaverse/react'\nimport { useEffect } from 'react'\nimport {\n useLocation,\n useNavigate,\n useNavigation,\n useRevalidator,\n} from 'react-router'\nimport type { WeaverseHydrogen } from '~/index'\nimport { useThemeSettingsStore } from './use-theme-settings-store'\n\nexport function useStudio(weaverse: WeaverseHydrogen) {\n let { revalidate } = useRevalidator()\n let navigation = useNavigation()\n let { pathname, search } = useLocation()\n let navigate = useNavigate()\n let themeSettingsStore = useThemeSettingsStore()\n let { isDesignMode, weaverseHost, weaverseVersion, isPreviewMode } = weaverse\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>\n useEffect(() => {\n if (navigation.state === 'idle') {\n if (isPreviewMode) {\n let previewSrc = `${weaverseHost}/static/studio/hydrogen/preview.js?v=${weaverseVersion}`\n loadScript(previewSrc).catch(console.error)\n } else if (isDesignMode) {\n weaverse.internal = {\n ...weaverse.internal,\n navigate,\n revalidate,\n themeSettingsStore,\n }\n let studioSrc = `${weaverseHost}/static/studio/hydrogen/index.js?v=${weaverseVersion}`\n loadScript(studioSrc)\n .then(() => {\n window.weaverseStudio?.init(weaverse)\n })\n .catch(console.error)\n }\n }\n }, [pathname, search, navigation.state])\n usePixel(weaverse)\n}\n\nexport function usePixel(context: WeaverseHydrogen) {\n let { projectId, pageId, weaverseHost, isDesignMode } = context\n // biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>\n useEffect(() => {\n if (!projectId || !pageId || !weaverseHost || isDesignMode) return\n let url = `${weaverseHost}/api/public/px`\n let img = new Image()\n img.onload = () => img.remove()\n img.src = `${url}?projectId=${projectId}&pageId=${pageId}`\n }, [])\n}\n","import {\n isBrowser,\n type PlatformTypeEnum,\n useSafeExternalStore,\n Weaverse,\n WeaverseItemStore,\n WeaverseRoot,\n} from '@weaverse/react'\nimport {\n type ComponentType,\n createContext,\n type JSX,\n memo,\n Suspense,\n} from 'react'\nimport { ErrorBoundary } from 'react-error-boundary'\nimport { Await, useLoaderData } from 'react-router'\nimport { defaultComponents } from '~/components'\nimport type {\n HydrogenComponentData,\n HydrogenElement,\n HydrogenPageData,\n HydrogenThemeSettings,\n WeaverseInternal,\n WeaverseLoaderRequestInfo,\n} from './index'\nimport type {\n HydrogenComponent,\n WeaverseHydrogenParams,\n WeaverseLoaderData,\n} from './types'\nimport { generateDataFromSchema } from './utils'\nimport { useStudio } from './utils/use-studio'\nimport { useThemeSettingsStore } from './utils/use-theme-settings-store'\n\nexport class WeaverseHydrogenItem extends WeaverseItemStore {\n declare weaverse: WeaverseHydrogen\n\n constructor(initialData: HydrogenComponentData, weaverse: WeaverseHydrogen) {\n super(initialData, weaverse)\n let { data, ...rest } = initialData\n if (!this.Element?.schema) {\n console.error('Element is missing schema or not found!')\n return\n }\n let schemaData = generateDataFromSchema(this.Element.schema)\n Object.assign(this._store, schemaData, data, rest)\n }\n\n get Element(): HydrogenElement {\n return super.Element\n }\n}\n\nWeaverse.ItemConstructor = WeaverseHydrogenItem\n\nexport class WeaverseHydrogen extends Weaverse {\n platformType: PlatformTypeEnum = 'shopify-hydrogen'\n pageId: string\n internal: Partial<WeaverseInternal>\n requestInfo: WeaverseLoaderRequestInfo\n declare ItemConstructor: typeof WeaverseHydrogenItem\n declare data: HydrogenPageData\n static itemInstances: Map<string, WeaverseHydrogenItem>\n static elementRegistry: Map<string, HydrogenElement>\n\n constructor(params: WeaverseHydrogenParams) {\n let { internal, pageId, requestInfo, ...coreParams } = params\n super({ ...coreParams })\n this.internal = internal\n this.pageId = pageId\n this.requestInfo = requestInfo\n }\n}\n\nfunction createWeaverseInstance(\n params: WeaverseHydrogenParams,\n): WeaverseHydrogen {\n if (isBrowser) {\n // Check if the weaverse instance already exists in the window object\n window.__weaverses = window.__weaverses || {}\n let weaverse = window.__weaverses[params.pageId]\n // If the weaverse instance does not exist, or the pathname or search has changed, create a new instance\n if (\n !weaverse ||\n weaverse?.requestInfo?.pathname !== params.requestInfo.pathname ||\n weaverse?.requestInfo?.search !== params.requestInfo.search\n ) {\n weaverse = new WeaverseHydrogen(params)\n window.__weaverses[params.pageId] = weaverse\n }\n if (weaverse?.isDesignMode) {\n weaverse.requestInfo = params.requestInfo\n window.weaverseStudio?.refreshStudio(params)\n }\n return weaverse\n }\n return new WeaverseHydrogen(params)\n}\n\nlet StudioBridge = memo(({ context }: { context: WeaverseHydrogen }) => {\n useStudio(context)\n return null\n})\n\nfunction RenderRoot(props: {\n data: WeaverseLoaderData\n components: HydrogenComponent[]\n}) {\n let { data, components } = props\n for (let comp of [...components, ...defaultComponents]) {\n comp?.schema?.type &&\n registerComponent({\n type: comp?.schema.type,\n Component: comp.default,\n schema: comp.schema,\n loader: comp.loader,\n })\n }\n let { page, configs, project, pageAssignment } = data || {}\n let weaverse = createWeaverseInstance({\n ...configs,\n data: page,\n pageId: page?.id,\n internal: { project, pageAssignment },\n })\n return (\n <>\n <WeaverseRoot context={weaverse} />\n <StudioBridge context={weaverse} />\n </>\n )\n}\n\nexport function registerComponent(element: HydrogenElement) {\n WeaverseHydrogen.registerElement(element)\n}\n\nexport let WeaverseHydrogenRoot = memo(\n ({\n components,\n errorComponent: ErrorComponent = ({ error }) => (\n <div>{error?.message || 'An unexpected error occurred'}</div>\n ),\n }: {\n components: HydrogenComponent[]\n errorComponent?: React.FC<{ error }>\n }) => {\n let loaderData = useLoaderData()\n // @ts-ignore\n let data = loaderData?.weaverseData as\n | WeaverseLoaderData\n | Promise<WeaverseLoaderData>\n\n if (data) {\n if (data instanceof Promise) {\n return (\n <ErrorBoundary fallbackRender={ErrorComponent as any}>\n <Suspense>\n <Await resolve={data}>\n {(resolvedData) => (\n <RenderRoot data={resolvedData} components={components} />\n )}\n </Await>\n </Suspense>\n </ErrorBoundary>\n )\n }\n return <RenderRoot data={data} components={components} />\n }\n return (\n <ErrorComponent\n error={{ message: 'No Weaverse data return from route loader!' }}\n />\n )\n },\n)\n\nlet ThemeSettingsProvider = createContext<HydrogenThemeSettings | null>(null)\nThemeSettingsProvider.displayName = 'WeaverseThemeSettingsProvider'\n\nexport function withWeaverse(Component: ComponentType<any>) {\n return (props: JSX.IntrinsicAttributes) => {\n let { settings } = useThemeSettingsStore()\n return (\n <ThemeSettingsProvider.Provider value={settings}>\n <Component {...props} />\n </ThemeSettingsProvider.Provider>\n )\n }\n}\n\nexport function useThemeSettings<T = HydrogenThemeSettings>() {\n let themeSettingsStore = useThemeSettingsStore()\n let settings = useSafeExternalStore(\n themeSettingsStore.subscribe,\n themeSettingsStore.getSnapshot,\n themeSettingsStore.getServerSnapshot,\n )\n return settings as T\n}\n","import {\n createWithCache,\n generateCacheControlHeader,\n type HydrogenEnv,\n type I18nBase,\n} from '@shopify/hydrogen'\nimport type {\n AllCacheOptions,\n FetchProjectPayload,\n FetchProjectRequestBody,\n HydrogenComponentData,\n HydrogenPageData,\n PageType,\n WeaverseClientArgs,\n WeaverseLoaderData,\n WeaverseProjectConfigs,\n WeaverseStudioQueries,\n} from './types'\nimport {\n generateDataFromSchema,\n getPreviewData,\n getRequestQueries,\n getWeaverseConfigs,\n} from './utils'\n\n// Constants at the top\nconst API_PATH = 'api/public'\nconst DEFAULT_CACHE_STRATEGY = {\n maxAge: 10,\n sMaxAge: 10,\n staleWhileRevalidate: 82800,\n staleIfError: 82800,\n}\n\nexport class WeaverseClient {\n public API = API_PATH\n public basePageConfigs: Omit<WeaverseProjectConfigs, 'requestInfo'>\n public basePageRequestBody: Omit<FetchProjectRequestBody, 'url'>\n public configs: WeaverseProjectConfigs\n public withCache: ReturnType<typeof createWithCache>\n\n // Required dependencies\n public request: WeaverseClientArgs['request']\n public storefront: WeaverseClientArgs['storefront']\n public components: WeaverseClientArgs['components']\n public themeSchema: WeaverseClientArgs['themeSchema']\n public env: WeaverseClientArgs['env']\n public cache: WeaverseClientArgs['cache']\n public waitUntil: WeaverseClientArgs['waitUntil']\n\n constructor(args: WeaverseClientArgs) {\n // Destructure and initialize all dependencies\n const {\n env,\n storefront,\n components,\n cache,\n waitUntil,\n themeSchema,\n request,\n } = args\n\n // Initialize required properties\n this.request = request\n this.storefront = storefront\n this.components = components\n this.themeSchema = themeSchema\n this.env = env\n this.cache = cache\n this.waitUntil = waitUntil\n this.withCache = createWithCache({ cache, waitUntil, request })\n\n // Initialize configs\n this.configs = getWeaverseConfigs(request, env as HydrogenEnv)\n\n // Initialize base configurations\n this.basePageConfigs = {\n projectId: this.configs.projectId,\n weaverseHost: this.configs.weaverseHost,\n weaverseApiKey: this.configs.weaverseApiKey,\n weaverseVersion: this.configs.weaverseVersion,\n isDesignMode: this.configs.isDesignMode,\n }\n\n this.basePageRequestBody = {\n isDesignMode: this.configs.isDesignMode,\n i18n: storefront.i18n,\n projectId: this.configs.projectId,\n }\n }\n\n // Helper method for direct fetching in design mode\n private directFetch = async <T>(\n url: string,\n options: RequestInit = {},\n ): Promise<T> => {\n try {\n let res = await fetch(url, options)\n if (!res.ok) {\n let error = await res.text()\n throw new Error(`${res.status} ${res.statusText} ${error}`)\n }\n return res.json()\n } catch (err) {\n throw new Error(`Failed to fetch data from ${url}`, { cause: err })\n }\n }\n\n public fetchWithCache = async <T extends object>(\n url: string,\n options: RequestInit & { strategy?: AllCacheOptions } = {},\n ): Promise<T> => {\n let {\n strategy = this.storefront.CacheCustom(DEFAULT_CACHE_STRATEGY),\n ...reqInit\n } = options\n let cacheKey = [url, options.body]\n\n if (this.configs.isDesignMode) {\n return this.directFetch<T>(url, reqInit)\n }\n\n return this.withCache.run(\n {\n cacheKey,\n cacheStrategy: strategy,\n shouldCacheResult: (result: any) => result?.data,\n },\n async () => {\n return this.directFetch<T>(url, {\n ...reqInit,\n headers: {\n 'Cache-Control': generateCacheControlHeader(strategy),\n ...reqInit.headers,\n },\n })\n },\n ) as Promise<T>\n }\n\n loadThemeSettings = async (strategy?: AllCacheOptions) => {\n let defaultThemeSettings = generateDataFromSchema(this.themeSchema)\n try {\n let { API, configs } = this\n let { weaverseHost, projectId, isDesignMode } = configs\n if (!projectId) {\n throw new Error('Missing Weaverse projectId!')\n }\n let url = `${weaverseHost}/${API}/project_configs`\n let res: any\n let body = JSON.stringify({ isDesignMode, projectId })\n if (isDesignMode) {\n res = await fetch(url, { method: 'POST', body }).then((res) =>\n res.json(),\n )\n } else {\n res = await this.fetchWithCache(url, {\n method: 'POST',\n strategy,\n body,\n })\n }\n let data: any = res || {}\n if (this.themeSchema?.inspector) {\n data.theme = {\n ...defaultThemeSettings,\n ...data.theme,\n }\n }\n if (this.configs.isDesignMode) {\n data = {\n ...data,\n schema: this.themeSchema,\n publicEnv: this.configs.publicEnv,\n }\n }\n return data\n } catch (e) {\n console.info('Unable to load theme settings', e)\n return defaultThemeSettings\n }\n }\n\n generateFallbackPage = (message: string): HydrogenPageData => {\n let rootId = crypto.randomUUID()\n return {\n id: `fallback_page_${Date.now()}`,\n rootId,\n name: 'Default Page',\n items: [\n {\n type: 'main',\n id: rootId,\n data: { dangerouslySetInnerHTML: { __html: message } },\n },\n ],\n }\n }\n\n loadPage = async (\n params: {\n type?: PageType\n locale?: string\n handle?: string\n strategy?: AllCacheOptions\n } = {},\n ): Promise<WeaverseLoaderData | null> => {\n try {\n let { request, storefront, basePageRequestBody, basePageConfigs } = this\n let {\n projectId,\n isDesignMode,\n weaverseHost,\n isPreviewMode,\n sectionType,\n } = this.configs\n\n if (isPreviewMode) {\n return getPreviewData(sectionType, this.components, weaverseHost)\n }\n\n if (!projectId) {\n throw new Error('Missing Weaverse projectId!')\n }\n\n let { strategy, ...pageLoadParams } = params\n let body: {\n projectId: string\n url: string\n i18n?: I18nBase\n params?: {\n type?: PageType\n locale?: string\n handle?: string\n }\n isDesignMode?: boolean\n } = {\n ...basePageRequestBody,\n params: pageLoadParams,\n url: request.url,\n }\n\n let reqInit: RequestInit = {\n method: 'POST',\n body: JSON.stringify(body),\n }\n let url = `${weaverseHost}/${this.API}/project`\n let payload: FetchProjectPayload\n\n if (isDesignMode) {\n payload = await fetch(url, reqInit).then((res) => res.json())\n } else {\n payload = await this.fetchWithCache(url, {\n ...reqInit,\n strategy,\n })\n }\n\n if (payload?.error) {\n throw new Error(payload?.error)\n }\n let { page, project, pageAssignment } = payload\n if (!project) {\n console.error('Weaverse project not found. Id:', projectId)\n project = {\n id: projectId,\n name: 'Weaverse project not found.',\n weaverseShopId: '',\n }\n page = this.generateFallbackPage('Weaverse project not found.')\n }\n if (!page) {\n page = this.generateFallbackPage('Please add new section to start.')\n }\n if (page?.items) {\n let items = page.items\n page.items = await Promise.all(items.map(this.execComponentLoader))\n }\n return {\n page,\n project,\n pageAssignment,\n configs: {\n ...basePageConfigs,\n requestInfo: {\n i18n: storefront.i18n,\n queries: getRequestQueries<WeaverseStudioQueries>(request),\n pathname: new URL(request.url).pathname,\n search: new URL(request.url).search,\n },\n },\n }\n } catch (e) {\n // biome-ignore lint/style/noUnusedTemplateLiteral: <explanation>\n console.error(`❌ Page load failed.`, e)\n return null\n }\n }\n\n execComponentLoader = async (item: HydrogenComponentData) => {\n let { data = {}, type, id } = item\n let component = this.components.find(({ schema }) => schema?.type === type)\n let loader = component?.loader\n if (typeof loader === 'function') {\n try {\n return {\n ...item,\n loaderData: await Promise.resolve(\n loader({\n data: { ...generateDataFromSchema(component.schema), ...data },\n weaverse: this,\n }),\n ),\n }\n } catch (e) {\n console.warn('❌ Item loader run failed.', type, id, e)\n return item\n }\n }\n return item\n }\n}\n","import { getSelectedProductOptions as hydrogen_getSelectedProductOptions } from '@shopify/hydrogen'\nimport type { SelectedOptionInput } from '@shopify/hydrogen/storefront-api-types'\nimport {\n isBrowser,\n isIframe,\n useChildInstances,\n useItemInstance,\n useParentInstance,\n useWeaverse,\n} from '@weaverse/react'\n\nexport function getSelectedProductOptions(\n request: Request,\n): SelectedOptionInput[] {\n let options = hydrogen_getSelectedProductOptions(request)\n return options.filter(\n ({ name }) => name !== 'isDesignMode' && !name.startsWith('weaverse'),\n )\n}\n\nexport const IMAGES_PLACEHOLDERS = {\n logo_white:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-logo-w-600x200.svg',\n logo_black:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-logo-k-600x200.svg',\n image:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-image-1024x1024.svg',\n banner_1:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-lifestyle-1-1800x900.svg',\n banner_2:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-lifestyle-2-1800x900.svg',\n collection_1:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-collection-hats-1024x1024.svg',\n collection_2:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-collection-shoes-1024x1024.svg',\n collection_3:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-collection-glasses-1024x1024.svg',\n collection_4:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-collection-lamps-1024x1024.svg',\n collection_5:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-collection-bags-1024x1024.svg',\n collection_6:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-collection-watches-1024x1024.svg',\n product_1:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-watch-3-1024x1024.svg',\n product_2:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-bag-2-1024x1024.svg',\n product_3:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-shoe-1-1024x1024.svg',\n product_4:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-lamp-2-1024x1024.svg',\n product_5:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-glasses-1-1024x1024.svg',\n product_6:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-lamp-1-1024x1024.svg',\n product_7:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-glasses-2-1024x1024.svg',\n product_8:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-hat-3-1024x1024.svg',\n product_9:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-bag-1-1024x1024.svg',\n product_10:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-shoe-2-1024x1024.svg',\n product_11:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-hat-2-1024x1024.svg',\n product_12:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-glasses-3-1024x1024.svg',\n product_13:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-shoe-3-1024x1024.svg',\n product_14:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-bag-3-1024x1024.svg',\n product_15:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-hat-1-1024x1024.svg',\n product_16:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-lamp-3-1024x1024.svg',\n product_17:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-watch-1-1024x1024.svg',\n product_18:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-watch-2-1024x1024.svg',\n}\n\nexport {\n isBrowser,\n isIframe,\n useChildInstances,\n useItemInstance,\n useParentInstance,\n useWeaverse,\n}\nexport * from './types'\nexport * from './WeaverseHydrogenRoot'\nexport * from './weaverse-client'\n\nexport * from '@weaverse/schema'\n"]}
|
package/dist/index.mjs
CHANGED
|
@@ -5,6 +5,7 @@ import { memo, Suspense, createContext, useEffect } from 'react';
|
|
|
5
5
|
import { ErrorBoundary } from 'react-error-boundary';
|
|
6
6
|
import { useLoaderData, Await, useRevalidator, useNavigation, useLocation, useNavigate, useRouteLoaderData } from 'react-router';
|
|
7
7
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
8
|
+
export * from '@weaverse/schema';
|
|
8
9
|
|
|
9
10
|
var __defProp = Object.defineProperty;
|
|
10
11
|
var __export = (target, all) => {
|
|
@@ -657,8 +658,6 @@ var WeaverseClient = class {
|
|
|
657
658
|
return item;
|
|
658
659
|
};
|
|
659
660
|
};
|
|
660
|
-
|
|
661
|
-
// src/index.ts
|
|
662
661
|
function getSelectedProductOptions(request) {
|
|
663
662
|
let options = getSelectedProductOptions$1(request);
|
|
664
663
|
return options.filter(
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/main.tsx","../src/components/index.ts","../src/utils/index.ts","../src/utils/use-theme-settings-store.ts","../src/utils/use-studio.ts","../src/WeaverseHydrogenRoot.tsx","../src/weaverse-client.ts","../src/index.ts"],"names":["schema","type","children","data","isBrowser","jsx","res","hydrogen_getSelectedProductOptions"],"mappings":"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","file":"index.mjs","sourcesContent":["import type { HTMLAttributes } from 'react'\nimport type { HydrogenComponentProps, HydrogenComponentSchema } from '~/types'\n\n/*\n Main is the default Weaverse component that is used to render the main content.\n This component wraps all the sections/components inside a Weaverse page.\n*/\nfunction Main(props: HydrogenComponentProps & HTMLAttributes<HTMLDivElement>) {\n let { children, dangerouslySetInnerHTML, ...rest } = props\n\n return (\n <div\n {...rest}\n // biome-ignore lint/correctness/noChildrenProp: <explanation>\n children={children}\n // biome-ignore lint/security/noDangerouslySetInnerHtmlWithChildren: <explanation>\n dangerouslySetInnerHTML={children ? undefined : dangerouslySetInnerHTML}\n />\n )\n}\n\nexport default Main\n\nexport let schema: HydrogenComponentSchema = {\n type: 'main',\n title: 'Main',\n settings: [],\n}\n","import type { HydrogenComponent } from '~/types'\nimport * as Main from './main'\n\nexport let defaultComponents: HydrogenComponent[] = [Main]\n","import type { HydrogenEnv } from '@shopify/hydrogen'\nimport type {\n HydrogenComponent,\n HydrogenComponentSchema,\n HydrogenThemeSchema,\n WeaverseLoaderData,\n WeaverseProjectConfigs,\n WeaverseStudioQueries,\n} from '../types'\n\n// Track warned types to avoid spam\nlet warnedTypes = new Set<string>()\n\nfunction logOnce(type: string, message: string) {\n if (!warnedTypes.has(type)) {\n console.warn(message)\n warnedTypes.add(type)\n }\n}\n\nfunction deepMergeArrays<T>(target: T[], source: T[]): T[] {\n return [...target, ...source]\n}\n\nfunction mergeInspectorSettings(\n settings: any[],\n inspector: any[],\n type: string,\n): any[] {\n if (!inspector?.length) return settings\n if (!settings?.length) return inspector\n\n // Log collision notice\n console.info(\n `Schema \"${type}\": Both 'settings' and 'inspector' found. Using 'settings' with 'inspector' as fallback.`,\n )\n\n return deepMergeArrays(settings, inspector)\n}\n\nexport function getRequestQueries<T = Record<string, string | boolean>>(\n request: Request,\n) {\n let url = new URL(request.url)\n return Array.from(url.searchParams.entries()).reduce(\n (q: Record<string, unknown>, [k, v]) => {\n q[k] = v === 'true' ? true : v === 'false' ? false : v\n return q\n },\n {},\n ) as T\n}\n\nexport function getWeaverseConfigs(\n request: Request,\n env: HydrogenEnv,\n): WeaverseProjectConfigs {\n let queries = getRequestQueries<WeaverseStudioQueries>(request)\n let {\n WEAVERSE_PROJECT_ID,\n WEAVERSE_API_KEY,\n WEAVERSE_HOST,\n PUBLIC_STORE_DOMAIN,\n PUBLIC_STOREFRONT_API_TOKEN,\n } = env || {}\n let envFromProcess = (typeof process !== 'undefined' && process.env) || {}\n let {\n weaverseProjectId,\n weaverseHost,\n isDesignMode,\n isPreviewMode,\n sectionType,\n weaverseVersion,\n weaverseApiKey,\n } = queries\n return {\n projectId:\n weaverseProjectId ||\n WEAVERSE_PROJECT_ID ||\n envFromProcess.WEAVERSE_PROJECT_ID ||\n '',\n weaverseHost:\n weaverseHost ||\n WEAVERSE_HOST ||\n envFromProcess.WEAVERSE_HOST ||\n 'https://studio.weaverse.io',\n weaverseApiKey:\n weaverseApiKey ||\n WEAVERSE_API_KEY ||\n envFromProcess.WEAVERSE_API_KEY ||\n '',\n weaverseVersion: weaverseVersion || '',\n isDesignMode: isDesignMode || false,\n isPreviewMode: isPreviewMode || false,\n sectionType: sectionType || '',\n publicEnv: {\n PUBLIC_STORE_DOMAIN: PUBLIC_STORE_DOMAIN || '',\n PUBLIC_STOREFRONT_API_TOKEN: PUBLIC_STOREFRONT_API_TOKEN || '',\n },\n }\n}\n\nexport function generateDataFromSchema(\n schema: HydrogenComponentSchema | HydrogenThemeSchema,\n) {\n let data: Record<string, any> = {}\n\n // Handle migration from inspector to settings\n let inspectorGroups: any[] = []\n\n // Type guard to check if it's a component schema\n const isComponentSchema = (\n s: HydrogenComponentSchema | HydrogenThemeSchema,\n ): s is HydrogenComponentSchema => {\n return 'type' in s && typeof s.type === 'string'\n }\n\n if (isComponentSchema(schema)) {\n // Handle HydrogenComponentSchema\n if (schema.settings) {\n inspectorGroups = schema.settings\n }\n\n if (schema.inspector) {\n if (schema.settings?.length) {\n // Both exist - merge with settings taking priority\n inspectorGroups = mergeInspectorSettings(\n schema.settings,\n schema.inspector,\n schema.type || 'unknown',\n )\n } else {\n // Only inspector exists - use it but warn about deprecation\n inspectorGroups = schema.inspector\n if (schema.type) {\n logOnce(\n schema.type,\n `⚠️ Schema \"${schema.type}\": The 'inspector' property is deprecated. Please use 'settings' instead.`,\n )\n }\n }\n }\n } else {\n // Handle HydrogenThemeSchema\n if (schema.settings) {\n inspectorGroups = schema.settings\n }\n\n if (schema.inspector) {\n if (schema.settings?.length) {\n // Both exist - merge with settings taking priority\n inspectorGroups = mergeInspectorSettings(\n schema.settings,\n schema.inspector,\n 'Theme Schema',\n )\n } else {\n // Only inspector exists - use it but warn about deprecation\n inspectorGroups = schema.inspector\n logOnce(\n 'ThemeSchema',\n `⚠️ Theme Schema: The 'inspector' property is deprecated. Please use 'settings' instead.`,\n )\n }\n }\n }\n\n if (inspectorGroups?.length) {\n for (let group of inspectorGroups) {\n for (let input of group.inputs) {\n let { name, defaultValue } = input\n if (name && defaultValue !== null && defaultValue !== undefined) {\n data[name] = defaultValue\n }\n }\n }\n }\n return data\n}\n\nfunction recursivelyAddDataItem(\n type: string,\n components: HydrogenComponent<any>[],\n items: any[],\n initData?: object,\n) {\n let component = components.find((c) => c.schema.type === type)\n if (!component) {\n return\n }\n let childIds = []\n let id = crypto.randomUUID()\n let { children, ...data } = component.schema?.presets || {}\n if (children) {\n for (let c of children) {\n let { type, children, ...data } = c\n let childId = recursivelyAddDataItem(type, components, items, data)\n childIds.push({ id: childId })\n }\n }\n items.push({\n data: { ...data, ...initData },\n id,\n type,\n children: childIds,\n })\n return id\n}\n\nexport function getPreviewData(\n type: string,\n components: HydrogenComponent[],\n weaverseHost: string,\n) {\n let items = []\n return {\n project: { id: 'x', weaverseShopId: 'shop-id', name: 'Section Preview' },\n configs: {\n projectId: 'x',\n weaverseHost,\n isDesignMode: false,\n isPreviewMode: true,\n requestInfo: {\n i18n: {\n label: 'United States (USD $)',\n language: 'EN',\n country: 'US',\n currency: 'USD',\n pathPrefix: '',\n },\n queries: {},\n pathname: '/',\n search: '',\n },\n },\n page: {\n id: '0',\n name: 'Preview section',\n rootId: '1',\n items: [\n {\n data: {},\n id: '1',\n type: 'main',\n children: [{ id: recursivelyAddDataItem(type, components, items) }],\n },\n ...items,\n ],\n },\n } as unknown as WeaverseLoaderData\n}\n","import { EventEmitter, isBrowser } from '@weaverse/react'\nimport { useRouteLoaderData } from 'react-router'\nimport type {\n HydrogenThemeSchema,\n HydrogenThemeSettings,\n PublicEnv,\n} from '~/types'\n\ntype WeaverseThemeData = {\n theme: HydrogenThemeSettings\n schema?: HydrogenThemeSchema\n publicEnv?: PublicEnv\n}\n\nexport class ThemeSettingsStore extends EventEmitter {\n settings: HydrogenThemeSettings = {}\n schema?: HydrogenThemeSchema\n publicEnv?: PublicEnv\n\n constructor(data: WeaverseThemeData) {\n super()\n let { theme, schema, publicEnv } = data || {}\n this.settings = { ...theme }\n this.schema = schema\n this.publicEnv = publicEnv\n if (isBrowser) {\n window.__weaverseThemeSettingsStore = this\n }\n }\n\n updateThemeSettings = (newSettings: HydrogenThemeSettings) => {\n this.settings = {\n ...this.settings,\n ...newSettings,\n }\n this.emit(this.settings)\n }\n\n getSnapshot = () => {\n return this.settings\n }\n\n getServerSnapshot = () => {\n return this.settings\n }\n}\n\nexport function useThemeSettingsStore() {\n let data = useRouteLoaderData('root') as { weaverseTheme: WeaverseThemeData }\n if (isBrowser && window.__weaverseThemeSettingsStore) {\n return window.__weaverseThemeSettingsStore\n }\n return new ThemeSettingsStore(data?.weaverseTheme)\n}\n","import { loadScript } from '@weaverse/react'\nimport { useEffect } from 'react'\nimport {\n useLocation,\n useNavigate,\n useNavigation,\n useRevalidator,\n} from 'react-router'\nimport type { WeaverseHydrogen } from '~/index'\nimport { useThemeSettingsStore } from './use-theme-settings-store'\n\nexport function useStudio(weaverse: WeaverseHydrogen) {\n let { revalidate } = useRevalidator()\n let navigation = useNavigation()\n let { pathname, search } = useLocation()\n let navigate = useNavigate()\n let themeSettingsStore = useThemeSettingsStore()\n let { isDesignMode, weaverseHost, weaverseVersion, isPreviewMode } = weaverse\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>\n useEffect(() => {\n if (navigation.state === 'idle') {\n if (isPreviewMode) {\n let previewSrc = `${weaverseHost}/static/studio/hydrogen/preview.js?v=${weaverseVersion}`\n loadScript(previewSrc).catch(console.error)\n } else if (isDesignMode) {\n weaverse.internal = {\n ...weaverse.internal,\n navigate,\n revalidate,\n themeSettingsStore,\n }\n let studioSrc = `${weaverseHost}/static/studio/hydrogen/index.js?v=${weaverseVersion}`\n loadScript(studioSrc)\n .then(() => {\n window.weaverseStudio?.init(weaverse)\n })\n .catch(console.error)\n }\n }\n }, [pathname, search, navigation.state])\n usePixel(weaverse)\n}\n\nexport function usePixel(context: WeaverseHydrogen) {\n let { projectId, pageId, weaverseHost, isDesignMode } = context\n // biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>\n useEffect(() => {\n if (!projectId || !pageId || !weaverseHost || isDesignMode) return\n let url = `${weaverseHost}/api/public/px`\n let img = new Image()\n img.onload = () => img.remove()\n img.src = `${url}?projectId=${projectId}&pageId=${pageId}`\n }, [])\n}\n","import {\n isBrowser,\n type PlatformTypeEnum,\n useSafeExternalStore,\n Weaverse,\n WeaverseItemStore,\n WeaverseRoot,\n} from '@weaverse/react'\nimport {\n type ComponentType,\n createContext,\n type JSX,\n memo,\n Suspense,\n} from 'react'\nimport { ErrorBoundary } from 'react-error-boundary'\nimport { Await, useLoaderData } from 'react-router'\nimport { defaultComponents } from '~/components'\nimport type {\n HydrogenComponentData,\n HydrogenElement,\n HydrogenPageData,\n HydrogenThemeSettings,\n WeaverseInternal,\n WeaverseLoaderRequestInfo,\n} from './index'\nimport type {\n HydrogenComponent,\n WeaverseHydrogenParams,\n WeaverseLoaderData,\n} from './types'\nimport { generateDataFromSchema } from './utils'\nimport { useStudio } from './utils/use-studio'\nimport { useThemeSettingsStore } from './utils/use-theme-settings-store'\n\nexport class WeaverseHydrogenItem extends WeaverseItemStore {\n declare weaverse: WeaverseHydrogen\n\n constructor(initialData: HydrogenComponentData, weaverse: WeaverseHydrogen) {\n super(initialData, weaverse)\n let { data, ...rest } = initialData\n if (!this.Element?.schema) {\n console.error('Element is missing schema or not found!')\n return\n }\n let schemaData = generateDataFromSchema(this.Element.schema)\n Object.assign(this._store, schemaData, data, rest)\n }\n\n get Element(): HydrogenElement {\n return super.Element\n }\n}\n\nWeaverse.ItemConstructor = WeaverseHydrogenItem\n\nexport class WeaverseHydrogen extends Weaverse {\n platformType: PlatformTypeEnum = 'shopify-hydrogen'\n pageId: string\n internal: Partial<WeaverseInternal>\n requestInfo: WeaverseLoaderRequestInfo\n declare ItemConstructor: typeof WeaverseHydrogenItem\n declare data: HydrogenPageData\n static itemInstances: Map<string, WeaverseHydrogenItem>\n static elementRegistry: Map<string, HydrogenElement>\n\n constructor(params: WeaverseHydrogenParams) {\n let { internal, pageId, requestInfo, ...coreParams } = params\n super({ ...coreParams })\n this.internal = internal\n this.pageId = pageId\n this.requestInfo = requestInfo\n }\n}\n\nfunction createWeaverseInstance(\n params: WeaverseHydrogenParams,\n): WeaverseHydrogen {\n if (isBrowser) {\n // Check if the weaverse instance already exists in the window object\n window.__weaverses = window.__weaverses || {}\n let weaverse = window.__weaverses[params.pageId]\n // If the weaverse instance does not exist, or the pathname or search has changed, create a new instance\n if (\n !weaverse ||\n weaverse?.requestInfo?.pathname !== params.requestInfo.pathname ||\n weaverse?.requestInfo?.search !== params.requestInfo.search\n ) {\n weaverse = new WeaverseHydrogen(params)\n window.__weaverses[params.pageId] = weaverse\n }\n if (weaverse?.isDesignMode) {\n weaverse.requestInfo = params.requestInfo\n window.weaverseStudio?.refreshStudio(params)\n }\n return weaverse\n }\n return new WeaverseHydrogen(params)\n}\n\nlet StudioBridge = memo(({ context }: { context: WeaverseHydrogen }) => {\n useStudio(context)\n return null\n})\n\nfunction RenderRoot(props: {\n data: WeaverseLoaderData\n components: HydrogenComponent[]\n}) {\n let { data, components } = props\n for (let comp of [...components, ...defaultComponents]) {\n comp?.schema?.type &&\n registerComponent({\n type: comp?.schema.type,\n Component: comp.default,\n schema: comp.schema,\n loader: comp.loader,\n })\n }\n let { page, configs, project, pageAssignment } = data || {}\n let weaverse = createWeaverseInstance({\n ...configs,\n data: page,\n pageId: page?.id,\n internal: { project, pageAssignment },\n })\n return (\n <>\n <WeaverseRoot context={weaverse} />\n <StudioBridge context={weaverse} />\n </>\n )\n}\n\nexport function registerComponent(element: HydrogenElement) {\n WeaverseHydrogen.registerElement(element)\n}\n\nexport let WeaverseHydrogenRoot = memo(\n ({\n components,\n errorComponent: ErrorComponent = ({ error }) => (\n <div>{error?.message || 'An unexpected error occurred'}</div>\n ),\n }: {\n components: HydrogenComponent[]\n errorComponent?: React.FC<{ error }>\n }) => {\n let loaderData = useLoaderData()\n // @ts-ignore\n let data = loaderData?.weaverseData as\n | WeaverseLoaderData\n | Promise<WeaverseLoaderData>\n\n if (data) {\n if (data instanceof Promise) {\n return (\n <ErrorBoundary fallbackRender={ErrorComponent as any}>\n <Suspense>\n <Await resolve={data}>\n {(resolvedData) => (\n <RenderRoot data={resolvedData} components={components} />\n )}\n </Await>\n </Suspense>\n </ErrorBoundary>\n )\n }\n return <RenderRoot data={data} components={components} />\n }\n return (\n <ErrorComponent\n error={{ message: 'No Weaverse data return from route loader!' }}\n />\n )\n },\n)\n\nlet ThemeSettingsProvider = createContext<HydrogenThemeSettings | null>(null)\nThemeSettingsProvider.displayName = 'WeaverseThemeSettingsProvider'\n\nexport function withWeaverse(Component: ComponentType<any>) {\n return (props: JSX.IntrinsicAttributes) => {\n let { settings } = useThemeSettingsStore()\n return (\n <ThemeSettingsProvider.Provider value={settings}>\n <Component {...props} />\n </ThemeSettingsProvider.Provider>\n )\n }\n}\n\nexport function useThemeSettings<T = HydrogenThemeSettings>() {\n let themeSettingsStore = useThemeSettingsStore()\n let settings = useSafeExternalStore(\n themeSettingsStore.subscribe,\n themeSettingsStore.getSnapshot,\n themeSettingsStore.getServerSnapshot,\n )\n return settings as T\n}\n","import {\n createWithCache,\n generateCacheControlHeader,\n type HydrogenEnv,\n type I18nBase,\n} from '@shopify/hydrogen'\nimport type {\n AllCacheOptions,\n FetchProjectPayload,\n FetchProjectRequestBody,\n HydrogenComponentData,\n HydrogenPageData,\n PageType,\n WeaverseClientArgs,\n WeaverseLoaderData,\n WeaverseProjectConfigs,\n WeaverseStudioQueries,\n} from './types'\nimport {\n generateDataFromSchema,\n getPreviewData,\n getRequestQueries,\n getWeaverseConfigs,\n} from './utils'\n\n// Constants at the top\nconst API_PATH = 'api/public'\nconst DEFAULT_CACHE_STRATEGY = {\n maxAge: 10,\n sMaxAge: 10,\n staleWhileRevalidate: 82800,\n staleIfError: 82800,\n}\n\nexport class WeaverseClient {\n public API = API_PATH\n public basePageConfigs: Omit<WeaverseProjectConfigs, 'requestInfo'>\n public basePageRequestBody: Omit<FetchProjectRequestBody, 'url'>\n public configs: WeaverseProjectConfigs\n public withCache: ReturnType<typeof createWithCache>\n\n // Required dependencies\n public request: WeaverseClientArgs['request']\n public storefront: WeaverseClientArgs['storefront']\n public components: WeaverseClientArgs['components']\n public themeSchema: WeaverseClientArgs['themeSchema']\n public env: WeaverseClientArgs['env']\n public cache: WeaverseClientArgs['cache']\n public waitUntil: WeaverseClientArgs['waitUntil']\n\n constructor(args: WeaverseClientArgs) {\n // Destructure and initialize all dependencies\n const {\n env,\n storefront,\n components,\n cache,\n waitUntil,\n themeSchema,\n request,\n } = args\n\n // Initialize required properties\n this.request = request\n this.storefront = storefront\n this.components = components\n this.themeSchema = themeSchema\n this.env = env\n this.cache = cache\n this.waitUntil = waitUntil\n this.withCache = createWithCache({ cache, waitUntil, request })\n\n // Initialize configs\n this.configs = getWeaverseConfigs(request, env as HydrogenEnv)\n\n // Initialize base configurations\n this.basePageConfigs = {\n projectId: this.configs.projectId,\n weaverseHost: this.configs.weaverseHost,\n weaverseApiKey: this.configs.weaverseApiKey,\n weaverseVersion: this.configs.weaverseVersion,\n isDesignMode: this.configs.isDesignMode,\n }\n\n this.basePageRequestBody = {\n isDesignMode: this.configs.isDesignMode,\n i18n: storefront.i18n,\n projectId: this.configs.projectId,\n }\n }\n\n // Helper method for direct fetching in design mode\n private directFetch = async <T>(\n url: string,\n options: RequestInit = {},\n ): Promise<T> => {\n try {\n let res = await fetch(url, options)\n if (!res.ok) {\n let error = await res.text()\n throw new Error(`${res.status} ${res.statusText} ${error}`)\n }\n return res.json()\n } catch (err) {\n throw new Error(`Failed to fetch data from ${url}`, { cause: err })\n }\n }\n\n public fetchWithCache = async <T extends object>(\n url: string,\n options: RequestInit & { strategy?: AllCacheOptions } = {},\n ): Promise<T> => {\n let {\n strategy = this.storefront.CacheCustom(DEFAULT_CACHE_STRATEGY),\n ...reqInit\n } = options\n let cacheKey = [url, options.body]\n\n if (this.configs.isDesignMode) {\n return this.directFetch<T>(url, reqInit)\n }\n\n return this.withCache.run(\n {\n cacheKey,\n cacheStrategy: strategy,\n shouldCacheResult: (result: any) => result?.data,\n },\n async () => {\n return this.directFetch<T>(url, {\n ...reqInit,\n headers: {\n 'Cache-Control': generateCacheControlHeader(strategy),\n ...reqInit.headers,\n },\n })\n },\n ) as Promise<T>\n }\n\n loadThemeSettings = async (strategy?: AllCacheOptions) => {\n let defaultThemeSettings = generateDataFromSchema(this.themeSchema)\n try {\n let { API, configs } = this\n let { weaverseHost, projectId, isDesignMode } = configs\n if (!projectId) {\n throw new Error('Missing Weaverse projectId!')\n }\n let url = `${weaverseHost}/${API}/project_configs`\n let res: any\n let body = JSON.stringify({ isDesignMode, projectId })\n if (isDesignMode) {\n res = await fetch(url, { method: 'POST', body }).then((res) =>\n res.json(),\n )\n } else {\n res = await this.fetchWithCache(url, {\n method: 'POST',\n strategy,\n body,\n })\n }\n let data: any = res || {}\n if (this.themeSchema?.inspector) {\n data.theme = {\n ...defaultThemeSettings,\n ...data.theme,\n }\n }\n if (this.configs.isDesignMode) {\n data = {\n ...data,\n schema: this.themeSchema,\n publicEnv: this.configs.publicEnv,\n }\n }\n return data\n } catch (e) {\n console.info('Unable to load theme settings', e)\n return defaultThemeSettings\n }\n }\n\n generateFallbackPage = (message: string): HydrogenPageData => {\n let rootId = crypto.randomUUID()\n return {\n id: `fallback_page_${Date.now()}`,\n rootId,\n name: 'Default Page',\n items: [\n {\n type: 'main',\n id: rootId,\n data: { dangerouslySetInnerHTML: { __html: message } },\n },\n ],\n }\n }\n\n loadPage = async (\n params: {\n type?: PageType\n locale?: string\n handle?: string\n strategy?: AllCacheOptions\n } = {},\n ): Promise<WeaverseLoaderData | null> => {\n try {\n let { request, storefront, basePageRequestBody, basePageConfigs } = this\n let {\n projectId,\n isDesignMode,\n weaverseHost,\n isPreviewMode,\n sectionType,\n } = this.configs\n\n if (isPreviewMode) {\n return getPreviewData(sectionType, this.components, weaverseHost)\n }\n\n if (!projectId) {\n throw new Error('Missing Weaverse projectId!')\n }\n\n let { strategy, ...pageLoadParams } = params\n let body: {\n projectId: string\n url: string\n i18n?: I18nBase\n params?: {\n type?: PageType\n locale?: string\n handle?: string\n }\n isDesignMode?: boolean\n } = {\n ...basePageRequestBody,\n params: pageLoadParams,\n url: request.url,\n }\n\n let reqInit: RequestInit = {\n method: 'POST',\n body: JSON.stringify(body),\n }\n let url = `${weaverseHost}/${this.API}/project`\n let payload: FetchProjectPayload\n\n if (isDesignMode) {\n payload = await fetch(url, reqInit).then((res) => res.json())\n } else {\n payload = await this.fetchWithCache(url, {\n ...reqInit,\n strategy,\n })\n }\n\n if (payload?.error) {\n throw new Error(payload?.error)\n }\n let { page, project, pageAssignment } = payload\n if (!project) {\n console.error('Weaverse project not found. Id:', projectId)\n project = {\n id: projectId,\n name: 'Weaverse project not found.',\n weaverseShopId: '',\n }\n page = this.generateFallbackPage('Weaverse project not found.')\n }\n if (!page) {\n page = this.generateFallbackPage('Please add new section to start.')\n }\n if (page?.items) {\n let items = page.items\n page.items = await Promise.all(items.map(this.execComponentLoader))\n }\n return {\n page,\n project,\n pageAssignment,\n configs: {\n ...basePageConfigs,\n requestInfo: {\n i18n: storefront.i18n,\n queries: getRequestQueries<WeaverseStudioQueries>(request),\n pathname: new URL(request.url).pathname,\n search: new URL(request.url).search,\n },\n },\n }\n } catch (e) {\n // biome-ignore lint/style/noUnusedTemplateLiteral: <explanation>\n console.error(`❌ Page load failed.`, e)\n return null\n }\n }\n\n execComponentLoader = async (item: HydrogenComponentData) => {\n let { data = {}, type, id } = item\n let component = this.components.find(({ schema }) => schema?.type === type)\n let loader = component?.loader\n if (typeof loader === 'function') {\n try {\n return {\n ...item,\n loaderData: await Promise.resolve(\n loader({\n data: { ...generateDataFromSchema(component.schema), ...data },\n weaverse: this,\n }),\n ),\n }\n } catch (e) {\n console.warn('❌ Item loader run failed.', type, id, e)\n return item\n }\n }\n return item\n }\n}\n","import { getSelectedProductOptions as hydrogen_getSelectedProductOptions } from '@shopify/hydrogen'\nimport type { SelectedOptionInput } from '@shopify/hydrogen/storefront-api-types'\nimport {\n isBrowser,\n isIframe,\n useChildInstances,\n useItemInstance,\n useParentInstance,\n useWeaverse,\n} from '@weaverse/react'\n\nexport function getSelectedProductOptions(\n request: Request,\n): SelectedOptionInput[] {\n let options = hydrogen_getSelectedProductOptions(request)\n return options.filter(\n ({ name }) => name !== 'isDesignMode' && !name.startsWith('weaverse'),\n )\n}\n\nexport const IMAGES_PLACEHOLDERS = {\n logo_white:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-logo-w-600x200.svg',\n logo_black:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-logo-k-600x200.svg',\n image:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-image-1024x1024.svg',\n banner_1:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-lifestyle-1-1800x900.svg',\n banner_2:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-lifestyle-2-1800x900.svg',\n collection_1:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-collection-hats-1024x1024.svg',\n collection_2:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-collection-shoes-1024x1024.svg',\n collection_3:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-collection-glasses-1024x1024.svg',\n collection_4:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-collection-lamps-1024x1024.svg',\n collection_5:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-collection-bags-1024x1024.svg',\n collection_6:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-collection-watches-1024x1024.svg',\n product_1:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-watch-3-1024x1024.svg',\n product_2:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-bag-2-1024x1024.svg',\n product_3:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-shoe-1-1024x1024.svg',\n product_4:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-lamp-2-1024x1024.svg',\n product_5:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-glasses-1-1024x1024.svg',\n product_6:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-lamp-1-1024x1024.svg',\n product_7:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-glasses-2-1024x1024.svg',\n product_8:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-hat-3-1024x1024.svg',\n product_9:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-bag-1-1024x1024.svg',\n product_10:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-shoe-2-1024x1024.svg',\n product_11:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-hat-2-1024x1024.svg',\n product_12:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-glasses-3-1024x1024.svg',\n product_13:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-shoe-3-1024x1024.svg',\n product_14:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-bag-3-1024x1024.svg',\n product_15:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-hat-1-1024x1024.svg',\n product_16:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-lamp-3-1024x1024.svg',\n product_17:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-watch-1-1024x1024.svg',\n product_18:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-watch-2-1024x1024.svg',\n}\n\nexport {\n isBrowser,\n isIframe,\n useChildInstances,\n useItemInstance,\n useParentInstance,\n useWeaverse,\n}\nexport * from './types'\nexport * from './WeaverseHydrogenRoot'\nexport * from './weaverse-client'\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/main.tsx","../src/components/index.ts","../src/utils/index.ts","../src/utils/use-theme-settings-store.ts","../src/utils/use-studio.ts","../src/WeaverseHydrogenRoot.tsx","../src/weaverse-client.ts","../src/index.ts"],"names":["schema","type","children","data","isBrowser","jsx","res","hydrogen_getSelectedProductOptions"],"mappings":"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","file":"index.mjs","sourcesContent":["import type { HTMLAttributes } from 'react'\nimport type { HydrogenComponentProps, HydrogenComponentSchema } from '~/types'\n\n/*\n Main is the default Weaverse component that is used to render the main content.\n This component wraps all the sections/components inside a Weaverse page.\n*/\nfunction Main(props: HydrogenComponentProps & HTMLAttributes<HTMLDivElement>) {\n let { children, dangerouslySetInnerHTML, ...rest } = props\n\n return (\n <div\n {...rest}\n // biome-ignore lint/correctness/noChildrenProp: <explanation>\n children={children}\n // biome-ignore lint/security/noDangerouslySetInnerHtmlWithChildren: <explanation>\n dangerouslySetInnerHTML={children ? undefined : dangerouslySetInnerHTML}\n />\n )\n}\n\nexport default Main\n\nexport let schema: HydrogenComponentSchema = {\n type: 'main',\n title: 'Main',\n settings: [],\n}\n","import type { HydrogenComponent } from '~/types'\nimport * as Main from './main'\n\nexport let defaultComponents: HydrogenComponent[] = [Main]\n","import type { HydrogenEnv } from '@shopify/hydrogen'\nimport type {\n HydrogenComponent,\n HydrogenComponentSchema,\n HydrogenThemeSchema,\n WeaverseLoaderData,\n WeaverseProjectConfigs,\n WeaverseStudioQueries,\n} from '../types'\n\n// Track warned types to avoid spam\nlet warnedTypes = new Set<string>()\n\nfunction logOnce(type: string, message: string) {\n if (!warnedTypes.has(type)) {\n console.warn(message)\n warnedTypes.add(type)\n }\n}\n\nfunction deepMergeArrays<T>(target: T[], source: T[]): T[] {\n return [...target, ...source]\n}\n\nfunction mergeInspectorSettings(\n settings: any[],\n inspector: any[],\n type: string,\n): any[] {\n if (!inspector?.length) return settings\n if (!settings?.length) return inspector\n\n // Log collision notice\n console.info(\n `Schema \"${type}\": Both 'settings' and 'inspector' found. Using 'settings' with 'inspector' as fallback.`,\n )\n\n return deepMergeArrays(settings, inspector)\n}\n\nexport function getRequestQueries<T = Record<string, string | boolean>>(\n request: Request,\n) {\n let url = new URL(request.url)\n return Array.from(url.searchParams.entries()).reduce(\n (q: Record<string, unknown>, [k, v]) => {\n q[k] = v === 'true' ? true : v === 'false' ? false : v\n return q\n },\n {},\n ) as T\n}\n\nexport function getWeaverseConfigs(\n request: Request,\n env: HydrogenEnv,\n): WeaverseProjectConfigs {\n let queries = getRequestQueries<WeaverseStudioQueries>(request)\n let {\n WEAVERSE_PROJECT_ID,\n WEAVERSE_API_KEY,\n WEAVERSE_HOST,\n PUBLIC_STORE_DOMAIN,\n PUBLIC_STOREFRONT_API_TOKEN,\n } = env || {}\n let envFromProcess = (typeof process !== 'undefined' && process.env) || {}\n let {\n weaverseProjectId,\n weaverseHost,\n isDesignMode,\n isPreviewMode,\n sectionType,\n weaverseVersion,\n weaverseApiKey,\n } = queries\n return {\n projectId:\n weaverseProjectId ||\n WEAVERSE_PROJECT_ID ||\n envFromProcess.WEAVERSE_PROJECT_ID ||\n '',\n weaverseHost:\n weaverseHost ||\n WEAVERSE_HOST ||\n envFromProcess.WEAVERSE_HOST ||\n 'https://studio.weaverse.io',\n weaverseApiKey:\n weaverseApiKey ||\n WEAVERSE_API_KEY ||\n envFromProcess.WEAVERSE_API_KEY ||\n '',\n weaverseVersion: weaverseVersion || '',\n isDesignMode: isDesignMode || false,\n isPreviewMode: isPreviewMode || false,\n sectionType: sectionType || '',\n publicEnv: {\n PUBLIC_STORE_DOMAIN: PUBLIC_STORE_DOMAIN || '',\n PUBLIC_STOREFRONT_API_TOKEN: PUBLIC_STOREFRONT_API_TOKEN || '',\n },\n }\n}\n\nexport function generateDataFromSchema(\n schema: HydrogenComponentSchema | HydrogenThemeSchema,\n) {\n let data: Record<string, any> = {}\n\n // Handle migration from inspector to settings\n let inspectorGroups: any[] = []\n\n // Type guard to check if it's a component schema\n const isComponentSchema = (\n s: HydrogenComponentSchema | HydrogenThemeSchema,\n ): s is HydrogenComponentSchema => {\n return 'type' in s && typeof s.type === 'string'\n }\n\n if (isComponentSchema(schema)) {\n // Handle HydrogenComponentSchema\n if (schema.settings) {\n inspectorGroups = schema.settings\n }\n\n if (schema.inspector) {\n if (schema.settings?.length) {\n // Both exist - merge with settings taking priority\n inspectorGroups = mergeInspectorSettings(\n schema.settings,\n schema.inspector,\n schema.type || 'unknown',\n )\n } else {\n // Only inspector exists - use it but warn about deprecation\n inspectorGroups = schema.inspector\n if (schema.type) {\n logOnce(\n schema.type,\n `⚠️ Schema \"${schema.type}\": The 'inspector' property is deprecated. Please use 'settings' instead.`,\n )\n }\n }\n }\n } else {\n // Handle HydrogenThemeSchema\n if (schema.settings) {\n inspectorGroups = schema.settings\n }\n\n if (schema.inspector) {\n if (schema.settings?.length) {\n // Both exist - merge with settings taking priority\n inspectorGroups = mergeInspectorSettings(\n schema.settings,\n schema.inspector,\n 'Theme Schema',\n )\n } else {\n // Only inspector exists - use it but warn about deprecation\n inspectorGroups = schema.inspector\n logOnce(\n 'ThemeSchema',\n `⚠️ Theme Schema: The 'inspector' property is deprecated. Please use 'settings' instead.`,\n )\n }\n }\n }\n\n if (inspectorGroups?.length) {\n for (let group of inspectorGroups) {\n for (let input of group.inputs) {\n let { name, defaultValue } = input\n if (name && defaultValue !== null && defaultValue !== undefined) {\n data[name] = defaultValue\n }\n }\n }\n }\n return data\n}\n\nfunction recursivelyAddDataItem(\n type: string,\n components: HydrogenComponent<any>[],\n items: any[],\n initData?: object,\n) {\n let component = components.find((c) => c.schema.type === type)\n if (!component) {\n return\n }\n let childIds = []\n let id = crypto.randomUUID()\n let { children, ...data } = component.schema?.presets || {}\n if (children) {\n for (let c of children) {\n let { type, children, ...data } = c\n let childId = recursivelyAddDataItem(type, components, items, data)\n childIds.push({ id: childId })\n }\n }\n items.push({\n data: { ...data, ...initData },\n id,\n type,\n children: childIds,\n })\n return id\n}\n\nexport function getPreviewData(\n type: string,\n components: HydrogenComponent[],\n weaverseHost: string,\n) {\n let items = []\n return {\n project: { id: 'x', weaverseShopId: 'shop-id', name: 'Section Preview' },\n configs: {\n projectId: 'x',\n weaverseHost,\n isDesignMode: false,\n isPreviewMode: true,\n requestInfo: {\n i18n: {\n label: 'United States (USD $)',\n language: 'EN',\n country: 'US',\n currency: 'USD',\n pathPrefix: '',\n },\n queries: {},\n pathname: '/',\n search: '',\n },\n },\n page: {\n id: '0',\n name: 'Preview section',\n rootId: '1',\n items: [\n {\n data: {},\n id: '1',\n type: 'main',\n children: [{ id: recursivelyAddDataItem(type, components, items) }],\n },\n ...items,\n ],\n },\n } as unknown as WeaverseLoaderData\n}\n","import { EventEmitter, isBrowser } from '@weaverse/react'\nimport { useRouteLoaderData } from 'react-router'\nimport type {\n HydrogenThemeSchema,\n HydrogenThemeSettings,\n PublicEnv,\n} from '~/types'\n\ntype WeaverseThemeData = {\n theme: HydrogenThemeSettings\n schema?: HydrogenThemeSchema\n publicEnv?: PublicEnv\n}\n\nexport class ThemeSettingsStore extends EventEmitter {\n settings: HydrogenThemeSettings = {}\n schema?: HydrogenThemeSchema\n publicEnv?: PublicEnv\n\n constructor(data: WeaverseThemeData) {\n super()\n let { theme, schema, publicEnv } = data || {}\n this.settings = { ...theme }\n this.schema = schema\n this.publicEnv = publicEnv\n if (isBrowser) {\n window.__weaverseThemeSettingsStore = this\n }\n }\n\n updateThemeSettings = (newSettings: HydrogenThemeSettings) => {\n this.settings = {\n ...this.settings,\n ...newSettings,\n }\n this.emit(this.settings)\n }\n\n getSnapshot = () => {\n return this.settings\n }\n\n getServerSnapshot = () => {\n return this.settings\n }\n}\n\nexport function useThemeSettingsStore() {\n let data = useRouteLoaderData('root') as { weaverseTheme: WeaverseThemeData }\n if (isBrowser && window.__weaverseThemeSettingsStore) {\n return window.__weaverseThemeSettingsStore\n }\n return new ThemeSettingsStore(data?.weaverseTheme)\n}\n","import { loadScript } from '@weaverse/react'\nimport { useEffect } from 'react'\nimport {\n useLocation,\n useNavigate,\n useNavigation,\n useRevalidator,\n} from 'react-router'\nimport type { WeaverseHydrogen } from '~/index'\nimport { useThemeSettingsStore } from './use-theme-settings-store'\n\nexport function useStudio(weaverse: WeaverseHydrogen) {\n let { revalidate } = useRevalidator()\n let navigation = useNavigation()\n let { pathname, search } = useLocation()\n let navigate = useNavigate()\n let themeSettingsStore = useThemeSettingsStore()\n let { isDesignMode, weaverseHost, weaverseVersion, isPreviewMode } = weaverse\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>\n useEffect(() => {\n if (navigation.state === 'idle') {\n if (isPreviewMode) {\n let previewSrc = `${weaverseHost}/static/studio/hydrogen/preview.js?v=${weaverseVersion}`\n loadScript(previewSrc).catch(console.error)\n } else if (isDesignMode) {\n weaverse.internal = {\n ...weaverse.internal,\n navigate,\n revalidate,\n themeSettingsStore,\n }\n let studioSrc = `${weaverseHost}/static/studio/hydrogen/index.js?v=${weaverseVersion}`\n loadScript(studioSrc)\n .then(() => {\n window.weaverseStudio?.init(weaverse)\n })\n .catch(console.error)\n }\n }\n }, [pathname, search, navigation.state])\n usePixel(weaverse)\n}\n\nexport function usePixel(context: WeaverseHydrogen) {\n let { projectId, pageId, weaverseHost, isDesignMode } = context\n // biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>\n useEffect(() => {\n if (!projectId || !pageId || !weaverseHost || isDesignMode) return\n let url = `${weaverseHost}/api/public/px`\n let img = new Image()\n img.onload = () => img.remove()\n img.src = `${url}?projectId=${projectId}&pageId=${pageId}`\n }, [])\n}\n","import {\n isBrowser,\n type PlatformTypeEnum,\n useSafeExternalStore,\n Weaverse,\n WeaverseItemStore,\n WeaverseRoot,\n} from '@weaverse/react'\nimport {\n type ComponentType,\n createContext,\n type JSX,\n memo,\n Suspense,\n} from 'react'\nimport { ErrorBoundary } from 'react-error-boundary'\nimport { Await, useLoaderData } from 'react-router'\nimport { defaultComponents } from '~/components'\nimport type {\n HydrogenComponentData,\n HydrogenElement,\n HydrogenPageData,\n HydrogenThemeSettings,\n WeaverseInternal,\n WeaverseLoaderRequestInfo,\n} from './index'\nimport type {\n HydrogenComponent,\n WeaverseHydrogenParams,\n WeaverseLoaderData,\n} from './types'\nimport { generateDataFromSchema } from './utils'\nimport { useStudio } from './utils/use-studio'\nimport { useThemeSettingsStore } from './utils/use-theme-settings-store'\n\nexport class WeaverseHydrogenItem extends WeaverseItemStore {\n declare weaverse: WeaverseHydrogen\n\n constructor(initialData: HydrogenComponentData, weaverse: WeaverseHydrogen) {\n super(initialData, weaverse)\n let { data, ...rest } = initialData\n if (!this.Element?.schema) {\n console.error('Element is missing schema or not found!')\n return\n }\n let schemaData = generateDataFromSchema(this.Element.schema)\n Object.assign(this._store, schemaData, data, rest)\n }\n\n get Element(): HydrogenElement {\n return super.Element\n }\n}\n\nWeaverse.ItemConstructor = WeaverseHydrogenItem\n\nexport class WeaverseHydrogen extends Weaverse {\n platformType: PlatformTypeEnum = 'shopify-hydrogen'\n pageId: string\n internal: Partial<WeaverseInternal>\n requestInfo: WeaverseLoaderRequestInfo\n declare ItemConstructor: typeof WeaverseHydrogenItem\n declare data: HydrogenPageData\n static itemInstances: Map<string, WeaverseHydrogenItem>\n static elementRegistry: Map<string, HydrogenElement>\n\n constructor(params: WeaverseHydrogenParams) {\n let { internal, pageId, requestInfo, ...coreParams } = params\n super({ ...coreParams })\n this.internal = internal\n this.pageId = pageId\n this.requestInfo = requestInfo\n }\n}\n\nfunction createWeaverseInstance(\n params: WeaverseHydrogenParams,\n): WeaverseHydrogen {\n if (isBrowser) {\n // Check if the weaverse instance already exists in the window object\n window.__weaverses = window.__weaverses || {}\n let weaverse = window.__weaverses[params.pageId]\n // If the weaverse instance does not exist, or the pathname or search has changed, create a new instance\n if (\n !weaverse ||\n weaverse?.requestInfo?.pathname !== params.requestInfo.pathname ||\n weaverse?.requestInfo?.search !== params.requestInfo.search\n ) {\n weaverse = new WeaverseHydrogen(params)\n window.__weaverses[params.pageId] = weaverse\n }\n if (weaverse?.isDesignMode) {\n weaverse.requestInfo = params.requestInfo\n window.weaverseStudio?.refreshStudio(params)\n }\n return weaverse\n }\n return new WeaverseHydrogen(params)\n}\n\nlet StudioBridge = memo(({ context }: { context: WeaverseHydrogen }) => {\n useStudio(context)\n return null\n})\n\nfunction RenderRoot(props: {\n data: WeaverseLoaderData\n components: HydrogenComponent[]\n}) {\n let { data, components } = props\n for (let comp of [...components, ...defaultComponents]) {\n comp?.schema?.type &&\n registerComponent({\n type: comp?.schema.type,\n Component: comp.default,\n schema: comp.schema,\n loader: comp.loader,\n })\n }\n let { page, configs, project, pageAssignment } = data || {}\n let weaverse = createWeaverseInstance({\n ...configs,\n data: page,\n pageId: page?.id,\n internal: { project, pageAssignment },\n })\n return (\n <>\n <WeaverseRoot context={weaverse} />\n <StudioBridge context={weaverse} />\n </>\n )\n}\n\nexport function registerComponent(element: HydrogenElement) {\n WeaverseHydrogen.registerElement(element)\n}\n\nexport let WeaverseHydrogenRoot = memo(\n ({\n components,\n errorComponent: ErrorComponent = ({ error }) => (\n <div>{error?.message || 'An unexpected error occurred'}</div>\n ),\n }: {\n components: HydrogenComponent[]\n errorComponent?: React.FC<{ error }>\n }) => {\n let loaderData = useLoaderData()\n // @ts-ignore\n let data = loaderData?.weaverseData as\n | WeaverseLoaderData\n | Promise<WeaverseLoaderData>\n\n if (data) {\n if (data instanceof Promise) {\n return (\n <ErrorBoundary fallbackRender={ErrorComponent as any}>\n <Suspense>\n <Await resolve={data}>\n {(resolvedData) => (\n <RenderRoot data={resolvedData} components={components} />\n )}\n </Await>\n </Suspense>\n </ErrorBoundary>\n )\n }\n return <RenderRoot data={data} components={components} />\n }\n return (\n <ErrorComponent\n error={{ message: 'No Weaverse data return from route loader!' }}\n />\n )\n },\n)\n\nlet ThemeSettingsProvider = createContext<HydrogenThemeSettings | null>(null)\nThemeSettingsProvider.displayName = 'WeaverseThemeSettingsProvider'\n\nexport function withWeaverse(Component: ComponentType<any>) {\n return (props: JSX.IntrinsicAttributes) => {\n let { settings } = useThemeSettingsStore()\n return (\n <ThemeSettingsProvider.Provider value={settings}>\n <Component {...props} />\n </ThemeSettingsProvider.Provider>\n )\n }\n}\n\nexport function useThemeSettings<T = HydrogenThemeSettings>() {\n let themeSettingsStore = useThemeSettingsStore()\n let settings = useSafeExternalStore(\n themeSettingsStore.subscribe,\n themeSettingsStore.getSnapshot,\n themeSettingsStore.getServerSnapshot,\n )\n return settings as T\n}\n","import {\n createWithCache,\n generateCacheControlHeader,\n type HydrogenEnv,\n type I18nBase,\n} from '@shopify/hydrogen'\nimport type {\n AllCacheOptions,\n FetchProjectPayload,\n FetchProjectRequestBody,\n HydrogenComponentData,\n HydrogenPageData,\n PageType,\n WeaverseClientArgs,\n WeaverseLoaderData,\n WeaverseProjectConfigs,\n WeaverseStudioQueries,\n} from './types'\nimport {\n generateDataFromSchema,\n getPreviewData,\n getRequestQueries,\n getWeaverseConfigs,\n} from './utils'\n\n// Constants at the top\nconst API_PATH = 'api/public'\nconst DEFAULT_CACHE_STRATEGY = {\n maxAge: 10,\n sMaxAge: 10,\n staleWhileRevalidate: 82800,\n staleIfError: 82800,\n}\n\nexport class WeaverseClient {\n public API = API_PATH\n public basePageConfigs: Omit<WeaverseProjectConfigs, 'requestInfo'>\n public basePageRequestBody: Omit<FetchProjectRequestBody, 'url'>\n public configs: WeaverseProjectConfigs\n public withCache: ReturnType<typeof createWithCache>\n\n // Required dependencies\n public request: WeaverseClientArgs['request']\n public storefront: WeaverseClientArgs['storefront']\n public components: WeaverseClientArgs['components']\n public themeSchema: WeaverseClientArgs['themeSchema']\n public env: WeaverseClientArgs['env']\n public cache: WeaverseClientArgs['cache']\n public waitUntil: WeaverseClientArgs['waitUntil']\n\n constructor(args: WeaverseClientArgs) {\n // Destructure and initialize all dependencies\n const {\n env,\n storefront,\n components,\n cache,\n waitUntil,\n themeSchema,\n request,\n } = args\n\n // Initialize required properties\n this.request = request\n this.storefront = storefront\n this.components = components\n this.themeSchema = themeSchema\n this.env = env\n this.cache = cache\n this.waitUntil = waitUntil\n this.withCache = createWithCache({ cache, waitUntil, request })\n\n // Initialize configs\n this.configs = getWeaverseConfigs(request, env as HydrogenEnv)\n\n // Initialize base configurations\n this.basePageConfigs = {\n projectId: this.configs.projectId,\n weaverseHost: this.configs.weaverseHost,\n weaverseApiKey: this.configs.weaverseApiKey,\n weaverseVersion: this.configs.weaverseVersion,\n isDesignMode: this.configs.isDesignMode,\n }\n\n this.basePageRequestBody = {\n isDesignMode: this.configs.isDesignMode,\n i18n: storefront.i18n,\n projectId: this.configs.projectId,\n }\n }\n\n // Helper method for direct fetching in design mode\n private directFetch = async <T>(\n url: string,\n options: RequestInit = {},\n ): Promise<T> => {\n try {\n let res = await fetch(url, options)\n if (!res.ok) {\n let error = await res.text()\n throw new Error(`${res.status} ${res.statusText} ${error}`)\n }\n return res.json()\n } catch (err) {\n throw new Error(`Failed to fetch data from ${url}`, { cause: err })\n }\n }\n\n public fetchWithCache = async <T extends object>(\n url: string,\n options: RequestInit & { strategy?: AllCacheOptions } = {},\n ): Promise<T> => {\n let {\n strategy = this.storefront.CacheCustom(DEFAULT_CACHE_STRATEGY),\n ...reqInit\n } = options\n let cacheKey = [url, options.body]\n\n if (this.configs.isDesignMode) {\n return this.directFetch<T>(url, reqInit)\n }\n\n return this.withCache.run(\n {\n cacheKey,\n cacheStrategy: strategy,\n shouldCacheResult: (result: any) => result?.data,\n },\n async () => {\n return this.directFetch<T>(url, {\n ...reqInit,\n headers: {\n 'Cache-Control': generateCacheControlHeader(strategy),\n ...reqInit.headers,\n },\n })\n },\n ) as Promise<T>\n }\n\n loadThemeSettings = async (strategy?: AllCacheOptions) => {\n let defaultThemeSettings = generateDataFromSchema(this.themeSchema)\n try {\n let { API, configs } = this\n let { weaverseHost, projectId, isDesignMode } = configs\n if (!projectId) {\n throw new Error('Missing Weaverse projectId!')\n }\n let url = `${weaverseHost}/${API}/project_configs`\n let res: any\n let body = JSON.stringify({ isDesignMode, projectId })\n if (isDesignMode) {\n res = await fetch(url, { method: 'POST', body }).then((res) =>\n res.json(),\n )\n } else {\n res = await this.fetchWithCache(url, {\n method: 'POST',\n strategy,\n body,\n })\n }\n let data: any = res || {}\n if (this.themeSchema?.inspector) {\n data.theme = {\n ...defaultThemeSettings,\n ...data.theme,\n }\n }\n if (this.configs.isDesignMode) {\n data = {\n ...data,\n schema: this.themeSchema,\n publicEnv: this.configs.publicEnv,\n }\n }\n return data\n } catch (e) {\n console.info('Unable to load theme settings', e)\n return defaultThemeSettings\n }\n }\n\n generateFallbackPage = (message: string): HydrogenPageData => {\n let rootId = crypto.randomUUID()\n return {\n id: `fallback_page_${Date.now()}`,\n rootId,\n name: 'Default Page',\n items: [\n {\n type: 'main',\n id: rootId,\n data: { dangerouslySetInnerHTML: { __html: message } },\n },\n ],\n }\n }\n\n loadPage = async (\n params: {\n type?: PageType\n locale?: string\n handle?: string\n strategy?: AllCacheOptions\n } = {},\n ): Promise<WeaverseLoaderData | null> => {\n try {\n let { request, storefront, basePageRequestBody, basePageConfigs } = this\n let {\n projectId,\n isDesignMode,\n weaverseHost,\n isPreviewMode,\n sectionType,\n } = this.configs\n\n if (isPreviewMode) {\n return getPreviewData(sectionType, this.components, weaverseHost)\n }\n\n if (!projectId) {\n throw new Error('Missing Weaverse projectId!')\n }\n\n let { strategy, ...pageLoadParams } = params\n let body: {\n projectId: string\n url: string\n i18n?: I18nBase\n params?: {\n type?: PageType\n locale?: string\n handle?: string\n }\n isDesignMode?: boolean\n } = {\n ...basePageRequestBody,\n params: pageLoadParams,\n url: request.url,\n }\n\n let reqInit: RequestInit = {\n method: 'POST',\n body: JSON.stringify(body),\n }\n let url = `${weaverseHost}/${this.API}/project`\n let payload: FetchProjectPayload\n\n if (isDesignMode) {\n payload = await fetch(url, reqInit).then((res) => res.json())\n } else {\n payload = await this.fetchWithCache(url, {\n ...reqInit,\n strategy,\n })\n }\n\n if (payload?.error) {\n throw new Error(payload?.error)\n }\n let { page, project, pageAssignment } = payload\n if (!project) {\n console.error('Weaverse project not found. Id:', projectId)\n project = {\n id: projectId,\n name: 'Weaverse project not found.',\n weaverseShopId: '',\n }\n page = this.generateFallbackPage('Weaverse project not found.')\n }\n if (!page) {\n page = this.generateFallbackPage('Please add new section to start.')\n }\n if (page?.items) {\n let items = page.items\n page.items = await Promise.all(items.map(this.execComponentLoader))\n }\n return {\n page,\n project,\n pageAssignment,\n configs: {\n ...basePageConfigs,\n requestInfo: {\n i18n: storefront.i18n,\n queries: getRequestQueries<WeaverseStudioQueries>(request),\n pathname: new URL(request.url).pathname,\n search: new URL(request.url).search,\n },\n },\n }\n } catch (e) {\n // biome-ignore lint/style/noUnusedTemplateLiteral: <explanation>\n console.error(`❌ Page load failed.`, e)\n return null\n }\n }\n\n execComponentLoader = async (item: HydrogenComponentData) => {\n let { data = {}, type, id } = item\n let component = this.components.find(({ schema }) => schema?.type === type)\n let loader = component?.loader\n if (typeof loader === 'function') {\n try {\n return {\n ...item,\n loaderData: await Promise.resolve(\n loader({\n data: { ...generateDataFromSchema(component.schema), ...data },\n weaverse: this,\n }),\n ),\n }\n } catch (e) {\n console.warn('❌ Item loader run failed.', type, id, e)\n return item\n }\n }\n return item\n }\n}\n","import { getSelectedProductOptions as hydrogen_getSelectedProductOptions } from '@shopify/hydrogen'\nimport type { SelectedOptionInput } from '@shopify/hydrogen/storefront-api-types'\nimport {\n isBrowser,\n isIframe,\n useChildInstances,\n useItemInstance,\n useParentInstance,\n useWeaverse,\n} from '@weaverse/react'\n\nexport function getSelectedProductOptions(\n request: Request,\n): SelectedOptionInput[] {\n let options = hydrogen_getSelectedProductOptions(request)\n return options.filter(\n ({ name }) => name !== 'isDesignMode' && !name.startsWith('weaverse'),\n )\n}\n\nexport const IMAGES_PLACEHOLDERS = {\n logo_white:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-logo-w-600x200.svg',\n logo_black:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-logo-k-600x200.svg',\n image:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-image-1024x1024.svg',\n banner_1:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-lifestyle-1-1800x900.svg',\n banner_2:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-lifestyle-2-1800x900.svg',\n collection_1:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-collection-hats-1024x1024.svg',\n collection_2:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-collection-shoes-1024x1024.svg',\n collection_3:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-collection-glasses-1024x1024.svg',\n collection_4:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-collection-lamps-1024x1024.svg',\n collection_5:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-collection-bags-1024x1024.svg',\n collection_6:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-collection-watches-1024x1024.svg',\n product_1:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-watch-3-1024x1024.svg',\n product_2:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-bag-2-1024x1024.svg',\n product_3:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-shoe-1-1024x1024.svg',\n product_4:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-lamp-2-1024x1024.svg',\n product_5:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-glasses-1-1024x1024.svg',\n product_6:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-lamp-1-1024x1024.svg',\n product_7:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-glasses-2-1024x1024.svg',\n product_8:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-hat-3-1024x1024.svg',\n product_9:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-bag-1-1024x1024.svg',\n product_10:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-shoe-2-1024x1024.svg',\n product_11:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-hat-2-1024x1024.svg',\n product_12:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-glasses-3-1024x1024.svg',\n product_13:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-shoe-3-1024x1024.svg',\n product_14:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-bag-3-1024x1024.svg',\n product_15:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-hat-1-1024x1024.svg',\n product_16:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-lamp-3-1024x1024.svg',\n product_17:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-watch-1-1024x1024.svg',\n product_18:\n 'https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-watch-2-1024x1024.svg',\n}\n\nexport {\n isBrowser,\n isIframe,\n useChildInstances,\n useItemInstance,\n useParentInstance,\n useWeaverse,\n}\nexport * from './types'\nexport * from './WeaverseHydrogenRoot'\nexport * from './weaverse-client'\n\nexport * from '@weaverse/schema'\n"]}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@weaverse/hydrogen",
|
|
3
3
|
"author": "Weaverse Team",
|
|
4
4
|
"description": "Components, hooks, and utilities for building Shopify Hydrogen websites with Weaverse",
|
|
5
|
-
"version": "5.
|
|
5
|
+
"version": "5.2.0",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"main": "dist/index.js",
|
|
8
8
|
"typings": "dist/index.d.ts",
|
|
@@ -38,7 +38,8 @@
|
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"@shopify/hydrogen": ">=2025.5",
|
|
40
40
|
"@shopify/remix-oxygen": "3",
|
|
41
|
-
"@weaverse/react": "5.
|
|
41
|
+
"@weaverse/react": "5.2.0",
|
|
42
|
+
"@weaverse/schema": "0.4.0",
|
|
42
43
|
"react": ">=18",
|
|
43
44
|
"react-dom": ">=18",
|
|
44
45
|
"react-error-boundary": "^6",
|