UNPKG

v-viewer

Version:

Image viewer component for vue, supports rotation, scale, zoom and so on, based on viewer.js

560 lines (559 loc) 16 kB
import _ from "viewerjs"; import { default as on } from "viewerjs"; import { h as K, render as G, watch as x, nextTick as P, defineComponent as be, ref as me, onMounted as he, onUnmounted as we, openBlock as Te, createElementBlock as $e, renderSlot as Oe } from "vue"; var je = typeof global == "object" && global && global.Object === Object && global; const re = je; var _e = typeof self == "object" && self && self.Object === Object && self, Ae = re || _e || Function("return this")(); const E = Ae; var xe = E.Symbol; const S = xe; var te = Object.prototype, Pe = te.hasOwnProperty, Se = te.toString, O = S ? S.toStringTag : void 0; function Ie(e) { var r = Pe.call(e, O), t = e[O]; try { e[O] = void 0; var n = !0; } catch { } var i = Se.call(e); return n && (r ? e[O] = t : delete e[O]), i; } var Ee = Object.prototype, Me = Ee.toString; function Ve(e) { return Me.call(e); } var Ce = "[object Null]", Be = "[object Undefined]", H = S ? S.toStringTag : void 0; function M(e) { return e == null ? e === void 0 ? Be : Ce : H && H in Object(e) ? Ie(e) : Ve(e); } function V(e) { return e != null && typeof e == "object"; } var Ue = "[object Symbol]"; function Fe(e) { return typeof e == "symbol" || V(e) && M(e) == Ue; } var Ne = Array.isArray; const De = Ne; var We = /\s/; function Le(e) { for (var r = e.length; r-- && We.test(e.charAt(r)); ) ; return r; } var Re = /^\s+/; function Ke(e) { return e && e.slice(0, Le(e) + 1).replace(Re, ""); } function b(e) { var r = typeof e; return e != null && (r == "object" || r == "function"); } var q = 0 / 0, Ge = /^[-+]0x[0-9a-f]+$/i, He = /^0b[01]+$/i, qe = /^0o[0-7]+$/i, Je = parseInt; function J(e) { if (typeof e == "number") return e; if (Fe(e)) return q; if (b(e)) { var r = typeof e.valueOf == "function" ? e.valueOf() : e; e = b(r) ? r + "" : r; } if (typeof e != "string") return e === 0 ? e : +e; e = Ke(e); var t = He.test(e); return t || qe.test(e) ? Je(e.slice(2), t ? 2 : 8) : Ge.test(e) ? q : +e; } function ne(e) { return e; } var Xe = "[object AsyncFunction]", ze = "[object Function]", Qe = "[object GeneratorFunction]", Ye = "[object Proxy]"; function ie(e) { if (!b(e)) return !1; var r = M(e); return r == ze || r == Qe || r == Xe || r == Ye; } var Ze = E["__core-js_shared__"]; const F = Ze; var X = function() { var e = /[^.]+$/.exec(F && F.keys && F.keys.IE_PROTO || ""); return e ? "Symbol(src)_1." + e : ""; }(); function ke(e) { return !!X && X in e; } var er = Function.prototype, rr = er.toString; function tr(e) { if (e != null) { try { return rr.call(e); } catch { } try { return e + ""; } catch { } } return ""; } var nr = /[\\^$.*+?()[\]{}|]/g, ir = /^\[object .+?Constructor\]$/, or = Function.prototype, ar = Object.prototype, ur = or.toString, sr = ar.hasOwnProperty, cr = RegExp( "^" + ur.call(sr).replace(nr, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$" ); function fr(e) { if (!b(e) || ke(e)) return !1; var r = ie(e) ? cr : ir; return r.test(tr(e)); } function dr(e, r) { return e == null ? void 0 : e[r]; } function lr(e, r) { var t = dr(e, r); return fr(t) ? t : void 0; } function pr(e, r, t) { switch (t.length) { case 0: return e.call(r); case 1: return e.call(r, t[0]); case 2: return e.call(r, t[0], t[1]); case 3: return e.call(r, t[0], t[1], t[2]); } return e.apply(r, t); } var gr = 800, vr = 16, yr = Date.now; function br(e) { var r = 0, t = 0; return function() { var n = yr(), i = vr - (n - t); if (t = n, i > 0) { if (++r >= gr) return arguments[0]; } else r = 0; return e.apply(void 0, arguments); }; } function mr(e) { return function() { return e; }; } var hr = function() { try { var e = lr(Object, "defineProperty"); return e({}, "", {}), e; } catch { } }(); const I = hr; var wr = I ? function(e, r) { return I(e, "toString", { configurable: !0, enumerable: !1, value: mr(r), writable: !0 }); } : ne; const Tr = wr; var $r = br(Tr); const Or = $r; var jr = 9007199254740991, _r = /^(?:0|[1-9]\d*)$/; function oe(e, r) { var t = typeof e; return r = r == null ? jr : r, !!r && (t == "number" || t != "symbol" && _r.test(e)) && e > -1 && e % 1 == 0 && e < r; } function ae(e, r, t) { r == "__proto__" && I ? I(e, r, { configurable: !0, enumerable: !0, value: t, writable: !0 }) : e[r] = t; } function W(e, r) { return e === r || e !== e && r !== r; } var Ar = Object.prototype, xr = Ar.hasOwnProperty; function ue(e, r, t) { var n = e[r]; (!(xr.call(e, r) && W(n, t)) || t === void 0 && !(r in e)) && ae(e, r, t); } function Pr(e, r, t, n) { var i = !t; t || (t = {}); for (var u = -1, c = r.length; ++u < c; ) { var a = r[u], d = n ? n(t[a], e[a], a, t, e) : void 0; d === void 0 && (d = e[a]), i ? ae(t, a, d) : ue(t, a, d); } return t; } var z = Math.max; function Sr(e, r, t) { return r = z(r === void 0 ? e.length - 1 : r, 0), function() { for (var n = arguments, i = -1, u = z(n.length - r, 0), c = Array(u); ++i < u; ) c[i] = n[r + i]; i = -1; for (var a = Array(r + 1); ++i < r; ) a[i] = n[i]; return a[r] = t(c), pr(e, this, a); }; } function se(e, r) { return Or(Sr(e, r, ne), e + ""); } var Ir = 9007199254740991; function ce(e) { return typeof e == "number" && e > -1 && e % 1 == 0 && e <= Ir; } function C(e) { return e != null && ce(e.length) && !ie(e); } function fe(e, r, t) { if (!b(t)) return !1; var n = typeof r; return (n == "number" ? C(t) && oe(r, t.length) : n == "string" && r in t) ? W(t[r], e) : !1; } function Er(e) { return se(function(r, t) { var n = -1, i = t.length, u = i > 1 ? t[i - 1] : void 0, c = i > 2 ? t[2] : void 0; for (u = e.length > 3 && typeof u == "function" ? (i--, u) : void 0, c && fe(t[0], t[1], c) && (u = i < 3 ? void 0 : u, i = 1), r = Object(r); ++n < i; ) { var a = t[n]; a && e(r, a, n, u); } return r; }); } var Mr = Object.prototype; function L(e) { var r = e && e.constructor, t = typeof r == "function" && r.prototype || Mr; return e === t; } function Vr(e, r) { for (var t = -1, n = Array(e); ++t < e; ) n[t] = r(t); return n; } var Cr = "[object Arguments]"; function Q(e) { return V(e) && M(e) == Cr; } var de = Object.prototype, Br = de.hasOwnProperty, Ur = de.propertyIsEnumerable, Fr = Q(function() { return arguments; }()) ? Q : function(e) { return V(e) && Br.call(e, "callee") && !Ur.call(e, "callee"); }; const Nr = Fr; function Dr() { return !1; } var le = typeof exports == "object" && exports && !exports.nodeType && exports, Y = le && typeof module == "object" && module && !module.nodeType && module, Wr = Y && Y.exports === le, Z = Wr ? E.Buffer : void 0, Lr = Z ? Z.isBuffer : void 0, Rr = Lr || Dr; const Kr = Rr; var Gr = "[object Arguments]", Hr = "[object Array]", qr = "[object Boolean]", Jr = "[object Date]", Xr = "[object Error]", zr = "[object Function]", Qr = "[object Map]", Yr = "[object Number]", Zr = "[object Object]", kr = "[object RegExp]", et = "[object Set]", rt = "[object String]", tt = "[object WeakMap]", nt = "[object ArrayBuffer]", it = "[object DataView]", ot = "[object Float32Array]", at = "[object Float64Array]", ut = "[object Int8Array]", st = "[object Int16Array]", ct = "[object Int32Array]", ft = "[object Uint8Array]", dt = "[object Uint8ClampedArray]", lt = "[object Uint16Array]", pt = "[object Uint32Array]", f = {}; f[ot] = f[at] = f[ut] = f[st] = f[ct] = f[ft] = f[dt] = f[lt] = f[pt] = !0; f[Gr] = f[Hr] = f[nt] = f[qr] = f[it] = f[Jr] = f[Xr] = f[zr] = f[Qr] = f[Yr] = f[Zr] = f[kr] = f[et] = f[rt] = f[tt] = !1; function gt(e) { return V(e) && ce(e.length) && !!f[M(e)]; } function vt(e) { return function(r) { return e(r); }; } var pe = typeof exports == "object" && exports && !exports.nodeType && exports, j = pe && typeof module == "object" && module && !module.nodeType && module, yt = j && j.exports === pe, N = yt && re.process, bt = function() { try { var e = j && j.require && j.require("util").types; return e || N && N.binding && N.binding("util"); } catch { } }(); const k = bt; var ee = k && k.isTypedArray, mt = ee ? vt(ee) : gt; const ht = mt; var wt = Object.prototype, Tt = wt.hasOwnProperty; function ge(e, r) { var t = De(e), n = !t && Nr(e), i = !t && !n && Kr(e), u = !t && !n && !i && ht(e), c = t || n || i || u, a = c ? Vr(e.length, String) : [], d = a.length; for (var s in e) (r || Tt.call(e, s)) && !(c && (s == "length" || i && (s == "offset" || s == "parent") || u && (s == "buffer" || s == "byteLength" || s == "byteOffset") || oe(s, d))) && a.push(s); return a; } function $t(e, r) { return function(t) { return e(r(t)); }; } var Ot = $t(Object.keys, Object); const jt = Ot; var _t = Object.prototype, At = _t.hasOwnProperty; function xt(e) { if (!L(e)) return jt(e); var r = []; for (var t in Object(e)) At.call(e, t) && t != "constructor" && r.push(t); return r; } function Pt(e) { return C(e) ? ge(e) : xt(e); } var St = Object.prototype, It = St.hasOwnProperty, Et = Er(function(e, r) { if (L(r) || C(r)) { Pr(r, Pt(r), e); return; } for (var t in r) It.call(r, t) && ue(e, t, r[t]); }); const Mt = Et; function Vt(e) { var r = []; if (e != null) for (var t in Object(e)) r.push(t); return r; } var Ct = Object.prototype, Bt = Ct.hasOwnProperty; function Ut(e) { if (!b(e)) return Vt(e); var r = L(e), t = []; for (var n in e) n == "constructor" && (r || !Bt.call(e, n)) || t.push(n); return t; } function Ft(e) { return C(e) ? ge(e, !0) : Ut(e); } var Nt = function() { return E.Date.now(); }; const D = Nt; var Dt = "Expected a function", Wt = Math.max, Lt = Math.min; function Rt(e, r, t) { var n, i, u, c, a, d, s = 0, m = !1, o = !1, l = !0; if (typeof e != "function") throw new TypeError(Dt); r = J(r) || 0, b(t) && (m = !!t.leading, o = "maxWait" in t, u = o ? Wt(J(t.maxWait) || 0, r) : u, l = "trailing" in t ? !!t.trailing : l); function g(p) { var y = n, $ = i; return n = i = void 0, s = p, c = e.apply($, y), c; } function v(p) { return s = p, a = setTimeout(T, r), m ? g(p) : c; } function h(p) { var y = p - d, $ = p - s, R = r - y; return o ? Lt(R, u - $) : R; } function w(p) { var y = p - d, $ = p - s; return d === void 0 || y >= r || y < 0 || o && $ >= u; } function T() { var p = D(); if (w(p)) return A(p); a = setTimeout(T, h(p)); } function A(p) { return a = void 0, l && n ? g(p) : (n = i = void 0, c); } function B() { a !== void 0 && clearTimeout(a), s = 0, n = d = i = a = void 0; } function ye() { return a === void 0 ? c : A(D()); } function U() { var p = D(), y = w(p); if (n = arguments, i = this, d = p, y) { if (a === void 0) return v(d); if (o) return clearTimeout(a), a = setTimeout(T, r), g(d); } return a === void 0 && (a = setTimeout(T, r)), c; } return U.cancel = B, U.flush = ye, U; } var ve = Object.prototype, Kt = ve.hasOwnProperty, Gt = se(function(e, r) { e = Object(e); var t = -1, n = r.length, i = n > 2 ? r[2] : void 0; for (i && fe(r[0], r[1], i) && (n = 1); ++t < n; ) for (var u = r[t], c = Ft(u), a = -1, d = c.length; ++a < d; ) { var s = c[a], m = e[s]; (m === void 0 || W(m, ve[s]) && !Kt.call(e, s)) && (e[s] = u[s]); } return e; }); const Ht = Gt, qt = ({ images: e = [], options: r }) => { r = Mt(r, { inline: !1 }); const t = document.createElement("div"), n = K( "div", { style: { display: "none" }, class: ["__viewer-token"] }, e.map((a) => K( "img", typeof a == "string" ? { src: a } : a )) ); G(n, t); const i = t.firstElementChild; document.body.appendChild(i); const u = new _(i, r), c = u.destroy.bind(u); return u.destroy = function() { return c(), G(null, t), u; }, u.show(), i.addEventListener("hidden", function() { this.viewer === u && u.destroy(); }), u; }, Jt = ({ name: e = "viewer", debug: r = !1 } = {}) => { async function t(o, l, g = !1, v = !1) { await P(), !(v && !n(o)) && (g || !o[`$${e}`] ? (c(o), o[`$${e}`] = new _(o, l), s("Viewer created")) : (o[`$${e}`].update(), s("Viewer updated"))); } function n(o) { const l = o.innerHTML.match(/<img([\w\W]+?)[\\/]?>/g), g = l ? l.join("") : void 0; return o.__viewerImageDiffCache === g ? (s("Element change detected, but image(s) has not changed"), !1) : (s("Image change detected"), o.__viewerImageDiffCache = g, !0); } function i(o, l, g, v) { a(o); const h = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver; if (!h) { s("Observer not supported"); return; } const w = new h((A) => { A.forEach((B) => { s(`Viewer mutation:${B.type}`), g(o, l, v, !0); }); }), T = { attributes: !0, childList: !0, characterData: !0, subtree: !0 }; w.observe(o, T), o.__viewerMutationObserver = w, s("Observer created"); } function u(o, l, g, v) { o.__viewerUnwatch = x(() => l.value, (h, w) => { s("Change detected by watcher: ", l.value), v(o, h, !0, !1); }, { deep: !0 }), s("Watcher created, expression: ", l.value); } function c(o) { !o[`$${e}`] || (o[`$${e}`].destroy(), delete o[`$${e}`], s("Viewer destroyed")); } function a(o) { !o.__viewerMutationObserver || (o.__viewerMutationObserver.disconnect(), delete o.__viewerMutationObserver, s("observer destroyed")); } function d(o) { !o.__viewerUnwatch || (o.__viewerUnwatch(), delete o.__viewerUnwatch, s("Watcher destroyed")); } function s(...o) { r && console.log(...o); } return { mounted(o, l, g) { s("Viewer bind"); const v = Rt(t, 50); v(o, l.value), u(o, l, g, v), l.modifiers.static || i(o, l.value, v, l.modifiers.rebuild); }, unmounted(o) { s("Viewer unbind"), a(o), d(o), c(o); } }; }, Xt = be({ name: "Viewer", props: { images: { type: Array, default: () => [] }, rebuild: { type: Boolean, default: !1 }, trigger: { type: Object, default: null }, options: { type: Object, default: () => null } }, emits: ["inited"], setup(e, { emit: r }) { let t; const n = me(); function i() { t = new _(n.value, e.options), r("inited", t); } function u() { t && t.destroy(); } function c() { u(), i(); } function a() { t ? (t.update(), r("inited", t)) : i(); } function d() { e.rebuild ? c() : a(); } const s = { deep: !0 }; return x(() => e.images, () => { P(() => { d(); }); }, s), x(() => e.trigger, () => { P(() => { d(); }); }, s), x(() => e.options, () => { P(() => { c(); }); }, s), he(() => i()), we(() => u()), { root: n, createViewer: i, rebuildViewer: c, updateViewer: a, destroyViewer: u }; } }), zt = (e, r) => { const t = e.__vccOpts || e; for (const [n, i] of r) t[n] = i; return t; }, Qt = { ref: "root" }; function Yt(e, r, t, n, i, u) { return Te(), $e("div", Qt, [ Oe(e.$slots, "default", { images: e.images, options: e.options }) ], 512); } const Zt = /* @__PURE__ */ zt(Xt, [["render", Yt]]), rn = { install(e, { name: r = "viewer", debug: t = !1, defaultOptions: n } = {}) { n && _.setDefaults(n), e.config.globalProperties[`$${r}Api`] = qt, e.component(r, Ht(Zt, { name: r })), e.directive(r, Jt({ name: r, debug: t })); }, setDefaults(e) { _.setDefaults(e); } }; export { on as Viewer, qt as api, Zt as component, rn as default, Jt as directive };