manifest-editor 2.2.2-next.0.903673e → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -30,7 +30,7 @@ import { ManifestEditor } from "manifest-editor";
30
30
  import "manifest-editor/index.css";
31
31
  ```
32
32
 
33
- `manifest-editor/reset.css` is an optional global reset. Import it **before** `index.css` if your host application needs it. The editor is browser UI: in an SSR framework, mount it in a client-only boundary with server rendering disabled for the editor.
33
+ `manifest-editor/reset.css` is an optional global reset. Import it **before** `index.css` if your host application needs it. The editor is browser UI: in an SSR framework, mount it in a client component boundary. Server/task code should import the public i18n `/core` entry rather than the React/CSS facade. Native renderer and dependency SSR support must be checked by the host.
34
34
 
35
35
  ### Embed in a React application
36
36
 
@@ -76,7 +76,9 @@ export default function App() {
76
76
 
77
77
  return (
78
78
  <div style={{ height: "100vh", display: "flex", flexDirection: "column" }}>
79
- <header><button onClick={exportManifest}>Export JSON to console</button></header>
79
+ <header>
80
+ <button onClick={exportManifest}>Export JSON to console</button>
81
+ </header>
80
82
  <div style={{ flex: 1, minHeight: 0 }}>
81
83
  <ManifestEditor vault={vault} resource={resource} />
82
84
  </div>
@@ -87,9 +89,86 @@ export default function App() {
87
89
 
88
90
  Edits live in the Vault. Persist exported JSON through your application's own save mechanism; there is no `onSave` or `onChange` component prop in this release. The optional `data` prop supplies a Manifest or Collection you already have instead of fetching it.
89
91
 
92
+ ## Interface localisation
93
+
94
+ `localisation?: ShellLocalisation` forwards public `EditorI18nOptions` unchanged to
95
+ ShellProvider. English is the default. Declare `@manifest-editor/i18n` as a direct
96
+ host dependency when importing its providers, types or optional catalogs. Register both fallback and selected-locale
97
+ metadata; a locale allow-list constrains choices but does not load translations.
98
+ The optional public Dutch entry contains the currently reviewed catalogs:
99
+
100
+ ```tsx
101
+ import { ManifestEditor, type ShellLocalisation } from "manifest-editor";
102
+ import { defaultLocales, dutchLocale } from "@manifest-editor/i18n/core";
103
+ import { dutchCatalogs, dutchPlain } from "@manifest-editor/i18n/nl";
104
+
105
+ // Keep resource option identity stable between renders.
106
+ const localisation = {
107
+ locales: [...defaultLocales, dutchLocale],
108
+ catalogs: dutchCatalogs,
109
+ profiles: { plain: dutchPlain },
110
+ } satisfies ShellLocalisation;
111
+
112
+ <ManifestEditor
113
+ resource="https://example.org/manifest"
114
+ localisation={localisation}
115
+ config={{
116
+ uiI18n: { defaultLocale: "nl", availableLocales: ["nl"], defaultProfile: "plain" },
117
+ i18n: { defaultLanguage: "cy", availableLanguages: ["cy"], advancedLanguageMode: true },
118
+ }}
119
+ />;
120
+ ```
121
+
122
+ `config.uiI18n` is JSON-compatible UI policy, distinct from authored content
123
+ `config.i18n`. Keep catalogs, loaders and callbacks in local runtime/provider
124
+ options, outside saved configuration, IIIF exports and worker payloads. Switching
125
+ UI locale/profile never changes authored InternationalString values or IDs.
126
+ The facade adds no new messages or standalone locale chunks; plain wording falls
127
+ back per message and catalog coverage alone does not establish whole-UI coverage.
128
+ Exhibition terminology belongs in an explicitly composed exhibition host.
129
+
130
+ For controlled selection, wrap the editor in the public `EditorI18nProvider`:
131
+
132
+ ```tsx
133
+ <EditorI18nProvider
134
+ instance={hostRuntime}
135
+ locale={locale}
136
+ profile={profile}
137
+ onLocaleChange={setLocale}
138
+ onProfileChange={setProfile}
139
+ >
140
+ <ManifestEditor resource={resource} localisation={localisation} />
141
+ </EditorI18nProvider>
142
+ ```
143
+
144
+ Create `hostRuntime` once with `createEditorI18n(localisation)`. Host callbacks
145
+ remain authoritative, including rejected requests. Shell intersects host and
146
+ preset policy. When an override/preset creates an effective runtime, forward all
147
+ host resources, including fallback metadata; an arbitrary inherited instance does
148
+ not expose its input catalogs. With no override, Shell retains the original actual
149
+ provider instance. Never pass the spread `useEditorI18n()` snapshot as `instance`.
150
+ Keep each editor's Vault and React position stable; do not key it by locale/profile.
151
+ Selection updates use the current runtime. Replacing resource/configuration options
152
+ replaces the effective runtime without remounting editor state and retains allowed
153
+ selection. An explicit host runtime replacement uses `instance={newRuntime}`.
154
+
155
+ Lazy locale bundles use `localisation.resourceLoaders`, an ordered array of
156
+ `{ locale, load }` entries returning `catalogs`, `profiles`, `presets` and/or
157
+ `presetProfiles` stores for that locale. This also works for built-in namespaces;
158
+ no duplicate namespace registration is necessary. See the
159
+ [runtime examples](../i18n/README.md). Lazy plugin namespaces use `localisation.registrations` (public catalog contracts and
160
+ locale-to-loader functions) and `requiredNamespaces`. Loaders must return message
161
+ maps and can import host assets or the public `@manifest-editor/i18n/nl` chunk;
162
+ there is no private authoring-package import in consumer code. Registration/loading
163
+ uses the effective Shell runtime, including plugins and independently mounted
164
+ editors. SSR hydration requires matching synchronous resources and selection on
165
+ server/client; async-only resources load after mount. The React facade is browser
166
+ UI, not a server/task factory. `@manifest-editor/i18n/core` and `/nl` are server-safe
167
+ source entries; emitted ESM/CJS/RSC behavior remains a release check.
168
+
90
169
  ## Use the CDN browser runtime
91
170
 
92
- The browser runtime is a classic script plus CSS, published under `dist/browser/`. The examples below target **2.2.1** (available once this release is published); use an exact published version with the runtime API, and keep script and stylesheet versions together.
171
+ The browser runtime is a classic script plus CSS, published under `dist/browser/`. The examples below target **2.2.1** (available once this release is published); use an exact published version with runtime API 2, and keep script and stylesheet versions together.
93
172
 
94
173
  ### Automatically load React
95
174
 
@@ -99,24 +178,44 @@ Save this as an HTML file and serve it over HTTP. No bundler or JSX transformati
99
178
  <!doctype html>
100
179
  <html lang="en">
101
180
  <head>
102
- <meta charset="utf-8">
103
- <meta name="viewport" content="width=device-width, initial-scale=1">
181
+ <meta charset="utf-8" />
182
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
104
183
  <title>Manifest Editor</title>
105
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/manifest-editor@2.2.1/dist/browser/runtime.css" crossorigin="anonymous">
184
+ <link
185
+ rel="stylesheet"
186
+ href="https://cdn.jsdelivr.net/npm/manifest-editor@2.2.1/dist/browser/runtime.css"
187
+ crossorigin="anonymous"
188
+ />
106
189
  <style>
107
- html, body { margin: 0; height: 100%; }
108
- body { display: flex; flex-direction: column; }
109
- header { padding: 12px; border-bottom: 1px solid #ddd; font: 16px system-ui; }
110
- #editor { flex: 1; min-height: 0; }
190
+ html,
191
+ body {
192
+ margin: 0;
193
+ height: 100%;
194
+ }
195
+ body {
196
+ display: flex;
197
+ flex-direction: column;
198
+ }
199
+ header {
200
+ padding: 12px;
201
+ border-bottom: 1px solid #ddd;
202
+ font: 16px system-ui;
203
+ }
204
+ #editor {
205
+ flex: 1;
206
+ min-height: 0;
207
+ }
111
208
  </style>
112
209
  </head>
113
210
  <body>
114
211
  <header>Manifest Editor</header>
115
212
  <main id="editor"></main>
116
- <script src="https://cdn.jsdelivr.net/npm/manifest-editor@2.2.1/dist/browser/runtime.js" crossorigin="anonymous"></script>
213
+ <script
214
+ src="https://cdn.jsdelivr.net/npm/manifest-editor@2.2.1/dist/browser/runtime.js"
215
+ crossorigin="anonymous"
216
+ ></script>
117
217
  <script type="module">
118
- const { React, ReactDOMClient, ManifestEditor, Vault } =
119
- await window.ManifestEditor.automaticRuntime();
218
+ const { React, ReactDOMClient, ManifestEditor, Vault } = await window.ManifestEditor.automaticRuntime();
120
219
  const vault = new Vault();
121
220
  const resource = {
122
221
  id: "https://wellcomelibrary.org/iiif/b18035723/manifest",
@@ -131,14 +230,14 @@ Save this as an HTML file and serve it over HTTP. No bundler or JSX transformati
131
230
  </html>
132
231
  ```
