@weaverse/hydrogen 4.0.0 → 4.0.1
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 -4
- package/dist/index.d.ts +5 -4
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +6 -2
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.d.mts
CHANGED
|
@@ -2,7 +2,7 @@ import { EventEmitter, ElementData, ElementSchema, BasicInput as BasicInput$1, W
|
|
|
2
2
|
export { InputType, PositionInputValue, WeaverseImage, WeaverseVideo, isBrowser, isIframe, useChildInstances, useItemInstance, useParentInstance, useWeaverse } from '@weaverse/react';
|
|
3
3
|
import { NavigateFunction } from '@remix-run/react';
|
|
4
4
|
import { createWithCache, I18nBase, HydrogenContext, HydrogenEnv } from '@shopify/hydrogen';
|
|
5
|
-
import {
|
|
5
|
+
import { CurrencyCode, SelectedOptionInput } from '@shopify/hydrogen/storefront-api-types';
|
|
6
6
|
import { LoaderFunctionArgs, AppLoadContext } from '@shopify/remix-oxygen';
|
|
7
7
|
import * as react from 'react';
|
|
8
8
|
import { ForwardRefExoticComponent, ComponentType, JSX } from 'react';
|
|
@@ -54,9 +54,7 @@ declare class WeaverseClient {
|
|
|
54
54
|
execComponentLoader: (item: HydrogenComponentData) => Promise<HydrogenComponentData>;
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
type Locale = {
|
|
58
|
-
language: LanguageCode;
|
|
59
|
-
country: CountryCode;
|
|
57
|
+
type Locale = I18nBase & {
|
|
60
58
|
label: string;
|
|
61
59
|
currency: CurrencyCode;
|
|
62
60
|
};
|
|
@@ -232,6 +230,9 @@ type HydrogenThemeInfo = {
|
|
|
232
230
|
interface HydrogenThemeSchema {
|
|
233
231
|
info: HydrogenThemeInfo;
|
|
234
232
|
inspector: InspectorGroup[];
|
|
233
|
+
i18n?: Array<I18nBase & {
|
|
234
|
+
label?: string;
|
|
235
|
+
}>;
|
|
235
236
|
}
|
|
236
237
|
type PageType = keyof typeof STORE_PAGES;
|
|
237
238
|
type PageAssignmentParams = {
|
package/dist/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { EventEmitter, ElementData, ElementSchema, BasicInput as BasicInput$1, W
|
|
|
2
2
|
export { InputType, PositionInputValue, WeaverseImage, WeaverseVideo, isBrowser, isIframe, useChildInstances, useItemInstance, useParentInstance, useWeaverse } from '@weaverse/react';
|
|
3
3
|
import { NavigateFunction } from '@remix-run/react';
|
|
4
4
|
import { createWithCache, I18nBase, HydrogenContext, HydrogenEnv } from '@shopify/hydrogen';
|
|
5
|
-
import {
|
|
5
|
+
import { CurrencyCode, SelectedOptionInput } from '@shopify/hydrogen/storefront-api-types';
|
|
6
6
|
import { LoaderFunctionArgs, AppLoadContext } from '@shopify/remix-oxygen';
|
|
7
7
|
import * as react from 'react';
|
|
8
8
|
import { ForwardRefExoticComponent, ComponentType, JSX } from 'react';
|
|
@@ -54,9 +54,7 @@ declare class WeaverseClient {
|
|
|
54
54
|
execComponentLoader: (item: HydrogenComponentData) => Promise<HydrogenComponentData>;
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
type Locale = {
|
|
58
|
-
language: LanguageCode;
|
|
59
|
-
country: CountryCode;
|
|
57
|
+
type Locale = I18nBase & {
|
|
60
58
|
label: string;
|
|
61
59
|
currency: CurrencyCode;
|
|
62
60
|
};
|
|
@@ -232,6 +230,9 @@ type HydrogenThemeInfo = {
|
|
|
232
230
|
interface HydrogenThemeSchema {
|
|
233
231
|
info: HydrogenThemeInfo;
|
|
234
232
|
inspector: InspectorGroup[];
|
|
233
|
+
i18n?: Array<I18nBase & {
|
|
234
|
+
label?: string;
|
|
235
|
+
}>;
|
|
235
236
|
}
|
|
236
237
|
type PageType = keyof typeof STORE_PAGES;
|
|
237
238
|
type PageAssignmentParams = {
|
package/dist/index.js
CHANGED
|
@@ -71,7 +71,7 @@ function getWeaverseConfigs(request, env) {
|
|
|
71
71
|
} = queries;
|
|
72
72
|
return {
|
|
73
73
|
projectId: weaverseProjectId || WEAVERSE_PROJECT_ID || envFromProcess.WEAVERSE_PROJECT_ID || "",
|
|
74
|
-
weaverseHost:
|
|
74
|
+
weaverseHost: WEAVERSE_HOST || weaverseHost || envFromProcess.WEAVERSE_HOST || "https://studio.weaverse.io",
|
|
75
75
|
weaverseApiKey: weaverseApiKey || WEAVERSE_API_KEY || envFromProcess.WEAVERSE_API_KEY || "",
|
|
76
76
|
weaverseVersion: weaverseVersion || "",
|
|
77
77
|
isDesignMode: isDesignMode || false,
|
|
@@ -444,7 +444,11 @@ var WeaverseClient = class {
|
|
|
444
444
|
(res2) => res2.json()
|
|
445
445
|
);
|
|
446
446
|
} else {
|
|
447
|
-
res = await this.fetchWithCache(url, {
|
|
447
|
+
res = await this.fetchWithCache(url, {
|
|
448
|
+
method: "POST",
|
|
449
|
+
strategy,
|
|
450
|
+
body
|
|
451
|
+
});
|
|
448
452
|
}
|
|
449
453
|
let data = res || {};
|
|
450
454
|
if (data?.theme && this.themeSchema?.inspector) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/utils.ts","../src/WeaverseHydrogenRoot.tsx","../src/Effect.tsx","../src/hooks/use-studio.ts","../src/hooks/use-theme-settings.ts","../src/context.ts","../src/components/main.tsx","../src/components/index.ts","../src/weaverse-client.ts","../src/wrappers.ts","../src/placeholders.ts"],"sourcesContent":["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","import type { HydrogenEnv } from '@shopify/hydrogen'\nimport type {\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 weaverseVersion,\n weaverseApiKey,\n } = queries\n return {\n projectId:\n weaverseProjectId ||\n WEAVERSE_PROJECT_ID ||\n envFromProcess.WEAVERSE_PROJECT_ID ||\n '',\n weaverseHost:\n weaverseHost ||\n WEAVERSE_HOST ||\n envFromProcess.WEAVERSE_HOST ||\n 'https://studio.weaverse.io',\n weaverseApiKey:\n weaverseApiKey ||\n WEAVERSE_API_KEY ||\n envFromProcess.WEAVERSE_API_KEY ||\n '',\n weaverseVersion: weaverseVersion || '',\n isDesignMode: isDesignMode || false,\n 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","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 { 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 {\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 } = weaverse\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>\n useEffect(() => {\n if (navigation.state === 'idle' && 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 }, [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 { 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 { 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 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 {\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 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, { method: 'POST', strategy, body })\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 { projectId, isDesignMode, weaverseHost } = this.configs\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"],"mappings":"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","names":["import_react","import_react","import_react","import_react","import_react","schema","import_react","import_react","import_jsx_runtime","res","schema","import_hydrogen","hydrogen_getSelectedProductOptions"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/utils.ts","../src/WeaverseHydrogenRoot.tsx","../src/Effect.tsx","../src/hooks/use-studio.ts","../src/hooks/use-theme-settings.ts","../src/context.ts","../src/components/main.tsx","../src/components/index.ts","../src/weaverse-client.ts","../src/wrappers.ts","../src/placeholders.ts"],"sourcesContent":["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","import type { HydrogenEnv } from '@shopify/hydrogen'\nimport type {\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 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 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","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 { 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 {\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 } = weaverse\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>\n useEffect(() => {\n if (navigation.state === 'idle' && 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 }, [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 { 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 { 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 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 {\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 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 { projectId, isDesignMode, weaverseHost } = this.configs\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"],"mappings":"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","names":["import_react","import_react","import_react","import_react","import_react","schema","import_react","import_react","import_jsx_runtime","res","schema","import_hydrogen","hydrogen_getSelectedProductOptions"]}
|
package/dist/index.mjs
CHANGED
|
@@ -46,7 +46,7 @@ function getWeaverseConfigs(request, env) {
|
|
|
46
46
|
} = queries;
|
|
47
47
|
return {
|
|
48
48
|
projectId: weaverseProjectId || WEAVERSE_PROJECT_ID || envFromProcess.WEAVERSE_PROJECT_ID || "",
|
|
49
|
-
weaverseHost:
|
|
49
|
+
weaverseHost: WEAVERSE_HOST || weaverseHost || envFromProcess.WEAVERSE_HOST || "https://studio.weaverse.io",
|
|
50
50
|
weaverseApiKey: weaverseApiKey || WEAVERSE_API_KEY || envFromProcess.WEAVERSE_API_KEY || "",
|
|
51
51
|
weaverseVersion: weaverseVersion || "",
|
|
52
52
|
isDesignMode: isDesignMode || false,
|
|
@@ -427,7 +427,11 @@ var WeaverseClient = class {
|
|
|
427
427
|
(res2) => res2.json()
|
|
428
428
|
);
|
|
429
429
|
} else {
|
|
430
|
-
res = await this.fetchWithCache(url, {
|
|
430
|
+
res = await this.fetchWithCache(url, {
|
|
431
|
+
method: "POST",
|
|
432
|
+
strategy,
|
|
433
|
+
body
|
|
434
|
+
});
|
|
431
435
|
}
|
|
432
436
|
let data = res || {};
|
|
433
437
|
if (data?.theme && this.themeSchema?.inspector) {
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/utils.ts","../src/WeaverseHydrogenRoot.tsx","../src/Effect.tsx","../src/hooks/use-studio.ts","../src/hooks/use-theme-settings.ts","../src/context.ts","../src/components/main.tsx","../src/components/index.ts","../src/weaverse-client.ts","../src/wrappers.ts","../src/placeholders.ts"],"sourcesContent":["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","import type { HydrogenEnv } from '@shopify/hydrogen'\nimport type {\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 weaverseVersion,\n weaverseApiKey,\n } = queries\n return {\n projectId:\n weaverseProjectId ||\n WEAVERSE_PROJECT_ID ||\n envFromProcess.WEAVERSE_PROJECT_ID ||\n '',\n weaverseHost:\n weaverseHost ||\n WEAVERSE_HOST ||\n envFromProcess.WEAVERSE_HOST ||\n 'https://studio.weaverse.io',\n weaverseApiKey:\n weaverseApiKey ||\n WEAVERSE_API_KEY ||\n envFromProcess.WEAVERSE_API_KEY ||\n '',\n weaverseVersion: weaverseVersion || '',\n isDesignMode: isDesignMode || false,\n 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","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 { 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 {\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 } = weaverse\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>\n useEffect(() => {\n if (navigation.state === 'idle' && 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 }, [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 { 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 { 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 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 {\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 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, { method: 'POST', strategy, body })\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 { projectId, isDesignMode, weaverseHost } = this.configs\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"],"mappings":"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","names":["isBrowser","memo","schema","isBrowser","isBrowser","jsx","memo","res","schema"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/utils.ts","../src/WeaverseHydrogenRoot.tsx","../src/Effect.tsx","../src/hooks/use-studio.ts","../src/hooks/use-theme-settings.ts","../src/context.ts","../src/components/main.tsx","../src/components/index.ts","../src/weaverse-client.ts","../src/wrappers.ts","../src/placeholders.ts"],"sourcesContent":["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","import type { HydrogenEnv } from '@shopify/hydrogen'\nimport type {\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 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 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","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 { 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 {\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 } = weaverse\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>\n useEffect(() => {\n if (navigation.state === 'idle' && 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 }, [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 { 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 { 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 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 {\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 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 { projectId, isDesignMode, weaverseHost } = this.configs\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"],"mappings":"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","names":["isBrowser","memo","schema","isBrowser","isBrowser","jsx","memo","res","schema"]}
|
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.0.
|
|
5
|
+
"version": "4.0.1",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"main": "dist/index.js",
|
|
8
8
|
"typings": "dist/index.d.ts",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
]
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@weaverse/react": "4.0.
|
|
45
|
+
"@weaverse/react": "4.0.1",
|
|
46
46
|
"react-error-boundary": "^4.0.13"
|
|
47
47
|
},
|
|
48
48
|
"peerDependencies": {
|