cropper.js 移动端h5裁剪头像并压缩base64功能(html+css+js)

功能效果

 完整代码

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>头像裁剪</title>
    <link rel="stylesheet" href="./cropper.css" />
    <style>
      * {
        margin: 0;
        padding: 0;
      }
      img {
        width: 100%;
        height: auto;
      }
      #imgs {
        display: none;
      }
      .cropper-bg {
        background-color: #000;
        background-image: none;
      }
      .cropper-container {
        position: fixed;
        left: 0;
        top: 0;
      }
      .btn_box {
        position: fixed;
        left: 0;
        bottom: 0;
        width: 100%;
        height: 40px;
        background-color: #000;
        color: #fff;
        display: flex;
        align-items: center;
        justify-content: space-between;
        box-sizing: border-box;
        padding: 0 20px;
        z-index: 999;
      }
    </style>
  </head>
  <body>
    <input
      type="file"
      id="uploadImage"
      accept="image/*"
      onchange="change(event)"
    />
    <img id="show" src="" alt="" />
    <div id="cropperModal" style="display: none">
      <div id="cropperContainer">
        <img id="imgs" src="" alt="" />
      </div>
      <div class="btn_box">
        <div class="left" onclick="cropperNo()">取消</div>
        <div class="right" onclick="cropperOK()">确定</div>
      </div>
    </div>
    <script src="./cropper.js"></script>
    <script>
      let cropper;
      function change(e) {
        let viewportHeight =
          window.innerHeight || document.documentElement.clientHeight;
        let img = document.querySelector("#imgs");
        let files = e.target.files;
        let file = files[0];
        if (file) {
          img.setAttribute("src", URL.createObjectURL(file));
          cropper = new Cropper(img, {
            aspectRatio: 1 / 1,
            movable: true,
            dragMode: "move",
            backgroundColor: "red", // 设置裁剪区的背景颜色为红色
            // preview: "#croppedImage",
            zoomable: true, // 允许缩放图片
            cropBoxMovable: true, // 是否通过拖拽来移动剪裁框
            cropBoxWidth: 200,
            cropBoxHeight: 200,
            // minContainerWidth: 200,
            minContainerHeight: viewportHeight - 40,
          });
          document.getElementById("cropperModal").style.display = "block";
        }
      }

      // 确定裁剪
      function cropperOK() {
        console.log(
          cropper.getCroppedCanvas().toDataURL("image/jpeg"),
          "压缩前base64"
        );
        compressImg(
          cropper.getCroppedCanvas().toDataURL("image/jpeg"),
          0.5,
          (res) => {
            console.log(res, "压缩后base64");
            document.querySelector("#show").setAttribute("src", res);
          }
        );
        cropper.destroy();
        document.getElementById("cropperModal").style.display = "none";
      }
      // 取消裁剪
      function cropperNo() {
        cropper.destroy();
        document.getElementById("cropperModal").style.display = "none";
      }
      //压缩方法
      function compressImg(base64, multiple, useImg) {
        // 第一个参数就是需要加密的base65,
        // 第二个是压缩系数 0-1,
        // 第三个压缩后的回调 用来获取处理后的 base64
        if (!base64) {
          return;
        }
        // const _this = this
        const length = base64.length / 1024;
        // 压缩方法
        let newImage = new Image();
        let quality = 0.6; // 压缩系数0-1之间
        newImage.src = base64;
        newImage.setAttribute("crossOrigin", "Anonymous"); // url为外域时需要
        let imgWidth, imgHeight;
        let w = undefined;
        newImage.onload = function () {
          // 这里面的 this 指向 newImage
          // 通过改变图片宽高来实现压缩
          w = this.width * multiple;
          imgWidth = this.width;
          imgHeight = this.height;
          let canvas = document.createElement("canvas");
          let ctx = canvas.getContext("2d");
          if (Math.max(imgWidth, imgHeight) > w) {
            if (imgWidth > imgHeight) {
              canvas.width = w;
              // 等比例缩小
              canvas.height = w * (imgHeight / imgWidth);
            } else {
              canvas.height = w;
              // 等比例缩小
              canvas.width = w * (imgWidth / imgHeight);
            }
          } else {
            canvas.width = imgWidth;
            canvas.height = imgHeight;
            // quality 设置转换为base64编码后图片的质量,取值范围为0-1  没什么压缩效果
            // 还是得通过设置 canvas 的宽高来压缩
            quality = 0.6;
          }
          ctx.clearRect(0, 0, canvas.width, canvas.height);
          ctx.drawImage(this, 0, 0, canvas.width, canvas.height); //  // 这里面的 this 指向 newImage
          let smallBase64 = canvas.toDataURL("image/jpeg", quality); // 压缩语句

          useImg(smallBase64);
        };
      }
    </script>
  </body>
</html>

cropper.css

.cropper-container {
  direction: ltr;
  font-size: 0;
  line-height: 0;
  position: relative;
  -ms-touch-action: none;
  touch-action: none;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none
}