133
232
 
134
- `automaticRuntime()` asynchronously imports the runtime's pinned React 19 dependencies from esm.sh, caches the result, and returns the editor exports plus `React`, `ReactDOM`, and `ReactDOMClient`. Use this for a standalone editor page. In an existing React app, inject that app's React environment instead, so there is one React instance.
233
+ `automaticRuntime()` asynchronously imports the runtime's pinned React 19 and public i18n 2.2.1 dependencies from esm.sh, caches the result, and returns the editor exports plus `React`, `ReactDOM`, and `ReactDOMClient`. Use this for a standalone editor page. In an existing React app, inject that app's React environment instead, so there is one React instance.
135
234
 
136
235
  ### Inject an existing React environment
137
236
 
138
237
  Keep the runtime script and CSS tags above. In your application's bundled client module:
139
238
 
140
239
  ```sh
141
- npm install react@19.2.8 react-dom@19.2.8 react-reconciler@0.33.0
240
+ npm install react@19.2.8 react-dom@19.2.8 react-reconciler@0.33.0 @manifest-editor/i18n@2.2.1
142
241
  ```
143
242
 
144
243
  ```tsx
@@ -148,11 +247,15 @@ import * as ReactDOMClient from "react-dom/client";
148
247
  import * as ReactDOMServer from "react-dom/server";
149
248
  import * as jsxRuntime from "react/jsx-runtime";
150
249
  import ReactReconciler from "react-reconciler";
250
+ import * as I18n from "@manifest-editor/i18n";
251
+ import * as I18nCore from "@manifest-editor/i18n/core";
151
252
  // Optional types when manifest-editor is installed:
152
253
  // import type {} from "manifest-editor/remote";
153
254
 
154
255
  // Run after the runtime.js script has loaded.
155
256
  const { ManifestEditor, Vault } = window.ManifestEditor.createRuntime({
257
+ I18n,
258
+ I18nCore,
156
259
  React,
157
260
  ReactDOM,
158
261
  ReactDOMClient,
@@ -173,7 +276,46 @@ ReactDOMClient.createRoot(document.getElementById("editor")!).render(
173
276
  );
174
277
  ```
