@museumwnf/viewer-layout 2.14.0 → 2.15.1

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.
@@ -0,0 +1,967 @@
1
+ import { Fragment as e, computed as t, createBlock as n, createCommentVNode as r, createElementBlock as i, createElementVNode as a, createTextVNode as o, createVNode as s, getCurrentInstance as c, mergeProps as l, normalizeClass as u, onBeforeUnmount as d, openBlock as f, ref as p, renderList as m, renderSlot as h, resolveDynamicComponent as g, toDisplayString as _, unref as v, useId as y, useSlots as b, vModelText as x, watch as S, withCtx as C, withDirectives as w, withKeys as T, withModifiers as E } from "vue";
2
+ import { useI18n as D } from "@museumwnf/viewer-core/i18n";
3
+ import { sourceUrl as ee } from "@museumwnf/viewer-core";
4
+ import { useRoute as O } from "vue-router";
5
+ //#region src/content/SmartLink.vue
6
+ var te = [
7
+ "href",
8
+ "target",
9
+ "rel"
10
+ ], k = {
11
+ __name: "SmartLink",
12
+ props: {
13
+ to: {
14
+ type: [String, Object],
15
+ default: null
16
+ },
17
+ href: {
18
+ type: String,
19
+ default: ""
20
+ },
21
+ external: {
22
+ type: Boolean,
23
+ default: !1
24
+ }
25
+ },
26
+ setup(e) {
27
+ let r = e, a = c()?.appContext.components.RouterLink ?? null, o = t(() => !!(r.to && a)), s = t(() => r.href || (typeof r.to == "string" ? r.to : ""));
28
+ return (t, r) => o.value ? (f(), n(g(v(a)), l({
29
+ key: 0,
30
+ to: e.to
31
+ }, t.$attrs), {
32
+ default: C(() => [h(t.$slots, "default")]),
33
+ _: 3
34
+ }, 16, ["to"])) : (f(), i("a", l({
35
+ key: 1,
36
+ href: s.value || void 0,
37
+ target: e.external ? "_blank" : void 0,
38
+ rel: e.external ? "noopener" : void 0
39
+ }, t.$attrs), [h(t.$slots, "default")], 16, te));
40
+ }
41
+ }, ne = ["aria-busy"], A = {
42
+ key: 0,
43
+ class: "mwnf-list__status"
44
+ }, j = {
45
+ key: 1,
46
+ class: "mwnf-list__rows"
47
+ }, M = { class: "mwnf-list__thumb" }, N = ["src", "alt"], P = { class: "mwnf-list__body" }, F = ["innerHTML"], I = {
48
+ key: 0,
49
+ class: "mwnf-list__meta"
50
+ }, L = {
51
+ key: 0,
52
+ class: "mwnf-list__badge"
53
+ }, R = {
54
+ key: 2,
55
+ class: "mwnf-list__empty"
56
+ }, z = {
57
+ __name: "RecordList",
58
+ props: {
59
+ records: {
60
+ type: Array,
61
+ default: () => []
62
+ },
63
+ loading: {
64
+ type: Boolean,
65
+ default: !1
66
+ },
67
+ loadingText: {
68
+ type: String,
69
+ default: ""
70
+ }
71
+ },
72
+ setup(t) {
73
+ let n = !!b().empty;
74
+ return (o, c) => (f(), i("div", {
75
+ class: u(["mwnf-list", { "mwnf-list--loading": t.loading }]),
76
+ "aria-busy": t.loading ? "true" : void 0
77
+ }, [t.loading && t.loadingText ? (f(), i("p", A, _(t.loadingText), 1)) : t.records.length ? (f(), i("ul", j, [(f(!0), i(e, null, m(t.records, (t) => (f(), i("li", {
78
+ key: t.id,
79
+ class: "mwnf-list__row"
80
+ }, [s(k, {
81
+ class: "mwnf-list__link",
82
+ to: t.to,
83
+ href: t.href
84
+ }, {
85
+ default: C(() => [a("span", M, [t.image ? (f(), i("img", {
86
+ key: 0,
87
+ src: t.image,
88
+ alt: t.imageAlt ?? "",
89
+ loading: "lazy"
90
+ }, null, 8, N)) : r("", !0)]), a("span", P, [a("span", {
91
+ class: "mwnf-list__name",
92
+ innerHTML: t.name
93
+ }, null, 8, F), t.meta?.length || t.badge ? (f(), i("span", I, [(f(!0), i(e, null, m(t.meta ?? [], (e, t) => (f(), i("span", {
94
+ key: t,
95
+ class: "mwnf-list__meta-item"
96
+ }, _(e), 1))), 128)), t.badge ? (f(), i("span", L, _(t.badge), 1)) : r("", !0)])) : r("", !0)])]),
97
+ _: 2
98
+ }, 1032, ["to", "href"])]))), 128))])) : v(n) ? (f(), i("div", R, [h(o.$slots, "empty")])) : r("", !0)], 10, ne));
99
+ }
100
+ }, B = ["aria-busy"], V = {
101
+ key: 0,
102
+ class: "mwnf-grid__status"
103
+ }, H = {
104
+ key: 1,
105
+ class: "mwnf-grid__tiles"
106
+ }, U = ["onMouseenter", "onFocusin"], W = { class: "mwnf-grid__media" }, G = ["src", "alt"], K = {
107
+ key: 1,
108
+ class: "mwnf-grid__image mwnf-grid__image--empty",
109
+ "aria-hidden": "true"
110
+ }, q = { class: "mwnf-grid__card" }, J = ["src"], Y = { class: "mwnf-grid__card-body" }, X = ["innerHTML"], Z = {
111
+ key: 0,
112
+ class: "mwnf-grid__badge"
113
+ }, re = {
114
+ key: 2,
115
+ class: "mwnf-grid__empty"
116
+ }, Q = {
117
+ __name: "RecordGrid",
118
+ props: {
119
+ records: {
120
+ type: Array,
121
+ default: () => []
122
+ },
123
+ loading: {
124
+ type: Boolean,
125
+ default: !1
126
+ },
127
+ loadingText: {
128
+ type: String,
129
+ default: ""
130
+ },
131
+ actionLabel: {
132
+ type: String,
133
+ default: ""
134
+ },
135
+ dateCutoff: {
136
+ type: Number,
137
+ default: 80
138
+ }
139
+ },
140
+ setup(t) {
141
+ let n = t, c = !!b().empty, l = p(null);
142
+ function d(e) {
143
+ let t = String(e ?? "");
144
+ return t.length > n.dateCutoff ? `${t.slice(0, n.dateCutoff - 1)}[...]` : t;
145
+ }
146
+ return (n, p) => (f(), i("div", {
147
+ class: u(["mwnf-grid", { "mwnf-grid--loading": t.loading }]),
148
+ "aria-busy": t.loading ? "true" : void 0
149
+ }, [t.loading && t.loadingText ? (f(), i("p", V, _(t.loadingText), 1)) : t.records.length ? (f(), i("ul", H, [(f(!0), i(e, null, m(t.records, (n) => (f(), i("li", {
150
+ key: n.id,
151
+ class: u(["mwnf-grid__tile", { "mwnf-grid__tile--hover": l.value === n.id }]),
152
+ onMouseenter: (e) => l.value = n.id,
153
+ onMouseleave: p[0] ||= (e) => l.value = null,
154
+ onFocusin: (e) => l.value = n.id,
155
+ onFocusout: p[1] ||= (e) => l.value = null
156
+ }, [a("span", W, [n.image ? (f(), i("img", {
157
+ key: 0,
158
+ class: "mwnf-grid__image",
159
+ src: n.image,
160
+ alt: n.imageAlt ?? "",
161
+ loading: "lazy"
162
+ }, null, 8, G)) : (f(), i("span", K))]), a("div", q, [s(k, {
163
+ class: "mwnf-grid__card-media",
164
+ to: n.to,
165
+ href: n.href,
166
+ tabindex: "-1",
167
+ "aria-hidden": "true"
168
+ }, {
169
+ default: C(() => [n.image ? (f(), i("img", {
170
+ key: 0,
171
+ src: n.image,
172
+ alt: ""
173
+ }, null, 8, J)) : r("", !0)]),
174
+ _: 2
175
+ }, 1032, ["to", "href"]), a("div", Y, [
176
+ a("p", {
177
+ class: "mwnf-grid__name",
178
+ innerHTML: n.name
179
+ }, null, 8, X),
180
+ (f(!0), i(e, null, m(n.meta ?? [], (e, t) => (f(), i("p", {
181
+ key: t,
182
+ class: "mwnf-grid__meta"
183
+ }, _(d(e)), 1))), 128)),
184
+ n.badge ? (f(), i("p", Z, _(n.badge), 1)) : r("", !0),
185
+ s(k, {
186
+ class: "mwnf-grid__action",
187
+ to: n.to,
188
+ href: n.href
189
+ }, {
190
+ default: C(() => [o(_(t.actionLabel || n.name.replace(/<[^>]+>/g, "")) + " › ", 1)]),
191
+ _: 2
192
+ }, 1032, ["to", "href"])
193
+ ])])], 42, U))), 128))])) : v(c) ? (f(), i("div", re, [h(n.$slots, "empty")])) : r("", !0)], 10, B));
194
+ }
195
+ }, ie = ["aria-label"], ae = ["disabled"], oe = ["disabled"], se = ["aria-current", "onClick"], ce = ["disabled"], le = ["disabled"], ue = { class: "mwnf-pagination__position" }, de = { class: "mwnf-pagination__jump" }, fe = ["max"], pe = {
196
+ __name: "Pagination",
197
+ props: {
198
+ pageInfo: {
199
+ type: Object,
200
+ required: !0
201
+ },
202
+ window: {
203
+ type: Number,
204
+ default: 5
205
+ },
206
+ jump: {
207
+ type: Boolean,
208
+ default: !1
209
+ },
210
+ ends: {
211
+ type: Boolean,
212
+ default: !0
213
+ }
214
+ },
215
+ emits: ["navigate"],
216
+ setup(n, { emit: s }) {
217
+ let c = n, l = s, { t: d } = D(), h = t(() => c.pageInfo?.currentPage ?? 1), g = t(() => c.pageInfo?.lastPage ?? 1), y = t(() => {
218
+ let e = Math.max(1, c.window), t = Math.max(1, h.value - Math.floor(e / 2)), n = Math.min(g.value, t + e - 1);
219
+ t = Math.max(1, n - e + 1);
220
+ let r = [];
221
+ for (let e = t; e <= n; e++) r.push(e);
222
+ return r;
223
+ }), b = p(String(h.value));
224
+ S(h, (e) => {
225
+ b.value = String(e);
226
+ });
227
+ function C(e) {
228
+ let t = Math.min(Math.max(1, Number.parseInt(e, 10) || 1), g.value);
229
+ t !== h.value && l("navigate", t);
230
+ }
231
+ return (t, s) => g.value > 1 ? (f(), i("nav", {
232
+ key: 0,
233
+ class: "mwnf-pagination",
234
+ "aria-label": v(d)("catalogue.pagination.page")
235
+ }, [
236
+ n.ends ? (f(), i("button", {
237
+ key: 0,
238
+ type: "button",
239
+ class: "mwnf-pagination__button",
240
+ disabled: h.value === 1,
241
+ onClick: s[0] ||= (e) => C(1)
242
+ }, " « " + _(v(d)("catalogue.pagination.first")), 9, ae)) : r("", !0),
243
+ a("button", {
244
+ type: "button",
245
+ class: "mwnf-pagination__button",
246
+ disabled: h.value === 1,
247
+ onClick: s[1] ||= (e) => C(h.value - 1)
248
+ }, " ‹ " + _(v(d)("core.pagination.previous")), 9, oe),
249
+ (f(!0), i(e, null, m(y.value, (e) => (f(), i("button", {
250
+ key: e,
251
+ type: "button",
252
+ class: u(["mwnf-pagination__button mwnf-pagination__number", { "mwnf-pagination__button--active": e === h.value }]),
253
+ "aria-current": e === h.value ? "page" : void 0,
254
+ onClick: (t) => C(e)
255
+ }, _(e), 11, se))), 128)),
256
+ a("button", {
257
+ type: "button",
258
+ class: "mwnf-pagination__button",
259
+ disabled: h.value === g.value,
260
+ onClick: s[2] ||= (e) => C(h.value + 1)
261
+ }, _(v(d)("core.pagination.next")) + " › ", 9, ce),
262
+ n.ends ? (f(), i("button", {
263
+ key: 1,
264
+ type: "button",
265
+ class: "mwnf-pagination__button",
266
+ disabled: h.value === g.value,
267
+ onClick: s[3] ||= (e) => C(g.value)
268
+ }, _(v(d)("catalogue.pagination.last")) + " » ", 9, le)) : r("", !0),
269
+ a("span", ue, [n.jump ? (f(), i(e, { key: 0 }, [
270
+ a("label", de, [a("span", null, _(v(d)("catalogue.pagination.page")), 1), w(a("input", {
271
+ "onUpdate:modelValue": s[4] ||= (e) => b.value = e,
272
+ class: "mwnf-pagination__jump-field",
273
+ type: "number",
274
+ min: "1",
275
+ max: g.value,
276
+ onKeyup: s[5] ||= T((e) => C(b.value), ["enter"])
277
+ }, null, 40, fe), [[x, b.value]])]),
278
+ a("span", null, "/ " + _(g.value), 1),
279
+ a("button", {
280
+ type: "button",
281
+ class: "mwnf-pagination__button",
282
+ onClick: s[6] ||= (e) => C(b.value)
283
+ }, _(v(d)("catalogue.pagination.go")), 1)
284
+ ], 64)) : (f(), i(e, { key: 1 }, [o(_(h.value) + " / " + _(g.value), 1)], 64))])
285
+ ], 8, ie)) : r("", !0);
286
+ }
287
+ }, me = ["for"], he = {
288
+ key: 0,
289
+ class: "mwnf-facet__label"
290
+ }, ge = [
291
+ "id",
292
+ "value",
293
+ "disabled"
294
+ ], _e = {
295
+ key: 0,
296
+ value: "",
297
+ disabled: ""
298
+ }, ve = {
299
+ key: 1,
300
+ value: ""
301
+ }, ye = ["value"], be = {
302
+ __name: "FacetSelect",
303
+ props: {
304
+ label: {
305
+ type: String,
306
+ default: ""
307
+ },
308
+ options: {
309
+ type: Array,
310
+ default: () => []
311
+ },
312
+ modelValue: {
313
+ type: [String, Number],
314
+ default: ""
315
+ },
316
+ placeholder: {
317
+ type: String,
318
+ default: ""
319
+ },
320
+ anyLabel: {
321
+ type: String,
322
+ default: ""
323
+ },
324
+ disabled: {
325
+ type: Boolean,
326
+ default: !1
327
+ },
328
+ hideEmpty: {
329
+ type: Boolean,
330
+ default: !1
331
+ }
332
+ },
333
+ emits: ["update:modelValue"],
334
+ setup(n, { emit: o }) {
335
+ let s = n, c = o, l = y(), u = t(() => !s.hideEmpty || s.options.length > 0);
336
+ return (t, o) => u.value ? (f(), i("label", {
337
+ key: 0,
338
+ class: "mwnf-facet",
339
+ for: v(l)
340
+ }, [n.label ? (f(), i("span", he, _(n.label), 1)) : r("", !0), a("select", {
341
+ id: v(l),
342
+ class: "mwnf-facet__select",
343
+ value: String(n.modelValue ?? ""),
344
+ disabled: n.disabled,
345
+ onChange: o[0] ||= (e) => c("update:modelValue", e.target.value)
346
+ }, [
347
+ n.placeholder ? (f(), i("option", _e, _(n.placeholder), 1)) : r("", !0),
348
+ n.anyLabel ? (f(), i("option", ve, _(n.anyLabel), 1)) : r("", !0),
349
+ (f(!0), i(e, null, m(n.options, (e) => (f(), i("option", {
350
+ key: e.value,
351
+ value: String(e.value)
352
+ }, _(e.label), 9, ye))), 128))
353
+ ], 40, ge)], 8, me)) : r("", !0);
354
+ }
355
+ }, xe = {
356
+ key: 0,
357
+ class: "mwnf-filter__title"
358
+ }, Se = ["disabled"], Ce = { class: "mwnf-filter__actions" }, we = {
359
+ key: 0,
360
+ type: "submit",
361
+ class: "mwnf-filter__button mwnf-filter__button--apply"
362
+ }, Te = {
363
+ __name: "FilterPanel",
364
+ props: {
365
+ title: {
366
+ type: String,
367
+ default: ""
368
+ },
369
+ mode: {
370
+ type: String,
371
+ default: "apply"
372
+ },
373
+ applyLabel: {
374
+ type: String,
375
+ default: ""
376
+ },
377
+ resetLabel: {
378
+ type: String,
379
+ default: ""
380
+ },
381
+ disabled: {
382
+ type: Boolean,
383
+ default: !1
384
+ }
385
+ },
386
+ emits: ["apply", "reset"],
387
+ setup(e, { emit: t }) {
388
+ let n = t, { t: o } = D();
389
+ return (t, s) => (f(), i("form", {
390
+ class: u(["mwnf-filter", `mwnf-filter--${e.mode}`]),
391
+ onSubmit: s[1] ||= E((e) => n("apply"), ["prevent"])
392
+ }, [
393
+ e.title ? (f(), i("p", xe, _(e.title), 1)) : r("", !0),
394
+ a("fieldset", {
395
+ class: "mwnf-filter__controls",
396
+ disabled: e.disabled
397
+ }, [h(t.$slots, "default")], 8, Se),
398
+ a("div", Ce, [e.mode === "apply" ? (f(), i("button", we, _(e.applyLabel || v(o)("core.action.apply")), 1)) : r("", !0), a("button", {
399
+ type: "button",
400
+ class: "mwnf-filter__button mwnf-filter__button--reset",
401
+ onClick: s[0] ||= (e) => n("reset")
402
+ }, _(e.resetLabel || v(o)("core.action.reset")), 1)])
403
+ ], 34));
404
+ }
405
+ }, Ee = {
406
+ key: 0,
407
+ class: "mwnf-summary"
408
+ }, De = {
409
+ key: 0,
410
+ class: "mwnf-summary__parts"
411
+ }, Oe = {
412
+ key: 0,
413
+ class: "mwnf-summary__label"
414
+ }, ke = {
415
+ key: 1,
416
+ class: "mwnf-summary__count"
417
+ }, Ae = {
418
+ key: 2,
419
+ class: "mwnf-summary__value"
420
+ }, je = {
421
+ key: 1,
422
+ class: "mwnf-summary__actions"
423
+ }, Me = {
424
+ __name: "ResultsSummary",
425
+ props: { parts: {
426
+ type: Array,
427
+ default: () => []
428
+ } },
429
+ setup(t) {
430
+ let n = !!b().actions;
431
+ return (a, s) => t.parts.length || a.$slots.default || v(n) ? (f(), i("div", Ee, [
432
+ t.parts.length ? (f(), i("p", De, [(f(!0), i(e, null, m(t.parts, (e, t) => (f(), i("span", {
433
+ key: t,
434
+ class: "mwnf-summary__part"
435
+ }, [
436
+ e.label ? (f(), i("span", Oe, _(e.label), 1)) : r("", !0),
437
+ s[0] ||= o(_(" "), -1),
438
+ e.count == null ? r("", !0) : (f(), i("span", ke, _(e.count), 1)),
439
+ s[1] ||= o(_(" "), -1),
440
+ e.value ? (f(), i("span", Ae, _(e.value), 1)) : r("", !0)
441
+ ]))), 128))])) : r("", !0),
442
+ h(a.$slots, "default"),
443
+ v(n) ? (f(), i("div", je, [h(a.$slots, "actions")])) : r("", !0)
444
+ ])) : r("", !0);
445
+ }
446
+ }, Ne = ["aria-label"], Pe = [
447
+ "aria-pressed",
448
+ "lang",
449
+ "onClick"
450
+ ], Fe = {
451
+ __name: "RecordLanguages",
452
+ props: {
453
+ languages: {
454
+ type: Array,
455
+ default: () => []
456
+ },
457
+ language: {
458
+ type: String,
459
+ default: ""
460
+ }
461
+ },
462
+ emits: ["select"],
463
+ setup(n, { emit: a }) {
464
+ let o = n, s = a, { t: c } = D(), l = t(() => o.languages.map((e) => typeof e == "string" ? {
465
+ code: e,
466
+ label: e.toUpperCase()
467
+ } : e));
468
+ return (t, a) => l.value.length > 1 ? (f(), i("div", {
469
+ key: 0,
470
+ class: "mwnf-languages",
471
+ role: "group",
472
+ "aria-label": v(c)("record.sheet.languages")
473
+ }, [(f(!0), i(e, null, m(l.value, (e) => (f(), i("button", {
474
+ key: e.code,
475
+ type: "button",
476
+ class: u(["mwnf-languages__button", { "mwnf-languages__button--active": e.code === n.language }]),
477
+ "aria-pressed": e.code === n.language ? "true" : "false",
478
+ lang: e.code,
479
+ onClick: (t) => s("select", e.code)
480
+ }, _(e.label), 11, Pe))), 128))], 8, Ne)) : r("", !0);
481
+ }
482
+ }, Ie = ["dir"], Le = { key: 0 }, Re = {
483
+ class: "mwnf-sheet__label",
484
+ scope: "row"
485
+ }, ze = { class: "mwnf-sheet__value" }, Be = ["href"], Ve = ["innerHTML"], He = {
486
+ key: 0,
487
+ class: "mwnf-sheet__row mwnf-sheet__row--short"
488
+ }, Ue = {
489
+ class: "mwnf-sheet__label",
490
+ scope: "row"
491
+ }, We = ["aria-expanded"], Ge = { class: "mwnf-sheet__value" }, Ke = ["innerHTML"], qe = { class: "mwnf-sheet__value" }, Je = ["href"], Ye = ["innerHTML"], Xe = { class: "mwnf-sheet__label mwnf-sheet__label--short" }, Ze = ["aria-expanded"], Qe = { class: "mwnf-sheet__value" }, $e = ["innerHTML"], et = {
492
+ __name: "RecordSheet",
493
+ props: {
494
+ rows: {
495
+ type: Array,
496
+ default: () => []
497
+ },
498
+ layout: {
499
+ type: String,
500
+ default: "table"
501
+ },
502
+ dir: {
503
+ type: String,
504
+ default: ""
505
+ },
506
+ shortDescription: {
507
+ type: Object,
508
+ default: null
509
+ },
510
+ shortDescriptionAfter: {
511
+ type: String,
512
+ default: "description"
513
+ },
514
+ shortDescriptionOpen: {
515
+ type: Boolean,
516
+ default: !1
517
+ }
518
+ },
519
+ setup(t) {
520
+ let o = t, { t: s } = D(), c = p(o.shortDescriptionOpen);
521
+ S(() => o.shortDescription, () => {
522
+ c.value = o.shortDescriptionOpen;
523
+ });
524
+ let l = (e) => e.render === "custom" || e.render === "link";
525
+ return (o, d) => (f(), i("div", {
526
+ class: u(["mwnf-sheet", `mwnf-sheet--${t.layout}`]),
527
+ dir: t.dir || void 0
528
+ }, [(f(), n(g(t.layout === "list" ? "dl" : "table"), { class: "mwnf-sheet__rows" }, {
529
+ default: C(() => [t.layout === "list" ? (f(!0), i(e, { key: 1 }, m(t.rows, (n) => (f(), i(e, { key: n.key }, [
530
+ a("dt", { class: u(["mwnf-sheet__label", `mwnf-sheet__label--${n.key}`]) }, _(n.label), 3),
531
+ a("dd", qe, [l(n) ? h(o.$slots, n.key, { row: n }, () => [n.render === "link" ? (f(), i("a", {
532
+ key: 0,
533
+ href: n.value,
534
+ target: "_blank",
535
+ rel: "noopener"
536
+ }, _(n.value), 9, Je)) : r("", !0)], void 0, 0) : (f(), i("span", {
537
+ key: 1,
538
+ class: u(`mwnf-sheet__${n.render}`),
539
+ innerHTML: n.html
540
+ }, null, 10, Ye))]),
541
+ t.shortDescription && n.key === t.shortDescriptionAfter ? (f(), i(e, { key: 0 }, [a("dt", Xe, [a("button", {
542
+ type: "button",
543
+ class: "mwnf-sheet__toggle",
544
+ "aria-expanded": c.value ? "true" : "false",
545
+ onClick: d[1] ||= (e) => c.value = !c.value
546
+ }, _(c.value ? v(s)("record.action.hideShortDescription") : v(s)("record.action.viewShortDescription")), 9, Ze)]), a("dd", Qe, [c.value ? (f(), i("div", {
547
+ key: 0,
548
+ class: "mwnf-sheet__block",
549
+ innerHTML: t.shortDescription.html
550
+ }, null, 8, $e)) : r("", !0)])], 64)) : r("", !0)
551
+ ], 64))), 128)) : (f(), i("tbody", Le, [(f(!0), i(e, null, m(t.rows, (n) => (f(), i(e, { key: n.key }, [a("tr", { class: u(["mwnf-sheet__row", `mwnf-sheet__row--${n.key}`]) }, [a("th", Re, _(n.label), 1), a("td", ze, [l(n) ? h(o.$slots, n.key, { row: n }, () => [n.render === "link" ? (f(), i("a", {
552
+ key: 0,
553
+ href: n.value,
554
+ target: "_blank",
555
+ rel: "noopener"
556
+ }, _(n.value), 9, Be)) : r("", !0)], void 0, 0) : (f(), i("span", {
557
+ key: 1,
558
+ class: u(`mwnf-sheet__${n.render}`),
559
+ innerHTML: n.html
560
+ }, null, 10, Ve))])], 2), t.shortDescription && n.key === t.shortDescriptionAfter ? (f(), i("tr", He, [a("th", Ue, [a("button", {
561
+ type: "button",
562
+ class: "mwnf-sheet__toggle",
563
+ "aria-expanded": c.value ? "true" : "false",
564
+ onClick: d[0] ||= (e) => c.value = !c.value
565
+ }, _(c.value ? v(s)("record.action.hideShortDescription") : v(s)("record.action.viewShortDescription")), 9, We)]), a("td", Ge, [c.value ? (f(), i("div", {
566
+ key: 0,
567
+ class: "mwnf-sheet__block",
568
+ innerHTML: t.shortDescription.html
569
+ }, null, 8, Ke)) : r("", !0)])])) : r("", !0)], 64))), 128))]))]),
570
+ _: 3
571
+ }))], 10, Ie));
572
+ }
573
+ }, tt = ["dir"], nt = {
574
+ key: 0,
575
+ class: "mwnf-sheet-section__heading"
576
+ }, rt = ["innerHTML"], it = {
577
+ __name: "SheetSection",
578
+ props: {
579
+ heading: {
580
+ type: String,
581
+ default: ""
582
+ },
583
+ html: {
584
+ type: String,
585
+ default: ""
586
+ },
587
+ dir: {
588
+ type: String,
589
+ default: ""
590
+ }
591
+ },
592
+ setup(e) {
593
+ return (t, n) => (f(), i("section", {
594
+ class: "mwnf-sheet-section",
595
+ dir: e.dir || void 0
596
+ }, [
597
+ e.heading ? (f(), i("h2", nt, _(e.heading), 1)) : r("", !0),
598
+ e.html ? (f(), i("div", {
599
+ key: 1,
600
+ class: "mwnf-sheet-section__body mwnf-sheet__block",
601
+ innerHTML: e.html
602
+ }, null, 8, rt)) : r("", !0),
603
+ h(t.$slots, "default")
604
+ ], 8, tt));
605
+ }
606
+ }, at = {
607
+ key: 0,
608
+ class: "mwnf-credits"
609
+ }, ot = {
610
+ key: 0,
611
+ class: "mwnf-credits__heading"
612
+ }, st = {
613
+ key: 1,
614
+ class: "mwnf-credits__list"
615
+ }, ct = { class: "mwnf-credits__label" }, lt = { class: "mwnf-credits__value" }, ut = {
616
+ key: 2,
617
+ class: "mwnf-credits__number"
618
+ }, dt = {
619
+ key: 0,
620
+ class: "mwnf-credits__label"
621
+ }, ft = { class: "mwnf-credits__heading" }, pt = { class: "mwnf-credits__citation" }, mt = {
622
+ __name: "RecordCredits",
623
+ props: {
624
+ credits: {
625
+ type: Array,
626
+ default: () => []
627
+ },
628
+ workingNumber: {
629
+ type: String,
630
+ default: ""
631
+ },
632
+ workingNumberLabel: {
633
+ type: String,
634
+ default: ""
635
+ },
636
+ citation: {
637
+ type: String,
638
+ default: ""
639
+ },
640
+ heading: {
641
+ type: String,
642
+ default: ""
643
+ },
644
+ citationHeading: {
645
+ type: String,
646
+ default: ""
647
+ }
648
+ },
649
+ setup(n) {
650
+ let o = n, { t: s } = D(), c = t(() => o.credits.length > 0 || o.workingNumber || o.citation);
651
+ return (t, o) => c.value ? (f(), i("section", at, [
652
+ n.credits.length || n.workingNumber ? (f(), i("h2", ot, _(n.heading || v(s)("record.sheet.credits")), 1)) : r("", !0),
653
+ n.credits.length ? (f(), i("dl", st, [(f(!0), i(e, null, m(n.credits, (t) => (f(), i(e, { key: t.label }, [a("dt", ct, _(t.label), 1), a("dd", lt, _(t.value), 1)], 64))), 128))])) : r("", !0),
654
+ n.workingNumber ? (f(), i("p", ut, [n.workingNumberLabel ? (f(), i("span", dt, _(n.workingNumberLabel), 1)) : r("", !0), a("strong", null, _(n.workingNumber), 1)])) : r("", !0),
655
+ n.citation ? (f(), i(e, { key: 3 }, [a("h2", ft, _(n.citationHeading || v(s)("record.citation.heading")), 1), a("p", pt, _(n.citation), 1)], 64)) : r("", !0)
656
+ ])) : r("", !0);
657
+ }
658
+ }, ht = {
659
+ key: 0,
660
+ class: "mwnf-source-credit"
661
+ }, gt = { class: "mwnf-source-credit__label" }, _t = ["href"], vt = {
662
+ __name: "SourceCredit",
663
+ props: {
664
+ route: {
665
+ type: [Object, String],
666
+ default: null
667
+ },
668
+ labelEntry: {
669
+ type: String,
670
+ default: "record.source.label"
671
+ }
672
+ },
673
+ setup(e) {
674
+ let n = e, { t: s } = D(), c = O(), l = t(() => ee(n.route ?? c));
675
+ return (t, n) => l.value ? (f(), i("p", ht, [
676
+ a("span", gt, _(v(s)(e.labelEntry)), 1),
677
+ n[0] ||= o(),
678
+ a("a", { href: l.value }, _(l.value), 9, _t)
679
+ ])) : r("", !0);
680
+ }
681
+ }, yt = {
682
+ key: 0,
683
+ class: "mwnf-related"
684
+ }, bt = {
685
+ key: 0,
686
+ class: "mwnf-related__heading"
687
+ }, xt = {
688
+ __name: "RelatedRecords",
689
+ props: {
690
+ heading: {
691
+ type: String,
692
+ default: ""
693
+ },
694
+ records: {
695
+ type: Array,
696
+ default: () => []
697
+ },
698
+ variant: {
699
+ type: String,
700
+ default: "list"
701
+ },
702
+ actionLabel: {
703
+ type: String,
704
+ default: ""
705
+ }
706
+ },
707
+ setup(e) {
708
+ return (t, a) => e.records.length || t.$slots.default ? (f(), i("section", yt, [
709
+ e.heading ? (f(), i("h2", bt, _(e.heading), 1)) : r("", !0),
710
+ e.variant === "grid" ? (f(), n(Q, {
711
+ key: 1,
712
+ records: e.records,
713
+ "action-label": e.actionLabel
714
+ }, null, 8, ["records", "action-label"])) : (f(), n(z, {
715
+ key: 2,
716
+ records: e.records
717
+ }, null, 8, ["records"])),
718
+ h(t.$slots, "default")
719
+ ])) : r("", !0);
720
+ }
721
+ }, St = ["src", "alt"], Ct = {
722
+ key: 0,
723
+ class: "mwnf-media__caption"
724
+ }, wt = { key: 0 }, Tt = {
725
+ key: 1,
726
+ class: "mwnf-media__credit"
727
+ }, Et = {
728
+ key: 2,
729
+ class: "mwnf-media__credit"
730
+ }, Dt = ["src", "alt"], Ot = {
731
+ key: 0,
732
+ class: "mwnf-media__thumbs"
733
+ }, kt = [
734
+ "aria-pressed",
735
+ "title",
736
+ "onClick"
737
+ ], At = ["src", "alt"], jt = {
738
+ key: 1,
739
+ class: "mwnf-media__caption"
740
+ }, Mt = { key: 0 }, Nt = {
741
+ key: 1,
742
+ class: "mwnf-media__credit"
743
+ }, Pt = ["aria-label"], Ft = ["aria-label"], It = ["src", "alt"], Lt = ["aria-label"], Rt = {
744
+ __name: "MediaGallery",
745
+ props: {
746
+ images: {
747
+ type: Array,
748
+ default: () => []
749
+ },
750
+ start: {
751
+ type: Number,
752
+ default: 0
753
+ },
754
+ variant: {
755
+ type: String,
756
+ default: ""
757
+ }
758
+ },
759
+ setup(n) {
760
+ let o = n, { t: s } = D(), c = p(Math.min(o.start, Math.max(0, o.images.length - 1)));
761
+ S(() => o.images, () => {
762
+ c.value = 0;
763
+ });
764
+ let l = t(() => o.images[c.value] ?? null), h = t(() => {
765
+ let e = [];
766
+ return l.value?.photographer && e.push(`${s("record.media.photograph")}: ${l.value.photographer}`), l.value?.copyright && e.push(`© ${l.value.copyright}`), e.join(" — ");
767
+ }), g = p(!1), y = null, b = p(null);
768
+ function x(e) {
769
+ c.value = (e + o.images.length) % o.images.length;
770
+ }
771
+ function C() {
772
+ l.value && (y = document.activeElement, g.value = !0, document.addEventListener("keydown", T), requestAnimationFrame(() => b.value?.focus?.()));
773
+ }
774
+ function w() {
775
+ g.value = !1, document.removeEventListener("keydown", T), y?.focus?.(), y = null;
776
+ }
777
+ function T(e) {
778
+ e.key === "Escape" ? w() : e.key === "ArrowRight" ? x(c.value + 1) : e.key === "ArrowLeft" && x(c.value - 1);
779
+ }
780
+ return d(() => document.removeEventListener("keydown", T)), (t, o) => n.images.length ? (f(), i("div", {
781
+ key: 0,
782
+ class: u(["mwnf-media", n.variant ? `mwnf-media--${n.variant}` : ""])
783
+ }, [n.variant === "row" ? (f(!0), i(e, { key: 0 }, m(n.images, (e, t) => (f(), i("figure", {
784
+ key: e.url ?? t,
785
+ class: "mwnf-media__figure"
786
+ }, [a("img", {
787
+ class: "mwnf-media__image",
788
+ src: e.url,
789
+ alt: e.alt ?? "",
790
+ loading: "lazy"
791
+ }, null, 8, St), e.caption || e.photographer || e.copyright ? (f(), i("figcaption", Ct, [
792
+ e.caption ? (f(), i("span", wt, _(e.caption), 1)) : r("", !0),
793
+ e.photographer ? (f(), i("span", Tt, _(v(s)("record.media.photograph")) + ": " + _(e.photographer), 1)) : r("", !0),
794
+ e.copyright ? (f(), i("span", Et, "© " + _(e.copyright), 1)) : r("", !0)
795
+ ])) : r("", !0)]))), 128)) : (f(), i(e, { key: 1 }, [
796
+ a("button", {
797
+ type: "button",
798
+ class: "mwnf-media__main",
799
+ onClick: C
800
+ }, [a("img", {
801
+ class: "mwnf-media__image",
802
+ src: l.value.url,
803
+ alt: l.value.alt ?? ""
804
+ }, null, 8, Dt)]),
805
+ n.images.length > 1 ? (f(), i("ul", Ot, [(f(!0), i(e, null, m(n.images, (e, t) => (f(), i("li", { key: e.url ?? t }, [a("button", {
806
+ type: "button",
807
+ class: u(["mwnf-media__thumb", { "mwnf-media__thumb--active": t === c.value }]),
808
+ "aria-pressed": t === c.value ? "true" : "false",
809
+ title: [e.photographer, e.copyright].filter(Boolean).join(" — ") || void 0,
810
+ onClick: (e) => x(t)
811
+ }, [a("img", {
812
+ src: e.url,
813
+ alt: e.alt ?? "",
814
+ loading: "lazy"
815
+ }, null, 8, At)], 10, kt)]))), 128))])) : r("", !0),
816
+ l.value.caption || h.value ? (f(), i("p", jt, [l.value.caption ? (f(), i("span", Mt, _(l.value.caption), 1)) : r("", !0), h.value ? (f(), i("span", Nt, _(h.value), 1)) : r("", !0)])) : r("", !0),
817
+ g.value ? (f(), i("div", {
818
+ key: 2,
819
+ class: "mwnf-lightbox",
820
+ role: "dialog",
821
+ "aria-modal": "true",
822
+ onClick: E(w, ["self"])
823
+ }, [
824
+ a("button", {
825
+ ref_key: "closeButton",
826
+ ref: b,
827
+ type: "button",
828
+ class: "mwnf-lightbox__close",
829
+ "aria-label": v(s)("core.action.close"),
830
+ onClick: w
831
+ }, "✕", 8, Pt),
832
+ n.images.length > 1 ? (f(), i("button", {
833
+ key: 0,
834
+ type: "button",
835
+ class: "mwnf-lightbox__control mwnf-lightbox__control--previous",
836
+ "aria-label": v(s)("core.pagination.previous"),
837
+ onClick: o[0] ||= E((e) => x(c.value - 1), ["stop"])
838
+ }, "‹", 8, Ft)) : r("", !0),
839
+ a("img", {
840
+ class: "mwnf-lightbox__image",
841
+ src: l.value.url,
842
+ alt: l.value.alt ?? ""
843
+ }, null, 8, It),
844
+ n.images.length > 1 ? (f(), i("button", {
845
+ key: 1,
846
+ type: "button",
847
+ class: "mwnf-lightbox__control mwnf-lightbox__control--next",
848
+ "aria-label": v(s)("core.pagination.next"),
849
+ onClick: o[1] ||= E((e) => x(c.value + 1), ["stop"])
850
+ }, "›", 8, Lt)) : r("", !0)
851
+ ])) : r("", !0)
852
+ ], 64))], 2)) : r("", !0);
853
+ }
854
+ }, zt = ["aria-label", "dir"], Bt = { class: "mwnf-popover__title" }, $ = ["aria-label"], Vt = { class: "mwnf-popover__body" }, Ht = { class: "mwnf-popover__term" }, Ut = ["innerHTML"], Wt = {
855
+ key: 1,
856
+ class: "mwnf-popover__definition"
857
+ }, Gt = {
858
+ __name: "GlossaryPopover",
859
+ props: {
860
+ term: {
861
+ type: Object,
862
+ default: null
863
+ },
864
+ html: {
865
+ type: String,
866
+ default: ""
867
+ },
868
+ dir: {
869
+ type: String,
870
+ default: ""
871
+ }
872
+ },
873
+ emits: ["close"],
874
+ setup(e, { emit: t }) {
875
+ let n = e, o = t, { t: s } = D(), c = p(null), l = null;
876
+ function u() {
877
+ o("close");
878
+ }
879
+ function m(e) {
880
+ e.key === "Escape" && u();
881
+ }
882
+ return S(() => n.term, (e, t) => {
883
+ e && !t ? (l = document.activeElement, document.addEventListener("keydown", m), requestAnimationFrame(() => c.value?.focus?.())) : !e && t && (document.removeEventListener("keydown", m), l?.focus?.(), l = null);
884
+ }, { immediate: !0 }), d(() => document.removeEventListener("keydown", m)), (t, n) => e.term ? (f(), i("aside", {
885
+ key: 0,
886
+ class: "mwnf-popover",
887
+ role: "dialog",
888
+ "aria-label": v(s)("record.glossary.heading"),
889
+ dir: e.dir || void 0
890
+ }, [a("div", Bt, [a("span", null, _(v(s)("record.glossary.heading")), 1), a("button", {
891
+ ref_key: "closeButton",
892
+ ref: c,
893
+ type: "button",
894
+ class: "mwnf-popover__close",
895
+ "aria-label": v(s)("record.glossary.close"),
896
+ onClick: u
897
+ }, "✕", 8, $)]), a("div", Vt, [a("p", Ht, _(e.term.spelling || e.term.word), 1), e.html ? (f(), i("div", {
898
+ key: 0,
899
+ class: "mwnf-popover__definition mwnf-sheet__block",
900
+ innerHTML: e.html
901
+ }, null, 8, Ut)) : e.term.definition ? (f(), i("p", Wt, _(e.term.definition), 1)) : r("", !0)])], 8, zt)) : r("", !0);
902
+ }
903
+ }, Kt = {
904
+ key: 0,
905
+ class: "mwnf-timeline__rows"
906
+ }, qt = { class: "mwnf-timeline__date" }, Jt = { class: "mwnf-timeline__body" }, Yt = {
907
+ key: 0,
908
+ class: "mwnf-timeline__caption"
909
+ }, Xt = ["innerHTML"], Zt = ["innerHTML"], Qt = {
910
+ key: 2,
911
+ class: "mwnf-timeline__media"
912
+ }, $t = ["src", "alt"], en = ["innerHTML"], tn = {
913
+ key: 3,
914
+ class: "mwnf-timeline__actions"
915
+ }, nn = {
916
+ key: 1,
917
+ class: "mwnf-timeline__empty"
918
+ }, rn = {
919
+ __name: "TimelineEventList",
920
+ props: { events: {
921
+ type: Array,
922
+ default: () => []
923
+ } },
924
+ setup(t) {
925
+ let s = !!b().empty;
926
+ return (c, l) => t.events.length ? (f(), i("ul", Kt, [(f(!0), i(e, null, m(t.events, (t) => (f(), i("li", {
927
+ key: t.id,
928
+ class: "mwnf-timeline__row"
929
+ }, [a("div", qt, [h(c.$slots, "date", { event: t }, () => [o(_(t.date), 1)])]), a("div", Jt, [
930
+ t.caption || c.$slots.caption ? (f(), i("div", Yt, [h(c.$slots, "caption", { event: t }, () => [a("span", { innerHTML: t.caption }, null, 8, Xt)])])) : r("", !0),
931
+ t.description ? (f(), i("div", {
932
+ key: 1,
933
+ class: "mwnf-timeline__description mwnf-sheet__block",
934
+ innerHTML: t.description
935
+ }, null, 8, Zt)) : r("", !0),
936
+ t.media?.length || c.$slots.media ? (f(), i("div", Qt, [h(c.$slots, "media", { event: t }, () => [(f(!0), i(e, null, m(t.media ?? [], (e, t) => (f(), n(k, {
937
+ key: t,
938
+ class: "mwnf-timeline__media-item",
939
+ to: e.to,
940
+ href: e.href
941
+ }, {
942
+ default: C(() => [e.image ? (f(), i("img", {
943
+ key: 0,
944
+ src: e.image,
945
+ alt: e.alt ?? "",
946
+ loading: "lazy"
947
+ }, null, 8, $t)) : r("", !0), e.caption ? (f(), i("span", {
948
+ key: 1,
949
+ class: "mwnf-timeline__media-caption",
950
+ innerHTML: e.caption
951
+ }, null, 8, en)) : r("", !0)]),
952
+ _: 2
953
+ }, 1032, ["to", "href"]))), 128))])])) : r("", !0),
954
+ t.actions?.length || c.$slots.actions ? (f(), i("div", tn, [h(c.$slots, "actions", { event: t }, () => [(f(!0), i(e, null, m(t.actions ?? [], (e, t) => (f(), n(k, {
955
+ key: t,
956
+ class: "mwnf-timeline__action",
957
+ to: e.to,
958
+ href: e.href
959
+ }, {
960
+ default: C(() => [o(_(e.label) + " →", 1)]),
961
+ _: 2
962
+ }, 1032, ["to", "href"]))), 128))])])) : r("", !0)
963
+ ])]))), 128))])) : v(s) ? (f(), i("div", nn, [h(c.$slots, "empty")])) : r("", !0);
964
+ }
965
+ };
966
+ //#endregion
967
+ export { vt as a, et as c, Te as d, be as f, k as g, z as h, xt as i, Fe as l, Q as m, Gt as n, mt as o, pe as p, Rt as r, it as s, rn as t, Me as u };