@weaverse/next 0.1.0-alpha.7 → 0.1.0-alpha.8
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 +201 -8
- package/dist/index.d.ts +201 -8
- package/dist/index.js +350 -17
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +344 -20
- package/dist/index.mjs.map +1 -1
- package/dist/{seo-B9yNko4W.d.mts → seo-CpN6tC36.d.mts} +83 -1
- package/dist/{seo-B9yNko4W.d.ts → seo-CpN6tC36.d.ts} +83 -1
- package/dist/server.d.mts +2 -2
- package/dist/server.d.ts +2 -2
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Weaverse } from '@weaverse/react';
|
|
2
2
|
export { isBrowser, isIframe, useChildInstances, useItemInstance, useParentInstance, useWeaverse } from '@weaverse/react';
|
|
3
3
|
export { InspectorGroup, PageType, SchemaType, createSchema } from '@weaverse/schema';
|
|
4
|
-
import {
|
|
5
|
-
export { W as WeaverseArticle,
|
|
4
|
+
import { h as WeaverseNextClientConfig, g as WeaverseNextClient, i as WeaverseNextCommerceContext, x as WeaverseNextRequestContext, t as WeaverseNextLoaderData, a as TranslationStore, y as WeaverseNextRequestInfo, k as WeaverseNextComponentData, I as WeaverseNextThemeSettingsStore, A as WeaverseNextRuntimeInternal, M as WeaverseNextTranslationMap, z as WeaverseNextRuntimeConfig, J as WeaverseNextTranslationChanges, v as WeaverseNextPageData } from './seo-CpN6tC36.mjs';
|
|
5
|
+
export { T as ThemeTextStore, W as WeaverseArticle, b as WeaverseBlog, c as WeaverseCollection, d as WeaverseMetaObject, j as WeaverseNextComponent, l as WeaverseNextComponentLoaderArgs, m as WeaverseNextComponentProps, o as WeaverseNextCustomPageEntry, p as WeaverseNextFetchCustomPagesOptions, r as WeaverseNextI18n, s as WeaverseNextLoadPageInput, u as WeaverseNextPageAssignment, B as WeaverseNextSeoMetadata, F as WeaverseNextStorefront, K as WeaverseNextTranslationEntry, L as WeaverseNextTranslationItemEntry, N as WeaverseNextTranslationMapEntry, O as WeaverseProduct, P as formatWeaverseNextSeoMetadata, Q as getWeaverseNextSeoMetadata } from './seo-CpN6tC36.mjs';
|
|
6
6
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
7
7
|
import * as react from 'react';
|
|
8
8
|
import { ReactNode } from 'react';
|
|
@@ -61,15 +61,157 @@ interface RunComponentLoadersArgs {
|
|
|
61
61
|
*/
|
|
62
62
|
declare function runWeaverseComponentLoaders(args: RunComponentLoadersArgs): Promise<WeaverseNextLoaderData | null>;
|
|
63
63
|
|
|
64
|
+
/**
|
|
65
|
+
* Traverse a nested object by dot-path.
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* getNestedKey({ cart: { title: 'Cart' } }, 'cart.title') // => 'Cart'
|
|
69
|
+
* getNestedKey({}, 'cart.title', 'fallback') // => 'fallback'
|
|
70
|
+
*/
|
|
71
|
+
declare function getNestedKey(obj: Record<string, unknown>, path: string, fallback?: string): string | undefined;
|
|
72
|
+
/**
|
|
73
|
+
* Replace `{{variable}}` patterns in a string with provided values.
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* interpolate('Hello {{name}}!', { name: 'World' }) // => 'Hello World!'
|
|
77
|
+
* interpolate('-{{percentage}}% Off', { percentage: 15 }) // => '-15% Off'
|
|
78
|
+
*/
|
|
79
|
+
declare function interpolate(template: string, variables?: Record<string, string | number>): string;
|
|
80
|
+
/**
|
|
81
|
+
* Signature for a translation function.
|
|
82
|
+
*/
|
|
83
|
+
type TranslateFunction = (key: string, variables?: Record<string, string | number>) => string;
|
|
84
|
+
interface TranslationValue {
|
|
85
|
+
/** Active-locale translated keys loaded from the storefront API. */
|
|
86
|
+
merchantOverrides: Record<string, unknown> | null;
|
|
87
|
+
/**
|
|
88
|
+
* Translate a key with optional variable interpolation.
|
|
89
|
+
*
|
|
90
|
+
* Priority chain (highest wins):
|
|
91
|
+
* 1. External `t` (passed into `WeaverseNextRootProvider` / `TranslationProvider`)
|
|
92
|
+
* 2. Design overrides (live Builder edits from `TranslationStore`)
|
|
93
|
+
* 3. `merchantOverrides` (DB/API overrides for the current locale)
|
|
94
|
+
* 4. `staticContent` (theme default JSON)
|
|
95
|
+
* 5. The key itself (fallback)
|
|
96
|
+
*
|
|
97
|
+
* @example
|
|
98
|
+
* t('cart.title') // => "Cart"
|
|
99
|
+
* t('badge.sale', { percentage: 15 }) // => "-15% Off"
|
|
100
|
+
*/
|
|
101
|
+
t: TranslateFunction;
|
|
102
|
+
/**
|
|
103
|
+
* @deprecated Use {@link TranslationValue.translationStore} instead. Kept as a
|
|
104
|
+
* backward-compatible alias pointing at the same store instance.
|
|
105
|
+
*/
|
|
106
|
+
themeTextStore: TranslationStore | null;
|
|
107
|
+
/** Exposed so the runtime/Studio bridge can attach it to `internal`. */
|
|
108
|
+
translationStore: TranslationStore | null;
|
|
109
|
+
}
|
|
110
|
+
interface TranslationProviderProps {
|
|
111
|
+
children: ReactNode;
|
|
112
|
+
merchantOverrides?: Record<string, unknown>;
|
|
113
|
+
staticContent: Record<string, unknown>;
|
|
114
|
+
/**
|
|
115
|
+
* Optional external translation function.
|
|
116
|
+
* When provided it becomes the **highest-priority** source:
|
|
117
|
+
* if it returns a non-empty string that differs from the raw key,
|
|
118
|
+
* that value is used; otherwise the internal resolution chain continues.
|
|
119
|
+
*/
|
|
120
|
+
t?: TranslateFunction;
|
|
121
|
+
/**
|
|
122
|
+
* @deprecated Use {@link TranslationProviderProps.translationStore} instead.
|
|
123
|
+
* Still accepted for backward compatibility; ignored when `translationStore`
|
|
124
|
+
* is also provided.
|
|
125
|
+
*/
|
|
126
|
+
themeTextStore?: TranslationStore | null;
|
|
127
|
+
/** Optional store for live design-mode text overrides from the builder. */
|
|
128
|
+
translationStore?: TranslationStore | null;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Build the `t()` translation function over a fixed set of sources.
|
|
132
|
+
*
|
|
133
|
+
* Resolution order, highest priority first:
|
|
134
|
+
* 1. `externalT` – host i18n (e.g. Shopify), unless it echoes the key
|
|
135
|
+
* 2. `designOverrides` – live design-mode edits, flat dot-path keys
|
|
136
|
+
* 3. `merchantOverrides` – locale overrides from the API, nested
|
|
137
|
+
* 4. `staticContent` – the theme's default locale JSON
|
|
138
|
+
* 5. the key itself
|
|
139
|
+
*
|
|
140
|
+
* Design overrides are looked up per-key (own properties only) rather than
|
|
141
|
+
* merged into `merchantOverrides`: a flat key like `cart.title` must override
|
|
142
|
+
* exactly that leaf without wiping sibling keys (`cart.subtitle`), and a
|
|
143
|
+
* per-key own-property lookup never builds nested objects from
|
|
144
|
+
* merchant-controlled keys, so it cannot pollute `Object.prototype`.
|
|
145
|
+
*/
|
|
146
|
+
declare function createTranslate(sources: {
|
|
147
|
+
staticContent: Record<string, unknown>;
|
|
148
|
+
merchantOverrides?: Record<string, unknown>;
|
|
149
|
+
designOverrides?: Record<string, string>;
|
|
150
|
+
externalT?: TranslateFunction;
|
|
151
|
+
}): TranslateFunction;
|
|
152
|
+
/**
|
|
153
|
+
* Provider that wraps the app to expose the `t()` function.
|
|
154
|
+
*
|
|
155
|
+
* - `staticContent` – the theme's default locale JSON (from themeSchema.i18n)
|
|
156
|
+
* - `merchantOverrides` – locale-specific overrides fetched from the API
|
|
157
|
+
* - `translationStore` – optional store for live design-mode text overrides
|
|
158
|
+
* (the deprecated `themeTextStore` prop is accepted as a fallback)
|
|
159
|
+
*/
|
|
160
|
+
declare function TranslationProvider({ staticContent, merchantOverrides, t: externalT, translationStore, themeTextStore, children, }: TranslationProviderProps): react_jsx_runtime.JSX.Element;
|
|
161
|
+
/**
|
|
162
|
+
* Hook to access the translation `t()` function.
|
|
163
|
+
*
|
|
164
|
+
* Must be used inside a component wrapped by `WeaverseNextRootProvider` or
|
|
165
|
+
* `TranslationProvider`.
|
|
166
|
+
*
|
|
167
|
+
* @example
|
|
168
|
+
* ```tsx
|
|
169
|
+
* function CartTitle() {
|
|
170
|
+
* let { t } = useTranslation()
|
|
171
|
+
* return <h2>{t('cart.title')}</h2>
|
|
172
|
+
* }
|
|
173
|
+
* ```
|
|
174
|
+
*/
|
|
175
|
+
declare function useTranslation(): TranslationValue;
|
|
176
|
+
/**
|
|
177
|
+
* @deprecated Use {@link TranslationProvider} instead.
|
|
178
|
+
*/
|
|
179
|
+
declare const ThemeTextProvider: typeof TranslationProvider;
|
|
180
|
+
/**
|
|
181
|
+
* @deprecated Use {@link useTranslation} instead.
|
|
182
|
+
*/
|
|
183
|
+
declare const useThemeText: typeof useTranslation;
|
|
184
|
+
/**
|
|
185
|
+
* @deprecated Use {@link TranslationValue} instead.
|
|
186
|
+
*/
|
|
187
|
+
type ThemeTextValue = TranslationValue;
|
|
188
|
+
/**
|
|
189
|
+
* @deprecated Use {@link TranslationProviderProps} instead.
|
|
190
|
+
*/
|
|
191
|
+
type ThemeTextProviderProps = TranslationProviderProps;
|
|
192
|
+
|
|
64
193
|
interface WeaverseNextProviderProps {
|
|
65
194
|
children: ReactNode;
|
|
66
195
|
client?: WeaverseNextClient;
|
|
67
196
|
/** App-provided commerce context (storefront/cart/customer). */
|
|
68
197
|
commerce?: WeaverseNextCommerceContext;
|
|
198
|
+
/**
|
|
199
|
+
* Active-locale static-text overrides (nested, from `loadThemeSettings()`).
|
|
200
|
+
* Adopts the root provider's `merchantOverrides` when omitted.
|
|
201
|
+
*/
|
|
202
|
+
merchantOverrides?: Record<string, unknown>;
|
|
69
203
|
/** Explicit page/route commerce data (replaces section-level `useLoaderData`). */
|
|
70
204
|
pageData?: unknown;
|
|
71
205
|
/** Explicit root/global data (replaces `useRouteLoaderData('root')`). */
|
|
72
206
|
rootData?: unknown;
|
|
207
|
+
/**
|
|
208
|
+
* Theme default locale JSON (`loadThemeSettings().staticContent`). Adopts the
|
|
209
|
+
* root provider's `staticContent` when omitted, then falls back to
|
|
210
|
+
* `client.themeSchema.i18n.staticContent`.
|
|
211
|
+
*/
|
|
212
|
+
staticContent?: Record<string, unknown>;
|
|
213
|
+
/** Optional external translation function (host i18n); highest priority in `t()`. */
|
|
214
|
+
t?: TranslateFunction;
|
|
73
215
|
/** Theme settings override; falls back to `client.themeSettings`. */
|
|
74
216
|
themeSettings?: Record<string, unknown>;
|
|
75
217
|
}
|
|
@@ -144,13 +286,28 @@ interface RevalidateItemRuntimeLike {
|
|
|
144
286
|
declare function revalidateWeaverseNextItem(runtime: RevalidateItemRuntimeLike, draftItem: WeaverseNextComponentData, endpoint?: string): Promise<void>;
|
|
145
287
|
|
|
146
288
|
interface WeaverseNextRootContextValue {
|
|
289
|
+
/** Active-locale static-text overrides shared with route-level providers. */
|
|
290
|
+
merchantOverrides?: Record<string, unknown>;
|
|
291
|
+
/** Theme default locale JSON shared with route-level providers. */
|
|
292
|
+
staticContent: Record<string, unknown>;
|
|
147
293
|
themeSettingsStore: WeaverseNextThemeSettingsStore;
|
|
294
|
+
/** Single live design-mode static-text override store for the whole session. */
|
|
295
|
+
translationStore: TranslationStore;
|
|
148
296
|
}
|
|
149
297
|
interface WeaverseNextRootProviderProps {
|
|
150
298
|
children: ReactNode;
|
|
151
299
|
/** Root-loaded theme settings (published-mode fetch, no design-mode context). */
|
|
152
300
|
initialThemeSettings?: Record<string, unknown>;
|
|
301
|
+
/** Active-locale static-text overrides from `loadThemeSettings().merchantOverrides`. */
|
|
302
|
+
merchantOverrides?: Record<string, unknown>;
|
|
153
303
|
publicEnv?: Record<string, string | undefined>;
|
|
304
|
+
/**
|
|
305
|
+
* Theme default locale JSON (`loadThemeSettings().staticContent`). Falls back
|
|
306
|
+
* to `themeSchema.i18n.staticContent` when omitted.
|
|
307
|
+
*/
|
|
308
|
+
staticContent?: Record<string, unknown>;
|
|
309
|
+
/** Optional external translation function (host i18n); highest priority in `t()`. */
|
|
310
|
+
t?: TranslateFunction;
|
|
154
311
|
themeSchema?: unknown;
|
|
155
312
|
}
|
|
156
313
|
/**
|
|
@@ -187,14 +344,50 @@ declare class WeaverseNextRuntime extends Weaverse {
|
|
|
187
344
|
isPreviewMode: boolean;
|
|
188
345
|
isRevisionPreview: boolean;
|
|
189
346
|
sectionType?: string;
|
|
190
|
-
|
|
347
|
+
/**
|
|
348
|
+
* Translation map received from Builder in design mode, keyed by item ID.
|
|
349
|
+
* `WeaverseNextItem.getSnapShot()` overlays these onto the data handed to
|
|
350
|
+
* components, so translations render without mutating the base `_store`.
|
|
351
|
+
*/
|
|
352
|
+
translationMap: WeaverseNextTranslationMap;
|
|
191
353
|
translationLocale: string;
|
|
192
354
|
translationLanguageId: string;
|
|
193
355
|
constructor(config: WeaverseNextRuntimeConfig);
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
356
|
+
/**
|
|
357
|
+
* Pull `translationMap` / `translationLocale` / `translationLanguageId` off
|
|
358
|
+
* the current page data (Builder attaches them in design mode). Unlike
|
|
359
|
+
* Hydrogen, this also clears the sidecar to defaults when the new page data
|
|
360
|
+
* carries none, so a reused runtime / project-data swap can't leave a stale
|
|
361
|
+
* map overlaying the fresh tree.
|
|
362
|
+
*/
|
|
363
|
+
extractTranslationSidecar: () => void;
|
|
364
|
+
/**
|
|
365
|
+
* Replace the translation sidecar (Builder pushes this when translation data
|
|
366
|
+
* arrives or the active language changes) and refresh every item so their
|
|
367
|
+
* merged snapshots recompute.
|
|
368
|
+
*/
|
|
369
|
+
setTranslationSidecar: (map?: WeaverseNextTranslationMap, locale?: string, languageId?: string) => void;
|
|
370
|
+
/**
|
|
371
|
+
* Update a single translatable field for one item. Assigns a new per-item
|
|
372
|
+
* entry object so `WeaverseNextItem.getSnapShot()`'s translation-ref cache
|
|
373
|
+
* invalidates, then triggers only that item's subscribers.
|
|
374
|
+
*/
|
|
375
|
+
updateTranslation: (itemId: string, key: string, originalValue: string, translatedValue: string) => void;
|
|
376
|
+
/**
|
|
377
|
+
* Collect translation changes for the save flow. Returns `undefined` unless
|
|
378
|
+
* both the locale and language ID are set and at least one entry exists;
|
|
379
|
+
* each entry key is namespaced as `data.<field>` to match Builder.
|
|
380
|
+
*/
|
|
381
|
+
getTranslationChanges: () => WeaverseNextTranslationChanges | undefined;
|
|
382
|
+
/**
|
|
383
|
+
* Re-extract the translation sidecar whenever project data is replaced (route
|
|
384
|
+
* change / non-design reuse), before rebuilding item stores. Takes the
|
|
385
|
+
* renderable page shape (`rootId` resolved) that `getRenderablePage()` and
|
|
386
|
+
* the reuse branch pass in.
|
|
387
|
+
*/
|
|
388
|
+
setProjectData: (data: WeaverseNextPageData & {
|
|
389
|
+
rootId: string;
|
|
390
|
+
}) => void;
|
|
198
391
|
}
|
|
199
392
|
declare function createWeaverseNextRuntime(config: WeaverseNextRuntimeConfig): WeaverseNextRuntime;
|
|
200
393
|
declare function bindWeaverseNextStudioRuntime(runtime: WeaverseNextRuntime): boolean;
|
|
@@ -321,4 +514,4 @@ interface WeaverseNextStudioProps extends CreateWeaverseNextStudioInternalsOptio
|
|
|
321
514
|
*/
|
|
322
515
|
declare function WeaverseNextStudio(props: WeaverseNextStudioProps): react_jsx_runtime.JSX.Element;
|
|
323
516
|
|
|
324
|
-
export { type CreateWeaverseNextStudioInternalsOptions, type CreateWeaverseNextThemeSettingsStoreOptions, DEFAULT_REVALIDATE_ENDPOINT, type LoadWeaverseNextStudioScriptOptions, type ResolveWeaverseNextStudioScriptSrcOptions, type RevalidateItemRuntimeLike, type RunComponentLoadersArgs, WeaverseNextClient, WeaverseNextClientConfig, WeaverseNextCommerceContext, WeaverseNextComponentData, WeaverseNextLoaderData, WeaverseNextProvider, type WeaverseNextProviderProps, WeaverseNextRenderer, type WeaverseNextRendererProps, WeaverseNextRequestContext, WeaverseNextRequestInfo, type WeaverseNextRootContextValue, WeaverseNextRootProvider, type WeaverseNextRootProviderProps, type WeaverseNextRouterLike, WeaverseNextRuntime, WeaverseNextRuntimeConfig, WeaverseNextRuntimeInternal, WeaverseNextStudio, WeaverseNextStudioBridge, type WeaverseNextStudioBridgeProps, WeaverseNextStudioConnect, type WeaverseNextStudioConnectProps, type WeaverseNextStudioInternals, type WeaverseNextStudioProps, WeaverseNextThemeSettingsStore, bindWeaverseNextStudioRuntime, buildWeaverseNextRequestInfo, createWeaverseNextClient, createWeaverseNextRuntime, createWeaverseNextStudioInternals, createWeaverseNextThemeSettingsStore, loadWeaverseNextStudioScript, resolveWeaverseNextStudioScriptSrc, revalidateWeaverseNextItem, runWeaverseComponentLoaders, useThemeSettings, useWeaverseCommerce, useWeaverseNextStudioInternals, useWeaversePageData, useWeaverseRootData };
|
|
517
|
+
export { type CreateWeaverseNextStudioInternalsOptions, type CreateWeaverseNextThemeSettingsStoreOptions, DEFAULT_REVALIDATE_ENDPOINT, type LoadWeaverseNextStudioScriptOptions, type ResolveWeaverseNextStudioScriptSrcOptions, type RevalidateItemRuntimeLike, type RunComponentLoadersArgs, ThemeTextProvider, type ThemeTextProviderProps, type ThemeTextValue, type TranslateFunction, TranslationProvider, type TranslationProviderProps, TranslationStore, type TranslationValue, WeaverseNextClient, WeaverseNextClientConfig, WeaverseNextCommerceContext, WeaverseNextComponentData, WeaverseNextLoaderData, WeaverseNextPageData, WeaverseNextProvider, type WeaverseNextProviderProps, WeaverseNextRenderer, type WeaverseNextRendererProps, WeaverseNextRequestContext, WeaverseNextRequestInfo, type WeaverseNextRootContextValue, WeaverseNextRootProvider, type WeaverseNextRootProviderProps, type WeaverseNextRouterLike, WeaverseNextRuntime, WeaverseNextRuntimeConfig, WeaverseNextRuntimeInternal, WeaverseNextStudio, WeaverseNextStudioBridge, type WeaverseNextStudioBridgeProps, WeaverseNextStudioConnect, type WeaverseNextStudioConnectProps, type WeaverseNextStudioInternals, type WeaverseNextStudioProps, WeaverseNextThemeSettingsStore, WeaverseNextTranslationChanges, WeaverseNextTranslationMap, bindWeaverseNextStudioRuntime, buildWeaverseNextRequestInfo, createTranslate, createWeaverseNextClient, createWeaverseNextRuntime, createWeaverseNextStudioInternals, createWeaverseNextThemeSettingsStore, getNestedKey, interpolate, loadWeaverseNextStudioScript, resolveWeaverseNextStudioScriptSrc, revalidateWeaverseNextItem, runWeaverseComponentLoaders, useThemeSettings, useThemeText, useTranslation, useWeaverseCommerce, useWeaverseNextStudioInternals, useWeaversePageData, useWeaverseRootData };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Weaverse } from '@weaverse/react';
|
|
2
2
|
export { isBrowser, isIframe, useChildInstances, useItemInstance, useParentInstance, useWeaverse } from '@weaverse/react';
|
|
3
3
|
export { InspectorGroup, PageType, SchemaType, createSchema } from '@weaverse/schema';
|
|
4
|
-
import {
|
|
5
|
-
export { W as WeaverseArticle,
|
|
4
|
+
import { h as WeaverseNextClientConfig, g as WeaverseNextClient, i as WeaverseNextCommerceContext, x as WeaverseNextRequestContext, t as WeaverseNextLoaderData, a as TranslationStore, y as WeaverseNextRequestInfo, k as WeaverseNextComponentData, I as WeaverseNextThemeSettingsStore, A as WeaverseNextRuntimeInternal, M as WeaverseNextTranslationMap, z as WeaverseNextRuntimeConfig, J as WeaverseNextTranslationChanges, v as WeaverseNextPageData } from './seo-CpN6tC36.js';
|
|
5
|
+
export { T as ThemeTextStore, W as WeaverseArticle, b as WeaverseBlog, c as WeaverseCollection, d as WeaverseMetaObject, j as WeaverseNextComponent, l as WeaverseNextComponentLoaderArgs, m as WeaverseNextComponentProps, o as WeaverseNextCustomPageEntry, p as WeaverseNextFetchCustomPagesOptions, r as WeaverseNextI18n, s as WeaverseNextLoadPageInput, u as WeaverseNextPageAssignment, B as WeaverseNextSeoMetadata, F as WeaverseNextStorefront, K as WeaverseNextTranslationEntry, L as WeaverseNextTranslationItemEntry, N as WeaverseNextTranslationMapEntry, O as WeaverseProduct, P as formatWeaverseNextSeoMetadata, Q as getWeaverseNextSeoMetadata } from './seo-CpN6tC36.js';
|
|
6
6
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
7
7
|
import * as react from 'react';
|
|
8
8
|
import { ReactNode } from 'react';
|
|
@@ -61,15 +61,157 @@ interface RunComponentLoadersArgs {
|
|
|
61
61
|
*/
|
|
62
62
|
declare function runWeaverseComponentLoaders(args: RunComponentLoadersArgs): Promise<WeaverseNextLoaderData | null>;
|
|
63
63
|
|
|
64
|
+
/**
|
|
65
|
+
* Traverse a nested object by dot-path.
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* getNestedKey({ cart: { title: 'Cart' } }, 'cart.title') // => 'Cart'
|
|
69
|
+
* getNestedKey({}, 'cart.title', 'fallback') // => 'fallback'
|
|
70
|
+
*/
|
|
71
|
+
declare function getNestedKey(obj: Record<string, unknown>, path: string, fallback?: string): string | undefined;
|
|
72
|
+
/**
|
|
73
|
+
* Replace `{{variable}}` patterns in a string with provided values.
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* interpolate('Hello {{name}}!', { name: 'World' }) // => 'Hello World!'
|
|
77
|
+
* interpolate('-{{percentage}}% Off', { percentage: 15 }) // => '-15% Off'
|
|
78
|
+
*/
|
|
79
|
+
declare function interpolate(template: string, variables?: Record<string, string | number>): string;
|
|
80
|
+
/**
|
|
81
|
+
* Signature for a translation function.
|
|
82
|
+
*/
|
|
83
|
+
type TranslateFunction = (key: string, variables?: Record<string, string | number>) => string;
|
|
84
|
+
interface TranslationValue {
|
|
85
|
+
/** Active-locale translated keys loaded from the storefront API. */
|
|
86
|
+
merchantOverrides: Record<string, unknown> | null;
|
|
87
|
+
/**
|
|
88
|
+
* Translate a key with optional variable interpolation.
|
|
89
|
+
*
|
|
90
|
+
* Priority chain (highest wins):
|
|
91
|
+
* 1. External `t` (passed into `WeaverseNextRootProvider` / `TranslationProvider`)
|
|
92
|
+
* 2. Design overrides (live Builder edits from `TranslationStore`)
|
|
93
|
+
* 3. `merchantOverrides` (DB/API overrides for the current locale)
|
|
94
|
+
* 4. `staticContent` (theme default JSON)
|
|
95
|
+
* 5. The key itself (fallback)
|
|
96
|
+
*
|
|
97
|
+
* @example
|
|
98
|
+
* t('cart.title') // => "Cart"
|
|
99
|
+
* t('badge.sale', { percentage: 15 }) // => "-15% Off"
|
|
100
|
+
*/
|
|
101
|
+
t: TranslateFunction;
|
|
102
|
+
/**
|
|
103
|
+
* @deprecated Use {@link TranslationValue.translationStore} instead. Kept as a
|
|
104
|
+
* backward-compatible alias pointing at the same store instance.
|
|
105
|
+
*/
|
|
106
|
+
themeTextStore: TranslationStore | null;
|
|
107
|
+
/** Exposed so the runtime/Studio bridge can attach it to `internal`. */
|
|
108
|
+
translationStore: TranslationStore | null;
|
|
109
|
+
}
|
|
110
|
+
interface TranslationProviderProps {
|
|
111
|
+
children: ReactNode;
|
|
112
|
+
merchantOverrides?: Record<string, unknown>;
|
|
113
|
+
staticContent: Record<string, unknown>;
|
|
114
|
+
/**
|
|
115
|
+
* Optional external translation function.
|
|
116
|
+
* When provided it becomes the **highest-priority** source:
|
|
117
|
+
* if it returns a non-empty string that differs from the raw key,
|
|
118
|
+
* that value is used; otherwise the internal resolution chain continues.
|
|
119
|
+
*/
|
|
120
|
+
t?: TranslateFunction;
|
|
121
|
+
/**
|
|
122
|
+
* @deprecated Use {@link TranslationProviderProps.translationStore} instead.
|
|
123
|
+
* Still accepted for backward compatibility; ignored when `translationStore`
|
|
124
|
+
* is also provided.
|
|
125
|
+
*/
|
|
126
|
+
themeTextStore?: TranslationStore | null;
|
|
127
|
+
/** Optional store for live design-mode text overrides from the builder. */
|
|
128
|
+
translationStore?: TranslationStore | null;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Build the `t()` translation function over a fixed set of sources.
|
|
132
|
+
*
|
|
133
|
+
* Resolution order, highest priority first:
|
|
134
|
+
* 1. `externalT` – host i18n (e.g. Shopify), unless it echoes the key
|
|
135
|
+
* 2. `designOverrides` – live design-mode edits, flat dot-path keys
|
|
136
|
+
* 3. `merchantOverrides` – locale overrides from the API, nested
|
|
137
|
+
* 4. `staticContent` – the theme's default locale JSON
|
|
138
|
+
* 5. the key itself
|
|
139
|
+
*
|
|
140
|
+
* Design overrides are looked up per-key (own properties only) rather than
|
|
141
|
+
* merged into `merchantOverrides`: a flat key like `cart.title` must override
|
|
142
|
+
* exactly that leaf without wiping sibling keys (`cart.subtitle`), and a
|
|
143
|
+
* per-key own-property lookup never builds nested objects from
|
|
144
|
+
* merchant-controlled keys, so it cannot pollute `Object.prototype`.
|
|
145
|
+
*/
|
|
146
|
+
declare function createTranslate(sources: {
|
|
147
|
+
staticContent: Record<string, unknown>;
|
|
148
|
+
merchantOverrides?: Record<string, unknown>;
|
|
149
|
+
designOverrides?: Record<string, string>;
|
|
150
|
+
externalT?: TranslateFunction;
|
|
151
|
+
}): TranslateFunction;
|
|
152
|
+
/**
|
|
153
|
+
* Provider that wraps the app to expose the `t()` function.
|
|
154
|
+
*
|
|
155
|
+
* - `staticContent` – the theme's default locale JSON (from themeSchema.i18n)
|
|
156
|
+
* - `merchantOverrides` – locale-specific overrides fetched from the API
|
|
157
|
+
* - `translationStore` – optional store for live design-mode text overrides
|
|
158
|
+
* (the deprecated `themeTextStore` prop is accepted as a fallback)
|
|
159
|
+
*/
|
|
160
|
+
declare function TranslationProvider({ staticContent, merchantOverrides, t: externalT, translationStore, themeTextStore, children, }: TranslationProviderProps): react_jsx_runtime.JSX.Element;
|
|
161
|
+
/**
|
|
162
|
+
* Hook to access the translation `t()` function.
|
|
163
|
+
*
|
|
164
|
+
* Must be used inside a component wrapped by `WeaverseNextRootProvider` or
|
|
165
|
+
* `TranslationProvider`.
|
|
166
|
+
*
|
|
167
|
+
* @example
|
|
168
|
+
* ```tsx
|
|
169
|
+
* function CartTitle() {
|
|
170
|
+
* let { t } = useTranslation()
|
|
171
|
+
* return <h2>{t('cart.title')}</h2>
|
|
172
|
+
* }
|
|
173
|
+
* ```
|
|
174
|
+
*/
|
|
175
|
+
declare function useTranslation(): TranslationValue;
|
|
176
|
+
/**
|
|
177
|
+
* @deprecated Use {@link TranslationProvider} instead.
|
|
178
|
+
*/
|
|
179
|
+
declare const ThemeTextProvider: typeof TranslationProvider;
|
|
180
|
+
/**
|
|
181
|
+
* @deprecated Use {@link useTranslation} instead.
|
|
182
|
+
*/
|
|
183
|
+
declare const useThemeText: typeof useTranslation;
|
|
184
|
+
/**
|
|
185
|
+
* @deprecated Use {@link TranslationValue} instead.
|
|
186
|
+
*/
|
|
187
|
+
type ThemeTextValue = TranslationValue;
|
|
188
|
+
/**
|
|
189
|
+
* @deprecated Use {@link TranslationProviderProps} instead.
|
|
190
|
+
*/
|
|
191
|
+
type ThemeTextProviderProps = TranslationProviderProps;
|
|
192
|
+
|
|
64
193
|
interface WeaverseNextProviderProps {
|
|
65
194
|
children: ReactNode;
|
|
66
195
|
client?: WeaverseNextClient;
|
|
67
196
|
/** App-provided commerce context (storefront/cart/customer). */
|
|
68
197
|
commerce?: WeaverseNextCommerceContext;
|
|
198
|
+
/**
|
|
199
|
+
* Active-locale static-text overrides (nested, from `loadThemeSettings()`).
|
|
200
|
+
* Adopts the root provider's `merchantOverrides` when omitted.
|
|
201
|
+
*/
|
|
202
|
+
merchantOverrides?: Record<string, unknown>;
|
|
69
203
|
/** Explicit page/route commerce data (replaces section-level `useLoaderData`). */
|
|
70
204
|
pageData?: unknown;
|
|
71
205
|
/** Explicit root/global data (replaces `useRouteLoaderData('root')`). */
|
|
72
206
|
rootData?: unknown;
|
|
207
|
+
/**
|
|
208
|
+
* Theme default locale JSON (`loadThemeSettings().staticContent`). Adopts the
|
|
209
|
+
* root provider's `staticContent` when omitted, then falls back to
|
|
210
|
+
* `client.themeSchema.i18n.staticContent`.
|
|
211
|
+
*/
|
|
212
|
+
staticContent?: Record<string, unknown>;
|
|
213
|
+
/** Optional external translation function (host i18n); highest priority in `t()`. */
|
|
214
|
+
t?: TranslateFunction;
|
|
73
215
|
/** Theme settings override; falls back to `client.themeSettings`. */
|
|
74
216
|
themeSettings?: Record<string, unknown>;
|
|
75
217
|
}
|
|
@@ -144,13 +286,28 @@ interface RevalidateItemRuntimeLike {
|
|
|
144
286
|
declare function revalidateWeaverseNextItem(runtime: RevalidateItemRuntimeLike, draftItem: WeaverseNextComponentData, endpoint?: string): Promise<void>;
|
|
145
287
|
|
|
146
288
|
interface WeaverseNextRootContextValue {
|
|
289
|
+
/** Active-locale static-text overrides shared with route-level providers. */
|
|
290
|
+
merchantOverrides?: Record<string, unknown>;
|
|
291
|
+
/** Theme default locale JSON shared with route-level providers. */
|
|
292
|
+
staticContent: Record<string, unknown>;
|
|
147
293
|
themeSettingsStore: WeaverseNextThemeSettingsStore;
|
|
294
|
+
/** Single live design-mode static-text override store for the whole session. */
|
|
295
|
+
translationStore: TranslationStore;
|
|
148
296
|
}
|
|
149
297
|
interface WeaverseNextRootProviderProps {
|
|
150
298
|
children: ReactNode;
|
|
151
299
|
/** Root-loaded theme settings (published-mode fetch, no design-mode context). */
|
|
152
300
|
initialThemeSettings?: Record<string, unknown>;
|
|
301
|
+
/** Active-locale static-text overrides from `loadThemeSettings().merchantOverrides`. */
|
|
302
|
+
merchantOverrides?: Record<string, unknown>;
|
|
153
303
|
publicEnv?: Record<string, string | undefined>;
|
|
304
|
+
/**
|
|
305
|
+
* Theme default locale JSON (`loadThemeSettings().staticContent`). Falls back
|
|
306
|
+
* to `themeSchema.i18n.staticContent` when omitted.
|
|
307
|
+
*/
|
|
308
|
+
staticContent?: Record<string, unknown>;
|
|
309
|
+
/** Optional external translation function (host i18n); highest priority in `t()`. */
|
|
310
|
+
t?: TranslateFunction;
|
|
154
311
|
themeSchema?: unknown;
|
|
155
312
|
}
|
|
156
313
|
/**
|
|
@@ -187,14 +344,50 @@ declare class WeaverseNextRuntime extends Weaverse {
|
|
|
187
344
|
isPreviewMode: boolean;
|
|
188
345
|
isRevisionPreview: boolean;
|
|
189
346
|
sectionType?: string;
|
|
190
|
-
|
|
347
|
+
/**
|
|
348
|
+
* Translation map received from Builder in design mode, keyed by item ID.
|
|
349
|
+
* `WeaverseNextItem.getSnapShot()` overlays these onto the data handed to
|
|
350
|
+
* components, so translations render without mutating the base `_store`.
|
|
351
|
+
*/
|
|
352
|
+
translationMap: WeaverseNextTranslationMap;
|
|
191
353
|
translationLocale: string;
|
|
192
354
|
translationLanguageId: string;
|
|
193
355
|
constructor(config: WeaverseNextRuntimeConfig);
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
356
|
+
/**
|
|
357
|
+
* Pull `translationMap` / `translationLocale` / `translationLanguageId` off
|
|
358
|
+
* the current page data (Builder attaches them in design mode). Unlike
|
|
359
|
+
* Hydrogen, this also clears the sidecar to defaults when the new page data
|
|
360
|
+
* carries none, so a reused runtime / project-data swap can't leave a stale
|
|
361
|
+
* map overlaying the fresh tree.
|
|
362
|
+
*/
|
|
363
|
+
extractTranslationSidecar: () => void;
|
|
364
|
+
/**
|
|
365
|
+
* Replace the translation sidecar (Builder pushes this when translation data
|
|
366
|
+
* arrives or the active language changes) and refresh every item so their
|
|
367
|
+
* merged snapshots recompute.
|
|
368
|
+
*/
|
|
369
|
+
setTranslationSidecar: (map?: WeaverseNextTranslationMap, locale?: string, languageId?: string) => void;
|
|
370
|
+
/**
|
|
371
|
+
* Update a single translatable field for one item. Assigns a new per-item
|
|
372
|
+
* entry object so `WeaverseNextItem.getSnapShot()`'s translation-ref cache
|
|
373
|
+
* invalidates, then triggers only that item's subscribers.
|
|
374
|
+
*/
|
|
375
|
+
updateTranslation: (itemId: string, key: string, originalValue: string, translatedValue: string) => void;
|
|
376
|
+
/**
|
|
377
|
+
* Collect translation changes for the save flow. Returns `undefined` unless
|
|
378
|
+
* both the locale and language ID are set and at least one entry exists;
|
|
379
|
+
* each entry key is namespaced as `data.<field>` to match Builder.
|
|
380
|
+
*/
|
|
381
|
+
getTranslationChanges: () => WeaverseNextTranslationChanges | undefined;
|
|
382
|
+
/**
|
|
383
|
+
* Re-extract the translation sidecar whenever project data is replaced (route
|
|
384
|
+
* change / non-design reuse), before rebuilding item stores. Takes the
|
|
385
|
+
* renderable page shape (`rootId` resolved) that `getRenderablePage()` and
|
|
386
|
+
* the reuse branch pass in.
|
|
387
|
+
*/
|
|
388
|
+
setProjectData: (data: WeaverseNextPageData & {
|
|
389
|
+
rootId: string;
|
|
390
|
+
}) => void;
|
|
198
391
|
}
|
|
199
392
|
declare function createWeaverseNextRuntime(config: WeaverseNextRuntimeConfig): WeaverseNextRuntime;
|
|
200
393
|
declare function bindWeaverseNextStudioRuntime(runtime: WeaverseNextRuntime): boolean;
|
|
@@ -321,4 +514,4 @@ interface WeaverseNextStudioProps extends CreateWeaverseNextStudioInternalsOptio
|
|
|
321
514
|
*/
|
|
322
515
|
declare function WeaverseNextStudio(props: WeaverseNextStudioProps): react_jsx_runtime.JSX.Element;
|
|
323
516
|
|
|
324
|
-
export { type CreateWeaverseNextStudioInternalsOptions, type CreateWeaverseNextThemeSettingsStoreOptions, DEFAULT_REVALIDATE_ENDPOINT, type LoadWeaverseNextStudioScriptOptions, type ResolveWeaverseNextStudioScriptSrcOptions, type RevalidateItemRuntimeLike, type RunComponentLoadersArgs, WeaverseNextClient, WeaverseNextClientConfig, WeaverseNextCommerceContext, WeaverseNextComponentData, WeaverseNextLoaderData, WeaverseNextProvider, type WeaverseNextProviderProps, WeaverseNextRenderer, type WeaverseNextRendererProps, WeaverseNextRequestContext, WeaverseNextRequestInfo, type WeaverseNextRootContextValue, WeaverseNextRootProvider, type WeaverseNextRootProviderProps, type WeaverseNextRouterLike, WeaverseNextRuntime, WeaverseNextRuntimeConfig, WeaverseNextRuntimeInternal, WeaverseNextStudio, WeaverseNextStudioBridge, type WeaverseNextStudioBridgeProps, WeaverseNextStudioConnect, type WeaverseNextStudioConnectProps, type WeaverseNextStudioInternals, type WeaverseNextStudioProps, WeaverseNextThemeSettingsStore, bindWeaverseNextStudioRuntime, buildWeaverseNextRequestInfo, createWeaverseNextClient, createWeaverseNextRuntime, createWeaverseNextStudioInternals, createWeaverseNextThemeSettingsStore, loadWeaverseNextStudioScript, resolveWeaverseNextStudioScriptSrc, revalidateWeaverseNextItem, runWeaverseComponentLoaders, useThemeSettings, useWeaverseCommerce, useWeaverseNextStudioInternals, useWeaversePageData, useWeaverseRootData };
|
|
517
|
+
export { type CreateWeaverseNextStudioInternalsOptions, type CreateWeaverseNextThemeSettingsStoreOptions, DEFAULT_REVALIDATE_ENDPOINT, type LoadWeaverseNextStudioScriptOptions, type ResolveWeaverseNextStudioScriptSrcOptions, type RevalidateItemRuntimeLike, type RunComponentLoadersArgs, ThemeTextProvider, type ThemeTextProviderProps, type ThemeTextValue, type TranslateFunction, TranslationProvider, type TranslationProviderProps, TranslationStore, type TranslationValue, WeaverseNextClient, WeaverseNextClientConfig, WeaverseNextCommerceContext, WeaverseNextComponentData, WeaverseNextLoaderData, WeaverseNextPageData, WeaverseNextProvider, type WeaverseNextProviderProps, WeaverseNextRenderer, type WeaverseNextRendererProps, WeaverseNextRequestContext, WeaverseNextRequestInfo, type WeaverseNextRootContextValue, WeaverseNextRootProvider, type WeaverseNextRootProviderProps, type WeaverseNextRouterLike, WeaverseNextRuntime, WeaverseNextRuntimeConfig, WeaverseNextRuntimeInternal, WeaverseNextStudio, WeaverseNextStudioBridge, type WeaverseNextStudioBridgeProps, WeaverseNextStudioConnect, type WeaverseNextStudioConnectProps, type WeaverseNextStudioInternals, type WeaverseNextStudioProps, WeaverseNextThemeSettingsStore, WeaverseNextTranslationChanges, WeaverseNextTranslationMap, bindWeaverseNextStudioRuntime, buildWeaverseNextRequestInfo, createTranslate, createWeaverseNextClient, createWeaverseNextRuntime, createWeaverseNextStudioInternals, createWeaverseNextThemeSettingsStore, getNestedKey, interpolate, loadWeaverseNextStudioScript, resolveWeaverseNextStudioScriptSrc, revalidateWeaverseNextItem, runWeaverseComponentLoaders, useThemeSettings, useThemeText, useTranslation, useWeaverseCommerce, useWeaverseNextStudioInternals, useWeaversePageData, useWeaverseRootData };
|