175
278
 
176
- All six dependencies are required by `createRuntime()` in runtime API 1. `ReactDOMServer` is used in the browser to serialize rich-text content; it does not mean a Node server is required. `ReactReconciler` supports the Atlas canvas renderer. Keep the reconciler compatible with the React version you supply. If using TypeScript, the `manifest-editor/remote` entry point declares the browser runtime types (including `window.ManifestEditor`); it can be included with `import type {} from "manifest-editor/remote"` when the package is installed.
279
+ All eight dependencies are required by `createRuntime()` in runtime API 2 (including `I18n` and `I18nCore`). API 1 scripts are incompatible with this loader; regenerate release descriptors for API 2. `ReactDOMServer` is used in the browser to serialize rich-text content; it does not mean a Node server is required. `ReactReconciler` supports the Atlas canvas renderer. Keep the reconciler compatible with the React version you supply. If using TypeScript, the `manifest-editor/remote` entry point declares the browser runtime types (including `window.ManifestEditor`); it can be included with `import type {} from "manifest-editor/remote"` when the package is installed.
280
+
281
+ ### Browser/remote localisation and updates
282
+
283
+ The browser build externalizes `@manifest-editor/i18n` and `/core`, exactly like
284
+ React. Inject the same public modules used by your host/plugins; returned `i18n`
285
+ and `i18nCore` namespaces preserve their identities. `automaticRuntime()` imports
286
+ the pinned public modules from esm.sh; use the returned `i18n` for its provider and
287
+ hooks rather than loading another context. The pinned public i18n release must be
288
+ published before this automatic path can work; no CDN availability is claimed here.
289
+ Fetch optional Dutch resources from the matching public `/nl` entry, then pass
290
+ locale metadata/catalogs/profiles as in the React example above.
291
+
292
+ The automatic path imports the public React entry once and supplies its reexported
293
+ core factories to both dependency keys. This preserves identity even when a CDN
294
+ bundles subpaths separately. Injected and remote hosts reject mismatched root/core
295
+ factories before initializing; npm root/core imports share those factories naturally.
296
+
297
+ There is no separate mount/update transport API. Retain one React root, Vault,
298
+ resource reference and captured runtime, and call `root.render` with the same
299
+ `ManifestEditor` component type and updated `localisation`/`config` props. For
300
+ interactive selection use the runtime's shared provider/hooks. Do not recreate a
301
+ factory/root or serialize runtime objects/functions to a worker or saved config.
302
+ The remote loader accepts the same module identities under the explicit
303
+ `RuntimeHost` keys `"@manifest-editor/i18n"` and `"@manifest-editor/i18n/core"`.
304
+ Reuse the host object to reuse its cached factory result; distinct host environments
305
+ are isolated even when React happens to be the same module. Release script/CSS
306
+ loading does not carry or persist editor/localisation state.
307
+
308
+ The browser build captures exact installed i18n, React and Atlas reconciler versions
309
+ in `release.json.dependencies` and in its automatic import URLs. Dependency pins are
310
+ included in the build ID, so a pin change produces a new trusted descriptor.
311
+
312
+ Distribution diagnostics are available on demand through `pnpm i18n:artifacts`,
313
+ using existing package/browser builds to check packed consumers, shared runtime
314
+ identity, plugin integration and Chromium integrity handling. This uses local
315
+ modules for unpublished dependencies and does not prove live CDN availability.
316
+ For an exact published version, `pnpm i18n:cdn <version>` checks the real
317
+ jsDelivr/esm.sh assets. These commands are optional diagnostics, not additional
318
+ pull-request or release workflows.
177
319
 
