@manifest-editor/translation 2.1.1-next.0.96fdf30 → 2.2.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/dist/constants-BhZv2ySm.cjs +2 -0
- package/dist/constants-BhZv2ySm.cjs.map +1 -0
- package/dist/{constants-2H03x5Ga.js → constants-qn_qe3_G.js} +1 -1
- package/dist/{constants-2H03x5Ga.js.map → constants-qn_qe3_G.js.map} +1 -1
- package/dist/{index-CkK8TiJs.d.ts → index-C35Qrq97.d.ts} +4 -7
- package/dist/index-C35Qrq97.d.ts.map +1 -0
- package/dist/{index-B-UTJDqv.d.cts → index-Dt-W_09z.d.cts} +4 -7
- package/dist/index-Dt-W_09z.d.cts.map +1 -0
- package/dist/index.cjs +2 -1
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lazy.cjs +2 -1
- package/dist/lazy.cjs.map +1 -0
- package/dist/lazy.d.cts +2 -4
- package/dist/lazy.d.cts.map +1 -1
- package/dist/lazy.d.ts +2 -4
- package/dist/lazy.d.ts.map +1 -1
- package/dist/lazy.js +1 -1
- package/dist/lazy.js.map +1 -1
- package/dist/plugin-BuUFaI9S.cjs +2 -0
- package/dist/plugin-BuUFaI9S.cjs.map +1 -0
- package/dist/{plugin-sM3MrbwG.js → plugin-v71X5Knc.js} +2 -2
- package/dist/plugin-v71X5Knc.js.map +1 -0
- package/dist/{protocol-znyidDej.js → protocol-DQvOIA0W.js} +1 -1
- package/dist/{protocol-znyidDej.js.map → protocol-DQvOIA0W.js.map} +1 -1
- package/dist/protocol-SEZnfU5j.cjs +2 -0
- package/dist/protocol-SEZnfU5j.cjs.map +1 -0
- package/dist/translation-worker.cjs +2 -1
- package/dist/translation-worker.cjs.map +1 -0
- package/dist/translation-worker.d.cts +1 -1
- package/dist/translation-worker.d.ts +1 -1
- package/dist/translation-worker.js +1 -1
- package/dist/translation-worker.js.map +1 -1
- package/package.json +12 -11
- package/dist/constants-D5kaKQHg.cjs +0 -1
- package/dist/index-B-UTJDqv.d.cts.map +0 -1
- package/dist/index-CkK8TiJs.d.ts.map +0 -1
- package/dist/plugin-DcjqyREu.cjs +0 -1
- package/dist/plugin-sM3MrbwG.js.map +0 -1
- package/dist/protocol-B15qfxfT.cjs +0 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return`Xenova/m2m100_418M`}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return`@manifest-editor/translation/tag-languages`}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return`@manifest-editor/translation/translate-strings`}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return`@manifest-editor/translation`}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return`manifest-editor-translation-m2m100-418m`}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return`@manifest-editor/translations`}});
|
|
2
|
+
//# sourceMappingURL=constants-BhZv2ySm.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants-BhZv2ySm.cjs","names":[],"sources":["../src/constants.ts"],"sourcesContent":["export const TRANSLATION_PLUGIN_ID = \"@manifest-editor/translation\";\nexport const TRANSLATION_ACTION_ID = \"@manifest-editor/translation/translate-strings\";\nexport const TRANSLATION_LANGUAGE_TAG_ACTION_ID = \"@manifest-editor/translation/tag-languages\";\nexport const TRANSLATIONS_LEFT_PANEL_ID = \"@manifest-editor/translations\";\n\nexport const TRANSLATION_MODEL_ID = \"Xenova/m2m100_418M\";\nexport const TRANSLATION_CACHE_KEY = \"manifest-editor-translation-m2m100-418m\";\n"],"mappings":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
const e=`@manifest-editor/translation`,t=`@manifest-editor/translation/translate-strings`,n=`@manifest-editor/translation/tag-languages`,r=`@manifest-editor/translations`,i=`Xenova/m2m100_418M`,a=`manifest-editor-translation-m2m100-418m`;export{i as a,n as i,t as n,e as o,a as r,r as t};
|
|
2
|
-
//# sourceMappingURL=constants-
|
|
2
|
+
//# sourceMappingURL=constants-qn_qe3_G.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants-
|
|
1
|
+
{"version":3,"file":"constants-qn_qe3_G.js","names":[],"sources":["../src/constants.ts"],"sourcesContent":["export const TRANSLATION_PLUGIN_ID = \"@manifest-editor/translation\";\nexport const TRANSLATION_ACTION_ID = \"@manifest-editor/translation/translate-strings\";\nexport const TRANSLATION_LANGUAGE_TAG_ACTION_ID = \"@manifest-editor/translation/tag-languages\";\nexport const TRANSLATIONS_LEFT_PANEL_ID = \"@manifest-editor/translations\";\n\nexport const TRANSLATION_MODEL_ID = \"Xenova/m2m100_418M\";\nexport const TRANSLATION_CACHE_KEY = \"manifest-editor-translation-m2m100-418m\";\n"],"mappings":"AAAA,MAAa,EAAwB,+BACxB,EAAwB,iDACxB,EAAqC,6CACrC,EAA6B,gCAE7B,EAAuB,qBACvB,EAAwB"}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import { SVGProps } from "react";
|
|
2
|
-
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
3
2
|
import { BackgroundActionDefinition, BackgroundActionPlan, BackgroundActionRunContext, Config, LayoutPanel, ManifestEditorTag, PluginSettingsDefinition } from "@manifest-editor/shell";
|
|
4
3
|
import { InternationalString, Reference } from "@iiif/presentation-3";
|
|
5
4
|
import { Vault } from "@iiif/helpers/vault";
|
|
6
|
-
|
|
7
|
-
//#region rolldown:runtime
|
|
8
5
|
//#endregion
|
|
9
6
|
//#region src/types.d.ts
|
|
10
7
|
type TranslationRuntimePreference = "auto" | "webgpu" | "wasm";
|
|
@@ -325,7 +322,7 @@ type TranslationConfigRequest = {
|
|
|
325
322
|
resolve: (options: TranslationRunOptions | false) => void;
|
|
326
323
|
};
|
|
327
324
|
declare function requestTranslationConfig(request: Omit<TranslationConfigRequest, "resolve">): Promise<TranslationRunOptions | false>;
|
|
328
|
-
declare function renderTranslationConfigModal(actionId: string):
|
|
325
|
+
declare function renderTranslationConfigModal(actionId: string): import("react").JSX.Element;
|
|
329
326
|
//#endregion
|
|
330
327
|
//#region src/constants.d.ts
|
|
331
328
|
declare const TRANSLATION_PLUGIN_ID = "@manifest-editor/translation";
|
|
@@ -396,11 +393,11 @@ declare function normaliseLanguageCode(language: string): string;
|
|
|
396
393
|
//#endregion
|
|
397
394
|
//#region src/results.d.ts
|
|
398
395
|
declare function openTranslationResults(actionId: string, result: unknown): void;
|
|
399
|
-
declare function renderTranslationResults(actionId: string):
|
|
396
|
+
declare function renderTranslationResults(actionId: string): import("react").JSX.Element;
|
|
400
397
|
//#endregion
|
|
401
398
|
//#region src/sidebar.d.ts
|
|
402
399
|
declare const translationsPanel: LayoutPanel;
|
|
403
|
-
declare function TranslationsIcon(props: SVGProps<SVGSVGElement>):
|
|
400
|
+
declare function TranslationsIcon(props: SVGProps<SVGSVGElement>): import("react").JSX.Element;
|
|
404
401
|
//#endregion
|
|
405
402
|
//#region src/writeback.d.ts
|
|
406
403
|
type TranslationWriteContext = {
|
|
@@ -422,4 +419,4 @@ declare const leftPanels: LayoutPanel[];
|
|
|
422
419
|
declare const backgroundActions: BackgroundActionDefinition[];
|
|
423
420
|
//#endregion
|
|
424
421
|
export { createErrorResponse as $, CanvasLanguageTagResult as A, MetadataLanguageMapPath as At, TRANSLATION_LANGUAGE_TAG_ACTION_ID as B, TranslationRunOptions as Bt, resolveSupportedLanguage as C, getLanguageValueAt as Ct, getLanguageLabel as D, _default as Dt, M2M100_LANGUAGES as E, normaliseTranslationText as Et, createTranslationLanguageTagsBackgroundAction as F, TranslationContentFilters as Ft, renderTranslationConfigModal as G, TranslationValueFormat as Gt, TRANSLATION_PLUGIN_ID as H, TranslationStatus as Ht, selectPrimaryDetectedLanguage as I, TranslationOccurrence as It, TranslationPlanData as J, requestTranslationConfig as K, TranslationWritePolicy as Kt, TRANSLATIONS_LEFT_PANEL_ID as L, TranslationPath as Lt, TRANSLATION_LANGUAGE_TAG_TYPE as M, ResourceLanguageMapPath as Mt, TranslationLanguageTagActionResult as N, TextualBodyPath as Nt, getLanguageProgressLabel as O, settings as Ot, createLanguageTag as P, TranslationActionResult as Pt, createDisposeRequest as Q, TRANSLATION_ACTION_ID as R, TranslationPluginSettings as Rt, resolveSourceLanguage as S, getLanguageMapTargetText as St, M2M100Language as T, isHtmlTranslationValue as Tt, TRANSLATION_CONFIG_EVENT as U, TranslationTarget as Ut, TRANSLATION_MODEL_ID as V, TranslationRuntimePreference as Vt, TranslationConfigRequest as W, TranslationTaskResult as Wt, createTranslationPlan as X, createTranslationBackgroundAction as Y, queueTranslationRunOptions as Z, getModelSourceLanguage as _, collectTranslationLanguageProgress as _t, WritableOccurrenceCheck as a, createTranslationWorkerClient as at, normaliseLanguageCode as b, fingerprintTranslationText as bt, readOccurrenceTargetText as c, TranslationEvent as ct, translationsPanel as d, TranslationTextRequest as dt, createEventEnvelope as et, openTranslationResults as f, TranslationTextResult as ft, getDefaultRunOptions as g, collectDetectedManifestLanguages as gt, defaultTranslationContentFilters as h, TranslationLanguageProgress as ht, TranslationWriteContext as i, createTranslationResultResponse as it, CanvasLanguageTagSkip as j, RequiredStatementLanguageMapPath as jt, isSupportedM2M100Language as k, LanguageMapLike as kt, writeTranslationForOccurrence as l, TranslationPreloadRequest as lt, TRANSLATION_NONE_LANGUAGE as m, DetectedManifestLanguage as mt, index_d_exports as n, createSuccessResponse as nt, getWritableOccurrences as o, TranslationWorkerClient as ot, renderTranslationResults as p, translatePreservingSimpleHtml as pt, TranslationActionDependencies as q, leftPanels as r, createTranslateRequest as rt, readOccurrenceSourceText as s, TranslationErrorCode as st, backgroundActions as t, createPreloadRequest as tt, TranslationsIcon as u, TranslationRuntimeUsed as ut, getSupportedAvailableLanguages as v, collectTranslationTargets as vt, LanguageProgressSummary as w, getLanguageValues as wt, normaliseRunOptions as x, getLanguageMapSourceEntries as xt, isNoLanguageCode as y, createTranslationTargetKey as yt, TRANSLATION_CACHE_KEY as z, TranslationResourceRef as zt };
|
|
425
|
-
//# sourceMappingURL=index-
|
|
422
|
+
//# sourceMappingURL=index-C35Qrq97.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-C35Qrq97.d.ts","names":[],"sources":["../src/types.ts","../src/plugin.ts","../src/collection.ts","../src/html.ts","../src/runtime/types.ts","../src/runtime/browser/client.types.ts","../src/runtime/browser/client.ts","../src/runtime/protocol.ts","../src/background-action.tsx","../src/config-modal.tsx","../src/constants.ts","../src/language-tags-background-action.ts","../src/languages.ts","../src/options.ts","../src/results.tsx","../src/sidebar.tsx","../src/writeback.ts","../src/index.ts"],"mappings":";;;;;;KAEY;KACA;KACA;KACA;KAOA;EACV;EACA;;KAGU;GACT;EACD;EACA;EACA,oBAAoB;EACpB;;KAGU;EACV;EACA;EACA;EACA,SAAS;EACT,aAAa;EACb,gBAAgB;EAChB;;KAGU,yBAAyB;EACnC;;KAGU;EACV;EACA,UAAU;EACV;;KAGU;EACV;EACA,UAAU;EACV;EACA;;KAGU;EACV;EACA,UAAU;EACV;;KAGU;EACV;EACA,YAAY;EACZ,MAAM;EACN,SAAS;EACT,aAAa;;KAGH,kBACR,0BACA,0BACA,mCACA;KAEQ;EACV;EACA,MAAM;EACN,UAAU;EACV;EACA;EACA;EACA;EACA;EACA;EACA;EACA,aAAa;EACb;EACA,QAAQ;;KAGE;EACV;EACA;EACA;EACA;EACA;EACA,aAAa;EACb,aAAa;EACb,QAAQ;;KAGE;EAEN;EACA;EACA;EACA;EACA;EACA;EACA;;EAGA;EACA;EACA;EACA;EACA;EACA;;KAGM;EACV;EACA;EACA;EACA;EACA;EACA;EACA;EACA,cAAc;IACZ;IACA;IACA;IACA;;EAEF,gBAAgB;IACd;IACA;IACA;;;KAIQ,kBAAkB;;;;;;;;;;;;IC9H1B;IACA;;;cAIS,UAAU,yBAAyB;;;KCI3C;EACH;EACA;EACA;;KASU;EACV;EACA;EACA;;KAGU;EACV;EACA;EACA;EACA;EACA;EACA;EACA;;iBASc,0BACd,OAAO,OACP,MAAM,WACN,SAAS,wBACR;iBAoDa,iCACd,OAAO,OACP,MAAM,YACL;iBAca,mCACd,OAAO,OACP,MAAM,WACN,SAAS,uBACT,uBAGC;iBAwBa,yBAAyB;iBAIzB,2BAA2B;iBAI3B,2BACd,oBACA,wBACA,wBACA,aAAa;iBAKC,4BACd,OAAO,iBACP,yBACC;iBAyDa,mBACd,OAAO,iBACP,kBACA;iBAac,kBACd,OAAO,qBACP;iBAUc,yBACd,OAAO,iBACP,wBACA;iBAmCc,uBAAuB;;;iBCnSjB,8BACpB,eACA,gBAAgB,iBAAiB,kBAChC;;;KCXS;KAOA;UAEK;EACf,SAAS;;UAGM;EACf;EACA;EACA;EACA,SAAS;;UAGM;EACf;EACA;EACA;EACA,SAAS;EACT;;UAGe;EACf;EACA;EACA;EACA;EACA,OAAO;IAAiB;IAAgB;;;UAGzB;EACf;EACA;EACA,SAAS;;UAGM;EACf;EACA,MAAM;EACN,IAAI;EACJ;;UAGe;EACf;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA,QAAQ;;UAGO;EACf;EACA,MAAM;EACN;EACA;EACA;;KAGU,mBACR,gCACA,6BACA,kCACA,wBACA,2BACA;;;UCzEa;EACf,QAAQ,SAAS,4BAA4B;EAC7C,UAAU,SAAS,yBAAyB,QAAQ;EACpD,QAAQ,WAAW,OAAO;EAC1B;;;;UCUe;EACf,SAAS;EACT,qBAAqB;;iBAWP,8BACd,UAAS,uCACR;;;KC5BS;UAEK;EACf;EACA,SAAS;EACT;;UAGe,wCAAwC;EACvD;EACA,SAAS;;UAGM,0CAA0C;EACzD;EACA,SAAS;;UAGM,wCAAwC;EACvD;;UAQe,iCAAiC;EAChD;EACA;EACA,SAAS;EACT,SAAS;;UAGM;EACf,MAAM;EACN;EACA;;UAGe;EACf;EACA;EACA,SAAS;EACT,SAAS;;UAGM;EACf;EACA,SAAS;;iBAQK,qBACd,mBACA,SAAS,4BACR;iBASa,uBACd,mBACA,SAAS,yBACR;iBASa,qBAAqB,oBAAoB;iBAQzC,sBAAsB,GACpC,SAAS,0BACT,mBACA,SAAS,IACR,iCAAiC;iBASpB,gCACd,mBACA,SAAS,wBACR,iCAAiC;iBAIpB,oBACd,SAAS,0BACT,mBACA,SAAS,gCACR;iBASa,oBAAoB,SAAS,mBAAmB;;;KCtFpD;EACV,SAAS;EACT;;KAGU;EACV,gBACE,WAAW,8BACR;EACL,wBAAwB;EACxB,iBACE,KAAK,4BACL,SAAS,qBACT,UAAU,0BACP,QAAQ;EACb,uBAAuB;;iBAKT,2BACd,qBACA,SAAS,QAAQ;iBAKH,kCACd,eAAc,gCACb;iBAmRa,sBACd,SAAS,qBACT,SAAS,wBACR;;;cC3UU;KAED;EACV;EACA;EACA,UAAU;EACV;EACA,oBAAoB;EACpB,kBAAkB;EAClB,cAAc,SAAS,0BAA0B;EACjD,6BACE,SAAS,0BACN;EACL,SAAS;EACT,SAAS;EACT,UAAU,SAAS;;iBAaL,yBACd,SAAS,KAAK,uCACb,QAAQ;iBA4BK,6BAA6B,mCAAgB,IAAA;;;cC9EhD;cACA;cACA;cACA;cAEA;cACA;;;cCKA;KAED;EACV;EACA;EACA;EACA;EACA;EACA;;KAGU;EACV;EACA;EACA;;KAGU;EACV;EACA;EACA;EACA,QAAQ;EACR,MAAM;EACN,iBAAiB;;KAkBd;EACH;EACA;EACA;;iBAcc,iDAAiD;iBAsIjD,kBAAkB,mBAAmB;iBAWrC,8BAA8B,WAAW,2BAA2B;;;KCtNxE;EACV;EACA;;KAGU;EACV;EACA;EACA;;cAGW,kBAAkB;iBA2Gf,0BACd;iBAKc,iBAAiB;iBAMjB,yBAAyB,UAAU;;;cCvHtC;cAEA,kCAAkC;iBAK/B,qBACd,SAAS,QAAQ,gBACjB,WAAU,4BACT;iBA4Ba,oBACd,UAAS,QAAQ,yBAChB;iBAqBa,+BACd,SAAS,QAAQ;iBAeH,yBACd,mBACA;iBA2Bc,sBAAsB;iBAQtB,uBACd,yBACA,UAAS,QAAQ;iBASH,iBAAiB;iBAIjB,sBAAsB;;;iBCjItB,uBAAuB,kBAAkB;iBAezC,yBAAyB,mCAAgB,IAAA;;;cCmB5C,mBAAmB;iBAOhB,iBAAiB,OAAO,SAAS,iCAAc,IAAA;;;KCzBnD;EACV,OAAO;;KAGG;EACV,UAAU;EACV,UAAU;EACV,OAAO;;iBAGO,uBACd,KAAK,yBACL,QAAQ,oBACP;iBA6Ba,8BACd,KAAK,yBACL,YAAY,uBACZ;iBAkCc,yBACd,OAAO,OACP,YAAY;iBAcE,yBACd,OAAO,OACP,YAAY;;;;cCnHD,YAAY;cAEZ,mBAAmB"}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import { BackgroundActionDefinition, BackgroundActionPlan, BackgroundActionRunContext, Config, LayoutPanel, ManifestEditorTag, PluginSettingsDefinition } from "@manifest-editor/shell";
|
|
2
2
|
import { InternationalString, Reference } from "@iiif/presentation-3";
|
|
3
3
|
import { Vault } from "@iiif/helpers/vault";
|
|
4
|
-
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
5
4
|
import { SVGProps } from "react";
|
|
6
|
-
|
|
7
|
-
//#region rolldown:runtime
|
|
8
5
|
//#endregion
|
|
9
6
|
//#region src/types.d.ts
|
|
10
7
|
type TranslationRuntimePreference = "auto" | "webgpu" | "wasm";
|
|
@@ -325,7 +322,7 @@ type TranslationConfigRequest = {
|
|
|
325
322
|
resolve: (options: TranslationRunOptions | false) => void;
|
|
326
323
|
};
|
|
327
324
|
declare function requestTranslationConfig(request: Omit<TranslationConfigRequest, "resolve">): Promise<TranslationRunOptions | false>;
|
|
328
|
-
declare function renderTranslationConfigModal(actionId: string):
|
|
325
|
+
declare function renderTranslationConfigModal(actionId: string): import("react").JSX.Element;
|
|
329
326
|
//#endregion
|
|
330
327
|
//#region src/constants.d.ts
|
|
331
328
|
declare const TRANSLATION_PLUGIN_ID = "@manifest-editor/translation";
|
|
@@ -396,11 +393,11 @@ declare function normaliseLanguageCode(language: string): string;
|
|
|
396
393
|
//#endregion
|
|
397
394
|
//#region src/results.d.ts
|
|
398
395
|
declare function openTranslationResults(actionId: string, result: unknown): void;
|
|
399
|
-
declare function renderTranslationResults(actionId: string):
|
|
396
|
+
declare function renderTranslationResults(actionId: string): import("react").JSX.Element;
|
|
400
397
|
//#endregion
|
|
401
398
|
//#region src/sidebar.d.ts
|
|
402
399
|
declare const translationsPanel: LayoutPanel;
|
|
403
|
-
declare function TranslationsIcon(props: SVGProps<SVGSVGElement>):
|
|
400
|
+
declare function TranslationsIcon(props: SVGProps<SVGSVGElement>): import("react").JSX.Element;
|
|
404
401
|
//#endregion
|
|
405
402
|
//#region src/writeback.d.ts
|
|
406
403
|
type TranslationWriteContext = {
|
|
@@ -422,4 +419,4 @@ declare const leftPanels: LayoutPanel[];
|
|
|
422
419
|
declare const backgroundActions: BackgroundActionDefinition[];
|
|
423
420
|
//#endregion
|
|
424
421
|
export { createErrorResponse as $, CanvasLanguageTagResult as A, MetadataLanguageMapPath as At, TRANSLATION_LANGUAGE_TAG_ACTION_ID as B, TranslationRunOptions as Bt, resolveSupportedLanguage as C, getLanguageValueAt as Ct, getLanguageLabel as D, _default as Dt, M2M100_LANGUAGES as E, normaliseTranslationText as Et, createTranslationLanguageTagsBackgroundAction as F, TranslationContentFilters as Ft, renderTranslationConfigModal as G, TranslationValueFormat as Gt, TRANSLATION_PLUGIN_ID as H, TranslationStatus as Ht, selectPrimaryDetectedLanguage as I, TranslationOccurrence as It, TranslationPlanData as J, requestTranslationConfig as K, TranslationWritePolicy as Kt, TRANSLATIONS_LEFT_PANEL_ID as L, TranslationPath as Lt, TRANSLATION_LANGUAGE_TAG_TYPE as M, ResourceLanguageMapPath as Mt, TranslationLanguageTagActionResult as N, TextualBodyPath as Nt, getLanguageProgressLabel as O, settings as Ot, createLanguageTag as P, TranslationActionResult as Pt, createDisposeRequest as Q, TRANSLATION_ACTION_ID as R, TranslationPluginSettings as Rt, resolveSourceLanguage as S, getLanguageMapTargetText as St, M2M100Language as T, isHtmlTranslationValue as Tt, TRANSLATION_CONFIG_EVENT as U, TranslationTarget as Ut, TRANSLATION_MODEL_ID as V, TranslationRuntimePreference as Vt, TranslationConfigRequest as W, TranslationTaskResult as Wt, createTranslationPlan as X, createTranslationBackgroundAction as Y, queueTranslationRunOptions as Z, getModelSourceLanguage as _, collectTranslationLanguageProgress as _t, WritableOccurrenceCheck as a, createTranslationWorkerClient as at, normaliseLanguageCode as b, fingerprintTranslationText as bt, readOccurrenceTargetText as c, TranslationEvent as ct, translationsPanel as d, TranslationTextRequest as dt, createEventEnvelope as et, openTranslationResults as f, TranslationTextResult as ft, getDefaultRunOptions as g, collectDetectedManifestLanguages as gt, defaultTranslationContentFilters as h, TranslationLanguageProgress as ht, TranslationWriteContext as i, createTranslationResultResponse as it, CanvasLanguageTagSkip as j, RequiredStatementLanguageMapPath as jt, isSupportedM2M100Language as k, LanguageMapLike as kt, writeTranslationForOccurrence as l, TranslationPreloadRequest as lt, TRANSLATION_NONE_LANGUAGE as m, DetectedManifestLanguage as mt, index_d_exports as n, createSuccessResponse as nt, getWritableOccurrences as o, TranslationWorkerClient as ot, renderTranslationResults as p, translatePreservingSimpleHtml as pt, TranslationActionDependencies as q, leftPanels as r, createTranslateRequest as rt, readOccurrenceSourceText as s, TranslationErrorCode as st, backgroundActions as t, createPreloadRequest as tt, TranslationsIcon as u, TranslationRuntimeUsed as ut, getSupportedAvailableLanguages as v, collectTranslationTargets as vt, LanguageProgressSummary as w, getLanguageValues as wt, normaliseRunOptions as x, getLanguageMapSourceEntries as xt, isNoLanguageCode as y, createTranslationTargetKey as yt, TRANSLATION_CACHE_KEY as z, TranslationResourceRef as zt };
|
|
425
|
-
//# sourceMappingURL=index-
|
|
422
|
+
//# sourceMappingURL=index-Dt-W_09z.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-Dt-W_09z.d.cts","names":[],"sources":["../src/types.ts","../src/plugin.ts","../src/collection.ts","../src/html.ts","../src/runtime/types.ts","../src/runtime/browser/client.types.ts","../src/runtime/browser/client.ts","../src/runtime/protocol.ts","../src/background-action.tsx","../src/config-modal.tsx","../src/constants.ts","../src/language-tags-background-action.ts","../src/languages.ts","../src/options.ts","../src/results.tsx","../src/sidebar.tsx","../src/writeback.ts","../src/index.ts"],"mappings":";;;;;;KAEY;KACA;KACA;KACA;KAOA;EACV;EACA;;KAGU;GACT;EACD;EACA;EACA,oBAAoB;EACpB;;KAGU;EACV;EACA;EACA;EACA,SAAS;EACT,aAAa;EACb,gBAAgB;EAChB;;KAGU,yBAAyB;EACnC;;KAGU;EACV;EACA,UAAU;EACV;;KAGU;EACV;EACA,UAAU;EACV;EACA;;KAGU;EACV;EACA,UAAU;EACV;;KAGU;EACV;EACA,YAAY;EACZ,MAAM;EACN,SAAS;EACT,aAAa;;KAGH,kBACR,0BACA,0BACA,mCACA;KAEQ;EACV;EACA,MAAM;EACN,UAAU;EACV;EACA;EACA;EACA;EACA;EACA;EACA;EACA,aAAa;EACb;EACA,QAAQ;;KAGE;EACV;EACA;EACA;EACA;EACA;EACA,aAAa;EACb,aAAa;EACb,QAAQ;;KAGE;EAEN;EACA;EACA;EACA;EACA;EACA;EACA;;EAGA;EACA;EACA;EACA;EACA;EACA;;KAGM;EACV;EACA;EACA;EACA;EACA;EACA;EACA;EACA,cAAc;IACZ;IACA;IACA;IACA;;EAEF,gBAAgB;IACd;IACA;IACA;;;KAIQ,kBAAkB;;;;;;;;;;;;IC9H1B;IACA;;;cAIS,UAAU,yBAAyB;;;KCI3C;EACH;EACA;EACA;;KASU;EACV;EACA;EACA;;KAGU;EACV;EACA;EACA;EACA;EACA;EACA;EACA;;iBASc,0BACd,OAAO,OACP,MAAM,WACN,SAAS,wBACR;iBAoDa,iCACd,OAAO,OACP,MAAM,YACL;iBAca,mCACd,OAAO,OACP,MAAM,WACN,SAAS,uBACT,uBAGC;iBAwBa,yBAAyB;iBAIzB,2BAA2B;iBAI3B,2BACd,oBACA,wBACA,wBACA,aAAa;iBAKC,4BACd,OAAO,iBACP,yBACC;iBAyDa,mBACd,OAAO,iBACP,kBACA;iBAac,kBACd,OAAO,qBACP;iBAUc,yBACd,OAAO,iBACP,wBACA;iBAmCc,uBAAuB;;;iBCnSjB,8BACpB,eACA,gBAAgB,iBAAiB,kBAChC;;;KCXS;KAOA;UAEK;EACf,SAAS;;UAGM;EACf;EACA;EACA;EACA,SAAS;;UAGM;EACf;EACA;EACA;EACA,SAAS;EACT;;UAGe;EACf;EACA;EACA;EACA;EACA,OAAO;IAAiB;IAAgB;;;UAGzB;EACf;EACA;EACA,SAAS;;UAGM;EACf;EACA,MAAM;EACN,IAAI;EACJ;;UAGe;EACf;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA,QAAQ;;UAGO;EACf;EACA,MAAM;EACN;EACA;EACA;;KAGU,mBACR,gCACA,6BACA,kCACA,wBACA,2BACA;;;UCzEa;EACf,QAAQ,SAAS,4BAA4B;EAC7C,UAAU,SAAS,yBAAyB,QAAQ;EACpD,QAAQ,WAAW,OAAO;EAC1B;;;;UCUe;EACf,SAAS;EACT,qBAAqB;;iBAWP,8BACd,UAAS,uCACR;;;KC5BS;UAEK;EACf;EACA,SAAS;EACT;;UAGe,wCAAwC;EACvD;EACA,SAAS;;UAGM,0CAA0C;EACzD;EACA,SAAS;;UAGM,wCAAwC;EACvD;;UAQe,iCAAiC;EAChD;EACA;EACA,SAAS;EACT,SAAS;;UAGM;EACf,MAAM;EACN;EACA;;UAGe;EACf;EACA;EACA,SAAS;EACT,SAAS;;UAGM;EACf;EACA,SAAS;;iBAQK,qBACd,mBACA,SAAS,4BACR;iBASa,uBACd,mBACA,SAAS,yBACR;iBASa,qBAAqB,oBAAoB;iBAQzC,sBAAsB,GACpC,SAAS,0BACT,mBACA,SAAS,IACR,iCAAiC;iBASpB,gCACd,mBACA,SAAS,wBACR,iCAAiC;iBAIpB,oBACd,SAAS,0BACT,mBACA,SAAS,gCACR;iBASa,oBAAoB,SAAS,mBAAmB;;;KCtFpD;EACV,SAAS;EACT;;KAGU;EACV,gBACE,WAAW,8BACR;EACL,wBAAwB;EACxB,iBACE,KAAK,4BACL,SAAS,qBACT,UAAU,0BACP,QAAQ;EACb,uBAAuB;;iBAKT,2BACd,qBACA,SAAS,QAAQ;iBAKH,kCACd,eAAc,gCACb;iBAmRa,sBACd,SAAS,qBACT,SAAS,wBACR;;;cC3UU;KAED;EACV;EACA;EACA,UAAU;EACV;EACA,oBAAoB;EACpB,kBAAkB;EAClB,cAAc,SAAS,0BAA0B;EACjD,6BACE,SAAS,0BACN;EACL,SAAS;EACT,SAAS;EACT,UAAU,SAAS;;iBAaL,yBACd,SAAS,KAAK,uCACb,QAAQ;iBA4BK,6BAA6B,mCAAgB,IAAA;;;cC9EhD;cACA;cACA;cACA;cAEA;cACA;;;cCKA;KAED;EACV;EACA;EACA;EACA;EACA;EACA;;KAGU;EACV;EACA;EACA;;KAGU;EACV;EACA;EACA;EACA,QAAQ;EACR,MAAM;EACN,iBAAiB;;KAkBd;EACH;EACA;EACA;;iBAcc,iDAAiD;iBAsIjD,kBAAkB,mBAAmB;iBAWrC,8BAA8B,WAAW,2BAA2B;;;KCtNxE;EACV;EACA;;KAGU;EACV;EACA;EACA;;cAGW,kBAAkB;iBA2Gf,0BACd;iBAKc,iBAAiB;iBAMjB,yBAAyB,UAAU;;;cCvHtC;cAEA,kCAAkC;iBAK/B,qBACd,SAAS,QAAQ,gBACjB,WAAU,4BACT;iBA4Ba,oBACd,UAAS,QAAQ,yBAChB;iBAqBa,+BACd,SAAS,QAAQ;iBAeH,yBACd,mBACA;iBA2Bc,sBAAsB;iBAQtB,uBACd,yBACA,UAAS,QAAQ;iBASH,iBAAiB;iBAIjB,sBAAsB;;;iBCjItB,uBAAuB,kBAAkB;iBAezC,yBAAyB,mCAAgB,IAAA;;;cCmB5C,mBAAmB;iBAOhB,iBAAiB,OAAO,SAAS,iCAAc,IAAA;;;KCzBnD;EACV,OAAO;;KAGG;EACV,UAAU;EACV,UAAU;EACV,OAAO;;iBAGO,uBACd,KAAK,yBACL,QAAQ,oBACP;iBA6Ba,8BACd,KAAK,yBACL,YAAY,uBACZ;iBAkCc,yBACd,OAAO,OACP,YAAY;iBAcE,yBACd,OAAO,OACP,YAAY;;;;cCnHD,YAAY;cAEZ,mBAAmB"}
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
Object.defineProperty(exports,`__esModule`,{value:!0});const e=require(`./constants-D5kaKQHg.cjs`),t=require(`./protocol-B15qfxfT.cjs`),n=require(`./plugin-DcjqyREu.cjs`);let r=require(`@iiif/helpers/i18n`),i=require(`@manifest-editor/components`),a=require(`react`),o=require(`react/jsx-runtime`),s=require(`@iiif/helpers/vault/actions`),c=require(`@manifest-editor/shell`),l=require(`react-iiif-vault`);const u=[{code:`af`,label:`Afrikaans`},{code:`am`,label:`Amharic`},{code:`ar`,label:`Arabic`},{code:`ast`,label:`Asturian`},{code:`az`,label:`Azerbaijani`},{code:`ba`,label:`Bashkir`},{code:`be`,label:`Belarusian`},{code:`bg`,label:`Bulgarian`},{code:`bn`,label:`Bengali`},{code:`br`,label:`Breton`},{code:`bs`,label:`Bosnian`},{code:`ca`,label:`Catalan; Valencian`},{code:`ceb`,label:`Cebuano`},{code:`cs`,label:`Czech`},{code:`cy`,label:`Welsh`},{code:`da`,label:`Danish`},{code:`de`,label:`German`},{code:`el`,label:`Greek`},{code:`en`,label:`English`},{code:`es`,label:`Spanish`},{code:`et`,label:`Estonian`},{code:`fa`,label:`Persian`},{code:`ff`,label:`Fulah`},{code:`fi`,label:`Finnish`},{code:`fr`,label:`French`},{code:`fy`,label:`Western Frisian`},{code:`ga`,label:`Irish`},{code:`gd`,label:`Gaelic; Scottish Gaelic`},{code:`gl`,label:`Galician`},{code:`gu`,label:`Gujarati`},{code:`ha`,label:`Hausa`},{code:`he`,label:`Hebrew`},{code:`hi`,label:`Hindi`},{code:`hr`,label:`Croatian`},{code:`ht`,label:`Haitian; Haitian Creole`},{code:`hu`,label:`Hungarian`},{code:`hy`,label:`Armenian`},{code:`id`,label:`Indonesian`},{code:`ig`,label:`Igbo`},{code:`ilo`,label:`Iloko`},{code:`is`,label:`Icelandic`},{code:`it`,label:`Italian`},{code:`ja`,label:`Japanese`},{code:`jv`,label:`Javanese`},{code:`ka`,label:`Georgian`},{code:`kk`,label:`Kazakh`},{code:`km`,label:`Central Khmer`},{code:`kn`,label:`Kannada`},{code:`ko`,label:`Korean`},{code:`lb`,label:`Luxembourgish; Letzeburgesch`},{code:`lg`,label:`Ganda`},{code:`ln`,label:`Lingala`},{code:`lo`,label:`Lao`},{code:`lt`,label:`Lithuanian`},{code:`lv`,label:`Latvian`},{code:`mg`,label:`Malagasy`},{code:`mk`,label:`Macedonian`},{code:`ml`,label:`Malayalam`},{code:`mn`,label:`Mongolian`},{code:`mr`,label:`Marathi`},{code:`ms`,label:`Malay`},{code:`my`,label:`Burmese`},{code:`ne`,label:`Nepali`},{code:`nl`,label:`Dutch; Flemish`},{code:`no`,label:`Norwegian`},{code:`ns`,label:`Northern Sotho`},{code:`oc`,label:`Occitan`},{code:`or`,label:`Oriya`},{code:`pa`,label:`Panjabi; Punjabi`},{code:`pl`,label:`Polish`},{code:`ps`,label:`Pushto; Pashto`},{code:`pt`,label:`Portuguese`},{code:`ro`,label:`Romanian; Moldavian; Moldovan`},{code:`ru`,label:`Russian`},{code:`sd`,label:`Sindhi`},{code:`si`,label:`Sinhala; Sinhalese`},{code:`sk`,label:`Slovak`},{code:`sl`,label:`Slovenian`},{code:`so`,label:`Somali`},{code:`sq`,label:`Albanian`},{code:`sr`,label:`Serbian`},{code:`ss`,label:`Swati`},{code:`su`,label:`Sundanese`},{code:`sv`,label:`Swedish`},{code:`sw`,label:`Swahili`},{code:`ta`,label:`Tamil`},{code:`th`,label:`Thai`},{code:`tl`,label:`Tagalog`},{code:`tn`,label:`Tswana`},{code:`tr`,label:`Turkish`},{code:`uk`,label:`Ukrainian`},{code:`ur`,label:`Urdu`},{code:`uz`,label:`Uzbek`},{code:`vi`,label:`Vietnamese`},{code:`wo`,label:`Wolof`},{code:`xh`,label:`Xhosa`},{code:`yi`,label:`Yiddish`},{code:`yo`,label:`Yoruba`},{code:`zh`,label:`Chinese`},{code:`zu`,label:`Zulu`}],d=new Set(u.map(e=>e.code));function f(e){return!!e&&d.has(e)}function p(e){return u.find(t=>t.code===e)?.label||e}function m(e){if(!e.total)return`0`;let t=e.existing+(e.suggested||0);return`${Math.round(t/e.total*100)}%`}const ee=`en`,h=`nl`,g=`none`,_={annotationBodies:!0,canvasLabels:!0};function v(e,t={}){let n=b(e),r=S(t.defaultSourceLanguage)||x(e?.i18n?.defaultLanguage)||n[0]||`en`,i=x(t.defaultSourceLanguage)||x(e?.i18n?.defaultLanguage)||n[0]||`en`;return y({sourceLanguage:r,modelSourceLanguage:i,targetLanguage:x(t.defaultTargetLanguage,i)||n.find(e=>e!==i)||(i===`nl`?`en`:`nl`),runtime:t.runtimePreference,writePolicy:`fill-missing`})}function y(e={}){let t=S(e.sourceLanguage)||`en`,n=C(t,e);return{sourceLanguage:t,modelSourceLanguage:n,targetLanguage:x(e.targetLanguage,n)||(n===`nl`?`en`:`nl`),runtime:te(e.runtime),writePolicy:`fill-missing`,contentFilters:E(e.contentFilters),currentResourceOnly:e.currentResourceOnly===!0}}function b(e){let t=e?.i18n?.availableLanguages||[],n=[];for(let e of t){let t=x(e);t&&!n.includes(t)&&n.push(t)}return n}function x(e,t){if(typeof e!=`string`)return null;let n=T(e);if(!n||n===t)return null;if(f(n))return n;let r=n.split(`-`)[0]||``;return r!==n&&r!==t&&f(r)?r:null}function S(e){return w(e)?g:x(e)}function C(e,t={}){return x(e)||x(t.modelSourceLanguage)||`en`}function w(e){return typeof e==`string`&&T(e)===g}function T(e){return e.trim().replace(/_/g,`-`).toLowerCase()}function te(e){return e===`webgpu`||e===`wasm`||e===`auto`?e:`auto`}function E(e){let t=e&&typeof e==`object`?e:{};return{annotationBodies:typeof t.annotationBodies==`boolean`?t.annotationBodies:_.annotationBodies,canvasLabels:typeof t.canvasLabels==`boolean`?t.canvasLabels:_.canvasLabels}}function D(e,t,n){let r={vault:e,options:n,occurrences:[],visited:new Set};L(r,t);let i=new Map;for(let e of r.occurrences){let t=k(e.sourceText);if(!t)continue;let n=j(t,e.sourceLanguage,e.targetLanguage,e.valueFormat),r=i.get(n);if(r){r.occurrences.push(e),r.status=ve(r.status,e.status);continue}i.set(n,{key:n,sourceLanguage:e.sourceLanguage,targetLanguage:e.targetLanguage,sourceText:e.sourceText,normalisedSourceText:t,valueFormat:e.valueFormat,occurrences:[e],status:e.status})}return Array.from(i.values()).sort((e,t)=>{let n=ye(e.status)-ye(t.status);return n===0?e.sourceText.localeCompare(t.sourceText):n})}function O(e,t){let n={vault:e,languages:new Map,visited:new Set};return R(n,t),Array.from(n.languages.values()).sort((e,t)=>be(e).localeCompare(be(t)))}function ne(e,t,n,r=O(e,t).map(e=>e.language)){return r.filter(e=>!!x(e)).map(r=>{let i={language:r,total:0,missing:0,existing:0,suggested:0,skipped:0,stale:0};for(let a of D(e,t,{...n,targetLanguage:r}))i.total+=1,i[a.status]+=1;return i})}function k(e){return e.replace(/\s+/g,` `).trim()}function A(e){return k(e)}function j(e,t,n,r){return`${t}:${n}:${r}:${e.toLowerCase()}`}function M(e,t){if(!e)return[];if(typeof e==`string`)return e.trim()?[{sourceMapLanguage:t,sourceIndex:0,sourceText:e}]:[];let n=P(e,t);if(n.length)return n.map((e,n)=>({sourceMapLanguage:t,sourceIndex:n,sourceText:e})).filter(e=>k(e.sourceText));let r=x(t);if(r){let n=Object.keys(e).find(e=>e!==t&&x(e)===r);if(n)return P(e,n).map((e,t)=>({sourceMapLanguage:n,sourceIndex:t,sourceText:e})).filter(e=>k(e.sourceText))}return P(e,`none`).map((e,t)=>({sourceMapLanguage:`none`,sourceIndex:t,sourceText:e})).filter(e=>k(e.sourceText))}function N(e,t,n){return e?typeof e==`string`?t===`none`||n===0?e:``:P(e,t)[n]||``:``}function P(e,t){let n=e[t];return Array.isArray(n)?n.filter(e=>typeof e==`string`):[]}function F(e,t,n){let r=N(e,t,n);if(k(r))return r;if(!e||typeof e==`string`)return``;let i=x(t);if(i)for(let r of Object.keys(e)){if(r===t||x(r)!==i)continue;let a=N(e,r,n);if(k(a))return a}return P(e,t).find(e=>k(e))||``}function I(e){return/<\/?[a-z][\s\S]*>/i.test(e)}function L(e,t){if(!t?.id||!t.type)return;let n=`${t.type}:${t.id}`;if(e.visited.has(n))return;e.visited.add(n);let r=W(e.vault,t);if(r){oe(e,r),se(e,r),ce(e,r);for(let t of U(r.provider,`Agent`))L(e,t);switch(r.type){case`Manifest`:for(let t of U(r.items,`Canvas`))L(e,t);for(let t of U(r.structures,`Range`))L(e,t);break;case`Canvas`:for(let t of[...U(r.items,`AnnotationPage`),...U(r.annotations,`AnnotationPage`)])L(e,t);break;case`Range`:for(let t of U(r.items))L(e,t);break;case`AnnotationPage`:for(let t of U(r.items,`Annotation`))L(e,t);break;case`Annotation`:le(e,r);break}}}function R(e,t){if(!t?.id||!t.type)return;let n=`${t.type}:${t.id}`;if(e.visited.has(n))return;e.visited.add(n);let r=W(e.vault,t);if(r){re(e,r);for(let t of U(r.provider,`Agent`))R(e,t);switch(r.type){case`Manifest`:for(let t of U(r.items,`Canvas`))R(e,t);for(let t of U(r.structures,`Range`))R(e,t);break;case`Canvas`:for(let t of[...U(r.items,`AnnotationPage`),...U(r.annotations,`AnnotationPage`)])R(e,t);break;case`Range`:for(let t of U(r.items))R(e,t);break;case`AnnotationPage`:for(let t of U(r.items,`Annotation`))R(e,t);break;case`Annotation`:for(let t of U(r.body,`ContentResource`))R(e,t);break;case`Choice`:for(let t of U(r.items,`ContentResource`))R(e,t);break}}}function re(e,t){for(let n of ie(t))typeof n==`string`&&ae(e,n,1)}function ie(e){let t=new Set;try{for(let n of(0,r.getAvailableLanguagesFromResource)(e))typeof n==`string`&&t.add(n)}catch{}for(let n of z(e))t.add(n);return Array.from(t)}function z(e){let t=new Set;if(B(t,e?.label),B(t,e?.summary),typeof e?.language==`string`)t.add(e.language);else if(Array.isArray(e?.language))for(let n of e.language)typeof n==`string`&&t.add(n);let n=e?.requiredStatement;if(n&&!Array.isArray(n)&&(B(t,n.label),B(t,n.value)),Array.isArray(e?.metadata))for(let n of e.metadata)B(t,n?.label),B(t,n?.value);return Array.from(t)}function B(e,t){if(!(!t||typeof t==`string`))for(let[n,r]of Object.entries(t))Array.isArray(r)&&r.some(e=>typeof e==`string`&&k(e))&&e.add(n)}function ae(e,t,n){let r=S(t);if(!r)return;let i=T(t),a=e.languages.get(r);if(a){a.count+=n,a.iiifLanguages.includes(i)||a.iiifLanguages.push(i);return}e.languages.set(r,{language:r,count:n,iiifLanguages:[i]})}function oe(e,t,n){let r=n||G(t);V(e,{path:{kind:`resource-language-map`,resource:r,property:`label`},resource:r,propertyLabel:`Label`,value:t.label}),V(e,{path:{kind:`resource-language-map`,resource:r,property:`summary`},resource:r,propertyLabel:`Summary`,value:t.summary})}function se(e,t,n){let r=Array.isArray(t.metadata)?t.metadata:[],i=n||G(t);r.forEach((t,n)=>{V(e,{path:{kind:`metadata-language-map`,resource:i,metadataIndex:n,field:`label`},resource:i,propertyLabel:`Metadata ${n+1} label`,value:t?.label}),V(e,{path:{kind:`metadata-language-map`,resource:i,metadataIndex:n,field:`value`},resource:i,propertyLabel:`Metadata ${n+1} value`,value:t?.value})})}function ce(e,t,n){let r=t.requiredStatement;if(!r)return;let i=n||G(t);V(e,{path:{kind:`required-statement-language-map`,resource:i,field:`label`},resource:i,propertyLabel:`Required statement label`,value:r.label}),V(e,{path:{kind:`required-statement-language-map`,resource:i,field:`value`},resource:i,propertyLabel:`Required statement value`,value:r.value})}function le(e,t){let n={id:t.id,type:`Annotation`},r=de(e.vault,t);for(let{ref:t,resource:n}of r){let r={...t,label:K(n,n.id||t.id)};oe(e,n,r),se(e,n,r),ce(e,n,r)}if(e.options.contentFilters?.annotationBodies===!1)return;let i=r.filter(e=>H(e.resource));for(let{ref:t,resource:r,choice:a}of i){if(!he(r,e.options.sourceLanguage))continue;let o=typeof r.value==`string`?r.value:``;if(!k(o))continue;let s=pe(i.filter(e=>me(a,e)),e.options.targetLanguage),c=typeof s?.resource.value==`string`?s.resource.value:``;e.occurrences.push({id:ue({kind:`textual-body`,annotation:n,body:t,choice:a,targetBody:s?{id:s.ref.id,type:`ContentResource`}:void 0}),path:{kind:`textual-body`,annotation:n,body:t,choice:a,targetBody:s?{id:s.ref.id,type:`ContentResource`}:void 0},resource:{id:r.id||t.id,type:`ContentResource`,label:K(r,r.id||t.id)},propertyLabel:`Annotation body`,sourceLanguage:e.options.sourceLanguage,sourceMapLanguage:_e(r.language,e.options.sourceLanguage),targetLanguage:e.options.targetLanguage,sourceIndex:0,sourceText:o,targetText:c,valueFormat:r.format===`text/html`||I(o)?`html`:`text`,sourceFingerprint:A(o),status:k(c)?`existing`:`missing`})}}function V(e,t){if(t.path.kind===`resource-language-map`&&t.path.resource.type===`Canvas`&&t.path.property===`label`&&e.options.contentFilters?.canvasLabels===!1)return;let n=M(t.value,e.options.sourceLanguage);for(let r of n){let n=F(t.value,e.options.targetLanguage,r.sourceIndex);e.occurrences.push({id:ue(t.path,r.sourceMapLanguage,r.sourceIndex),path:t.path,resource:t.resource,propertyLabel:t.propertyLabel,sourceLanguage:e.options.sourceLanguage,sourceMapLanguage:r.sourceMapLanguage,targetLanguage:e.options.targetLanguage,sourceIndex:r.sourceIndex,sourceText:r.sourceText,targetText:n,valueFormat:I(r.sourceText)?`html`:`text`,sourceFingerprint:A(r.sourceText),status:k(n)?`existing`:`missing`})}}function ue(e,t=`text`,n=0){switch(e.kind){case`resource-language-map`:return`${e.resource.type}:${e.resource.id}:${e.property}:${t}:${n}`;case`metadata-language-map`:return`${e.resource.type}:${e.resource.id}:metadata:${e.metadataIndex}:${e.field}:${t}:${n}`;case`required-statement-language-map`:return`${e.resource.type}:${e.resource.id}:requiredStatement:${e.field}:${t}:${n}`;case`textual-body`:return`${e.annotation.id}:body:${e.choice?.id||`annotation`}:${e.body.id}`}}function de(e,t){let n=[];for(let r of U(t.body,`ContentResource`))fe(e,r,n);return n}function fe(e,t,n,r){let i=W(e,t);if(i&&(n.push({ref:t,resource:i,choice:r}),i.type===`Choice`))for(let r of U(i.items,`ContentResource`))fe(e,r,n,t)}function pe(e,t){return e.find(({resource:e})=>!H(e)||!k(String(e.value||``))?!1:ge(e.language,t))}function me(e,t){return(e?.id||``)===(t.choice?.id||``)}function he(e,t){return!H(e)||typeof e.value!=`string`?!1:e.language?ge(e.language,t):!0}function H(e){return e?.type===`TextualBody`||e?.type===`Text`}function ge(e,t){let n=e=>e===t?!0:typeof e==`string`&&x(e)===x(t);return Array.isArray(e)?e.some(n):n(e)}function _e(e,t){return Array.isArray(e)?typeof e[0]==`string`?e[0]:t:typeof e==`string`?e:t}function U(e,t){return(Array.isArray(e)?e:e?[e]:[]).map(e=>{if(!e?.id)return null;let n=t===`ContentResource`&&(e.type===`TextualBody`||e.type===`Text`)?t:e.type||t;return{id:e.id,type:n}}).filter(e=>!!e?.id&&!!e.type)}function W(e,t){let n=e.get(t,{skipSelfReturn:!1});return n&&typeof n==`object`?n:null}function G(e){return{id:e.id,type:e.type,label:K(e,e.id||e.type)}}function K(e,t){if(!e?.label)return t;if(typeof e.label==`string`)return e.label;let n=e.label.en?.find?.(e=>e?.trim());if(n)return n;for(let t of Object.keys(e.label)){let n=e.label[t]?.find?.(e=>e?.trim());if(n)return n}return t}function ve(e,t){return e===`missing`||t===`missing`?`missing`:e===`stale`||t===`stale`?`stale`:e===`skipped`||t===`skipped`?`skipped`:e===`suggested`||t===`suggested`?`suggested`:`existing`}function ye(e){switch(e){case`missing`:return 0;case`stale`:return 1;case`skipped`:return 2;case`suggested`:return 3;case`existing`:return 4}}function be(e){return e.language}const q=`@manifest-editor/translation:config`;function xe(e){return new Promise(t=>{if(e.signal?.aborted||typeof window>`u`){t(!1);return}let n=!1,r=r=>{n||(n=!0,e.signal?.removeEventListener(`abort`,i),t(r))},i=()=>r(!1);e.signal?.addEventListener(`abort`,i,{once:!0}),window.dispatchEvent(new CustomEvent(q,{detail:{...e,resolve:r}}))})}function Se(e){return(0,o.jsx)(Ce,{actionId:e})}function Ce({actionId:t}){let[n,r]=(0,a.useState)(null),[s,c]=(0,a.useState)(y({}));(0,a.useEffect)(()=>{let e=e=>{let n=e.detail;n?.actionId===t&&(r(n),c(y(n.defaults)))};return window.addEventListener(q,e),()=>window.removeEventListener(q,e)},[t]),(0,a.useEffect)(()=>{if(!n?.signal)return;if(n.signal.aborted){r(null);return}let e=()=>r(null);return n.signal.addEventListener(`abort`,e,{once:!0}),()=>n.signal?.removeEventListener(`abort`,e)},[n]);let l=n?.detectedLanguages||[],u=(0,a.useMemo)(()=>l.map(e=>e.language),[l]);(0,a.useEffect)(()=>{!u.length||u.includes(s.sourceLanguage)||c(e=>u.includes(e.sourceLanguage)?e:y({...e,sourceLanguage:u[0]}))},[u.join(`|`),s.sourceLanguage]);let d=(0,a.useMemo)(()=>n?.getTargets?.(s)||n?.targets||[],[n,s]),f=(0,a.useMemo)(()=>d.filter(e=>e.status===`missing`).length,[d]),m=(0,a.useMemo)(()=>n?.getTargetLanguageProgress?.(s)||[],[n,s]),ee=(0,a.useMemo)(()=>[{label:`Detected in manifest`,options:l.map(e=>({value:e.language,label:p(e.language)}))}],[l]),h=(0,a.useMemo)(()=>Te(m),[m]),g=(e,t)=>{c(n=>y({...n,contentFilters:{...n.contentFilters,[e]:t}}))};if(!n)return null;let _=e=>{n.resolve(e===!1?!1:y(e)),r(null)},v=C(s.sourceLanguage,s)===s.targetLanguage,b=s.currentResourceOnly===!0&&!!n.currentResource,x=u.length===0||v||f===0;return(0,o.jsx)(i.Modal,{title:`Run translations`,onClose:()=>_(!1),className:`max-w-xl`,actions:(0,o.jsxs)(`div`,{className:`flex gap-2`,children:[(0,o.jsx)(`button`,{type:`button`,className:`rounded border border-zinc-200 bg-white px-2.5 py-1.5 text-xs font-medium text-zinc-600 hover:border-zinc-300`,onClick:()=>_(!1),children:`Cancel`}),(0,o.jsx)(`button`,{type:`button`,className:`rounded border border-me-primary-500 bg-me-primary-500 px-2.5 py-1.5 text-xs font-medium text-white disabled:cursor-not-allowed disabled:opacity-40`,disabled:x,onClick:()=>_(s),children:`Run translation`})]}),children:(0,o.jsxs)(`div`,{className:`flex flex-col gap-3 p-3 text-sm text-zinc-700`,children:[(0,o.jsxs)(`div`,{className:`flex flex-col gap-2 border-b border-zinc-100 pb-3`,children:[(0,o.jsxs)(`div`,{className:`grid grid-cols-[minmax(0,1fr)_auto_minmax(0,1fr)] items-end gap-1.5 sm:grid-cols-[minmax(0,1fr)_auto_minmax(0,1fr)_7rem]`,children:[(0,o.jsx)(Ee,{label:`From`,value:s.sourceLanguage,groups:ee,emptyLabel:`No detected languages`,onChange:e=>c(t=>y({...t,sourceLanguage:e}))}),(0,o.jsx)(`span`,{className:`mb-[7px] text-zinc-300 select-none`,children:`→`}),(0,o.jsx)(Ee,{label:`To`,value:s.targetLanguage,groups:h,onChange:e=>c(t=>y({...t,targetLanguage:e}))}),(0,o.jsxs)(`label`,{className:`col-span-3 grid shrink-0 gap-1 sm:col-span-1`,children:[(0,o.jsx)(`span`,{className:`text-[10px] font-medium uppercase tracking-wide text-zinc-400`,children:`Mode`}),(0,o.jsxs)(`select`,{className:`rounded border border-zinc-200 bg-white py-[5px] px-2 text-xs text-zinc-700 focus:border-me-primary-500 focus:outline-none focus:ring-2 focus:ring-me-primary-500/20`,value:s.runtime,onChange:e=>c(t=>y({...t,runtime:e.target.value})),children:[(0,o.jsx)(`option`,{value:`auto`,children:`Auto`}),(0,o.jsx)(`option`,{value:`webgpu`,children:`WebGPU`}),(0,o.jsx)(`option`,{value:`wasm`,children:`WASM`})]})]})]}),(0,o.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,o.jsxs)(`label`,{className:`flex items-center gap-2 text-xs ${n.currentResource?`text-zinc-600`:`text-zinc-300`}`,title:n.currentResource?.label||n.currentResource?.id,children:[(0,o.jsx)(`input`,{type:`checkbox`,className:`h-3.5 w-3.5 rounded border-zinc-300`,checked:b,disabled:!n.currentResource,onChange:e=>c(t=>y({...t,currentResourceOnly:e.currentTarget.checked}))}),`Current resource`]}),(0,o.jsx)(we,{filters:s.contentFilters,onChange:g})]})]}),u.length===0?(0,o.jsx)(`div`,{className:`rounded border border-amber-200 bg-amber-50 px-2.5 py-2 text-xs text-amber-800`,children:`No supported IIIF languages were detected in this manifest.`}):null,v?(0,o.jsx)(`div`,{className:`rounded border border-amber-200 bg-amber-50 px-2.5 py-2 text-xs text-amber-800`,children:`Select different source and target languages.`}):null,(0,o.jsxs)(`div`,{className:`rounded border border-zinc-200 bg-zinc-50 px-2.5 py-2`,children:[(0,o.jsxs)(`div`,{className:`text-xs text-zinc-500`,children:[f>0?(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(`span`,{className:`font-semibold text-amber-600`,children:f}),` missing`]}):(0,o.jsx)(`span`,{className:`text-zinc-400`,children:`No missing strings`}),d.length>0?(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(`span`,{className:`text-zinc-300`,children:` · `}),(0,o.jsx)(`span`,{children:d.length}),` total`]}):null]}),(0,o.jsxs)(`div`,{className:`mt-1 text-xs text-zinc-500`,children:[`Missing target-language values will be filled using `,e.a,`. Existing target values are left unchanged.`]})]})]})})}function we({filters:e,onChange:t}){return(0,o.jsxs)(`details`,{className:`relative shrink-0`,children:[(0,o.jsx)(`summary`,{className:`cursor-pointer list-none rounded border border-zinc-200 bg-white px-2.5 py-1.5 text-xs font-medium text-zinc-600 hover:border-zinc-300`,children:`Filters`}),(0,o.jsxs)(`div`,{className:`absolute right-0 z-20 mt-1 grid w-48 gap-2 rounded border border-zinc-200 bg-white p-2.5 text-xs text-zinc-700 shadow-lg`,children:[(0,o.jsxs)(`label`,{className:`flex items-center gap-2`,children:[(0,o.jsx)(`input`,{type:`checkbox`,className:`h-3.5 w-3.5 rounded border-zinc-300`,checked:e.annotationBodies,onChange:e=>t(`annotationBodies`,e.currentTarget.checked)}),`Annotation bodies`]}),(0,o.jsxs)(`label`,{className:`flex items-center gap-2`,children:[(0,o.jsx)(`input`,{type:`checkbox`,className:`h-3.5 w-3.5 rounded border-zinc-300`,checked:e.canvasLabels,onChange:e=>t(`canvasLabels`,e.currentTarget.checked)}),`Canvas labels`]})]})]})}function Te(e){let t=new Set(e.map(e=>e.language)),n=[];return e.length&&n.push({label:`Detected in manifest`,options:e.map(e=>({value:e.language,label:`${p(e.language)} (${m(e)})`}))}),n.push({label:`All languages`,options:u.filter(e=>!t.has(e.code)).map(e=>({value:e.code,label:e.label}))}),n}function Ee({label:e,value:t,groups:n,emptyLabel:r=`No languages available`,onChange:i}){let a=n.some(e=>e.options.length),s=n.some(e=>e.options.some(e=>e.value===t));return(0,o.jsxs)(`label`,{className:`grid min-w-0 flex-1 gap-1`,children:[(0,o.jsx)(`span`,{className:`text-[10px] font-medium uppercase tracking-wide text-zinc-400`,children:e}),(0,o.jsxs)(`select`,{className:`w-full rounded border border-zinc-200 bg-white py-[5px] px-2 text-xs text-zinc-800 focus:border-me-primary-500 focus:outline-none focus:ring-2 focus:ring-me-primary-500/20`,value:t,disabled:!a,onChange:e=>i(e.target.value),children:[s?null:(0,o.jsx)(`option`,{value:t,disabled:!0,children:a?p(t):r}),n.map(e=>e.options.length?(0,o.jsx)(`optgroup`,{label:e.label,children:e.options.map(e=>(0,o.jsx)(`option`,{value:e.value,children:e.label},e.value))},e.label):null)]})]})}const De=new Set([`br`,`hr`,`img`,`input`,`meta`,`link`,`area`,`base`,`col`,`embed`,`param`,`source`,`track`,`wbr`]);async function Oe(e,t){let n=ke(e);if(!n||!Ae(n))return null;let r=[];for(let e of n){if(e.type===`tag`){r.push(e.value);continue}if(!e.value.trim()){r.push(e.value);continue}let n=e.value.match(/^\s*/)?.[0]||``,i=e.value.match(/\s*$/)?.[0]||``,a=e.value.trim();r.push(`${n}${await t(a)}${i}`)}return r.join(``)}function ke(e){let t=[],n=/<\/?[^>]+>/g,r=0,i;for(;i=n.exec(e);){if(i.index>r){let n=e.slice(r,i.index);if(/[<>]/.test(n))return null;t.push({type:`text`,value:n})}let n=i[0];if(!/^<\/?[A-Za-z][A-Za-z0-9:-]*(\s+[^<>]*)?\/?>$/.test(n))return null;t.push({type:`tag`,value:n}),r=i.index+n.length}if(r<e.length){let n=e.slice(r);if(/[<>]/.test(n))return null;t.push({type:`text`,value:n})}return t.length?t:null}function Ae(e){let t=[];for(let n of e){if(n.type!==`tag`)continue;let e=n.value.match(/^<\/\s*([A-Za-z][A-Za-z0-9:-]*)\s*>$/);if(e){if(t.pop()!==e[1].toLowerCase())return!1;continue}let r=n.value.match(/^<\s*([A-Za-z][A-Za-z0-9:-]*)/);if(!r)return!1;let i=r[1].toLowerCase();n.value.endsWith(`/>`)||De.has(i)||t.push(i)}return t.length===0}function je(){return typeof crypto<`u`&&`randomUUID`in crypto?crypto.randomUUID():`translation-${Date.now()}-${Math.random().toString(16).slice(2)}`}function Me(e={}){let n=e.worker??Ne(e.workerUrl),r=new Set,i=new Map,a=!1,o=e=>{for(let t of r)t(e)},s=e=>{for(let t of i.values())t.reject(e);i.clear()};n.addEventListener(`message`,e=>{let t=e.data;if(t.kind===`event`){o(t.payload);return}let n=i.get(t.requestId);if(n){if(i.delete(t.requestId),t.kind===`error`){let e=Error(t.payload.message);e.name=t.payload.code,n.reject(e);return}n.resolve(t.payload)}}),n.addEventListener(`error`,e=>{let t=Error(e.message||`The translation worker crashed.`);t.name=`worker_failed`,o({type:`error`,code:`worker_failed`,message:t.message,recoverable:!1}),s(t)});let c=(e,r)=>{if(a)return Promise.reject(Error(`The translation worker client has been terminated.`));let o=je(),s=e===`translate`?t.o(o,r.payload):e===`dispose`?t.t(o):t.i(o,r.payload);return new Promise((t,r)=>{i.set(o,{command:e,resolve:e=>t(e),reject:r}),n.postMessage(s)})};return{async preload(e){await c(`preload`,{payload:e})},translate(e){return c(`translate`,{payload:e})},onEvent(e){return r.add(e),()=>{r.delete(e)}},terminate(){a||(a=!0,n.postMessage(t.t(je())),n.terminate(),s(Error(`The translation worker client has been terminated.`)))}}}function Ne(e){try{return new Worker(Pe(e),{type:`module`})}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Unable to start the translation worker. If you are using @manifest-editor/translation from a bundled package, provide a public workerUrl or pass a Worker instance. ${t}`)}}function Pe(e){return e instanceof URL?e:e?new URL(e,globalThis.location?.href||require(`url`).pathToFileURL(__filename).href):new URL(Fe(),require(`url`).pathToFileURL(__filename).href)}function Fe(){return`./translation-worker.js`}const Ie=`@manifest-editor/translation:results`;function Le(e,t){typeof window>`u`||window.dispatchEvent(new CustomEvent(Ie,{detail:{actionId:e,result:t}}))}function Re(e){return(0,o.jsx)(ze,{actionId:e})}function ze({actionId:e}){let[t,n]=(0,a.useState)(null);return(0,a.useEffect)(()=>{let t=t=>{let r=t.detail;r?.actionId===e&&r.result&&n(r.result)};return window.addEventListener(Ie,t),()=>window.removeEventListener(Ie,t)},[e]),t?(0,o.jsx)(i.Modal,{title:`Translation results`,onClose:()=>n(null),className:`max-w-4xl`,children:(0,o.jsxs)(`div`,{className:`flex min-h-0 flex-col gap-4 p-4 text-sm text-zinc-700`,children:[(0,o.jsxs)(`div`,{className:`grid grid-cols-3 gap-2 sm:grid-cols-6`,children:[(0,o.jsx)(J,{label:`Strings`,value:t.total}),(0,o.jsx)(J,{label:`Translated`,value:t.translated}),(0,o.jsx)(J,{label:`Applied`,value:t.applied}),(0,o.jsx)(J,{label:`Existing`,value:t.existing}),(0,o.jsx)(J,{label:`Stale`,value:t.stale}),(0,o.jsx)(J,{label:`Skipped`,value:t.skipped+t.errors})]}),t.translations.length?(0,o.jsxs)(`div`,{className:`rounded border border-zinc-200`,children:[(0,o.jsx)(`div`,{className:`border-b border-zinc-200 bg-zinc-50 px-3 py-2 font-medium`,children:`Translated strings`}),(0,o.jsx)(`div`,{className:`max-h-64 overflow-auto`,children:t.translations.map(e=>(0,o.jsxs)(`div`,{className:`grid gap-1.5 border-b border-zinc-100 px-3 py-2.5 last:border-0`,children:[(0,o.jsx)(`div`,{className:`border-l-2 border-zinc-200 pl-2.5 text-[11px] italic leading-relaxed text-zinc-400 line-clamp-2`,children:e.sourceText}),(0,o.jsx)(`div`,{className:`text-xs font-medium text-zinc-900 line-clamp-2`,children:e.translationText}),(0,o.jsxs)(`div`,{className:`text-[11px] text-zinc-400`,children:[e.applied,` occurrence`,e.applied===1?``:`s`]})]},e.key))})]}):null,t.skippedTargets.length?(0,o.jsxs)(`div`,{className:`rounded border border-zinc-200`,children:[(0,o.jsx)(`div`,{className:`border-b border-zinc-200 bg-zinc-50 px-3 py-2 font-medium`,children:`Skipped strings`}),(0,o.jsx)(`div`,{className:`max-h-56 overflow-auto`,children:t.skippedTargets.map(e=>(0,o.jsxs)(`div`,{className:`grid gap-1 border-b border-zinc-100 px-3 py-2 last:border-0`,children:[(0,o.jsx)(`div`,{className:`line-clamp-2 font-medium text-zinc-900`,children:e.sourceText}),(0,o.jsx)(`div`,{className:`text-zinc-500`,children:e.reason})]},`${e.key}-${e.reason}`))})]}):null]})}):null}function J({label:e,value:t}){return(0,o.jsxs)(`div`,{className:`rounded border border-zinc-200 bg-zinc-50 px-2.5 py-2`,children:[(0,o.jsx)(`div`,{className:`text-base font-semibold text-zinc-900`,children:t}),(0,o.jsx)(`div`,{className:`text-[10px] uppercase tracking-wide text-zinc-400`,children:e})]})}function Be(e,t){let n=[],r=[],i=[];for(let a of t.occurrences){if(A(He(e.vault,a))!==a.sourceFingerprint){i.push(a);continue}if(k(Ye(e.vault,a))){r.push(a);continue}n.push(a)}return{writable:n,existing:r,stale:i}}function Ve(e,t,n){let r=n.trim();if(!r)return!1;switch(t.path.kind){case`resource-language-map`:return We(e.vault,t.path.resource,t.path.property,t,r),!0;case`metadata-language-map`:return Ge(e.vault,t.path,t,r),!0;case`required-statement-language-map`:return Ke(e.vault,t.path,t,r),!0;case`textual-body`:return qe(e.vault,t,r),!0}}function He(e,t){if(t.path.kind===`textual-body`){let n=Y(e,t.path.body);return typeof n?.value==`string`?n.value:``}return N(Je(e,t.path),t.sourceMapLanguage,t.sourceIndex)}function Ue(e,t){if(t.path.kind===`textual-body`){let n=Qe(e,t);return typeof n?.value==`string`?n.value:``}return N(Je(e,t.path),t.targetLanguage,t.sourceIndex)}function We(e,t,n,r,i){let a=Xe(Y(e,t)?.[n],r.sourceMapLanguage,r.sourceText,r.targetLanguage,r.sourceIndex,i);e.modifyEntityField(t,n,a)}function Ge(e,t,n,r){let i=Y(e,t.resource),a=Array.isArray(i?.metadata)?[...i.metadata]:[],o=a[t.metadataIndex]||{label:{},value:{}};a[t.metadataIndex]={...o,[t.field]:Xe(o[t.field],n.sourceMapLanguage,n.sourceText,n.targetLanguage,n.sourceIndex,r)},e.modifyEntityField(t.resource,`metadata`,a)}function Ke(e,t,n,r){let i=Y(e,t.resource)?.requiredStatement||{},a={label:{none:[``]},value:{none:[``]},...i,[t.field]:Xe(i[t.field],n.sourceMapLanguage,n.sourceText,n.targetLanguage,n.sourceIndex,r)};e.modifyEntityField(t.resource,`requiredStatement`,a)}function qe(e,t,n){if(t.path.kind!==`textual-body`)return;let r=Qe(e,t);if(r?.id){e.modifyEntityField({id:r.id,type:`ContentResource`},`value`,n),e.modifyEntityField({id:r.id,type:`ContentResource`},`language`,t.targetLanguage);return}let i=Y(e,t.path.body),a=rt(t),o={id:a,type:`ContentResource`};if(t.path.choice){e.dispatch((0,s.importEntities)({entities:{ContentResource:{[a]:{id:a,type:`TextualBody`,format:i?.format||(t.valueFormat===`html`?`text/html`:`text/plain`),value:n,language:t.targetLanguage}}}}));let r=Y(e,t.path.choice),c=Array.isArray(r?.items)?r.items:[];e.modifyEntityField(t.path.choice,`items`,[...c,o]);return}e.dispatch((0,s.batchActions)({actions:[(0,s.importEntities)({entities:{ContentResource:{[a]:{id:a,type:`TextualBody`,format:i?.format||(t.valueFormat===`html`?`text/html`:`text/plain`),value:n,language:t.targetLanguage}}}}),(0,s.addReference)({id:t.path.annotation.id,type:`Annotation`,key:`body`,reference:o})]}))}function Je(e,t){if(t.kind===`textual-body`)return null;let n=Y(e,t.resource);if(!n)return null;switch(t.kind){case`resource-language-map`:return n[t.property];case`metadata-language-map`:return n.metadata?.[t.metadataIndex]?.[t.field];case`required-statement-language-map`:return n.requiredStatement?.[t.field]}}function Ye(e,t){return t.path.kind===`textual-body`?Ue(e,t):F(Je(e,t.path),t.targetLanguage,t.sourceIndex)}function Xe(e,t,n,r,i,a){let o=Ze(e,t,n),s=[...o[r]||[]];for(;s.length<=i;)s.push(``);return s[i]=a,o[r]=s,o}function Ze(e,t,n){return e?typeof e==`string`?{[t]:[e]}:Object.fromEntries(Object.entries(e).map(([e,t])=>[e,Array.isArray(t)?[...t]:[]])):{[t]:[n]}}function Qe(e,t){if(t.path.kind!==`textual-body`)return null;if(t.path.targetBody){let n=Y(e,t.path.targetBody);if(n)return n}let n=t.path.body.id,r=Y(e,t.path.annotation),i=t.path.choice?.id||``;return $e(e,r).filter(e=>(e.choice?.id||``)===i).find(({resource:e,ref:r})=>r.id===n||e?.id===n||e?.type!==`TextualBody`&&e?.type!==`Text`?!1:it(e.language,t.targetLanguage))?.resource||null}function $e(e,t){let n=[];for(let r of nt(t?.body,`ContentResource`))et(e,r,n);return n.filter(({resource:e})=>tt(e))}function et(e,t,n,r){let i=Y(e,t);if(i&&(n.push({ref:t,resource:i,choice:r}),i.type===`Choice`))for(let r of nt(i.items,`ContentResource`))et(e,r,n,t)}function tt(e){return e?.type===`TextualBody`||e?.type===`Text`}function nt(e,t){return(Array.isArray(e)?e:e?[e]:[]).map(e=>{if(!e?.id)return null;let n=t===`ContentResource`&&(e.type===`TextualBody`||e.type===`Text`)?t:e.type||t;return{id:e.id,type:n}}).filter(e=>!!e?.id&&!!e.type)}function rt(e){let t=e.path.kind===`textual-body`?e.path.annotation.id:e.resource.id,n=e.path.kind===`textual-body`?e.path.body.id:e.id;return`${at(t)}/translation/${encodeURIComponent(e.targetLanguage)}/${ot(n)}`}function it(e,t){let n=e=>e===t?!0:typeof e==`string`&&x(e)===x(t);return Array.isArray(e)?e.some(n):n(e)}function Y(e,t){if(!t?.id||!t.type)return null;let n=e.get(t,{skipSelfReturn:!1});return n&&typeof n==`object`?n:null}function at(e){return e.endsWith(`/`)?e.slice(0,-1):e}function ot(e){let t=5381;for(let n=0;n<e.length;n+=1)t=t*33^e.charCodeAt(n);return(t>>>0).toString(36)}const st=new Map;function ct(e,t){st.set(e,y(t))}function lt(t={}){let n=t.createClient||(e=>Me({workerUrl:typeof e?.workerUrl==`string`&&e.workerUrl.trim()?e.workerUrl:void 0})),r=t.collectTargets||D,i=t.requestConfig||dt,a=t.translateHtml||Oe,s=null,c,l=e=>typeof e?.workerUrl==`string`&&e.workerUrl.trim()?e.workerUrl.trim():void 0,u=(e=s)=>{e&&(e.terminate(),s===e&&(s=null,c=void 0))},d=e=>{let t=l(e);return s&&c!==t&&u(s),s||(s=n(e),c=t),s};return{id:e.n,label:`Run translation`,summary:`Translate missing manifest strings with M2M100`,section:`Translations`,order:30,resourceTypes:[`Manifest`],resumable:!0,render:e=>(0,o.jsxs)(o.Fragment,{children:[Se(e.definition.id),Re(e.definition.id)]}),onResults:e=>Le(e.definition.id,e.instance?.result),supports:e=>e.vault.get(e.target)?.type===`Manifest`,prepare:async t=>{let n=t.plugins.getSettings(e.o),a=v(t.config,n),o=r(t.vault,X(t,a),a),s=st.get(t.instanceKey)||await i(t,o,a);if(st.delete(t.instanceKey),s===!1)return!1;let c=y(s);return ut(r(t.vault,X(t,c),c),c)},run:async t=>{let n=ft(t.plan),r=y(n?.options||v(t.config)),i=t.tasks.getAll(),o=t.tasks.getPending(),s={vault:t.vault};if(t.setActionLabel(`Running translation`),!i.length)return t.setActionStatus(`running`,`No translatable strings found`),t.setActionProgress({current:0,total:0,label:`No strings`}),ht(0);if(o.length){let n=d(t.plugins.getSettings(e.o)),i=n.onEvent(e=>_t(t,e)),o=()=>u(n);t.signal.addEventListener(`abort`,o,{once:!0});try{bt(t.signal),t.setActionStatus(`running`,`Loading translation model`),await n.preload({runtime:r.runtime}),await t.tasks.runEach(async(e,{index:i,total:o})=>{bt(t.signal);let c=e.input;if(!c)return Z(`Missing translation target`,e.id,``,0,0);t.appendActionLog(`Translating ${i+1}/${o}`,`info`,{key:c.key,sourceLanguage:c.sourceLanguage,targetLanguage:c.targetLanguage});let l=Be(s,c);if(!l.writable.length)return Z(gt(l.existing.length,l.stale.length),c.key,c.sourceText,l.existing.length,l.stale.length);let d;try{d=await pt(n,c,r,a)}catch(e){throw xt(e)&&u(n),e}if(!d)return Z(`HTML could not be parsed for safe translation`,c.key,c.sourceText,l.existing.length,l.stale.length);let f=0,p=l.existing.length,m=l.stale.length;for(let e of l.writable){let t=Be(s,{...c,occurrences:[e]});if(t.stale.length){m+=t.stale.length;continue}if(t.existing.length){p+=t.existing.length;continue}Ve(s,e,d)&&(f+=1)}return f?{taskStatus:`complete`,statusText:`Translated ${f} occurrence${f===1?``:`s`}`,result:{type:`translated`,key:c.key,sourceText:c.sourceText,translationText:d,applied:f,existing:p,stale:m}}:Z(`No missing occurrences remained`,c.key,c.sourceText,p,m)},{progressLabel:(e,t,n)=>`Translating strings ${t+1}/${n}`})}catch(e){throw u(n),e}finally{t.signal.removeEventListener(`abort`,o),i()}}let c=mt(n?.totalTargets||i.length,t.tasks.getAll());return t.setActionStatus(`running`,`Applied ${c.applied} translations`),t.setActionProgress({current:c.total,total:c.total,label:`Translations complete`}),c}}}function ut(e,t){return{version:1,data:{options:y(t),totalTargets:e.length},tasks:e.map(e=>{let t=e.occurrences.filter(e=>e.status===`existing`).length,n=e.status!==`missing`;return{id:e.key,label:yt(e),target:vt(e),input:e,status:n?`skipped`:`queued`,statusText:n?`Target language already exists`:void 0,result:n?{type:`skipped`,key:e.key,sourceText:e.sourceText,reason:`Target language already exists`,existing:t,stale:0}:void 0,completedAt:n?Date.now():void 0}})}}function X(e,t){return t.currentResourceOnly&&e.currentCanvas?{id:e.currentCanvas.id,type:e.currentCanvas.type,label:e.currentCanvas.label}:e.target}async function dt(e,t,n){let r=O(e.vault,e.target),i=r.map(e=>e.language);return xe({actionId:e.definition.id,instanceKey:e.instanceKey,defaults:n,targets:t,availableLanguages:b(e.config),detectedLanguages:r,currentResource:e.currentCanvas?{id:e.currentCanvas.id,type:e.currentCanvas.type,label:e.currentCanvas.label}:void 0,getTargets:t=>D(e.vault,X(e,y(t)),y(t)),getTargetLanguageProgress:t=>ne(e.vault,X(e,y(t)),y(t),i),signal:e.signal})}function ft(e){let t=e?.data;return t?.options?t:null}async function pt(e,t,n,r){let i=async r=>(await e.translate({text:r,sourceLanguage:C(t.sourceLanguage,n),targetLanguage:t.targetLanguage,runtime:n.runtime})).text;return t.valueFormat===`html`?r(t.sourceText,i):i(t.sourceText)}function Z(e,t,n,r,i){return{taskStatus:`skipped`,statusText:e,result:{type:`skipped`,key:t,sourceText:n,reason:e,existing:r,stale:i}}}function mt(e,t){let n=ht(e);for(let e of t){let t=e.result;if(t?.type===`translated`){n.translated+=1,n.applied+=t.applied,n.existing+=t.existing,n.stale+=t.stale,n.translations.push({key:t.key,sourceText:t.sourceText,translationText:t.translationText,applied:t.applied});continue}if(t?.type===`skipped`){n.skipped+=1,n.existing+=t.existing||0,n.stale+=t.stale||0,n.skippedTargets.push({key:t.key,sourceText:t.sourceText,reason:t.reason});continue}e.status===`error`&&(n.errors+=1,n.skippedTargets.push({key:e.id,sourceText:e.label,reason:e.error?.message||`Translation failed`}))}return n}function ht(e){return{total:e,translated:0,applied:0,skipped:0,existing:0,stale:0,errors:0,translations:[],skippedTargets:[]}}function gt(e,t){return t&&e?`Source changed or target translation already exists`:t?`Source changed after the translation run was prepared`:e?`Target language already exists`:`No writable occurrences`}function _t(e,t){switch(t.type){case`model-progress`:e.setActionStatus(`running`,`Loading model ${Math.round(t.progress)}% (${St(t.loaded)} / ${St(t.total)})`);break;case`model-ready`:e.setActionStatus(`running`,`Model ready (${t.runtime.toUpperCase()})`);break;case`runtime-fallback`:e.appendActionLog(`Falling back to WASM translation runtime`,`warn`,t),e.setActionStatus(`running`,`WebGPU unavailable; using WASM`);break;case`translation-start`:e.setActionStatus(`running`,`Translating ${t.sourceLanguage} to ${t.targetLanguage}`);break;case`translation-complete`:e.setActionStatus(`running`,`Translated ${t.result.text.length} characters`);break;case`error`:e.signal.aborted||e.setActionStatus(`running`,t.message);break}}function vt(e){let t=e.occurrences[0]?.resource,n=t?.label||e.sourceText||`Translation string`;return{id:t?.id||e.key,type:t?.type||`Manifest`,label:n,scope:t?.type===`Canvas`?`canvas`:`root`}}function yt(e){let t=e.normalisedSourceText||e.sourceText||`Translation string`;return t.length>80?`${t.slice(0,77)}...`:t}function bt(e){if(e.aborted)throw Error(`Translation cancelled.`)}function xt(e){return e instanceof Error&&(e.name===`model_load_failed`||e.name===`worker_failed`)}function St(e){return e?`${Math.round(e/1024/1024)} MB`:`0 MB`}const Ct=`language`,wt=[{backgroundColor:`#1d4ed8`,textColor:`#ffffff`},{backgroundColor:`#047857`,textColor:`#ffffff`},{backgroundColor:`#b45309`,textColor:`#ffffff`},{backgroundColor:`#7c3aed`,textColor:`#ffffff`},{backgroundColor:`#be123c`,textColor:`#ffffff`},{backgroundColor:`#0f766e`,textColor:`#ffffff`},{backgroundColor:`#4338ca`,textColor:`#ffffff`},{backgroundColor:`#a16207`,textColor:`#ffffff`}];function Tt(){return{id:e.i,label:`Tag with languages`,summary:`Tag each canvas with its detected language`,section:`Translations`,order:35,resourceTypes:[`Manifest`],resumable:!0,supports:e=>{let t=e.vault.get(e.target);return t?.type===`Manifest`&&!!t?.items?.length},prepare:e=>Ot(Mt(e)),run:async e=>{let t=e.tasks.getAll(),n=e.tasks.getPending();if(e.setActionLabel(`Tagging canvas languages`),!t.length){let t=At(0);e.setActionStatus(`running`,`No canvases to tag`),e.setActionProgress({current:0,total:0,label:`No canvases`}),e.setResult(t),e.setResultsAvailable(!1);return}n.length&&(e.canvasProgress.setStatuses(n.map(e=>e.target).filter(e=>!!e&&e.type===`Canvas`),`queued`),await e.tasks.runEach(async(t,{index:n,total:r})=>{Ut(e.signal);let i=t.input,a=t.target?.id||i?.canvasId||t.id,o=Nt(e,a),s=Bt(o,i?.canvasLabel||a);if(e.appendActionLog(`Tagging language ${n+1}/${r}`,`info`,{canvasId:a,current:n+1,total:r}),!o){let t={canvasId:a,canvasLabel:s,reason:`Canvas not found`};return e.appendActionLog(`Skipped language tag`,`warn`,t),kt(t)}let c=Pt(e,o),l=Dt(c);if(!l){e.tags.removeTag({id:a,type:`Canvas`},Ct);let t={canvasId:a,canvasLabel:s,reason:`No supported language detected`};return e.appendActionLog(`Skipped language tag`,`warn`,t),kt(t)}let u=Et(l.language);e.tags.upsertTag({id:a,type:`Canvas`},u);let d={canvasId:a,canvasLabel:s,language:l.language,label:u.label,count:l.count,detectedLanguages:c.map(e=>e.language)};return e.appendActionLog(`Tagged canvas language`,`info`,{canvasId:a,language:l.language,label:u.label}),{taskStatus:`complete`,statusText:`Tagged as ${u.label}`,result:{type:`tagged`,tag:d}}},{progressLabel:(e,t,n)=>`Tagging languages ${t+1}/${n}`}));let r=jt(e.tasks.getAll());e.setActionStatus(`running`,`Tagged ${r.tagged}/${r.total} canvases`),e.setActionProgress({current:r.total,total:r.total,label:`Language tagging complete`}),e.appendActionLog(`Language tagging complete`,`info`,{total:r.total,tagged:r.tagged,skipped:r.skipped,counts:r.counts}),e.setResult(r),e.setResultsAvailable(!1)}}}function Et(e){let t=Vt(e);return{type:Ct,id:e,label:e,backgroundColor:t.backgroundColor,textColor:t.textColor}}function Dt(e){return e[0]||null}function Ot(e){return{version:1,tasks:e.map((e,t)=>{let n=e?.id||`canvas-${t+1}`,r=Bt(e,n);return{id:`canvas:${n}`,label:r,target:{id:n,type:`Canvas`,label:r,scope:`canvas`},input:{canvasId:n,canvasLabel:r},status:`queued`}})}}function kt(e){return{taskStatus:`skipped`,statusText:e.reason,result:{type:`skipped`,skip:e}}}function At(e){return{total:e,tagged:0,skipped:0,counts:{},tags:[],skippedCanvases:[]}}function jt(e){let t=At(e.length);for(let n of e){let e=n.result;if(e?.type===`tagged`){t.tags.push(e.tag),t.counts[e.tag.language]=(t.counts[e.tag.language]||0)+1;continue}if(e?.type===`skipped`){t.skippedCanvases.push(e.skip);continue}n.status===`error`&&t.skippedCanvases.push({canvasId:n.target?.id||n.id,canvasLabel:n.label||n.target?.id||n.id,reason:n.error?.message||`Language tagging failed`})}return t.tagged=t.tags.length,t.skipped=t.skippedCanvases.length,t}function Mt(e){let t=e.vault.get(e.target);return t?.items?(e.vault.get(t.items)||[]).filter(Boolean):[]}function Nt(e,t){return e.vault.get({id:t,type:`Canvas`})}function Pt(e,t){let n=It(e,t)||t,r=Ft(n),i=[],a=new Set;for(let e of r){let t=typeof e==`string`?e:``,n=S(t);!n||a.has(n)||(a.add(n),i.push({language:n,count:1,iiifLanguages:[t]}))}return Lt(i,n)}function Ft(e){let t=new Set;for(let n of(0,r.getAvailableLanguagesFromResource)(e))typeof n==`string`&&t.add(n);$(t,e?.label),$(t,e?.summary);let n=e?.requiredStatement;if(n&&!Array.isArray(n)&&($(t,n.label),$(t,n.value)),Array.isArray(e?.metadata))for(let n of e.metadata)$(t,n?.label),$(t,n?.value);return Array.from(t)}function It(e,t){if(!t?.id)return null;try{return e.vault.toPresentation3({id:t.id,type:`Canvas`})}catch{return null}}function Lt(e,t){if(e.length<2||Rt(t))return e;let n=zt(t);return e.map(e=>({...e,count:n.get(e.language)||e.count})).sort((t,r)=>{let i=(n.get(r.language)||0)-(n.get(t.language)||0);return i===0?e.findIndex(e=>e.language===t.language)-e.findIndex(e=>e.language===r.language):i})}function Rt(e){return!!(Array.isArray(e?.items)&&e.items.length||Array.isArray(e?.annotations)&&e.annotations.length)}function zt(e){let t=new Map;Q(t,e?.label),Q(t,e?.summary);let n=e?.requiredStatement;if(n&&!Array.isArray(n)&&(Q(t,n.label),Q(t,n.value)),Array.isArray(e?.metadata))for(let n of e.metadata)Q(t,n?.label),Q(t,n?.value);return t}function Q(e,t){if(!(!t||typeof t!=`object`||Array.isArray(t)))for(let[n,r]of Object.entries(t)){let t=S(n);if(!t||!Array.isArray(r))continue;let i=r.filter(e=>typeof e==`string`&&e.trim()).length;i&&e.set(t,(e.get(t)||0)+i)}}function $(e,t){if(!(!t||typeof t!=`object`||Array.isArray(t)))for(let[n,r]of Object.entries(t))Array.isArray(r)&&r.some(e=>typeof e==`string`&&e.trim())&&e.add(n)}function Bt(e,t){let n=e?.label;if(!n)return t;if(typeof n==`string`)return n;let r=Array.isArray(n.en)?n.en[0]:void 0;if(r)return r;let i=Object.keys(n)[0];return(i&&Array.isArray(n[i])?n[i][0]:void 0)||t}function Vt(e){return wt[Math.abs(Ht(e))%wt.length]||wt[0]}function Ht(e){let t=0;for(let n=0;n<e.length;n+=1)t=(t<<5)-t+e.charCodeAt(n),t|=0;return t}function Ut(e){if(e.aborted)throw Error(`Language tagging cancelled.`)}const Wt={id:e.t,label:`Translations`,icon:(0,o.jsx)(Gt,{}),render:()=>(0,o.jsx)(Kt,{})};function Gt(e){return(0,o.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,...e,children:(0,o.jsx)(`path`,{fill:`currentColor`,d:`M12.87 15.07l-2.54-2.51l.03-.03A17.52 17.52 0 0 0 14.07 6H17V4h-7V2H8v2H1v1.99h11.17A15.9 15.9 0 0 1 9 11.35A15.34 15.34 0 0 1 6.69 8h-2c.7 1.56 1.66 3.02 2.81 4.28l-5.09 5.02L3.83 18L9 12.9l3.22 3.22l.65-1.05M18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12m-2.62 7l1.62-4.33L19.12 17h-3.24z`})})}function Kt(){let t=(0,c.useConfig)(),n=(0,c.useAppResource)(),r=Yt(n),s=(0,c.usePluginRuntimeApi)().getSettings(e.o),u=(0,a.useMemo)(()=>v(t,s),[t,s]),[d,f]=(0,a.useState)(u),[m,ee]=(0,a.useState)(`missing`);(0,a.useEffect)(()=>{f(u)},[u.sourceLanguage,u.targetLanguage,u.runtime]);let h=(0,l.useVaultSelector)((e,t)=>O(t,n),[n.id,n.type]),g=(0,a.useMemo)(()=>h.map(e=>e.language),[h]),_=g.join(`|`);(0,a.useEffect)(()=>{!g.length||g.includes(d.sourceLanguage)||f(e=>g.includes(e.sourceLanguage)?e:y({...e,sourceLanguage:g[0]}))},[_,d.sourceLanguage]);let b=(0,l.useVaultSelector)((e,t)=>D(t,n,d),[n.id,n.type,d.sourceLanguage,d.targetLanguage,d.runtime,d.contentFilters.annotationBodies,d.contentFilters.canvasLabels]),S=(0,l.useVaultSelector)((e,t)=>D(t,r,d),[r.id,r.type,d.sourceLanguage,d.targetLanguage,d.runtime,d.contentFilters.annotationBodies,d.contentFilters.canvasLabels]),T=(0,l.useVaultSelector)((e,t)=>ne(t,n,d,g),[n.id,n.type,d.sourceLanguage,d.runtime,d.contentFilters.annotationBodies,d.contentFilters.canvasLabels,_]),te=(0,l.useVault)(),E=qt(),k=(0,c.useBackgroundActionsStoreApi)(),A=(0,a.useMemo)(()=>[{label:`Detected in manifest`,options:h.map(e=>({value:e.language,label:p(e.language)}))}],[h]),j=(0,a.useMemo)(()=>Qt(T),[T]),M=(0,a.useMemo)(()=>(t.i18n?.availableLanguages||[]).filter(e=>!x(e)&&!w(e)),[t.i18n?.availableLanguages]),N=(0,a.useMemo)(()=>on(b),[b]),P=(0,a.useMemo)(()=>on(S),[S]),F=E?.instance?.status===`preparing`||E?.instance?.status===`running`,I=C(d.sourceLanguage,d)===d.targetLanguage,L=!!E&&!F&&g.length>0&&!I&&N.missing>0,R=e=>{f(t=>y({...t,...e}))},re=(e,t)=>{f(n=>y({...n,contentFilters:{...n.contentFilters,[e]:t}}))},ie=()=>{!E||!L||(ct(E.instanceKey,d),(0,c.runBackgroundAction)({store:k,context:E.context}))},z=(0,a.useMemo)(()=>m===`current`?S:m===`all`?b:b.filter(e=>e.status===m),[b,S,m]),B=[{key:`all`,label:`All`,count:b.length},{key:`current`,label:`Current resource`,count:P.total,title:`Current ${r.type.toLowerCase()}`},{key:`missing`,label:`Missing`,count:N.missing},{key:`existing`,label:`Done`,count:N.existing},{key:`stale`,label:`Stale`,count:N.stale}];return(0,o.jsxs)(i.Sidebar,{children:[(0,o.jsx)(i.SidebarHeader,{title:`Translations`}),(0,o.jsxs)(i.SidebarContent,{className:`flex min-h-0 flex-col gap-0 p-0`,children:[(0,o.jsxs)(`div`,{className:`flex flex-col gap-2 border-b border-zinc-100 p-3`,children:[(0,o.jsxs)(`div`,{className:`flex items-end gap-1.5`,children:[(0,o.jsx)($t,{label:`From`,value:d.sourceLanguage,groups:A,emptyLabel:`No detected languages`,onChange:e=>R({sourceLanguage:e})}),(0,o.jsx)(`span`,{className:`mb-[7px] text-zinc-300 select-none`,children:`→`}),(0,o.jsx)($t,{label:`To`,value:d.targetLanguage,groups:j,onChange:e=>R({targetLanguage:e})}),(0,o.jsxs)(`label`,{className:`grid shrink-0 gap-1`,children:[(0,o.jsx)(`span`,{className:`text-[10px] font-medium uppercase tracking-wide text-zinc-400`,children:`Mode`}),(0,o.jsxs)(`select`,{className:`rounded border border-zinc-200 bg-white py-[5px] px-2 text-xs text-zinc-700 focus:border-me-primary-500 focus:outline-none focus:ring-2 focus:ring-me-primary-500/20`,value:d.runtime,onChange:e=>R({runtime:e.target.value}),children:[(0,o.jsx)(`option`,{value:`auto`,children:`Auto`}),(0,o.jsx)(`option`,{value:`webgpu`,children:`WebGPU`}),(0,o.jsx)(`option`,{value:`wasm`,children:`WASM`})]})]})]}),M.length?(0,o.jsxs)(`div`,{className:`rounded border border-amber-200 bg-amber-50 px-2.5 py-2 text-xs text-amber-800`,children:[`Unsupported languages: `,M.join(`, `)]}):null,g.length===0?(0,o.jsx)(`div`,{className:`rounded border border-amber-200 bg-amber-50 px-2.5 py-2 text-xs text-amber-800`,children:`No supported IIIF languages were detected in this manifest.`}):null,I?(0,o.jsx)(`div`,{className:`rounded border border-amber-200 bg-amber-50 px-2.5 py-2 text-xs text-amber-800`,children:`Choose different source and target languages.`}):null,(0,o.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,o.jsxs)(`div`,{className:`min-w-[7rem] flex-1 text-xs text-zinc-500`,children:[N.missing>0&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(`span`,{className:`font-semibold text-amber-600`,children:N.missing}),` missing`]}),N.missing>0&&N.existing>0&&(0,o.jsx)(`span`,{className:`text-zinc-300`,children:` · `}),N.existing>0&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(`span`,{className:`font-semibold text-green-600`,children:N.existing}),` done`]}),N.stale>0&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(`span`,{className:`text-zinc-300`,children:` · `}),(0,o.jsx)(`span`,{className:`font-semibold text-red-500`,children:N.stale}),` stale`]}),b.length===0&&(0,o.jsx)(`span`,{className:`text-zinc-400`,children:`No strings found`})]}),(0,o.jsx)(`button`,{type:`button`,className:`flex shrink-0 items-center gap-1.5 rounded border border-me-primary-500 bg-me-primary-500 px-2.5 py-1.5 text-xs font-medium text-white transition-opacity disabled:cursor-not-allowed disabled:opacity-40`,disabled:!L,onClick:ie,title:L?`Translate ${N.missing} missing string${N.missing===1?``:`s`}`:void 0,children:F?(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(an,{className:`h-3 w-3 animate-spin`}),`Running…`]}):(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(rn,{className:`h-3 w-3`}),`Translate`]})}),(0,o.jsx)(Zt,{filters:d.contentFilters,onChange:re})]})]}),b.length>0&&(0,o.jsx)(`div`,{className:`flex shrink-0 overflow-x-auto border-b border-zinc-100 bg-zinc-50/50`,children:B.filter(e=>e.key===`all`||e.key===`current`||e.count>0).map(e=>(0,o.jsxs)(`button`,{type:`button`,className:`flex shrink-0 items-center gap-1 whitespace-nowrap px-3 py-2 text-xs font-medium transition-colors ${m===e.key?`-mb-px border-b-2 border-me-primary-500 text-me-primary-600`:`text-zinc-500 hover:text-zinc-700`}`,title:e.title,onClick:()=>ee(e.key),children:[e.label,(0,o.jsx)(`span`,{className:`text-[10px] ${m===e.key?`text-me-primary-400`:`text-zinc-400`}`,children:e.count})]},e.key))}),(0,o.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:z.length?z.map(e=>(0,o.jsx)(Xt,{target:e,onSave:t=>{for(let n of e.occurrences)Ve({vault:te},n,t)}},e.key)):(0,o.jsx)(`div`,{className:`px-4 py-8 text-center text-xs text-zinc-400`,children:b.length===0?`No translatable strings found.`:m===`current`?`No current resource strings.`:`No ${m} strings.`})})]})]})}function qt(){return Jt(e.n)}function Jt(e){let t=(0,c.useAvailableBackgroundActions)();return(0,a.useMemo)(()=>t.flatMap(e=>e.actions).find(t=>t.definition.id===e)||null,[t,e])}function Yt(e){let t=(0,c.useEditingResource)(),n=(0,c.useEditingResourceStack)();return(0,a.useMemo)(()=>{let r=[t,...n].map(e=>e?.resource?.source).filter(e=>!!e?.id&&!!e.type),i=r.find(e=>e.type===`Canvas`),a=r.find(e=>e.type===`Manifest`),o=i||a||e;return{id:o.id,type:o.type}},[t,n,e])}function Xt({target:e,onSave:t}){let n=e.occurrences[0],r=sn(e.occurrences),[i,s]=(0,a.useState)(r),c=e.status===`existing`||e.status===`suggested`,[l,u]=(0,a.useState)(!c);return(0,a.useEffect)(()=>{s(r)},[r]),(0,o.jsxs)(`div`,{className:`border-b border-zinc-100 last:border-0 ${c&&!l?`opacity-60`:``}`,children:[(0,o.jsxs)(`button`,{type:`button`,className:`flex w-full min-w-0 items-center gap-2 px-3 py-2 text-left transition-colors hover:bg-zinc-50/80 focus:outline-none`,onClick:()=>u(e=>!e),children:[(0,o.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,o.jsx)(`span`,{className:`block truncate text-xs font-semibold text-zinc-800`,children:n?.resource.label||n?.resource.id}),(0,o.jsxs)(`span`,{className:`text-[11px] text-zinc-400`,children:[n?.propertyLabel||`String`,e.occurrences.length>1?` · ${e.occurrences.length}×`:``]})]}),(0,o.jsx)(tn,{status:e.status}),(0,o.jsx)(nn,{expanded:l})]}),l&&(0,o.jsxs)(`div`,{className:`px-3 pb-3`,children:[(0,o.jsxs)(`div`,{className:`mb-2 rounded border border-zinc-100 bg-zinc-50 px-2.5 py-2 text-xs leading-relaxed text-zinc-700`,children:[(0,o.jsx)(`div`,{className:`mb-1 text-[10px] font-semibold uppercase tracking-widest text-me-primary-400`,children:`Source`}),e.sourceText]}),(0,o.jsx)(`textarea`,{className:`w-full min-h-[2.5rem] [field-sizing:content] rounded border border-zinc-200 bg-white px-2 py-1.5 text-xs text-zinc-900 transition-colors placeholder:text-zinc-300 focus:border-me-primary-500 focus:outline-none focus:ring-2 focus:ring-me-primary-500/20`,value:i,placeholder:`${p(e.targetLanguage)} translation…`,onChange:e=>s(e.target.value),onBlur:()=>{i.trim()!==r.trim()&&t(i)}})]})]})}function Zt({filters:e,onChange:t}){return(0,o.jsxs)(`details`,{className:`relative shrink-0`,children:[(0,o.jsx)(`summary`,{className:`cursor-pointer list-none rounded border border-zinc-200 bg-white px-2.5 py-1.5 text-xs font-medium text-zinc-600 hover:border-zinc-300`,children:`Filters`}),(0,o.jsxs)(`div`,{className:`absolute right-0 z-20 mt-1 grid w-48 gap-2 rounded border border-zinc-200 bg-white p-2.5 text-xs text-zinc-700 shadow-lg`,children:[(0,o.jsxs)(`label`,{className:`flex items-center gap-2`,children:[(0,o.jsx)(`input`,{type:`checkbox`,className:`h-3.5 w-3.5 rounded border-zinc-300`,checked:e.annotationBodies,onChange:e=>t(`annotationBodies`,e.currentTarget.checked)}),`Annotation bodies`]}),(0,o.jsxs)(`label`,{className:`flex items-center gap-2`,children:[(0,o.jsx)(`input`,{type:`checkbox`,className:`h-3.5 w-3.5 rounded border-zinc-300`,checked:e.canvasLabels,onChange:e=>t(`canvasLabels`,e.currentTarget.checked)}),`Canvas labels`]})]})]})}function Qt(e){let t=new Set(e.map(e=>e.language)),n=[];return e.length&&n.push({label:`Detected in manifest`,options:e.map(e=>({value:e.language,label:`${p(e.language)} (${m(e)})`}))}),n.push({label:`All languages`,options:u.filter(e=>!t.has(e.code)).map(e=>({value:e.code,label:e.label}))}),n}function $t({label:e,value:t,groups:n,emptyLabel:r=`No languages available`,onChange:i}){let a=n.some(e=>e.options.length),s=n.some(e=>e.options.some(e=>e.value===t));return(0,o.jsxs)(`label`,{className:`grid min-w-0 flex-1 gap-1`,children:[(0,o.jsx)(`span`,{className:`text-[10px] font-medium uppercase tracking-wide text-zinc-400`,children:e}),(0,o.jsxs)(`select`,{className:`w-full rounded border border-zinc-200 bg-white py-[5px] px-2 text-xs text-zinc-800 focus:border-me-primary-500 focus:outline-none focus:ring-2 focus:ring-me-primary-500/20`,value:t,disabled:!a,onChange:e=>i(e.target.value),children:[s?null:(0,o.jsx)(`option`,{value:t,disabled:!0,children:a?p(t):r}),n.map(e=>e.options.length?(0,o.jsx)(`optgroup`,{label:e.label,children:e.options.map(e=>(0,o.jsx)(`option`,{value:e.value,children:e.label},e.value))},e.label):null)]})]})}const en={missing:{dot:`bg-amber-400`,text:`text-amber-700`,label:`Missing`},existing:{dot:`bg-green-400`,text:`text-green-700`,label:`Done`},stale:{dot:`bg-red-400`,text:`text-red-600`,label:`Stale`},suggested:{dot:`bg-sky-400`,text:`text-sky-700`,label:`Suggested`},skipped:{dot:`bg-zinc-300`,text:`text-zinc-500`,label:`Skipped`}};function tn({status:e}){let t=en[e]||en.skipped;return(0,o.jsxs)(`span`,{className:`flex shrink-0 items-center gap-1 text-[10px] font-medium ${t.text}`,children:[(0,o.jsx)(`span`,{className:`h-1.5 w-1.5 rounded-full ${t.dot}`}),t.label]})}function nn({expanded:e}){return(0,o.jsx)(`svg`,{className:`h-3.5 w-3.5 shrink-0 text-zinc-300 transition-transform ${e?`rotate-180`:``}`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,o.jsx)(`path`,{d:`M6 9l6 6 6-6`})})}function rn({className:e}){return(0,o.jsx)(`svg`,{className:e,viewBox:`0 0 24 24`,fill:`currentColor`,children:(0,o.jsx)(`path`,{d:`M8 5v14l11-7z`})})}function an({className:e}){return(0,o.jsxs)(`svg`,{className:e,viewBox:`0 0 24 24`,fill:`none`,children:[(0,o.jsx)(`circle`,{cx:`12`,cy:`12`,r:`9`,stroke:`currentColor`,strokeWidth:`2.5`,strokeOpacity:`0.3`}),(0,o.jsx)(`path`,{d:`M12 3a9 9 0 0 1 9 9`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`})]})}function on(e){return e.reduce((e,t)=>(e.total+=1,e[t.status]=(e[t.status]||0)+1,e),{total:0,missing:0,existing:0,suggested:0,skipped:0,stale:0})}function sn(e){for(let t of e)if(t.targetText?.trim())return t.targetText;return``}const cn=[Wt],ln=[lt(),Tt()];exports.M2M100_LANGUAGES=u,exports.TRANSLATIONS_LEFT_PANEL_ID=e.t,exports.TRANSLATION_ACTION_ID=e.n,exports.TRANSLATION_CACHE_KEY=e.r,exports.TRANSLATION_CONFIG_EVENT=q,exports.TRANSLATION_LANGUAGE_TAG_ACTION_ID=e.i,exports.TRANSLATION_LANGUAGE_TAG_TYPE=Ct,exports.TRANSLATION_MODEL_ID=e.a,exports.TRANSLATION_NONE_LANGUAGE=g,exports.TRANSLATION_PLUGIN_ID=e.o,exports.TranslationsIcon=Gt,exports.backgroundActions=ln,exports.collectDetectedManifestLanguages=O,exports.collectTranslationLanguageProgress=ne,exports.collectTranslationTargets=D,exports.createDisposeRequest=t.t,exports.createErrorResponse=t.n,exports.createEventEnvelope=t.r,exports.createLanguageTag=Et,exports.createPreloadRequest=t.i,exports.createSuccessResponse=t.a,exports.createTranslateRequest=t.o,exports.createTranslationBackgroundAction=lt,exports.createTranslationLanguageTagsBackgroundAction=Tt,exports.createTranslationPlan=ut,exports.createTranslationResultResponse=t.s,exports.createTranslationTargetKey=j,exports.createTranslationWorkerClient=Me,exports.default=n.t,exports.defaultTranslationContentFilters=_,exports.fingerprintTranslationText=A,exports.getDefaultRunOptions=v,exports.getLanguageLabel=p,exports.getLanguageMapSourceEntries=M,exports.getLanguageMapTargetText=F,exports.getLanguageProgressLabel=m,exports.getLanguageValueAt=N,exports.getLanguageValues=P,exports.getModelSourceLanguage=C,exports.getSupportedAvailableLanguages=b,exports.getWritableOccurrences=Be,exports.isHtmlTranslationValue=I,exports.isNoLanguageCode=w,exports.isSupportedM2M100Language=f,exports.leftPanels=cn,exports.normaliseLanguageCode=T,exports.normaliseRunOptions=y,exports.normaliseTranslationText=k,exports.openTranslationResults=Le,exports.queueTranslationRunOptions=ct,exports.readOccurrenceSourceText=He,exports.readOccurrenceTargetText=Ue,exports.renderTranslationConfigModal=Se,exports.renderTranslationResults=Re,exports.requestTranslationConfig=xe,exports.resolveSourceLanguage=S,exports.resolveSupportedLanguage=x,exports.selectPrimaryDetectedLanguage=Dt,exports.settings=n.n,exports.translatePreservingSimpleHtml=Oe,exports.translationsPanel=Wt,exports.writeTranslationForOccurrence=Ve;
|
|
1
|
+
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("./constants-BhZv2ySm.cjs"),t=require("./protocol-SEZnfU5j.cjs"),n=require("./plugin-BuUFaI9S.cjs");let r=require("@iiif/helpers/i18n"),i=require("@manifest-editor/components"),a=require("react"),o=require("react/jsx-runtime"),s=require("@iiif/helpers/vault/actions"),c=require("@manifest-editor/shell"),l=require("react-iiif-vault");const u=[{code:`af`,label:`Afrikaans`},{code:`am`,label:`Amharic`},{code:`ar`,label:`Arabic`},{code:`ast`,label:`Asturian`},{code:`az`,label:`Azerbaijani`},{code:`ba`,label:`Bashkir`},{code:`be`,label:`Belarusian`},{code:`bg`,label:`Bulgarian`},{code:`bn`,label:`Bengali`},{code:`br`,label:`Breton`},{code:`bs`,label:`Bosnian`},{code:`ca`,label:`Catalan; Valencian`},{code:`ceb`,label:`Cebuano`},{code:`cs`,label:`Czech`},{code:`cy`,label:`Welsh`},{code:`da`,label:`Danish`},{code:`de`,label:`German`},{code:`el`,label:`Greek`},{code:`en`,label:`English`},{code:`es`,label:`Spanish`},{code:`et`,label:`Estonian`},{code:`fa`,label:`Persian`},{code:`ff`,label:`Fulah`},{code:`fi`,label:`Finnish`},{code:`fr`,label:`French`},{code:`fy`,label:`Western Frisian`},{code:`ga`,label:`Irish`},{code:`gd`,label:`Gaelic; Scottish Gaelic`},{code:`gl`,label:`Galician`},{code:`gu`,label:`Gujarati`},{code:`ha`,label:`Hausa`},{code:`he`,label:`Hebrew`},{code:`hi`,label:`Hindi`},{code:`hr`,label:`Croatian`},{code:`ht`,label:`Haitian; Haitian Creole`},{code:`hu`,label:`Hungarian`},{code:`hy`,label:`Armenian`},{code:`id`,label:`Indonesian`},{code:`ig`,label:`Igbo`},{code:`ilo`,label:`Iloko`},{code:`is`,label:`Icelandic`},{code:`it`,label:`Italian`},{code:`ja`,label:`Japanese`},{code:`jv`,label:`Javanese`},{code:`ka`,label:`Georgian`},{code:`kk`,label:`Kazakh`},{code:`km`,label:`Central Khmer`},{code:`kn`,label:`Kannada`},{code:`ko`,label:`Korean`},{code:`lb`,label:`Luxembourgish; Letzeburgesch`},{code:`lg`,label:`Ganda`},{code:`ln`,label:`Lingala`},{code:`lo`,label:`Lao`},{code:`lt`,label:`Lithuanian`},{code:`lv`,label:`Latvian`},{code:`mg`,label:`Malagasy`},{code:`mk`,label:`Macedonian`},{code:`ml`,label:`Malayalam`},{code:`mn`,label:`Mongolian`},{code:`mr`,label:`Marathi`},{code:`ms`,label:`Malay`},{code:`my`,label:`Burmese`},{code:`ne`,label:`Nepali`},{code:`nl`,label:`Dutch; Flemish`},{code:`no`,label:`Norwegian`},{code:`ns`,label:`Northern Sotho`},{code:`oc`,label:`Occitan`},{code:`or`,label:`Oriya`},{code:`pa`,label:`Panjabi; Punjabi`},{code:`pl`,label:`Polish`},{code:`ps`,label:`Pushto; Pashto`},{code:`pt`,label:`Portuguese`},{code:`ro`,label:`Romanian; Moldavian; Moldovan`},{code:`ru`,label:`Russian`},{code:`sd`,label:`Sindhi`},{code:`si`,label:`Sinhala; Sinhalese`},{code:`sk`,label:`Slovak`},{code:`sl`,label:`Slovenian`},{code:`so`,label:`Somali`},{code:`sq`,label:`Albanian`},{code:`sr`,label:`Serbian`},{code:`ss`,label:`Swati`},{code:`su`,label:`Sundanese`},{code:`sv`,label:`Swedish`},{code:`sw`,label:`Swahili`},{code:`ta`,label:`Tamil`},{code:`th`,label:`Thai`},{code:`tl`,label:`Tagalog`},{code:`tn`,label:`Tswana`},{code:`tr`,label:`Turkish`},{code:`uk`,label:`Ukrainian`},{code:`ur`,label:`Urdu`},{code:`uz`,label:`Uzbek`},{code:`vi`,label:`Vietnamese`},{code:`wo`,label:`Wolof`},{code:`xh`,label:`Xhosa`},{code:`yi`,label:`Yiddish`},{code:`yo`,label:`Yoruba`},{code:`zh`,label:`Chinese`},{code:`zu`,label:`Zulu`}],d=new Set(u.map(e=>e.code));function f(e){return!!e&&d.has(e)}function p(e){return u.find(t=>t.code===e)?.label||e}function m(e){if(!e.total)return`0`;let t=e.existing+(e.suggested||0);return`${Math.round(t/e.total*100)}%`}const h=`none`,g={annotationBodies:!0,canvasLabels:!0};function _(e,t={}){let n=y(e),r=x(t.defaultSourceLanguage)||b(e?.i18n?.defaultLanguage)||n[0]||`en`,i=b(t.defaultSourceLanguage)||b(e?.i18n?.defaultLanguage)||n[0]||`en`;return v({sourceLanguage:r,modelSourceLanguage:i,targetLanguage:b(t.defaultTargetLanguage,i)||n.find(e=>e!==i)||(i===`nl`?`en`:`nl`),runtime:t.runtimePreference,writePolicy:`fill-missing`})}function v(e={}){let t=x(e.sourceLanguage)||`en`,n=S(t,e);return{sourceLanguage:t,modelSourceLanguage:n,targetLanguage:b(e.targetLanguage,n)||(n===`nl`?`en`:`nl`),runtime:T(e.runtime),writePolicy:`fill-missing`,contentFilters:E(e.contentFilters),currentResourceOnly:e.currentResourceOnly===!0}}function y(e){let t=e?.i18n?.availableLanguages||[],n=[];for(let e of t){let t=b(e);t&&!n.includes(t)&&n.push(t)}return n}function b(e,t){if(typeof e!=`string`)return null;let n=w(e);if(!n||n===t)return null;if(f(n))return n;let r=n.split(`-`)[0]||``;return r!==n&&r!==t&&f(r)?r:null}function x(e){return C(e)?h:b(e)}function S(e,t={}){return b(e)||b(t.modelSourceLanguage)||`en`}function C(e){return typeof e==`string`&&w(e)===`none`}function w(e){return e.trim().replace(/_/g,`-`).toLowerCase()}function T(e){return e===`webgpu`||e===`wasm`||e===`auto`?e:`auto`}function E(e){let t=e&&typeof e==`object`?e:{};return{annotationBodies:typeof t.annotationBodies==`boolean`?t.annotationBodies:g.annotationBodies,canvasLabels:typeof t.canvasLabels==`boolean`?t.canvasLabels:g.canvasLabels}}function D(e,t,n){let r={vault:e,options:n,occurrences:[],visited:new Set};F(r,t);let i=new Map;for(let e of r.occurrences){let t=k(e.sourceText);if(!t)continue;let n=te(t,e.sourceLanguage,e.targetLanguage,e.valueFormat),r=i.get(n);if(r){r.occurrences.push(e),r.status=ye(r.status,e.status);continue}i.set(n,{key:n,sourceLanguage:e.sourceLanguage,targetLanguage:e.targetLanguage,sourceText:e.sourceText,normalisedSourceText:t,valueFormat:e.valueFormat,occurrences:[e],status:e.status})}return Array.from(i.values()).sort((e,t)=>{let n=be(e.status)-be(t.status);return n===0?e.sourceText.localeCompare(t.sourceText):n})}function O(e,t){let n={vault:e,languages:new Map,visited:new Set};return I(n,t),Array.from(n.languages.values()).sort((e,t)=>xe(e).localeCompare(xe(t)))}function ee(e,t,n,r=O(e,t).map(e=>e.language)){return r.filter(e=>!!b(e)).map(r=>{let i={language:r,total:0,missing:0,existing:0,suggested:0,skipped:0,stale:0};for(let a of D(e,t,{...n,targetLanguage:r}))i.total+=1,i[a.status]+=1;return i})}function k(e){return e.replace(/\s+/g,` `).trim()}function A(e){return k(e)}function te(e,t,n,r){return`${t}:${n}:${r}:${e.toLowerCase()}`}function ne(e,t){if(!e)return[];if(typeof e==`string`)return e.trim()?[{sourceMapLanguage:t,sourceIndex:0,sourceText:e}]:[];let n=M(e,t);if(n.length)return n.map((e,n)=>({sourceMapLanguage:t,sourceIndex:n,sourceText:e})).filter(e=>k(e.sourceText));let r=b(t);if(r){let n=Object.keys(e).find(e=>e!==t&&b(e)===r);if(n)return M(e,n).map((e,t)=>({sourceMapLanguage:n,sourceIndex:t,sourceText:e})).filter(e=>k(e.sourceText))}return M(e,`none`).map((e,t)=>({sourceMapLanguage:`none`,sourceIndex:t,sourceText:e})).filter(e=>k(e.sourceText))}function j(e,t,n){return e?typeof e==`string`?t===`none`||n===0?e:``:M(e,t)[n]||``:``}function M(e,t){let n=e[t];return Array.isArray(n)?n.filter(e=>typeof e==`string`):[]}function N(e,t,n){let r=j(e,t,n);if(k(r))return r;if(!e||typeof e==`string`)return``;let i=b(t);if(i)for(let r of Object.keys(e)){if(r===t||b(r)!==i)continue;let a=j(e,r,n);if(k(a))return a}return M(e,t).find(e=>k(e))||``}function P(e){return/<\/?[a-z][\s\S]*>/i.test(e)}function F(e,t){if(!t?.id||!t.type)return;let n=`${t.type}:${t.id}`;if(e.visited.has(n))return;e.visited.add(n);let r=_e(e.vault,t);if(r){B(e,r),ae(e,r),oe(e,r);for(let t of H(r.provider,`Agent`))F(e,t);switch(r.type){case`Manifest`:for(let t of H(r.items,`Canvas`))F(e,t);for(let t of H(r.structures,`Range`))F(e,t);break;case`Canvas`:for(let t of[...H(r.items,`AnnotationPage`),...H(r.annotations,`AnnotationPage`)])F(e,t);break;case`Range`:for(let t of H(r.items))F(e,t);break;case`AnnotationPage`:for(let t of H(r.items,`Annotation`))F(e,t);break;case`Annotation`:se(e,r)}}}function I(e,t){if(!t?.id||!t.type)return;let n=`${t.type}:${t.id}`;if(e.visited.has(n))return;e.visited.add(n);let r=_e(e.vault,t);if(r){L(e,r);for(let t of H(r.provider,`Agent`))I(e,t);switch(r.type){case`Manifest`:for(let t of H(r.items,`Canvas`))I(e,t);for(let t of H(r.structures,`Range`))I(e,t);break;case`Canvas`:for(let t of[...H(r.items,`AnnotationPage`),...H(r.annotations,`AnnotationPage`)])I(e,t);break;case`Range`:for(let t of H(r.items))I(e,t);break;case`AnnotationPage`:for(let t of H(r.items,`Annotation`))I(e,t);break;case`Annotation`:for(let t of H(r.body,`ContentResource`))I(e,t);break;case`Choice`:for(let t of H(r.items,`ContentResource`))I(e,t)}}}function L(e,t){for(let n of R(t))typeof n==`string`&&ie(e,n,1)}function R(e){let t=new Set;try{for(let n of(0,r.getAvailableLanguagesFromResource)(e))typeof n==`string`&&t.add(n)}catch{}for(let n of re(e))t.add(n);return Array.from(t)}function re(e){let t=new Set;if(z(t,e?.label),z(t,e?.summary),typeof e?.language==`string`)t.add(e.language);else if(Array.isArray(e?.language))for(let n of e.language)typeof n==`string`&&t.add(n);let n=e?.requiredStatement;if(n&&!Array.isArray(n)&&(z(t,n.label),z(t,n.value)),Array.isArray(e?.metadata))for(let n of e.metadata)z(t,n?.label),z(t,n?.value);return Array.from(t)}function z(e,t){if(!(!t||typeof t==`string`))for(let[n,r]of Object.entries(t))Array.isArray(r)&&r.some(e=>typeof e==`string`&&k(e))&&e.add(n)}function ie(e,t,n){let r=x(t);if(!r)return;let i=w(t),a=e.languages.get(r);if(a){a.count+=n,a.iiifLanguages.includes(i)||a.iiifLanguages.push(i);return}e.languages.set(r,{language:r,count:n,iiifLanguages:[i]})}function B(e,t,n){let r=n||U(t);V(e,{path:{kind:`resource-language-map`,resource:r,property:`label`},resource:r,propertyLabel:`Label`,value:t.label}),V(e,{path:{kind:`resource-language-map`,resource:r,property:`summary`},resource:r,propertyLabel:`Summary`,value:t.summary})}function ae(e,t,n){let r=Array.isArray(t.metadata)?t.metadata:[],i=n||U(t);r.forEach((t,n)=>{V(e,{path:{kind:`metadata-language-map`,resource:i,metadataIndex:n,field:`label`},resource:i,propertyLabel:`Metadata ${n+1} label`,value:t?.label}),V(e,{path:{kind:`metadata-language-map`,resource:i,metadataIndex:n,field:`value`},resource:i,propertyLabel:`Metadata ${n+1} value`,value:t?.value})})}function oe(e,t,n){let r=t.requiredStatement;if(!r)return;let i=n||U(t);V(e,{path:{kind:`required-statement-language-map`,resource:i,field:`label`},resource:i,propertyLabel:`Required statement label`,value:r.label}),V(e,{path:{kind:`required-statement-language-map`,resource:i,field:`value`},resource:i,propertyLabel:`Required statement value`,value:r.value})}function se(e,t){let n={id:t.id,type:`Annotation`},r=le(e.vault,t);for(let{ref:t,resource:n}of r){let r={...t,label:ve(n,n.id||t.id)};B(e,n,r),ae(e,n,r),oe(e,n,r)}if(e.options.contentFilters?.annotationBodies===!1)return;let i=r.filter(e=>me(e.resource));for(let{ref:t,resource:r,choice:a}of i){if(!pe(r,e.options.sourceLanguage))continue;let o=typeof r.value==`string`?r.value:``;if(!k(o))continue;let s=de(i.filter(e=>fe(a,e)),e.options.targetLanguage),c=typeof s?.resource.value==`string`?s.resource.value:``;e.occurrences.push({id:ce({kind:`textual-body`,annotation:n,body:t,choice:a,targetBody:s?{id:s.ref.id,type:`ContentResource`}:void 0}),path:{kind:`textual-body`,annotation:n,body:t,choice:a,targetBody:s?{id:s.ref.id,type:`ContentResource`}:void 0},resource:{id:r.id||t.id,type:`ContentResource`,label:ve(r,r.id||t.id)},propertyLabel:`Annotation body`,sourceLanguage:e.options.sourceLanguage,sourceMapLanguage:ge(r.language,e.options.sourceLanguage),targetLanguage:e.options.targetLanguage,sourceIndex:0,sourceText:o,targetText:c,valueFormat:r.format===`text/html`||P(o)?`html`:`text`,sourceFingerprint:A(o),status:k(c)?`existing`:`missing`})}}function V(e,t){if(t.path.kind===`resource-language-map`&&t.path.resource.type===`Canvas`&&t.path.property===`label`&&e.options.contentFilters?.canvasLabels===!1)return;let n=ne(t.value,e.options.sourceLanguage);for(let r of n){let n=N(t.value,e.options.targetLanguage,r.sourceIndex);e.occurrences.push({id:ce(t.path,r.sourceMapLanguage,r.sourceIndex),path:t.path,resource:t.resource,propertyLabel:t.propertyLabel,sourceLanguage:e.options.sourceLanguage,sourceMapLanguage:r.sourceMapLanguage,targetLanguage:e.options.targetLanguage,sourceIndex:r.sourceIndex,sourceText:r.sourceText,targetText:n,valueFormat:P(r.sourceText)?`html`:`text`,sourceFingerprint:A(r.sourceText),status:k(n)?`existing`:`missing`})}}function ce(e,t=`text`,n=0){switch(e.kind){case`resource-language-map`:return`${e.resource.type}:${e.resource.id}:${e.property}:${t}:${n}`;case`metadata-language-map`:return`${e.resource.type}:${e.resource.id}:metadata:${e.metadataIndex}:${e.field}:${t}:${n}`;case`required-statement-language-map`:return`${e.resource.type}:${e.resource.id}:requiredStatement:${e.field}:${t}:${n}`;case`textual-body`:return`${e.annotation.id}:body:${e.choice?.id||`annotation`}:${e.body.id}`}}function le(e,t){let n=[];for(let r of H(t.body,`ContentResource`))ue(e,r,n);return n}function ue(e,t,n,r){let i=_e(e,t);if(i&&(n.push({ref:t,resource:i,choice:r}),i.type===`Choice`))for(let r of H(i.items,`ContentResource`))ue(e,r,n,t)}function de(e,t){return e.find(({resource:e})=>!me(e)||!k(String(e.value||``))?!1:he(e.language,t))}function fe(e,t){return(e?.id||``)===(t.choice?.id||``)}function pe(e,t){return!me(e)||typeof e.value!=`string`?!1:!e.language||he(e.language,t)}function me(e){return e?.type===`TextualBody`||e?.type===`Text`}function he(e,t){let n=e=>e===t||typeof e==`string`&&b(e)===b(t);return Array.isArray(e)?e.some(n):n(e)}function ge(e,t){return Array.isArray(e)?typeof e[0]==`string`?e[0]:t:typeof e==`string`?e:t}function H(e,t){return(Array.isArray(e)?e:e?[e]:[]).map(e=>{if(!e?.id)return null;let n=t===`ContentResource`&&(e.type===`TextualBody`||e.type===`Text`)?t:e.type||t;return{id:e.id,type:n}}).filter(e=>!!e?.id&&!!e.type)}function _e(e,t){let n=e.get(t,{skipSelfReturn:!1});return n&&typeof n==`object`?n:null}function U(e){return{id:e.id,type:e.type,label:ve(e,e.id||e.type)}}function ve(e,t){if(!e?.label)return t;if(typeof e.label==`string`)return e.label;let n=e.label.en?.find?.(e=>e?.trim());if(n)return n;for(let t of Object.keys(e.label)){let n=e.label[t]?.find?.(e=>e?.trim());if(n)return n}return t}function ye(e,t){return e===`missing`||t===`missing`?`missing`:e===`stale`||t===`stale`?`stale`:e===`skipped`||t===`skipped`?`skipped`:e===`suggested`||t===`suggested`?`suggested`:`existing`}function be(e){switch(e){case`missing`:return 0;case`stale`:return 1;case`skipped`:return 2;case`suggested`:return 3;case`existing`:return 4}}function xe(e){return e.language}const W=`@manifest-editor/translation:config`;function Se(e){return new Promise(t=>{if(e.signal?.aborted||typeof window>`u`){t(!1);return}let n=!1,r=r=>{n||(n=!0,e.signal?.removeEventListener(`abort`,i),t(r))},i=()=>r(!1);e.signal?.addEventListener(`abort`,i,{once:!0}),window.dispatchEvent(new CustomEvent(W,{detail:{...e,resolve:r}}))})}function Ce(e){return(0,o.jsx)(we,{actionId:e})}function we({actionId:t}){let[n,r]=(0,a.useState)(null),[s,c]=(0,a.useState)(v({}));(0,a.useEffect)(()=>{let e=e=>{let n=e.detail;n?.actionId===t&&(r(n),c(v(n.defaults)))};return window.addEventListener(W,e),()=>window.removeEventListener(W,e)},[t]),(0,a.useEffect)(()=>{if(!n?.signal)return;if(n.signal.aborted){r(null);return}let e=()=>r(null);return n.signal.addEventListener(`abort`,e,{once:!0}),()=>n.signal?.removeEventListener(`abort`,e)},[n]);let l=n?.detectedLanguages||[],u=(0,a.useMemo)(()=>l.map(e=>e.language),[l]),d=u.join(`|`);(0,a.useEffect)(()=>{!u.length||u.includes(s.sourceLanguage)||c(e=>u.includes(e.sourceLanguage)?e:v({...e,sourceLanguage:u[0]}))},[d,s.sourceLanguage]);let f=(0,a.useMemo)(()=>n?.getTargets?.(s)||n?.targets||[],[n,s]),m=(0,a.useMemo)(()=>f.filter(e=>e.status===`missing`).length,[f]),h=(0,a.useMemo)(()=>n?.getTargetLanguageProgress?.(s)||[],[n,s]),g=(0,a.useMemo)(()=>[{label:`Detected in manifest`,options:l.map(e=>({value:e.language,label:p(e.language)}))}],[l]),_=(0,a.useMemo)(()=>Ee(h),[h]),y=(e,t)=>{c(n=>v({...n,contentFilters:{...n.contentFilters,[e]:t}}))};if(!n)return null;let b=e=>{n.resolve(e!==!1&&v(e)),r(null)},x=S(s.sourceLanguage,s)===s.targetLanguage,C=s.currentResourceOnly===!0&&!!n.currentResource,w=u.length===0||x||m===0;return(0,o.jsx)(i.Modal,{title:`Run translations`,onClose:()=>b(!1),className:`max-w-xl`,actions:(0,o.jsxs)(`div`,{className:`flex gap-2`,children:[(0,o.jsx)(`button`,{type:`button`,className:`rounded border border-zinc-200 bg-white px-2.5 py-1.5 text-xs font-medium text-zinc-600 hover:border-zinc-300`,onClick:()=>b(!1),children:`Cancel`}),(0,o.jsx)(`button`,{type:`button`,className:`rounded border border-me-primary-500 bg-me-primary-500 px-2.5 py-1.5 text-xs font-medium text-white disabled:cursor-not-allowed disabled:opacity-40`,disabled:w,onClick:()=>b(s),children:`Run translation`})]}),children:(0,o.jsxs)(`div`,{className:`flex flex-col gap-3 p-3 text-sm text-zinc-700`,children:[(0,o.jsxs)(`div`,{className:`flex flex-col gap-2 border-b border-zinc-100 pb-3`,children:[(0,o.jsxs)(`div`,{className:`grid grid-cols-[minmax(0,1fr)_auto_minmax(0,1fr)] items-end gap-1.5 sm:grid-cols-[minmax(0,1fr)_auto_minmax(0,1fr)_7rem]`,children:[(0,o.jsx)(De,{label:`From`,value:s.sourceLanguage,groups:g,emptyLabel:`No detected languages`,onChange:e=>c(t=>v({...t,sourceLanguage:e}))}),(0,o.jsx)(`span`,{className:`mb-[7px] text-zinc-300 select-none`,children:`→`}),(0,o.jsx)(De,{label:`To`,value:s.targetLanguage,groups:_,onChange:e=>c(t=>v({...t,targetLanguage:e}))}),(0,o.jsxs)(`label`,{className:`col-span-3 grid shrink-0 gap-1 sm:col-span-1`,children:[(0,o.jsx)(`span`,{className:`text-[10px] font-medium uppercase tracking-wide text-zinc-400`,children:`Mode`}),(0,o.jsxs)(`select`,{className:`rounded border border-zinc-200 bg-white py-[5px] px-2 text-xs text-zinc-700 focus:border-me-primary-500 focus:outline-none focus:ring-2 focus:ring-me-primary-500/20`,value:s.runtime,onChange:e=>c(t=>v({...t,runtime:e.target.value})),children:[(0,o.jsx)(`option`,{value:`auto`,children:`Auto`}),(0,o.jsx)(`option`,{value:`webgpu`,children:`WebGPU`}),(0,o.jsx)(`option`,{value:`wasm`,children:`WASM`})]})]})]}),(0,o.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,o.jsxs)(`label`,{className:`flex items-center gap-2 text-xs ${n.currentResource?`text-zinc-600`:`text-zinc-300`}`,title:n.currentResource?.label||n.currentResource?.id,children:[(0,o.jsx)(`input`,{type:`checkbox`,className:`h-3.5 w-3.5 rounded border-zinc-300`,checked:C,disabled:!n.currentResource,onChange:e=>c(t=>v({...t,currentResourceOnly:e.currentTarget.checked}))}),`Current resource`]}),(0,o.jsx)(Te,{filters:s.contentFilters,onChange:y})]})]}),u.length===0?(0,o.jsx)(`div`,{className:`rounded border border-amber-200 bg-amber-50 px-2.5 py-2 text-xs text-amber-800`,children:`No supported IIIF languages were detected in this manifest.`}):null,x?(0,o.jsx)(`div`,{className:`rounded border border-amber-200 bg-amber-50 px-2.5 py-2 text-xs text-amber-800`,children:`Select different source and target languages.`}):null,(0,o.jsxs)(`div`,{className:`rounded border border-zinc-200 bg-zinc-50 px-2.5 py-2`,children:[(0,o.jsxs)(`div`,{className:`text-xs text-zinc-500`,children:[m>0?(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(`span`,{className:`font-semibold text-amber-600`,children:m}),` missing`]}):(0,o.jsx)(`span`,{className:`text-zinc-400`,children:`No missing strings`}),f.length>0?(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(`span`,{className:`text-zinc-300`,children:` · `}),(0,o.jsx)(`span`,{children:f.length}),` total`]}):null]}),(0,o.jsxs)(`div`,{className:`mt-1 text-xs text-zinc-500`,children:[`Missing target-language values will be filled using `,e.a,`. Existing target values are left unchanged.`]})]})]})})}function Te({filters:e,onChange:t}){return(0,o.jsxs)(`details`,{className:`relative shrink-0`,children:[(0,o.jsx)(`summary`,{className:`cursor-pointer list-none rounded border border-zinc-200 bg-white px-2.5 py-1.5 text-xs font-medium text-zinc-600 hover:border-zinc-300`,children:`Filters`}),(0,o.jsxs)(`div`,{className:`absolute right-0 z-20 mt-1 grid w-48 gap-2 rounded border border-zinc-200 bg-white p-2.5 text-xs text-zinc-700 shadow-lg`,children:[(0,o.jsxs)(`label`,{className:`flex items-center gap-2`,children:[(0,o.jsx)(`input`,{type:`checkbox`,className:`h-3.5 w-3.5 rounded border-zinc-300`,checked:e.annotationBodies,onChange:e=>t(`annotationBodies`,e.currentTarget.checked)}),`Annotation bodies`]}),(0,o.jsxs)(`label`,{className:`flex items-center gap-2`,children:[(0,o.jsx)(`input`,{type:`checkbox`,className:`h-3.5 w-3.5 rounded border-zinc-300`,checked:e.canvasLabels,onChange:e=>t(`canvasLabels`,e.currentTarget.checked)}),`Canvas labels`]})]})]})}function Ee(e){let t=new Set(e.map(e=>e.language)),n=[];return e.length&&n.push({label:`Detected in manifest`,options:e.map(e=>({value:e.language,label:`${p(e.language)} (${m(e)})`}))}),n.push({label:`All languages`,options:u.filter(e=>!t.has(e.code)).map(e=>({value:e.code,label:e.label}))}),n}function De({label:e,value:t,groups:n,emptyLabel:r=`No languages available`,onChange:i}){let a=n.some(e=>e.options.length),s=n.some(e=>e.options.some(e=>e.value===t));return(0,o.jsxs)(`label`,{className:`grid min-w-0 flex-1 gap-1`,children:[(0,o.jsx)(`span`,{className:`text-[10px] font-medium uppercase tracking-wide text-zinc-400`,children:e}),(0,o.jsxs)(`select`,{className:`w-full rounded border border-zinc-200 bg-white py-[5px] px-2 text-xs text-zinc-800 focus:border-me-primary-500 focus:outline-none focus:ring-2 focus:ring-me-primary-500/20`,value:t,disabled:!a,onChange:e=>i(e.target.value),children:[s?null:(0,o.jsx)(`option`,{value:t,disabled:!0,children:a?p(t):r}),n.map(e=>e.options.length?(0,o.jsx)(`optgroup`,{label:e.label,children:e.options.map(e=>(0,o.jsx)(`option`,{value:e.value,children:e.label},e.value))},e.label):null)]})]})}const Oe=new Set([`br`,`hr`,`img`,`input`,`meta`,`link`,`area`,`base`,`col`,`embed`,`param`,`source`,`track`,`wbr`]);async function ke(e,t){let n=Ae(e);if(!n||!je(n))return null;let r=[];for(let e of n){if(e.type===`tag`){r.push(e.value);continue}if(!e.value.trim()){r.push(e.value);continue}let n=e.value.match(/^\s*/)?.[0]||``,i=e.value.match(/\s*$/)?.[0]||``,a=e.value.trim();r.push(`${n}${await t(a)}${i}`)}return r.join(``)}function Ae(e){let t=[],n=/<\/?[^>]+>/g,r=0,i;for(;i=n.exec(e);){if(i.index>r){let n=e.slice(r,i.index);if(/[<>]/.test(n))return null;t.push({type:`text`,value:n})}let n=i[0];if(!/^<\/?[A-Za-z][A-Za-z0-9:-]*(\s+[^<>]*)?\/?>$/.test(n))return null;t.push({type:`tag`,value:n}),r=i.index+n.length}if(r<e.length){let n=e.slice(r);if(/[<>]/.test(n))return null;t.push({type:`text`,value:n})}return t.length?t:null}function je(e){let t=[];for(let n of e){if(n.type!==`tag`)continue;let e=n.value.match(/^<\/\s*([A-Za-z][A-Za-z0-9:-]*)\s*>$/);if(e){if(t.pop()!==e[1].toLowerCase())return!1;continue}let r=n.value.match(/^<\s*([A-Za-z][A-Za-z0-9:-]*)/);if(!r)return!1;let i=r[1].toLowerCase();n.value.endsWith(`/>`)||Oe.has(i)||t.push(i)}return t.length===0}function Me(){return typeof crypto<`u`&&`randomUUID`in crypto?crypto.randomUUID():`translation-${Date.now()}-${Math.random().toString(16).slice(2)}`}function Ne(e={}){let n=e.worker??Pe(e.workerUrl),r=new Set,i=new Map,a=!1,o=e=>{for(let t of r)t(e)},s=e=>{for(let t of i.values())t.reject(e);i.clear()};n.addEventListener(`message`,e=>{let t=e.data;if(t.kind===`event`){o(t.payload);return}let n=i.get(t.requestId);if(n){if(i.delete(t.requestId),t.kind===`error`){let e=Error(t.payload.message);e.name=t.payload.code,n.reject(e);return}n.resolve(t.payload)}}),n.addEventListener(`error`,e=>{let t=Error(e.message||`The translation worker crashed.`);t.name=`worker_failed`,o({type:`error`,code:`worker_failed`,message:t.message,recoverable:!1}),s(t)});let c=(e,r)=>{if(a)return Promise.reject(Error(`The translation worker client has been terminated.`));let o=Me(),s=e===`translate`?t.o(o,r.payload):e===`dispose`?t.t(o):t.i(o,r.payload);return new Promise((t,r)=>{i.set(o,{command:e,resolve:e=>t(e),reject:r}),n.postMessage(s)})};return{async preload(e){await c(`preload`,{payload:e})},translate(e){return c(`translate`,{payload:e})},onEvent(e){return r.add(e),()=>{r.delete(e)}},terminate(){a||(a=!0,n.postMessage(t.t(Me())),n.terminate(),s(Error(`The translation worker client has been terminated.`)))}}}function Pe(e){try{return new Worker(Fe(e),{type:`module`})}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Unable to start the translation worker. If you are using @manifest-editor/translation from a bundled package, provide a public workerUrl or pass a Worker instance. ${t}`)}}function Fe(e){return e instanceof URL?e:e?new URL(e,globalThis.location?.href||require("url").pathToFileURL(__filename).href):new URL(Ie(),require("url").pathToFileURL(__filename).href)}function Ie(){return`./translation-worker.js`}const G=`@manifest-editor/translation:results`;function Le(e,t){typeof window>`u`||window.dispatchEvent(new CustomEvent(G,{detail:{actionId:e,result:t}}))}function Re(e){return(0,o.jsx)(ze,{actionId:e})}function ze({actionId:e}){let[t,n]=(0,a.useState)(null);return(0,a.useEffect)(()=>{let t=t=>{let r=t.detail;r?.actionId===e&&r.result&&n(r.result)};return window.addEventListener(G,t),()=>window.removeEventListener(G,t)},[e]),t?(0,o.jsx)(i.Modal,{title:`Translation results`,onClose:()=>n(null),className:`max-w-4xl`,children:(0,o.jsxs)(`div`,{className:`flex min-h-0 flex-col gap-4 p-4 text-sm text-zinc-700`,children:[(0,o.jsxs)(`div`,{className:`grid grid-cols-3 gap-2 sm:grid-cols-6`,children:[(0,o.jsx)(K,{label:`Strings`,value:t.total}),(0,o.jsx)(K,{label:`Translated`,value:t.translated}),(0,o.jsx)(K,{label:`Applied`,value:t.applied}),(0,o.jsx)(K,{label:`Existing`,value:t.existing}),(0,o.jsx)(K,{label:`Stale`,value:t.stale}),(0,o.jsx)(K,{label:`Skipped`,value:t.skipped+t.errors})]}),t.translations.length?(0,o.jsxs)(`div`,{className:`rounded border border-zinc-200`,children:[(0,o.jsx)(`div`,{className:`border-b border-zinc-200 bg-zinc-50 px-3 py-2 font-medium`,children:`Translated strings`}),(0,o.jsx)(`div`,{className:`max-h-64 overflow-auto`,children:t.translations.map(e=>(0,o.jsxs)(`div`,{className:`grid gap-1.5 border-b border-zinc-100 px-3 py-2.5 last:border-0`,children:[(0,o.jsx)(`div`,{className:`border-l-2 border-zinc-200 pl-2.5 text-[11px] italic leading-relaxed text-zinc-400 line-clamp-2`,children:e.sourceText}),(0,o.jsx)(`div`,{className:`text-xs font-medium text-zinc-900 line-clamp-2`,children:e.translationText}),(0,o.jsxs)(`div`,{className:`text-[11px] text-zinc-400`,children:[e.applied,` occurrence`,e.applied===1?``:`s`]})]},e.key))})]}):null,t.skippedTargets.length?(0,o.jsxs)(`div`,{className:`rounded border border-zinc-200`,children:[(0,o.jsx)(`div`,{className:`border-b border-zinc-200 bg-zinc-50 px-3 py-2 font-medium`,children:`Skipped strings`}),(0,o.jsx)(`div`,{className:`max-h-56 overflow-auto`,children:t.skippedTargets.map(e=>(0,o.jsxs)(`div`,{className:`grid gap-1 border-b border-zinc-100 px-3 py-2 last:border-0`,children:[(0,o.jsx)(`div`,{className:`line-clamp-2 font-medium text-zinc-900`,children:e.sourceText}),(0,o.jsx)(`div`,{className:`text-zinc-500`,children:e.reason})]},`${e.key}-${e.reason}`))})]}):null]})}):null}function K({label:e,value:t}){return(0,o.jsxs)(`div`,{className:`rounded border border-zinc-200 bg-zinc-50 px-2.5 py-2`,children:[(0,o.jsx)(`div`,{className:`text-base font-semibold text-zinc-900`,children:t}),(0,o.jsx)(`div`,{className:`text-[10px] uppercase tracking-wide text-zinc-400`,children:e})]})}function q(e,t){let n=[],r=[],i=[];for(let a of t.occurrences){if(A(Be(e.vault,a))!==a.sourceFingerprint){i.push(a);continue}if(k(qe(e.vault,a))){r.push(a);continue}n.push(a)}return{writable:n,existing:r,stale:i}}function J(e,t,n){let r=n.trim();if(!r)return!1;switch(t.path.kind){case`resource-language-map`:return He(e.vault,t.path.resource,t.path.property,t,r),!0;case`metadata-language-map`:return Ue(e.vault,t.path,t,r),!0;case`required-statement-language-map`:return We(e.vault,t.path,t,r),!0;case`textual-body`:return Ge(e.vault,t,r),!0}}function Be(e,t){if(t.path.kind===`textual-body`){let n=Y(e,t.path.body);return typeof n?.value==`string`?n.value:``}return j(Ke(e,t.path),t.sourceMapLanguage,t.sourceIndex)}function Ve(e,t){if(t.path.kind===`textual-body`){let n=Xe(e,t);return typeof n?.value==`string`?n.value:``}return j(Ke(e,t.path),t.targetLanguage,t.sourceIndex)}function He(e,t,n,r,i){let a=Je(Y(e,t)?.[n],r.sourceMapLanguage,r.sourceText,r.targetLanguage,r.sourceIndex,i);e.modifyEntityField(t,n,a)}function Ue(e,t,n,r){let i=Y(e,t.resource),a=Array.isArray(i?.metadata)?[...i.metadata]:[],o=a[t.metadataIndex]||{label:{},value:{}};a[t.metadataIndex]={...o,[t.field]:Je(o[t.field],n.sourceMapLanguage,n.sourceText,n.targetLanguage,n.sourceIndex,r)},e.modifyEntityField(t.resource,`metadata`,a)}function We(e,t,n,r){let i=Y(e,t.resource)?.requiredStatement||{},a={label:{none:[``]},value:{none:[``]},...i,[t.field]:Je(i[t.field],n.sourceMapLanguage,n.sourceText,n.targetLanguage,n.sourceIndex,r)};e.modifyEntityField(t.resource,`requiredStatement`,a)}function Ge(e,t,n){if(t.path.kind!==`textual-body`)return;let r=Xe(e,t);if(r?.id){e.modifyEntityField({id:r.id,type:`ContentResource`},`value`,n),e.modifyEntityField({id:r.id,type:`ContentResource`},`language`,t.targetLanguage);return}let i=Y(e,t.path.body),a=tt(t),o={id:a,type:`ContentResource`};if(t.path.choice){e.dispatch((0,s.importEntities)({entities:{ContentResource:{[a]:{id:a,type:`TextualBody`,format:i?.format||(t.valueFormat===`html`?`text/html`:`text/plain`),value:n,language:t.targetLanguage}}}}));let r=Y(e,t.path.choice),c=Array.isArray(r?.items)?r.items:[];e.modifyEntityField(t.path.choice,`items`,[...c,o]);return}e.dispatch((0,s.batchActions)({actions:[(0,s.importEntities)({entities:{ContentResource:{[a]:{id:a,type:`TextualBody`,format:i?.format||(t.valueFormat===`html`?`text/html`:`text/plain`),value:n,language:t.targetLanguage}}}}),(0,s.addReference)({id:t.path.annotation.id,type:`Annotation`,key:`body`,reference:o})]}))}function Ke(e,t){if(t.kind===`textual-body`)return null;let n=Y(e,t.resource);if(!n)return null;switch(t.kind){case`resource-language-map`:return n[t.property];case`metadata-language-map`:return n.metadata?.[t.metadataIndex]?.[t.field];case`required-statement-language-map`:return n.requiredStatement?.[t.field]}}function qe(e,t){return t.path.kind===`textual-body`?Ve(e,t):N(Ke(e,t.path),t.targetLanguage,t.sourceIndex)}function Je(e,t,n,r,i,a){let o=Ye(e,t,n),s=[...o[r]||[]];for(;s.length<=i;)s.push(``);return s[i]=a,o[r]=s,o}function Ye(e,t,n){return e?typeof e==`string`?{[t]:[e]}:Object.fromEntries(Object.entries(e).map(([e,t])=>[e,Array.isArray(t)?[...t]:[]])):{[t]:[n]}}function Xe(e,t){if(t.path.kind!==`textual-body`)return null;if(t.path.targetBody){let n=Y(e,t.path.targetBody);if(n)return n}let n=t.path.body.id,r=Y(e,t.path.annotation),i=t.path.choice?.id||``;return Ze(e,r).filter(e=>(e.choice?.id||``)===i).find(({resource:e,ref:r})=>r.id===n||e?.id===n||e?.type!==`TextualBody`&&e?.type!==`Text`?!1:nt(e.language,t.targetLanguage))?.resource||null}function Ze(e,t){let n=[];for(let r of et(t?.body,`ContentResource`))Qe(e,r,n);return n.filter(({resource:e})=>$e(e))}function Qe(e,t,n,r){let i=Y(e,t);if(i&&(n.push({ref:t,resource:i,choice:r}),i.type===`Choice`))for(let r of et(i.items,`ContentResource`))Qe(e,r,n,t)}function $e(e){return e?.type===`TextualBody`||e?.type===`Text`}function et(e,t){return(Array.isArray(e)?e:e?[e]:[]).map(e=>{if(!e?.id)return null;let n=t===`ContentResource`&&(e.type===`TextualBody`||e.type===`Text`)?t:e.type||t;return{id:e.id,type:n}}).filter(e=>!!e?.id&&!!e.type)}function tt(e){let t=e.path.kind===`textual-body`?e.path.annotation.id:e.resource.id,n=e.path.kind===`textual-body`?e.path.body.id:e.id;return`${rt(t)}/translation/${encodeURIComponent(e.targetLanguage)}/${it(n)}`}function nt(e,t){let n=e=>e===t||typeof e==`string`&&b(e)===b(t);return Array.isArray(e)?e.some(n):n(e)}function Y(e,t){if(!t?.id||!t.type)return null;let n=e.get(t,{skipSelfReturn:!1});return n&&typeof n==`object`?n:null}function rt(e){return e.endsWith(`/`)?e.slice(0,-1):e}function it(e){let t=5381;for(let n=0;n<e.length;n+=1)t=t*33^e.charCodeAt(n);return(t>>>0).toString(36)}const at=new Map;function ot(e,t){at.set(e,v(t))}function st(t={}){let n=t.createClient||(e=>Ne({workerUrl:typeof e?.workerUrl==`string`&&e.workerUrl.trim()?e.workerUrl:void 0})),r=t.collectTargets||D,i=t.requestConfig||lt,a=t.translateHtml||ke,s=null,c,l=e=>typeof e?.workerUrl==`string`&&e.workerUrl.trim()?e.workerUrl.trim():void 0,u=(e=s)=>{e&&(e.terminate(),s===e&&(s=null,c=void 0))},d=e=>{let t=l(e);return s&&c!==t&&u(s),s||(s=n(e),c=t),s};return{id:e.n,label:`Run translation`,summary:`Translate missing manifest strings with M2M100`,section:`Translations`,order:30,resourceTypes:[`Manifest`],resumable:!0,render:e=>(0,o.jsxs)(o.Fragment,{children:[Ce(e.definition.id),Re(e.definition.id)]}),onResults:e=>Le(e.definition.id,e.instance?.result),supports:e=>e.vault.get(e.target)?.type===`Manifest`,prepare:async t=>{let n=t.plugins.getSettings(e.o),a=_(t.config,n),o=r(t.vault,X(t,a),a),s=at.get(t.instanceKey)||await i(t,o,a);if(at.delete(t.instanceKey),s===!1)return!1;let c=v(s);return ct(r(t.vault,X(t,c),c),c)},run:async t=>{let n=ut(t.plan),r=v(n?.options||_(t.config)),i=t.tasks.getAll(),o=t.tasks.getPending(),s={vault:t.vault};if(t.setActionLabel(`Running translation`),!i.length)return t.setActionStatus(`running`,`No translatable strings found`),t.setActionProgress({current:0,total:0,label:`No strings`}),pt(0);if(o.length){let n=t.plugins.getSettings(e.o),i=d(n),o=i.onEvent(e=>ht(t,e)),c=()=>u(i);t.signal.addEventListener(`abort`,c,{once:!0});try{vt(t.signal),t.setActionStatus(`running`,`Loading translation model`),await i.preload({runtime:r.runtime}),await t.tasks.runEach(async(e,{index:n,total:o})=>{vt(t.signal);let c=e.input;if(!c)return Z(`Missing translation target`,e.id,``,0,0);t.appendActionLog(`Translating ${n+1}/${o}`,`info`,{key:c.key,sourceLanguage:c.sourceLanguage,targetLanguage:c.targetLanguage});let l=q(s,c);if(!l.writable.length)return Z(mt(l.existing.length,l.stale.length),c.key,c.sourceText,l.existing.length,l.stale.length);let d;try{d=await dt(i,c,r,a)}catch(e){throw yt(e)&&u(i),e}if(!d)return Z(`HTML could not be parsed for safe translation`,c.key,c.sourceText,l.existing.length,l.stale.length);let f=0,p=l.existing.length,m=l.stale.length;for(let e of l.writable){let t=q(s,{...c,occurrences:[e]});if(t.stale.length){m+=t.stale.length;continue}if(t.existing.length){p+=t.existing.length;continue}J(s,e,d)&&(f+=1)}return f?{taskStatus:`complete`,statusText:`Translated ${f} occurrence${f===1?``:`s`}`,result:{type:`translated`,key:c.key,sourceText:c.sourceText,translationText:d,applied:f,existing:p,stale:m}}:Z(`No missing occurrences remained`,c.key,c.sourceText,p,m)},{progressLabel:(e,t,n)=>`Translating strings ${t+1}/${n}`})}catch(e){throw u(i),e}finally{t.signal.removeEventListener(`abort`,c),o()}}let c=ft(n?.totalTargets||i.length,t.tasks.getAll());return t.setActionStatus(`running`,`Applied ${c.applied} translations`),t.setActionProgress({current:c.total,total:c.total,label:`Translations complete`}),c}}}function ct(e,t){return{version:1,data:{options:v(t),totalTargets:e.length},tasks:e.map(e=>{let t=e.occurrences.filter(e=>e.status===`existing`).length,n=e.status!==`missing`;return{id:e.key,label:_t(e),target:gt(e),input:e,status:n?`skipped`:`queued`,statusText:n?`Target language already exists`:void 0,result:n?{type:`skipped`,key:e.key,sourceText:e.sourceText,reason:`Target language already exists`,existing:t,stale:0}:void 0,completedAt:n?Date.now():void 0}})}}function X(e,t){return t.currentResourceOnly&&e.currentCanvas?{id:e.currentCanvas.id,type:e.currentCanvas.type,label:e.currentCanvas.label}:e.target}async function lt(e,t,n){let r=O(e.vault,e.target),i=r.map(e=>e.language);return Se({actionId:e.definition.id,instanceKey:e.instanceKey,defaults:n,targets:t,availableLanguages:y(e.config),detectedLanguages:r,currentResource:e.currentCanvas?{id:e.currentCanvas.id,type:e.currentCanvas.type,label:e.currentCanvas.label}:void 0,getTargets:t=>D(e.vault,X(e,v(t)),v(t)),getTargetLanguageProgress:t=>ee(e.vault,X(e,v(t)),v(t),i),signal:e.signal})}function ut(e){let t=e?.data;return t?.options?t:null}async function dt(e,t,n,r){let i=async r=>(await e.translate({text:r,sourceLanguage:S(t.sourceLanguage,n),targetLanguage:t.targetLanguage,runtime:n.runtime})).text;return t.valueFormat===`html`?r(t.sourceText,i):i(t.sourceText)}function Z(e,t,n,r,i){return{taskStatus:`skipped`,statusText:e,result:{type:`skipped`,key:t,sourceText:n,reason:e,existing:r,stale:i}}}function ft(e,t){let n=pt(e);for(let e of t){let t=e.result;if(t?.type===`translated`){n.translated+=1,n.applied+=t.applied,n.existing+=t.existing,n.stale+=t.stale,n.translations.push({key:t.key,sourceText:t.sourceText,translationText:t.translationText,applied:t.applied});continue}if(t?.type===`skipped`){n.skipped+=1,n.existing+=t.existing||0,n.stale+=t.stale||0,n.skippedTargets.push({key:t.key,sourceText:t.sourceText,reason:t.reason});continue}e.status===`error`&&(n.errors+=1,n.skippedTargets.push({key:e.id,sourceText:e.label,reason:e.error?.message||`Translation failed`}))}return n}function pt(e){return{total:e,translated:0,applied:0,skipped:0,existing:0,stale:0,errors:0,translations:[],skippedTargets:[]}}function mt(e,t){return t&&e?`Source changed or target translation already exists`:t?`Source changed after the translation run was prepared`:e?`Target language already exists`:`No writable occurrences`}function ht(e,t){switch(t.type){case`model-progress`:e.setActionStatus(`running`,`Loading model ${Math.round(t.progress)}% (${bt(t.loaded)} / ${bt(t.total)})`);break;case`model-ready`:e.setActionStatus(`running`,`Model ready (${t.runtime.toUpperCase()})`);break;case`runtime-fallback`:e.appendActionLog(`Falling back to WASM translation runtime`,`warn`,t),e.setActionStatus(`running`,`WebGPU unavailable; using WASM`);break;case`translation-start`:e.setActionStatus(`running`,`Translating ${t.sourceLanguage} to ${t.targetLanguage}`);break;case`translation-complete`:e.setActionStatus(`running`,`Translated ${t.result.text.length} characters`);break;case`error`:e.signal.aborted||e.setActionStatus(`running`,t.message)}}function gt(e){let t=e.occurrences[0]?.resource,n=t?.label||e.sourceText||`Translation string`;return{id:t?.id||e.key,type:t?.type||`Manifest`,label:n,scope:t?.type===`Canvas`?`canvas`:`root`}}function _t(e){let t=e.normalisedSourceText||e.sourceText||`Translation string`;return t.length>80?`${t.slice(0,77)}...`:t}function vt(e){if(e.aborted)throw Error(`Translation cancelled.`)}function yt(e){return e instanceof Error&&(e.name===`model_load_failed`||e.name===`worker_failed`)}function bt(e){return e?`${Math.round(e/1024/1024)} MB`:`0 MB`}const xt=`language`,St=[{backgroundColor:`#1d4ed8`,textColor:`#ffffff`},{backgroundColor:`#047857`,textColor:`#ffffff`},{backgroundColor:`#b45309`,textColor:`#ffffff`},{backgroundColor:`#7c3aed`,textColor:`#ffffff`},{backgroundColor:`#be123c`,textColor:`#ffffff`},{backgroundColor:`#0f766e`,textColor:`#ffffff`},{backgroundColor:`#4338ca`,textColor:`#ffffff`},{backgroundColor:`#a16207`,textColor:`#ffffff`}];function Ct(){return{id:e.i,label:`Tag with languages`,summary:`Tag each canvas with its detected language`,section:`Translations`,order:35,resourceTypes:[`Manifest`],resumable:!0,supports:e=>{let t=e.vault.get(e.target);return t?.type===`Manifest`&&!!t?.items?.length},prepare:e=>Et(At(e)),run:async e=>{let t=e.tasks.getAll(),n=e.tasks.getPending();if(e.setActionLabel(`Tagging canvas languages`),!t.length){let t=Ot(0);e.setActionStatus(`running`,`No canvases to tag`),e.setActionProgress({current:0,total:0,label:`No canvases`}),e.setResult(t),e.setResultsAvailable(!1);return}n.length&&(e.canvasProgress.setStatuses(n.map(e=>e.target).filter(e=>!!e&&e.type===`Canvas`),`queued`),await e.tasks.runEach(async(t,{index:n,total:r})=>{Vt(e.signal);let i=t.input,a=t.target?.id||i?.canvasId||t.id,o=jt(e,a),s=Rt(o,i?.canvasLabel||a);if(e.appendActionLog(`Tagging language ${n+1}/${r}`,`info`,{canvasId:a,current:n+1,total:r}),!o){let t={canvasId:a,canvasLabel:s,reason:`Canvas not found`};return e.appendActionLog(`Skipped language tag`,`warn`,t),Dt(t)}let c=Mt(e,o),l=Tt(c);if(!l){e.tags.removeTag({id:a,type:`Canvas`},xt);let t={canvasId:a,canvasLabel:s,reason:`No supported language detected`};return e.appendActionLog(`Skipped language tag`,`warn`,t),Dt(t)}let u=wt(l.language);e.tags.upsertTag({id:a,type:`Canvas`},u);let d={canvasId:a,canvasLabel:s,language:l.language,label:u.label,count:l.count,detectedLanguages:c.map(e=>e.language)};return e.appendActionLog(`Tagged canvas language`,`info`,{canvasId:a,language:l.language,label:u.label}),{taskStatus:`complete`,statusText:`Tagged as ${u.label}`,result:{type:`tagged`,tag:d}}},{progressLabel:(e,t,n)=>`Tagging languages ${t+1}/${n}`}));let r=kt(e.tasks.getAll());e.setActionStatus(`running`,`Tagged ${r.tagged}/${r.total} canvases`),e.setActionProgress({current:r.total,total:r.total,label:`Language tagging complete`}),e.appendActionLog(`Language tagging complete`,`info`,{total:r.total,tagged:r.tagged,skipped:r.skipped,counts:r.counts}),e.setResult(r),e.setResultsAvailable(!1)}}}function wt(e){let t=zt(e);return{type:xt,id:e,label:e,backgroundColor:t.backgroundColor,textColor:t.textColor}}function Tt(e){return e[0]||null}function Et(e){return{version:1,tasks:e.map((e,t)=>{let n=e?.id||`canvas-${t+1}`,r=Rt(e,n);return{id:`canvas:${n}`,label:r,target:{id:n,type:`Canvas`,label:r,scope:`canvas`},input:{canvasId:n,canvasLabel:r},status:`queued`}})}}function Dt(e){return{taskStatus:`skipped`,statusText:e.reason,result:{type:`skipped`,skip:e}}}function Ot(e){return{total:e,tagged:0,skipped:0,counts:{},tags:[],skippedCanvases:[]}}function kt(e){let t=Ot(e.length);for(let n of e){let e=n.result;if(e?.type===`tagged`){t.tags.push(e.tag),t.counts[e.tag.language]=(t.counts[e.tag.language]||0)+1;continue}if(e?.type===`skipped`){t.skippedCanvases.push(e.skip);continue}n.status===`error`&&t.skippedCanvases.push({canvasId:n.target?.id||n.id,canvasLabel:n.label||n.target?.id||n.id,reason:n.error?.message||`Language tagging failed`})}return t.tagged=t.tags.length,t.skipped=t.skippedCanvases.length,t}function At(e){let t=e.vault.get(e.target);return t?.items?(e.vault.get(t.items)||[]).filter(Boolean):[]}function jt(e,t){return e.vault.get({id:t,type:`Canvas`})}function Mt(e,t){let n=Pt(e,t)||t,r=Nt(n),i=[],a=new Set;for(let e of r){let t=typeof e==`string`?e:``,n=x(t);!n||a.has(n)||(a.add(n),i.push({language:n,count:1,iiifLanguages:[t]}))}return Ft(i,n)}function Nt(e){let t=new Set;for(let n of(0,r.getAvailableLanguagesFromResource)(e))typeof n==`string`&&t.add(n);$(t,e?.label),$(t,e?.summary);let n=e?.requiredStatement;if(n&&!Array.isArray(n)&&($(t,n.label),$(t,n.value)),Array.isArray(e?.metadata))for(let n of e.metadata)$(t,n?.label),$(t,n?.value);return Array.from(t)}function Pt(e,t){if(!t?.id)return null;try{return e.vault.toPresentation3({id:t.id,type:`Canvas`})}catch{return null}}function Ft(e,t){if(e.length<2||It(t))return e;let n=Lt(t);return e.map(e=>({...e,count:n.get(e.language)||e.count})).sort((t,r)=>{let i=(n.get(r.language)||0)-(n.get(t.language)||0);return i===0?e.findIndex(e=>e.language===t.language)-e.findIndex(e=>e.language===r.language):i})}function It(e){return!!(Array.isArray(e?.items)&&e.items.length||Array.isArray(e?.annotations)&&e.annotations.length)}function Lt(e){let t=new Map;Q(t,e?.label),Q(t,e?.summary);let n=e?.requiredStatement;if(n&&!Array.isArray(n)&&(Q(t,n.label),Q(t,n.value)),Array.isArray(e?.metadata))for(let n of e.metadata)Q(t,n?.label),Q(t,n?.value);return t}function Q(e,t){if(!(!t||typeof t!=`object`||Array.isArray(t)))for(let[n,r]of Object.entries(t)){let t=x(n);if(!t||!Array.isArray(r))continue;let i=r.filter(e=>typeof e==`string`&&e.trim()).length;i&&e.set(t,(e.get(t)||0)+i)}}function $(e,t){if(!(!t||typeof t!=`object`||Array.isArray(t)))for(let[n,r]of Object.entries(t))Array.isArray(r)&&r.some(e=>typeof e==`string`&&e.trim())&&e.add(n)}function Rt(e,t){let n=e?.label;if(!n)return t;if(typeof n==`string`)return n;let r=Array.isArray(n.en)?n.en[0]:void 0;if(r)return r;let i=Object.keys(n)[0];return(i&&Array.isArray(n[i])?n[i][0]:void 0)||t}function zt(e){let t=Math.abs(Bt(e))%St.length;return St[t]||St[0]}function Bt(e){let t=0;for(let n=0;n<e.length;n+=1)t=(t<<5)-t+e.charCodeAt(n),t|=0;return t}function Vt(e){if(e.aborted)throw Error(`Language tagging cancelled.`)}const Ht={id:e.t,label:`Translations`,icon:(0,o.jsx)(Ut,{}),render:()=>(0,o.jsx)(Wt,{})};function Ut(e){return(0,o.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,...e,children:(0,o.jsx)(`path`,{fill:`currentColor`,d:`M12.87 15.07l-2.54-2.51l.03-.03A17.52 17.52 0 0 0 14.07 6H17V4h-7V2H8v2H1v1.99h11.17A15.9 15.9 0 0 1 9 11.35A15.34 15.34 0 0 1 6.69 8h-2c.7 1.56 1.66 3.02 2.81 4.28l-5.09 5.02L3.83 18L9 12.9l3.22 3.22l.65-1.05M18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12m-2.62 7l1.62-4.33L19.12 17h-3.24z`})})}function Wt(){let t=(0,c.useConfig)(),n=(0,c.useAppResource)(),r=qt(n),s=(0,c.usePluginRuntimeApi)().getSettings(e.o),u=(0,a.useMemo)(()=>_(t,s),[t,s]),[d,f]=(0,a.useState)(u),[m,h]=(0,a.useState)(`missing`);(0,a.useEffect)(()=>{f(u)},[u.sourceLanguage,u.targetLanguage,u.runtime]);let g=(0,l.useVaultSelector)((e,t)=>O(t,n),[n.id,n.type]),y=(0,a.useMemo)(()=>g.map(e=>e.language),[g]),x=y.join(`|`);(0,a.useEffect)(()=>{!y.length||y.includes(d.sourceLanguage)||f(e=>y.includes(e.sourceLanguage)?e:v({...e,sourceLanguage:y[0]}))},[x,d.sourceLanguage]);let w=(0,l.useVaultSelector)((e,t)=>D(t,n,d),[n.id,n.type,d.sourceLanguage,d.targetLanguage,d.runtime,d.contentFilters.annotationBodies,d.contentFilters.canvasLabels]),T=(0,l.useVaultSelector)((e,t)=>D(t,r,d),[r.id,r.type,d.sourceLanguage,d.targetLanguage,d.runtime,d.contentFilters.annotationBodies,d.contentFilters.canvasLabels]),E=(0,l.useVaultSelector)((e,t)=>ee(t,n,d,y),[n.id,n.type,d.sourceLanguage,d.runtime,d.contentFilters.annotationBodies,d.contentFilters.canvasLabels,x]),k=(0,l.useVault)(),A=Gt(),te=(0,c.useBackgroundActionsStoreApi)(),ne=(0,a.useMemo)(()=>[{label:`Detected in manifest`,options:g.map(e=>({value:e.language,label:p(e.language)}))}],[g]),j=(0,a.useMemo)(()=>Xt(E),[E]),M=(0,a.useMemo)(()=>(t.i18n?.availableLanguages||[]).filter(e=>!b(e)&&!C(e)),[t.i18n?.availableLanguages]),N=(0,a.useMemo)(()=>rn(w),[w]),P=(0,a.useMemo)(()=>rn(T),[T]),F=A?.instance?.status===`preparing`||A?.instance?.status===`running`,I=S(d.sourceLanguage,d)===d.targetLanguage,L=!!A&&!F&&y.length>0&&!I&&N.missing>0,R=e=>{f(t=>v({...t,...e}))},re=(e,t)=>{f(n=>v({...n,contentFilters:{...n.contentFilters,[e]:t}}))},z=()=>{!A||!L||(ot(A.instanceKey,d),(0,c.runBackgroundAction)({store:te,context:A.context}))},ie=(0,a.useMemo)(()=>m===`current`?T:m===`all`?w:w.filter(e=>e.status===m),[w,T,m]),B=[{key:`all`,label:`All`,count:w.length},{key:`current`,label:`Current resource`,count:P.total,title:`Current ${r.type.toLowerCase()}`},{key:`missing`,label:`Missing`,count:N.missing},{key:`existing`,label:`Done`,count:N.existing},{key:`stale`,label:`Stale`,count:N.stale}];return(0,o.jsxs)(i.Sidebar,{children:[(0,o.jsx)(i.SidebarHeader,{title:`Translations`}),(0,o.jsxs)(i.SidebarContent,{className:`flex min-h-0 flex-col gap-0 p-0`,children:[(0,o.jsxs)(`div`,{className:`flex flex-col gap-2 border-b border-zinc-100 p-3`,children:[(0,o.jsxs)(`div`,{className:`flex items-end gap-1.5`,children:[(0,o.jsx)(Zt,{label:`From`,value:d.sourceLanguage,groups:ne,emptyLabel:`No detected languages`,onChange:e=>R({sourceLanguage:e})}),(0,o.jsx)(`span`,{className:`mb-[7px] text-zinc-300 select-none`,children:`→`}),(0,o.jsx)(Zt,{label:`To`,value:d.targetLanguage,groups:j,onChange:e=>R({targetLanguage:e})}),(0,o.jsxs)(`label`,{className:`grid shrink-0 gap-1`,children:[(0,o.jsx)(`span`,{className:`text-[10px] font-medium uppercase tracking-wide text-zinc-400`,children:`Mode`}),(0,o.jsxs)(`select`,{className:`rounded border border-zinc-200 bg-white py-[5px] px-2 text-xs text-zinc-700 focus:border-me-primary-500 focus:outline-none focus:ring-2 focus:ring-me-primary-500/20`,value:d.runtime,onChange:e=>R({runtime:e.target.value}),children:[(0,o.jsx)(`option`,{value:`auto`,children:`Auto`}),(0,o.jsx)(`option`,{value:`webgpu`,children:`WebGPU`}),(0,o.jsx)(`option`,{value:`wasm`,children:`WASM`})]})]})]}),M.length?(0,o.jsxs)(`div`,{className:`rounded border border-amber-200 bg-amber-50 px-2.5 py-2 text-xs text-amber-800`,children:[`Unsupported languages: `,M.join(`, `)]}):null,y.length===0?(0,o.jsx)(`div`,{className:`rounded border border-amber-200 bg-amber-50 px-2.5 py-2 text-xs text-amber-800`,children:`No supported IIIF languages were detected in this manifest.`}):null,I?(0,o.jsx)(`div`,{className:`rounded border border-amber-200 bg-amber-50 px-2.5 py-2 text-xs text-amber-800`,children:`Choose different source and target languages.`}):null,(0,o.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,o.jsxs)(`div`,{className:`min-w-[7rem] flex-1 text-xs text-zinc-500`,children:[N.missing>0&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(`span`,{className:`font-semibold text-amber-600`,children:N.missing}),` missing`]}),N.missing>0&&N.existing>0&&(0,o.jsx)(`span`,{className:`text-zinc-300`,children:` · `}),N.existing>0&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(`span`,{className:`font-semibold text-green-600`,children:N.existing}),` done`]}),N.stale>0&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(`span`,{className:`text-zinc-300`,children:` · `}),(0,o.jsx)(`span`,{className:`font-semibold text-red-500`,children:N.stale}),` stale`]}),w.length===0&&(0,o.jsx)(`span`,{className:`text-zinc-400`,children:`No strings found`})]}),(0,o.jsx)(`button`,{type:`button`,className:`flex shrink-0 items-center gap-1.5 rounded border border-me-primary-500 bg-me-primary-500 px-2.5 py-1.5 text-xs font-medium text-white transition-opacity disabled:cursor-not-allowed disabled:opacity-40`,disabled:!L,onClick:z,title:L?`Translate ${N.missing} missing string${N.missing===1?``:`s`}`:void 0,children:F?(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(nn,{className:`h-3 w-3 animate-spin`}),`Running…`]}):(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(tn,{className:`h-3 w-3`}),`Translate`]})}),(0,o.jsx)(Yt,{filters:d.contentFilters,onChange:re})]})]}),w.length>0&&(0,o.jsx)(`div`,{className:`flex shrink-0 overflow-x-auto border-b border-zinc-100 bg-zinc-50/50`,children:B.filter(e=>e.key===`all`||e.key===`current`||e.count>0).map(e=>(0,o.jsxs)(`button`,{type:`button`,className:`flex shrink-0 items-center gap-1 whitespace-nowrap px-3 py-2 text-xs font-medium transition-colors ${m===e.key?`-mb-px border-b-2 border-me-primary-500 text-me-primary-600`:`text-zinc-500 hover:text-zinc-700`}`,title:e.title,onClick:()=>h(e.key),children:[e.label,(0,o.jsx)(`span`,{className:`text-[10px] ${m===e.key?`text-me-primary-400`:`text-zinc-400`}`,children:e.count})]},e.key))}),(0,o.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:ie.length?ie.map(e=>(0,o.jsx)(Jt,{target:e,onSave:t=>{for(let n of e.occurrences)J({vault:k},n,t)}},e.key)):(0,o.jsx)(`div`,{className:`px-4 py-8 text-center text-xs text-zinc-400`,children:w.length===0?`No translatable strings found.`:m===`current`?`No current resource strings.`:`No ${m} strings.`})})]})]})}function Gt(){return Kt(e.n)}function Kt(e){let t=(0,c.useAvailableBackgroundActions)();return(0,a.useMemo)(()=>t.flatMap(e=>e.actions).find(t=>t.definition.id===e)||null,[t,e])}function qt(e){let t=(0,c.useEditingResource)(),n=(0,c.useEditingResourceStack)();return(0,a.useMemo)(()=>{let r=[t,...n].map(e=>e?.resource?.source).filter(e=>!!e?.id&&!!e.type),i=r.find(e=>e.type===`Canvas`),a=r.find(e=>e.type===`Manifest`),o=i||a||e;return{id:o.id,type:o.type}},[t,n,e])}function Jt({target:e,onSave:t}){let n=e.occurrences[0],r=an(e.occurrences),[i,s]=(0,a.useState)(r),c=e.status===`existing`||e.status===`suggested`,[l,u]=(0,a.useState)(!c);return(0,a.useEffect)(()=>{s(r)},[r]),(0,o.jsxs)(`div`,{className:`border-b border-zinc-100 last:border-0 ${c&&!l?`opacity-60`:``}`,children:[(0,o.jsxs)(`button`,{type:`button`,className:`flex w-full min-w-0 items-center gap-2 px-3 py-2 text-left transition-colors hover:bg-zinc-50/80 focus:outline-none`,onClick:()=>u(e=>!e),children:[(0,o.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,o.jsx)(`span`,{className:`block truncate text-xs font-semibold text-zinc-800`,children:n?.resource.label||n?.resource.id}),(0,o.jsxs)(`span`,{className:`text-[11px] text-zinc-400`,children:[n?.propertyLabel||`String`,e.occurrences.length>1?` · ${e.occurrences.length}×`:``]})]}),(0,o.jsx)($t,{status:e.status}),(0,o.jsx)(en,{expanded:l})]}),l&&(0,o.jsxs)(`div`,{className:`px-3 pb-3`,children:[(0,o.jsxs)(`div`,{className:`mb-2 rounded border border-zinc-100 bg-zinc-50 px-2.5 py-2 text-xs leading-relaxed text-zinc-700`,children:[(0,o.jsx)(`div`,{className:`mb-1 text-[10px] font-semibold uppercase tracking-widest text-me-primary-400`,children:`Source`}),e.sourceText]}),(0,o.jsx)(`textarea`,{className:`w-full min-h-[2.5rem] [field-sizing:content] rounded border border-zinc-200 bg-white px-2 py-1.5 text-xs text-zinc-900 transition-colors placeholder:text-zinc-300 focus:border-me-primary-500 focus:outline-none focus:ring-2 focus:ring-me-primary-500/20`,value:i,placeholder:`${p(e.targetLanguage)} translation…`,onChange:e=>s(e.target.value),onBlur:()=>{i.trim()!==r.trim()&&t(i)}})]})]})}function Yt({filters:e,onChange:t}){return(0,o.jsxs)(`details`,{className:`relative shrink-0`,children:[(0,o.jsx)(`summary`,{className:`cursor-pointer list-none rounded border border-zinc-200 bg-white px-2.5 py-1.5 text-xs font-medium text-zinc-600 hover:border-zinc-300`,children:`Filters`}),(0,o.jsxs)(`div`,{className:`absolute right-0 z-20 mt-1 grid w-48 gap-2 rounded border border-zinc-200 bg-white p-2.5 text-xs text-zinc-700 shadow-lg`,children:[(0,o.jsxs)(`label`,{className:`flex items-center gap-2`,children:[(0,o.jsx)(`input`,{type:`checkbox`,className:`h-3.5 w-3.5 rounded border-zinc-300`,checked:e.annotationBodies,onChange:e=>t(`annotationBodies`,e.currentTarget.checked)}),`Annotation bodies`]}),(0,o.jsxs)(`label`,{className:`flex items-center gap-2`,children:[(0,o.jsx)(`input`,{type:`checkbox`,className:`h-3.5 w-3.5 rounded border-zinc-300`,checked:e.canvasLabels,onChange:e=>t(`canvasLabels`,e.currentTarget.checked)}),`Canvas labels`]})]})]})}function Xt(e){let t=new Set(e.map(e=>e.language)),n=[];return e.length&&n.push({label:`Detected in manifest`,options:e.map(e=>({value:e.language,label:`${p(e.language)} (${m(e)})`}))}),n.push({label:`All languages`,options:u.filter(e=>!t.has(e.code)).map(e=>({value:e.code,label:e.label}))}),n}function Zt({label:e,value:t,groups:n,emptyLabel:r=`No languages available`,onChange:i}){let a=n.some(e=>e.options.length),s=n.some(e=>e.options.some(e=>e.value===t));return(0,o.jsxs)(`label`,{className:`grid min-w-0 flex-1 gap-1`,children:[(0,o.jsx)(`span`,{className:`text-[10px] font-medium uppercase tracking-wide text-zinc-400`,children:e}),(0,o.jsxs)(`select`,{className:`w-full rounded border border-zinc-200 bg-white py-[5px] px-2 text-xs text-zinc-800 focus:border-me-primary-500 focus:outline-none focus:ring-2 focus:ring-me-primary-500/20`,value:t,disabled:!a,onChange:e=>i(e.target.value),children:[s?null:(0,o.jsx)(`option`,{value:t,disabled:!0,children:a?p(t):r}),n.map(e=>e.options.length?(0,o.jsx)(`optgroup`,{label:e.label,children:e.options.map(e=>(0,o.jsx)(`option`,{value:e.value,children:e.label},e.value))},e.label):null)]})]})}const Qt={missing:{dot:`bg-amber-400`,text:`text-amber-700`,label:`Missing`},existing:{dot:`bg-green-400`,text:`text-green-700`,label:`Done`},stale:{dot:`bg-red-400`,text:`text-red-600`,label:`Stale`},suggested:{dot:`bg-sky-400`,text:`text-sky-700`,label:`Suggested`},skipped:{dot:`bg-zinc-300`,text:`text-zinc-500`,label:`Skipped`}};function $t({status:e}){let t=Qt[e]||Qt.skipped;return(0,o.jsxs)(`span`,{className:`flex shrink-0 items-center gap-1 text-[10px] font-medium ${t.text}`,children:[(0,o.jsx)(`span`,{className:`h-1.5 w-1.5 rounded-full ${t.dot}`}),t.label]})}function en({expanded:e}){return(0,o.jsx)(`svg`,{className:`h-3.5 w-3.5 shrink-0 text-zinc-300 transition-transform ${e?`rotate-180`:``}`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,o.jsx)(`path`,{d:`M6 9l6 6 6-6`})})}function tn({className:e}){return(0,o.jsx)(`svg`,{className:e,viewBox:`0 0 24 24`,fill:`currentColor`,children:(0,o.jsx)(`path`,{d:`M8 5v14l11-7z`})})}function nn({className:e}){return(0,o.jsxs)(`svg`,{className:e,viewBox:`0 0 24 24`,fill:`none`,children:[(0,o.jsx)(`circle`,{cx:`12`,cy:`12`,r:`9`,stroke:`currentColor`,strokeWidth:`2.5`,strokeOpacity:`0.3`}),(0,o.jsx)(`path`,{d:`M12 3a9 9 0 0 1 9 9`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`})]})}function rn(e){return e.reduce((e,t)=>(e.total+=1,e[t.status]=(e[t.status]||0)+1,e),{total:0,missing:0,existing:0,suggested:0,skipped:0,stale:0})}function an(e){for(let t of e)if(t.targetText?.trim())return t.targetText;return``}const on=[Ht],sn=[st(),Ct()];exports.M2M100_LANGUAGES=u,exports.TRANSLATIONS_LEFT_PANEL_ID=e.t,exports.TRANSLATION_ACTION_ID=e.n,exports.TRANSLATION_CACHE_KEY=e.r,exports.TRANSLATION_CONFIG_EVENT=W,exports.TRANSLATION_LANGUAGE_TAG_ACTION_ID=e.i,exports.TRANSLATION_LANGUAGE_TAG_TYPE=xt,exports.TRANSLATION_MODEL_ID=e.a,exports.TRANSLATION_NONE_LANGUAGE=h,exports.TRANSLATION_PLUGIN_ID=e.o,exports.TranslationsIcon=Ut,exports.backgroundActions=sn,exports.collectDetectedManifestLanguages=O,exports.collectTranslationLanguageProgress=ee,exports.collectTranslationTargets=D,exports.createDisposeRequest=t.t,exports.createErrorResponse=t.n,exports.createEventEnvelope=t.r,exports.createLanguageTag=wt,exports.createPreloadRequest=t.i,exports.createSuccessResponse=t.a,exports.createTranslateRequest=t.o,exports.createTranslationBackgroundAction=st,exports.createTranslationLanguageTagsBackgroundAction=Ct,exports.createTranslationPlan=ct,exports.createTranslationResultResponse=t.s,exports.createTranslationTargetKey=te,exports.createTranslationWorkerClient=Ne,exports.default=n.t,exports.defaultTranslationContentFilters=g,exports.fingerprintTranslationText=A,exports.getDefaultRunOptions=_,exports.getLanguageLabel=p,exports.getLanguageMapSourceEntries=ne,exports.getLanguageMapTargetText=N,exports.getLanguageProgressLabel=m,exports.getLanguageValueAt=j,exports.getLanguageValues=M,exports.getModelSourceLanguage=S,exports.getSupportedAvailableLanguages=y,exports.getWritableOccurrences=q,exports.isHtmlTranslationValue=P,exports.isNoLanguageCode=C,exports.isSupportedM2M100Language=f,exports.leftPanels=on,exports.normaliseLanguageCode=w,exports.normaliseRunOptions=v,exports.normaliseTranslationText=k,exports.openTranslationResults=Le,exports.queueTranslationRunOptions=ot,exports.readOccurrenceSourceText=Be,exports.readOccurrenceTargetText=Ve,exports.renderTranslationConfigModal=Ce,exports.renderTranslationResults=Re,exports.requestTranslationConfig=Se,exports.resolveSourceLanguage=x,exports.resolveSupportedLanguage=b,exports.selectPrimaryDetectedLanguage=Tt,exports.settings=n.n,exports.translatePreservingSimpleHtml=ke,exports.translationsPanel=Ht,exports.writeTranslationForOccurrence=J;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|