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.
- package/dist/core-BHFaVC33.js +426 -0
- package/dist/helpers/index.js +131 -137
- package/dist/index.js +950 -696
- package/dist/level-0/index.js +120 -141
- package/dist/p-throttle-DZE1ty58.js +150 -0
- package/dist/types.d.ts +1 -0
- package/package.json +4 -4
- package/src/core/canvas.ts +34 -3
- package/src/types.ts +2 -0
- package/test/Cozy.test.ts +23 -2
- package/test/fixtures.ts +58 -0
- package/dist/canvas-C5HZjy4I.js +0 -287
- package/dist/index-B2EdkMiz.js +0 -156
- package/dist/resource-DS2brz47.js +0 -28
|
@@ -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 };
|