178
320
  ### Integrity and version selection
179
321
 
@@ -192,7 +334,7 @@ import * as translation from "@manifest-editor/translation";
192
334
  resource="https://wellcomelibrary.org/iiif/b18035723/manifest"
193
335
  plugins={[translation]}
194
336
  enabledPlugins={["@manifest-editor/translation"]}
195
- />
337
+ />;
196
338
  ```
197
339
 
198
340
  Install the plugin separately. Plugin-specific service/runtime settings may also be required. The manifest preset already includes annotations and the canvas-label generator; enable or disable those by ID without registering duplicates.
@@ -203,35 +345,36 @@ For custom layouts or the exhibition preset, compose the providers from `manifes
203
345
 
204
346
  ### Component props
205
347
 
206
- | Prop | Purpose |
207
- | --- | --- |
208
- | `resource` | Required manifest URL or `{ id, type: "Manifest" \| "Collection" }`. |
209
- | `data` | Optional source JSON to load instead of fetching. |
210
- | `vault` | Host-owned Vault; otherwise the component uses an existing context or its fallback Vault. |
211
- | `config`, `saveConfig` | Editor preferences and their persistence callback. |
212
- | `plugins` | Additional plugin modules or mapped/lazy plugin inputs. |
213
- | `enabledPlugins`, `disabledPlugins` | Plugin IDs to enable or disable. |
214
- | `globalPluginConfig`, `saveGlobalPluginConfig` | Shared plugin settings and persistence callback. |
215
- | `layoutMode` | `"default"` or `"focused"`. |
348
+ | Prop | Purpose |
349
+ | ---------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
350
+ | `resource` | Required manifest URL or `{ id, type: "Manifest" \| "Collection" }`. |
351
+ | `data` | Optional source JSON to load instead of fetching. |
352
+ | `vault` | Host-owned Vault; otherwise the component uses an existing context or its fallback Vault. |
353
+ | `localisation` | Public Shell UI resources, locale metadata, loaders and runtime options; separate from persisted config. |
354
+ | `config`, `saveConfig` | Editor preferences and their persistence callback. |
355
+ | `plugins` | Additional plugin modules or mapped/lazy plugin inputs. |
356
+ | `enabledPlugins`, `disabledPlugins` | Plugin IDs to enable or disable. |
357
+ | `globalPluginConfig`, `saveGlobalPluginConfig` | Shared plugin settings and persistence callback. |
358
+ | `layoutMode` | `"default"` or `"focused"`. |
216
359
 
