dbf-mirador 4.3.0-testing1 → 4.3.0-testing2

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.
Files changed (46) hide show
  1. package/dist/AudioViewer-tRH73pbt.js +40 -0
  2. package/dist/AudioViewer-tRH73pbt.js.map +1 -0
  3. package/dist/CommentSharp-DaW0oBJy.js +322 -0
  4. package/dist/CommentSharp-DaW0oBJy.js.map +1 -0
  5. package/dist/FailedImageContext-DYZ9cZx9.js +318 -0
  6. package/dist/FailedImageContext-DYZ9cZx9.js.map +1 -0
  7. package/dist/GalleryView-DyLH1kk0.js +176 -0
  8. package/dist/GalleryView-DyLH1kk0.js.map +1 -0
  9. package/dist/OpenSeadragonViewer-CBmX5sYE.js +7852 -0
  10. package/dist/OpenSeadragonViewer-CBmX5sYE.js.map +1 -0
  11. package/dist/PluginHook-DWFCXIIp.js +54 -0
  12. package/dist/PluginHook-DWFCXIIp.js.map +1 -0
  13. package/dist/SelectCollection-BK9ZDkK3.js +67 -0
  14. package/dist/SelectCollection-BK9ZDkK3.js.map +1 -0
  15. package/dist/TextViewer-D_1qzQE4.js +38 -0
  16. package/dist/TextViewer-D_1qzQE4.js.map +1 -0
  17. package/dist/VideoViewer-DzNjgLWE.js +42 -0
  18. package/dist/VideoViewer-DzNjgLWE.js.map +1 -0
  19. package/dist/WindowCanvasNavigationControls-D2uLtL_A.js +242 -0
  20. package/dist/WindowCanvasNavigationControls-D2uLtL_A.js.map +1 -0
  21. package/dist/WindowViewer-BW0_w7wv.js +27 -0
  22. package/dist/WindowViewer-BW0_w7wv.js.map +1 -0
  23. package/dist/WorkspaceArea-C0RjqnIL.js +22222 -0
  24. package/dist/WorkspaceArea-C0RjqnIL.js.map +1 -0
  25. package/dist/action-types-DjIbTE-A.js +74 -0
  26. package/dist/action-types-DjIbTE-A.js.map +1 -0
  27. package/dist/canvas-2ACcnS9Y.js +41 -0
  28. package/dist/canvas-2ACcnS9Y.js.map +1 -0
  29. package/dist/canvases-DTR37lo-.js +3270 -0
  30. package/dist/canvases-DTR37lo-.js.map +1 -0
  31. package/dist/createSvgIcon-Cwt8YPfm.js +2 -0
  32. package/dist/getters-B4oepJRC.js +2043 -0
  33. package/dist/getters-B4oepJRC.js.map +1 -0
  34. package/dist/index.module-CgUBfaXx.js +403 -0
  35. package/dist/index.module-CgUBfaXx.js.map +1 -0
  36. package/dist/mirador.es.js +9222 -0
  37. package/dist/mirador.es.js.map +1 -0
  38. package/dist/mirador.min.js +335 -0
  39. package/dist/mirador.min.js.map +1 -0
  40. package/dist/react-error-boundary.esm-ByHqCaxk.js +67 -0
  41. package/dist/react-error-boundary.esm-ByHqCaxk.js.map +1 -0
  42. package/dist/visuallyHidden-C4mhQkB0.js +98 -0
  43. package/dist/visuallyHidden-C4mhQkB0.js.map +1 -0
  44. package/dist/window-COQOIAli.js +138 -0
  45. package/dist/window-COQOIAli.js.map +1 -0
  46. package/package.json +3 -2
