You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

2157 lines
67 KiB

/*!
* Cropper v4.0.0
* https://github.com/fengyuanchen/cropper
*
* Copyright (c) 2014-2018 Chen Fengyuan
* Released under the MIT license
*
* Date: 2018-04-01T06:27:27.267Z
*/
!(function (t, i) {
"object" == typeof exports && "undefined" != typeof module
? i(require("jquery"))
: "function" == typeof define && define.amd
? define(["jquery"], i)
: i(t.jQuery);
})(this, function (d) {
"use strict";
d = d && d.hasOwnProperty("default") ? d.default : d;
var n = "undefined" != typeof window,
r = n ? window : {},
l = "cropper",
k = "all",
T = "crop",
W = "move",
E = "zoom",
H = "e",
N = "w",
L = "s",
O = "n",
z = "ne",
Y = "nw",
X = "se",
R = "sw",
h = l + "-crop",
t = l + "-disabled",
S = l + "-hidden",
p = l + "-hide",
o = l + "-modal",
m = l + "-move",
u = "action",
g = "preview",
s = "crop",
c = "move",
f = "none",
a = "crop",
v = "cropend",
w = "cropmove",
b = "cropstart",
x = "dblclick",
y = "load",
M = r.PointerEvent ? "pointerdown" : "touchstart mousedown",
C = r.PointerEvent ? "pointermove" : "touchmove mousemove",
D = r.PointerEvent
? "pointerup pointercancel"
: "touchend touchcancel mouseup",
B = "ready",
A = "resize",
I = "wheel mousewheel DOMMouseScroll",
j = "zoom",
U = /^(?:e|w|s|n|se|sw|ne|nw|all|crop|move|zoom)$/,
P = /^data:/,
q = /^data:image\/jpeg;base64,/,
$ = /^(?:img|canvas)$/i,
Q = {
viewMode: 0,
dragMode: s,
aspectRatio: NaN,
data: null,
preview: "",
responsive: !0,
restore: !0,
checkCrossOrigin: !0,
checkOrientation: !0,
modal: !0,
guides: !0,
center: !0,
highlight: !0,
background: !0,
autoCrop: !0,
autoCropArea: 0.8,
movable: !0,
rotatable: !0,
scalable: !0,
zoomable: !0,
zoomOnTouch: !0,
zoomOnWheel: !0,
wheelZoomRatio: 0.1,
cropBoxMovable: !0,
cropBoxResizable: !0,
toggleDragModeOnDblclick: !0,
minCanvasWidth: 0,
minCanvasHeight: 0,
minCropBoxWidth: 0,
minCropBoxHeight: 0,
minContainerWidth: 200,
minContainerHeight: 100,
ready: null,
cropstart: null,
cropmove: null,
cropend: null,
crop: null,
zoom: null,
},
i =
"function" == typeof Symbol && "symbol" == typeof Symbol.iterator
? function (t) {
return typeof t;
}
: function (t) {
return t &&
"function" == typeof Symbol &&
t.constructor === Symbol &&
t !== Symbol.prototype
? "symbol"
: typeof t;
},
F = function (t, i) {
if (!(t instanceof i))
throw new TypeError("Cannot call a class as a function");
},
Z = (function () {
function a(t, i) {
for (var e = 0; e < i.length; e++) {
var a = i[e];
(a.enumerable = a.enumerable || !1),
(a.configurable = !0),
"value" in a && (a.writable = !0),
Object.defineProperty(t, a.key, a);
}
}
return function (t, i, e) {
return i && a(t.prototype, i), e && a(t, e), t;
};
})(),
bt = function (t) {
if (Array.isArray(t)) {
for (var i = 0, e = Array(t.length); i < t.length; i++) e[i] = t[i];
return e;
}
return Array.from(t);
},
e = Number.isNaN || r.isNaN;
function K(t) {
return "number" == typeof t && !e(t);
}
function V(t) {
return void 0 === t;
}
function G(t) {
return "object" === (void 0 === t ? "undefined" : i(t)) && null !== t;
}
var J = Object.prototype.hasOwnProperty;
function _(t) {
if (!G(t)) return !1;
try {
var i = t.constructor,
e = i.prototype;
return i && e && J.call(e, "isPrototypeOf");
} catch (t) {
return !1;
}
}
function tt(t) {
return "function" == typeof t;
}
function it(i, e) {
if (i && tt(e))
if (Array.isArray(i) || K(i.length)) {
var t = i.length,
a = void 0;
for (a = 0; a < t && !1 !== e.call(i, i[a], a, i); a += 1);
} else
G(i) &&
Object.keys(i).forEach(function (t) {
e.call(i, i[t], t, i);
});
return i;
}
var et =
Object.assign ||
function (e) {
for (
var t = arguments.length, i = Array(1 < t ? t - 1 : 0), a = 1;
a < t;
a++
)
i[a - 1] = arguments[a];
return (
G(e) &&
0 < i.length &&
i.forEach(function (i) {
G(i) &&
Object.keys(i).forEach(function (t) {
e[t] = i[t];
});
}),
e
);
},
at = /\.\d*(?:0|9){12}\d*$/i;
function xt(t) {
var i =
1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : 1e11;
return at.test(t) ? Math.round(t * i) / i : t;
}
var nt = /^(?:width|height|left|top|marginLeft|marginTop)$/;
function ot(t, i) {
var e = t.style;
it(i, function (t, i) {
nt.test(i) && K(t) && (t += "px"), (e[i] = t);
});
}
function ht(t, i) {
if (i)
if (K(t.length))
it(t, function (t) {
ht(t, i);
});
else if (t.classList) t.classList.add(i);
else {
var e = t.className.trim();
e ? e.indexOf(i) < 0 && (t.className = e + " " + i) : (t.className = i);
}
}
function rt(t, i) {
i &&
(K(t.length)
? it(t, function (t) {
rt(t, i);
})
: t.classList
? t.classList.remove(i)
: 0 <= t.className.indexOf(i) &&
(t.className = t.className.replace(i, "")));
}
function st(t, i, e) {
i &&
(K(t.length)
? it(t, function (t) {
st(t, i, e);
})
: e
? ht(t, i)
: rt(t, i));
}
var ct = /([a-z\d])([A-Z])/g;
function dt(t) {
return t.replace(ct, "$1-$2").toLowerCase();
}
function lt(t, i) {
return G(t[i])
? t[i]
: t.dataset
? t.dataset[i]
: t.getAttribute("data-" + dt(i));
}
function pt(t, i, e) {
G(e)
? (t[i] = e)
: t.dataset
? (t.dataset[i] = e)
: t.setAttribute("data-" + dt(i), e);
}
function mt(i, e) {
if (G(i[e]))
try {
delete i[e];
} catch (t) {
i[e] = void 0;
}
else if (i.dataset)
try {
delete i.dataset[e];
} catch (t) {
i.dataset[e] = void 0;
}
else i.removeAttribute("data-" + dt(e));
}
var ut = /\s\s*/,
gt = (function () {
var t = !1;
if (n) {
var i = !1,
e = function () {},
a = Object.defineProperty({}, "once", {
get: function () {
return (t = !0), i;
},
set: function (t) {
i = t;
},
});
r.addEventListener("test", e, a), r.removeEventListener("test", e, a);
}
return t;
})();
function ft(e, t, a) {
var n = 3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : {},
o = a;
t.trim()
.split(ut)
.forEach(function (t) {
if (!gt) {
var i = e.listeners;
i &&
i[t] &&
i[t][a] &&
((o = i[t][a]),
delete i[t][a],
0 === Object.keys(i[t]).length && delete i[t],
0 === Object.keys(i).length && delete e.listeners);
}
e.removeEventListener(t, o, n);
});
}
function vt(o, t, h) {
var r = 3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : {},
s = h;
t.trim()
.split(ut)
.forEach(function (a) {
if (r.once && !gt) {
var t = o.listeners,
n = void 0 === t ? {} : t;
(s = function () {
for (var t = arguments.length, i = Array(t), e = 0; e < t; e++)
i[e] = arguments[e];
delete n[a][h], o.removeEventListener(a, s, r), h.apply(o, i);
}),
n[a] || (n[a] = {}),
n[a][h] && o.removeEventListener(a, n[a][h], r),
(n[a][h] = s),
(o.listeners = n);
}
o.addEventListener(a, s, r);
});
}
function wt(t, i, e) {
var a = void 0;
return (
tt(Event) && tt(CustomEvent)
? (a = new CustomEvent(i, { detail: e, bubbles: !0, cancelable: !0 }))
: (a = document.createEvent("CustomEvent")).initCustomEvent(
i,
!0,
!0,
e
),
t.dispatchEvent(a)
);
}
function yt(t) {
var i = t.getBoundingClientRect();
return {
left: i.left + (window.pageXOffset - document.documentElement.clientLeft),
top: i.top + (window.pageYOffset - document.documentElement.clientTop),
};
}
var Mt = r.location,
Ct = /^(https?:)\/\/([^:/?#]+):?(\d*)/i;
function Dt(t) {
var i = t.match(Ct);
return (
i && (i[1] !== Mt.protocol || i[2] !== Mt.hostname || i[3] !== Mt.port)
);
}
function Bt(t) {
var i = "timestamp=" + new Date().getTime();
return t + (-1 === t.indexOf("?") ? "?" : "&") + i;
}
function kt(t) {
var i = t.rotate,
e = t.scaleX,
a = t.scaleY,
n = t.translateX,
o = t.translateY,
h = [];
K(n) && 0 !== n && h.push("translateX(" + n + "px)"),
K(o) && 0 !== o && h.push("translateY(" + o + "px)"),
K(i) && 0 !== i && h.push("rotate(" + i + "deg)"),
K(e) && 1 !== e && h.push("scaleX(" + e + ")"),
K(a) && 1 !== a && h.push("scaleY(" + a + ")");
var r = h.length ? h.join(" ") : "none";
return { WebkitTransform: r, msTransform: r, transform: r };
}
function Tt(t, i) {
var e = t.pageX,
a = t.pageY,
n = { endX: e, endY: a };
return i ? n : et({ startX: e, startY: a }, n);
}
var Wt = Number.isFinite || r.isFinite;
function Et(t) {
var i = t.aspectRatio,
e = t.height,
a = t.width,
n =
1 < arguments.length && void 0 !== arguments[1]
? arguments[1]
: "contain",
o = function (t) {
return Wt(t) && 0 < t;
};
if (o(a) && o(e)) {
var h = e * i;
("contain" === n && a < h) || ("cover" === n && h < a)
? (e = a / i)
: (a = e * i);
} else o(a) ? (e = a / i) : o(e) && (a = e * i);
return { width: a, height: e };
}
var Ht = String.fromCharCode;
var Nt = /^data:.*,/;
function Lt(t) {
var i = new DataView(t),
e = void 0,
a = void 0,
n = void 0,
o = void 0;
if (255 === i.getUint8(0) && 216 === i.getUint8(1))
for (var h = i.byteLength, r = 2; r < h; ) {
if (255 === i.getUint8(r) && 225 === i.getUint8(r + 1)) {
n = r;
break;
}
r += 1;
}
if (n) {
var s = n + 10;
if (
"Exif" ===
(function (t, i, e) {
var a = "",
n = void 0;
for (e += i, n = i; n < e; n += 1) a += Ht(t.getUint8(n));
return a;
})(i, n + 4, 4)
) {
var c = i.getUint16(s);
if (
((a = 18761 === c) || 19789 === c) &&
42 === i.getUint16(s + 2, a)
) {
var d = i.getUint32(s + 4, a);
8 <= d && (o = s + d);
}
}
}
if (o) {
var l = i.getUint16(o, a),
p = void 0,
m = void 0;
for (m = 0; m < l; m += 1)
if (((p = o + 12 * m + 2), 274 === i.getUint16(p, a))) {
(p += 8), (e = i.getUint16(p, a)), i.setUint16(p, 1, a);
break;
}
}
return e;
}
var Ot = {
render: function () {
this.initContainer(),
this.initCanvas(),
this.initCropBox(),
this.renderCanvas(),
this.cropped && this.renderCropBox();
},
initContainer: function () {
var t = this.element,
i = this.options,
e = this.container,
a = this.cropper;
ht(a, S), rt(t, S);
var n = {
width: Math.max(e.offsetWidth, Number(i.minContainerWidth) || 200),
height: Math.max(e.offsetHeight, Number(i.minContainerHeight) || 100),
};
ot(a, { width: (this.containerData = n).width, height: n.height }),
ht(t, S),
rt(a, S);
},
initCanvas: function () {
var t = this.containerData,
i = this.imageData,
e = this.options.viewMode,
a = Math.abs(i.rotate) % 180 == 90,
n = a ? i.naturalHeight : i.naturalWidth,
o = a ? i.naturalWidth : i.naturalHeight,
h = n / o,
r = t.width,
s = t.height;
t.height * h > t.width
? 3 === e
? (r = t.height * h)
: (s = t.width / h)
: 3 === e
? (s = t.width / h)
: (r = t.height * h);
var c = {
aspectRatio: h,
naturalWidth: n,
naturalHeight: o,
width: r,
height: s,
};
(c.left = (t.width - r) / 2),
(c.top = (t.height - s) / 2),
(c.oldLeft = c.left),
(c.oldTop = c.top),
(this.canvasData = c),
(this.limited = 1 === e || 2 === e),
this.limitCanvas(!0, !0),
(this.initialImageData = et({}, i)),
(this.initialCanvasData = et({}, c));
},
limitCanvas: function (t, i) {
var e = this.options,
a = this.containerData,
n = this.canvasData,
o = this.cropBoxData,
h = e.viewMode,
r = n.aspectRatio,
s = this.cropped && o;
if (t) {
var c = Number(e.minCanvasWidth) || 0,
d = Number(e.minCanvasHeight) || 0;
1 < h
? ((c = Math.max(c, a.width)),
(d = Math.max(d, a.height)),
3 === h && (c < d * r ? (c = d * r) : (d = c / r)))
: 0 < h &&
(c
? (c = Math.max(c, s ? o.width : 0))
: d
? (d = Math.max(d, s ? o.height : 0))
: s &&
((c = o.width) < (d = o.height) * r
? (c = d * r)
: (d = c / r)));
var l = Et({ aspectRatio: r, width: c, height: d });
(c = l.width),
(d = l.height),
(n.minWidth = c),
(n.minHeight = d),
(n.maxWidth = 1 / 0),
(n.maxHeight = 1 / 0);
}
if (i)
if (h) {
var p = a.width - n.width,
m = a.height - n.height;
(n.minLeft = Math.min(0, p)),
(n.minTop = Math.min(0, m)),
(n.maxLeft = Math.max(0, p)),
(n.maxTop = Math.max(0, m)),
s &&
this.limited &&
((n.minLeft = Math.min(o.left, o.left + (o.width - n.width))),
(n.minTop = Math.min(o.top, o.top + (o.height - n.height))),
(n.maxLeft = o.left),
(n.maxTop = o.top),
2 === h &&
(n.width >= a.width &&
((n.minLeft = Math.min(0, p)),
(n.maxLeft = Math.max(0, p))),
n.height >= a.height &&
((n.minTop = Math.min(0, m)),
(n.maxTop = Math.max(0, m)))));
} else
(n.minLeft = -n.width),
(n.minTop = -n.height),
(n.maxLeft = a.width),
(n.maxTop = a.height);
},
renderCanvas: function (t, i) {
var e = this.canvasData,
a = this.imageData;
if (i) {
var n = (function (t) {
var i = t.width,
e = t.height,
a = t.degree;
if (90 == (a = Math.abs(a) % 180)) return { width: e, height: i };
var n = ((a % 90) * Math.PI) / 180,
o = Math.sin(n),
h = Math.cos(n),
r = i * h + e * o,
s = i * o + e * h;
return 90 < a ? { width: s, height: r } : { width: r, height: s };
})({
width: a.naturalWidth * Math.abs(a.scaleX || 1),
height: a.naturalHeight * Math.abs(a.scaleY || 1),
degree: a.rotate || 0,
}),
o = n.width,
h = n.height,
r = e.width * (o / e.naturalWidth),
s = e.height * (h / e.naturalHeight);
(e.left -= (r - e.width) / 2),
(e.top -= (s - e.height) / 2),
(e.width = r),
(e.height = s),
(e.aspectRatio = o / h),
(e.naturalWidth = o),
(e.naturalHeight = h),
this.limitCanvas(!0, !1);
}
(e.width > e.maxWidth || e.width < e.minWidth) && (e.left = e.oldLeft),
(e.height > e.maxHeight || e.height < e.minHeight) &&
(e.top = e.oldTop),
(e.width = Math.min(Math.max(e.width, e.minWidth), e.maxWidth)),
(e.height = Math.min(Math.max(e.height, e.minHeight), e.maxHeight)),
this.limitCanvas(!1, !0),
(e.left = Math.min(Math.max(e.left, e.minLeft), e.maxLeft)),
(e.top = Math.min(Math.max(e.top, e.minTop), e.maxTop)),
(e.oldLeft = e.left),
(e.oldTop = e.top),
ot(
this.canvas,
et(
{ width: e.width, height: e.height },
kt({ translateX: e.left, translateY: e.top })
)
),
this.renderImage(t),
this.cropped && this.limited && this.limitCropBox(!0, !0);
},
renderImage: function (t) {
var i = this.canvasData,
e = this.imageData,
a = e.naturalWidth * (i.width / i.naturalWidth),
n = e.naturalHeight * (i.height / i.naturalHeight);
et(e, {
width: a,
height: n,
left: (i.width - a) / 2,
top: (i.height - n) / 2,
}),
ot(
this.image,
et(
{ width: e.width, height: e.height },
kt(et({ translateX: e.left, translateY: e.top }, e))
)
),
t && this.output();
},
initCropBox: function () {
var t = this.options,
i = this.canvasData,
e = t.aspectRatio,
a = Number(t.autoCropArea) || 0.8,
n = { width: i.width, height: i.height };
e &&
(i.height * e > i.width
? (n.height = n.width / e)
: (n.width = n.height * e)),
(this.cropBoxData = n),
this.limitCropBox(!0, !0),
(n.width = Math.min(Math.max(n.width, n.minWidth), n.maxWidth)),
(n.height = Math.min(Math.max(n.height, n.minHeight), n.maxHeight)),
(n.width = Math.max(n.minWidth, n.width * a)),
(n.height = Math.max(n.minHeight, n.height * a)),
(n.left = i.left + (i.width - n.width) / 2),
(n.top = i.top + (i.height - n.height) / 2),
(n.oldLeft = n.left),
(n.oldTop = n.top),
(this.initialCropBoxData = et({}, n));
},
limitCropBox: function (t, i) {
var e = this.options,
a = this.containerData,
n = this.canvasData,
o = this.cropBoxData,
h = this.limited,
r = e.aspectRatio;
if (t) {
var s = Number(e.minCropBoxWidth) || 0,
c = Number(e.minCropBoxHeight) || 0,
d = Math.min(a.width, h ? n.width : a.width),
l = Math.min(a.height, h ? n.height : a.height);
(s = Math.min(s, a.width)),
(c = Math.min(c, a.height)),
r &&
(s && c
? s < c * r
? (c = s / r)
: (s = c * r)
: s
? (c = s / r)
: c && (s = c * r),
d < l * r ? (l = d / r) : (d = l * r)),
(o.minWidth = Math.min(s, d)),
(o.minHeight = Math.min(c, l)),
(o.maxWidth = d),
(o.maxHeight = l);
}
i &&
(h
? ((o.minLeft = Math.max(0, n.left)),
(o.minTop = Math.max(0, n.top)),
(o.maxLeft = Math.min(a.width, n.left + n.width) - o.width),
(o.maxTop = Math.min(a.height, n.top + n.height) - o.height))
: ((o.minLeft = 0),
(o.minTop = 0),
(o.maxLeft = a.width - o.width),
(o.maxTop = a.height - o.height)));
},
renderCropBox: function () {
var t = this.options,
i = this.containerData,
e = this.cropBoxData;
(e.width > e.maxWidth || e.width < e.minWidth) && (e.left = e.oldLeft),
(e.height > e.maxHeight || e.height < e.minHeight) &&
(e.top = e.oldTop),
(e.width = Math.min(Math.max(e.width, e.minWidth), e.maxWidth)),
(e.height = Math.min(Math.max(e.height, e.minHeight), e.maxHeight)),
this.limitCropBox(!1, !0),
(e.left = Math.min(Math.max(e.left, e.minLeft), e.maxLeft)),
(e.top = Math.min(Math.max(e.top, e.minTop), e.maxTop)),
(e.oldLeft = e.left),
(e.oldTop = e.top),
t.movable &&
t.cropBoxMovable &&
pt(
this.face,
u,
e.width >= i.width && e.height >= i.height ? W : k
),
ot(
this.cropBox,
et(
{ width: e.width, height: e.height },
kt({ translateX: e.left, translateY: e.top })
)
),
this.cropped && this.limited && this.limitCanvas(!0, !0),
this.disabled || this.output();
},
output: function () {
this.preview(), wt(this.element, a, this.getData());
},
},
zt = {
initPreview: function () {
var e = this.crossOrigin,
t = this.options.preview,
a = e ? this.crossOriginUrl : this.url,
i = document.createElement("img");
if (
(e && (i.crossOrigin = e),
(i.src = a),
this.viewBox.appendChild(i),
(this.viewBoxImage = i),
t)
) {
var n = t;
"string" == typeof t
? (n = this.element.ownerDocument.querySelectorAll(t))
: t.querySelector && (n = [t]),
it((this.previews = n), function (t) {
var i = document.createElement("img");
pt(t, g, {
width: t.offsetWidth,
height: t.offsetHeight,
html: t.innerHTML,
}),
e && (i.crossOrigin = e),
(i.src = a),
(i.style.cssText =
'display:block;width:100%;height:auto;min-width:0!important;min-height:0!important;max-width:none!important;max-height:none!important;image-orientation:0deg!important;"'),
(t.innerHTML = ""),
t.appendChild(i);
});
}
},
resetPreview: function () {
it(this.previews, function (t) {
var i = lt(t, g);
ot(t, { width: i.width, height: i.height }),
(t.innerHTML = i.html),
mt(t, g);
});
},
preview: function () {
var r = this.imageData,
t = this.canvasData,
i = this.cropBoxData,
s = i.width,
c = i.height,
d = r.width,
l = r.height,
p = i.left - t.left - r.left,
m = i.top - t.top - r.top;
this.cropped &&
!this.disabled &&
(ot(
this.viewBoxImage,
et(
{ width: d, height: l },
kt(et({ translateX: -p, translateY: -m }, r))
)
),
it(this.previews, function (t) {
var i = lt(t, g),
e = i.width,
a = i.height,
n = e,
o = a,
h = 1;
s && (o = c * (h = e / s)),
c && a < o && ((n = s * (h = a / c)), (o = a)),
ot(t, { width: n, height: o }),
ot(
t.getElementsByTagName("img")[0],
et(
{ width: d * h, height: l * h },
kt(et({ translateX: -p * h, translateY: -m * h }, r))
)
);
}));
},
},
Yt = {
bind: function () {
var t = this.element,
i = this.options,
e = this.cropper;
tt(i.cropstart) && vt(t, b, i.cropstart),
tt(i.cropmove) && vt(t, w, i.cropmove),
tt(i.cropend) && vt(t, v, i.cropend),
tt(i.crop) && vt(t, a, i.crop),
tt(i.zoom) && vt(t, j, i.zoom),
vt(e, M, (this.onCropStart = this.cropStart.bind(this))),
i.zoomable &&
i.zoomOnWheel &&
vt(e, I, (this.onWheel = this.wheel.bind(this))),
i.toggleDragModeOnDblclick &&
vt(e, x, (this.onDblclick = this.dblclick.bind(this))),
vt(t.ownerDocument, C, (this.onCropMove = this.cropMove.bind(this))),
vt(t.ownerDocument, D, (this.onCropEnd = this.cropEnd.bind(this))),
i.responsive &&
vt(window, A, (this.onResize = this.resize.bind(this)));
},
unbind: function () {
var t = this.element,
i = this.options,
e = this.cropper;
tt(i.cropstart) && ft(t, b, i.cropstart),
tt(i.cropmove) && ft(t, w, i.cropmove),
tt(i.cropend) && ft(t, v, i.cropend),
tt(i.crop) && ft(t, a, i.crop),
tt(i.zoom) && ft(t, j, i.zoom),
ft(e, M, this.onCropStart),
i.zoomable && i.zoomOnWheel && ft(e, I, this.onWheel),
i.toggleDragModeOnDblclick && ft(e, x, this.onDblclick),
ft(t.ownerDocument, C, this.onCropMove),
ft(t.ownerDocument, D, this.onCropEnd),
i.responsive && ft(window, A, this.onResize);
},
},
Xt = {
resize: function () {
var t = this.options,
i = this.container,
e = this.containerData,
a = Number(t.minContainerWidth) || 200,
n = Number(t.minContainerHeight) || 100;
if (!(this.disabled || e.width <= a || e.height <= n)) {
var o = i.offsetWidth / e.width;
if (1 !== o || i.offsetHeight !== e.height) {
var h = void 0,
r = void 0;
t.restore &&
((h = this.getCanvasData()), (r = this.getCropBoxData())),
this.render(),
t.restore &&
(this.setCanvasData(
it(h, function (t, i) {
h[i] = t * o;
})
),
this.setCropBoxData(
it(r, function (t, i) {
r[i] = t * o;
})
));
}
}
},
dblclick: function () {
var t, i;
this.disabled ||
this.options.dragMode === f ||
this.setDragMode(
((t = this.dragBox),
(i = h),
(
t.classList
? t.classList.contains(i)
: -1 < t.className.indexOf(i)
)
? c
: s)
);
},
wheel: function (t) {
var i = this,
e = Number(this.options.wheelZoomRatio) || 0.1,
a = 1;
this.disabled ||
(t.preventDefault(),
this.wheeling ||
((this.wheeling = !0),
setTimeout(function () {
i.wheeling = !1;
}, 50),
t.deltaY
? (a = 0 < t.deltaY ? 1 : -1)
: t.wheelDelta
? (a = -t.wheelDelta / 120)
: t.detail && (a = 0 < t.detail ? 1 : -1),
this.zoom(-a * e, t)));
},
cropStart: function (t) {
if (!this.disabled) {
var i = this.options,
e = this.pointers,
a = void 0;
t.changedTouches
? it(t.changedTouches, function (t) {
e[t.identifier] = Tt(t);
})
: (e[t.pointerId || 0] = Tt(t)),
(a =
1 < Object.keys(e).length && i.zoomable && i.zoomOnTouch
? E
: lt(t.target, u)),
U.test(a) &&
!1 !== wt(this.element, b, { originalEvent: t, action: a }) &&
(t.preventDefault(),
(this.action = a),
(this.cropping = !1),
a === T && ((this.cropping = !0), ht(this.dragBox, o)));
}
},
cropMove: function (t) {
var i = this.action;
if (!this.disabled && i) {
var e = this.pointers;
t.preventDefault(),
!1 !== wt(this.element, w, { originalEvent: t, action: i }) &&
(t.changedTouches
? it(t.changedTouches, function (t) {
et(e[t.identifier], Tt(t, !0));
})
: et(e[t.pointerId || 0], Tt(t, !0)),
this.change(t));
}
},
cropEnd: function (t) {
if (!this.disabled) {
var i = this.action,
e = this.pointers;
t.changedTouches
? it(t.changedTouches, function (t) {
delete e[t.identifier];
})
: delete e[t.pointerId || 0],
i &&
(t.preventDefault(),
Object.keys(e).length || (this.action = ""),
this.cropping &&
((this.cropping = !1),
st(this.dragBox, o, this.cropped && this.options.modal)),
wt(this.element, v, { originalEvent: t, action: i }));
}
},
},
Rt = {
change: function (t) {
var i = this.options,
e = this.canvasData,
a = this.containerData,
n = this.cropBoxData,
o = this.pointers,
h = this.action,
r = i.aspectRatio,
s = n.left,
c = n.top,
d = n.width,
l = n.height,
p = s + d,
m = c + l,
u = 0,
g = 0,
f = a.width,
v = a.height,
w = !0,
b = void 0;
!r && t.shiftKey && (r = d && l ? d / l : 1),
this.limited &&
((u = n.minLeft),
(g = n.minTop),
(f = u + Math.min(a.width, e.width, e.left + e.width)),
(v = g + Math.min(a.height, e.height, e.top + e.height)));
var x,
y,
M,
C = o[Object.keys(o)[0]],
D = { x: C.endX - C.startX, y: C.endY - C.startY },
B = function (t) {
switch (t) {
case H:
p + D.x > f && (D.x = f - p);
break;
case N:
s + D.x < u && (D.x = u - s);
break;
case O:
c + D.y < g && (D.y = g - c);
break;
case L:
m + D.y > v && (D.y = v - m);
}
};
switch (h) {
case k:
(s += D.x), (c += D.y);
break;
case H:
if (0 <= D.x && (f <= p || (r && (c <= g || v <= m)))) {
w = !1;
break;
}
B(H),
(d += D.x),
r && ((l = d / r), (c -= D.x / r / 2)),
d < 0 && ((h = N), (d = 0));
break;
case O:
if (D.y <= 0 && (c <= g || (r && (s <= u || f <= p)))) {
w = !1;
break;
}
B(O),
(l -= D.y),
(c += D.y),
r && ((d = l * r), (s += (D.y * r) / 2)),
l < 0 && ((h = L), (l = 0));
break;
case N:
if (D.x <= 0 && (s <= u || (r && (c <= g || v <= m)))) {
w = !1;
break;
}
B(N),
(d -= D.x),
(s += D.x),
r && ((l = d / r), (c += D.x / r / 2)),
d < 0 && ((h = H), (d = 0));
break;
case L:
if (0 <= D.y && (v <= m || (r && (s <= u || f <= p)))) {
w = !1;
break;
}
B(L),
(l += D.y),
r && ((d = l * r), (s -= (D.y * r) / 2)),
l < 0 && ((h = O), (l = 0));
break;
case z:
if (r) {
if (D.y <= 0 && (c <= g || f <= p)) {
w = !1;
break;
}
B(O), (l -= D.y), (c += D.y), (d = l * r);
} else
B(O),
B(H),
0 <= D.x
? p < f
? (d += D.x)
: D.y <= 0 && c <= g && (w = !1)
: (d += D.x),
D.y <= 0
? g < c && ((l -= D.y), (c += D.y))
: ((l -= D.y), (c += D.y));
d < 0 && l < 0
? ((h = R), (d = l = 0))
: d < 0
? ((h = Y), (d = 0))
: l < 0 && ((h = X), (l = 0));
break;
case Y:
if (r) {
if (D.y <= 0 && (c <= g || s <= u)) {
w = !1;
break;
}
B(O), (l -= D.y), (c += D.y), (d = l * r), (s += D.y * r);
} else
B(O),
B(N),
D.x <= 0
? u < s
? ((d -= D.x), (s += D.x))
: D.y <= 0 && c <= g && (w = !1)
: ((d -= D.x), (s += D.x)),
D.y <= 0
? g < c && ((l -= D.y), (c += D.y))
: ((l -= D.y), (c += D.y));
d < 0 && l < 0
? ((h = X), (d = l = 0))
: d < 0
? ((h = z), (d = 0))
: l < 0 && ((h = R), (l = 0));
break;
case R:
if (r) {
if (D.x <= 0 && (s <= u || v <= m)) {
w = !1;
break;
}
B(N), (d -= D.x), (s += D.x), (l = d / r);
} else
B(L),
B(N),
D.x <= 0
? u < s
? ((d -= D.x), (s += D.x))
: 0 <= D.y && v <= m && (w = !1)
: ((d -= D.x), (s += D.x)),
0 <= D.y ? m < v && (l += D.y) : (l += D.y);
d < 0 && l < 0
? ((h = z), (d = l = 0))
: d < 0
? ((h = X), (d = 0))
: l < 0 && ((h = Y), (l = 0));
break;
case X:
if (r) {
if (0 <= D.x && (f <= p || v <= m)) {
w = !1;
break;
}
B(H), (l = (d += D.x) / r);
} else
B(L),
B(H),
0 <= D.x
? p < f
? (d += D.x)
: 0 <= D.y && v <= m && (w = !1)
: (d += D.x),
0 <= D.y ? m < v && (l += D.y) : (l += D.y);
d < 0 && l < 0
? ((h = Y), (d = l = 0))
: d < 0
? ((h = R), (d = 0))
: l < 0 && ((h = z), (l = 0));
break;
case W:
this.move(D.x, D.y), (w = !1);
break;
case E:
this.zoom(
((y = et({}, (x = o))),
(M = []),
it(x, function (r, t) {
delete y[t],
it(y, function (t) {
var i = Math.abs(r.startX - t.startX),
e = Math.abs(r.startY - t.startY),
a = Math.abs(r.endX - t.endX),
n = Math.abs(r.endY - t.endY),
o = Math.sqrt(i * i + e * e),
h = (Math.sqrt(a * a + n * n) - o) / o;
M.push(h);
});
}),
M.sort(function (t, i) {
return Math.abs(t) < Math.abs(i);
}),
M[0]),
t
),
(w = !1);
break;
case T:
if (!D.x || !D.y) {
w = !1;
break;
}
(b = yt(this.cropper)),
(s = C.startX - b.left),
(c = C.startY - b.top),
(d = n.minWidth),
(l = n.minHeight),
0 < D.x
? (h = 0 < D.y ? X : z)
: D.x < 0 && ((s -= d), (h = 0 < D.y ? R : Y)),
D.y < 0 && (c -= l),
this.cropped ||
(rt(this.cropBox, S),
(this.cropped = !0),
this.limited && this.limitCropBox(!0, !0));
}
w &&
((n.width = d),
(n.height = l),
(n.left = s),
(n.top = c),
(this.action = h),
this.renderCropBox()),
it(o, function (t) {
(t.startX = t.endX), (t.startY = t.endY);
});
},
},
St = {
crop: function () {
return (
!this.ready ||
this.cropped ||
this.disabled ||
((this.cropped = !0),
this.limitCropBox(!0, !0),
this.options.modal && ht(this.dragBox, o),
rt(this.cropBox, S),
this.setCropBoxData(this.initialCropBoxData)),
this
);
},
reset: function () {
return (
this.ready &&
!this.disabled &&
((this.imageData = et({}, this.initialImageData)),
(this.canvasData = et({}, this.initialCanvasData)),
(this.cropBoxData = et({}, this.initialCropBoxData)),
this.renderCanvas(),
this.cropped && this.renderCropBox()),
this
);
},
clear: function () {
return (
this.cropped &&
!this.disabled &&
(et(this.cropBoxData, { left: 0, top: 0, width: 0, height: 0 }),
(this.cropped = !1),
this.renderCropBox(),
this.limitCanvas(!0, !0),
this.renderCanvas(),
rt(this.dragBox, o),
ht(this.cropBox, S)),
this
);
},
replace: function (i) {
var t = 1 < arguments.length && void 0 !== arguments[1] && arguments[1];
return (
!this.disabled &&
i &&
(this.isImg && (this.element.src = i),
t
? ((this.url = i),
(this.image.src = i),
this.ready &&
((this.viewBoxImage.src = i),
it(this.previews, function (t) {
t.getElementsByTagName("img")[0].src = i;
})))
: (this.isImg && (this.replaced = !0),
(this.options.data = null),
this.uncreate(),
this.load(i))),
this
);
},
enable: function () {
return (
this.ready &&
this.disabled &&
((this.disabled = !1), rt(this.cropper, t)),
this
);
},
disable: function () {
return (
this.ready &&
!this.disabled &&
((this.disabled = !0), ht(this.cropper, t)),
this
);
},
destroy: function () {
var t = this.element;
return (
lt(t, l) &&
(this.isImg && this.replaced && (t.src = this.originalUrl),
this.uncreate(),
mt(t, l)),
this
);
},
move: function (t) {
var i =
1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : t,
e = this.canvasData,
a = e.left,
n = e.top;
return this.moveTo(V(t) ? t : a + Number(t), V(i) ? i : n + Number(i));
},
moveTo: function (t) {
var i =
1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : t,
e = this.canvasData,
a = !1;
return (
(t = Number(t)),
(i = Number(i)),
this.ready &&
!this.disabled &&
this.options.movable &&
(K(t) && ((e.left = t), (a = !0)),
K(i) && ((e.top = i), (a = !0)),
a && this.renderCanvas(!0)),
this
);
},
zoom: function (t, i) {
var e = this.canvasData;
return (
(t = (t = Number(t)) < 0 ? 1 / (1 - t) : 1 + t),
this.zoomTo((e.width * t) / e.naturalWidth, null, i)
);
},
zoomTo: function (t, i, e) {
var a,
n,
o,
h = this.options,
r = this.canvasData,
s = r.width,
c = r.height,
d = r.naturalWidth,
l = r.naturalHeight;
if (
0 <= (t = Number(t)) &&
this.ready &&
!this.disabled &&
h.zoomable
) {
var p = d * t,
m = l * t;
if (
!1 ===
wt(this.element, j, {
originalEvent: e,
oldRatio: s / d,
ratio: p / d,
})
)
return this;
if (e) {
var u = this.pointers,
g = yt(this.cropper),
f =
u && Object.keys(u).length
? ((o = n = a = 0),
it(u, function (t) {
var i = t.startX,
e = t.startY;
(a += i), (n += e), (o += 1);
}),
{ pageX: (a /= o), pageY: (n /= o) })
: { pageX: e.pageX, pageY: e.pageY };
(r.left -= (p - s) * ((f.pageX - g.left - r.left) / s)),
(r.top -= (m - c) * ((f.pageY - g.top - r.top) / c));
} else
_(i) && K(i.x) && K(i.y)
? ((r.left -= (p - s) * ((i.x - r.left) / s)),
(r.top -= (m - c) * ((i.y - r.top) / c)))
: ((r.left -= (p - s) / 2), (r.top -= (m - c) / 2));
(r.width = p), (r.height = m), this.renderCanvas(!0);
}
return this;
},
rotate: function (t) {
return this.rotateTo((this.imageData.rotate || 0) + Number(t));
},
rotateTo: function (t) {
return (
K((t = Number(t))) &&
this.ready &&
!this.disabled &&
this.options.rotatable &&
((this.imageData.rotate = t % 360), this.renderCanvas(!0, !0)),
this
);
},
scaleX: function (t) {
var i = this.imageData.scaleY;
return this.scale(t, K(i) ? i : 1);
},
scaleY: function (t) {
var i = this.imageData.scaleX;
return this.scale(K(i) ? i : 1, t);
},
scale: function (t) {
var i =
1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : t,
e = this.imageData,
a = !1;
return (
(t = Number(t)),
(i = Number(i)),
this.ready &&
!this.disabled &&
this.options.scalable &&
(K(t) && ((e.scaleX = t), (a = !0)),
K(i) && ((e.scaleY = i), (a = !0)),
a && this.renderCanvas(!0, !0)),
this
);
},
getData: function () {
var e = 0 < arguments.length && void 0 !== arguments[0] && arguments[0],
t = this.options,
i = this.imageData,
a = this.canvasData,
n = this.cropBoxData,
o = void 0;
if (this.ready && this.cropped) {
o = {
x: n.left - a.left,
y: n.top - a.top,
width: n.width,
height: n.height,
};
var h = i.width / i.naturalWidth;
it(o, function (t, i) {
(t /= h), (o[i] = e ? Math.round(t) : t);
});
} else o = { x: 0, y: 0, width: 0, height: 0 };
return (
t.rotatable && (o.rotate = i.rotate || 0),
t.scalable &&
((o.scaleX = i.scaleX || 1), (o.scaleY = i.scaleY || 1)),
o
);
},
setData: function (t) {
var i = this.options,
e = this.imageData,
a = this.canvasData,
n = {};
if (this.ready && !this.disabled && _(t)) {
var o = !1;
i.rotatable &&
K(t.rotate) &&
t.rotate !== e.rotate &&
((e.rotate = t.rotate), (o = !0)),
i.scalable &&
(K(t.scaleX) &&
t.scaleX !== e.scaleX &&
((e.scaleX = t.scaleX), (o = !0)),
K(t.scaleY) &&
t.scaleY !== e.scaleY &&
((e.scaleY = t.scaleY), (o = !0))),
o && this.renderCanvas(!0, !0);
var h = e.width / e.naturalWidth;
K(t.x) && (n.left = t.x * h + a.left),
K(t.y) && (n.top = t.y * h + a.top),
K(t.width) && (n.width = t.width * h),
K(t.height) && (n.height = t.height * h),
this.setCropBoxData(n);
}
return this;
},
getContainerData: function () {
return this.ready ? et({}, this.containerData) : {};
},
getImageData: function () {
return this.sized ? et({}, this.imageData) : {};
},
getCanvasData: function () {
var i = this.canvasData,
e = {};
return (
this.ready &&
it(
[
"left",
"top",
"width",
"height",
"naturalWidth",
"naturalHeight",
],
function (t) {
e[t] = i[t];
}
),
e
);
},
setCanvasData: function (t) {
var i = this.canvasData,
e = i.aspectRatio;
return (
this.ready &&
!this.disabled &&
_(t) &&
(K(t.left) && (i.left = t.left),
K(t.top) && (i.top = t.top),
K(t.width)
? ((i.width = t.width), (i.height = t.width / e))
: K(t.height) &&
((i.height = t.height), (i.width = t.height * e)),
this.renderCanvas(!0)),
this
);
},
getCropBoxData: function () {
var t = this.cropBoxData,
i = void 0;
return (
this.ready &&
this.cropped &&
(i = {
left: t.left,
top: t.top,
width: t.width,
height: t.height,
}),
i || {}
);
},
setCropBoxData: function (t) {
var i = this.cropBoxData,
e = this.options.aspectRatio,
a = void 0,
n = void 0;
return (
this.ready &&
this.cropped &&
!this.disabled &&
_(t) &&
(K(t.left) && (i.left = t.left),
K(t.top) && (i.top = t.top),
K(t.width) &&
t.width !== i.width &&
((a = !0), (i.width = t.width)),
K(t.height) &&
t.height !== i.height &&
((n = !0), (i.height = t.height)),
e && (a ? (i.height = i.width / e) : n && (i.width = i.height * e)),
this.renderCropBox()),
this
);
},
getCroppedCanvas: function () {
var t =
0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : {};
if (!this.ready || !window.HTMLCanvasElement) return null;
var i,
e,
a,
n,
o,
h,
r,
s,
c,
d,
l,
p,
m,
u,
g,
f,
v,
w,
b,
x,
y,
M,
C,
D,
B,
k,
T,
W,
E,
H,
N,
L,
O,
z,
Y,
X,
R,
S,
A,
I,
j,
U = this.canvasData,
P =
((i = this.image),
(e = this.imageData),
(a = U),
(n = t),
(o = e.aspectRatio),
(h = e.naturalWidth),
(r = e.naturalHeight),
(s = e.rotate),
(c = void 0 === s ? 0 : s),
(d = e.scaleX),
(l = void 0 === d ? 1 : d),
(p = e.scaleY),
(m = void 0 === p ? 1 : p),
(u = a.aspectRatio),
(g = a.naturalWidth),
(f = a.naturalHeight),
(v = n.fillColor),
(w = void 0 === v ? "transparent" : v),
(b = n.imageSmoothingEnabled),
(x = void 0 === b || b),
(y = n.imageSmoothingQuality),
(M = void 0 === y ? "low" : y),
(C = n.maxWidth),
(D = void 0 === C ? 1 / 0 : C),
(B = n.maxHeight),
(k = void 0 === B ? 1 / 0 : B),
(T = n.minWidth),
(W = void 0 === T ? 0 : T),
(E = n.minHeight),
(H = void 0 === E ? 0 : E),
(N = document.createElement("canvas")),
(L = N.getContext("2d")),
(O = Et({ aspectRatio: u, width: D, height: k })),
(z = Et({ aspectRatio: u, width: W, height: H }, "cover")),
(Y = Math.min(O.width, Math.max(z.width, g))),
(X = Math.min(O.height, Math.max(z.height, f))),
(R = Et({ aspectRatio: o, width: D, height: k })),
(S = Et({ aspectRatio: o, width: W, height: H }, "cover")),
(A = Math.min(R.width, Math.max(S.width, h))),
(I = Math.min(R.height, Math.max(S.height, r))),
(j = [-A / 2, -I / 2, A, I]),
(N.width = xt(Y)),
(N.height = xt(X)),
(L.fillStyle = w),
L.fillRect(0, 0, Y, X),
L.save(),
L.translate(Y / 2, X / 2),
L.rotate((c * Math.PI) / 180),
L.scale(l, m),
(L.imageSmoothingEnabled = x),
(L.imageSmoothingQuality = M),
L.drawImage.apply(
L,
[i].concat(
bt(
j.map(function (t) {
return Math.floor(xt(t));
})
)
)
),
L.restore(),
N);
if (!this.cropped) return P;
var q = this.getData(),
$ = q.x,
Q = q.y,
F = q.width,
Z = q.height,
K = P.width / Math.floor(U.naturalWidth);
1 !== K && (($ *= K), (Q *= K), (F *= K), (Z *= K));
var V = F / Z,
G = Et({
aspectRatio: V,
width: t.maxWidth || 1 / 0,
height: t.maxHeight || 1 / 0,
}),
J = Et(
{
aspectRatio: V,
width: t.minWidth || 0,
height: t.minHeight || 0,
},
"cover"
),
_ = Et({
aspectRatio: V,
width: t.width || (1 !== K ? P.width : F),
height: t.height || (1 !== K ? P.height : Z),
}),
tt = _.width,
it = _.height;
(tt = Math.min(G.width, Math.max(J.width, tt))),
(it = Math.min(G.height, Math.max(J.height, it)));
var et = document.createElement("canvas"),
at = et.getContext("2d");
(et.width = xt(tt)),
(et.height = xt(it)),
(at.fillStyle = t.fillColor || "transparent"),
at.fillRect(0, 0, tt, it);
var nt = t.imageSmoothingEnabled,
ot = void 0 === nt || nt,
ht = t.imageSmoothingQuality;
(at.imageSmoothingEnabled = ot), ht && (at.imageSmoothingQuality = ht);
var rt = P.width,
st = P.height,
ct = $,
dt = Q,
lt = void 0,
pt = void 0,
mt = void 0,
ut = void 0,
gt = void 0,
ft = void 0;
ct <= -F || rt < ct
? (gt = mt = lt = ct = 0)
: ct <= 0
? ((mt = -ct), (ct = 0), (gt = lt = Math.min(rt, F + ct)))
: ct <= rt && ((mt = 0), (gt = lt = Math.min(F, rt - ct))),
lt <= 0 || dt <= -Z || st < dt
? (ft = ut = pt = dt = 0)
: dt <= 0
? ((ut = -dt), (dt = 0), (ft = pt = Math.min(st, Z + dt)))
: dt <= st && ((ut = 0), (ft = pt = Math.min(Z, st - dt)));
var vt = [ct, dt, lt, pt];
if (0 < gt && 0 < ft) {
var wt = tt / F;
vt.push(mt * wt, ut * wt, gt * wt, ft * wt);
}
return (
at.drawImage.apply(
at,
[P].concat(
bt(
vt.map(function (t) {
return Math.floor(xt(t));
})
)
)
),
et
);
},
setAspectRatio: function (t) {
var i = this.options;
return (
this.disabled ||
V(t) ||
((i.aspectRatio = Math.max(0, t) || NaN),
this.ready &&
(this.initCropBox(), this.cropped && this.renderCropBox())),
this
);
},
setDragMode: function (t) {
var i = this.options,
e = this.dragBox,
a = this.face;
if (this.ready && !this.disabled) {
var n = t === s,
o = i.movable && t === c;
(t = n || o ? t : f),
(i.dragMode = t),
pt(e, u, t),
st(e, h, n),
st(e, m, o),
i.cropBoxMovable || (pt(a, u, t), st(a, h, n), st(a, m, o));
}
return this;
},
},
At = r.Cropper,
It = (function () {
function e(t) {
var i =
1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : {};
if ((F(this, e), !t || !$.test(t.tagName)))
throw new Error(
"The first argument is required and must be an <img> or <canvas> element."
);
(this.element = t),
(this.options = et({}, Q, _(i) && i)),
(this.cropped = !1),
(this.disabled = !1),
(this.pointers = {}),
(this.ready = !1),
(this.reloading = !1),
(this.replaced = !1),
(this.sized = !1),
(this.sizing = !1),
this.init();
}
return (
Z(
e,
[
{
key: "init",
value: function () {
var t = this.element,
i = t.tagName.toLowerCase(),
e = void 0;
if (!lt(t, l)) {
if ((pt(t, l, this), "img" === i)) {
if (
((this.isImg = !0),
(e = t.getAttribute("src") || ""),
!(this.originalUrl = e))
)
return;
e = t.src;
} else
"canvas" === i &&
window.HTMLCanvasElement &&
(e = t.toDataURL());
this.load(e);
}
},
},
{
key: "load",
value: function (t) {
var i = this;
if (t) {
(this.url = t), (this.imageData = {});
var e = this.element,
a = this.options;
if (a.checkOrientation && window.ArrayBuffer)
if (P.test(t))
q.test(t)
? this.read(
((n = t.replace(Nt, "")),
(o = atob(n)),
(h = new ArrayBuffer(o.length)),
it((r = new Uint8Array(h)), function (t, i) {
r[i] = o.charCodeAt(i);
}),
h)
)
: this.clone();
else {
var n,
o,
h,
r,
s = new XMLHttpRequest();
(this.reloading = !0), (this.xhr = s);
var c = function () {
(i.reloading = !1), (i.xhr = null);
};
(s.ontimeout = c),
(s.onabort = c),
(s.onerror = function () {
c(), i.clone();
}),
(s.onload = function () {
c(), i.read(s.response);
}),
a.checkCrossOrigin &&
Dt(t) &&
e.crossOrigin &&
(t = Bt(t)),
s.open("get", t),
(s.responseType = "arraybuffer"),
(s.withCredentials =
"use-credentials" === e.crossOrigin),
s.send();
}
else this.clone();
}
},
},
{
key: "read",
value: function (t) {
var i,
e,
a,
n = this.options,
o = this.imageData,
h = Lt(t),
r = 0,
s = 1,
c = 1;
if (1 < h) {
this.url =
((i = "image/jpeg"),
(e = new Uint8Array(t)),
(a = ""),
it(e, function (t) {
a += Ht(t);
}),
"data:" + i + ";base64," + btoa(a));
var d = (function (t) {
var i = 0,
e = 1,
a = 1;
switch (t) {
case 2:
e = -1;
break;
case 3:
i = -180;
break;
case 4:
a = -1;
break;
case 5:
(i = 90), (a = -1);
break;
case 6:
i = 90;
break;
case 7:
(i = 90), (e = -1);
break;
case 8:
i = -90;
}
return { rotate: i, scaleX: e, scaleY: a };
})(h);
(r = d.rotate), (s = d.scaleX), (c = d.scaleY);
}
n.rotatable && (o.rotate = r),
n.scalable && ((o.scaleX = s), (o.scaleY = c)),
this.clone();
},
},
{
key: "clone",
value: function () {
var t = this.element,
i = this.url,
e = void 0,
a = void 0;
this.options.checkCrossOrigin &&
Dt(i) &&
((e = t.crossOrigin)
? (a = i)
: ((e = "anonymous"), (a = Bt(i)))),
(this.crossOrigin = e),
(this.crossOriginUrl = a);
var n = document.createElement("img");
e && (n.crossOrigin = e), (n.src = a || i);
var o = this.start.bind(this),
h = this.stop.bind(this);
(this.image = n),
(this.onStart = o),
(this.onStop = h),
this.isImg
? t.complete
? (this.timeout = setTimeout(o, 0))
: vt(t, y, o, { once: !0 })
: ((n.onload = o),
(n.onerror = h),
ht(n, p),
t.parentNode.insertBefore(n, t.nextSibling));
},
},
{
key: "start",
value: function (t) {
var e = this,
i = this.isImg ? this.element : this.image;
t && ((i.onload = null), (i.onerror = null)),
(this.sizing = !0);
var a =
r.navigator &&
/(Macintosh|iPhone|iPod|iPad).*AppleWebKit/i.test(
r.navigator.userAgent
),
n = function (t, i) {
et(e.imageData, {
naturalWidth: t,
naturalHeight: i,
aspectRatio: t / i,
}),
(e.sizing = !1),
(e.sized = !0),
e.build();
};
if (!i.naturalWidth || a) {
var o = document.createElement("img"),
h = document.body || document.documentElement;
((this.sizingImage = o).onload = function () {
n(o.width, o.height), a || h.removeChild(o);
}),
(o.src = i.src),
a ||
((o.style.cssText =
"left:0;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;opacity:0;position:absolute;top:0;z-index:-1;"),
h.appendChild(o));
} else n(i.naturalWidth, i.naturalHeight);
},
},
{
key: "stop",
value: function () {
var t = this.image;
(t.onload = null),
(t.onerror = null),
t.parentNode.removeChild(t),
(this.image = null);
},
},
{
key: "build",
value: function () {
if (this.sized && !this.ready) {
var t = this.element,
i = this.options,
e = this.image,
a = t.parentNode,
n = document.createElement("div");
n.innerHTML =
'<div class="cropper-container" touch-action="none"><div class="cropper-wrap-box"><div class="cropper-canvas"></div></div><div class="cropper-drag-box"></div><div class="cropper-crop-box"><span class="cropper-view-box"></span><span class="cropper-dashed dashed-h"></span><span class="cropper-dashed dashed-v"></span><span class="cropper-center"></span><span class="cropper-face"></span><span class="cropper-line line-e" data-action="e"></span><span class="cropper-line line-n" data-action="n"></span><span class="cropper-line line-w" data-action="w"></span><span class="cropper-line line-s" data-action="s"></span><span class="cropper-point point-e" data-action="e"></span><span class="cropper-point point-n" data-action="n"></span><span class="cropper-point point-w" data-action="w"></span><span class="cropper-point point-s" data-action="s"></span><span class="cropper-point point-ne" data-action="ne"></span><span class="cropper-point point-nw" data-action="nw"></span><span class="cropper-point point-sw" data-action="sw"></span><span class="cropper-point point-se" data-action="se"></span></div></div>';
var o = n.querySelector("." + l + "-container"),
h = o.querySelector("." + l + "-canvas"),
r = o.querySelector("." + l + "-drag-box"),
s = o.querySelector("." + l + "-crop-box"),
c = s.querySelector("." + l + "-face");
(this.container = a),
(this.cropper = o),
(this.canvas = h),
(this.dragBox = r),
(this.cropBox = s),
(this.viewBox = o.querySelector("." + l + "-view-box")),
(this.face = c),
h.appendChild(e),
ht(t, S),
a.insertBefore(o, t.nextSibling),
this.isImg || rt(e, p),
this.initPreview(),
this.bind(),
(i.aspectRatio = Math.max(0, i.aspectRatio) || NaN),
(i.viewMode =
Math.max(0, Math.min(3, Math.round(i.viewMode))) || 0),
ht(s, S),
i.guides || ht(s.getElementsByClassName(l + "-dashed"), S),
i.center || ht(s.getElementsByClassName(l + "-center"), S),
i.background && ht(o, l + "-bg"),
i.highlight || ht(c, "cropper-invisible"),
i.cropBoxMovable && (ht(c, m), pt(c, u, k)),
i.cropBoxResizable ||
(ht(s.getElementsByClassName(l + "-line"), S),
ht(s.getElementsByClassName(l + "-point"), S)),
this.render(),
(this.ready = !0),
this.setDragMode(i.dragMode),
i.autoCrop && this.crop(),
this.setData(i.data),
tt(i.ready) && vt(t, B, i.ready, { once: !0 }),
wt(t, B);
}
},
},
{
key: "unbuild",
value: function () {
this.ready &&
((this.ready = !1),
this.unbind(),
this.resetPreview(),
this.cropper.parentNode.removeChild(this.cropper),
rt(this.element, S));
},
},
{
key: "uncreate",
value: function () {
var t = this.element;
this.ready
? (this.unbuild(), (this.ready = !1), (this.cropped = !1))
: this.sizing
? ((this.sizingImage.onload = null),
(this.sizing = !1),
(this.sized = !1))
: this.reloading
? this.xhr.abort()
: this.isImg
? t.complete
? clearTimeout(this.timeout)
: ft(t, y, this.onStart)
: this.image && this.stop();
},
},
],
[
{
key: "noConflict",
value: function () {
return (window.Cropper = At), e;
},
},
{
key: "setDefaults",
value: function (t) {
et(Q, _(t) && t);
},
},
]
),
e
);
})();
if ((et(It.prototype, Ot, zt, Yt, Xt, Rt, St), d.fn)) {
var jt = d.fn.cropper,
Ut = "cropper";
(d.fn.cropper = function (r) {
for (
var t = arguments.length, s = Array(1 < t ? t - 1 : 0), i = 1;
i < t;
i++
)
s[i - 1] = arguments[i];
var c = void 0;
return (
this.each(function (t, i) {
var e = d(i),
a = "destroy" === r,
n = e.data(Ut);
if (!n) {
if (a) return;
var o = d.extend({}, e.data(), d.isPlainObject(r) && r);
(n = new It(i, o)), e.data(Ut, n);
}
if ("string" == typeof r) {
var h = n[r];
d.isFunction(h) &&
((c = h.apply(n, s)) === n && (c = void 0),
a && e.removeData(Ut));
}
}),
void 0 !== c ? c : this
);
}),
(d.fn.cropper.Constructor = It),
(d.fn.cropper.setDefaults = It.setDefaults),
(d.fn.cropper.noConflict = function () {
return (d.fn.cropper = jt), this;
});
}
});