217
360
  ### Package entry points
218
361
 
219
- | Import | Exports |
220
- | --- | --- |
221
- | `manifest-editor` | `ManifestEditor`, its props, and selected config/plugin types. |
222
- | `manifest-editor/shell` | Providers, layouts, plugin APIs, and host configuration. |
223
- | `manifest-editor/components` | Reusable UI components and icons. |
224
- | `manifest-editor/editor-api`, `manifest-editor/creator-api` | Editing and resource-creation APIs. |
225
- | `manifest-editor/editors`, `manifest-editor/creators` | Built-in editor and creator definitions. |
226
- | `manifest-editor/manifest-preset` | Manifest preset module; use `mapApp` for shell composition. |
227
- | `manifest-editor/collection-preset`, `manifest-editor/exhibition-preset` | Mapped collection/exhibition app definitions. |
228
- | `manifest-editor/vault` | `react-iiif-vault` providers and hooks. |
229
- | `manifest-editor/helpers` | `@iiif/helpers`, including `Vault`. |
230
- | `manifest-editor/parser` | `@iiif/parser` exports. |
231
- | `manifest-editor/remote` | Release catalog, resolver, integrity loader, and browser runtime types. |
232
- | `manifest-editor/index.css`, `manifest-editor/reset.css` | Editor stylesheet and optional global reset. |
233
-
234
- The CDN runtime returns `ManifestEditor`, `Vault`, `runtimeApiVersion`, and namespaces named `shell`, `components`, `creators`, `creatorApi`, `editorApi`, `manifestPreset`, `collectionPreset`, `exhibitionPreset`, and `vault`. Its namespace layout differs from npm subpath imports.
362
+ | Import | Exports |
363
+ | ------------------------------------------------------------------------ | ----------------------------------------------------------------------- |
364
+ | `manifest-editor` | `ManifestEditor`, its props, and selected config/plugin types. |
365
+ | `manifest-editor/shell` | Providers, layouts, plugin APIs, and host configuration. |
366
+ | `manifest-editor/components` | Reusable UI components and icons. |
367
+ | `manifest-editor/editor-api`, `manifest-editor/creator-api` | Editing and resource-creation APIs. |
368
+ | `manifest-editor/editors`, `manifest-editor/creators` | Built-in editor and creator definitions. |
369
+ | `manifest-editor/manifest-preset` | Manifest preset module; use `mapApp` for shell composition. |
370
+ | `manifest-editor/collection-preset`, `manifest-editor/exhibition-preset` | Mapped collection/exhibition app definitions. |
371
+ | `manifest-editor/vault` | `react-iiif-vault` providers and hooks. |
372
+ | `manifest-editor/helpers` | `@iiif/helpers`, including `Vault`. |
373
+ | `manifest-editor/parser` | `@iiif/parser` exports. |
374
+ | `manifest-editor/remote` | Release catalog, resolver, integrity loader, and browser runtime types. |
375
+ | `manifest-editor/index.css`, `manifest-editor/reset.css` | Editor stylesheet and optional global reset. |
376
+
377
+ The CDN runtime returns `ManifestEditor`, `Vault`, `runtimeApiVersion`, `i18n`, `i18nCore`, and namespaces named `shell`, `components`, `creators`, `creatorApi`, `editorApi`, `manifestPreset`, `collectionPreset`, `exhibitionPreset`, and `vault`. Its namespace layout differs from npm subpath imports.
235
378
 