@@ -0,0 +1,40 @@
1
+ import { U as e, at as t, dt as n, ft as r, g as i, st as a } from "./getters-B4oepJRC.js";
2
+ import { d as o, f as s, mt as c } from "./canvases-DTR37lo-.js";
3
+ import { Fragment as l } from "react";
4
+ import { jsx as u, jsxs as d } from "react/jsx-runtime";
5
+ import { styled as f } from "@mui/material/styles";
6
+ //#region src/components/AudioViewer.jsx
7
+ var p = /* @__PURE__ */ r(t(), 1), m = f("div")({
8
+ alignItems: "center",
9
+ display: "flex",
10
+ width: "100%"
11
+ }), h = f("audio")({ width: "100%" });
12
+ function g({ audioOptions: e = {}, audioResources: t = [], captions: n = [] }) {
13
+ return /* @__PURE__ */ u(m, { children: /* @__PURE__ */ d(h, {
14
+ ...e,
15
+ children: [t.map((e) => /* @__PURE__ */ u(l, { children: /* @__PURE__ */ u("source", {
16
+ src: e.id,
17
+ type: e.getFormat()
18
+ }) }, e.id)), n.map((e) => /* @__PURE__ */ u(l, { children: /* @__PURE__ */ u("track", {
19
+ src: e.id,
20
+ label: e.getDefaultLabel(),
21
+ srcLang: e.getProperty("language")
22
+ }) }, e.id))]
23
+ }) });
24
+ }
25
+ g.propTypes = {
26
+ audioOptions: p.default.object,
27
+ audioResources: p.default.arrayOf(p.default.object),
28
+ captions: p.default.arrayOf(p.default.object)
29
+ };
30
+ //#endregion
31
+ //#region src/containers/AudioViewer.js
32
+ var _ = /* @__PURE__ */ n({ default: () => v }), v = e(a((e, { windowId: t }) => ({
33
+ audioOptions: c(e).audioOptions,
34
+ audioResources: o(e, { windowId: t }) || [],
35
+ captions: s(e, { windowId: t }) || []
36
+ }), null), i("AudioViewer"))(g);
37
+ //#endregion
38
+ export { _ as n, g as r, v as t };
39
+
40
+ //# sourceMappingURL=AudioViewer-tRH73pbt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AudioViewer-tRH73pbt.js","names":[],"sources":["../src/components/AudioViewer.jsx","../src/containers/AudioViewer.js"],"sourcesContent":["import { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { styled } from '@mui/material/styles';\n\nconst StyledContainer = styled('div')({\n alignItems: 'center',\n display: 'flex',\n width: '100%',\n});\n\nconst StyledAudio = styled('audio')({\n width: '100%',\n});\n\n/** */\nexport function AudioViewer({ audioOptions = {}, audioResources = [], captions = [] }) {\n return (\n <StyledContainer>\n <StyledAudio {...audioOptions}>\n {audioResources.map((audio) => (\n <Fragment key={audio.id}>\n <source src={audio.id} type={audio.getFormat()} />\n </Fragment>\n ))}\n {captions.map((caption) => (\n <Fragment key={caption.id}>\n <track src={caption.id} label={caption.getDefaultLabel()} srcLang={caption.getProperty('language')} />\n </Fragment>\n ))}\n </StyledAudio>\n </StyledContainer>\n );\n}\n\nAudioViewer.propTypes = {\n audioOptions: PropTypes.object,\n audioResources: PropTypes.arrayOf(PropTypes.object),\n captions: PropTypes.arrayOf(PropTypes.object),\n};\n","import { connect } from 'react-redux';\nimport { compose } from 'redux';\nimport { withPlugins } from '../extend/withPlugins';\nimport { AudioViewer } from '../components/AudioViewer';\nimport { getConfig, getVisibleCanvasAudioResources, getVisibleCanvasCaptions } from '../state/selectors';\n\n/** */\nconst mapStateToProps = (state, { windowId }) => ({\n audioOptions: getConfig(state).audioOptions,\n audioResources: getVisibleCanvasAudioResources(state, { windowId }) || [],\n captions: getVisibleCanvasCaptions(state, { windowId }) || [],\n});\n\nconst enhance = compose(connect(mapStateToProps, null), withPlugins('AudioViewer'));\n\nexport default enhance(AudioViewer);\n"],"mappings":";;;;;;mCAIM,IAAkB,EAAO,KAAK,CAAC,CAAC;CACpC,YAAY;CACZ,SAAS;CACT,OAAO;AACT,CAAC,GAEK,IAAc,EAAO,OAAO,CAAC,CAAC,EAClC,OAAO,OACT,CAAC;AAGD,SAAgB,EAAY,EAAE,kBAAe,CAAC,GAAG,oBAAiB,CAAC,GAAG,cAAW,CAAC,KAAK;CACrF,OACE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;EAAa,GAAI;EAAjB,UAAA,CACG,EAAe,KAAK,MACnB,kBAAC,GAAD,EAAA,UACE,kBAAC,UAAD;GAAQ,KAAK,EAAM;GAAI,MAAM,EAAM,UAAU;EAAI,CAAA,EACzC,GAFK,EAAM,EAEX,CACX,GACA,EAAS,KAAK,MACb,kBAAC,GAAD,EAAA,UACE,kBAAC,SAAD;GAAO,KAAK,EAAQ;GAAI,OAAO,EAAQ,gBAAgB;GAAG,SAAS,EAAQ,YAAY,UAAU;EAAI,CAAA,EAC7F,GAFK,EAAQ,EAEb,CACX,CACU;CACE,CAAA,EAAA,CAAA;AAErB;AAEA,EAAY,YAAY;CACtB,cAAc,EAAA,QAAU;CACxB,gBAAgB,EAAA,QAAU,QAAQ,EAAA,QAAU,MAAM;CAClD,UAAU,EAAA,QAAU,QAAQ,EAAA,QAAU,MAAM;AAC9C;;;iDCvBA,IAFgB,EAAQ,GANC,GAAO,EAAE,mBAAgB;CAChD,cAAc,EAAU,CAAK,CAAC,CAAC;CAC/B,gBAAgB,EAA+B,GAAO,EAAE,YAAS,CAAC,KAAK,CAAC;CACxE,UAAU,EAAyB,GAAO,EAAE,YAAS,CAAC,KAAK,CAAC;AAC9D,IAEiD,IAAI,GAAG,EAAY,aAAa,CAElE,CAAA,CAAQ,CAAW"}
@@ -0,0 +1,322 @@
1
+ import { U as e, at as t, ct as n, ft as r, g as i, st as a } from "./getters-B4oepJRC.js";
2
+ import { B as o, dt as s, mt as c } from "./canvases-DTR37lo-.js";
3
+ import { t as l } from "./FailedImageContext-DYZ9cZx9.js";
4
+ import { t as u } from "./createSvgIcon-Cwt8YPfm.js";
5
+ import * as d from "react";
6
+ import { createContext as f, useContext as p, useEffect as m, useMemo as h, useState as g } from "react";
7
+ import { jsx as _, jsxs as v } from "react/jsx-runtime";
8
+ import { styled as y } from "@mui/material/styles";
9
+ //#region src/hooks/useThumbnailService.js
10
+ function b(e, t) {
11
+ return n((n) => s(n, e, t), [e, t]);
12
+ }
13
+ //#endregion
14
+ //#region node_modules/react-intersection-observer/dist/index.mjs
15
+ var x = /* @__PURE__ */ r(t(), 1), S = Object.defineProperty, C = (e, t, n) => t in e ? S(e, t, {
16
+ enumerable: !0,
17
+ configurable: !0,
18
+ writable: !0,
19
+ value: n
20
+ }) : e[t] = n, w = (e, t, n) => C(e, typeof t == "symbol" ? t : t + "", n), T = /* @__PURE__ */ new Map(), E = /* @__PURE__ */ new WeakMap(), D = 0, O;
21
+ function k(e) {
22
+ return e ? E.has(e) ? E.get(e) : (D += 1, E.set(e, D.toString()), E.get(e)) : "0";
23
+ }
24
+ function A(e) {
25
+ return Object.keys(e).sort().filter((t) => e[t] !== void 0).map((t) => `${t}_${t === "root" ? k(e.root) : e[t]}`).toString();
26
+ }
27
+ function j(e) {
28
+ let t = A(e), n = T.get(t);
29
+ if (!n) {
30
+ let r = /* @__PURE__ */ new Map(), i, a = new IntersectionObserver((t) => {
31
+ t.forEach((t) => {
32
+ let n = t.isIntersecting && i.some((e) => t.intersectionRatio >= e);
33
+ e.trackVisibility && t.isVisible === void 0 && (t.isVisible = n), [...r.get(t.target) ?? []].forEach((e) => {
34
+ e(n, t);
35
+ });
36
+ });
37
+ }, e);
38
+ i = a.thresholds || (Array.isArray(e.threshold) ? e.threshold : [e.threshold || 0]), n = {
39
+ id: t,
40
+ observer: a,
41
+ elements: r
42
+ }, T.set(t, n);
43
+ }
44
+ return n;
45
+ }
46
+ function M(e, t, n = {}, r = O) {
47
+ if (window.IntersectionObserver === void 0 && r !== void 0) {
48
+ let i = e.getBoundingClientRect();
49
+ return t(r, {
50
+ isIntersecting: r,
51
+ target: e,
52
+ intersectionRatio: typeof n.threshold == "number" ? n.threshold : 0,
53
+ time: 0,
54
+ boundingClientRect: i,
55
+ intersectionRect: i,
56
+ rootBounds: i
57
+ }), () => {};
58
+ }
59
+ let { id: i, observer: a, elements: o } = j(n), s = o.get(e) || [];
60
+ return o.has(e) || o.set(e, s), s.push(t), a.observe(e), function() {
61
+ s.splice(s.indexOf(t), 1), s.length === 0 && (o.delete(e), a.unobserve(e)), o.size === 0 && (a.disconnect(), T.delete(i));
62
+ };
63
+ }
64
+ function N(e) {
65
+ return typeof e.children != "function";
66
+ }
67
+ var P = class extends d.Component {
68
+ constructor(e) {
69
+ super(e), w(this, "node", null), w(this, "_unobserveCb", null), w(this, "lastInView"), w(this, "handleNode", (e) => {
70
+ this.node && (this.unobserve(), !e && !this.props.triggerOnce && !this.props.skip && (this.setState({
71
+ inView: !!this.props.initialInView,
72
+ entry: void 0
73
+ }), this.lastInView = this.props.initialInView)), this.node = e || null, this.observeNode();
74
+ }), w(this, "handleChange", (e, t) => {
75
+ let n = this.lastInView;
76
+ this.lastInView = e, !(n === void 0 && !e) && (e && this.props.triggerOnce && this.unobserve(), N(this.props) || this.setState({
77
+ inView: e,
78
+ entry: t
79
+ }), this.props.onChange && this.props.onChange(e, t));
80
+ }), this.state = {
81
+ inView: !!e.initialInView,
82
+ entry: void 0
83
+ }, this.lastInView = e.initialInView;
84
+ }
85
+ componentDidMount() {
86
+ this.unobserve(), this.observeNode();
87
+ }
88
+ componentDidUpdate(e) {
89
+ (e.rootMargin !== this.props.rootMargin || e.root !== this.props.root || e.threshold !== this.props.threshold || e.skip !== this.props.skip || e.trackVisibility !== this.props.trackVisibility || e.delay !== this.props.delay) && (this.unobserve(), this.observeNode());
90
+ }
91
+ componentWillUnmount() {
92
+ this.unobserve();
93
+ }
94
+ observeNode() {
95
+ if (!this.node || this.props.skip) return;
96
+ let { threshold: e, root: t, rootMargin: n, trackVisibility: r, delay: i, fallbackInView: a } = this.props;
97
+ this.lastInView === void 0 && (this.lastInView = this.props.initialInView), this._unobserveCb = M(this.node, this.handleChange, {
98
+ threshold: e,
99
+ root: t,
100
+ rootMargin: n,
101
+ trackVisibility: r,
102
+ delay: i
103
+ }, a);
104
+ }
105
+ unobserve() {
106
+ this._unobserveCb &&= (this._unobserveCb(), null);
107
+ }
108
+ render() {
109
+ let { children: e } = this.props;
110
+ if (typeof e == "function") {
111
+ let { inView: t, entry: n } = this.state;
112
+ return e({
113
+ inView: t,
114
+ entry: n,
115
+ ref: this.handleNode
116
+ });
117
+ }
118
+ let { as: t, triggerOnce: n, threshold: r, root: i, rootMargin: a, onChange: o, skip: s, trackVisibility: c, delay: l, initialInView: u, fallbackInView: f, ...p } = this.props;
119
+ return d.createElement(t || "div", {
120
+ ref: this.handleNode,
121
+ ...p
122
+ }, e);
123
+ }
124
+ };
125
+ function F({ threshold: e, delay: t, trackVisibility: n, rootMargin: r, root: i, triggerOnce: a, skip: o, initialInView: s, fallbackInView: c, onChange: l } = {}) {
126
+ let [u, f] = d.useState(null), p = d.useRef(l), m = d.useRef(s), [h, g] = d.useState({
127
+ inView: !!s,
128
+ entry: void 0
129
+ });
130
+ p.current = l, d.useEffect(() => {
131
+ if (m.current === void 0 && (m.current = s), o || !u) return;
132
+ let l;
133
+ return l = M(u, (e, t) => {
134
+ let n = m.current;
135
+ m.current = e, !(n === void 0 && !e) && (g({
136
+ inView: e,
137
+ entry: t
138
+ }), p.current && p.current(e, t), t.isIntersecting && a && l && (l(), l = void 0));
139
+ }, {
140
+ root: i,
141
+ rootMargin: r,
142
+ threshold: e,
143
+ trackVisibility: n,
144
+ delay: t
145
+ }, c), () => {
146
+ l && l();
147
+ };
148
+ }, [
149
+ Array.isArray(e) ? e.toString() : e,
150
+ u,
151
+ i,
152
+ r,
153
+ a,
154
+ o,
155
+ n,
156
+ c,
157
+ t
158
+ ]);
159
+ let _ = h.entry?.target, v = d.useRef(void 0);
160
+ !u && _ && !a && !o && v.current !== _ && (v.current = _, g({
161
+ inView: !!s,
162
+ entry: void 0
163
+ }), m.current = s);
164
+ let y = [
165
+ f,
166
+ h.inView,
167
+ h.entry
168
+ ];
169
+ return y.ref = y[0], y.inView = y[1], y.entry = y[2], y;
170
+ }
171
+ ("useInsertionEffect" in d ? d.useInsertionEffect : void 0) ?? d.useLayoutEffect ?? d.useEffect;
172
+ //#endregion
173
+ //#region src/contexts/LocaleContext.js
174
+ var I = f();
175
+ //#endregion
176
+ //#region src/components/IIIFResourceLabel.jsx
177
+ function L({ fallback: e, resource: t }) {
178
+ let r = p(I), i = n((e) => o(e, {}));
179
+ if (!t) return e;
180
+ let a = t.getLabel();
181
+ return a ? a.getValue(r || i || "") ?? (e || t.id) : e;
182
+ }
183
+ L.propTypes = {
184
+ fallback: x.default.string,
185
+ resource: x.default.object.isRequired
186
+ };
187
+ //#endregion
188
+ //#region src/components/IIIFThumbnail.jsx
189
+ var R = y("div", {
190
+ name: "IIIFThumbnail",
191
+ slot: "root"
192
+ })({}), z = y("span", {
193
+ name: "IIIFThumbnail",
194
+ slot: "label"
195
+ })(({ theme: e }) => ({ ...e.typography.caption })), B = y("img", {
196
+ name: "IIIFThumbnail",
197
+ slot: "image"
198
+ })(() => ({
199
+ height: "auto",
200
+ width: "auto"
201
+ })), V = ({ border: e = !1, placeholder: t, style: n = {}, thumbnail: r = null, resource: i, maxHeight: a = null, maxWidth: o = null, ...s }) => {
202
+ let { ref: c, inView: u } = F(), [d, f] = g(!1), [v, y] = g(!1), x = b(a, o), { notifyFailure: S, fallbackImage: C } = p(l);
203
+ m(() => {
204
+ d || !u || f(!0);
205
+ }, [u, d]);
206
+ let w = h(() => {
207
+ if (r) return r;
208
+ let e = x.get(i);
209
+ if (e && e.url) return e;
210
+ }, [
211
+ i,
212
+ r,
213
+ x
214
+ ]), T = h(() => {
215
+ let e = {
216
+ height: void 0,
217
+ maxHeight: void 0,
218
+ maxWidth: void 0,
219
+ width: void 0
220
+ };
221
+ if (v && C) return {
222
+ ...e,
223
+ ...n,
224
+ maxWidth: o,
225
+ maxHeight: a,
226
+ objectFit: "contain"
227
+ };
228
+ if (!w) return {
229
+ ...n,
230
+ height: a,
231
+ width: o
232
+ };
233
+ let { height: t, width: r } = w;
234
+ if (t && r) {
235
+ if (a && t > a || o && r > o) {
236
+ let n = r / t;
237
+ a && o ? o / a < n ? (e.height = Math.round(o / n), e.width = o) : (e.height = a, e.width = Math.round(a * n)) : a ? (e.height = a, e.maxWidth = Math.round(a * n)) : o && (e.width = o, e.maxHeight = Math.round(o / n));
238
+ } else e.width = r, e.height = t;
239
+ } else t && !r ? e.height = a : !t && r ? e.width = o : (e.width = o, e.height = a);
240
+ return {
241
+ ...e,
242
+ ...n
243
+ };
244
+ }, [
245
+ w,
246
+ o,
247
+ a,
248
+ n,
249
+ v,
250
+ C
251
+ ]), { url: E = t } = d && (r || w) || {}, D = v ? C || t : E;
252
+ return /* @__PURE__ */ _(B, {
253
+ ownerState: { border: e },
254
+ ref: c,
255
+ alt: v ? "Thumbnail image unavailable" : "",
256
+ role: v ? void 0 : "presentation",
257
+ src: D,
258
+ style: T,
259
+ onError: () => {
260
+ y(!0), D && S(D);
261
+ },
262
+ ...s
263
+ });
264
+ };
265
+ V.propTypes = {
266
+ border: x.default.bool,
267
+ maxHeight: x.default.number,
268
+ maxWidth: x.default.number,
269
+ placeholder: x.default.string.isRequired,
270
+ resource: x.default.object.isRequired,
271
+ style: x.default.object,
272
+ thumbnail: x.default.shape({
273
+ height: x.default.number,
274
+ url: x.default.string.isRequired,
275
+ width: x.default.number
276
+ })
277
+ };
278
+ var H = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mMMDQmtBwADgwF/Op8FmAAAAABJRU5ErkJggg==";
279
+ function U({ border: e = !1, children: t = null, imagePlaceholder: n = H, label: r = void 0, labelled: i = !1, maxHeight: a = null, maxWidth: o = null, resource: s, style: c = {}, thumbnail: l = null }) {
280
+ let u = arguments[0];
281
+ return /* @__PURE__ */ v(R, {
282
+ ownerState: u,
283
+ children: [
284
+ /* @__PURE__ */ _(V, {
285
+ placeholder: n,
286
+ thumbnail: l,
287
+ resource: s,
288
+ maxHeight: a,
289
+ maxWidth: o,
290
+ style: c,
291
+ border: e
292
+ }),
293
+ i && /* @__PURE__ */ _(z, {
294
+ ownerState: u,
295
+ children: r || /* @__PURE__ */ _(L, { resource: s })
296
+ }),
297
+ t
298
+ ]
299
+ });
300
+ }
301
+ U.propTypes = {
302
+ border: x.default.bool,
303
+ children: x.default.node,
304
+ imagePlaceholder: x.default.string,
305
+ label: x.default.string,
306
+ labelled: x.default.bool,
307
+ maxHeight: x.default.number,
308
+ maxWidth: x.default.number,
309
+ resource: x.default.object.isRequired,
310
+ style: x.default.object,
311
+ thumbnail: x.default.shape({
312
+ height: x.default.number,
313
+ url: x.default.string.isRequired,
314
+ width: x.default.number
315
+ }),
316
+ variant: x.default.oneOf(["inside", "outside"])
317
+ };
318
+ var W = e(a((e) => ({ thumbnailsConfig: c(e).thumbnails })), i("IIIFThumbnail"))(U), G = u(/*#__PURE__*/ _("path", { d: "M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14" }), "SearchSharp"), K = u(/*#__PURE__*/ _("path", { d: "M21.99 2H2v16h16l4 4zM18 14H6v-2h12zm0-3H6V9h12zm0-3H6V6h12z" }), "CommentSharp");
319
+ //#endregion
320
+ export { L as a, U as i, G as n, I as o, W as r, P as s, K as t };
321
+
322
+ //# sourceMappingURL=CommentSharp-DaW0oBJy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommentSharp-DaW0oBJy.js","names":["React","React2","React3","createSvgIcon","createSvgIcon"],"sources":["../src/hooks/useThumbnailService.js","../node_modules/react-intersection-observer/dist/index.mjs","../src/contexts/LocaleContext.js","../src/components/IIIFResourceLabel.jsx","../src/components/IIIFThumbnail.jsx","../src/containers/IIIFThumbnail.js","../node_modules/@mui/icons-material/esm/SearchSharp.js","../node_modules/@mui/icons-material/esm/CommentSharp.js"],"sourcesContent":["import { useSelector } from 'react-redux';\n\nimport { getThumbnailFactory } from '../state/selectors/thumbnails';\n\n/** */\nexport default function useThumbnailService(maxHeight, maxWidth) {\n return useSelector((state) => getThumbnailFactory(state, maxHeight, maxWidth), [maxHeight, maxWidth]);\n}\n","\"use client\";\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n\n// src/InView.tsx\nimport * as React from \"react\";\n\n// src/observe.ts\nvar observerMap = /* @__PURE__ */ new Map();\nvar RootIds = /* @__PURE__ */ new WeakMap();\nvar rootId = 0;\nvar unsupportedValue;\nfunction defaultFallbackInView(inView) {\n unsupportedValue = inView;\n}\nfunction getRootId(root) {\n if (!root) return \"0\";\n if (RootIds.has(root)) return RootIds.get(root);\n rootId += 1;\n RootIds.set(root, rootId.toString());\n return RootIds.get(root);\n}\nfunction optionsToId(options) {\n return Object.keys(options).sort().filter(\n (key) => options[key] !== void 0\n ).map((key) => {\n return `${key}_${key === \"root\" ? getRootId(options.root) : options[key]}`;\n }).toString();\n}\nfunction createObserver(options) {\n const id = optionsToId(options);\n let instance = observerMap.get(id);\n if (!instance) {\n const elements = /* @__PURE__ */ new Map();\n let thresholds;\n const observer = new IntersectionObserver((entries) => {\n entries.forEach((entry) => {\n var _a2;\n const inView = entry.isIntersecting && thresholds.some((threshold) => entry.intersectionRatio >= threshold);\n if (options.trackVisibility && typeof entry.isVisible === \"undefined\") {\n entry.isVisible = inView;\n }\n [...(_a2 = elements.get(entry.target)) != null ? _a2 : []].forEach((callback) => {\n callback(inView, entry);\n });\n });\n }, options);\n thresholds = observer.thresholds || (Array.isArray(options.threshold) ? options.threshold : [options.threshold || 0]);\n instance = {\n id,\n observer,\n elements\n };\n observerMap.set(id, instance);\n }\n return instance;\n}\nfunction observe(element, callback, options = {}, fallbackInView = unsupportedValue) {\n if (typeof window.IntersectionObserver === \"undefined\" && fallbackInView !== void 0) {\n const bounds = element.getBoundingClientRect();\n callback(fallbackInView, {\n isIntersecting: fallbackInView,\n target: element,\n intersectionRatio: typeof options.threshold === \"number\" ? options.threshold : 0,\n time: 0,\n boundingClientRect: bounds,\n intersectionRect: bounds,\n rootBounds: bounds\n });\n return () => {\n };\n }\n const { id, observer, elements } = createObserver(options);\n const callbacks = elements.get(element) || [];\n if (!elements.has(element)) {\n elements.set(element, callbacks);\n }\n callbacks.push(callback);\n observer.observe(element);\n return function unobserve() {\n callbacks.splice(callbacks.indexOf(callback), 1);\n if (callbacks.length === 0) {\n elements.delete(element);\n observer.unobserve(element);\n }\n if (elements.size === 0) {\n observer.disconnect();\n observerMap.delete(id);\n }\n };\n}\n\n// src/InView.tsx\nfunction isPlainChildren(props) {\n return typeof props.children !== \"function\";\n}\nvar InView = class extends React.Component {\n constructor(props) {\n super(props);\n __publicField(this, \"node\", null);\n __publicField(this, \"_unobserveCb\", null);\n __publicField(this, \"lastInView\");\n __publicField(this, \"handleNode\", (node) => {\n if (this.node) {\n this.unobserve();\n if (!node && !this.props.triggerOnce && !this.props.skip) {\n this.setState({ inView: !!this.props.initialInView, entry: void 0 });\n this.lastInView = this.props.initialInView;\n }\n }\n this.node = node ? node : null;\n this.observeNode();\n });\n __publicField(this, \"handleChange\", (inView, entry) => {\n const previousInView = this.lastInView;\n this.lastInView = inView;\n if (previousInView === void 0 && !inView) {\n return;\n }\n if (inView && this.props.triggerOnce) {\n this.unobserve();\n }\n if (!isPlainChildren(this.props)) {\n this.setState({ inView, entry });\n }\n if (this.props.onChange) {\n this.props.onChange(inView, entry);\n }\n });\n this.state = {\n inView: !!props.initialInView,\n entry: void 0\n };\n this.lastInView = props.initialInView;\n }\n componentDidMount() {\n this.unobserve();\n this.observeNode();\n }\n componentDidUpdate(prevProps) {\n if (prevProps.rootMargin !== this.props.rootMargin || prevProps.root !== this.props.root || prevProps.threshold !== this.props.threshold || prevProps.skip !== this.props.skip || prevProps.trackVisibility !== this.props.trackVisibility || prevProps.delay !== this.props.delay) {\n this.unobserve();\n this.observeNode();\n }\n }\n componentWillUnmount() {\n this.unobserve();\n }\n observeNode() {\n if (!this.node || this.props.skip) return;\n const {\n threshold,\n root,\n rootMargin,\n trackVisibility,\n delay,\n fallbackInView\n } = this.props;\n if (this.lastInView === void 0) {\n this.lastInView = this.props.initialInView;\n }\n this._unobserveCb = observe(\n this.node,\n this.handleChange,\n {\n threshold,\n root,\n rootMargin,\n // @ts-expect-error\n trackVisibility,\n delay\n },\n fallbackInView\n );\n }\n unobserve() {\n if (this._unobserveCb) {\n this._unobserveCb();\n this._unobserveCb = null;\n }\n }\n render() {\n const { children } = this.props;\n if (typeof children === \"function\") {\n const { inView, entry } = this.state;\n return children({ inView, entry, ref: this.handleNode });\n }\n const {\n as,\n triggerOnce,\n threshold,\n root,\n rootMargin,\n onChange,\n skip,\n trackVisibility,\n delay,\n initialInView,\n fallbackInView,\n ...props\n } = this.props;\n return React.createElement(\n as || \"div\",\n { ref: this.handleNode, ...props },\n children\n );\n }\n};\n\n// src/useInView.tsx\nimport * as React2 from \"react\";\nfunction useInView({\n threshold,\n delay,\n trackVisibility,\n rootMargin,\n root,\n triggerOnce,\n skip,\n initialInView,\n fallbackInView,\n onChange\n} = {}) {\n var _a2;\n const [ref, setRef] = React2.useState(null);\n const callback = React2.useRef(onChange);\n const lastInViewRef = React2.useRef(initialInView);\n const [state, setState] = React2.useState({\n inView: !!initialInView,\n entry: void 0\n });\n callback.current = onChange;\n React2.useEffect(\n () => {\n if (lastInViewRef.current === void 0) {\n lastInViewRef.current = initialInView;\n }\n if (skip || !ref) return;\n let unobserve;\n unobserve = observe(\n ref,\n (inView, entry) => {\n const previousInView = lastInViewRef.current;\n lastInViewRef.current = inView;\n if (previousInView === void 0 && !inView) {\n return;\n }\n setState({\n inView,\n entry\n });\n if (callback.current) callback.current(inView, entry);\n if (entry.isIntersecting && triggerOnce && unobserve) {\n unobserve();\n unobserve = void 0;\n }\n },\n {\n root,\n rootMargin,\n threshold,\n // @ts-expect-error\n trackVisibility,\n delay\n },\n fallbackInView\n );\n return () => {\n if (unobserve) {\n unobserve();\n }\n };\n },\n // We break the rule here, because we aren't including the actual `threshold` variable\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n // If the threshold is an array, convert it to a string, so it won't change between renders.\n Array.isArray(threshold) ? threshold.toString() : threshold,\n ref,\n root,\n rootMargin,\n triggerOnce,\n skip,\n trackVisibility,\n fallbackInView,\n delay\n ]\n );\n const entryTarget = (_a2 = state.entry) == null ? void 0 : _a2.target;\n const previousEntryTarget = React2.useRef(void 0);\n if (!ref && entryTarget && !triggerOnce && !skip && previousEntryTarget.current !== entryTarget) {\n previousEntryTarget.current = entryTarget;\n setState({\n inView: !!initialInView,\n entry: void 0\n });\n lastInViewRef.current = initialInView;\n }\n const result = [setRef, state.inView, state.entry];\n result.ref = result[0];\n result.inView = result[1];\n result.entry = result[2];\n return result;\n}\n\n// src/useOnInView.tsx\nimport * as React3 from \"react\";\nvar _a, _b;\nvar useSyncEffect = (_b = (_a = \"useInsertionEffect\" in React3 ? React3.useInsertionEffect : void 0) != null ? _a : React3.useLayoutEffect) != null ? _b : React3.useEffect;\nvar useOnInView = (onIntersectionChange, {\n threshold,\n root,\n rootMargin,\n trackVisibility,\n delay,\n triggerOnce,\n skip\n} = {}) => {\n const onIntersectionChangeRef = React3.useRef(onIntersectionChange);\n const observedElementRef = React3.useRef(null);\n const observerCleanupRef = React3.useRef(void 0);\n const lastInViewRef = React3.useRef(void 0);\n useSyncEffect(() => {\n onIntersectionChangeRef.current = onIntersectionChange;\n }, [onIntersectionChange]);\n return React3.useCallback(\n (element) => {\n const cleanupExisting = () => {\n if (observerCleanupRef.current) {\n const cleanup = observerCleanupRef.current;\n observerCleanupRef.current = void 0;\n cleanup();\n }\n };\n if (element === observedElementRef.current) {\n return observerCleanupRef.current;\n }\n if (!element || skip) {\n cleanupExisting();\n observedElementRef.current = null;\n lastInViewRef.current = void 0;\n return;\n }\n cleanupExisting();\n observedElementRef.current = element;\n let destroyed = false;\n const destroyObserver = observe(\n element,\n (inView, entry) => {\n const previousInView = lastInViewRef.current;\n lastInViewRef.current = inView;\n if (previousInView === void 0 && !inView) {\n return;\n }\n onIntersectionChangeRef.current(\n inView,\n entry\n );\n if (triggerOnce && inView) {\n stopObserving();\n }\n },\n {\n threshold,\n root,\n rootMargin,\n trackVisibility,\n delay\n }\n );\n function stopObserving() {\n if (destroyed) return;\n destroyed = true;\n destroyObserver();\n observedElementRef.current = null;\n observerCleanupRef.current = void 0;\n lastInViewRef.current = void 0;\n }\n observerCleanupRef.current = stopObserving;\n return observerCleanupRef.current;\n },\n [\n Array.isArray(threshold) ? threshold.toString() : threshold,\n root,\n rootMargin,\n trackVisibility,\n delay,\n triggerOnce,\n skip\n ]\n );\n};\nexport {\n InView,\n defaultFallbackInView,\n observe,\n useInView,\n useOnInView\n};\n//# sourceMappingURL=index.mjs.map","import { createContext } from 'react';\n\nconst LocaleContext = createContext();\n\nexport default LocaleContext;\n","import { useContext } from 'react';\nimport { useSelector } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { getLocale } from '../state/selectors';\nimport LocaleContext from '../contexts/LocaleContext';\n\n/**\n * Render the contextually appropriate label for the resource\n */\nexport function IIIFResourceLabel({ fallback, resource }) {\n const contextLocale = useContext(LocaleContext);\n const fallbackLocale = useSelector((state) => getLocale(state, {}));\n\n if (!resource) return fallback;\n\n const label = resource.getLabel();\n\n if (!label) return fallback;\n\n return label.getValue(contextLocale || fallbackLocale || '') ?? (fallback || resource.id);\n}\n\nIIIFResourceLabel.propTypes = {\n fallback: PropTypes.string,\n resource: PropTypes.object.isRequired,\n};\n","import { useMemo, useEffect, useState, useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport { styled } from '@mui/material/styles';\nimport { useInView } from 'react-intersection-observer';\nimport { IIIFResourceLabel } from './IIIFResourceLabel';\nimport { useThumbnailService } from '../hooks';\nimport FailedImageContext from '../contexts/FailedImageContext';\n\nconst Root = styled('div', { name: 'IIIFThumbnail', slot: 'root' })({});\n\nconst Label = styled('span', { name: 'IIIFThumbnail', slot: 'label' })(({ theme }) => ({\n ...theme.typography.caption,\n}));\n\nconst Image = styled('img', { name: 'IIIFThumbnail', slot: 'image' })(() => ({\n height: 'auto',\n width: 'auto',\n}));\n\n/**\n * A lazy-loaded image that uses IntersectionObserver to determine when to\n * try to load the image (or even calculate that the image url/height/width are)\n */\nconst LazyLoadedImage = ({\n border = false,\n placeholder,\n style = {},\n thumbnail = null,\n resource,\n maxHeight = null,\n maxWidth = null,\n ...props\n}) => {\n const { ref, inView } = useInView();\n const [loaded, setLoaded] = useState(false);\n const [failed, setFailed] = useState(false);\n const thumbnailService = useThumbnailService(maxHeight, maxWidth);\n const { notifyFailure, fallbackImage } = useContext(FailedImageContext);\n\n /**\n * Handles the intersection (visibility) of a given thumbnail, by requesting\n * the image and then updating the state.\n */\n useEffect(() => {\n if (loaded || !inView) return;\n\n setLoaded(true);\n }, [inView, loaded]);\n\n const image = useMemo(() => {\n if (thumbnail) return thumbnail;\n\n const i = thumbnailService.get(resource);\n\n if (i && i.url) return i;\n\n return undefined;\n }, [resource, thumbnail, thumbnailService]);\n\n const imageStyles = useMemo(() => {\n const styleProps = {\n height: undefined,\n maxHeight: undefined,\n maxWidth: undefined,\n width: undefined,\n };\n\n // If we're using a fallback image due to failure, use object-fit to preserve aspect ratio\n if (failed && fallbackImage) {\n return {\n ...styleProps,\n ...style,\n maxWidth,\n maxHeight,\n objectFit: 'contain',\n };\n }\n\n if (!image) return { ...style, height: maxHeight, width: maxWidth };\n\n const { height: thumbHeight, width: thumbWidth } = image;\n if (thumbHeight && thumbWidth) {\n if ((maxHeight && thumbHeight > maxHeight) || (maxWidth && thumbWidth > maxWidth)) {\n const aspectRatio = thumbWidth / thumbHeight;\n\n if (maxHeight && maxWidth) {\n if (maxWidth / maxHeight < aspectRatio) {\n styleProps.height = Math.round(maxWidth / aspectRatio);\n styleProps.width = maxWidth;\n } else {\n styleProps.height = maxHeight;\n styleProps.width = Math.round(maxHeight * aspectRatio);\n }\n } else if (maxHeight) {\n styleProps.height = maxHeight;\n styleProps.maxWidth = Math.round(maxHeight * aspectRatio);\n } else if (maxWidth) {\n styleProps.width = maxWidth;\n styleProps.maxHeight = Math.round(maxWidth / aspectRatio);\n }\n } else {\n styleProps.width = thumbWidth;\n styleProps.height = thumbHeight;\n }\n } else if (thumbHeight && !thumbWidth) {\n styleProps.height = maxHeight;\n } else if (!thumbHeight && thumbWidth) {\n styleProps.width = maxWidth;\n } else {\n // The thumbnail wasn't retrieved via an Image API service,\n // and its dimensions are not specified in the JSON-LD\n // (note that this may result in a blurry image)\n styleProps.width = maxWidth;\n styleProps.height = maxHeight;\n }\n\n return {\n ...styleProps,\n ...style,\n };\n }, [image, maxWidth, maxHeight, style, failed, fallbackImage]);\n\n const { url: src = placeholder } = (loaded && (thumbnail || image)) || {};\n // Decide final image source: normal, failed fallback, or placeholder\n const finalSrc = failed ? fallbackImage || placeholder : src;\n\n return (\n <Image\n ownerState={{ border }}\n ref={ref}\n alt={failed ? 'Thumbnail image unavailable' : ''}\n role={failed ? undefined : 'presentation'}\n src={finalSrc}\n style={imageStyles}\n onError={() => {\n setFailed(true);\n if (finalSrc) notifyFailure(finalSrc);\n }}\n {...props}\n />\n );\n};\n\nLazyLoadedImage.propTypes = {\n border: PropTypes.bool,\n maxHeight: PropTypes.number,\n maxWidth: PropTypes.number,\n placeholder: PropTypes.string.isRequired,\n resource: PropTypes.object.isRequired,\n style: PropTypes.object,\n thumbnail: PropTypes.shape({\n height: PropTypes.number,\n url: PropTypes.string.isRequired,\n width: PropTypes.number,\n }),\n};\n\nconst defaultPlaceholder =\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mMMDQmtBwADgwF/Op8FmAAAAABJRU5ErkJggg==';\n\n/**\n * Uses InteractionObserver to \"lazy\" load canvas thumbnails that are in view.\n */\nexport function IIIFThumbnail({\n border = false,\n children = null,\n imagePlaceholder = defaultPlaceholder,\n label = undefined,\n labelled = false,\n maxHeight = null,\n maxWidth = null,\n resource,\n style = {},\n thumbnail = null,\n}) {\n // eslint-disable-next-line prefer-rest-params\n const ownerState = arguments[0];\n\n return (\n <Root ownerState={ownerState}>\n <LazyLoadedImage\n placeholder={imagePlaceholder}\n thumbnail={thumbnail}\n resource={resource}\n maxHeight={maxHeight}\n maxWidth={maxWidth}\n style={style}\n border={border}\n />\n\n {labelled && <Label ownerState={ownerState}>{label || <IIIFResourceLabel resource={resource} />}</Label>}\n {children}\n </Root>\n );\n}\n\nIIIFThumbnail.propTypes = {\n border: PropTypes.bool,\n children: PropTypes.node,\n imagePlaceholder: PropTypes.string,\n label: PropTypes.string,\n labelled: PropTypes.bool,\n maxHeight: PropTypes.number,\n maxWidth: PropTypes.number,\n resource: PropTypes.object.isRequired,\n style: PropTypes.object,\n thumbnail: PropTypes.shape({\n height: PropTypes.number,\n url: PropTypes.string.isRequired,\n width: PropTypes.number,\n }),\n // eslint-disable-next-line react/no-unused-prop-types\n variant: PropTypes.oneOf(['inside', 'outside']),\n};\n","import { compose } from 'redux';\nimport { connect } from 'react-redux';\nimport { withPlugins } from '../extend/withPlugins';\nimport { getConfig } from '../state/selectors';\nimport { IIIFThumbnail } from '../components/IIIFThumbnail';\n\n/**\n * mapStateToProps - to hook up connect\n * @private\n */\nconst mapStateToProps = (state) => ({\n thumbnailsConfig: getConfig(state).thumbnails,\n});\n\nconst enhance = compose(connect(mapStateToProps), withPlugins('IIIFThumbnail'));\n\nexport default enhance(IIIFThumbnail);\n","\"use client\";\n\nimport createSvgIcon from \"./utils/createSvgIcon.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n d: \"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14\"\n}), 'SearchSharp');","\"use client\";\n\nimport createSvgIcon from \"./utils/createSvgIcon.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n d: \"M21.99 2H2v16h16l4 4zM18 14H6v-2h12zm0-3H6V9h12zm0-3H6V6h12z\"\n}), 'CommentSharp');"],"x_google_ignoreList":[1,6,7],"mappings":"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"}