@weaverse/hydrogen 4.2.0 → 4.2.2
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 +5 -5
- package/dist/index.d.ts +5 -5
- package/dist/index.js +45 -35
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +45 -35
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.d.mts
CHANGED
|
@@ -47,7 +47,8 @@ declare class WeaverseClient {
|
|
|
47
47
|
waitUntil: WeaverseClientArgs['waitUntil'];
|
|
48
48
|
countries?: WeaverseClientArgs['countries'];
|
|
49
49
|
constructor(args: WeaverseClientArgs);
|
|
50
|
-
|
|
50
|
+
private directFetch;
|
|
51
|
+
fetchWithCache<T extends object>(url: string, options?: FetchWithCacheOptions): Promise<T>;
|
|
51
52
|
loadThemeSettings: (strategy?: AllCacheOptions) => Promise<any>;
|
|
52
53
|
generateFallbackPage: (message: string) => HydrogenPageData;
|
|
53
54
|
loadPage: (params?: LoadPageParams) => Promise<WeaverseLoaderData | null>;
|
|
@@ -70,9 +71,7 @@ interface AllCacheOptions {
|
|
|
70
71
|
}
|
|
71
72
|
type ComponentLoaderArgs<T = any, E = any> = {
|
|
72
73
|
data: T;
|
|
73
|
-
weaverse:
|
|
74
|
-
env: E;
|
|
75
|
-
};
|
|
74
|
+
weaverse: WeaverseClient;
|
|
76
75
|
};
|
|
77
76
|
interface RouteLoaderArgs extends LoaderFunctionArgs {
|
|
78
77
|
context: AppLoadContext & {
|
|
@@ -102,8 +101,9 @@ interface HydrogenComponentSchema extends ElementSchema {
|
|
|
102
101
|
};
|
|
103
102
|
toolbar?: (HydrogenToolbarAction | HydrogenToolbarAction[])[];
|
|
104
103
|
}
|
|
105
|
-
type BasicInput = BasicInput$1 & {
|
|
104
|
+
type BasicInput = Omit<BasicInput$1, 'condition'> & {
|
|
106
105
|
shouldRevalidate?: boolean;
|
|
106
|
+
condition?: string | ((data: ElementData, weaverse: WeaverseHydrogen) => boolean);
|
|
107
107
|
};
|
|
108
108
|
type HeadingInputType = 'heading';
|
|
109
109
|
type HeadingInput = {
|
package/dist/index.d.ts
CHANGED
|
@@ -47,7 +47,8 @@ declare class WeaverseClient {
|
|
|
47
47
|
waitUntil: WeaverseClientArgs['waitUntil'];
|
|
48
48
|
countries?: WeaverseClientArgs['countries'];
|
|
49
49
|
constructor(args: WeaverseClientArgs);
|
|
50
|
-
|
|
50
|
+
private directFetch;
|
|
51
|
+
fetchWithCache<T extends object>(url: string, options?: FetchWithCacheOptions): Promise<T>;
|
|
51
52
|
loadThemeSettings: (strategy?: AllCacheOptions) => Promise<any>;
|
|
52
53
|
generateFallbackPage: (message: string) => HydrogenPageData;
|
|
53
54
|
loadPage: (params?: LoadPageParams) => Promise<WeaverseLoaderData | null>;
|
|
@@ -70,9 +71,7 @@ interface AllCacheOptions {
|
|
|
70
71
|
}
|
|
71
72
|
type ComponentLoaderArgs<T = any, E = any> = {
|
|
72
73
|
data: T;
|
|
73
|
-
weaverse:
|
|
74
|
-
env: E;
|
|
75
|
-
};
|
|
74
|
+
weaverse: WeaverseClient;
|
|
76
75
|
};
|
|
77
76
|
interface RouteLoaderArgs extends LoaderFunctionArgs {
|
|
78
77
|
context: AppLoadContext & {
|
|
@@ -102,8 +101,9 @@ interface HydrogenComponentSchema extends ElementSchema {
|
|
|
102
101
|
};
|
|
103
102
|
toolbar?: (HydrogenToolbarAction | HydrogenToolbarAction[])[];
|
|
104
103
|
}
|
|
105
|
-
type BasicInput = BasicInput$1 & {
|
|
104
|
+
type BasicInput = Omit<BasicInput$1, 'condition'> & {
|
|
106
105
|
shouldRevalidate?: boolean;
|
|
106
|
+
condition?: string | ((data: ElementData, weaverse: WeaverseHydrogen) => boolean);
|
|
107
107
|
};
|
|
108
108
|
type HeadingInputType = 'heading';
|
|
109
109
|
type HeadingInput = {
|
package/dist/index.js
CHANGED
|
@@ -255,6 +255,7 @@ function usePixel(context) {
|
|
|
255
255
|
let url = `${weaverseHost}/api/public/px`;
|
|
256
256
|
let img = new Image();
|
|
257
257
|
img.onload = () => {
|
|
258
|
+
img.remove();
|
|
258
259
|
};
|
|
259
260
|
img.src = `${url}?projectId=${projectId}&pageId=${pageId}`;
|
|
260
261
|
}, []);
|
|
@@ -376,12 +377,19 @@ function withWeaverse(Component) {
|
|
|
376
377
|
function FallbackError({ error }) {
|
|
377
378
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { children: error?.message || "An unexpected error occurred" });
|
|
378
379
|
}
|
|
380
|
+
var API_PATH = "api/public";
|
|
381
|
+
var DEFAULT_CACHE_STRATEGY = {
|
|
382
|
+
maxAge: 5,
|
|
383
|
+
sMaxAge: 5,
|
|
384
|
+
staleWhileRevalidate: 82800
|
|
385
|
+
};
|
|
379
386
|
var WeaverseClient = class {
|
|
380
|
-
API =
|
|
387
|
+
API = API_PATH;
|
|
381
388
|
basePageConfigs;
|
|
382
389
|
basePageRequestBody;
|
|
383
390
|
configs;
|
|
384
391
|
withCache;
|
|
392
|
+
// Required dependencies
|
|
385
393
|
request;
|
|
386
394
|
storefront;
|
|
387
395
|
components;
|
|
@@ -391,7 +399,7 @@ var WeaverseClient = class {
|
|
|
391
399
|
waitUntil;
|
|
392
400
|
countries;
|
|
393
401
|
constructor(args) {
|
|
394
|
-
|
|
402
|
+
const {
|
|
395
403
|
env,
|
|
396
404
|
storefront,
|
|
397
405
|
components,
|
|
@@ -424,50 +432,50 @@ var WeaverseClient = class {
|
|
|
424
432
|
projectId: this.configs.projectId
|
|
425
433
|
};
|
|
426
434
|
}
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
}
|
|
435
|
+
// Helper method for direct fetching in design mode
|
|
436
|
+
async directFetch(url, options = {}) {
|
|
437
|
+
try {
|
|
438
|
+
const res = await fetch(url, options);
|
|
439
|
+
if (!res.ok) {
|
|
440
|
+
const error = await res.text();
|
|
441
|
+
throw new Error(`${res.status} ${res.statusText} ${error}`);
|
|
442
|
+
}
|
|
443
|
+
return res.json();
|
|
444
|
+
} catch (err) {
|
|
445
|
+
throw new Error(`Failed to fetch data from ${url}`, { cause: err });
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
async fetchWithCache(url, options = {}) {
|
|
449
|
+
const {
|
|
450
|
+
strategy = this.storefront.CacheCustom(DEFAULT_CACHE_STRATEGY),
|
|
435
451
|
...reqInit
|
|
436
452
|
} = options;
|
|
453
|
+
const cacheKey = [url, options.body];
|
|
437
454
|
if (this.configs.isDesignMode) {
|
|
438
|
-
|
|
439
|
-
const res2 = await fetch(url, reqInit);
|
|
440
|
-
return await res2.json();
|
|
441
|
-
} catch (err) {
|
|
442
|
-
throw new Error(`Failed to fetch data from ${url}`, { cause: err });
|
|
443
|
-
}
|
|
455
|
+
return this.directFetch(url, reqInit);
|
|
444
456
|
}
|
|
445
|
-
|
|
457
|
+
return this.withCache.run(
|
|
446
458
|
{
|
|
447
459
|
cacheKey,
|
|
448
460
|
cacheStrategy: strategy,
|
|
449
|
-
// @ts-expect-error
|
|
450
461
|
shouldCacheResult: (result) => result?.data
|
|
451
462
|
},
|
|
452
463
|
async () => {
|
|
453
|
-
|
|
464
|
+
return this.directFetch(url, {
|
|
454
465
|
...reqInit,
|
|
455
466
|
headers: {
|
|
456
467
|
"Cache-Control": hydrogen.generateCacheControlHeader(strategy),
|
|
457
468
|
...reqInit.headers
|
|
458
469
|
}
|
|
459
470
|
});
|
|
460
|
-
if (!response.ok) {
|
|
461
|
-
let error = await response.text();
|
|
462
|
-
let { status, statusText } = response;
|
|
463
|
-
throw new Error(`${status} ${statusText} ${error}`, { cause: error });
|
|
464
|
-
}
|
|
465
|
-
return await response.json();
|
|
466
471
|
}
|
|
467
472
|
);
|
|
468
|
-
|
|
469
|
-
};
|
|
473
|
+
}
|
|
470
474
|
loadThemeSettings = async (strategy) => {
|
|
475
|
+
let defaultThemeSettings = {};
|
|
476
|
+
if (this.themeSchema) {
|
|
477
|
+
defaultThemeSettings = generateDataFromSchema(this.themeSchema);
|
|
478
|
+
}
|
|
471
479
|
try {
|
|
472
480
|
let { API, configs } = this;
|
|
473
481
|
let { weaverseHost, projectId, isDesignMode } = configs;
|
|
@@ -490,10 +498,6 @@ var WeaverseClient = class {
|
|
|
490
498
|
}
|
|
491
499
|
let data = res || {};
|
|
492
500
|
if (data?.theme && this.themeSchema?.inspector) {
|
|
493
|
-
let defaultThemeSettings = {};
|
|
494
|
-
if (this.themeSchema) {
|
|
495
|
-
defaultThemeSettings = generateDataFromSchema(this.themeSchema);
|
|
496
|
-
}
|
|
497
501
|
data.theme = {
|
|
498
502
|
...defaultThemeSettings,
|
|
499
503
|
...data.theme
|
|
@@ -509,8 +513,8 @@ var WeaverseClient = class {
|
|
|
509
513
|
}
|
|
510
514
|
return data;
|
|
511
515
|
} catch (e) {
|
|
512
|
-
console.
|
|
513
|
-
return
|
|
516
|
+
console.info("Unable to load theme settings", e);
|
|
517
|
+
return defaultThemeSettings;
|
|
514
518
|
}
|
|
515
519
|
};
|
|
516
520
|
generateFallbackPage = (message) => {
|
|
@@ -574,7 +578,13 @@ var WeaverseClient = class {
|
|
|
574
578
|
}
|
|
575
579
|
let { page, project, pageAssignment } = payload;
|
|
576
580
|
if (!project) {
|
|
577
|
-
|
|
581
|
+
console.error("Weaverse project not found. Id:", projectId);
|
|
582
|
+
project = {
|
|
583
|
+
id: projectId,
|
|
584
|
+
name: "Weaverse project not found.",
|
|
585
|
+
weaverseShopId: ""
|
|
586
|
+
};
|
|
587
|
+
page = this.generateFallbackPage("Weaverse project not found.");
|
|
578
588
|
}
|
|
579
589
|
if (!page) {
|
|
580
590
|
page = this.generateFallbackPage("Please add new section to start.");
|
|
@@ -600,7 +610,7 @@ var WeaverseClient = class {
|
|
|
600
610
|
};
|
|
601
611
|
} catch (e) {
|
|
602
612
|
console.error(`\u274C Page load failed.`, e);
|
|
603
|
-
|
|
613
|
+
return null;
|
|
604
614
|
}
|
|
605
615
|
};
|
|
606
616
|
execComponentLoader = async (item) => {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils.ts","../src/hooks/use-theme-settings.ts","../src/hooks/use-studio.ts","../src/Effect.tsx","../src/components/main.tsx","../src/components/index.ts","../src/context.ts","../src/WeaverseHydrogenRoot.tsx","../src/weaverse-client.ts","../src/wrappers.ts","../src/placeholders.ts","../src/index.ts"],"names":["type","children","data","EventEmitter","schema","isBrowser","useRouteLoaderData","useSyncExternalStore","useRevalidator","useNavigation","useLocation","useNavigate","useEffect","loadScript","memo","forwardRef","jsx","createContext","useLoaderData","ErrorBoundary","Suspense","Await","jsxs","Fragment","WeaverseRoot","createWithCache","res","generateCacheControlHeader","hydrogen_getSelectedProductOptions","Weaverse","WeaverseItemStore"],"mappings":"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","file":"index.js","sourcesContent":["import type { HydrogenEnv } from '@shopify/hydrogen'\nimport type {\n HydrogenComponent,\n HydrogenComponentSchema,\n HydrogenThemeSchema,\n WeaverseProjectConfigs,\n WeaverseStudioQueries,\n} from './types'\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 WEAVERSE_HOST ||\n weaverseHost ||\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 inspector,\n}: HydrogenComponentSchema | HydrogenThemeSchema) {\n let data: Record<string, any> = {}\n if (inspector) {\n for (let group of inspector) {\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\n/**\n * Resize an image to the specified dimensions.\n *\n * @param imageURL {string} URL of the image\n * @param size {string} Shopify size attribute\n * @returns {string} URL with size attribute\n *\n * @example\n * resizeImage('https://cdn.shopify.com/image.jpg', '100x')\n * resizeImage('https://cdn.shopify.com/image.jpg', '100x100')\n */\nexport function resizeShopifyImage(imageURL: string, size: string): string {\n try {\n if (!imageURL.includes('cdn.shopify.com') || size === 'original') {\n return imageURL\n }\n let [, path, ext] = imageURL.match(/(.*\\/[\\w-_.]+)\\.(\\w{2,4})/)\n return `${path}_${size}.${ext}`\n } catch (e) {\n return imageURL\n }\n}\n\nexport function recursivelyAddDataItem(\n type: string,\n components: HydrogenComponent<any>[],\n items: any[],\n initData?: object,\n) {\n const component = components.find((c) => c.schema.type === type)\n if (!component) {\n return\n }\n let childIDs = []\n // generate id for item\n const id = crypto.randomUUID()\n const { children, ...data } = component.schema?.presets || {}\n if (children) {\n for (const child of children) {\n const { type, children, ...data } = child\n const childID = recursivelyAddDataItem(\n child.type,\n components,\n items,\n data,\n )\n childIDs.push({\n id: childID,\n })\n }\n }\n items.push({\n data: { ...data, ...initData },\n id,\n type,\n children: childIDs,\n })\n return id\n}\nexport function getPreviewData(type: string, components, weaverseHost: string) {\n const initialData = {\n project: {\n id: 'x',\n weaverseShopId: 'shopid',\n name: 'Section Preview',\n },\n // pageAssignment: {\n // projectId: \"x\",\n // type: \"CUSTOM\",\n // locale: \"en-us\",\n // handle: \"\",\n // },\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 }\n let items = []\n const id = recursivelyAddDataItem(type, components, items)\n const page = {\n id: '0',\n name: 'Preview section',\n rootId: '1',\n items: [\n {\n data: {},\n id: '1',\n type: 'main',\n children: [\n {\n id,\n },\n ],\n },\n ...items,\n ],\n }\n const previewData = {\n ...initialData,\n page,\n }\n return previewData\n}\n","import { useRouteLoaderData } from '@remix-run/react'\nimport { isBrowser, EventEmitter } from '@weaverse/react'\nimport { useSyncExternalStore } from 'react'\nimport type {\n HydrogenThemeSchema,\n HydrogenThemeSettings,\n Localizations,\n PublicEnv,\n RootRouteData,\n} from '~/types'\n\nexport class ThemeSettingsStore extends EventEmitter{\n settings: HydrogenThemeSettings = {}\n countries?: Localizations\n schema?: HydrogenThemeSchema\n publicEnv?: PublicEnv\n\n constructor(data: RootRouteData['weaverseTheme']) {\n super()\n let { theme, countries, schema, publicEnv } = data || {}\n this.settings = { ...theme }\n this.countries = countries\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\n getSnapshot = () => {\n return this.settings\n }\n\n getServerSnapshot = () => {\n return this.settings\n }\n\n}\n\nexport function useThemeSettingsStore() {\n let data = useRouteLoaderData('root') as RootRouteData\n if (isBrowser && window.__weaverseThemeSettingsStore) {\n return window.__weaverseThemeSettingsStore\n }\n return new ThemeSettingsStore(data?.weaverseTheme)\n}\n\nexport function useThemeSettings<T = HydrogenThemeSettings>() {\n let themeSettingsStore = useThemeSettingsStore()\n let settings = useSyncExternalStore(\n themeSettingsStore.subscribe,\n themeSettingsStore.getSnapshot,\n themeSettingsStore.getServerSnapshot,\n )\n return settings as T\n}\n","import {\n useLocation,\n useNavigate,\n useNavigation,\n useRevalidator,\n} from '@remix-run/react'\nimport { loadScript } from '@weaverse/react'\nimport { useEffect } from 'react'\nimport type { WeaverseHydrogen } from '~/index'\nimport { useThemeSettingsStore } from './use-theme-settings'\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\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 = () => {}\n img.src = `${url}?projectId=${projectId}&pageId=${pageId}`\n }, [])\n}\n","import { memo } from 'react'\nimport { useStudio } from '~/hooks/use-studio'\nimport type { WeaverseHydrogen } from './index'\n\nexport let WeaverseEffect = memo(\n ({ context }: { context: WeaverseHydrogen }) => {\n useStudio(context)\n return null\n },\n)\n","import React, { forwardRef, 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*/\nlet Main = forwardRef<\n HTMLDivElement,\n HydrogenComponentProps & HTMLAttributes<HTMLDivElement>\n>((props, ref) => {\n let { children, dangerouslySetInnerHTML, ...rest } = props\n\n return (\n <div\n ref={ref}\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 inspector: [],\n}\n","import * as Main from './main'\n\nimport type { HydrogenComponent } from '~/types'\n\nexport let defaultComponents: HydrogenComponent[] = [Main]\n","import { isBrowser } from '@weaverse/react'\nimport { createContext } from 'react'\nimport { defaultComponents } from '~/components'\nimport { WeaverseHydrogen } from './index'\nimport type {\n HydrogenComponent,\n HydrogenThemeSettings,\n WeaverseHydrogenParams,\n WeaverseLoaderData,\n} from './types'\n\nfunction registerComponents(components: HydrogenComponent[]) {\n for (const comp of components) {\n comp?.schema?.type &&\n WeaverseHydrogen.registerElement({\n type: comp?.schema.type,\n Component: comp.default,\n schema: comp.schema,\n loader: comp.loader,\n })\n }\n}\n\nfunction createCachedWeaverseInstance(\n params: WeaverseHydrogenParams,\n): WeaverseHydrogen {\n if (isBrowser) {\n window.__weaverses = window.__weaverses || {}\n let weaverse = window.__weaverses[params.pageId]\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\nexport function createWeaverseInstance(\n weaverseData: WeaverseLoaderData,\n components: HydrogenComponent[],\n) {\n let { page, configs, project, pageAssignment } = weaverseData || {}\n registerComponents(components)\n registerComponents(defaultComponents)\n return createCachedWeaverseInstance({\n ...configs,\n data: page,\n pageId: page?.id,\n internal: { project, pageAssignment },\n })\n}\n\nexport let STORE_PAGES = {\n INDEX: 'INDEX',\n PRODUCT: 'PRODUCT',\n ALL_PRODUCTS: 'ALL_PRODUCTS',\n COLLECTION: 'COLLECTION',\n COLLECTION_LIST: 'COLLECTION_LIST',\n PAGE: 'PAGE',\n BLOG: 'BLOG',\n ARTICLE: 'ARTICLE',\n CUSTOM: 'CUSTOM',\n}\n\nexport let ThemeSettingsProvider = createContext<HydrogenThemeSettings | null>(\n null,\n)\nThemeSettingsProvider.displayName = 'WeaverseThemeSettingsProvider'\n","import { Await, useLoaderData } from '@remix-run/react'\nimport { WeaverseRoot } from '@weaverse/react'\nimport { type ComponentType, type JSX, Suspense, memo } from 'react'\nimport { ErrorBoundary } from 'react-error-boundary'\n\nimport { WeaverseEffect } from '~/Effect'\nimport { ThemeSettingsProvider, createWeaverseInstance } from './context'\nimport { useThemeSettingsStore } from './hooks/use-theme-settings'\nimport type {\n HydrogenComponent,\n WeaverseHydrogenRootProps,\n WeaverseLoaderData,\n} from './types'\n\ntype WeaverseData = WeaverseLoaderData | Promise<WeaverseLoaderData>\n\nexport let WeaverseHydrogenRoot = memo(\n ({\n errorComponent: ErrorComponent = FallbackError,\n components,\n }: WeaverseHydrogenRootProps) => {\n let loaderData = useLoaderData() as {\n weaverseData: WeaverseData\n }\n let data = loaderData?.weaverseData\n\n if (data) {\n if (data instanceof Promise) {\n return (\n <ErrorBoundary fallbackRender={ErrorComponent}>\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\nfunction RenderRoot(props: {\n data: WeaverseLoaderData\n components: HydrogenComponent[]\n}) {\n let { data, components } = props\n let weaverse = createWeaverseInstance(data, components)\n return (\n <>\n <WeaverseRoot context={weaverse} />\n <WeaverseEffect context={weaverse} />\n </>\n )\n}\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\nfunction FallbackError({ error }: { error?: { message?: string } }) {\n return <div>{error?.message || 'An unexpected error occurred'}</div>\n}\n","import {\n type HydrogenEnv,\n createWithCache,\n generateCacheControlHeader,\n} from '@shopify/hydrogen'\nimport type {\n AllCacheOptions,\n FetchProjectPayload,\n FetchProjectRequestBody,\n FetchWithCacheOptions,\n HydrogenComponentData,\n HydrogenPageData,\n LoadPageParams,\n WeaverseClientArgs,\n WeaverseLoaderData,\n WeaverseProjectConfigs,\n WeaverseStudioQueries,\n} from './types'\nimport {\n generateDataFromSchema,\n getPreviewData,\n getRequestQueries,\n getWeaverseConfigs,\n} from './utils'\n\nexport class WeaverseClient {\n API = 'api/public'\n basePageConfigs: Omit<WeaverseProjectConfigs, 'requestInfo'>\n basePageRequestBody: Omit<FetchProjectRequestBody, 'url' | 'countries'>\n configs: WeaverseProjectConfigs\n withCache: ReturnType<typeof createWithCache>\n\n request: WeaverseClientArgs['request']\n storefront: WeaverseClientArgs['storefront']\n components: WeaverseClientArgs['components']\n themeSchema: WeaverseClientArgs['themeSchema']\n env: WeaverseClientArgs['env']\n cache: WeaverseClientArgs['cache']\n waitUntil: WeaverseClientArgs['waitUntil']\n countries?: WeaverseClientArgs['countries']\n\n constructor(args: WeaverseClientArgs) {\n let {\n env,\n storefront,\n components,\n countries,\n cache,\n waitUntil,\n themeSchema,\n request,\n } = args\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.countries = countries\n this.withCache = createWithCache({ cache, waitUntil, request })\n\n this.configs = getWeaverseConfigs(request, env as HydrogenEnv)\n\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 this.basePageRequestBody = {\n isDesignMode: this.configs.isDesignMode,\n i18n: storefront.i18n,\n projectId: this.configs.projectId,\n }\n }\n\n fetchWithCache = async <T extends object>(\n url: string,\n options: FetchWithCacheOptions = {},\n ) => {\n let cacheKey = [url, options.body]\n let {\n strategy = this.storefront.CacheCustom({\n maxAge: 1,\n sMaxAge: 1,\n staleWhileRevalidate: 82800,\n }),\n ...reqInit\n } = options\n if (this.configs.isDesignMode) {\n try {\n const res = await fetch(url, reqInit)\n return await res.json<T>()\n } catch (err) {\n throw new Error(`Failed to fetch data from ${url}`, { cause: err })\n }\n }\n let res = this.withCache.run(\n {\n cacheKey,\n cacheStrategy: strategy,\n // @ts-expect-error\n shouldCacheResult: (result) => result?.data,\n },\n async () => {\n let response = await fetch(url, {\n ...reqInit,\n headers: {\n 'Cache-Control': generateCacheControlHeader(strategy),\n ...reqInit.headers,\n },\n })\n if (!response.ok) {\n let error = await response.text()\n let { status, statusText } = response\n throw new Error(`${status} ${statusText} ${error}`, { cause: error })\n }\n return await response.json<T>()\n },\n )\n return res as Promise<T>\n }\n\n loadThemeSettings = async (strategy?: AllCacheOptions) => {\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 (data?.theme && this.themeSchema?.inspector) {\n let defaultThemeSettings = {}\n if (this.themeSchema) {\n defaultThemeSettings = generateDataFromSchema(this.themeSchema)\n }\n data.theme = {\n ...defaultThemeSettings,\n ...data.theme,\n }\n }\n if (this.configs.isDesignMode) {\n data = {\n ...data,\n schema: this.themeSchema,\n countries: this.countries || [],\n publicEnv: this.configs.publicEnv,\n }\n }\n return data\n } catch (e) {\n console.error('❌ Theme settings load failed.', e)\n return null\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: LoadPageParams = {},\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 if (isPreviewMode) {\n const previewData = getPreviewData(\n sectionType,\n this.components,\n weaverseHost,\n )\n return previewData as unknown as WeaverseLoaderData\n }\n\n if (!projectId) {\n throw new Error('Missing Weaverse projectId!')\n }\n\n let { strategy, ...pageLoadParams } = params\n let body: FetchProjectRequestBody = {\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 throw new Error(`Weaverse project not found. Id: ${projectId}`)\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 // TODO: @hta218 - migrate to Remix hooks\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 throw e\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'\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","export let 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","import {\n type PlatformTypeEnum,\n Weaverse,\n WeaverseItemStore,\n isBrowser,\n isIframe,\n useChildInstances,\n useItemInstance,\n useParentInstance,\n useWeaverse,\n} from '@weaverse/react'\nimport type {\n HydrogenComponentData,\n HydrogenElement,\n HydrogenPageData,\n WeaverseHydrogenParams,\n WeaverseInternal,\n WeaverseLoaderRequestInfo,\n} from './types'\nimport { generateDataFromSchema } from './utils'\n\nexport * from './WeaverseHydrogenRoot'\nexport { useThemeSettings } from './hooks/use-theme-settings'\nexport * from './types'\nexport * from './utils'\nexport * from './weaverse-client'\nexport * from './wrappers'\nexport * from './placeholders'\nexport {\n useChildInstances,\n useItemInstance,\n useParentInstance,\n useWeaverse,\n isBrowser,\n isIframe,\n}\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\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 Object.assign(this._store, this._schemaData, data, rest)\n }\n\n get Element(): HydrogenElement {\n return super.Element\n }\n\n get _schemaData() {\n if (this.Element?.schema) {\n return generateDataFromSchema(this.Element.schema)\n }\n return {}\n }\n}\n\nWeaverse.ItemConstructor = WeaverseHydrogenItem\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/utils.ts","../src/hooks/use-theme-settings.ts","../src/hooks/use-studio.ts","../src/Effect.tsx","../src/components/main.tsx","../src/components/index.ts","../src/context.ts","../src/WeaverseHydrogenRoot.tsx","../src/weaverse-client.ts","../src/wrappers.ts","../src/placeholders.ts","../src/index.ts"],"names":["type","children","data","EventEmitter","schema","isBrowser","useRouteLoaderData","useSyncExternalStore","useRevalidator","useNavigation","useLocation","useNavigate","useEffect","loadScript","memo","forwardRef","jsx","createContext","useLoaderData","ErrorBoundary","Suspense","Await","jsxs","Fragment","WeaverseRoot","createWithCache","generateCacheControlHeader","res","hydrogen_getSelectedProductOptions","Weaverse","WeaverseItemStore"],"mappings":"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","file":"index.js","sourcesContent":["import type { HydrogenEnv } from '@shopify/hydrogen'\nimport type {\n HydrogenComponent,\n HydrogenComponentSchema,\n HydrogenThemeSchema,\n WeaverseProjectConfigs,\n WeaverseStudioQueries,\n} from './types'\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 WEAVERSE_HOST ||\n weaverseHost ||\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 inspector,\n}: HydrogenComponentSchema | HydrogenThemeSchema) {\n let data: Record<string, any> = {}\n if (inspector) {\n for (let group of inspector) {\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\n/**\n * Resize an image to the specified dimensions.\n *\n * @param imageURL {string} URL of the image\n * @param size {string} Shopify size attribute\n * @returns {string} URL with size attribute\n *\n * @example\n * resizeImage('https://cdn.shopify.com/image.jpg', '100x')\n * resizeImage('https://cdn.shopify.com/image.jpg', '100x100')\n */\nexport function resizeShopifyImage(imageURL: string, size: string): string {\n try {\n if (!imageURL.includes('cdn.shopify.com') || size === 'original') {\n return imageURL\n }\n let [, path, ext] = imageURL.match(/(.*\\/[\\w-_.]+)\\.(\\w{2,4})/)\n return `${path}_${size}.${ext}`\n } catch (e) {\n return imageURL\n }\n}\n\nexport function recursivelyAddDataItem(\n type: string,\n components: HydrogenComponent<any>[],\n items: any[],\n initData?: object,\n) {\n const component = components.find((c) => c.schema.type === type)\n if (!component) {\n return\n }\n let childIDs = []\n // generate id for item\n const id = crypto.randomUUID()\n const { children, ...data } = component.schema?.presets || {}\n if (children) {\n for (const child of children) {\n const { type, children, ...data } = child\n const childID = recursivelyAddDataItem(\n child.type,\n components,\n items,\n data,\n )\n childIDs.push({\n id: childID,\n })\n }\n }\n items.push({\n data: { ...data, ...initData },\n id,\n type,\n children: childIDs,\n })\n return id\n}\nexport function getPreviewData(type: string, components, weaverseHost: string) {\n const initialData = {\n project: {\n id: 'x',\n weaverseShopId: 'shopid',\n name: 'Section Preview',\n },\n // pageAssignment: {\n // projectId: \"x\",\n // type: \"CUSTOM\",\n // locale: \"en-us\",\n // handle: \"\",\n // },\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 }\n let items = []\n const id = recursivelyAddDataItem(type, components, items)\n const page = {\n id: '0',\n name: 'Preview section',\n rootId: '1',\n items: [\n {\n data: {},\n id: '1',\n type: 'main',\n children: [\n {\n id,\n },\n ],\n },\n ...items,\n ],\n }\n const previewData = {\n ...initialData,\n page,\n }\n return previewData\n}\n","import { useRouteLoaderData } from '@remix-run/react'\nimport { isBrowser, EventEmitter } from '@weaverse/react'\nimport { useSyncExternalStore } from 'react'\nimport type {\n HydrogenThemeSchema,\n HydrogenThemeSettings,\n Localizations,\n PublicEnv,\n RootRouteData,\n} from '~/types'\n\nexport class ThemeSettingsStore extends EventEmitter{\n settings: HydrogenThemeSettings = {}\n countries?: Localizations\n schema?: HydrogenThemeSchema\n publicEnv?: PublicEnv\n\n constructor(data: RootRouteData['weaverseTheme']) {\n super()\n let { theme, countries, schema, publicEnv } = data || {}\n this.settings = { ...theme }\n this.countries = countries\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\n getSnapshot = () => {\n return this.settings\n }\n\n getServerSnapshot = () => {\n return this.settings\n }\n\n}\n\nexport function useThemeSettingsStore() {\n let data = useRouteLoaderData('root') as RootRouteData\n if (isBrowser && window.__weaverseThemeSettingsStore) {\n return window.__weaverseThemeSettingsStore\n }\n return new ThemeSettingsStore(data?.weaverseTheme)\n}\n\nexport function useThemeSettings<T = HydrogenThemeSettings>() {\n let themeSettingsStore = useThemeSettingsStore()\n let settings = useSyncExternalStore(\n themeSettingsStore.subscribe,\n themeSettingsStore.getSnapshot,\n themeSettingsStore.getServerSnapshot,\n )\n return settings as T\n}\n","import {\n useLocation,\n useNavigate,\n useNavigation,\n useRevalidator,\n} from '@remix-run/react'\nimport { loadScript } from '@weaverse/react'\nimport { useEffect } from 'react'\nimport type { WeaverseHydrogen } from '~/index'\nimport { useThemeSettingsStore } from './use-theme-settings'\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 = () => {\n // clear the image node\n img.remove()\n }\n img.src = `${url}?projectId=${projectId}&pageId=${pageId}`\n }, [])\n}\n","import { memo } from 'react'\nimport { useStudio } from '~/hooks/use-studio'\nimport type { WeaverseHydrogen } from './index'\n\nexport let WeaverseEffect = memo(\n ({ context }: { context: WeaverseHydrogen }) => {\n useStudio(context)\n return null\n },\n)\n","import React, { forwardRef, 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*/\nlet Main = forwardRef<\n HTMLDivElement,\n HydrogenComponentProps & HTMLAttributes<HTMLDivElement>\n>((props, ref) => {\n let { children, dangerouslySetInnerHTML, ...rest } = props\n\n return (\n <div\n ref={ref}\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 inspector: [],\n}\n","import * as Main from './main'\n\nimport type { HydrogenComponent } from '~/types'\n\nexport let defaultComponents: HydrogenComponent[] = [Main]\n","import { isBrowser } from '@weaverse/react'\nimport { createContext } from 'react'\nimport { defaultComponents } from '~/components'\nimport { WeaverseHydrogen } from './index'\nimport type {\n HydrogenComponent,\n HydrogenThemeSettings,\n WeaverseHydrogenParams,\n WeaverseLoaderData,\n} from './types'\n\nfunction registerComponents(components: HydrogenComponent[]) {\n for (const comp of components) {\n comp?.schema?.type &&\n WeaverseHydrogen.registerElement({\n type: comp?.schema.type,\n Component: comp.default,\n schema: comp.schema,\n loader: comp.loader,\n })\n }\n}\n\nfunction createCachedWeaverseInstance(\n params: WeaverseHydrogenParams,\n): WeaverseHydrogen {\n if (isBrowser) {\n window.__weaverses = window.__weaverses || {}\n let weaverse = window.__weaverses[params.pageId]\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\nexport function createWeaverseInstance(\n weaverseData: WeaverseLoaderData,\n components: HydrogenComponent[],\n) {\n let { page, configs, project, pageAssignment } = weaverseData || {}\n registerComponents(components)\n registerComponents(defaultComponents)\n return createCachedWeaverseInstance({\n ...configs,\n data: page,\n pageId: page?.id,\n internal: { project, pageAssignment },\n })\n}\n\nexport let STORE_PAGES = {\n INDEX: 'INDEX',\n PRODUCT: 'PRODUCT',\n ALL_PRODUCTS: 'ALL_PRODUCTS',\n COLLECTION: 'COLLECTION',\n COLLECTION_LIST: 'COLLECTION_LIST',\n PAGE: 'PAGE',\n BLOG: 'BLOG',\n ARTICLE: 'ARTICLE',\n CUSTOM: 'CUSTOM',\n}\n\nexport let ThemeSettingsProvider = createContext<HydrogenThemeSettings | null>(\n null,\n)\nThemeSettingsProvider.displayName = 'WeaverseThemeSettingsProvider'\n","import { Await, useLoaderData } from '@remix-run/react'\nimport { WeaverseRoot } from '@weaverse/react'\nimport { type ComponentType, type JSX, Suspense, memo } from 'react'\nimport { ErrorBoundary } from 'react-error-boundary'\n\nimport { WeaverseEffect } from '~/Effect'\nimport { ThemeSettingsProvider, createWeaverseInstance } from './context'\nimport { useThemeSettingsStore } from './hooks/use-theme-settings'\nimport type {\n HydrogenComponent,\n WeaverseHydrogenRootProps,\n WeaverseLoaderData,\n} from './types'\n\ntype WeaverseData = WeaverseLoaderData | Promise<WeaverseLoaderData>\n\nexport let WeaverseHydrogenRoot = memo(\n ({\n errorComponent: ErrorComponent = FallbackError,\n components,\n }: WeaverseHydrogenRootProps) => {\n let loaderData = useLoaderData() as {\n weaverseData: WeaverseData\n }\n let data = loaderData?.weaverseData\n\n if (data) {\n if (data instanceof Promise) {\n return (\n <ErrorBoundary fallbackRender={ErrorComponent}>\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\nfunction RenderRoot(props: {\n data: WeaverseLoaderData\n components: HydrogenComponent[]\n}) {\n let { data, components } = props\n let weaverse = createWeaverseInstance(data, components)\n return (\n <>\n <WeaverseRoot context={weaverse} />\n <WeaverseEffect context={weaverse} />\n </>\n )\n}\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\nfunction FallbackError({ error }: { error?: { message?: string } }) {\n return <div>{error?.message || 'An unexpected error occurred'}</div>\n}\n","import {\n type HydrogenEnv,\n createWithCache,\n generateCacheControlHeader,\n} from '@shopify/hydrogen'\nimport type {\n AllCacheOptions,\n FetchProjectPayload,\n FetchProjectRequestBody,\n FetchWithCacheOptions,\n HydrogenComponentData,\n HydrogenPageData,\n LoadPageParams,\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: 5,\n sMaxAge: 5,\n staleWhileRevalidate: 82800,\n}\n\nexport class WeaverseClient {\n public API = API_PATH\n public basePageConfigs: Omit<WeaverseProjectConfigs, 'requestInfo'>\n public basePageRequestBody: Omit<FetchProjectRequestBody, 'url' | 'countries'>\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 public countries?: WeaverseClientArgs['countries']\n\n constructor(args: WeaverseClientArgs) {\n // Destructure and initialize all dependencies\n const {\n env,\n storefront,\n components,\n countries,\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.countries = countries\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 async directFetch<T>(\n url: string,\n options: RequestInit = {},\n ): Promise<T> {\n try {\n const res = await fetch(url, options)\n if (!res.ok) {\n const 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 async fetchWithCache<T extends object>(\n url: string,\n options: FetchWithCacheOptions = {},\n ): Promise<T> {\n const {\n strategy = this.storefront.CacheCustom(DEFAULT_CACHE_STRATEGY),\n ...reqInit\n } = options\n const 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 = {}\n if (this.themeSchema) {\n defaultThemeSettings = generateDataFromSchema(this.themeSchema)\n }\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 (data?.theme && 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 countries: this.countries || [],\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: LoadPageParams = {},\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 if (isPreviewMode) {\n const previewData = getPreviewData(\n sectionType,\n this.components,\n weaverseHost,\n )\n return previewData as unknown as WeaverseLoaderData\n }\n\n if (!projectId) {\n throw new Error('Missing Weaverse projectId!')\n }\n\n let { strategy, ...pageLoadParams } = params\n let body: FetchProjectRequestBody = {\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 // TODO: @hta218 - migrate to Remix hooks\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'\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","export let 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","import {\n type PlatformTypeEnum,\n Weaverse,\n WeaverseItemStore,\n isBrowser,\n isIframe,\n useChildInstances,\n useItemInstance,\n useParentInstance,\n useWeaverse,\n} from '@weaverse/react'\nimport type {\n HydrogenComponentData,\n HydrogenElement,\n HydrogenPageData,\n WeaverseHydrogenParams,\n WeaverseInternal,\n WeaverseLoaderRequestInfo,\n} from './types'\nimport { generateDataFromSchema } from './utils'\n\nexport * from './WeaverseHydrogenRoot'\nexport { useThemeSettings } from './hooks/use-theme-settings'\nexport * from './types'\nexport * from './utils'\nexport * from './weaverse-client'\nexport * from './wrappers'\nexport * from './placeholders'\nexport {\n useChildInstances,\n useItemInstance,\n useParentInstance,\n useWeaverse,\n isBrowser,\n isIframe,\n}\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\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 Object.assign(this._store, this._schemaData, data, rest)\n }\n\n get Element(): HydrogenElement {\n return super.Element\n }\n\n get _schemaData() {\n if (this.Element?.schema) {\n return generateDataFromSchema(this.Element.schema)\n }\n return {}\n }\n}\n\nWeaverse.ItemConstructor = WeaverseHydrogenItem\n"]}
|
package/dist/index.mjs
CHANGED
|
@@ -254,6 +254,7 @@ function usePixel(context) {
|
|
|
254
254
|
let url = `${weaverseHost}/api/public/px`;
|
|
255
255
|
let img = new Image();
|
|
256
256
|
img.onload = () => {
|
|
257
|
+
img.remove();
|
|
257
258
|
};
|
|
258
259
|
img.src = `${url}?projectId=${projectId}&pageId=${pageId}`;
|
|
259
260
|
}, []);
|
|
@@ -375,12 +376,19 @@ function withWeaverse(Component) {
|
|
|
375
376
|
function FallbackError({ error }) {
|
|
376
377
|
return /* @__PURE__ */ jsx("div", { children: error?.message || "An unexpected error occurred" });
|
|
377
378
|
}
|
|
379
|
+
var API_PATH = "api/public";
|
|
380
|
+
var DEFAULT_CACHE_STRATEGY = {
|
|
381
|
+
maxAge: 5,
|
|
382
|
+
sMaxAge: 5,
|
|
383
|
+
staleWhileRevalidate: 82800
|
|
384
|
+
};
|
|
378
385
|
var WeaverseClient = class {
|
|
379
|
-
API =
|
|
386
|
+
API = API_PATH;
|
|
380
387
|
basePageConfigs;
|
|
381
388
|
basePageRequestBody;
|
|
382
389
|
configs;
|
|
383
390
|
withCache;
|
|
391
|
+
// Required dependencies
|
|
384
392
|
request;
|
|
385
393
|
storefront;
|
|
386
394
|
components;
|
|
@@ -390,7 +398,7 @@ var WeaverseClient = class {
|
|
|
390
398
|
waitUntil;
|
|
391
399
|
countries;
|
|
392
400
|
constructor(args) {
|
|
393
|
-
|
|
401
|
+
const {
|
|
394
402
|
env,
|
|
395
403
|
storefront,
|
|
396
404
|
components,
|
|
@@ -423,50 +431,50 @@ var WeaverseClient = class {
|
|
|
423
431
|
projectId: this.configs.projectId
|
|
424
432
|
};
|
|
425
433
|
}
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
}
|
|
434
|
+
// Helper method for direct fetching in design mode
|
|
435
|
+
async directFetch(url, options = {}) {
|
|
436
|
+
try {
|
|
437
|
+
const res = await fetch(url, options);
|
|
438
|
+
if (!res.ok) {
|
|
439
|
+
const error = await res.text();
|
|
440
|
+
throw new Error(`${res.status} ${res.statusText} ${error}`);
|
|
441
|
+
}
|
|
442
|
+
return res.json();
|
|
443
|
+
} catch (err) {
|
|
444
|
+
throw new Error(`Failed to fetch data from ${url}`, { cause: err });
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
async fetchWithCache(url, options = {}) {
|
|
448
|
+
const {
|
|
449
|
+
strategy = this.storefront.CacheCustom(DEFAULT_CACHE_STRATEGY),
|
|
434
450
|
...reqInit
|
|
435
451
|
} = options;
|
|
452
|
+
const cacheKey = [url, options.body];
|
|
436
453
|
if (this.configs.isDesignMode) {
|
|
437
|
-
|
|
438
|
-
const res2 = await fetch(url, reqInit);
|
|
439
|
-
return await res2.json();
|
|
440
|
-
} catch (err) {
|
|
441
|
-
throw new Error(`Failed to fetch data from ${url}`, { cause: err });
|
|
442
|
-
}
|
|
454
|
+
return this.directFetch(url, reqInit);
|
|
443
455
|
}
|
|
444
|
-
|
|
456
|
+
return this.withCache.run(
|
|
445
457
|
{
|
|
446
458
|
cacheKey,
|
|
447
459
|
cacheStrategy: strategy,
|
|
448
|
-
// @ts-expect-error
|
|
449
460
|
shouldCacheResult: (result) => result?.data
|
|
450
461
|
},
|
|
451
462
|
async () => {
|
|
452
|
-
|
|
463
|
+
return this.directFetch(url, {
|
|
453
464
|
...reqInit,
|
|
454
465
|
headers: {
|
|
455
466
|
"Cache-Control": generateCacheControlHeader(strategy),
|
|
456
467
|
...reqInit.headers
|
|
457
468
|
}
|
|
458
469
|
});
|
|
459
|
-
if (!response.ok) {
|
|
460
|
-
let error = await response.text();
|
|
461
|
-
let { status, statusText } = response;
|
|
462
|
-
throw new Error(`${status} ${statusText} ${error}`, { cause: error });
|
|
463
|
-
}
|
|
464
|
-
return await response.json();
|
|
465
470
|
}
|
|
466
471
|
);
|
|
467
|
-
|
|
468
|
-
};
|
|
472
|
+
}
|
|
469
473
|
loadThemeSettings = async (strategy) => {
|
|
474
|
+
let defaultThemeSettings = {};
|
|
475
|
+
if (this.themeSchema) {
|
|
476
|
+
defaultThemeSettings = generateDataFromSchema(this.themeSchema);
|
|
477
|
+
}
|
|
470
478
|
try {
|
|
471
479
|
let { API, configs } = this;
|
|
472
480
|
let { weaverseHost, projectId, isDesignMode } = configs;
|
|
@@ -489,10 +497,6 @@ var WeaverseClient = class {
|
|
|
489
497
|
}
|
|
490
498
|
let data = res || {};
|
|
491
499
|
if (data?.theme && this.themeSchema?.inspector) {
|
|
492
|
-
let defaultThemeSettings = {};
|
|
493
|
-
if (this.themeSchema) {
|
|
494
|
-
defaultThemeSettings = generateDataFromSchema(this.themeSchema);
|
|
495
|
-
}
|
|
496
500
|
data.theme = {
|
|
497
501
|
...defaultThemeSettings,
|
|
498
502
|
...data.theme
|
|
@@ -508,8 +512,8 @@ var WeaverseClient = class {
|
|
|
508
512
|
}
|
|
509
513
|
return data;
|
|
510
514
|
} catch (e) {
|
|
511
|
-
console.
|
|
512
|
-
return
|
|
515
|
+
console.info("Unable to load theme settings", e);
|
|
516
|
+
return defaultThemeSettings;
|
|
513
517
|
}
|
|
514
518
|
};
|
|
515
519
|
generateFallbackPage = (message) => {
|
|
@@ -573,7 +577,13 @@ var WeaverseClient = class {
|
|
|
573
577
|
}
|
|
574
578
|
let { page, project, pageAssignment } = payload;
|
|
575
579
|
if (!project) {
|
|
576
|
-
|
|
580
|
+
console.error("Weaverse project not found. Id:", projectId);
|
|
581
|
+
project = {
|
|
582
|
+
id: projectId,
|
|
583
|
+
name: "Weaverse project not found.",
|
|
584
|
+
weaverseShopId: ""
|
|
585
|
+
};
|
|
586
|
+
page = this.generateFallbackPage("Weaverse project not found.");
|
|
577
587
|
}
|
|
578
588
|
if (!page) {
|
|
579
589
|
page = this.generateFallbackPage("Please add new section to start.");
|
|
@@ -599,7 +609,7 @@ var WeaverseClient = class {
|
|
|
599
609
|
};
|
|
600
610
|
} catch (e) {
|
|
601
611
|
console.error(`\u274C Page load failed.`, e);
|
|
602
|
-
|
|
612
|
+
return null;
|
|
603
613
|
}
|
|
604
614
|
};
|
|
605
615
|
execComponentLoader = async (item) => {
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils.ts","../src/hooks/use-theme-settings.ts","../src/hooks/use-studio.ts","../src/Effect.tsx","../src/components/main.tsx","../src/components/index.ts","../src/context.ts","../src/WeaverseHydrogenRoot.tsx","../src/weaverse-client.ts","../src/wrappers.ts","../src/placeholders.ts","../src/index.ts"],"names":["type","children","data","schema","isBrowser","memo","jsx","res","hydrogen_getSelectedProductOptions"],"mappings":"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","file":"index.mjs","sourcesContent":["import type { HydrogenEnv } from '@shopify/hydrogen'\nimport type {\n HydrogenComponent,\n HydrogenComponentSchema,\n HydrogenThemeSchema,\n WeaverseProjectConfigs,\n WeaverseStudioQueries,\n} from './types'\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 WEAVERSE_HOST ||\n weaverseHost ||\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 inspector,\n}: HydrogenComponentSchema | HydrogenThemeSchema) {\n let data: Record<string, any> = {}\n if (inspector) {\n for (let group of inspector) {\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\n/**\n * Resize an image to the specified dimensions.\n *\n * @param imageURL {string} URL of the image\n * @param size {string} Shopify size attribute\n * @returns {string} URL with size attribute\n *\n * @example\n * resizeImage('https://cdn.shopify.com/image.jpg', '100x')\n * resizeImage('https://cdn.shopify.com/image.jpg', '100x100')\n */\nexport function resizeShopifyImage(imageURL: string, size: string): string {\n try {\n if (!imageURL.includes('cdn.shopify.com') || size === 'original') {\n return imageURL\n }\n let [, path, ext] = imageURL.match(/(.*\\/[\\w-_.]+)\\.(\\w{2,4})/)\n return `${path}_${size}.${ext}`\n } catch (e) {\n return imageURL\n }\n}\n\nexport function recursivelyAddDataItem(\n type: string,\n components: HydrogenComponent<any>[],\n items: any[],\n initData?: object,\n) {\n const component = components.find((c) => c.schema.type === type)\n if (!component) {\n return\n }\n let childIDs = []\n // generate id for item\n const id = crypto.randomUUID()\n const { children, ...data } = component.schema?.presets || {}\n if (children) {\n for (const child of children) {\n const { type, children, ...data } = child\n const childID = recursivelyAddDataItem(\n child.type,\n components,\n items,\n data,\n )\n childIDs.push({\n id: childID,\n })\n }\n }\n items.push({\n data: { ...data, ...initData },\n id,\n type,\n children: childIDs,\n })\n return id\n}\nexport function getPreviewData(type: string, components, weaverseHost: string) {\n const initialData = {\n project: {\n id: 'x',\n weaverseShopId: 'shopid',\n name: 'Section Preview',\n },\n // pageAssignment: {\n // projectId: \"x\",\n // type: \"CUSTOM\",\n // locale: \"en-us\",\n // handle: \"\",\n // },\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 }\n let items = []\n const id = recursivelyAddDataItem(type, components, items)\n const page = {\n id: '0',\n name: 'Preview section',\n rootId: '1',\n items: [\n {\n data: {},\n id: '1',\n type: 'main',\n children: [\n {\n id,\n },\n ],\n },\n ...items,\n ],\n }\n const previewData = {\n ...initialData,\n page,\n }\n return previewData\n}\n","import { useRouteLoaderData } from '@remix-run/react'\nimport { isBrowser, EventEmitter } from '@weaverse/react'\nimport { useSyncExternalStore } from 'react'\nimport type {\n HydrogenThemeSchema,\n HydrogenThemeSettings,\n Localizations,\n PublicEnv,\n RootRouteData,\n} from '~/types'\n\nexport class ThemeSettingsStore extends EventEmitter{\n settings: HydrogenThemeSettings = {}\n countries?: Localizations\n schema?: HydrogenThemeSchema\n publicEnv?: PublicEnv\n\n constructor(data: RootRouteData['weaverseTheme']) {\n super()\n let { theme, countries, schema, publicEnv } = data || {}\n this.settings = { ...theme }\n this.countries = countries\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\n getSnapshot = () => {\n return this.settings\n }\n\n getServerSnapshot = () => {\n return this.settings\n }\n\n}\n\nexport function useThemeSettingsStore() {\n let data = useRouteLoaderData('root') as RootRouteData\n if (isBrowser && window.__weaverseThemeSettingsStore) {\n return window.__weaverseThemeSettingsStore\n }\n return new ThemeSettingsStore(data?.weaverseTheme)\n}\n\nexport function useThemeSettings<T = HydrogenThemeSettings>() {\n let themeSettingsStore = useThemeSettingsStore()\n let settings = useSyncExternalStore(\n themeSettingsStore.subscribe,\n themeSettingsStore.getSnapshot,\n themeSettingsStore.getServerSnapshot,\n )\n return settings as T\n}\n","import {\n useLocation,\n useNavigate,\n useNavigation,\n useRevalidator,\n} from '@remix-run/react'\nimport { loadScript } from '@weaverse/react'\nimport { useEffect } from 'react'\nimport type { WeaverseHydrogen } from '~/index'\nimport { useThemeSettingsStore } from './use-theme-settings'\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\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 = () => {}\n img.src = `${url}?projectId=${projectId}&pageId=${pageId}`\n }, [])\n}\n","import { memo } from 'react'\nimport { useStudio } from '~/hooks/use-studio'\nimport type { WeaverseHydrogen } from './index'\n\nexport let WeaverseEffect = memo(\n ({ context }: { context: WeaverseHydrogen }) => {\n useStudio(context)\n return null\n },\n)\n","import React, { forwardRef, 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*/\nlet Main = forwardRef<\n HTMLDivElement,\n HydrogenComponentProps & HTMLAttributes<HTMLDivElement>\n>((props, ref) => {\n let { children, dangerouslySetInnerHTML, ...rest } = props\n\n return (\n <div\n ref={ref}\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 inspector: [],\n}\n","import * as Main from './main'\n\nimport type { HydrogenComponent } from '~/types'\n\nexport let defaultComponents: HydrogenComponent[] = [Main]\n","import { isBrowser } from '@weaverse/react'\nimport { createContext } from 'react'\nimport { defaultComponents } from '~/components'\nimport { WeaverseHydrogen } from './index'\nimport type {\n HydrogenComponent,\n HydrogenThemeSettings,\n WeaverseHydrogenParams,\n WeaverseLoaderData,\n} from './types'\n\nfunction registerComponents(components: HydrogenComponent[]) {\n for (const comp of components) {\n comp?.schema?.type &&\n WeaverseHydrogen.registerElement({\n type: comp?.schema.type,\n Component: comp.default,\n schema: comp.schema,\n loader: comp.loader,\n })\n }\n}\n\nfunction createCachedWeaverseInstance(\n params: WeaverseHydrogenParams,\n): WeaverseHydrogen {\n if (isBrowser) {\n window.__weaverses = window.__weaverses || {}\n let weaverse = window.__weaverses[params.pageId]\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\nexport function createWeaverseInstance(\n weaverseData: WeaverseLoaderData,\n components: HydrogenComponent[],\n) {\n let { page, configs, project, pageAssignment } = weaverseData || {}\n registerComponents(components)\n registerComponents(defaultComponents)\n return createCachedWeaverseInstance({\n ...configs,\n data: page,\n pageId: page?.id,\n internal: { project, pageAssignment },\n })\n}\n\nexport let STORE_PAGES = {\n INDEX: 'INDEX',\n PRODUCT: 'PRODUCT',\n ALL_PRODUCTS: 'ALL_PRODUCTS',\n COLLECTION: 'COLLECTION',\n COLLECTION_LIST: 'COLLECTION_LIST',\n PAGE: 'PAGE',\n BLOG: 'BLOG',\n ARTICLE: 'ARTICLE',\n CUSTOM: 'CUSTOM',\n}\n\nexport let ThemeSettingsProvider = createContext<HydrogenThemeSettings | null>(\n null,\n)\nThemeSettingsProvider.displayName = 'WeaverseThemeSettingsProvider'\n","import { Await, useLoaderData } from '@remix-run/react'\nimport { WeaverseRoot } from '@weaverse/react'\nimport { type ComponentType, type JSX, Suspense, memo } from 'react'\nimport { ErrorBoundary } from 'react-error-boundary'\n\nimport { WeaverseEffect } from '~/Effect'\nimport { ThemeSettingsProvider, createWeaverseInstance } from './context'\nimport { useThemeSettingsStore } from './hooks/use-theme-settings'\nimport type {\n HydrogenComponent,\n WeaverseHydrogenRootProps,\n WeaverseLoaderData,\n} from './types'\n\ntype WeaverseData = WeaverseLoaderData | Promise<WeaverseLoaderData>\n\nexport let WeaverseHydrogenRoot = memo(\n ({\n errorComponent: ErrorComponent = FallbackError,\n components,\n }: WeaverseHydrogenRootProps) => {\n let loaderData = useLoaderData() as {\n weaverseData: WeaverseData\n }\n let data = loaderData?.weaverseData\n\n if (data) {\n if (data instanceof Promise) {\n return (\n <ErrorBoundary fallbackRender={ErrorComponent}>\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\nfunction RenderRoot(props: {\n data: WeaverseLoaderData\n components: HydrogenComponent[]\n}) {\n let { data, components } = props\n let weaverse = createWeaverseInstance(data, components)\n return (\n <>\n <WeaverseRoot context={weaverse} />\n <WeaverseEffect context={weaverse} />\n </>\n )\n}\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\nfunction FallbackError({ error }: { error?: { message?: string } }) {\n return <div>{error?.message || 'An unexpected error occurred'}</div>\n}\n","import {\n type HydrogenEnv,\n createWithCache,\n generateCacheControlHeader,\n} from '@shopify/hydrogen'\nimport type {\n AllCacheOptions,\n FetchProjectPayload,\n FetchProjectRequestBody,\n FetchWithCacheOptions,\n HydrogenComponentData,\n HydrogenPageData,\n LoadPageParams,\n WeaverseClientArgs,\n WeaverseLoaderData,\n WeaverseProjectConfigs,\n WeaverseStudioQueries,\n} from './types'\nimport {\n generateDataFromSchema,\n getPreviewData,\n getRequestQueries,\n getWeaverseConfigs,\n} from './utils'\n\nexport class WeaverseClient {\n API = 'api/public'\n basePageConfigs: Omit<WeaverseProjectConfigs, 'requestInfo'>\n basePageRequestBody: Omit<FetchProjectRequestBody, 'url' | 'countries'>\n configs: WeaverseProjectConfigs\n withCache: ReturnType<typeof createWithCache>\n\n request: WeaverseClientArgs['request']\n storefront: WeaverseClientArgs['storefront']\n components: WeaverseClientArgs['components']\n themeSchema: WeaverseClientArgs['themeSchema']\n env: WeaverseClientArgs['env']\n cache: WeaverseClientArgs['cache']\n waitUntil: WeaverseClientArgs['waitUntil']\n countries?: WeaverseClientArgs['countries']\n\n constructor(args: WeaverseClientArgs) {\n let {\n env,\n storefront,\n components,\n countries,\n cache,\n waitUntil,\n themeSchema,\n request,\n } = args\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.countries = countries\n this.withCache = createWithCache({ cache, waitUntil, request })\n\n this.configs = getWeaverseConfigs(request, env as HydrogenEnv)\n\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 this.basePageRequestBody = {\n isDesignMode: this.configs.isDesignMode,\n i18n: storefront.i18n,\n projectId: this.configs.projectId,\n }\n }\n\n fetchWithCache = async <T extends object>(\n url: string,\n options: FetchWithCacheOptions = {},\n ) => {\n let cacheKey = [url, options.body]\n let {\n strategy = this.storefront.CacheCustom({\n maxAge: 1,\n sMaxAge: 1,\n staleWhileRevalidate: 82800,\n }),\n ...reqInit\n } = options\n if (this.configs.isDesignMode) {\n try {\n const res = await fetch(url, reqInit)\n return await res.json<T>()\n } catch (err) {\n throw new Error(`Failed to fetch data from ${url}`, { cause: err })\n }\n }\n let res = this.withCache.run(\n {\n cacheKey,\n cacheStrategy: strategy,\n // @ts-expect-error\n shouldCacheResult: (result) => result?.data,\n },\n async () => {\n let response = await fetch(url, {\n ...reqInit,\n headers: {\n 'Cache-Control': generateCacheControlHeader(strategy),\n ...reqInit.headers,\n },\n })\n if (!response.ok) {\n let error = await response.text()\n let { status, statusText } = response\n throw new Error(`${status} ${statusText} ${error}`, { cause: error })\n }\n return await response.json<T>()\n },\n )\n return res as Promise<T>\n }\n\n loadThemeSettings = async (strategy?: AllCacheOptions) => {\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 (data?.theme && this.themeSchema?.inspector) {\n let defaultThemeSettings = {}\n if (this.themeSchema) {\n defaultThemeSettings = generateDataFromSchema(this.themeSchema)\n }\n data.theme = {\n ...defaultThemeSettings,\n ...data.theme,\n }\n }\n if (this.configs.isDesignMode) {\n data = {\n ...data,\n schema: this.themeSchema,\n countries: this.countries || [],\n publicEnv: this.configs.publicEnv,\n }\n }\n return data\n } catch (e) {\n console.error('❌ Theme settings load failed.', e)\n return null\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: LoadPageParams = {},\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 if (isPreviewMode) {\n const previewData = getPreviewData(\n sectionType,\n this.components,\n weaverseHost,\n )\n return previewData as unknown as WeaverseLoaderData\n }\n\n if (!projectId) {\n throw new Error('Missing Weaverse projectId!')\n }\n\n let { strategy, ...pageLoadParams } = params\n let body: FetchProjectRequestBody = {\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 throw new Error(`Weaverse project not found. Id: ${projectId}`)\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 // TODO: @hta218 - migrate to Remix hooks\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 throw e\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'\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","export let 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","import {\n type PlatformTypeEnum,\n Weaverse,\n WeaverseItemStore,\n isBrowser,\n isIframe,\n useChildInstances,\n useItemInstance,\n useParentInstance,\n useWeaverse,\n} from '@weaverse/react'\nimport type {\n HydrogenComponentData,\n HydrogenElement,\n HydrogenPageData,\n WeaverseHydrogenParams,\n WeaverseInternal,\n WeaverseLoaderRequestInfo,\n} from './types'\nimport { generateDataFromSchema } from './utils'\n\nexport * from './WeaverseHydrogenRoot'\nexport { useThemeSettings } from './hooks/use-theme-settings'\nexport * from './types'\nexport * from './utils'\nexport * from './weaverse-client'\nexport * from './wrappers'\nexport * from './placeholders'\nexport {\n useChildInstances,\n useItemInstance,\n useParentInstance,\n useWeaverse,\n isBrowser,\n isIframe,\n}\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\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 Object.assign(this._store, this._schemaData, data, rest)\n }\n\n get Element(): HydrogenElement {\n return super.Element\n }\n\n get _schemaData() {\n if (this.Element?.schema) {\n return generateDataFromSchema(this.Element.schema)\n }\n return {}\n }\n}\n\nWeaverse.ItemConstructor = WeaverseHydrogenItem\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/utils.ts","../src/hooks/use-theme-settings.ts","../src/hooks/use-studio.ts","../src/Effect.tsx","../src/components/main.tsx","../src/components/index.ts","../src/context.ts","../src/WeaverseHydrogenRoot.tsx","../src/weaverse-client.ts","../src/wrappers.ts","../src/placeholders.ts","../src/index.ts"],"names":["type","children","data","schema","isBrowser","memo","jsx","res","hydrogen_getSelectedProductOptions"],"mappings":"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","file":"index.mjs","sourcesContent":["import type { HydrogenEnv } from '@shopify/hydrogen'\nimport type {\n HydrogenComponent,\n HydrogenComponentSchema,\n HydrogenThemeSchema,\n WeaverseProjectConfigs,\n WeaverseStudioQueries,\n} from './types'\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 WEAVERSE_HOST ||\n weaverseHost ||\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 inspector,\n}: HydrogenComponentSchema | HydrogenThemeSchema) {\n let data: Record<string, any> = {}\n if (inspector) {\n for (let group of inspector) {\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\n/**\n * Resize an image to the specified dimensions.\n *\n * @param imageURL {string} URL of the image\n * @param size {string} Shopify size attribute\n * @returns {string} URL with size attribute\n *\n * @example\n * resizeImage('https://cdn.shopify.com/image.jpg', '100x')\n * resizeImage('https://cdn.shopify.com/image.jpg', '100x100')\n */\nexport function resizeShopifyImage(imageURL: string, size: string): string {\n try {\n if (!imageURL.includes('cdn.shopify.com') || size === 'original') {\n return imageURL\n }\n let [, path, ext] = imageURL.match(/(.*\\/[\\w-_.]+)\\.(\\w{2,4})/)\n return `${path}_${size}.${ext}`\n } catch (e) {\n return imageURL\n }\n}\n\nexport function recursivelyAddDataItem(\n type: string,\n components: HydrogenComponent<any>[],\n items: any[],\n initData?: object,\n) {\n const component = components.find((c) => c.schema.type === type)\n if (!component) {\n return\n }\n let childIDs = []\n // generate id for item\n const id = crypto.randomUUID()\n const { children, ...data } = component.schema?.presets || {}\n if (children) {\n for (const child of children) {\n const { type, children, ...data } = child\n const childID = recursivelyAddDataItem(\n child.type,\n components,\n items,\n data,\n )\n childIDs.push({\n id: childID,\n })\n }\n }\n items.push({\n data: { ...data, ...initData },\n id,\n type,\n children: childIDs,\n })\n return id\n}\nexport function getPreviewData(type: string, components, weaverseHost: string) {\n const initialData = {\n project: {\n id: 'x',\n weaverseShopId: 'shopid',\n name: 'Section Preview',\n },\n // pageAssignment: {\n // projectId: \"x\",\n // type: \"CUSTOM\",\n // locale: \"en-us\",\n // handle: \"\",\n // },\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 }\n let items = []\n const id = recursivelyAddDataItem(type, components, items)\n const page = {\n id: '0',\n name: 'Preview section',\n rootId: '1',\n items: [\n {\n data: {},\n id: '1',\n type: 'main',\n children: [\n {\n id,\n },\n ],\n },\n ...items,\n ],\n }\n const previewData = {\n ...initialData,\n page,\n }\n return previewData\n}\n","import { useRouteLoaderData } from '@remix-run/react'\nimport { isBrowser, EventEmitter } from '@weaverse/react'\nimport { useSyncExternalStore } from 'react'\nimport type {\n HydrogenThemeSchema,\n HydrogenThemeSettings,\n Localizations,\n PublicEnv,\n RootRouteData,\n} from '~/types'\n\nexport class ThemeSettingsStore extends EventEmitter{\n settings: HydrogenThemeSettings = {}\n countries?: Localizations\n schema?: HydrogenThemeSchema\n publicEnv?: PublicEnv\n\n constructor(data: RootRouteData['weaverseTheme']) {\n super()\n let { theme, countries, schema, publicEnv } = data || {}\n this.settings = { ...theme }\n this.countries = countries\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\n getSnapshot = () => {\n return this.settings\n }\n\n getServerSnapshot = () => {\n return this.settings\n }\n\n}\n\nexport function useThemeSettingsStore() {\n let data = useRouteLoaderData('root') as RootRouteData\n if (isBrowser && window.__weaverseThemeSettingsStore) {\n return window.__weaverseThemeSettingsStore\n }\n return new ThemeSettingsStore(data?.weaverseTheme)\n}\n\nexport function useThemeSettings<T = HydrogenThemeSettings>() {\n let themeSettingsStore = useThemeSettingsStore()\n let settings = useSyncExternalStore(\n themeSettingsStore.subscribe,\n themeSettingsStore.getSnapshot,\n themeSettingsStore.getServerSnapshot,\n )\n return settings as T\n}\n","import {\n useLocation,\n useNavigate,\n useNavigation,\n useRevalidator,\n} from '@remix-run/react'\nimport { loadScript } from '@weaverse/react'\nimport { useEffect } from 'react'\nimport type { WeaverseHydrogen } from '~/index'\nimport { useThemeSettingsStore } from './use-theme-settings'\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 = () => {\n // clear the image node\n img.remove()\n }\n img.src = `${url}?projectId=${projectId}&pageId=${pageId}`\n }, [])\n}\n","import { memo } from 'react'\nimport { useStudio } from '~/hooks/use-studio'\nimport type { WeaverseHydrogen } from './index'\n\nexport let WeaverseEffect = memo(\n ({ context }: { context: WeaverseHydrogen }) => {\n useStudio(context)\n return null\n },\n)\n","import React, { forwardRef, 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*/\nlet Main = forwardRef<\n HTMLDivElement,\n HydrogenComponentProps & HTMLAttributes<HTMLDivElement>\n>((props, ref) => {\n let { children, dangerouslySetInnerHTML, ...rest } = props\n\n return (\n <div\n ref={ref}\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 inspector: [],\n}\n","import * as Main from './main'\n\nimport type { HydrogenComponent } from '~/types'\n\nexport let defaultComponents: HydrogenComponent[] = [Main]\n","import { isBrowser } from '@weaverse/react'\nimport { createContext } from 'react'\nimport { defaultComponents } from '~/components'\nimport { WeaverseHydrogen } from './index'\nimport type {\n HydrogenComponent,\n HydrogenThemeSettings,\n WeaverseHydrogenParams,\n WeaverseLoaderData,\n} from './types'\n\nfunction registerComponents(components: HydrogenComponent[]) {\n for (const comp of components) {\n comp?.schema?.type &&\n WeaverseHydrogen.registerElement({\n type: comp?.schema.type,\n Component: comp.default,\n schema: comp.schema,\n loader: comp.loader,\n })\n }\n}\n\nfunction createCachedWeaverseInstance(\n params: WeaverseHydrogenParams,\n): WeaverseHydrogen {\n if (isBrowser) {\n window.__weaverses = window.__weaverses || {}\n let weaverse = window.__weaverses[params.pageId]\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\nexport function createWeaverseInstance(\n weaverseData: WeaverseLoaderData,\n components: HydrogenComponent[],\n) {\n let { page, configs, project, pageAssignment } = weaverseData || {}\n registerComponents(components)\n registerComponents(defaultComponents)\n return createCachedWeaverseInstance({\n ...configs,\n data: page,\n pageId: page?.id,\n internal: { project, pageAssignment },\n })\n}\n\nexport let STORE_PAGES = {\n INDEX: 'INDEX',\n PRODUCT: 'PRODUCT',\n ALL_PRODUCTS: 'ALL_PRODUCTS',\n COLLECTION: 'COLLECTION',\n COLLECTION_LIST: 'COLLECTION_LIST',\n PAGE: 'PAGE',\n BLOG: 'BLOG',\n ARTICLE: 'ARTICLE',\n CUSTOM: 'CUSTOM',\n}\n\nexport let ThemeSettingsProvider = createContext<HydrogenThemeSettings | null>(\n null,\n)\nThemeSettingsProvider.displayName = 'WeaverseThemeSettingsProvider'\n","import { Await, useLoaderData } from '@remix-run/react'\nimport { WeaverseRoot } from '@weaverse/react'\nimport { type ComponentType, type JSX, Suspense, memo } from 'react'\nimport { ErrorBoundary } from 'react-error-boundary'\n\nimport { WeaverseEffect } from '~/Effect'\nimport { ThemeSettingsProvider, createWeaverseInstance } from './context'\nimport { useThemeSettingsStore } from './hooks/use-theme-settings'\nimport type {\n HydrogenComponent,\n WeaverseHydrogenRootProps,\n WeaverseLoaderData,\n} from './types'\n\ntype WeaverseData = WeaverseLoaderData | Promise<WeaverseLoaderData>\n\nexport let WeaverseHydrogenRoot = memo(\n ({\n errorComponent: ErrorComponent = FallbackError,\n components,\n }: WeaverseHydrogenRootProps) => {\n let loaderData = useLoaderData() as {\n weaverseData: WeaverseData\n }\n let data = loaderData?.weaverseData\n\n if (data) {\n if (data instanceof Promise) {\n return (\n <ErrorBoundary fallbackRender={ErrorComponent}>\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\nfunction RenderRoot(props: {\n data: WeaverseLoaderData\n components: HydrogenComponent[]\n}) {\n let { data, components } = props\n let weaverse = createWeaverseInstance(data, components)\n return (\n <>\n <WeaverseRoot context={weaverse} />\n <WeaverseEffect context={weaverse} />\n </>\n )\n}\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\nfunction FallbackError({ error }: { error?: { message?: string } }) {\n return <div>{error?.message || 'An unexpected error occurred'}</div>\n}\n","import {\n type HydrogenEnv,\n createWithCache,\n generateCacheControlHeader,\n} from '@shopify/hydrogen'\nimport type {\n AllCacheOptions,\n FetchProjectPayload,\n FetchProjectRequestBody,\n FetchWithCacheOptions,\n HydrogenComponentData,\n HydrogenPageData,\n LoadPageParams,\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: 5,\n sMaxAge: 5,\n staleWhileRevalidate: 82800,\n}\n\nexport class WeaverseClient {\n public API = API_PATH\n public basePageConfigs: Omit<WeaverseProjectConfigs, 'requestInfo'>\n public basePageRequestBody: Omit<FetchProjectRequestBody, 'url' | 'countries'>\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 public countries?: WeaverseClientArgs['countries']\n\n constructor(args: WeaverseClientArgs) {\n // Destructure and initialize all dependencies\n const {\n env,\n storefront,\n components,\n countries,\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.countries = countries\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 async directFetch<T>(\n url: string,\n options: RequestInit = {},\n ): Promise<T> {\n try {\n const res = await fetch(url, options)\n if (!res.ok) {\n const 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 async fetchWithCache<T extends object>(\n url: string,\n options: FetchWithCacheOptions = {},\n ): Promise<T> {\n const {\n strategy = this.storefront.CacheCustom(DEFAULT_CACHE_STRATEGY),\n ...reqInit\n } = options\n const 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 = {}\n if (this.themeSchema) {\n defaultThemeSettings = generateDataFromSchema(this.themeSchema)\n }\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 (data?.theme && 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 countries: this.countries || [],\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: LoadPageParams = {},\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 if (isPreviewMode) {\n const previewData = getPreviewData(\n sectionType,\n this.components,\n weaverseHost,\n )\n return previewData as unknown as WeaverseLoaderData\n }\n\n if (!projectId) {\n throw new Error('Missing Weaverse projectId!')\n }\n\n let { strategy, ...pageLoadParams } = params\n let body: FetchProjectRequestBody = {\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 // TODO: @hta218 - migrate to Remix hooks\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'\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","export let 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","import {\n type PlatformTypeEnum,\n Weaverse,\n WeaverseItemStore,\n isBrowser,\n isIframe,\n useChildInstances,\n useItemInstance,\n useParentInstance,\n useWeaverse,\n} from '@weaverse/react'\nimport type {\n HydrogenComponentData,\n HydrogenElement,\n HydrogenPageData,\n WeaverseHydrogenParams,\n WeaverseInternal,\n WeaverseLoaderRequestInfo,\n} from './types'\nimport { generateDataFromSchema } from './utils'\n\nexport * from './WeaverseHydrogenRoot'\nexport { useThemeSettings } from './hooks/use-theme-settings'\nexport * from './types'\nexport * from './utils'\nexport * from './weaverse-client'\nexport * from './wrappers'\nexport * from './placeholders'\nexport {\n useChildInstances,\n useItemInstance,\n useParentInstance,\n useWeaverse,\n isBrowser,\n isIframe,\n}\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\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 Object.assign(this._store, this._schemaData, data, rest)\n }\n\n get Element(): HydrogenElement {\n return super.Element\n }\n\n get _schemaData() {\n if (this.Element?.schema) {\n return generateDataFromSchema(this.Element.schema)\n }\n return {}\n }\n}\n\nWeaverse.ItemConstructor = WeaverseHydrogenItem\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": "4.2.
|
|
5
|
+
"version": "4.2.2",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"main": "dist/index.js",
|
|
8
8
|
"typings": "dist/index.d.ts",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"treeshake": true
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@weaverse/react": "4.2.
|
|
39
|
+
"@weaverse/react": "4.2.2",
|
|
40
40
|
"react-error-boundary": "^4.0.13",
|
|
41
41
|
"@shopify/oxygen-workers-types": "4",
|
|
42
42
|
"@shopify/remix-oxygen": "2",
|