236
379
  ![Manifest Editor screenshot](https://raw.githubusercontent.com/digirati-co-uk/iiif-manifest-editor/main/apps/docs/content/img/manifest-editor.png)
237
380
 
@@ -1,6 +1,6 @@
1
- import { Config, PluginInput } from "@manifest-editor/shell";
2
1
  import { Vault } from "@iiif/helpers";
3
2
  import { Collection, Manifest } from "@iiif/presentation-3";
3
+ import { Config, PluginInput, ShellLocalisation } from "@manifest-editor/shell";
4
4
  //#region src/ManifestEditor.d.ts
5
5
  interface ManifestEditorProps {
6
6
  resource: string | {
@@ -10,6 +10,8 @@ interface ManifestEditorProps {
10
10
  data?: Manifest | Collection;
11
11
  vault?: Vault;
12
12
  config?: Partial<Config>;
13
+ /** UI resources/loaders and runtime options; never persisted with Config. */
14
+ localisation?: ShellLocalisation;
13
15
  saveConfig?: (config: Partial<Config>) => void;
14
16
  globalPluginConfig?: Config["plugins"];
15
17
  saveGlobalPluginConfig?: (config: Config["plugins"]) => void | Promise<void>;
@@ -21,4 +23,4 @@ interface ManifestEditorProps {
21
23
  declare function ManifestEditor(props: ManifestEditorProps): import("react").JSX.Element | null;
22
24
  //#endregion
23
25
  export { ManifestEditorProps as n, ManifestEditor as t };
24
- //# sourceMappingURL=ManifestEditor-CMWoRdqp.d.ts.map
26
+ //# sourceMappingURL=ManifestEditor-NAeFbb4r.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ManifestEditor-NAeFbb4r.d.cts","names":[],"sources":["../src/ManifestEditor.tsx"],"mappings":";;;;UAmBiB;EACf;IAAqB;IAAY;;EACjC,OAAO,WAAW;EAClB,QAAQ;EACR,SAAS,QAAQ;;EAEjB,eAAe;EACf,cAAc,QAAQ,QAAQ;EAC9B,qBAAqB;EACrB,0BAA0B,QAAQ,6BAA6B;EAC/D,UAAU;EACV;EACA;EACA;;iBA4Bc,eAAe,OAAO,sCAAmB,IAAA"}
@@ -1,6 +1,6 @@
1
+ import { Config, PluginInput, ShellLocalisation } from "@manifest-editor/shell";
1
2
  import { Vault } from "@iiif/helpers";
2
3
  import { Collection, Manifest } from "@iiif/presentation-3";
3
- import { Config, PluginInput } from "@manifest-editor/shell";
4
4
  //#region src/ManifestEditor.d.ts
5
5
  interface ManifestEditorProps {
6
6
  resource: string | {
@@ -10,6 +10,8 @@ interface ManifestEditorProps {
10
10
  data?: Manifest | Collection;
11
11
  vault?: Vault;
12
12
  config?: Partial<Config>;
13
+ /** UI resources/loaders and runtime options; never persisted with Config. */
14
+ localisation?: ShellLocalisation;
13
15
  saveConfig?: (config: Partial<Config>) => void;
14
16
  globalPluginConfig?: Config["plugins"];
15
17
  saveGlobalPluginConfig?: (config: Config["plugins"]) => void | Promise<void>;
@@ -21,4 +23,4 @@ interface ManifestEditorProps {
21
23
  declare function ManifestEditor(props: ManifestEditorProps): import("react").JSX.Element | null;
22
24
  //#endregion
23
25
  export { ManifestEditorProps as n, ManifestEditor as t };
24
- //# sourceMappingURL=ManifestEditor-C1Rcg3CO.d.cts.map
26
+ //# sourceMappingURL=ManifestEditor-ZWZ559Gg.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ManifestEditor-ZWZ559Gg.d.ts","names":[],"sources":["../src/ManifestEditor.tsx"],"mappings":";;;;UAmBiB;EACf;IAAqB;IAAY;;EACjC,OAAO,WAAW;EAClB,QAAQ;EACR,SAAS,QAAQ;;EAEjB,eAAe;EACf,cAAc,QAAQ,QAAQ;EAC9B,qBAAqB;EACrB,0BAA0B,QAAQ,6BAA6B;EAC/D,UAAU;EACV;EACA;EACA;;iBA4Bc,eAAe,OAAO,sCAAmB,IAAA"}
@@ -1,14 +1,19 @@
1
1
  {
2
- "version": "2.2.2-next.0.903673e",
3
- "buildId": "355ca4e398b88ad6975a836a4b62a949",
4
- "runtimeApiVersion": 1,
2
+ "version": "2.3.0",
3
+ "buildId": "ed375e52675755e7eaf21479f9c7017c",
4
+ "runtimeApiVersion": 2,
5
5
  "reactMajor": 19,
6
+ "dependencies": {
7
+ "i18n": "2.3.0",
8
+ "react": "19.2.8",
9
+ "reconciler": "0.33.0"
10
+ },
6
11
  "script": {
7
- "url": "https://cdn.jsdelivr.net/npm/manifest-editor@2.2.2-next.0.903673e/dist/browser/runtime.js",
8
- "integrity": "sha384-TxkDl90sDxs93TWrxRgbkchp1pJsV+9LSo8rxBsgEQwVjkuen28IlQP7fba2tsA5"
12
+ "url": "https://cdn.jsdelivr.net/npm/manifest-editor@2.3.0/dist/browser/runtime.js",
13
+ "integrity": "sha384-qS/eRcTXxGT6Pqi8qqr2YzVLyhQCx9GAlaLm9S/8FFvnCNNBQTH7IFVU90I9AXK/"
9
14
  },
10
15
  "stylesheet": {
11
- "url": "https://cdn.jsdelivr.net/npm/manifest-editor@2.2.2-next.0.903673e/dist/browser/runtime.css",
12
- "integrity": "sha384-PYni9lrMjv1oRf/jPYj5Du8NgGDjDPCA/ivMbgqlc4UtDZEtXGW/8mTsTzhBtAk0"
16
+ "url": "https://cdn.jsdelivr.net/npm/manifest-editor@2.3.0/dist/browser/runtime.css",
17
+ "integrity": "sha384-EcLM7e62/9rg5LLhV11X2z/HkmP4uWlHB1YYH97tZg60VUSRAHnJq3z7WDIs5pvn"
13
18
  }
14
19
  }