cozy-iiif 0.7.4 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,426 @@
1
+ import { imageSize as e } from "image-size";
2
+ //#region node_modules/@iiif/parser/dist/remove-undefined-properties-DKmVdOaS.js
3
+ function t(e) {
4
+ "@babel/helpers - typeof";
5
+ return t = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(e) {
6
+ return typeof e;
7
+ } : function(e) {
8
+ return e && typeof Symbol == "function" && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e;
9
+ }, t(e);
10
+ }
11
+ function n(e, n) {
12
+ if (t(e) != "object" || !e) return e;
13
+ var r = e[Symbol.toPrimitive];
14
+ if (r !== void 0) {
15
+ var i = r.call(e, n || "default");
16
+ if (t(i) != "object") return i;
17
+ throw TypeError("@@toPrimitive must return a primitive value.");
18
+ }
19
+ return (n === "string" ? String : Number)(e);
20
+ }
21
+ function r(e) {
22
+ var r = n(e, "string");
23
+ return t(r) == "symbol" ? r : r + "";
24
+ }
25
+ function i(e, t, n) {
26
+ return (t = r(t)) in e ? Object.defineProperty(e, t, {
27
+ value: n,
28
+ enumerable: !0,
29
+ configurable: !0,
30
+ writable: !0
31
+ }) : e[t] = n, e;
32
+ }
33
+ function a(e) {
34
+ return Array.isArray(e) ? e : e ? [e] : [];
35
+ }
36
+ function o(e) {
37
+ for (let t in e) (e[t] === void 0 || e[t] === null) && delete e[t];
38
+ return e;
39
+ }
40
+ //#endregion
41
+ //#region node_modules/@iiif/parser/dist/traverse-BDmGe7EO.js
42
+ function s(e) {
43
+ return typeof e == "string" ? !1 : e && !e.type && "source" in e ? (e.type = "SpecificResource", !0) : !!e && e.type === "SpecificResource";
44
+ }
45
+ function c(...e) {
46
+ return (t) => e.reduce((e, t) => t(e), t);
47
+ }
48
+ var l = [
49
+ "Collection",
50
+ "Manifest",
51
+ "Canvas",
52
+ "AnnotationPage",
53
+ "AnnotationCollection",
54
+ "Annotation",
55
+ "ContentResource",
56
+ "Range",
57
+ "Service",
58
+ "Selector",
59
+ "Agent"
60
+ ];
61
+ function u(e, t) {
62
+ if (e == null) throw Error("Null or undefined is not a valid entity.");
63
+ if (Array.isArray(e)) throw Error("Array is not a valid entity");
64
+ if (typeof e != "object") {
65
+ if (t) return t;
66
+ throw Error(`${typeof e} is not a valid entity`);
67
+ }
68
+ if (typeof e.type == "string") {
69
+ let t = l.indexOf(e.type);
70
+ if (t !== -1) return l[t];
71
+ }
72
+ if (e.profile) return "Service";
73
+ throw Error("Resource type is not known");
74
+ }
75
+ var d = class e {
76
+ constructor(e, t = {}) {
77
+ i(this, "traversals", void 0), i(this, "options", void 0), i(this, "_traverseManifest", c(this.traverseManifestItems.bind(this), this.traverseNavPlace.bind(this), this.traverseLinking.bind(this), this.traverseDescriptive.bind(this), this.traverseLinkedCanvases.bind(this), this.traverseManifestStructures.bind(this), this.traverseInlineAnnotationPages.bind(this))), i(this, "_traverseCanvas", c(this.traverseCanvasItems.bind(this), this.traverseLinking.bind(this), this.traverseDescriptive.bind(this), this.traverseLinkedCanvases.bind(this), this.traverseInlineAnnotationPages.bind(this))), i(this, "_traverseAnnotationPage", c(this.traverseAnnotationPageItems.bind(this), this.traverseLinking.bind(this), this.traverseDescriptive.bind(this))), i(this, "_traverseRange", c(this.traverseRangeRanges.bind(this), this.traverseLinking.bind(this), this.traverseDescriptive.bind(this), this.traverseLinkedCanvases.bind(this))), this.traversals = {
78
+ collection: [],
79
+ manifest: [],
80
+ canvas: [],
81
+ annotationCollection: [],
82
+ annotationPage: [],
83
+ annotation: [],
84
+ contentResource: [],
85
+ choice: [],
86
+ range: [],
87
+ service: [],
88
+ agent: [],
89
+ specificResource: [],
90
+ geoJson: [],
91
+ ...e
92
+ }, this.options = {
93
+ allowUndefinedReturn: !1,
94
+ ...t
95
+ };
96
+ }
97
+ static all(t) {
98
+ return new e({
99
+ collection: [t],
100
+ manifest: [t],
101
+ canvas: [t],
102
+ annotationCollection: [t],
103
+ annotationPage: [t],
104
+ annotation: [t],
105
+ contentResource: [t],
106
+ choice: [t],
107
+ range: [t],
108
+ service: [t],
109
+ geoJson: [t],
110
+ specificResource: [t],
111
+ agent: [t]
112
+ });
113
+ }
114
+ traverseDescriptive(e) {
115
+ return e.thumbnail &&= a(e.thumbnail).map((t) => this.traverseType(t, { parent: e }, this.traversals.contentResource)), e.provider &&= e.provider.map((t) => this.traverseAgent(t, e)), e;
116
+ }
117
+ traverseLinking(e) {
118
+ return e.seeAlso &&= a(e.seeAlso).map((t) => this.traverseType(t, { parent: e }, this.traversals.contentResource)), e.service &&= a(e.service).map((e) => this.traverseService(e)), e.services &&= a(e.services).map((t) => this.traverseService(t, e)), e.logo &&= a(e.logo).map((t) => this.traverseType(t, { parent: e }, this.traversals.contentResource)), e.homepage &&= a(e.homepage).map((t) => this.traverseType(t, { parent: e }, this.traversals.contentResource)), e.partOf &&= e.partOf.map((t) => typeof t == "string" || !t.type ? this.traverseType(t, { parent: e }, this.traversals.contentResource) : t.type === "Canvas" ? this.traverseType(t, { parent: e }, this.traversals.canvas) : t.type === "AnnotationCollection" ? this.traverseType(t, { parent: e }, this.traversals.annotationCollection) : t.type === "Collection" ? this.traverseType(t, { parent: e }, this.traversals.collection) : this.traverseType(t, { parent: e }, this.traversals.contentResource)), e.start && (s(e.start) ? e.start = this.traverseSpecificResource(e.start, "Canvas", e) : e.start = this.traverseType(e.start, { parent: e }, this.traversals.canvas)), e.rendering &&= e.rendering.map((t) => this.traverseType(t, { parent: e }, this.traversals.contentResource)), e.supplementary &&= e.supplementary.map((t) => this.traverseType(t, { parent: e }, this.traversals.contentResource)), e;
119
+ }
120
+ traverseCollectionItems(e) {
121
+ return e.items && e.items.map((e) => e.type === "Collection" ? this.traverseCollection(e) : this.traverseManifest(e)), e;
122
+ }
123
+ traverseCollection(e, t) {
124
+ return this.traverseType(this.traverseDescriptive(this.traverseNavPlace(this.traverseInlineAnnotationPages(this.traverseLinking(this.traverseLinkedCanvases(this.traverseCollectionItems(e)))))), { parent: t }, this.traversals.collection);
125
+ }
126
+ traverseGeoJson(e, t) {
127
+ return this.traverseType(e, { parent: t }, this.traversals.geoJson);
128
+ }
129
+ traverseNavPlace(e) {
130
+ return e.navPlace &&= this.traverseGeoJson(e.navPlace, e), e;
131
+ }
132
+ traverseManifestItems(e) {
133
+ return e.items &&= e.items.map((e) => this.traverseCanvas(e)), e;
134
+ }
135
+ traverseManifestStructures(e) {
136
+ return e.structures &&= e.structures.map((e) => this.traverseRange(e)), e;
137
+ }
138
+ traverseManifest(e, t) {
139
+ return this.traverseType(this._traverseManifest(e), { parent: t }, this.traversals.manifest);
140
+ }
141
+ traverseCanvasItems(e) {
142
+ return e.items = (e.items || []).map((t) => this.traverseAnnotationPage(t, e)), e;
143
+ }
144
+ traverseInlineAnnotationPages(e) {
145
+ return typeof e == "string" || !e || (e.annotations &&= e.annotations.map((t) => this.traverseAnnotationPage(t, e))), e;
146
+ }
147
+ traverseCanvas(e, t) {
148
+ return this.traverseType(this._traverseCanvas(e), { parent: t }, this.traversals.canvas);
149
+ }
150
+ traverseAnnotationPageItems(e) {
151
+ return e.items &&= e.items.map((t) => this.traverseAnnotation(t, e)), e;
152
+ }
153
+ traverseAnnotationPage(e, t) {
154
+ return this.traverseType(this._traverseAnnotationPage(e), { parent: t }, this.traversals.annotationPage);
155
+ }
156
+ traverseAnnotationBody(e) {
157
+ return Array.isArray(e.body) ? e.body = e.body.map((t) => this.traverseContentResource(t, e)) : e.body &&= this.traverseContentResource(e.body, e), e;
158
+ }
159
+ traverseLinkedCanvases(e) {
160
+ return e.placeholderCanvas &&= this.traverseCanvas(e.placeholderCanvas), e.accompanyingCanvas &&= this.traverseCanvas(e.accompanyingCanvas), e;
161
+ }
162
+ traverseAnnotation(e, t) {
163
+ return this.traverseType(this.traverseLinking(this.traverseAnnotationBody(this.traverseDescriptive(e))), { parent: t }, this.traversals.annotation);
164
+ }
165
+ traverseContentResourceLinking(e) {
166
+ return typeof e == "string" || !e || e && e.service && (e.service = a(e.service || []).map((t) => this.traverseService(t, e))), e;
167
+ }
168
+ traverseContentResource(e, t) {
169
+ return e.type === "Choice" && (e.items = e.items.map((t) => this.traverseContentResource(t, e))), s(e) ? this.traverseSpecificResource(e, "ContentResource") : this.traverseType(this.traverseInlineAnnotationPages(this.traverseContentResourceLinking(e)), { parent: t }, this.traversals.contentResource);
170
+ }
171
+ traverseSpecificResource(e, t, n) {
172
+ let r = e.source;
173
+ return typeof e.source == "string" && (r = {
174
+ id: e.source,
175
+ type: t || "unknown"
176
+ }), this.traverseType({
177
+ ...e,
178
+ source: t === "Canvas" || r.type === "Canvas" ? this.traverseType(r, { parent: n }, this.traversals.canvas) : t === "ContentResource" ? this.traverseContentResource(r, { parent: n }) : this.traverseUnknown(r, {
179
+ parent: n,
180
+ typeHint: t
181
+ })
182
+ }, { parent: n }, this.traversals.specificResource);
183
+ }
184
+ traverseRangeRanges(e) {
185
+ return e.items &&= e.items.map((t) => typeof t == "string" ? this.traverseCanvas({
186
+ id: t,
187
+ type: "Canvas"
188
+ }, e) : s(t) ? this.traverseSpecificResource(t, "Canvas", e) : t.type === "Manifest" ? this.traverseManifest(t, e) : this.traverseRange(t, e)), e;
189
+ }
190
+ traverseRange(e, t) {
191
+ return this.traverseType(this._traverseRange(e), { parent: t }, this.traversals.range);
192
+ }
193
+ traverseAgent(e, t) {
194
+ return this.traverseType(this.traverseDescriptive(this.traverseLinking(e)), { parent: t }, this.traversals.agent);
195
+ }
196
+ traverseType(e, t, n) {
197
+ return n.reduce((e, n) => {
198
+ let r = n(e, t);
199
+ return r === void 0 && !this.options.allowUndefinedReturn ? e : r;
200
+ }, e);
201
+ }
202
+ traverseService(e, t) {
203
+ let n = Object.assign({}, e);
204
+ return n && n.service && (n.service = a(n.service).map((e) => this.traverseService(e))), this.traverseType(n, { parent: t }, this.traversals.service);
205
+ }
206
+ traverseUnknown(e, { parent: t, typeHint: n } = {}) {
207
+ let r = u(e, n);
208
+ switch (r) {
209
+ case "Collection": return this.traverseCollection(e, t);
210
+ case "Manifest": return this.traverseManifest(e, t);
211
+ case "Canvas": return this.traverseCanvas(e, t);
212
+ case "AnnotationPage": return this.traverseAnnotationPage(e, t);
213
+ case "Annotation": return this.traverseAnnotation(e, t);
214
+ case "ContentResource": return this.traverseContentResource(e, t);
215
+ case "Range": return this.traverseRange(e, t);
216
+ case "Service": return this.traverseService(e, t);
217
+ case "Agent": return this.traverseAgent(e, t);
218
+ default: throw Error(`Unknown or unsupported resource type of ${r}`);
219
+ }
220
+ }
221
+ }, f = (e, t) => {
222
+ let n = e[t];
223
+ return n ||= e[`@${t}`], n;
224
+ }, p = (e, t = "en") => {
225
+ if (typeof e == "string") return e;
226
+ let n = e[t];
227
+ if (n) return n[0];
228
+ {
229
+ let t = Object.values(e).reduce((e, t) => Array.isArray(t) ? [...e, ...t] : [...e, t], []);
230
+ return t.length > 0 ? t[0] : void 0;
231
+ }
232
+ }, m = (e) => (t = "en") => {
233
+ let n = f(e, "label");
234
+ return n ? p(n, t) : void 0;
235
+ }, h = (e) => (t) => {
236
+ let n = f(e, "metadata");
237
+ return n ? n.map(({ label: e, value: n }) => ({
238
+ label: p(e, t),
239
+ value: p(n, t)
240
+ })) : [];
241
+ }, g = (e) => e.endsWith("/info.json") ? e : `${e.endsWith("/") ? e : `${e}/`}info.json`, _ = (e) => f(e, "type")?.startsWith("ImageService") || e.profile?.toString().includes("iiif.io/api/image/"), v = (e) => {
242
+ let t = f(e, "type"), n = f(e, "context");
243
+ if (t === "ImageService2" || n?.includes("image/2")) {
244
+ let t = f(e, "profile"), n = [
245
+ "level0",
246
+ "level1",
247
+ "level2"
248
+ ];
249
+ return {
250
+ majorVersion: 2,
251
+ profileLevel: (Array.isArray(t) ? t : t ? [t] : []).map((e) => n.findIndex((t) => e.toString().includes(t))).filter((e) => e > -1).sort((e, t) => t - e)[0]
252
+ };
253
+ } else if (t || n) return {
254
+ majorVersion: 3,
255
+ profileLevel: parseInt(e.profile)
256
+ };
257
+ }, y = (t) => () => {
258
+ let n = typeof window < "u";
259
+ return fetch(t).then((e) => e.blob()).then((t) => n ? createImageBitmap(t).then((e) => {
260
+ let { width: t, height: n } = e;
261
+ return e.close(), {
262
+ width: t,
263
+ height: n
264
+ };
265
+ }) : t.arrayBuffer().then((t) => e(new Uint8Array(t))));
266
+ }, b = (e, t, n, r = 0) => {
267
+ let i = f(e, "id"), a = e.profile || "";
268
+ if (typeof a == "string" && (a.includes("level0") || a.includes("level:0"))) {
269
+ if ("sizes" in e && Array.isArray(e.sizes)) {
270
+ let r = e.sizes.sort((e, t) => t.width * t.height - e.width * e.height).filter((e) => e.width * e.height >= t * n)[0];
271
+ if (r) return `${i}/full/${r.width},${r.height}/0/default.jpg`;
272
+ }
273
+ return `${i}/full/full/0/default.jpg`;
274
+ }
275
+ return `${i}/full/!${t},${n}/${r}/default.jpg`;
276
+ }, x = (e, t, n = 0, r = { minSize: 400 }) => {
277
+ let i = f(e, "id"), a = e.profile || "";
278
+ if (typeof a == "string" && (a.includes("level0") || a.includes("level:0"))) {
279
+ console.warn(`Level 0 image service does not support custom region URLs: ${i}`);
280
+ return;
281
+ }
282
+ let { x: o, y: s, w: c, h: l } = t, { minSize: u = 400, maxSize: d } = r, p = u / Math.min(c, l), m = d ? Math.max(p, d / Math.max(c, l)) : p, h = Math.round(c * m), g = Math.round(l * m), _ = (n % 360 + 360) % 360;
283
+ return `${i}/${`${Math.round(o)},${Math.round(s)},${Math.round(c)},${Math.round(l)}`}/!${h},${g}/${_}/default.jpg`;
284
+ }, S = (e) => (t, n = 0, r = { minSize: 400 }) => {
285
+ if (e.type === "dynamic") return x(e.service, t, n, r);
286
+ console.error("Level 0 or static image canvas: unsupported");
287
+ }, C = (e, t, n) => (r = 800, i = 0) => {
288
+ if (!e || !t) return;
289
+ let a = e / t, o = a < 1, s = Math.ceil(o ? r / a : r);
290
+ return b(n, Math.ceil(o ? r : r / a), s, i);
291
+ }, w = (e) => () => fetch(e).then((e) => e.json()).then((e) => {
292
+ let t = e.width, n = e.height;
293
+ return t !== void 0 && n !== void 0 ? {
294
+ width: t,
295
+ height: n
296
+ } : void 0;
297
+ }), T = (e, t = []) => (n = 400) => {
298
+ let { width: r, height: i } = e;
299
+ if (!r || !i) return;
300
+ let a = r / i, o = a < 1, s = Math.ceil(o ? n / a : n), c = Math.ceil(o ? n : n / a);
301
+ if (e.thumbnail && e.thumbnail.length > 0) {
302
+ let t = e.thumbnail[0];
303
+ if ("service" in t && Array.isArray(t.service)) {
304
+ let e = t.service.find((e) => _(e));
305
+ if (e) return b(e, c, s);
306
+ }
307
+ if ("id" in t) return t.id;
308
+ }
309
+ for (let e of t) if (e.type === "dynamic" || e.type === "level0") return b(e.service, c, s);
310
+ else if (e.type === "static") return e.url;
311
+ }, E = (e, t) => {
312
+ let { format: n, height: r, width: i } = e, a = f(e, "id"), o = (e.service || []).find(_), s = o ? v(o) : void 0;
313
+ if (o && s) {
314
+ let n = g(f(o, "id")), a = {
315
+ source: e,
316
+ type: s.profileLevel === 0 ? "level0" : "dynamic",
317
+ service: o,
318
+ width: i,
319
+ height: r,
320
+ majorVersion: s.majorVersion,
321
+ serviceUrl: n,
322
+ target: t,
323
+ getImageURL: C(i, r, o),
324
+ getPixelSize: w(n)
325
+ };
326
+ return s.profileLevel === 0 ? a : {
327
+ ...a,
328
+ getRegionURL: S(a)
329
+ };
330
+ } else return {
331
+ source: e,
332
+ type: "static",
333
+ width: i,
334
+ height: r,
335
+ url: a,
336
+ format: n,
337
+ getImageURL: () => a,
338
+ getPixelSize: y(a)
339
+ };
340
+ }, D = (e) => {
341
+ let t = (e) => {
342
+ let t = e.replace("xywh=", "").split(",").map(Number);
343
+ if (t.length === 4 && t.every((e) => !isNaN(e))) {
344
+ let [e, n, r, i] = t;
345
+ return {
346
+ x: e,
347
+ y: n,
348
+ w: r,
349
+ h: i
350
+ };
351
+ }
352
+ };
353
+ if (e && typeof e == "object") {
354
+ let n = Array.isArray(e.selector) ? e.selector.find((e) => e.type === "FragmentSelector") : e.selector?.type === "FragmentSelector" ? e.selector : null;
355
+ if (n?.value) return t(n.value);
356
+ }
357
+ if (typeof e == "string") {
358
+ let n = e.split("#")[1];
359
+ if (n?.startsWith("xywh=")) return t(n);
360
+ }
361
+ }, O = (e) => {
362
+ let t = [];
363
+ return new d({ annotation: [(e) => {
364
+ if (e.motivation === "painting" || !e.motivation) {
365
+ let n = e.body ? Array.isArray(e.body) ? e.body : [e.body] : [], r = D(e.target), i = n.filter((e) => e.type === "Image");
366
+ t.push(...i.map((e) => E(e, r)));
367
+ }
368
+ }] }).traverseCanvas(e), t;
369
+ }, k = (e) => () => {
370
+ let t = /* @__PURE__ */ new Map(), n = (e, r, i = 0) => {
371
+ let a = {
372
+ id: e.id,
373
+ type: "range",
374
+ source: e,
375
+ children: [],
376
+ navItems: [],
377
+ navSections: [],
378
+ parent: r,
379
+ level: i,
380
+ getLabel: e.getLabel
381
+ };
382
+ e.items && e.items.length > 0 && e.items.forEach((e) => {
383
+ if (e.source.type === "Range") {
384
+ let t = n(e, a, i + 1);
385
+ a.children.push(t);
386
+ } else {
387
+ let n = {
388
+ id: e.id,
389
+ type: "canvas",
390
+ source: e,
391
+ children: [],
392
+ navItems: [],
393
+ navSections: [],
394
+ parent: a,
395
+ level: i + 1,
396
+ getLabel: e.getLabel
397
+ };
398
+ a.children.push(n), t.set(n.id, n);
399
+ }
400
+ });
401
+ let o = a.children.map((e) => e.type === "canvas" ? e.source : e.children.length === 1 && e.children[0].type === "canvas" ? e.children[0].source : e.source), s = o.filter((e) => e.source.type === "Canvas"), c = o.filter((e) => e.source.type === "Range");
402
+ return a.navItems.push(...s), a.navSections.push(...c), t.set(a.id, a), a;
403
+ };
404
+ return {
405
+ root: e.filter((e) => e.source.behavior?.includes("top")).map((e) => n(e, void 0)),
406
+ enumerateNodes: (e) => {
407
+ let n = Array.from(t.values());
408
+ return e ? n.filter((t) => t.type === e) : n;
409
+ },
410
+ getBreadcrumbs: (e) => {
411
+ let n = t.get(e);
412
+ if (!n) return [];
413
+ let r = (e, t = []) => e.parent ? r(e.parent, [e, ...t]) : [e, ...t];
414
+ return r(n);
415
+ },
416
+ getNavParent: (e) => {
417
+ let n = t.get(e);
418
+ if (!n || n.type !== "canvas" || n.parent?.type !== "range") return;
419
+ let { parent: r } = n;
420
+ return r.children.length === 1 && r.children[0].type === "canvas" ? r.parent?.type === "range" ? r.parent.source : void 0 : r.source;
421
+ },
422
+ getNode: (e) => t.get(e)
423
+ };
424
+ };
425
+ //#endregion
426
+ export { d as _, b as a, i as b, x as c, g as d, v as f, p as g, f as h, C as i, y as l, h as m, O as n, w as o, m as p, T as r, S as s, k as t, _ as u, o as v, a as y };