@weaverse/next 0.1.0-alpha.13 → 0.1.0-alpha.15
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/README.md +125 -23
- package/dist/{chunk-MQ6N5ODA.mjs → chunk-NL22OVD7.mjs} +93 -4
- package/dist/chunk-NL22OVD7.mjs.map +1 -0
- package/dist/index.js +86 -5
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +20 -27
- package/dist/index.mjs.map +1 -1
- package/dist/server.js +158 -2
- package/dist/server.js.map +1 -1
- package/dist/server.mjs +126 -5
- package/dist/server.mjs.map +1 -1
- package/dist/types/client.d.ts +16 -0
- package/dist/types/client.d.ts.map +1 -0
- package/dist/types/hooks.d.ts +20 -0
- package/dist/types/hooks.d.ts.map +1 -0
- package/dist/types/index.d.ts +34 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/item.d.ts +54 -0
- package/dist/types/item.d.ts.map +1 -0
- package/dist/types/loader.d.ts +25 -0
- package/dist/types/loader.d.ts.map +1 -0
- package/dist/types/main.d.ts +11 -0
- package/dist/types/main.d.ts.map +1 -0
- package/dist/types/provider.d.ts +82 -0
- package/dist/types/provider.d.ts.map +1 -0
- package/dist/types/registry.d.ts +15 -0
- package/dist/types/registry.d.ts.map +1 -0
- package/dist/types/renderer.d.ts +20 -0
- package/dist/types/renderer.d.ts.map +1 -0
- package/dist/types/request-info.d.ts +8 -0
- package/dist/types/request-info.d.ts.map +1 -0
- package/dist/types/revalidate-item.d.ts +81 -0
- package/dist/types/revalidate-item.d.ts.map +1 -0
- package/dist/types/root-provider.d.ts +61 -0
- package/dist/types/root-provider.d.ts.map +1 -0
- package/dist/types/runtime.d.ts +113 -0
- package/dist/types/runtime.d.ts.map +1 -0
- package/dist/types/seo.d.ts +55 -0
- package/dist/types/seo.d.ts.map +1 -0
- package/dist/types/server/configs.d.ts +27 -0
- package/dist/types/server/configs.d.ts.map +1 -0
- package/dist/types/server/normalize-page-url.d.ts +19 -0
- package/dist/types/server/normalize-page-url.d.ts.map +1 -0
- package/dist/types/server/revalidate-handler.d.ts +55 -0
- package/dist/types/server/revalidate-handler.d.ts.map +1 -0
- package/dist/types/server/server-client.d.ts +21 -0
- package/dist/types/server/server-client.d.ts.map +1 -0
- package/dist/types/server.d.ts +19 -0
- package/dist/types/server.d.ts.map +1 -0
- package/dist/types/studio-bridge.d.ts +16 -0
- package/dist/types/studio-bridge.d.ts.map +1 -0
- package/dist/types/studio-connect.d.ts +27 -0
- package/dist/types/studio-connect.d.ts.map +1 -0
- package/dist/types/studio-router.d.ts +50 -0
- package/dist/types/studio-router.d.ts.map +1 -0
- package/dist/types/studio-script-src.d.ts +12 -0
- package/dist/types/studio-script-src.d.ts.map +1 -0
- package/dist/types/theme-settings-store.d.ts +17 -0
- package/dist/types/theme-settings-store.d.ts.map +1 -0
- package/dist/types/translation-context.d.ts +156 -0
- package/dist/types/translation-context.d.ts.map +1 -0
- package/dist/types/translation-store.d.ts +44 -0
- package/dist/types/translation-store.d.ts.map +1 -0
- package/dist/types/types.d.ts +661 -0
- package/dist/types/types.d.ts.map +1 -0
- package/dist/types/use-weaverse-next-studio.d.ts +34 -0
- package/dist/types/use-weaverse-next-studio.d.ts.map +1 -0
- package/dist/types/utils.d.ts +12 -0
- package/dist/types/utils.d.ts.map +1 -0
- package/package.json +7 -6
- package/src/client.ts +101 -0
- package/src/hooks.ts +50 -0
- package/src/index.ts +153 -0
- package/src/item.ts +151 -0
- package/src/loader.ts +135 -0
- package/src/main.tsx +45 -0
- package/src/provider.tsx +225 -0
- package/src/registry.ts +63 -0
- package/src/renderer.tsx +99 -0
- package/src/request-info.ts +95 -0
- package/src/revalidate-item.ts +210 -0
- package/src/root-provider.tsx +181 -0
- package/src/runtime.ts +521 -0
- package/src/seo.ts +157 -0
- package/src/server/configs.ts +182 -0
- package/src/server/normalize-page-url.ts +65 -0
- package/src/server/revalidate-handler.ts +357 -0
- package/src/server/server-client.ts +727 -0
- package/src/server.ts +67 -0
- package/src/studio-bridge.tsx +82 -0
- package/src/studio-connect.tsx +88 -0
- package/src/studio-router.ts +85 -0
- package/src/studio-script-src.ts +128 -0
- package/src/theme-settings-store.ts +46 -0
- package/src/translation-context.tsx +299 -0
- package/src/translation-store.ts +69 -0
- package/src/types.ts +748 -0
- package/src/use-weaverse-next-studio.tsx +106 -0
- package/src/utils.ts +37 -0
- package/dist/chunk-MQ6N5ODA.mjs.map +0 -1
- package/dist/index.d.mts +0 -592
- package/dist/index.d.ts +0 -592
- package/dist/seo-CrEFl_Up.d.mts +0 -516
- package/dist/seo-CrEFl_Up.d.ts +0 -516
- package/dist/server.d.mts +0 -100
- package/dist/server.d.ts +0 -100
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { WeaverseNextRuntimeInternal } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Minimal structural shape of the Next App Router returned by `useRouter()`
|
|
4
|
+
* (`next/navigation`) that the Studio bridge needs. Declared locally — rather
|
|
5
|
+
* than importing `AppRouterInstance` from `next` — so the adapter stays a pure
|
|
6
|
+
* function that unit tests can drive with a plain mock and never pulls
|
|
7
|
+
* `next/navigation` into the test graph.
|
|
8
|
+
*/
|
|
9
|
+
export interface WeaverseNextRouterLike {
|
|
10
|
+
/** Add a route to browser history. */
|
|
11
|
+
push: (href: string, options?: {
|
|
12
|
+
/** Whether to scroll to the top after navigation. */
|
|
13
|
+
scroll?: boolean;
|
|
14
|
+
}) => void;
|
|
15
|
+
/** Refresh the current App Router route and server data. */
|
|
16
|
+
refresh: () => void;
|
|
17
|
+
/** Replace the current browser-history entry. */
|
|
18
|
+
replace: (href: string, options?: {
|
|
19
|
+
/** Whether to scroll to the top after navigation. */
|
|
20
|
+
scroll?: boolean;
|
|
21
|
+
}) => void;
|
|
22
|
+
}
|
|
23
|
+
/** Resolved Studio navigation/revalidation callbacks for a Next runtime. */
|
|
24
|
+
export interface WeaverseNextStudioInternals {
|
|
25
|
+
/** Navigate Studio's preview with React Router-compatible options. */
|
|
26
|
+
navigate: NonNullable<WeaverseNextRuntimeInternal['navigate']>;
|
|
27
|
+
/** Refresh the current App Router route. */
|
|
28
|
+
revalidate: NonNullable<WeaverseNextRuntimeInternal['revalidate']>;
|
|
29
|
+
}
|
|
30
|
+
/** Controls how Studio navigation maps to the Next App Router. */
|
|
31
|
+
export interface CreateWeaverseNextStudioInternalsOptions {
|
|
32
|
+
/** Use `router.replace` instead of `router.push` for navigation. */
|
|
33
|
+
replace?: boolean;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Build Studio `navigate` / `revalidate` callbacks from a Next App Router.
|
|
37
|
+
*
|
|
38
|
+
* Maps Hydrogen's React Router semantics onto Next App Router:
|
|
39
|
+
* - `navigate(to, { preventScrollReset })` → `router.push(to, { scroll })`,
|
|
40
|
+
* where `scroll` is the inverse of `preventScrollReset`. Studio passes
|
|
41
|
+
* `preventScrollReset` for in-place edits so the preview viewport is kept,
|
|
42
|
+
* matching React Router's `navigate({ preventScrollReset })`.
|
|
43
|
+
* - `revalidate()` → `router.refresh()`, the App Router's loader-backed refresh
|
|
44
|
+
* and the closest equivalent to React Router's `useRevalidator`.
|
|
45
|
+
*
|
|
46
|
+
* Pure (no React, no `next/navigation`) so it is unit-testable with a mock
|
|
47
|
+
* router; the {@link WeaverseNextRouterLike} contract is the only coupling.
|
|
48
|
+
*/
|
|
49
|
+
export declare function createWeaverseNextStudioInternals(router: WeaverseNextRouterLike, options?: CreateWeaverseNextStudioInternalsOptions): WeaverseNextStudioInternals;
|
|
50
|
+
//# sourceMappingURL=studio-router.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"studio-router.d.ts","sourceRoot":"","sources":["../../src/studio-router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,SAAS,CAAA;AAE1D;;;;;;GAMG;AACH,MAAM,WAAW,sBAAsB;IACrC,sCAAsC;IACtC,IAAI,EAAE,CACJ,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QACR,qDAAqD;QACrD,MAAM,CAAC,EAAE,OAAO,CAAA;KACjB,KACE,IAAI,CAAA;IACT,4DAA4D;IAC5D,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,iDAAiD;IACjD,OAAO,EAAE,CACP,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QACR,qDAAqD;QACrD,MAAM,CAAC,EAAE,OAAO,CAAA;KACjB,KACE,IAAI,CAAA;CACV;AAED,4EAA4E;AAC5E,MAAM,WAAW,2BAA2B;IAC1C,sEAAsE;IACtE,QAAQ,EAAE,WAAW,CAAC,2BAA2B,CAAC,UAAU,CAAC,CAAC,CAAA;IAC9D,4CAA4C;IAC5C,UAAU,EAAE,WAAW,CAAC,2BAA2B,CAAC,YAAY,CAAC,CAAC,CAAA;CACnE;AAED,kEAAkE;AAClE,MAAM,WAAW,wCAAwC;IACvD,oEAAoE;IACpE,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAWD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,sBAAsB,EAC9B,OAAO,GAAE,wCAA6C,GACrD,2BAA2B,CAc7B"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { WeaverseNextRequestContext } from './types';
|
|
2
|
+
/** Trust context used when resolving a Studio bridge script URL. */
|
|
3
|
+
export interface ResolveWeaverseNextStudioScriptSrcOptions {
|
|
4
|
+
/** Storefront hostname; required to permit loopback Studio origins. */
|
|
5
|
+
storefrontHostname?: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Resolve the Studio script URL from request/search context. `@weaverse/next`
|
|
9
|
+
* uses the dedicated Next bridge path served by Builder.
|
|
10
|
+
*/
|
|
11
|
+
export declare function resolveWeaverseNextStudioScriptSrc(context?: WeaverseNextRequestContext, options?: ResolveWeaverseNextStudioScriptSrcOptions): string | null;
|
|
12
|
+
//# sourceMappingURL=studio-script-src.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"studio-script-src.d.ts","sourceRoot":"","sources":["../../src/studio-script-src.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAA;AAmFzD,oEAAoE;AACpE,MAAM,WAAW,yCAAyC;IACxD,uEAAuE;IACvE,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED;;;GAGG;AACH,wBAAgB,kCAAkC,CAChD,OAAO,CAAC,EAAE,0BAA0B,EACpC,OAAO,GAAE,yCAA8C,GACtD,MAAM,GAAG,IAAI,CA+Bf"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { WeaverseNextThemeSchema, WeaverseNextThemeSettingsStore } from './types';
|
|
2
|
+
/** Initial values for a root-scoped theme-settings store. */
|
|
3
|
+
export interface CreateWeaverseNextThemeSettingsStoreOptions {
|
|
4
|
+
/** Public environment values exposed alongside the store. */
|
|
5
|
+
publicEnv?: Record<string, string | undefined>;
|
|
6
|
+
/** Theme schema associated with the settings. */
|
|
7
|
+
schema?: WeaverseNextThemeSchema;
|
|
8
|
+
/** Initial setting values. */
|
|
9
|
+
settings?: Record<string, unknown>;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Small external store shape compatible with the Studio bridge and React's
|
|
13
|
+
* `useSyncExternalStore` contract. The bridge calls `updateThemeSettings` during
|
|
14
|
+
* live theme edits, so keep that method name stable.
|
|
15
|
+
*/
|
|
16
|
+
export declare function createWeaverseNextThemeSettingsStore(options?: CreateWeaverseNextThemeSettingsStoreOptions): WeaverseNextThemeSettingsStore;
|
|
17
|
+
//# sourceMappingURL=theme-settings-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-settings-store.d.ts","sourceRoot":"","sources":["../../src/theme-settings-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACvB,8BAA8B,EAC/B,MAAM,SAAS,CAAA;AAEhB,6DAA6D;AAC7D,MAAM,WAAW,2CAA2C;IAC1D,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;IAC9C,iDAAiD;IACjD,MAAM,CAAC,EAAE,uBAAuB,CAAA;IAChC,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC;AAED;;;;GAIG;AACH,wBAAgB,oCAAoC,CAClD,OAAO,GAAE,2CAAgD,GACxD,8BAA8B,CAuBhC"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import type { TranslationStore } from './translation-store';
|
|
3
|
+
/**
|
|
4
|
+
* Traverse a nested object by dot-path.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* getNestedKey({ cart: { title: 'Cart' } }, 'cart.title') // => 'Cart'
|
|
8
|
+
* getNestedKey({}, 'cart.title', 'fallback') // => 'fallback'
|
|
9
|
+
*/
|
|
10
|
+
export declare function getNestedKey(obj: Record<string, unknown>, path: string, fallback?: string): string | undefined;
|
|
11
|
+
/**
|
|
12
|
+
* Replace `{{variable}}` patterns in a string with provided values.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* interpolate('Hello {{name}}!', { name: 'World' }) // => 'Hello World!'
|
|
16
|
+
* interpolate('-{{percentage}}% Off', { percentage: 15 }) // => '-15% Off'
|
|
17
|
+
*/
|
|
18
|
+
export declare function interpolate(template: string, variables?: Record<string, string | number>): string;
|
|
19
|
+
/**
|
|
20
|
+
* Signature for a translation function.
|
|
21
|
+
*/
|
|
22
|
+
export type TranslateFunction = (key: string, variables?: Record<string, string | number>) => string;
|
|
23
|
+
/** Translation function and live override stores exposed by `useTranslation`. */
|
|
24
|
+
export interface TranslationValue {
|
|
25
|
+
/** Active-locale translated keys loaded from the storefront API. */
|
|
26
|
+
merchantOverrides: Record<string, unknown> | null;
|
|
27
|
+
/**
|
|
28
|
+
* Translate a key with optional variable interpolation.
|
|
29
|
+
*
|
|
30
|
+
* Priority chain (highest wins):
|
|
31
|
+
* 1. External `t` (passed into `WeaverseNextRootProvider` / `TranslationProvider`)
|
|
32
|
+
* 2. Design overrides (live Builder edits from `TranslationStore`)
|
|
33
|
+
* 3. `merchantOverrides` (DB/API overrides for the current locale)
|
|
34
|
+
* 4. `staticContent` (theme default JSON)
|
|
35
|
+
* 5. The key itself (fallback)
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* t('cart.title') // => "Cart"
|
|
39
|
+
* t('badge.sale', { percentage: 15 }) // => "-15% Off"
|
|
40
|
+
*/
|
|
41
|
+
t: TranslateFunction;
|
|
42
|
+
/**
|
|
43
|
+
* Legacy name for the live design-mode translation store.
|
|
44
|
+
*
|
|
45
|
+
* @deprecated Migrate to {@link TranslationValue.translationStore}. This
|
|
46
|
+
* alias points at the same store instance.
|
|
47
|
+
*/
|
|
48
|
+
themeTextStore: TranslationStore | null;
|
|
49
|
+
/** Exposed so the runtime/Studio bridge can attach it to `internal`. */
|
|
50
|
+
translationStore: TranslationStore | null;
|
|
51
|
+
}
|
|
52
|
+
/** Sources and content rendered by {@link TranslationProvider}. */
|
|
53
|
+
export interface TranslationProviderProps {
|
|
54
|
+
/** React subtree that can call `useTranslation`. */
|
|
55
|
+
children: ReactNode;
|
|
56
|
+
/** Active-locale static-text overrides loaded from Weaverse. */
|
|
57
|
+
merchantOverrides?: Record<string, unknown>;
|
|
58
|
+
/** Default-locale static content from the theme schema. */
|
|
59
|
+
staticContent: Record<string, unknown>;
|
|
60
|
+
/**
|
|
61
|
+
* Optional external translation function.
|
|
62
|
+
* When provided it becomes the **highest-priority** source:
|
|
63
|
+
* if it returns a non-empty string that differs from the raw key,
|
|
64
|
+
* that value is used; otherwise the internal resolution chain continues.
|
|
65
|
+
*/
|
|
66
|
+
t?: TranslateFunction;
|
|
67
|
+
/**
|
|
68
|
+
* Legacy prop name for the live translation store.
|
|
69
|
+
*
|
|
70
|
+
* @deprecated Migrate to {@link TranslationProviderProps.translationStore}.
|
|
71
|
+
* Still accepted for backward compatibility; ignored when `translationStore`
|
|
72
|
+
* is also provided.
|
|
73
|
+
*/
|
|
74
|
+
themeTextStore?: TranslationStore | null;
|
|
75
|
+
/** Optional store for live design-mode text overrides from the builder. */
|
|
76
|
+
translationStore?: TranslationStore | null;
|
|
77
|
+
}
|
|
78
|
+
/** Translation sources accepted by {@link createTranslate}. */
|
|
79
|
+
export interface CreateTranslateSources {
|
|
80
|
+
/** Unsaved live overrides received from Builder design mode. */
|
|
81
|
+
designOverrides?: Record<string, string>;
|
|
82
|
+
/** Host application's highest-priority translation function. */
|
|
83
|
+
externalT?: TranslateFunction;
|
|
84
|
+
/** Active-locale static-text overrides loaded from Weaverse. */
|
|
85
|
+
merchantOverrides?: Record<string, unknown>;
|
|
86
|
+
/** Default-locale static content from the theme schema. */
|
|
87
|
+
staticContent: Record<string, unknown>;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Build the `t()` translation function over a fixed set of sources.
|
|
91
|
+
*
|
|
92
|
+
* Resolution order, highest priority first:
|
|
93
|
+
* 1. `externalT` – host i18n (e.g. Shopify), unless it echoes the key
|
|
94
|
+
* 2. `designOverrides` – live design-mode edits, flat dot-path keys
|
|
95
|
+
* 3. `merchantOverrides` – locale overrides from the API, nested
|
|
96
|
+
* 4. `staticContent` – the theme's default locale JSON
|
|
97
|
+
* 5. the key itself
|
|
98
|
+
*
|
|
99
|
+
* Design overrides are looked up per-key (own properties only) rather than
|
|
100
|
+
* merged into `merchantOverrides`: a flat key like `cart.title` must override
|
|
101
|
+
* exactly that leaf without wiping sibling keys (`cart.subtitle`), and a
|
|
102
|
+
* per-key own-property lookup never builds nested objects from
|
|
103
|
+
* merchant-controlled keys, so it cannot pollute `Object.prototype`.
|
|
104
|
+
*/
|
|
105
|
+
export declare function createTranslate(sources: CreateTranslateSources): TranslateFunction;
|
|
106
|
+
/**
|
|
107
|
+
* Provider that wraps the app to expose the `t()` function.
|
|
108
|
+
*
|
|
109
|
+
* - `staticContent` – the theme's default locale JSON (from themeSchema.i18n)
|
|
110
|
+
* - `merchantOverrides` – locale-specific overrides fetched from the API
|
|
111
|
+
* - `translationStore` – optional store for live design-mode text overrides
|
|
112
|
+
* (the deprecated `themeTextStore` prop is accepted as a fallback)
|
|
113
|
+
*/
|
|
114
|
+
export declare function TranslationProvider({ staticContent, merchantOverrides, t: externalT, translationStore, themeTextStore, children, }: TranslationProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
115
|
+
/**
|
|
116
|
+
* Hook to access the translation `t()` function.
|
|
117
|
+
*
|
|
118
|
+
* Must be used inside a component wrapped by `WeaverseNextRootProvider` or
|
|
119
|
+
* `TranslationProvider`.
|
|
120
|
+
*
|
|
121
|
+
* @example
|
|
122
|
+
* ```tsx
|
|
123
|
+
* function CartTitle() {
|
|
124
|
+
* let { t } = useTranslation()
|
|
125
|
+
* return <h2>{t('cart.title')}</h2>
|
|
126
|
+
* }
|
|
127
|
+
* ```
|
|
128
|
+
*/
|
|
129
|
+
export declare function useTranslation(): TranslationValue;
|
|
130
|
+
/**
|
|
131
|
+
* Legacy name for {@link TranslationProvider}.
|
|
132
|
+
*
|
|
133
|
+
* @deprecated Replace `ThemeTextProvider` with {@link TranslationProvider};
|
|
134
|
+
* the props and runtime behavior are unchanged.
|
|
135
|
+
*/
|
|
136
|
+
export declare const ThemeTextProvider: typeof TranslationProvider;
|
|
137
|
+
/**
|
|
138
|
+
* Legacy name for {@link useTranslation}.
|
|
139
|
+
*
|
|
140
|
+
* @deprecated Replace `useThemeText` with {@link useTranslation}; the return
|
|
141
|
+
* value is unchanged.
|
|
142
|
+
*/
|
|
143
|
+
export declare const useThemeText: typeof useTranslation;
|
|
144
|
+
/**
|
|
145
|
+
* Legacy name for {@link TranslationValue}.
|
|
146
|
+
*
|
|
147
|
+
* @deprecated Import {@link TranslationValue} instead.
|
|
148
|
+
*/
|
|
149
|
+
export type ThemeTextValue = TranslationValue;
|
|
150
|
+
/**
|
|
151
|
+
* Legacy name for {@link TranslationProviderProps}.
|
|
152
|
+
*
|
|
153
|
+
* @deprecated Import {@link TranslationProviderProps} instead.
|
|
154
|
+
*/
|
|
155
|
+
export type ThemeTextProviderProps = TranslationProviderProps;
|
|
156
|
+
//# sourceMappingURL=translation-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"translation-context.d.ts","sourceRoot":"","sources":["../../src/translation-context.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAiB,KAAK,SAAS,EAAuB,MAAM,OAAO,CAAA;AAC1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAE3D;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,GAAG,SAAS,CAgBpB;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAC1C,MAAM,CASR;AAMD;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAC9B,GAAG,EAAE,MAAM,EACX,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,KACxC,MAAM,CAAA;AAEX,iFAAiF;AACjF,MAAM,WAAW,gBAAgB;IAC/B,oEAAoE;IACpE,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IACjD;;;;;;;;;;;;;OAaG;IACH,CAAC,EAAE,iBAAiB,CAAA;IACpB;;;;;OAKG;IACH,cAAc,EAAE,gBAAgB,GAAG,IAAI,CAAA;IACvC,wEAAwE;IACxE,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAA;CAC1C;AAKD,mEAAmE;AACnE,MAAM,WAAW,wBAAwB;IACvC,oDAAoD;IACpD,QAAQ,EAAE,SAAS,CAAA;IACnB,gEAAgE;IAChE,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC3C,2DAA2D;IAC3D,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACtC;;;;;OAKG;IACH,CAAC,CAAC,EAAE,iBAAiB,CAAA;IACrB;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAA;IACxC,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAA;CAC3C;AAED,+DAA+D;AAC/D,MAAM,WAAW,sBAAsB;IACrC,gEAAgE;IAChE,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACxC,gEAAgE;IAChE,SAAS,CAAC,EAAE,iBAAiB,CAAA;IAC7B,gEAAgE;IAChE,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC3C,2DAA2D;IAC3D,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACvC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,sBAAsB,GAC9B,iBAAiB,CA4BnB;AAUD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,aAAa,EACb,iBAAiB,EACjB,CAAC,EAAE,SAAS,EACZ,gBAAgB,EAChB,cAAc,EACd,QAAQ,GACT,EAAE,wBAAwB,2CAgC1B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,IAAI,gBAAgB,CAQjD;AAMD;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,4BAAsB,CAAA;AACpD;;;;;GAKG;AACH,eAAO,MAAM,YAAY,uBAAiB,CAAA;AAC1C;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,gBAAgB,CAAA;AAC7C;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG,wBAAwB,CAAA"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal mutable store for design-mode static text overrides.
|
|
3
|
+
*
|
|
4
|
+
* `useSyncExternalStore`-compatible. Passed into {@link TranslationProvider}
|
|
5
|
+
* (from `./translation-context`) which subscribes internally and layers
|
|
6
|
+
* overrides on top of `merchantOverrides`/`staticContent`. The Studio bridge
|
|
7
|
+
* calls `updateOverrides()` via `runtime.internal.translationStore` (also
|
|
8
|
+
* exposed as the deprecated `runtime.internal.themeTextStore` alias) so live
|
|
9
|
+
* static-text edits reach the runtime — identical surface to Hydrogen's store,
|
|
10
|
+
* so Builder's existing static-text RPC works with `@weaverse/next` unchanged.
|
|
11
|
+
*
|
|
12
|
+
* Shape: flat `Record<string, string>` — dot-notation keys map to values
|
|
13
|
+
* (e.g. "cart.title" → "Shopping Cart").
|
|
14
|
+
*/
|
|
15
|
+
export declare class TranslationStore {
|
|
16
|
+
/** Current flat translation overrides keyed by dot path. */
|
|
17
|
+
overrides: Record<string, string>;
|
|
18
|
+
private readonly listeners;
|
|
19
|
+
/** Replace every override and notify subscribers. */
|
|
20
|
+
setOverrides: (overrides: Record<string, string>) => void;
|
|
21
|
+
/** Merge changed overrides into the current values and notify subscribers. */
|
|
22
|
+
updateOverrides: (newOverrides: Record<string, string>) => void;
|
|
23
|
+
/** Return the current client-side override snapshot. */
|
|
24
|
+
getSnapshot: () => Record<string, string>;
|
|
25
|
+
/** Return the override snapshot used during server rendering. */
|
|
26
|
+
getServerSnapshot: () => Record<string, string>;
|
|
27
|
+
/** Subscribe to override changes and return an unsubscribe function. */
|
|
28
|
+
subscribe: (callback: () => void) => () => void;
|
|
29
|
+
private readonly emit;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Legacy constructor name for {@link TranslationStore}.
|
|
33
|
+
*
|
|
34
|
+
* @deprecated Replace `ThemeTextStore` with {@link TranslationStore}; the
|
|
35
|
+
* store contract and runtime behavior are unchanged.
|
|
36
|
+
*/
|
|
37
|
+
export declare const ThemeTextStore: typeof TranslationStore;
|
|
38
|
+
/**
|
|
39
|
+
* Legacy type name for {@link TranslationStore}.
|
|
40
|
+
*
|
|
41
|
+
* @deprecated Import {@link TranslationStore} instead.
|
|
42
|
+
*/
|
|
43
|
+
export type ThemeTextStore = TranslationStore;
|
|
44
|
+
//# sourceMappingURL=translation-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"translation-store.d.ts","sourceRoot":"","sources":["../../src/translation-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,qBAAa,gBAAgB;IAC3B,4DAA4D;IAC5D,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAK;IACtC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA6B;IAEvD,qDAAqD;IACrD,YAAY,GAAI,WAAW,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAGhD;IAED,8EAA8E;IAC9E,eAAe,GAAI,cAAc,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAGtD;IAED,wDAAwD;IACxD,WAAW,+BAAuB;IAElC,iEAAiE;IACjE,iBAAiB,+BAAuB;IAExC,wEAAwE;IACxE,SAAS,GAAI,UAAU,MAAM,IAAI,gBAKhC;IAED,OAAO,CAAC,QAAQ,CAAC,IAAI,CAQpB;CACF;AAED;;;;;GAKG;AACH,eAAO,MAAM,cAAc,yBAAmB,CAAA;AAC9C;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,gBAAgB,CAAA"}
|