@manifest-editor/translation 2.0.3-next.0.f58cbd8
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/LICENSE +21 -0
- package/dist/index.cjs +1 -0
- package/dist/index.d.cts +418 -0
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.ts +418 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/protocol-DDNUHeE0.cjs +1 -0
- package/dist/protocol-DrtPTcz6.js +2 -0
- package/dist/protocol-DrtPTcz6.js.map +1 -0
- package/dist/translation-worker.cjs +1 -0
- package/dist/translation-worker.d.cts +1 -0
- package/dist/translation-worker.d.ts +1 -0
- package/dist/translation-worker.js +2 -0
- package/dist/translation-worker.js.map +1 -0
- package/package.json +58 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,418 @@
|
|
|
1
|
+
import { SVGProps } from "react";
|
|
2
|
+
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
3
|
+
import { BackgroundActionDefinition, BackgroundActionPlan, BackgroundActionRunContext, Config, LayoutPanel, ManifestEditorTag, PluginSettingsDefinition } from "@manifest-editor/shell";
|
|
4
|
+
import { InternationalString, Reference } from "@iiif/presentation-3";
|
|
5
|
+
import { Vault } from "@iiif/helpers/vault";
|
|
6
|
+
|
|
7
|
+
//#region src/types.d.ts
|
|
8
|
+
type TranslationRuntimePreference = "auto" | "webgpu" | "wasm";
|
|
9
|
+
type TranslationWritePolicy = "fill-missing";
|
|
10
|
+
type TranslationValueFormat = "text" | "html";
|
|
11
|
+
type TranslationStatus = "missing" | "existing" | "suggested" | "skipped" | "stale";
|
|
12
|
+
type TranslationContentFilters = {
|
|
13
|
+
annotationBodies: boolean;
|
|
14
|
+
canvasLabels: boolean;
|
|
15
|
+
};
|
|
16
|
+
type TranslationPluginSettings = {
|
|
17
|
+
[key: string]: unknown;
|
|
18
|
+
defaultSourceLanguage?: string;
|
|
19
|
+
defaultTargetLanguage?: string;
|
|
20
|
+
runtimePreference?: TranslationRuntimePreference;
|
|
21
|
+
};
|
|
22
|
+
type TranslationRunOptions = {
|
|
23
|
+
sourceLanguage: string;
|
|
24
|
+
modelSourceLanguage?: string;
|
|
25
|
+
targetLanguage: string;
|
|
26
|
+
runtime: TranslationRuntimePreference;
|
|
27
|
+
writePolicy: TranslationWritePolicy;
|
|
28
|
+
contentFilters: TranslationContentFilters;
|
|
29
|
+
currentResourceOnly?: boolean;
|
|
30
|
+
};
|
|
31
|
+
type TranslationResourceRef = Reference & {
|
|
32
|
+
label?: string;
|
|
33
|
+
};
|
|
34
|
+
type ResourceLanguageMapPath = {
|
|
35
|
+
kind: "resource-language-map";
|
|
36
|
+
resource: Reference;
|
|
37
|
+
property: "label" | "summary";
|
|
38
|
+
};
|
|
39
|
+
type MetadataLanguageMapPath = {
|
|
40
|
+
kind: "metadata-language-map";
|
|
41
|
+
resource: Reference;
|
|
42
|
+
metadataIndex: number;
|
|
43
|
+
field: "label" | "value";
|
|
44
|
+
};
|
|
45
|
+
type RequiredStatementLanguageMapPath = {
|
|
46
|
+
kind: "required-statement-language-map";
|
|
47
|
+
resource: Reference;
|
|
48
|
+
field: "label" | "value";
|
|
49
|
+
};
|
|
50
|
+
type TextualBodyPath = {
|
|
51
|
+
kind: "textual-body";
|
|
52
|
+
annotation: Reference<"Annotation">;
|
|
53
|
+
body: Reference<"ContentResource">;
|
|
54
|
+
choice?: Reference<"ContentResource">;
|
|
55
|
+
targetBody?: Reference<"ContentResource">;
|
|
56
|
+
};
|
|
57
|
+
type TranslationPath = ResourceLanguageMapPath | MetadataLanguageMapPath | RequiredStatementLanguageMapPath | TextualBodyPath;
|
|
58
|
+
type TranslationOccurrence = {
|
|
59
|
+
id: string;
|
|
60
|
+
path: TranslationPath;
|
|
61
|
+
resource: TranslationResourceRef;
|
|
62
|
+
propertyLabel: string;
|
|
63
|
+
sourceLanguage: string;
|
|
64
|
+
sourceMapLanguage: string;
|
|
65
|
+
targetLanguage: string;
|
|
66
|
+
sourceIndex: number;
|
|
67
|
+
sourceText: string;
|
|
68
|
+
targetText: string;
|
|
69
|
+
valueFormat: TranslationValueFormat;
|
|
70
|
+
sourceFingerprint: string;
|
|
71
|
+
status: TranslationStatus;
|
|
72
|
+
};
|
|
73
|
+
type TranslationTarget = {
|
|
74
|
+
key: string;
|
|
75
|
+
sourceLanguage: string;
|
|
76
|
+
targetLanguage: string;
|
|
77
|
+
sourceText: string;
|
|
78
|
+
normalisedSourceText: string;
|
|
79
|
+
valueFormat: TranslationValueFormat;
|
|
80
|
+
occurrences: TranslationOccurrence[];
|
|
81
|
+
status: TranslationStatus;
|
|
82
|
+
};
|
|
83
|
+
type TranslationTaskResult = {
|
|
84
|
+
type: "translated";
|
|
85
|
+
key: string;
|
|
86
|
+
sourceText: string;
|
|
87
|
+
translationText: string;
|
|
88
|
+
applied: number;
|
|
89
|
+
existing: number;
|
|
90
|
+
stale: number;
|
|
91
|
+
} | {
|
|
92
|
+
type: "skipped";
|
|
93
|
+
key: string;
|
|
94
|
+
sourceText: string;
|
|
95
|
+
reason: string;
|
|
96
|
+
existing?: number;
|
|
97
|
+
stale?: number;
|
|
98
|
+
};
|
|
99
|
+
type TranslationActionResult = {
|
|
100
|
+
total: number;
|
|
101
|
+
translated: number;
|
|
102
|
+
applied: number;
|
|
103
|
+
skipped: number;
|
|
104
|
+
existing: number;
|
|
105
|
+
stale: number;
|
|
106
|
+
errors: number;
|
|
107
|
+
translations: Array<{
|
|
108
|
+
key: string;
|
|
109
|
+
sourceText: string;
|
|
110
|
+
translationText: string;
|
|
111
|
+
applied: number;
|
|
112
|
+
}>;
|
|
113
|
+
skippedTargets: Array<{
|
|
114
|
+
key: string;
|
|
115
|
+
sourceText: string;
|
|
116
|
+
reason: string;
|
|
117
|
+
}>;
|
|
118
|
+
};
|
|
119
|
+
type LanguageMapLike = InternationalString | string | null | undefined;
|
|
120
|
+
//#endregion
|
|
121
|
+
//#region src/collection.d.ts
|
|
122
|
+
type SourceEntry = {
|
|
123
|
+
sourceMapLanguage: string;
|
|
124
|
+
sourceIndex: number;
|
|
125
|
+
sourceText: string;
|
|
126
|
+
};
|
|
127
|
+
type DetectedManifestLanguage = {
|
|
128
|
+
language: string;
|
|
129
|
+
count: number;
|
|
130
|
+
iiifLanguages: string[];
|
|
131
|
+
};
|
|
132
|
+
type TranslationLanguageProgress = {
|
|
133
|
+
language: string;
|
|
134
|
+
total: number;
|
|
135
|
+
missing: number;
|
|
136
|
+
existing: number;
|
|
137
|
+
suggested: number;
|
|
138
|
+
skipped: number;
|
|
139
|
+
stale: number;
|
|
140
|
+
};
|
|
141
|
+
declare function collectTranslationTargets(vault: Vault, root: Reference, options: TranslationRunOptions): TranslationTarget[];
|
|
142
|
+
declare function collectDetectedManifestLanguages(vault: Vault, root: Reference): DetectedManifestLanguage[];
|
|
143
|
+
declare function collectTranslationLanguageProgress(vault: Vault, root: Reference, options: TranslationRunOptions, languages?: string[]): TranslationLanguageProgress[];
|
|
144
|
+
declare function normaliseTranslationText(value: string): string;
|
|
145
|
+
declare function fingerprintTranslationText(value: string): string;
|
|
146
|
+
declare function createTranslationTargetKey(sourceText: string, sourceLanguage: string, targetLanguage: string, valueFormat: TranslationValueFormat): string;
|
|
147
|
+
declare function getLanguageMapSourceEntries(value: LanguageMapLike, sourceLanguage: string): SourceEntry[];
|
|
148
|
+
declare function getLanguageValueAt(value: LanguageMapLike, language: string, index: number): string;
|
|
149
|
+
declare function getLanguageValues(value: InternationalString, language: string): string[];
|
|
150
|
+
declare function getLanguageMapTargetText(value: LanguageMapLike, targetLanguage: string, sourceIndex: number): string;
|
|
151
|
+
declare function isHtmlTranslationValue(value: string): boolean;
|
|
152
|
+
//#endregion
|
|
153
|
+
//#region src/html.d.ts
|
|
154
|
+
declare function translatePreservingSimpleHtml(value: string, translateText: (text: string) => Promise<string>): Promise<string | null>;
|
|
155
|
+
//#endregion
|
|
156
|
+
//#region src/runtime/types.d.ts
|
|
157
|
+
type TranslationErrorCode = "busy" | "invalid_request" | "model_load_failed" | "translation_failed" | "worker_failed";
|
|
158
|
+
type TranslationRuntimeUsed = "webgpu" | "wasm";
|
|
159
|
+
interface TranslationPreloadRequest {
|
|
160
|
+
runtime: TranslationRuntimePreference;
|
|
161
|
+
}
|
|
162
|
+
interface TranslationTextRequest {
|
|
163
|
+
text: string;
|
|
164
|
+
sourceLanguage: string;
|
|
165
|
+
targetLanguage: string;
|
|
166
|
+
runtime: TranslationRuntimePreference;
|
|
167
|
+
}
|
|
168
|
+
interface TranslationTextResult {
|
|
169
|
+
text: string;
|
|
170
|
+
sourceLanguage: string;
|
|
171
|
+
targetLanguage: string;
|
|
172
|
+
runtime: TranslationRuntimeUsed;
|
|
173
|
+
durationMs: number;
|
|
174
|
+
}
|
|
175
|
+
interface TranslationModelProgressEvent {
|
|
176
|
+
type: "model-progress";
|
|
177
|
+
progress: number;
|
|
178
|
+
loaded: number;
|
|
179
|
+
total: number;
|
|
180
|
+
files: Record<string, {
|
|
181
|
+
loaded: number;
|
|
182
|
+
total: number;
|
|
183
|
+
}>;
|
|
184
|
+
}
|
|
185
|
+
interface TranslationModelReadyEvent {
|
|
186
|
+
type: "model-ready";
|
|
187
|
+
modelId: string;
|
|
188
|
+
runtime: TranslationRuntimeUsed;
|
|
189
|
+
}
|
|
190
|
+
interface TranslationRuntimeFallbackEvent {
|
|
191
|
+
type: "runtime-fallback";
|
|
192
|
+
from: TranslationRuntimeUsed;
|
|
193
|
+
to: TranslationRuntimeUsed;
|
|
194
|
+
message: string;
|
|
195
|
+
}
|
|
196
|
+
interface TranslationStartEvent {
|
|
197
|
+
type: "translation-start";
|
|
198
|
+
requestId: string;
|
|
199
|
+
sourceLanguage: string;
|
|
200
|
+
targetLanguage: string;
|
|
201
|
+
}
|
|
202
|
+
interface TranslationCompleteEvent {
|
|
203
|
+
type: "translation-complete";
|
|
204
|
+
requestId: string;
|
|
205
|
+
result: TranslationTextResult;
|
|
206
|
+
}
|
|
207
|
+
interface TranslationErrorEvent {
|
|
208
|
+
type: "error";
|
|
209
|
+
code: TranslationErrorCode;
|
|
210
|
+
message: string;
|
|
211
|
+
recoverable: boolean;
|
|
212
|
+
requestId?: string;
|
|
213
|
+
}
|
|
214
|
+
type TranslationEvent = TranslationModelProgressEvent | TranslationModelReadyEvent | TranslationRuntimeFallbackEvent | TranslationStartEvent | TranslationCompleteEvent | TranslationErrorEvent;
|
|
215
|
+
//#endregion
|
|
216
|
+
//#region src/runtime/browser/client.types.d.ts
|
|
217
|
+
interface TranslationWorkerClient {
|
|
218
|
+
preload(request: TranslationPreloadRequest): Promise<void>;
|
|
219
|
+
translate(request: TranslationTextRequest): Promise<TranslationTextResult>;
|
|
220
|
+
onEvent(listener: (event: TranslationEvent) => void): () => void;
|
|
221
|
+
terminate(): void;
|
|
222
|
+
}
|
|
223
|
+
//#endregion
|
|
224
|
+
//#region src/runtime/browser/client.d.ts
|
|
225
|
+
interface CreateTranslationWorkerClientOptions {
|
|
226
|
+
worker?: Worker;
|
|
227
|
+
}
|
|
228
|
+
declare function createTranslationWorkerClient(options?: CreateTranslationWorkerClientOptions): TranslationWorkerClient;
|
|
229
|
+
//#endregion
|
|
230
|
+
//#region src/runtime/protocol.d.ts
|
|
231
|
+
type TranslationWorkerCommand = "preload" | "translate" | "dispose";
|
|
232
|
+
interface TranslationWorkerRequestBase {
|
|
233
|
+
kind: "request";
|
|
234
|
+
command: TranslationWorkerCommand;
|
|
235
|
+
requestId: string;
|
|
236
|
+
}
|
|
237
|
+
interface TranslationWorkerPreloadRequest extends TranslationWorkerRequestBase {
|
|
238
|
+
command: "preload";
|
|
239
|
+
payload: TranslationPreloadRequest;
|
|
240
|
+
}
|
|
241
|
+
interface TranslationWorkerTranslateRequest extends TranslationWorkerRequestBase {
|
|
242
|
+
command: "translate";
|
|
243
|
+
payload: TranslationTextRequest;
|
|
244
|
+
}
|
|
245
|
+
interface TranslationWorkerDisposeRequest extends TranslationWorkerRequestBase {
|
|
246
|
+
command: "dispose";
|
|
247
|
+
}
|
|
248
|
+
interface TranslationWorkerSuccessResponse<T = undefined> {
|
|
249
|
+
kind: "success";
|
|
250
|
+
requestId: string;
|
|
251
|
+
command: TranslationWorkerCommand;
|
|
252
|
+
payload: T;
|
|
253
|
+
}
|
|
254
|
+
interface TranslationWorkerErrorPayload {
|
|
255
|
+
code: TranslationErrorCode;
|
|
256
|
+
message: string;
|
|
257
|
+
recoverable: boolean;
|
|
258
|
+
}
|
|
259
|
+
interface TranslationWorkerErrorResponse {
|
|
260
|
+
kind: "error";
|
|
261
|
+
requestId: string;
|
|
262
|
+
command: TranslationWorkerCommand;
|
|
263
|
+
payload: TranslationWorkerErrorPayload;
|
|
264
|
+
}
|
|
265
|
+
interface TranslationWorkerEventEnvelope {
|
|
266
|
+
kind: "event";
|
|
267
|
+
payload: TranslationEvent;
|
|
268
|
+
}
|
|
269
|
+
declare function createPreloadRequest(requestId: string, payload: TranslationPreloadRequest): TranslationWorkerPreloadRequest;
|
|
270
|
+
declare function createTranslateRequest(requestId: string, payload: TranslationTextRequest): TranslationWorkerTranslateRequest;
|
|
271
|
+
declare function createDisposeRequest(requestId: string): TranslationWorkerDisposeRequest;
|
|
272
|
+
declare function createSuccessResponse<T>(command: TranslationWorkerCommand, requestId: string, payload: T): TranslationWorkerSuccessResponse<T>;
|
|
273
|
+
declare function createTranslationResultResponse(requestId: string, payload: TranslationTextResult): TranslationWorkerSuccessResponse<TranslationTextResult>;
|
|
274
|
+
declare function createErrorResponse(command: TranslationWorkerCommand, requestId: string, payload: TranslationWorkerErrorPayload): TranslationWorkerErrorResponse;
|
|
275
|
+
declare function createEventEnvelope(payload: TranslationEvent): TranslationWorkerEventEnvelope;
|
|
276
|
+
//#endregion
|
|
277
|
+
//#region src/background-action.d.ts
|
|
278
|
+
type TranslationPlanData = {
|
|
279
|
+
options: TranslationRunOptions;
|
|
280
|
+
totalTargets: number;
|
|
281
|
+
};
|
|
282
|
+
type TranslationActionDependencies = {
|
|
283
|
+
createClient?: () => TranslationWorkerClient;
|
|
284
|
+
collectTargets?: typeof collectTranslationTargets;
|
|
285
|
+
requestConfig?: (ctx: BackgroundActionRunContext, targets: TranslationTarget[], defaults: TranslationRunOptions) => Promise<TranslationRunOptions | false>;
|
|
286
|
+
translateHtml?: typeof translatePreservingSimpleHtml;
|
|
287
|
+
};
|
|
288
|
+
declare function queueTranslationRunOptions(instanceKey: string, options: Partial<TranslationRunOptions>): void;
|
|
289
|
+
declare function createTranslationBackgroundAction(dependencies?: TranslationActionDependencies): BackgroundActionDefinition;
|
|
290
|
+
declare function createTranslationPlan(targets: TranslationTarget[], options: TranslationRunOptions): BackgroundActionPlan;
|
|
291
|
+
//#endregion
|
|
292
|
+
//#region src/config-modal.d.ts
|
|
293
|
+
declare const TRANSLATION_CONFIG_EVENT = "@manifest-editor/translation:config";
|
|
294
|
+
type TranslationConfigRequest = {
|
|
295
|
+
actionId: string;
|
|
296
|
+
instanceKey: string;
|
|
297
|
+
defaults: TranslationRunOptions;
|
|
298
|
+
availableLanguages: string[];
|
|
299
|
+
detectedLanguages?: DetectedManifestLanguage[];
|
|
300
|
+
currentResource?: TranslationResourceRef;
|
|
301
|
+
getTargets?: (options: TranslationRunOptions) => TranslationTarget[];
|
|
302
|
+
getTargetLanguageProgress?: (options: TranslationRunOptions) => TranslationLanguageProgress[];
|
|
303
|
+
targets: TranslationTarget[];
|
|
304
|
+
signal?: AbortSignal;
|
|
305
|
+
resolve: (options: TranslationRunOptions | false) => void;
|
|
306
|
+
};
|
|
307
|
+
declare function requestTranslationConfig(request: Omit<TranslationConfigRequest, "resolve">): Promise<TranslationRunOptions | false>;
|
|
308
|
+
declare function renderTranslationConfigModal(actionId: string): react_jsx_runtime0.JSX.Element;
|
|
309
|
+
//#endregion
|
|
310
|
+
//#region src/constants.d.ts
|
|
311
|
+
declare const TRANSLATION_PLUGIN_ID = "@manifest-editor/translation";
|
|
312
|
+
declare const TRANSLATION_ACTION_ID = "@manifest-editor/translation/translate-strings";
|
|
313
|
+
declare const TRANSLATION_LANGUAGE_TAG_ACTION_ID = "@manifest-editor/translation/tag-languages";
|
|
314
|
+
declare const TRANSLATIONS_LEFT_PANEL_ID = "@manifest-editor/translations";
|
|
315
|
+
declare const TRANSLATION_MODEL_ID = "Xenova/m2m100_418M";
|
|
316
|
+
declare const TRANSLATION_CACHE_KEY = "manifest-editor-translation-m2m100-418m";
|
|
317
|
+
//#endregion
|
|
318
|
+
//#region src/language-tags-background-action.d.ts
|
|
319
|
+
declare const TRANSLATION_LANGUAGE_TAG_TYPE = "language";
|
|
320
|
+
type CanvasLanguageTagResult = {
|
|
321
|
+
canvasId: string;
|
|
322
|
+
canvasLabel: string;
|
|
323
|
+
language: string;
|
|
324
|
+
label: string;
|
|
325
|
+
count: number;
|
|
326
|
+
detectedLanguages: string[];
|
|
327
|
+
};
|
|
328
|
+
type CanvasLanguageTagSkip = {
|
|
329
|
+
canvasId: string;
|
|
330
|
+
canvasLabel: string;
|
|
331
|
+
reason: string;
|
|
332
|
+
};
|
|
333
|
+
type TranslationLanguageTagActionResult = {
|
|
334
|
+
total: number;
|
|
335
|
+
tagged: number;
|
|
336
|
+
skipped: number;
|
|
337
|
+
counts: Record<string, number>;
|
|
338
|
+
tags: CanvasLanguageTagResult[];
|
|
339
|
+
skippedCanvases: CanvasLanguageTagSkip[];
|
|
340
|
+
};
|
|
341
|
+
type DetectedCanvasLanguage = {
|
|
342
|
+
language: string;
|
|
343
|
+
count: number;
|
|
344
|
+
iiifLanguages: string[];
|
|
345
|
+
};
|
|
346
|
+
declare function createTranslationLanguageTagsBackgroundAction(): BackgroundActionDefinition;
|
|
347
|
+
declare function createLanguageTag(language: string): ManifestEditorTag;
|
|
348
|
+
declare function selectPrimaryDetectedLanguage(languages: DetectedCanvasLanguage[]): DetectedCanvasLanguage | null;
|
|
349
|
+
//#endregion
|
|
350
|
+
//#region src/languages.d.ts
|
|
351
|
+
type M2M100Language = {
|
|
352
|
+
code: string;
|
|
353
|
+
label: string;
|
|
354
|
+
};
|
|
355
|
+
type LanguageProgressSummary = {
|
|
356
|
+
total: number;
|
|
357
|
+
existing: number;
|
|
358
|
+
suggested?: number;
|
|
359
|
+
};
|
|
360
|
+
declare const M2M100_LANGUAGES: M2M100Language[];
|
|
361
|
+
declare function isSupportedM2M100Language(code: string | null | undefined): boolean;
|
|
362
|
+
declare function getLanguageLabel(code: string): string;
|
|
363
|
+
declare function getLanguageProgressLabel(progress: LanguageProgressSummary): string;
|
|
364
|
+
//#endregion
|
|
365
|
+
//#region src/options.d.ts
|
|
366
|
+
declare const TRANSLATION_NONE_LANGUAGE = "none";
|
|
367
|
+
declare const defaultTranslationContentFilters: TranslationContentFilters;
|
|
368
|
+
declare function getDefaultRunOptions(config?: Partial<Config> | null, settings?: TranslationPluginSettings): TranslationRunOptions;
|
|
369
|
+
declare function normaliseRunOptions(options?: Partial<TranslationRunOptions>): TranslationRunOptions;
|
|
370
|
+
declare function getSupportedAvailableLanguages(config?: Partial<Config> | null): string[];
|
|
371
|
+
declare function resolveSupportedLanguage(language: unknown, disallow?: string): string | null;
|
|
372
|
+
declare function resolveSourceLanguage(language: unknown): string | null;
|
|
373
|
+
declare function getModelSourceLanguage(sourceLanguage: unknown, options?: Partial<TranslationRunOptions>): string;
|
|
374
|
+
declare function isNoLanguageCode(language: unknown): boolean;
|
|
375
|
+
declare function normaliseLanguageCode(language: string): string;
|
|
376
|
+
//#endregion
|
|
377
|
+
//#region src/results.d.ts
|
|
378
|
+
declare function openTranslationResults(actionId: string, result: unknown): void;
|
|
379
|
+
declare function renderTranslationResults(actionId: string): react_jsx_runtime0.JSX.Element;
|
|
380
|
+
//#endregion
|
|
381
|
+
//#region src/sidebar.d.ts
|
|
382
|
+
declare const translationsPanel: LayoutPanel;
|
|
383
|
+
declare function TranslationsIcon(props: SVGProps<SVGSVGElement>): react_jsx_runtime0.JSX.Element;
|
|
384
|
+
//#endregion
|
|
385
|
+
//#region src/writeback.d.ts
|
|
386
|
+
type TranslationWriteContext = {
|
|
387
|
+
vault: Vault;
|
|
388
|
+
};
|
|
389
|
+
type WritableOccurrenceCheck = {
|
|
390
|
+
writable: TranslationOccurrence[];
|
|
391
|
+
existing: TranslationOccurrence[];
|
|
392
|
+
stale: TranslationOccurrence[];
|
|
393
|
+
};
|
|
394
|
+
declare function getWritableOccurrences(ctx: TranslationWriteContext, target: TranslationTarget): WritableOccurrenceCheck;
|
|
395
|
+
declare function writeTranslationForOccurrence(ctx: TranslationWriteContext, occurrence: TranslationOccurrence, translationText: string): boolean;
|
|
396
|
+
declare function readOccurrenceSourceText(vault: Vault, occurrence: TranslationOccurrence): any;
|
|
397
|
+
declare function readOccurrenceTargetText(vault: Vault, occurrence: TranslationOccurrence): any;
|
|
398
|
+
//#endregion
|
|
399
|
+
//#region src/index.d.ts
|
|
400
|
+
declare const _default: {
|
|
401
|
+
id: string;
|
|
402
|
+
label: string;
|
|
403
|
+
description: string;
|
|
404
|
+
author: string;
|
|
405
|
+
official: true;
|
|
406
|
+
defaultEnabled: false;
|
|
407
|
+
tags: string[];
|
|
408
|
+
supports: {
|
|
409
|
+
apps: string[];
|
|
410
|
+
projectTypes: "Manifest"[];
|
|
411
|
+
};
|
|
412
|
+
};
|
|
413
|
+
declare const settings: PluginSettingsDefinition<TranslationPluginSettings>;
|
|
414
|
+
declare const leftPanels: LayoutPanel[];
|
|
415
|
+
declare const backgroundActions: BackgroundActionDefinition[];
|
|
416
|
+
//#endregion
|
|
417
|
+
export { CanvasLanguageTagResult, CanvasLanguageTagSkip, DetectedManifestLanguage, LanguageMapLike, LanguageProgressSummary, M2M100Language, M2M100_LANGUAGES, MetadataLanguageMapPath, RequiredStatementLanguageMapPath, ResourceLanguageMapPath, TRANSLATIONS_LEFT_PANEL_ID, TRANSLATION_ACTION_ID, TRANSLATION_CACHE_KEY, TRANSLATION_CONFIG_EVENT, TRANSLATION_LANGUAGE_TAG_ACTION_ID, TRANSLATION_LANGUAGE_TAG_TYPE, TRANSLATION_MODEL_ID, TRANSLATION_NONE_LANGUAGE, TRANSLATION_PLUGIN_ID, TextualBodyPath, TranslationActionDependencies, TranslationActionResult, TranslationConfigRequest, TranslationContentFilters, TranslationErrorCode, TranslationEvent, TranslationLanguageProgress, TranslationLanguageTagActionResult, TranslationOccurrence, TranslationPath, TranslationPlanData, TranslationPluginSettings, TranslationPreloadRequest, TranslationResourceRef, TranslationRunOptions, type TranslationRuntimePreference, TranslationRuntimeUsed, TranslationStatus, TranslationTarget, TranslationTaskResult, TranslationTextRequest, TranslationTextResult, TranslationValueFormat, TranslationWorkerClient, TranslationWriteContext, TranslationWritePolicy, TranslationsIcon, WritableOccurrenceCheck, backgroundActions, collectDetectedManifestLanguages, collectTranslationLanguageProgress, collectTranslationTargets, createDisposeRequest, createErrorResponse, createEventEnvelope, createLanguageTag, createPreloadRequest, createSuccessResponse, createTranslateRequest, createTranslationBackgroundAction, createTranslationLanguageTagsBackgroundAction, createTranslationPlan, createTranslationResultResponse, createTranslationTargetKey, createTranslationWorkerClient, _default as default, defaultTranslationContentFilters, fingerprintTranslationText, getDefaultRunOptions, getLanguageLabel, getLanguageMapSourceEntries, getLanguageMapTargetText, getLanguageProgressLabel, getLanguageValueAt, getLanguageValues, getModelSourceLanguage, getSupportedAvailableLanguages, getWritableOccurrences, isHtmlTranslationValue, isNoLanguageCode, isSupportedM2M100Language, leftPanels, normaliseLanguageCode, normaliseRunOptions, normaliseTranslationText, openTranslationResults, queueTranslationRunOptions, readOccurrenceSourceText, readOccurrenceTargetText, renderTranslationConfigModal, renderTranslationResults, requestTranslationConfig, resolveSourceLanguage, resolveSupportedLanguage, selectPrimaryDetectedLanguage, settings, translatePreservingSimpleHtml, translationsPanel, writeTranslationForOccurrence };
|
|
418
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/types.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"],"sourcesContent":[],"mappings":"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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as e,c as t,d as n,f as r,i,l as a,n as o,o as s,p as c,r as l,s as u,t as d,u as f}from"./protocol-DrtPTcz6.js";import{getAvailableLanguagesFromResource as p}from"@iiif/helpers/i18n";import{Modal as m,Sidebar as ee,SidebarContent as te,SidebarHeader as ne}from"@manifest-editor/components";import{useEffect as h,useMemo as g,useState as _}from"react";import{Fragment as v,jsx as y,jsxs as b}from"react/jsx-runtime";import{addReference as x,batchActions as re,importEntities as S}from"@iiif/helpers/vault/actions";import{runBackgroundAction as ie,useAppResource as ae,useAvailableBackgroundActions as oe,useBackgroundActionsStoreApi as se,useConfig as ce,useEditingResource as le,useEditingResourceStack as ue,usePluginRuntimeApi as de}from"@manifest-editor/shell";import{useVault as fe,useVaultSelector as C}from"react-iiif-vault";const w=[{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`}],T=new Set(w.map(e=>e.code));function E(e){return!!e&&T.has(e)}function D(e){return w.find(t=>t.code===e)?.label||e}function O(e){if(!e.total)return`0`;let t=e.existing+(e.suggested||0);return`${Math.round(t/e.total*100)}%`}const k=`none`,A={annotationBodies:!0,canvasLabels:!0};function j(e,t={}){let n=N(e),r=F(t.defaultSourceLanguage)||P(e?.i18n?.defaultLanguage)||n[0]||`en`,i=P(t.defaultSourceLanguage)||P(e?.i18n?.defaultLanguage)||n[0]||`en`;return M({sourceLanguage:r,modelSourceLanguage:i,targetLanguage:P(t.defaultTargetLanguage,i)||n.find(e=>e!==i)||(i===`nl`?`en`:`nl`),runtime:t.runtimePreference,writePolicy:`fill-missing`})}function M(e={}){let t=F(e.sourceLanguage)||`en`,n=I(t,e);return{sourceLanguage:t,modelSourceLanguage:n,targetLanguage:P(e.targetLanguage,n)||(n===`nl`?`en`:`nl`),runtime:me(e.runtime),writePolicy:`fill-missing`,contentFilters:he(e.contentFilters),currentResourceOnly:e.currentResourceOnly===!0}}function N(e){let t=e?.i18n?.availableLanguages||[],n=[];for(let e of t){let t=P(e);t&&!n.includes(t)&&n.push(t)}return n}function P(e,t){if(typeof e!=`string`)return null;let n=L(e);if(!n||n===t)return null;if(E(n))return n;let r=n.split(`-`)[0]||``;return r!==n&&r!==t&&E(r)?r:null}function F(e){return pe(e)?k:P(e)}function I(e,t={}){return P(e)||P(t.modelSourceLanguage)||`en`}function pe(e){return typeof e==`string`&&L(e)===k}function L(e){return e.trim().replace(/_/g,`-`).toLowerCase()}function me(e){return e===`webgpu`||e===`wasm`||e===`auto`?e:`auto`}function he(e){let t=e&&typeof e==`object`?e:{};return{annotationBodies:typeof t.annotationBodies==`boolean`?t.annotationBodies:A.annotationBodies,canvasLabels:typeof t.canvasLabels==`boolean`?t.canvasLabels:A.canvasLabels}}function R(e,t,n){let r={vault:e,options:n,occurrences:[],visited:new Set};W(r,t);let i=new Map;for(let e of r.occurrences){let t=B(e.sourceText);if(!t)continue;let n=_e(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=He(e.status)-He(t.status);return n===0?e.sourceText.localeCompare(t.sourceText):n})}function z(e,t){let n={vault:e,languages:new Map,visited:new Set};return G(n,t),Array.from(n.languages.values()).sort((e,t)=>Ue(e).localeCompare(Ue(t)))}function ge(e,t,n,r=z(e,t).map(e=>e.language)){return r.filter(e=>!!P(e)).map(r=>{let i={language:r,total:0,missing:0,existing:0,suggested:0,skipped:0,stale:0};for(let a of R(e,t,{...n,targetLanguage:r}))i.total+=1,i[a.status]+=1;return i})}function B(e){return e.replace(/\s+/g,` `).trim()}function V(e){return B(e)}function _e(e,t,n,r){return`${t}:${n}:${r}:${e.toLowerCase()}`}function ve(e,t){if(!e)return[];if(typeof e==`string`)return e.trim()?[{sourceMapLanguage:t,sourceIndex:0,sourceText:e}]:[];let n=U(e,t);if(n.length)return n.map((e,n)=>({sourceMapLanguage:t,sourceIndex:n,sourceText:e})).filter(e=>B(e.sourceText));let r=P(t);if(r){let n=Object.keys(e).find(e=>e!==t&&P(e)===r);if(n)return U(e,n).map((e,t)=>({sourceMapLanguage:n,sourceIndex:t,sourceText:e})).filter(e=>B(e.sourceText))}return U(e,`none`).map((e,t)=>({sourceMapLanguage:`none`,sourceIndex:t,sourceText:e})).filter(e=>B(e.sourceText))}function H(e,t,n){return e?typeof e==`string`?t===`none`||n===0?e:``:U(e,t)[n]||``:``}function U(e,t){let n=e[t];return Array.isArray(n)?n.filter(e=>typeof e==`string`):[]}function ye(e,t,n){let r=H(e,t,n);if(B(r))return r;if(!e||typeof e==`string`)return``;let i=P(t);if(i)for(let r of Object.keys(e)){if(r===t||P(r)!==i)continue;let a=H(e,r,n);if(B(a))return a}return U(e,t).find(e=>B(e))||``}function be(e){return/<\/?[a-z][\s\S]*>/i.test(e)}function W(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=Re(e.vault,t);if(r){Te(e,r),Ee(e,r),De(e,r);for(let t of J(r.provider,`Agent`))W(e,t);switch(r.type){case`Manifest`:for(let t of J(r.items,`Canvas`))W(e,t);for(let t of J(r.structures,`Range`))W(e,t);break;case`Canvas`:for(let t of[...J(r.items,`AnnotationPage`),...J(r.annotations,`AnnotationPage`)])W(e,t);break;case`Range`:for(let t of J(r.items))W(e,t);break;case`AnnotationPage`:for(let t of J(r.items,`Annotation`))W(e,t);break;case`Annotation`:Oe(e,r);break}}}function G(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=Re(e.vault,t);if(r){xe(e,r);for(let t of J(r.provider,`Agent`))G(e,t);switch(r.type){case`Manifest`:for(let t of J(r.items,`Canvas`))G(e,t);for(let t of J(r.structures,`Range`))G(e,t);break;case`Canvas`:for(let t of[...J(r.items,`AnnotationPage`),...J(r.annotations,`AnnotationPage`)])G(e,t);break;case`Range`:for(let t of J(r.items))G(e,t);break;case`AnnotationPage`:for(let t of J(r.items,`Annotation`))G(e,t);break;case`Annotation`:for(let t of J(r.body,`ContentResource`))G(e,t);break;case`Choice`:for(let t of J(r.items,`ContentResource`))G(e,t);break}}}function xe(e,t){for(let n of Se(t))typeof n==`string`&&we(e,n,1)}function Se(e){let t=new Set;try{for(let n of p(e))typeof n==`string`&&t.add(n)}catch{}for(let n of Ce(e))t.add(n);return Array.from(t)}function Ce(e){let t=new Set;if(K(t,e?.label),K(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)&&(K(t,n.label),K(t,n.value)),Array.isArray(e?.metadata))for(let n of e.metadata)K(t,n?.label),K(t,n?.value);return Array.from(t)}function K(e,t){if(!(!t||typeof t==`string`))for(let[n,r]of Object.entries(t))Array.isArray(r)&&r.some(e=>typeof e==`string`&&B(e))&&e.add(n)}function we(e,t,n){let r=F(t);if(!r)return;let i=L(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 Te(e,t,n){let r=n||ze(t);q(e,{path:{kind:`resource-language-map`,resource:r,property:`label`},resource:r,propertyLabel:`Label`,value:t.label}),q(e,{path:{kind:`resource-language-map`,resource:r,property:`summary`},resource:r,propertyLabel:`Summary`,value:t.summary})}function Ee(e,t,n){let r=Array.isArray(t.metadata)?t.metadata:[],i=n||ze(t);r.forEach((t,n)=>{q(e,{path:{kind:`metadata-language-map`,resource:i,metadataIndex:n,field:`label`},resource:i,propertyLabel:`Metadata ${n+1} label`,value:t?.label}),q(e,{path:{kind:`metadata-language-map`,resource:i,metadataIndex:n,field:`value`},resource:i,propertyLabel:`Metadata ${n+1} value`,value:t?.value})})}function De(e,t,n){let r=t.requiredStatement;if(!r)return;let i=n||ze(t);q(e,{path:{kind:`required-statement-language-map`,resource:i,field:`label`},resource:i,propertyLabel:`Required statement label`,value:r.label}),q(e,{path:{kind:`required-statement-language-map`,resource:i,field:`value`},resource:i,propertyLabel:`Required statement value`,value:r.value})}function Oe(e,t){let n={id:t.id,type:`Annotation`},r=Ae(e.vault,t);for(let{ref:t,resource:n}of r){let r={...t,label:Be(n,n.id||t.id)};Te(e,n,r),Ee(e,n,r),De(e,n,r)}if(e.options.contentFilters?.annotationBodies===!1)return;let i=r.filter(e=>Fe(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(!B(o))continue;let s=Me(i.filter(e=>Ne(a,e)),e.options.targetLanguage),c=typeof s?.resource.value==`string`?s.resource.value:``;e.occurrences.push({id:ke({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:Be(r,r.id||t.id)},propertyLabel:`Annotation body`,sourceLanguage:e.options.sourceLanguage,sourceMapLanguage:Le(r.language,e.options.sourceLanguage),targetLanguage:e.options.targetLanguage,sourceIndex:0,sourceText:o,targetText:c,valueFormat:r.format===`text/html`||be(o)?`html`:`text`,sourceFingerprint:V(o),status:B(c)?`existing`:`missing`})}}function q(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=ve(t.value,e.options.sourceLanguage);for(let r of n){let n=ye(t.value,e.options.targetLanguage,r.sourceIndex);e.occurrences.push({id:ke(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:be(r.sourceText)?`html`:`text`,sourceFingerprint:V(r.sourceText),status:B(n)?`existing`:`missing`})}}function ke(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 Ae(e,t){let n=[];for(let r of J(t.body,`ContentResource`))je(e,r,n);return n}function je(e,t,n,r){let i=Re(e,t);if(i&&(n.push({ref:t,resource:i,choice:r}),i.type===`Choice`))for(let r of J(i.items,`ContentResource`))je(e,r,n,t)}function Me(e,t){return e.find(({resource:e})=>!Fe(e)||!B(String(e.value||``))?!1:Ie(e.language,t))}function Ne(e,t){return(e?.id||``)===(t.choice?.id||``)}function Pe(e,t){return!Fe(e)||typeof e.value!=`string`?!1:e.language?Ie(e.language,t):!0}function Fe(e){return e?.type===`TextualBody`||e?.type===`Text`}function Ie(e,t){let n=e=>e===t?!0:typeof e==`string`&&P(e)===P(t);return Array.isArray(e)?e.some(n):n(e)}function Le(e,t){return Array.isArray(e)?typeof e[0]==`string`?e[0]:t:typeof e==`string`?e:t}function J(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 Re(e,t){let n=e.get(t,{skipSelfReturn:!1});return n&&typeof n==`object`?n:null}function ze(e){return{id:e.id,type:e.type,label:Be(e,e.id||e.type)}}function Be(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 He(e){switch(e){case`missing`:return 0;case`stale`:return 1;case`skipped`:return 2;case`suggested`:return 3;case`existing`:return 4}}function Ue(e){return e.language}const Y=`@manifest-editor/translation:config`;function We(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(Y,{detail:{...e,resolve:r}}))})}function Ge(e){return y(Ke,{actionId:e})}function Ke({actionId:e}){let[t,n]=_(null),[i,a]=_(M({}));h(()=>{let t=t=>{let r=t.detail;r?.actionId===e&&(n(r),a(M(r.defaults)))};return window.addEventListener(Y,t),()=>window.removeEventListener(Y,t)},[e]),h(()=>{if(!t?.signal)return;if(t.signal.aborted){n(null);return}let e=()=>n(null);return t.signal.addEventListener(`abort`,e,{once:!0}),()=>t.signal?.removeEventListener(`abort`,e)},[t]);let o=t?.detectedLanguages||[],s=g(()=>o.map(e=>e.language),[o]);h(()=>{!s.length||s.includes(i.sourceLanguage)||a(e=>s.includes(e.sourceLanguage)?e:M({...e,sourceLanguage:s[0]}))},[s.join(`|`),i.sourceLanguage]);let c=g(()=>t?.getTargets?.(i)||t?.targets||[],[t,i]),l=g(()=>c.filter(e=>e.status===`missing`).length,[c]),u=g(()=>t?.getTargetLanguageProgress?.(i)||[],[t,i]),d=g(()=>[{label:`Detected in manifest`,options:o.map(e=>({value:e.language,label:D(e.language)}))}],[o]),f=g(()=>Je(u),[u]),p=(e,t)=>{a(n=>M({...n,contentFilters:{...n.contentFilters,[e]:t}}))};if(!t)return null;let ee=e=>{t.resolve(e===!1?!1:M(e)),n(null)},te=I(i.sourceLanguage,i)===i.targetLanguage,ne=i.currentResourceOnly===!0&&!!t.currentResource,x=s.length===0||te||l===0;return y(m,{title:`Run translations`,onClose:()=>ee(!1),className:`max-w-xl`,actions:b(`div`,{className:`flex gap-2`,children:[y(`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:()=>ee(!1),children:`Cancel`}),y(`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:()=>ee(i),children:`Run translation`})]}),children:b(`div`,{className:`flex flex-col gap-3 p-3 text-sm text-zinc-700`,children:[b(`div`,{className:`flex flex-col gap-2 border-b border-zinc-100 pb-3`,children:[b(`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:[y(Ye,{label:`From`,value:i.sourceLanguage,groups:d,emptyLabel:`No detected languages`,onChange:e=>a(t=>M({...t,sourceLanguage:e}))}),y(`span`,{className:`mb-[7px] text-zinc-300 select-none`,children:`→`}),y(Ye,{label:`To`,value:i.targetLanguage,groups:f,onChange:e=>a(t=>M({...t,targetLanguage:e}))}),b(`label`,{className:`col-span-3 grid shrink-0 gap-1 sm:col-span-1`,children:[y(`span`,{className:`text-[10px] font-medium uppercase tracking-wide text-zinc-400`,children:`Mode`}),b(`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:i.runtime,onChange:e=>a(t=>M({...t,runtime:e.target.value})),children:[y(`option`,{value:`auto`,children:`Auto`}),y(`option`,{value:`webgpu`,children:`WebGPU`}),y(`option`,{value:`wasm`,children:`WASM`})]})]})]}),b(`div`,{className:`flex flex-wrap items-center gap-2`,children:[b(`label`,{className:`flex items-center gap-2 text-xs ${t.currentResource?`text-zinc-600`:`text-zinc-300`}`,title:t.currentResource?.label||t.currentResource?.id,children:[y(`input`,{type:`checkbox`,className:`h-3.5 w-3.5 rounded border-zinc-300`,checked:ne,disabled:!t.currentResource,onChange:e=>a(t=>M({...t,currentResourceOnly:e.currentTarget.checked}))}),`Current resource`]}),y(qe,{filters:i.contentFilters,onChange:p})]})]}),s.length===0?y(`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,te?y(`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,b(`div`,{className:`rounded border border-zinc-200 bg-zinc-50 px-2.5 py-2`,children:[b(`div`,{className:`text-xs text-zinc-500`,children:[l>0?b(v,{children:[y(`span`,{className:`font-semibold text-amber-600`,children:l}),` missing`]}):y(`span`,{className:`text-zinc-400`,children:`No missing strings`}),c.length>0?b(v,{children:[y(`span`,{className:`text-zinc-300`,children:` · `}),y(`span`,{children:c.length}),` total`]}):null]}),b(`div`,{className:`mt-1 text-xs text-zinc-500`,children:[`Missing target-language values will be filled using `,r,`. Existing target values are left unchanged.`]})]})]})})}function qe({filters:e,onChange:t}){return b(`details`,{className:`relative shrink-0`,children:[y(`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`}),b(`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:[b(`label`,{className:`flex items-center gap-2`,children:[y(`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`]}),b(`label`,{className:`flex items-center gap-2`,children:[y(`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 Je(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:`${D(e.language)} (${O(e)})`}))}),n.push({label:`All languages`,options:w.filter(e=>!t.has(e.code)).map(e=>({value:e.code,label:e.label}))}),n}function Ye({label:e,value:t,groups:n,emptyLabel:r=`No languages available`,onChange:i}){let a=n.some(e=>e.options.length),o=n.some(e=>e.options.some(e=>e.value===t));return b(`label`,{className:`grid min-w-0 flex-1 gap-1`,children:[y(`span`,{className:`text-[10px] font-medium uppercase tracking-wide text-zinc-400`,children:e}),b(`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:[o?null:y(`option`,{value:t,disabled:!0,children:a?D(t):r}),n.map(e=>e.options.length?y(`optgroup`,{label:e.label,children:e.options.map(e=>y(`option`,{value:e.value,children:e.label},e.value))},e.label):null)]})]})}const Xe=new Set([`br`,`hr`,`img`,`input`,`meta`,`link`,`area`,`base`,`col`,`embed`,`param`,`source`,`track`,`wbr`]);async function Ze(e,t){let n=Qe(e);if(!n||!$e(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 Qe(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 $e(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(`/>`)||Xe.has(i)||t.push(i)}return t.length===0}function et(){return typeof crypto<`u`&&`randomUUID`in crypto?crypto.randomUUID():`translation-${Date.now()}-${Math.random().toString(16).slice(2)}`}function tt(e={}){let t=e.worker??new Worker(new URL(`./translation-worker.js`,import.meta.url),{type:`module`}),n=new Set,r=new Map,a=!1,o=e=>{for(let t of n)t(e)},c=e=>{for(let t of r.values())t.reject(e);r.clear()};t.addEventListener(`message`,e=>{let t=e.data;if(t.kind===`event`){o(t.payload);return}let n=r.get(t.requestId);if(n){if(r.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)}}),t.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}),c(t)});let l=(e,n)=>{if(a)return Promise.reject(Error(`The translation worker client has been terminated.`));let o=et(),c=e===`translate`?s(o,n.payload):e===`dispose`?d(o):i(o,n.payload);return new Promise((n,i)=>{r.set(o,{command:e,resolve:e=>n(e),reject:i}),t.postMessage(c)})};return{async preload(e){await l(`preload`,{payload:e})},translate(e){return l(`translate`,{payload:e})},onEvent(e){return n.add(e),()=>{n.delete(e)}},terminate(){a||(a=!0,t.postMessage(d(et())),t.terminate(),c(Error(`The translation worker client has been terminated.`)))}}}const nt=`@manifest-editor/translation:results`;function rt(e,t){typeof window>`u`||window.dispatchEvent(new CustomEvent(nt,{detail:{actionId:e,result:t}}))}function it(e){return y(at,{actionId:e})}function at({actionId:e}){let[t,n]=_(null);return h(()=>{let t=t=>{let r=t.detail;r?.actionId===e&&r.result&&n(r.result)};return window.addEventListener(nt,t),()=>window.removeEventListener(nt,t)},[e]),t?y(m,{title:`Translation results`,onClose:()=>n(null),className:`max-w-4xl`,children:b(`div`,{className:`flex min-h-0 flex-col gap-4 p-4 text-sm text-zinc-700`,children:[b(`div`,{className:`grid grid-cols-3 gap-2 sm:grid-cols-6`,children:[y(X,{label:`Strings`,value:t.total}),y(X,{label:`Translated`,value:t.translated}),y(X,{label:`Applied`,value:t.applied}),y(X,{label:`Existing`,value:t.existing}),y(X,{label:`Stale`,value:t.stale}),y(X,{label:`Skipped`,value:t.skipped+t.errors})]}),t.translations.length?b(`div`,{className:`rounded border border-zinc-200`,children:[y(`div`,{className:`border-b border-zinc-200 bg-zinc-50 px-3 py-2 font-medium`,children:`Translated strings`}),y(`div`,{className:`max-h-64 overflow-auto`,children:t.translations.map(e=>b(`div`,{className:`grid gap-1.5 border-b border-zinc-100 px-3 py-2.5 last:border-0`,children:[y(`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}),y(`div`,{className:`text-xs font-medium text-zinc-900 line-clamp-2`,children:e.translationText}),b(`div`,{className:`text-[11px] text-zinc-400`,children:[e.applied,` occurrence`,e.applied===1?``:`s`]})]},e.key))})]}):null,t.skippedTargets.length?b(`div`,{className:`rounded border border-zinc-200`,children:[y(`div`,{className:`border-b border-zinc-200 bg-zinc-50 px-3 py-2 font-medium`,children:`Skipped strings`}),y(`div`,{className:`max-h-56 overflow-auto`,children:t.skippedTargets.map(e=>b(`div`,{className:`grid gap-1 border-b border-zinc-100 px-3 py-2 last:border-0`,children:[y(`div`,{className:`line-clamp-2 font-medium text-zinc-900`,children:e.sourceText}),y(`div`,{className:`text-zinc-500`,children:e.reason})]},`${e.key}-${e.reason}`))})]}):null]})}):null}function X({label:e,value:t}){return b(`div`,{className:`rounded border border-zinc-200 bg-zinc-50 px-2.5 py-2`,children:[y(`div`,{className:`text-base font-semibold text-zinc-900`,children:t}),y(`div`,{className:`text-[10px] uppercase tracking-wide text-zinc-400`,children:e})]})}function ot(e,t){let n=[],r=[],i=[];for(let a of t.occurrences){if(V(ct(e.vault,a))!==a.sourceFingerprint){i.push(a);continue}if(B(ht(e.vault,a))){r.push(a);continue}n.push(a)}return{writable:n,existing:r,stale:i}}function st(e,t,n){let r=n.trim();if(!r)return!1;switch(t.path.kind){case`resource-language-map`:return ut(e.vault,t.path.resource,t.path.property,t,r),!0;case`metadata-language-map`:return dt(e.vault,t.path,t,r),!0;case`required-statement-language-map`:return ft(e.vault,t.path,t,r),!0;case`textual-body`:return pt(e.vault,t,r),!0}}function ct(e,t){if(t.path.kind===`textual-body`){let n=Z(e,t.path.body);return typeof n?.value==`string`?n.value:``}return H(mt(e,t.path),t.sourceMapLanguage,t.sourceIndex)}function lt(e,t){if(t.path.kind===`textual-body`){let n=vt(e,t);return typeof n?.value==`string`?n.value:``}return H(mt(e,t.path),t.targetLanguage,t.sourceIndex)}function ut(e,t,n,r,i){let a=gt(Z(e,t)?.[n],r.sourceMapLanguage,r.sourceText,r.targetLanguage,r.sourceIndex,i);e.modifyEntityField(t,n,a)}function dt(e,t,n,r){let i=Z(e,t.resource),a=Array.isArray(i?.metadata)?[...i.metadata]:[],o=a[t.metadataIndex]||{label:{},value:{}};a[t.metadataIndex]={...o,[t.field]:gt(o[t.field],n.sourceMapLanguage,n.sourceText,n.targetLanguage,n.sourceIndex,r)},e.modifyEntityField(t.resource,`metadata`,a)}function ft(e,t,n,r){let i=Z(e,t.resource)?.requiredStatement||{},a={label:{none:[``]},value:{none:[``]},...i,[t.field]:gt(i[t.field],n.sourceMapLanguage,n.sourceText,n.targetLanguage,n.sourceIndex,r)};e.modifyEntityField(t.resource,`requiredStatement`,a)}function pt(e,t,n){if(t.path.kind!==`textual-body`)return;let r=vt(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=Z(e,t.path.body),a=Ct(t),o={id:a,type:`ContentResource`};if(t.path.choice){e.dispatch(S({entities:{ContentResource:{[a]:{id:a,type:`TextualBody`,format:i?.format||(t.valueFormat===`html`?`text/html`:`text/plain`),value:n,language:t.targetLanguage}}}}));let r=Z(e,t.path.choice),s=Array.isArray(r?.items)?r.items:[];e.modifyEntityField(t.path.choice,`items`,[...s,o]);return}e.dispatch(re({actions:[S({entities:{ContentResource:{[a]:{id:a,type:`TextualBody`,format:i?.format||(t.valueFormat===`html`?`text/html`:`text/plain`),value:n,language:t.targetLanguage}}}}),x({id:t.path.annotation.id,type:`Annotation`,key:`body`,reference:o})]}))}function mt(e,t){if(t.kind===`textual-body`)return null;let n=Z(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 ht(e,t){return t.path.kind===`textual-body`?lt(e,t):ye(mt(e,t.path),t.targetLanguage,t.sourceIndex)}function gt(e,t,n,r,i,a){let o=_t(e,t,n),s=[...o[r]||[]];for(;s.length<=i;)s.push(``);return s[i]=a,o[r]=s,o}function _t(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 vt(e,t){if(t.path.kind!==`textual-body`)return null;if(t.path.targetBody){let n=Z(e,t.path.targetBody);if(n)return n}let n=t.path.body.id,r=Z(e,t.path.annotation),i=t.path.choice?.id||``;return yt(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:wt(e.language,t.targetLanguage))?.resource||null}function yt(e,t){let n=[];for(let r of St(t?.body,`ContentResource`))bt(e,r,n);return n.filter(({resource:e})=>xt(e))}function bt(e,t,n,r){let i=Z(e,t);if(i&&(n.push({ref:t,resource:i,choice:r}),i.type===`Choice`))for(let r of St(i.items,`ContentResource`))bt(e,r,n,t)}function xt(e){return e?.type===`TextualBody`||e?.type===`Text`}function St(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 Ct(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`${Tt(t)}/translation/${encodeURIComponent(e.targetLanguage)}/${Et(n)}`}function wt(e,t){let n=e=>e===t?!0:typeof e==`string`&&P(e)===P(t);return Array.isArray(e)?e.some(n):n(e)}function Z(e,t){if(!t?.id||!t.type)return null;let n=e.get(t,{skipSelfReturn:!1});return n&&typeof n==`object`?n:null}function Tt(e){return e.endsWith(`/`)?e.slice(0,-1):e}function Et(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 Dt=new Map;function Ot(e,t){Dt.set(e,M(t))}function kt(e={}){let t=e.createClient||tt,n=e.collectTargets||R,r=e.requestConfig||Mt,i=e.translateHtml||Ze,o=null,s=()=>(o||=t(),o),l=(e=o)=>{e&&(e.terminate(),o===e&&(o=null))};return{id:a,label:`Run translation`,summary:`Translate missing manifest strings with M2M100`,section:`Translations`,order:30,resourceTypes:[`Manifest`],resumable:!0,render:e=>b(v,{children:[Ge(e.definition.id),it(e.definition.id)]}),onResults:e=>rt(e.definition.id,e.instance?.result),supports:e=>e.vault.get(e.target)?.type===`Manifest`,prepare:async e=>{let t=e.plugins.getSettings(c),i=j(e.config,t),a=n(e.vault,jt(e,i),i),o=Dt.get(e.instanceKey)||await r(e,a,i);if(Dt.delete(e.instanceKey),o===!1)return!1;let s=M(o);return At(n(e.vault,jt(e,s),s),s)},run:async e=>{let t=Nt(e.plan),n=M(t?.options||j(e.config)),r=e.tasks.getAll(),a=e.tasks.getPending(),o={vault:e.vault};if(e.setActionLabel(`Running translation`),!r.length)return e.setActionStatus(`running`,`No translatable strings found`),e.setActionProgress({current:0,total:0,label:`No strings`}),Lt(0);if(a.length){let t=s(),r=t.onEvent(t=>zt(e,t)),a=()=>l(t);e.signal.addEventListener(`abort`,a,{once:!0});try{Ht(e.signal),e.setActionStatus(`running`,`Loading translation model`),await t.preload({runtime:n.runtime}),await e.tasks.runEach(async(r,{index:a,total:s})=>{Ht(e.signal);let c=r.input;if(!c)return Ft(`Missing translation target`,r.id,``,0,0);e.appendActionLog(`Translating ${a+1}/${s}`,`info`,{key:c.key,sourceLanguage:c.sourceLanguage,targetLanguage:c.targetLanguage});let u=ot(o,c);if(!u.writable.length)return Ft(Rt(u.existing.length,u.stale.length),c.key,c.sourceText,u.existing.length,u.stale.length);let d;try{d=await Pt(t,c,n,i)}catch(e){throw Ut(e)&&l(t),e}if(!d)return Ft(`HTML could not be parsed for safe translation`,c.key,c.sourceText,u.existing.length,u.stale.length);let f=0,p=u.existing.length,m=u.stale.length;for(let e of u.writable){let t=ot(o,{...c,occurrences:[e]});if(t.stale.length){m+=t.stale.length;continue}if(t.existing.length){p+=t.existing.length;continue}st(o,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}}:Ft(`No missing occurrences remained`,c.key,c.sourceText,p,m)},{progressLabel:(e,t,n)=>`Translating strings ${t+1}/${n}`})}catch(e){throw l(t),e}finally{e.signal.removeEventListener(`abort`,a),r()}}let c=It(t?.totalTargets||r.length,e.tasks.getAll());return e.setActionStatus(`running`,`Applied ${c.applied} translations`),e.setActionProgress({current:c.total,total:c.total,label:`Translations complete`}),c}}}function At(e,t){return{version:1,data:{options:M(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:Vt(e),target:Bt(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 jt(e,t){return t.currentResourceOnly&&e.currentCanvas?{id:e.currentCanvas.id,type:e.currentCanvas.type,label:e.currentCanvas.label}:e.target}async function Mt(e,t,n){let r=z(e.vault,e.target),i=r.map(e=>e.language);return We({actionId:e.definition.id,instanceKey:e.instanceKey,defaults:n,targets:t,availableLanguages:N(e.config),detectedLanguages:r,currentResource:e.currentCanvas?{id:e.currentCanvas.id,type:e.currentCanvas.type,label:e.currentCanvas.label}:void 0,getTargets:t=>R(e.vault,jt(e,M(t)),M(t)),getTargetLanguageProgress:t=>ge(e.vault,jt(e,M(t)),M(t),i),signal:e.signal})}function Nt(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:I(t.sourceLanguage,n),targetLanguage:t.targetLanguage,runtime:n.runtime})).text;return t.valueFormat===`html`?r(t.sourceText,i):i(t.sourceText)}function Ft(e,t,n,r,i){return{taskStatus:`skipped`,statusText:e,result:{type:`skipped`,key:t,sourceText:n,reason:e,existing:r,stale:i}}}function It(e,t){let n=Lt(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 Lt(e){return{total:e,translated:0,applied:0,skipped:0,existing:0,stale:0,errors:0,translations:[],skippedTargets:[]}}function Rt(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 zt(e,t){switch(t.type){case`model-progress`:e.setActionStatus(`running`,`Loading model ${Math.round(t.progress)}% (${Wt(t.loaded)} / ${Wt(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 Bt(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 Vt(e){let t=e.normalisedSourceText||e.sourceText||`Translation string`;return t.length>80?`${t.slice(0,77)}...`:t}function Ht(e){if(e.aborted)throw Error(`Translation cancelled.`)}function Ut(e){return e instanceof Error&&(e.name===`model_load_failed`||e.name===`worker_failed`)}function Wt(e){return e?`${Math.round(e/1024/1024)} MB`:`0 MB`}const Gt=`language`,Kt=[{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 qt(){return{id:n,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=>Xt(en(e)),run:async e=>{let t=e.tasks.getAll(),n=e.tasks.getPending();if(e.setActionLabel(`Tagging canvas languages`),!t.length){let t=Qt(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})=>{fn(e.signal);let i=t.input,a=t.target?.id||i?.canvasId||t.id,o=tn(e,a),s=ln(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),Zt(t)}let c=nn(e,o),l=Yt(c);if(!l){e.tags.removeTag({id:a,type:`Canvas`},Gt);let t={canvasId:a,canvasLabel:s,reason:`No supported language detected`};return e.appendActionLog(`Skipped language tag`,`warn`,t),Zt(t)}let u=Jt(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=$t(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 Jt(e){let t=un(e);return{type:Gt,id:e,label:e,backgroundColor:t.backgroundColor,textColor:t.textColor}}function Yt(e){return e[0]||null}function Xt(e){return{version:1,tasks:e.map((e,t)=>{let n=e?.id||`canvas-${t+1}`,r=ln(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 Zt(e){return{taskStatus:`skipped`,statusText:e.reason,result:{type:`skipped`,skip:e}}}function Qt(e){return{total:e,tagged:0,skipped:0,counts:{},tags:[],skippedCanvases:[]}}function $t(e){let t=Qt(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 en(e){let t=e.vault.get(e.target);return t?.items?(e.vault.get(t.items)||[]).filter(Boolean):[]}function tn(e,t){return e.vault.get({id:t,type:`Canvas`})}function nn(e,t){let n=an(e,t)||t,r=rn(n),i=[],a=new Set;for(let e of r){let t=typeof e==`string`?e:``,n=F(t);!n||a.has(n)||(a.add(n),i.push({language:n,count:1,iiifLanguages:[t]}))}return on(i,n)}function rn(e){let t=new Set;for(let n of p(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 an(e,t){if(!t?.id)return null;try{return e.vault.toPresentation3({id:t.id,type:`Canvas`})}catch{return null}}function on(e,t){if(e.length<2||sn(t))return e;let n=cn(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 sn(e){return!!(Array.isArray(e?.items)&&e.items.length||Array.isArray(e?.annotations)&&e.annotations.length)}function cn(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=F(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 ln(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 un(e){return Kt[Math.abs(dn(e))%Kt.length]||Kt[0]}function dn(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 fn(e){if(e.aborted)throw Error(`Language tagging cancelled.`)}const pn={id:t,label:`Translations`,icon:y(mn,{}),render:()=>y(hn,{})};function mn(e){return y(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,...e,children:y(`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 hn(){let e=ce(),t=ae(),n=vn(t),r=de().getSettings(c),i=g(()=>j(e,r),[e,r]),[a,o]=_(i),[s,l]=_(`missing`);h(()=>{o(i)},[i.sourceLanguage,i.targetLanguage,i.runtime]);let u=C((e,n)=>z(n,t),[t.id,t.type]),d=g(()=>u.map(e=>e.language),[u]),f=d.join(`|`);h(()=>{!d.length||d.includes(a.sourceLanguage)||o(e=>d.includes(e.sourceLanguage)?e:M({...e,sourceLanguage:d[0]}))},[f,a.sourceLanguage]);let p=C((e,n)=>R(n,t,a),[t.id,t.type,a.sourceLanguage,a.targetLanguage,a.runtime,a.contentFilters.annotationBodies,a.contentFilters.canvasLabels]),m=C((e,t)=>R(t,n,a),[n.id,n.type,a.sourceLanguage,a.targetLanguage,a.runtime,a.contentFilters.annotationBodies,a.contentFilters.canvasLabels]),x=C((e,n)=>ge(n,t,a,d),[t.id,t.type,a.sourceLanguage,a.runtime,a.contentFilters.annotationBodies,a.contentFilters.canvasLabels,f]),re=fe(),S=gn(),oe=se(),le=g(()=>[{label:`Detected in manifest`,options:u.map(e=>({value:e.language,label:D(e.language)}))}],[u]),ue=g(()=>xn(x),[x]),w=g(()=>(e.i18n?.availableLanguages||[]).filter(e=>!P(e)&&!pe(e)),[e.i18n?.availableLanguages]),T=g(()=>On(p),[p]),E=g(()=>On(m),[m]),O=S?.instance?.status===`preparing`||S?.instance?.status===`running`,k=I(a.sourceLanguage,a)===a.targetLanguage,A=!!S&&!O&&d.length>0&&!k&&T.missing>0,N=e=>{o(t=>M({...t,...e}))},F=(e,t)=>{o(n=>M({...n,contentFilters:{...n.contentFilters,[e]:t}}))},L=()=>{!S||!A||(Ot(S.instanceKey,a),ie({store:oe,context:S.context}))},me=g(()=>s===`current`?m:s===`all`?p:p.filter(e=>e.status===s),[p,m,s]),he=[{key:`all`,label:`All`,count:p.length},{key:`current`,label:`Current resource`,count:E.total,title:`Current ${n.type.toLowerCase()}`},{key:`missing`,label:`Missing`,count:T.missing},{key:`existing`,label:`Done`,count:T.existing},{key:`stale`,label:`Stale`,count:T.stale}];return b(ee,{children:[y(ne,{title:`Translations`}),b(te,{className:`flex min-h-0 flex-col gap-0 p-0`,children:[b(`div`,{className:`flex flex-col gap-2 border-b border-zinc-100 p-3`,children:[b(`div`,{className:`flex items-end gap-1.5`,children:[y(Sn,{label:`From`,value:a.sourceLanguage,groups:le,emptyLabel:`No detected languages`,onChange:e=>N({sourceLanguage:e})}),y(`span`,{className:`mb-[7px] text-zinc-300 select-none`,children:`→`}),y(Sn,{label:`To`,value:a.targetLanguage,groups:ue,onChange:e=>N({targetLanguage:e})}),b(`label`,{className:`grid shrink-0 gap-1`,children:[y(`span`,{className:`text-[10px] font-medium uppercase tracking-wide text-zinc-400`,children:`Mode`}),b(`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:a.runtime,onChange:e=>N({runtime:e.target.value}),children:[y(`option`,{value:`auto`,children:`Auto`}),y(`option`,{value:`webgpu`,children:`WebGPU`}),y(`option`,{value:`wasm`,children:`WASM`})]})]})]}),w.length?b(`div`,{className:`rounded border border-amber-200 bg-amber-50 px-2.5 py-2 text-xs text-amber-800`,children:[`Unsupported languages: `,w.join(`, `)]}):null,d.length===0?y(`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,k?y(`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,b(`div`,{className:`flex flex-wrap items-center gap-2`,children:[b(`div`,{className:`min-w-[7rem] flex-1 text-xs text-zinc-500`,children:[T.missing>0&&b(v,{children:[y(`span`,{className:`font-semibold text-amber-600`,children:T.missing}),` missing`]}),T.missing>0&&T.existing>0&&y(`span`,{className:`text-zinc-300`,children:` · `}),T.existing>0&&b(v,{children:[y(`span`,{className:`font-semibold text-green-600`,children:T.existing}),` done`]}),T.stale>0&&b(v,{children:[y(`span`,{className:`text-zinc-300`,children:` · `}),y(`span`,{className:`font-semibold text-red-500`,children:T.stale}),` stale`]}),p.length===0&&y(`span`,{className:`text-zinc-400`,children:`No strings found`})]}),y(`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:!A,onClick:L,title:A?`Translate ${T.missing} missing string${T.missing===1?``:`s`}`:void 0,children:O?b(v,{children:[y(Dn,{className:`h-3 w-3 animate-spin`}),`Running…`]}):b(v,{children:[y(En,{className:`h-3 w-3`}),`Translate`]})}),y(bn,{filters:a.contentFilters,onChange:F})]})]}),p.length>0&&y(`div`,{className:`flex shrink-0 overflow-x-auto border-b border-zinc-100 bg-zinc-50/50`,children:he.filter(e=>e.key===`all`||e.key===`current`||e.count>0).map(e=>b(`button`,{type:`button`,className:`flex shrink-0 items-center gap-1 whitespace-nowrap px-3 py-2 text-xs font-medium transition-colors ${s===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:()=>l(e.key),children:[e.label,y(`span`,{className:`text-[10px] ${s===e.key?`text-me-primary-400`:`text-zinc-400`}`,children:e.count})]},e.key))}),y(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:me.length?me.map(e=>y(yn,{target:e,onSave:t=>{for(let n of e.occurrences)st({vault:re},n,t)}},e.key)):y(`div`,{className:`px-4 py-8 text-center text-xs text-zinc-400`,children:p.length===0?`No translatable strings found.`:s===`current`?`No current resource strings.`:`No ${s} strings.`})})]})]})}function gn(){return _n(a)}function _n(e){let t=oe();return g(()=>t.flatMap(e=>e.actions).find(t=>t.definition.id===e)||null,[t,e])}function vn(e){let t=le(),n=ue();return g(()=>{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 yn({target:e,onSave:t}){let n=e.occurrences[0],r=kn(e.occurrences),[i,a]=_(r),o=e.status===`existing`||e.status===`suggested`,[s,c]=_(!o);return h(()=>{a(r)},[r]),b(`div`,{className:`border-b border-zinc-100 last:border-0 ${o&&!s?`opacity-60`:``}`,children:[b(`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:()=>c(e=>!e),children:[b(`div`,{className:`min-w-0 flex-1`,children:[y(`span`,{className:`block truncate text-xs font-semibold text-zinc-800`,children:n?.resource.label||n?.resource.id}),b(`span`,{className:`text-[11px] text-zinc-400`,children:[n?.propertyLabel||`String`,e.occurrences.length>1?` · ${e.occurrences.length}×`:``]})]}),y(wn,{status:e.status}),y(Tn,{expanded:s})]}),s&&b(`div`,{className:`px-3 pb-3`,children:[b(`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:[y(`div`,{className:`mb-1 text-[10px] font-semibold uppercase tracking-widest text-me-primary-400`,children:`Source`}),e.sourceText]}),y(`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:`${D(e.targetLanguage)} translation…`,onChange:e=>a(e.target.value),onBlur:()=>{i.trim()!==r.trim()&&t(i)}})]})]})}function bn({filters:e,onChange:t}){return b(`details`,{className:`relative shrink-0`,children:[y(`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`}),b(`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:[b(`label`,{className:`flex items-center gap-2`,children:[y(`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`]}),b(`label`,{className:`flex items-center gap-2`,children:[y(`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 xn(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:`${D(e.language)} (${O(e)})`}))}),n.push({label:`All languages`,options:w.filter(e=>!t.has(e.code)).map(e=>({value:e.code,label:e.label}))}),n}function Sn({label:e,value:t,groups:n,emptyLabel:r=`No languages available`,onChange:i}){let a=n.some(e=>e.options.length),o=n.some(e=>e.options.some(e=>e.value===t));return b(`label`,{className:`grid min-w-0 flex-1 gap-1`,children:[y(`span`,{className:`text-[10px] font-medium uppercase tracking-wide text-zinc-400`,children:e}),b(`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:[o?null:y(`option`,{value:t,disabled:!0,children:a?D(t):r}),n.map(e=>e.options.length?y(`optgroup`,{label:e.label,children:e.options.map(e=>y(`option`,{value:e.value,children:e.label},e.value))},e.label):null)]})]})}const Cn={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 wn({status:e}){let t=Cn[e]||Cn.skipped;return b(`span`,{className:`flex shrink-0 items-center gap-1 text-[10px] font-medium ${t.text}`,children:[y(`span`,{className:`h-1.5 w-1.5 rounded-full ${t.dot}`}),t.label]})}function Tn({expanded:e}){return y(`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:y(`path`,{d:`M6 9l6 6 6-6`})})}function En({className:e}){return y(`svg`,{className:e,viewBox:`0 0 24 24`,fill:`currentColor`,children:y(`path`,{d:`M8 5v14l11-7z`})})}function Dn({className:e}){return b(`svg`,{className:e,viewBox:`0 0 24 24`,fill:`none`,children:[y(`circle`,{cx:`12`,cy:`12`,r:`9`,stroke:`currentColor`,strokeWidth:`2.5`,strokeOpacity:`0.3`}),y(`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 kn(e){for(let t of e)if(t.targetText?.trim())return t.targetText;return``}var An={id:c,label:`Translations`,description:`Review manifest strings and fill missing translations with M2M100.`,author:`Digirati`,official:!0,defaultEnabled:!1,tags:[`translation`,`i18n`,`automation`],supports:{apps:[`manifest-editor`],projectTypes:[`Manifest`]}};const jn={defaults:{runtimePreference:`auto`},fields:[{id:`defaultSourceLanguage`,label:`Default source language`,type:`text`,description:`Optional M2M100 source language code. Falls back to the editor default language.`,placeholder:`en`},{id:`defaultTargetLanguage`,label:`Default target language`,type:`text`,description:`Optional M2M100 target language code. Falls back to another configured editor language.`,placeholder:`nl`},{id:`runtimePreference`,label:`Runtime preference`,type:`select`,description:`WebGPU is attempted first in Auto mode, then WASM is used as a fallback.`,options:[{label:`Auto`,value:`auto`},{label:`WebGPU`,value:`webgpu`},{label:`WASM`,value:`wasm`}]}]},Mn=[pn],Nn=[kt(),qt()];export{w as M2M100_LANGUAGES,t as TRANSLATIONS_LEFT_PANEL_ID,a as TRANSLATION_ACTION_ID,f as TRANSLATION_CACHE_KEY,Y as TRANSLATION_CONFIG_EVENT,n as TRANSLATION_LANGUAGE_TAG_ACTION_ID,Gt as TRANSLATION_LANGUAGE_TAG_TYPE,r as TRANSLATION_MODEL_ID,k as TRANSLATION_NONE_LANGUAGE,c as TRANSLATION_PLUGIN_ID,mn as TranslationsIcon,Nn as backgroundActions,z as collectDetectedManifestLanguages,ge as collectTranslationLanguageProgress,R as collectTranslationTargets,d as createDisposeRequest,o as createErrorResponse,l as createEventEnvelope,Jt as createLanguageTag,i as createPreloadRequest,e as createSuccessResponse,s as createTranslateRequest,kt as createTranslationBackgroundAction,qt as createTranslationLanguageTagsBackgroundAction,At as createTranslationPlan,u as createTranslationResultResponse,_e as createTranslationTargetKey,tt as createTranslationWorkerClient,An as default,A as defaultTranslationContentFilters,V as fingerprintTranslationText,j as getDefaultRunOptions,D as getLanguageLabel,ve as getLanguageMapSourceEntries,ye as getLanguageMapTargetText,O as getLanguageProgressLabel,H as getLanguageValueAt,U as getLanguageValues,I as getModelSourceLanguage,N as getSupportedAvailableLanguages,ot as getWritableOccurrences,be as isHtmlTranslationValue,pe as isNoLanguageCode,E as isSupportedM2M100Language,Mn as leftPanels,L as normaliseLanguageCode,M as normaliseRunOptions,B as normaliseTranslationText,rt as openTranslationResults,Ot as queueTranslationRunOptions,ct as readOccurrenceSourceText,lt as readOccurrenceTargetText,Ge as renderTranslationConfigModal,it as renderTranslationResults,We as requestTranslationConfig,F as resolveSourceLanguage,P as resolveSupportedLanguage,Yt as selectPrimaryDetectedLanguage,jn as settings,Ze as translatePreservingSimpleHtml,pn as translationsPanel,st as writeTranslationForOccurrence};
|
|
2
|
+
//# sourceMappingURL=index.js.map
|