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.
- package/dist/AudioViewer-tRH73pbt.js +40 -0
- package/dist/AudioViewer-tRH73pbt.js.map +1 -0
- package/dist/CommentSharp-DaW0oBJy.js +322 -0
- package/dist/CommentSharp-DaW0oBJy.js.map +1 -0
- package/dist/FailedImageContext-DYZ9cZx9.js +318 -0
- package/dist/FailedImageContext-DYZ9cZx9.js.map +1 -0
- package/dist/GalleryView-DyLH1kk0.js +176 -0
- package/dist/GalleryView-DyLH1kk0.js.map +1 -0
- package/dist/OpenSeadragonViewer-CBmX5sYE.js +7852 -0
- package/dist/OpenSeadragonViewer-CBmX5sYE.js.map +1 -0
- package/dist/PluginHook-DWFCXIIp.js +54 -0
- package/dist/PluginHook-DWFCXIIp.js.map +1 -0
- package/dist/SelectCollection-BK9ZDkK3.js +67 -0
- package/dist/SelectCollection-BK9ZDkK3.js.map +1 -0
- package/dist/TextViewer-D_1qzQE4.js +38 -0
- package/dist/TextViewer-D_1qzQE4.js.map +1 -0
- package/dist/VideoViewer-DzNjgLWE.js +42 -0
- package/dist/VideoViewer-DzNjgLWE.js.map +1 -0
- package/dist/WindowCanvasNavigationControls-D2uLtL_A.js +242 -0
- package/dist/WindowCanvasNavigationControls-D2uLtL_A.js.map +1 -0
- package/dist/WindowViewer-BW0_w7wv.js +27 -0
- package/dist/WindowViewer-BW0_w7wv.js.map +1 -0
- package/dist/WorkspaceArea-C0RjqnIL.js +22222 -0
- package/dist/WorkspaceArea-C0RjqnIL.js.map +1 -0
- package/dist/action-types-DjIbTE-A.js +74 -0
- package/dist/action-types-DjIbTE-A.js.map +1 -0
- package/dist/canvas-2ACcnS9Y.js +41 -0
- package/dist/canvas-2ACcnS9Y.js.map +1 -0
- package/dist/canvases-DTR37lo-.js +3270 -0
- package/dist/canvases-DTR37lo-.js.map +1 -0
- package/dist/createSvgIcon-Cwt8YPfm.js +2 -0
- package/dist/getters-B4oepJRC.js +2043 -0
- package/dist/getters-B4oepJRC.js.map +1 -0
- package/dist/index.module-CgUBfaXx.js +403 -0
- package/dist/index.module-CgUBfaXx.js.map +1 -0
- package/dist/mirador.es.js +9222 -0
- package/dist/mirador.es.js.map +1 -0
- package/dist/mirador.min.js +335 -0
- package/dist/mirador.min.js.map +1 -0
- package/dist/react-error-boundary.esm-ByHqCaxk.js +67 -0
- package/dist/react-error-boundary.esm-ByHqCaxk.js.map +1 -0
- package/dist/visuallyHidden-C4mhQkB0.js +98 -0
- package/dist/visuallyHidden-C4mhQkB0.js.map +1 -0
- package/dist/window-COQOIAli.js +138 -0
- package/dist/window-COQOIAli.js.map +1 -0
- 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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"}
|