10 lines
23 KiB
JavaScript
10 lines
23 KiB
JavaScript
|
/*!
|
||
|
* Cropper v0.9.1
|
||
|
* https://github.com/fengyuanchen/cropper
|
||
|
*
|
||
|
* Copyright (c) 2014-2015 Fengyuan Chen and contributors
|
||
|
* Released under the MIT license
|
||
|
*
|
||
|
* Date: 2015-03-21T04:58:27.265Z
|
||
|
*/
|
||
|
!function (a) { "function" == typeof define && define.amd ? define(["jquery"], a) : a("object" == typeof exports ? require("jquery") : jQuery) }(function (a) { "use strict"; function b(a) { return "number" == typeof a } function c(a) { return "undefined" == typeof a } function d(a, c) { var d = []; return b(c) && d.push(c), d.slice.apply(a, d) } function e(a, b) { var c = d(arguments, 2); return function () { return a.apply(b, c.concat(d(arguments))) } } function f(a) { var b = a.match(/^(https?:)\/\/([^\:\/\?#]+):?(\d*)/i); return b && (b[1] !== n.protocol || b[2] !== n.hostname || b[3] !== n.port) } function g(a) { var b = "timestamp=" + (new Date).getTime(); return a + (-1 === a.indexOf("?") ? "?" : "&") + b } function h(a) { return a ? "rotate(" + a + "deg)" : "none" } function i(a, b) { var c, d, e = P(a.degree) % 180, f = (e > 90 ? 180 - e : e) * Math.PI / 180, g = Q(f), h = R(f), i = a.width, j = a.height, k = a.aspectRatio; return b ? (c = i / (h + g / k), d = c / k) : (c = i * h + j * g, d = i * g + j * h), { width: c, height: d } } function j(b, c) { var d = a("<canvas>")[0], e = d.getContext("2d"), f = c.naturalWidth, g = c.naturalHeight, h = c.rotate, j = i({ width: f, height: g, degree: h }); return h ? (d.width = j.width, d.height = j.height, e.save(), e.translate(j.width / 2, j.height / 2), e.rotate(h * Math.PI / 180), e.drawImage(b, -f / 2, -g / 2, f, g), e.restore()) : (d.width = f, d.height = g, e.drawImage(b, 0, 0, f, g)), d } function k(b, c) { this.$element = a(b), this.options = a.extend({}, k.DEFAULTS, a.isPlainObject(c) && c), this.ready = !1, this.built = !1, this.rotated = !1, this.cropped = !1, this.disabled = !1, this.load() } var l = a(window), m = a(document), n = window.location, o = ".cropper", p = /^(e|n|w|s|ne|nw|sw|se|all|crop|move|zoom)$/, q = "cropper-modal", r = "cropper-hide", s = "cropper-hidden", t = "cropper-invisible", u = "cropper-move", v = "cropper-crop", w = "cropper-disabled", x = "cropper-bg", y = "mousedown touchstart", z = "mousemove touchmove", A = "mouseup mouseleave touchend touchleave touchcancel", B = "wheel mousewheel DOMMouseScroll", C = "dblclick", D = "resize" + o, E = "build" + o, F = "built" + o, G = "dragstart" + o, H = "dragmove" + o, I = "dragend" + o, J = "zoomin" + o, K = "zoomout" + o, L = a.isFunction(a("<canvas>")[0].getContext), M = Math.sqrt, N = Math.min, O = Math.max, P = Math.abs, Q = Math.sin, R = Math.cos, S = parseFloat, T = {}; T.load = function (b) { var c, d, e, h = this.options, i = this.$element; b || (i.is("img") ? b = i.prop("src") : i.is("canvas") && L && (b = i[0].toDataURL())), b && (d = a.Event(E), i.one(E, h.build).trigger(d), d.isDefaultPrevented() || (h.checkImageOrigin && f(b) && (c = " crossOrigin", i.prop("crossOrigin") || (b = g(b))), this.$clone = e = a("<img>"), e.one("load", a.proxy(function () { var a = e.prop("naturalWidth") || e.width(), c = e.prop("naturalHeight") || e.height(); this.image = { naturalWidth: a, naturalHeight: c, aspectRatio: a / c, rotate: 0 }, this.url = b, this.ready = !0, this.build() }, this)).attr({ src: b, crossOrigin: c }), e.addClass(r).insertAfter(i))) }, T.build = function () { var b, c, d = this.$element, e = this.$clone, f = this.options; this.ready && (this.built && this.unbuild(), this.$cropper = b = a(k.TEMPLATE), d.addClass(s), e.removeClass(r), this.$container = d.parent().append(b), this.$canvas = b.find(".cropper-canvas").append(e), this.$dragBox = b.find(".cropper-drag-box"), this.$cropBox = c = b.find(".cropper-crop-box"), this.$viewBox = b.find(".cropper-view-box"), this.addListeners(), this.initPreview(), f.aspectRatio = S(f.aspectRatio) || 0 / 0, f.autoCrop ? (this.cropped = !0, f.modal && this.$dragBox.addClass(q)) : c.addClass(s), f.background && b.addClass(x), f.highlight || c.find(".cropper-face").addClass(t), f.guides || c.find(".cropper-dashed").addClass(s), f.movable || c.find(".cropper-face").data("drag", "move"), f.resizable || c.find(".cropper-line, .cropper-point").addClass(s), this.setDragMode(f.dragCrop ? "crop" : "move"), this.built = !0, this.render(), d.one(F, f.b
|