.cropper-container img {
  display: block;
  height: 100%;
  image-orientation: 0deg;
  max-height: none !important;
  max-width: none !important;
  min-height: 0 !important;
  min-width: 0 !important;
  width: 100%
}

.cropper-canvas,
.cropper-crop-box,
.cropper-drag-box,
.cropper-modal,
.cropper-wrap-box {
  bottom: 0;
  left: 0;
  position: absolute;
  right: 0;
  top: 0
}

.cropper-canvas,
.cropper-wrap-box {
  overflow: hidden
}

.cropper-drag-box {
  background-color: #fff;
  opacity: 0
}

.cropper-modal {
  background-color: #000;
  opacity: .5
}

.cropper-view-box {
  display: block;
  height: 100%;
  outline: 1px solid #39f;
  outline-color: rgba(51, 153, 255, .75);
  overflow: hidden;
  width: 100%
}

.cropper-dashed {
  border: 0 dashed #eee;
  display: block;
  opacity: .5;
  position: absolute
}

.cropper-dashed.dashed-h {
  border-bottom-width: 1px;
  border-top-width: 1px;
  height: 33.33333%;
  left: 0;
  top: 33.33333%;
  width: 100%
}

.cropper-dashed.dashed-v {
  border-left-width: 1px;
  border-right-width: 1px;
  height: 100%;
  left: 33.33333%;
  top: 0;
  width: 33.33333%
}

.cropper-center {
  display: block;
  height: 0;
  left: 50%;
  opacity: .75;
  position: absolute;
  top: 50%;
  width: 0
}

.cropper-center:after,
.cropper-center:before {
  background-color: #eee;
  content: " ";
  display: block;
  position: absolute
}

.cropper-center:before {
  height: 1px;
  left: -3px;
  top: 0;
  width: 7px
}

.cropper-center:after {
  height: 7px;
  left: 0;
  top: -3px;
  width: 1px
}

.cropper-face,
.cropper-line,
.cropper-point {
  display: block;
  height: 100%;
  opacity: .1;
  position: absolute;
  width: 100%
}

.cropper-face {
  background-color: #fff;
  left: 0;
  top: 0
}

.cropper-line {
  background-color: #39f
}

.cropper-line.line-e {
  cursor: ew-resize;
  right: -3px;
  top: 0;
  width: 5px
}

.cropper-line.line-n {
  cursor: ns-resize;
  height: 5px;
  left: 0;
  top: -3px
}

.cropper-line.line-w {
  cursor: ew-resize;
  left: -3px;
  top: 0;
  width: 5px
}

.cropper-line.line-s {
  bottom: -3px;
  cursor: ns-resize;
  height: 5px;
  left: 0
}

.cropper-point {
  background-color: #39f;
  height: 5px;
  opacity: .75;
  width: 5px
}

.cropper-point.point-e {
  cursor: ew-resize;
  margin-top: -3px;
  right: -3px;
  top: 50%
}

.cropper-point.point-n {
  cursor: ns-resize;
  left: 50%;
  margin-left: -3px;
  top: -3px
}

.cropper-point.point-w {
  cursor: ew-resize;
  left: -3px;
  margin-top: -3px;
  top: 50%
}

.cropper-point.point-s {
  bottom: -3px;
  cursor: s-resize;
  left: 50%;
  margin-left: -3px
}

.cropper-point.point-ne {
  cursor: nesw-resize;
  right: -3px;
  top: -3px
}

.cropper-point.point-nw {
  cursor: nwse-resize;
  left: -3px;
  top: -3px
}

.cropper-point.point-sw {
  bottom: -3px;
  cursor: nesw-resize;
  left: -3px
}

.cropper-point.point-se {
  bottom: -3px;
  cursor: nwse-resize;
  height: 20px;
  opacity: 1;
  right: -3px;
  width: 20px
}

@media (min-width:768px) {
  .cropper-point.point-se {
    height: 15px;
    width: 15px
  }
}

@media (min-width:992px) {
  .cropper-point.point-se {
    height: 10px;
    width: 10px
  }
}

@media (min-width:1200px) {
  .cropper-point.point-se {
    height: 5px;
    opacity: .75;
    width: 5px
  }
}

.cropper-point.point-se:before {
  background-color: #39f;
  bottom: -50%;
  content: " ";
  display: block;
  height: 200%;
  opacity: 0;
  position: absolute;
  right: -50%;
  width: 200%
}

.cropper-invisible {
  opacity: 0
}

.cropper-bg {
  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMzTjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC")
}

.cropper-hide {
  display: block;
  height: 0;
  position: absolute;
  width: 0
}

.cropper-hidden {
  display: none !important
}

.cropper-move {
  cursor: move
}

.cropper-crop {
  cursor: crosshair
}

.cropper-disabled .cropper-drag-box,
.cropper-disabled .cropper-face,
.cropper-disabled .cropper-line,
.cropper-disabled .cropper-point {
  cursor: not-allowed
}

cropper.js


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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值