mirror of
https://github.com/danog/telegram-tt.git
synced 2024-12-11 08:39:59 +01:00
1 line
96 KiB
Plaintext
1 line
96 KiB
Plaintext
{"version":3,"file":"99.f03a947e6e336feffec8.js","mappings":"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","sources":["webpack://telegram-t/./node_modules/croppie/croppie.js"],"sourcesContent":["/*************************\r\n * Croppie\r\n * Copyright 2019\r\n * Foliotek\r\n * Version: 2.6.5\r\n *************************/\r\n(function (root, factory) {\r\n if (typeof define === 'function' && define.amd) {\r\n // AMD. Register as an anonymous module.\r\n define(factory);\r\n } else if (typeof exports === 'object' && typeof exports.nodeName !== 'string') {\r\n // CommonJS\r\n module.exports = factory();\r\n } else {\r\n // Browser globals\r\n root.Croppie = factory();\r\n }\r\n}(typeof self !== 'undefined' ? self : this, function () {\r\n\r\n /* Polyfills */\r\n if (typeof Promise !== 'function') {\r\n /*! promise-polyfill 3.1.0 */\r\n !function(a){function b(a,b){return function(){a.apply(b,arguments)}}function c(a){if(\"object\"!==typeof this)throw new TypeError(\"Promises must be constructed via new\");if(\"function\"!==typeof a)throw new TypeError(\"not a function\");this._state=null,this._value=null,this._deferreds=[],i(a,b(e,this),b(f,this))}function d(a){var b=this;return null===this._state?void this._deferreds.push(a):void k(function(){var c=b._state?a.onFulfilled:a.onRejected;if(null===c)return void(b._state?a.resolve:a.reject)(b._value);var d;try{d=c(b._value)}catch(e){return void a.reject(e)}a.resolve(d)})}function e(a){try{if(a===this)throw new TypeError(\"A promise cannot be resolved with itself.\");if(a&&(\"object\"===typeof a||\"function\"===typeof a)){var c=a.then;if(\"function\"===typeof c)return void i(b(c,a),b(e,this),b(f,this))}this._state=!0,this._value=a,g.call(this)}catch(d){f.call(this,d)}}function f(a){this._state=!1,this._value=a,g.call(this)}function g(){for(var a=0,b=this._deferreds.length;b>a;a++)d.call(this,this._deferreds[a]);this._deferreds=null}function h(a,b,c,d){this.onFulfilled=\"function\"===typeof a?a:null,this.onRejected=\"function\"===typeof b?b:null,this.resolve=c,this.reject=d}function i(a,b,c){var d=!1;try{a(function(a){d||(d=!0,b(a))},function(a){d||(d=!0,c(a))})}catch(e){if(d)return;d=!0,c(e)}}var j=setTimeout,k=\"function\"===typeof setImmediate&&setImmediate||function(a){j(a,1)},l=Array.isArray||function(a){return\"[object Array]\"===Object.prototype.toString.call(a)};c.prototype[\"catch\"]=function(a){return this.then(null,a)},c.prototype.then=function(a,b){var e=this;return new c(function(c,f){d.call(e,new h(a,b,c,f))})},c.all=function(){var a=Array.prototype.slice.call(1===arguments.length&&l(arguments[0])?arguments[0]:arguments);return new c(function(b,c){function d(f,g){try{if(g&&(\"object\"===typeof g||\"function\"===typeof g)){var h=g.then;if(\"function\"===typeof h)return void h.call(g,function(a){d(f,a)},c)}a[f]=g,0===--e&&b(a)}catch(i){c(i)}}if(0===a.length)return b([]);for(var e=a.length,f=0;f<a.length;f++)d(f,a[f])})},c.resolve=function(a){return a&&\"object\"===typeof a&&a.constructor===c?a:new c(function(b){b(a)})},c.reject=function(a){return new c(function(b,c){c(a)})},c.race=function(a){return new c(function(b,c){for(var d=0,e=a.length;e>d;d++)a[d].then(b,c)})},c._setImmediateFn=function(a){k=a},\"undefined\"!==typeof module&&module.exports?module.exports=c:a.Promise||(a.Promise=c)}(this);\r\n }\r\n\r\n if (typeof window !== 'undefined' && typeof window.CustomEvent !== \"function\") {\r\n (function(){\r\n function CustomEvent ( event, params ) {\r\n params = params || { bubbles: false, cancelable: false, detail: undefined };\r\n var evt = document.createEvent( 'CustomEvent' );\r\n evt.initCustomEvent( event, params.bubbles, params.cancelable, params.detail );\r\n return evt;\r\n }\r\n CustomEvent.prototype = window.Event.prototype;\r\n window.CustomEvent = CustomEvent;\r\n }());\r\n }\r\n\r\n if (typeof HTMLCanvasElement !== 'undefined' && !HTMLCanvasElement.prototype.toBlob) {\r\n Object.defineProperty(HTMLCanvasElement.prototype, 'toBlob', {\r\n value: function (callback, type, quality) {\r\n var binStr = atob( this.toDataURL(type, quality).split(',')[1] ),\r\n len = binStr.length,\r\n arr = new Uint8Array(len);\r\n\r\n for (var i=0; i<len; i++ ) {\r\n arr[i] = binStr.charCodeAt(i);\r\n }\r\n\r\n callback( new Blob( [arr], {type: type || 'image/png'} ) );\r\n }\r\n });\r\n }\r\n /* End Polyfills */\r\n\r\n var cssPrefixes = ['Webkit', 'Moz', 'ms'],\r\n emptyStyles = typeof document !== 'undefined' ? document.createElement('div').style : {},\r\n EXIF_NORM = [1,8,3,6],\r\n EXIF_FLIP = [2,7,4,5],\r\n CSS_TRANS_ORG,\r\n CSS_TRANSFORM,\r\n CSS_USERSELECT;\r\n\r\n function vendorPrefix(prop) {\r\n if (prop in emptyStyles) {\r\n return prop;\r\n }\r\n\r\n var capProp = prop[0].toUpperCase() + prop.slice(1),\r\n i = cssPrefixes.length;\r\n\r\n while (i--) {\r\n prop = cssPrefixes[i] + capProp;\r\n if (prop in emptyStyles) {\r\n return prop;\r\n }\r\n }\r\n }\r\n\r\n CSS_TRANSFORM = vendorPrefix('transform');\r\n CSS_TRANS_ORG = vendorPrefix('transformOrigin');\r\n CSS_USERSELECT = vendorPrefix('userSelect');\r\n\r\n function getExifOffset(ornt, rotate) {\r\n var arr = EXIF_NORM.indexOf(ornt) > -1 ? EXIF_NORM : EXIF_FLIP,\r\n index = arr.indexOf(ornt),\r\n offset = (rotate / 90) % arr.length;// 180 = 2%4 = 2 shift exif by 2 indexes\r\n\r\n return arr[(arr.length + index + (offset % arr.length)) % arr.length];\r\n }\r\n\r\n // Credits to : Andrew Dupont - http://andrewdupont.net/2009/08/28/deep-extending-objects-in-javascript/\r\n function deepExtend(destination, source) {\r\n destination = destination || {};\r\n for (var property in source) {\r\n if (source[property] && source[property].constructor && source[property].constructor === Object) {\r\n destination[property] = destination[property] || {};\r\n deepExtend(destination[property], source[property]);\r\n } else {\r\n destination[property] = source[property];\r\n }\r\n }\r\n return destination;\r\n }\r\n\r\n function clone(object) {\r\n return deepExtend({}, object);\r\n }\r\n\r\n function debounce(func, wait, immediate) {\r\n var timeout;\r\n return function () {\r\n var context = this, args = arguments;\r\n var later = function () {\r\n timeout = null;\r\n if (!immediate) func.apply(context, args);\r\n };\r\n var callNow = immediate && !timeout;\r\n clearTimeout(timeout);\r\n timeout = setTimeout(later, wait);\r\n if (callNow) func.apply(context, args);\r\n };\r\n }\r\n\r\n function dispatchChange(element) {\r\n if (\"createEvent\" in document) {\r\n var evt = document.createEvent(\"HTMLEvents\");\r\n evt.initEvent(\"change\", false, true);\r\n element.dispatchEvent(evt);\r\n }\r\n else {\r\n element.fireEvent(\"onchange\");\r\n }\r\n }\r\n\r\n //http://jsperf.com/vanilla-css\r\n function css(el, styles, val) {\r\n if (typeof (styles) === 'string') {\r\n var tmp = styles;\r\n styles = {};\r\n styles[tmp] = val;\r\n }\r\n\r\n for (var prop in styles) {\r\n el.style[prop] = styles[prop];\r\n }\r\n }\r\n\r\n function addClass(el, c) {\r\n if (el.classList) {\r\n el.classList.add(c);\r\n }\r\n else {\r\n el.className += ' ' + c;\r\n }\r\n }\r\n\r\n function removeClass(el, c) {\r\n if (el.classList) {\r\n el.classList.remove(c);\r\n }\r\n else {\r\n el.className = el.className.replace(c, '');\r\n }\r\n }\r\n\r\n function setAttributes(el, attrs) {\r\n for (var key in attrs) {\r\n el.setAttribute(key, attrs[key]);\r\n }\r\n }\r\n\r\n function num(v) {\r\n return parseInt(v, 10);\r\n }\r\n\r\n /* Utilities */\r\n function loadImage(src, doExif) {\r\n if (!src) { throw 'Source image missing'; }\r\n \r\n var img = new Image();\r\n img.style.opacity = '0';\r\n return new Promise(function (resolve, reject) {\r\n function _resolve() {\r\n img.style.opacity = '1';\r\n setTimeout(function () {\r\n resolve(img);\r\n }, 1);\r\n }\r\n\r\n img.removeAttribute('crossOrigin');\r\n if (src.match(/^https?:\\/\\/|^\\/\\//)) {\r\n img.setAttribute('crossOrigin', 'anonymous');\r\n }\r\n\r\n img.onload = function () {\r\n if (doExif) {\r\n EXIF.getData(img, function () {\r\n _resolve();\r\n });\r\n }\r\n else {\r\n _resolve();\r\n }\r\n };\r\n img.onerror = function (ev) {\r\n img.style.opacity = 1;\r\n setTimeout(function () {\r\n reject(ev);\r\n }, 1);\r\n };\r\n img.src = src;\r\n });\r\n }\r\n\r\n function naturalImageDimensions(img, ornt) {\r\n var w = img.naturalWidth;\r\n var h = img.naturalHeight;\r\n var orient = ornt || getExifOrientation(img);\r\n if (orient && orient >= 5) {\r\n var x= w;\r\n w = h;\r\n h = x;\r\n }\r\n return { width: w, height: h };\r\n }\r\n\r\n /* CSS Transform Prototype */\r\n var TRANSLATE_OPTS = {\r\n 'translate3d': {\r\n suffix: ', 0px'\r\n },\r\n 'translate': {\r\n suffix: ''\r\n }\r\n };\r\n var Transform = function (x, y, scale) {\r\n this.x = parseFloat(x);\r\n this.y = parseFloat(y);\r\n this.scale = parseFloat(scale);\r\n };\r\n\r\n Transform.parse = function (v) {\r\n if (v.style) {\r\n return Transform.parse(v.style[CSS_TRANSFORM]);\r\n }\r\n else if (v.indexOf('matrix') > -1 || v.indexOf('none') > -1) {\r\n return Transform.fromMatrix(v);\r\n }\r\n else {\r\n return Transform.fromString(v);\r\n }\r\n };\r\n\r\n Transform.fromMatrix = function (v) {\r\n var vals = v.substring(7).split(',');\r\n if (!vals.length || v === 'none') {\r\n vals = [1, 0, 0, 1, 0, 0];\r\n }\r\n\r\n return new Transform(num(vals[4]), num(vals[5]), parseFloat(vals[0]));\r\n };\r\n\r\n Transform.fromString = function (v) {\r\n var values = v.split(') '),\r\n translate = values[0].substring(Croppie.globals.translate.length + 1).split(','),\r\n scale = values.length > 1 ? values[1].substring(6) : 1,\r\n x = translate.length > 1 ? translate[0] : 0,\r\n y = translate.length > 1 ? translate[1] : 0;\r\n\r\n return new Transform(x, y, scale);\r\n };\r\n\r\n Transform.prototype.toString = function () {\r\n var suffix = TRANSLATE_OPTS[Croppie.globals.translate].suffix || '';\r\n return Croppie.globals.translate + '(' + this.x + 'px, ' + this.y + 'px' + suffix + ') scale(' + this.scale + ')';\r\n };\r\n\r\n var TransformOrigin = function (el) {\r\n if (!el || !el.style[CSS_TRANS_ORG]) {\r\n this.x = 0;\r\n this.y = 0;\r\n return;\r\n }\r\n var css = el.style[CSS_TRANS_ORG].split(' ');\r\n this.x = parseFloat(css[0]);\r\n this.y = parseFloat(css[1]);\r\n };\r\n\r\n TransformOrigin.prototype.toString = function () {\r\n return this.x + 'px ' + this.y + 'px';\r\n };\r\n\r\n function getExifOrientation (img) {\r\n return img.exifdata && img.exifdata.Orientation ? num(img.exifdata.Orientation) : 1;\r\n }\r\n\r\n function drawCanvas(canvas, img, orientation) {\r\n var width = img.width,\r\n height = img.height,\r\n ctx = canvas.getContext('2d');\r\n\r\n canvas.width = img.width;\r\n canvas.height = img.height;\r\n\r\n ctx.save();\r\n switch (orientation) {\r\n case 2:\r\n ctx.translate(width, 0);\r\n ctx.scale(-1, 1);\r\n break;\r\n\r\n case 3:\r\n ctx.translate(width, height);\r\n ctx.rotate(180*Math.PI/180);\r\n break;\r\n\r\n case 4:\r\n ctx.translate(0, height);\r\n ctx.scale(1, -1);\r\n break;\r\n\r\n case 5:\r\n canvas.width = height;\r\n canvas.height = width;\r\n ctx.rotate(90*Math.PI/180);\r\n ctx.scale(1, -1);\r\n break;\r\n\r\n case 6:\r\n canvas.width = height;\r\n canvas.height = width;\r\n ctx.rotate(90*Math.PI/180);\r\n ctx.translate(0, -height);\r\n break;\r\n\r\n case 7:\r\n canvas.width = height;\r\n canvas.height = width;\r\n ctx.rotate(-90*Math.PI/180);\r\n ctx.translate(-width, height);\r\n ctx.scale(1, -1);\r\n break;\r\n\r\n case 8:\r\n canvas.width = height;\r\n canvas.height = width;\r\n ctx.translate(0, width);\r\n ctx.rotate(-90*Math.PI/180);\r\n break;\r\n }\r\n ctx.drawImage(img, 0,0, width, height);\r\n ctx.restore();\r\n }\r\n\r\n /* Private Methods */\r\n function _create() {\r\n var self = this,\r\n contClass = 'croppie-container',\r\n customViewportClass = self.options.viewport.type ? 'cr-vp-' + self.options.viewport.type : null,\r\n boundary, img, viewport, overlay, bw, bh;\r\n\r\n self.options.useCanvas = self.options.enableOrientation || _hasExif.call(self);\r\n // Properties on class\r\n self.data = {};\r\n self.elements = {};\r\n\r\n boundary = self.elements.boundary = document.createElement('div');\r\n viewport = self.elements.viewport = document.createElement('div');\r\n img = self.elements.img = document.createElement('img');\r\n overlay = self.elements.overlay = document.createElement('div');\r\n\r\n if (self.options.useCanvas) {\r\n self.elements.canvas = document.createElement('canvas');\r\n self.elements.preview = self.elements.canvas;\r\n }\r\n else {\r\n self.elements.preview = img;\r\n }\r\n\r\n addClass(boundary, 'cr-boundary');\r\n boundary.setAttribute('aria-dropeffect', 'none');\r\n bw = self.options.boundary.width;\r\n bh = self.options.boundary.height;\r\n css(boundary, {\r\n width: (bw + (isNaN(bw) ? '' : 'px')),\r\n height: (bh + (isNaN(bh) ? '' : 'px'))\r\n });\r\n\r\n addClass(viewport, 'cr-viewport');\r\n if (customViewportClass) {\r\n addClass(viewport, customViewportClass);\r\n }\r\n css(viewport, {\r\n width: self.options.viewport.width + 'px',\r\n height: self.options.viewport.height + 'px'\r\n });\r\n viewport.setAttribute('tabindex', 0);\r\n\r\n addClass(self.elements.preview, 'cr-image');\r\n setAttributes(self.elements.preview, { 'alt': 'preview', 'aria-grabbed': 'false' });\r\n addClass(overlay, 'cr-overlay');\r\n\r\n self.element.appendChild(boundary);\r\n boundary.appendChild(self.elements.preview);\r\n boundary.appendChild(viewport);\r\n boundary.appendChild(overlay);\r\n\r\n addClass(self.element, contClass);\r\n if (self.options.customClass) {\r\n addClass(self.element, self.options.customClass);\r\n }\r\n\r\n _initDraggable.call(this);\r\n\r\n if (self.options.enableZoom) {\r\n _initializeZoom.call(self);\r\n }\r\n\r\n // if (self.options.enableOrientation) {\r\n // _initRotationControls.call(self);\r\n // }\r\n\r\n if (self.options.enableResize) {\r\n _initializeResize.call(self);\r\n }\r\n }\r\n\r\n // function _initRotationControls () {\r\n // var self = this,\r\n // wrap, btnLeft, btnRight, iLeft, iRight;\r\n\r\n // wrap = document.createElement('div');\r\n // self.elements.orientationBtnLeft = btnLeft = document.createElement('button');\r\n // self.elements.orientationBtnRight = btnRight = document.createElement('button');\r\n\r\n // wrap.appendChild(btnLeft);\r\n // wrap.appendChild(btnRight);\r\n\r\n // iLeft = document.createElement('i');\r\n // iRight = document.createElement('i');\r\n // btnLeft.appendChild(iLeft);\r\n // btnRight.appendChild(iRight);\r\n\r\n // addClass(wrap, 'cr-rotate-controls');\r\n // addClass(btnLeft, 'cr-rotate-l');\r\n // addClass(btnRight, 'cr-rotate-r');\r\n\r\n // self.elements.boundary.appendChild(wrap);\r\n\r\n // btnLeft.addEventListener('click', function () {\r\n // self.rotate(-90);\r\n // });\r\n // btnRight.addEventListener('click', function () {\r\n // self.rotate(90);\r\n // });\r\n // }\r\n\r\n function _hasExif() {\r\n return this.options.enableExif && window.EXIF;\r\n }\r\n\r\n function _initializeResize () {\r\n var self = this;\r\n var wrap = document.createElement('div');\r\n var isDragging = false;\r\n var direction;\r\n var originalX;\r\n var originalY;\r\n var minSize = 50;\r\n var maxWidth;\r\n var maxHeight;\r\n var vr;\r\n var hr;\r\n\r\n addClass(wrap, 'cr-resizer');\r\n css(wrap, {\r\n width: this.options.viewport.width + 'px',\r\n height: this.options.viewport.height + 'px'\r\n });\r\n\r\n if (this.options.resizeControls.height) {\r\n vr = document.createElement('div');\r\n addClass(vr, 'cr-resizer-vertical');\r\n wrap.appendChild(vr);\r\n }\r\n\r\n if (this.options.resizeControls.width) {\r\n hr = document.createElement('div');\r\n addClass(hr, 'cr-resizer-horisontal');\r\n wrap.appendChild(hr);\r\n }\r\n\r\n function mouseDown(ev) {\r\n if (ev.button !== undefined && ev.button !== 0) return;\r\n\r\n ev.preventDefault();\r\n if (isDragging) {\r\n return;\r\n }\r\n\r\n var overlayRect = self.elements.overlay.getBoundingClientRect();\r\n\r\n isDragging = true;\r\n originalX = ev.pageX;\r\n originalY = ev.pageY;\r\n direction = ev.currentTarget.className.indexOf('vertical') !== -1 ? 'v' : 'h';\r\n maxWidth = overlayRect.width;\r\n maxHeight = overlayRect.height;\r\n\r\n if (ev.touches) {\r\n var touches = ev.touches[0];\r\n originalX = touches.pageX;\r\n originalY = touches.pageY;\r\n }\r\n\r\n window.addEventListener('mousemove', mouseMove);\r\n window.addEventListener('touchmove', mouseMove);\r\n window.addEventListener('mouseup', mouseUp);\r\n window.addEventListener('touchend', mouseUp);\r\n document.body.style[CSS_USERSELECT] = 'none';\r\n }\r\n\r\n function mouseMove(ev) {\r\n var pageX = ev.pageX;\r\n var pageY = ev.pageY;\r\n\r\n ev.preventDefault();\r\n\r\n if (ev.touches) {\r\n var touches = ev.touches[0];\r\n pageX = touches.pageX;\r\n pageY = touches.pageY;\r\n }\r\n\r\n var deltaX = pageX - originalX;\r\n var deltaY = pageY - originalY;\r\n var newHeight = self.options.viewport.height + deltaY;\r\n var newWidth = self.options.viewport.width + deltaX;\r\n\r\n if (direction === 'v' && newHeight >= minSize && newHeight <= maxHeight) {\r\n css(wrap, {\r\n height: newHeight + 'px'\r\n });\r\n\r\n self.options.boundary.height += deltaY;\r\n css(self.elements.boundary, {\r\n height: self.options.boundary.height + 'px'\r\n });\r\n\r\n self.options.viewport.height += deltaY;\r\n css(self.elements.viewport, {\r\n height: self.options.viewport.height + 'px'\r\n });\r\n }\r\n else if (direction === 'h' && newWidth >= minSize && newWidth <= maxWidth) {\r\n css(wrap, {\r\n width: newWidth + 'px'\r\n });\r\n\r\n self.options.boundary.width += deltaX;\r\n css(self.elements.boundary, {\r\n width: self.options.boundary.width + 'px'\r\n });\r\n\r\n self.options.viewport.width += deltaX;\r\n css(self.elements.viewport, {\r\n width: self.options.viewport.width + 'px'\r\n });\r\n }\r\n\r\n _updateOverlay.call(self);\r\n _updateZoomLimits.call(self);\r\n _updateCenterPoint.call(self);\r\n _triggerUpdate.call(self);\r\n originalY = pageY;\r\n originalX = pageX;\r\n }\r\n\r\n function mouseUp() {\r\n isDragging = false;\r\n window.removeEventListener('mousemove', mouseMove);\r\n window.removeEventListener('touchmove', mouseMove);\r\n window.removeEventListener('mouseup', mouseUp);\r\n window.removeEventListener('touchend', mouseUp);\r\n document.body.style[CSS_USERSELECT] = '';\r\n }\r\n\r\n if (vr) {\r\n vr.addEventListener('mousedown', mouseDown);\r\n vr.addEventListener('touchstart', mouseDown);\r\n }\r\n\r\n if (hr) {\r\n hr.addEventListener('mousedown', mouseDown);\r\n hr.addEventListener('touchstart', mouseDown);\r\n }\r\n\r\n this.elements.boundary.appendChild(wrap);\r\n }\r\n\r\n function _setZoomerVal(v) {\r\n if (this.options.enableZoom) {\r\n var z = this.elements.zoomer,\r\n val = fix(v, 4);\r\n\r\n z.value = Math.max(parseFloat(z.min), Math.min(parseFloat(z.max), val)).toString();\r\n }\r\n }\r\n\r\n function _initializeZoom() {\r\n var self = this,\r\n wrap = self.elements.zoomerWrap = document.createElement('div'),\r\n zoomer = self.elements.zoomer = document.createElement('input');\r\n\r\n addClass(wrap, 'cr-slider-wrap');\r\n addClass(zoomer, 'cr-slider');\r\n zoomer.type = 'range';\r\n zoomer.step = '0.0001';\r\n zoomer.value = '1';\r\n zoomer.style.display = self.options.showZoomer ? '' : 'none';\r\n zoomer.setAttribute('aria-label', 'zoom');\r\n\r\n self.element.appendChild(wrap);\r\n wrap.appendChild(zoomer);\r\n\r\n self._currentZoom = 1;\r\n\r\n function change() {\r\n _onZoom.call(self, {\r\n value: parseFloat(zoomer.value),\r\n origin: new TransformOrigin(self.elements.preview),\r\n viewportRect: self.elements.viewport.getBoundingClientRect(),\r\n transform: Transform.parse(self.elements.preview)\r\n });\r\n }\r\n\r\n function scroll(ev) {\r\n var delta, targetZoom;\r\n\r\n if(self.options.mouseWheelZoom === 'ctrl' && ev.ctrlKey !== true){\r\n return 0;\r\n } else if (ev.wheelDelta) {\r\n delta = ev.wheelDelta / 1200; //wheelDelta min: -120 max: 120 // max x 10 x 2\r\n } else if (ev.deltaY) {\r\n delta = ev.deltaY / 1060; //deltaY min: -53 max: 53 // max x 10 x 2\r\n } else if (ev.detail) {\r\n delta = ev.detail / -60; //delta min: -3 max: 3 // max x 10 x 2\r\n } else {\r\n delta = 0;\r\n }\r\n\r\n targetZoom = self._currentZoom + (delta * self._currentZoom);\r\n\r\n ev.preventDefault();\r\n _setZoomerVal.call(self, targetZoom);\r\n change.call(self);\r\n }\r\n\r\n self.elements.zoomer.addEventListener('input', change);// this is being fired twice on keypress\r\n self.elements.zoomer.addEventListener('change', change);\r\n\r\n if (self.options.mouseWheelZoom) {\r\n self.elements.boundary.addEventListener('mousewheel', scroll);\r\n self.elements.boundary.addEventListener('DOMMouseScroll', scroll);\r\n }\r\n }\r\n\r\n function _onZoom(ui) {\r\n var self = this,\r\n transform = ui ? ui.transform : Transform.parse(self.elements.preview),\r\n vpRect = ui ? ui.viewportRect : self.elements.viewport.getBoundingClientRect(),\r\n origin = ui ? ui.origin : new TransformOrigin(self.elements.preview);\r\n\r\n function applyCss() {\r\n var transCss = {};\r\n transCss[CSS_TRANSFORM] = transform.toString();\r\n transCss[CSS_TRANS_ORG] = origin.toString();\r\n css(self.elements.preview, transCss);\r\n }\r\n\r\n self._currentZoom = ui ? ui.value : self._currentZoom;\r\n transform.scale = self._currentZoom;\r\n self.elements.zoomer.setAttribute('aria-valuenow', self._currentZoom);\r\n applyCss();\r\n\r\n if (self.options.enforceBoundary) {\r\n var boundaries = _getVirtualBoundaries.call(self, vpRect),\r\n transBoundaries = boundaries.translate,\r\n oBoundaries = boundaries.origin;\r\n\r\n if (transform.x >= transBoundaries.maxX) {\r\n origin.x = oBoundaries.minX;\r\n transform.x = transBoundaries.maxX;\r\n }\r\n\r\n if (transform.x <= transBoundaries.minX) {\r\n origin.x = oBoundaries.maxX;\r\n transform.x = transBoundaries.minX;\r\n }\r\n\r\n if (transform.y >= transBoundaries.maxY) {\r\n origin.y = oBoundaries.minY;\r\n transform.y = transBoundaries.maxY;\r\n }\r\n\r\n if (transform.y <= transBoundaries.minY) {\r\n origin.y = oBoundaries.maxY;\r\n transform.y = transBoundaries.minY;\r\n }\r\n }\r\n applyCss();\r\n _debouncedOverlay.call(self);\r\n _triggerUpdate.call(self);\r\n }\r\n\r\n function _getVirtualBoundaries(viewport) {\r\n var self = this,\r\n scale = self._currentZoom,\r\n vpWidth = viewport.width,\r\n vpHeight = viewport.height,\r\n centerFromBoundaryX = self.elements.boundary.clientWidth / 2,\r\n centerFromBoundaryY = self.elements.boundary.clientHeight / 2,\r\n imgRect = self.elements.preview.getBoundingClientRect(),\r\n curImgWidth = imgRect.width,\r\n curImgHeight = imgRect.height,\r\n halfWidth = vpWidth / 2,\r\n halfHeight = vpHeight / 2;\r\n\r\n var maxX = ((halfWidth / scale) - centerFromBoundaryX) * -1;\r\n var minX = maxX - ((curImgWidth * (1 / scale)) - (vpWidth * (1 / scale)));\r\n\r\n var maxY = ((halfHeight / scale) - centerFromBoundaryY) * -1;\r\n var minY = maxY - ((curImgHeight * (1 / scale)) - (vpHeight * (1 / scale)));\r\n\r\n var originMinX = (1 / scale) * halfWidth;\r\n var originMaxX = (curImgWidth * (1 / scale)) - originMinX;\r\n\r\n var originMinY = (1 / scale) * halfHeight;\r\n var originMaxY = (curImgHeight * (1 / scale)) - originMinY;\r\n\r\n return {\r\n translate: {\r\n maxX: maxX,\r\n minX: minX,\r\n maxY: maxY,\r\n minY: minY\r\n },\r\n origin: {\r\n maxX: originMaxX,\r\n minX: originMinX,\r\n maxY: originMaxY,\r\n minY: originMinY\r\n }\r\n };\r\n }\r\n\r\n function _updateCenterPoint(rotate) {\r\n var self = this,\r\n scale = self._currentZoom,\r\n data = self.elements.preview.getBoundingClientRect(),\r\n vpData = self.elements.viewport.getBoundingClientRect(),\r\n transform = Transform.parse(self.elements.preview.style[CSS_TRANSFORM]),\r\n pc = new TransformOrigin(self.elements.preview),\r\n top = (vpData.top - data.top) + (vpData.height / 2),\r\n left = (vpData.left - data.left) + (vpData.width / 2),\r\n center = {},\r\n adj = {};\r\n\r\n if (rotate) {\r\n var cx = pc.x;\r\n var cy = pc.y;\r\n var tx = transform.x;\r\n var ty = transform.y;\r\n\r\n center.y = cx;\r\n center.x = cy;\r\n transform.y = tx;\r\n transform.x = ty;\r\n }\r\n else {\r\n center.y = top / scale;\r\n center.x = left / scale;\r\n\r\n adj.y = (center.y - pc.y) * (1 - scale);\r\n adj.x = (center.x - pc.x) * (1 - scale);\r\n\r\n transform.x -= adj.x;\r\n transform.y -= adj.y;\r\n }\r\n\r\n var newCss = {};\r\n newCss[CSS_TRANS_ORG] = center.x + 'px ' + center.y + 'px';\r\n newCss[CSS_TRANSFORM] = transform.toString();\r\n css(self.elements.preview, newCss);\r\n }\r\n\r\n function _initDraggable() {\r\n var self = this,\r\n isDragging = false,\r\n originalX,\r\n originalY,\r\n originalDistance,\r\n vpRect,\r\n transform;\r\n\r\n function assignTransformCoordinates(deltaX, deltaY) {\r\n var imgRect = self.elements.preview.getBoundingClientRect(),\r\n top = transform.y + deltaY,\r\n left = transform.x + deltaX;\r\n\r\n if (self.options.enforceBoundary) {\r\n if (vpRect.top > imgRect.top + deltaY && vpRect.bottom < imgRect.bottom + deltaY) {\r\n transform.y = top;\r\n }\r\n\r\n if (vpRect.left > imgRect.left + deltaX && vpRect.right < imgRect.right + deltaX) {\r\n transform.x = left;\r\n }\r\n }\r\n else {\r\n transform.y = top;\r\n transform.x = left;\r\n }\r\n }\r\n\r\n function toggleGrabState(isDragging) {\r\n self.elements.preview.setAttribute('aria-grabbed', isDragging);\r\n self.elements.boundary.setAttribute('aria-dropeffect', isDragging? 'move': 'none');\r\n }\r\n\r\n function keyDown(ev) {\r\n var LEFT_ARROW = 37,\r\n UP_ARROW = 38,\r\n RIGHT_ARROW = 39,\r\n DOWN_ARROW = 40;\r\n\r\n if (ev.shiftKey && (ev.keyCode === UP_ARROW || ev.keyCode === DOWN_ARROW)) {\r\n var zoom;\r\n if (ev.keyCode === UP_ARROW) {\r\n zoom = parseFloat(self.elements.zoomer.value) + parseFloat(self.elements.zoomer.step)\r\n }\r\n else {\r\n zoom = parseFloat(self.elements.zoomer.value) - parseFloat(self.elements.zoomer.step)\r\n }\r\n self.setZoom(zoom);\r\n }\r\n else if (self.options.enableKeyMovement && (ev.keyCode >= 37 && ev.keyCode <= 40)) {\r\n ev.preventDefault();\r\n var movement = parseKeyDown(ev.keyCode);\r\n\r\n transform = Transform.parse(self.elements.preview);\r\n document.body.style[CSS_USERSELECT] = 'none';\r\n vpRect = self.elements.viewport.getBoundingClientRect();\r\n keyMove(movement);\r\n }\r\n\r\n function parseKeyDown(key) {\r\n switch (key) {\r\n case LEFT_ARROW:\r\n return [1, 0];\r\n case UP_ARROW:\r\n return [0, 1];\r\n case RIGHT_ARROW:\r\n return [-1, 0];\r\n case DOWN_ARROW:\r\n return [0, -1];\r\n }\r\n }\r\n }\r\n\r\n function keyMove(movement) {\r\n var deltaX = movement[0],\r\n deltaY = movement[1],\r\n newCss = {};\r\n\r\n assignTransformCoordinates(deltaX, deltaY);\r\n\r\n newCss[CSS_TRANSFORM] = transform.toString();\r\n css(self.elements.preview, newCss);\r\n _updateOverlay.call(self);\r\n document.body.style[CSS_USERSELECT] = '';\r\n _updateCenterPoint.call(self);\r\n _triggerUpdate.call(self);\r\n originalDistance = 0;\r\n }\r\n\r\n function mouseDown(ev) {\r\n if (ev.button !== undefined && ev.button !== 0) return;\r\n\r\n ev.preventDefault();\r\n if (isDragging) return;\r\n isDragging = true;\r\n originalX = ev.pageX;\r\n originalY = ev.pageY;\r\n\r\n if (ev.touches) {\r\n var touches = ev.touches[0];\r\n originalX = touches.pageX;\r\n originalY = touches.pageY;\r\n }\r\n toggleGrabState(isDragging);\r\n transform = Transform.parse(self.elements.preview);\r\n window.addEventListener('mousemove', mouseMove);\r\n window.addEventListener('touchmove', mouseMove);\r\n window.addEventListener('mouseup', mouseUp);\r\n window.addEventListener('touchend', mouseUp);\r\n document.body.style[CSS_USERSELECT] = 'none';\r\n vpRect = self.elements.viewport.getBoundingClientRect();\r\n }\r\n\r\n function mouseMove(ev) {\r\n ev.preventDefault();\r\n var pageX = ev.pageX,\r\n pageY = ev.pageY;\r\n\r\n if (ev.touches) {\r\n var touches = ev.touches[0];\r\n pageX = touches.pageX;\r\n pageY = touches.pageY;\r\n }\r\n\r\n var deltaX = pageX - originalX,\r\n deltaY = pageY - originalY,\r\n newCss = {};\r\n\r\n if (ev.type === 'touchmove') {\r\n if (ev.touches.length > 1) {\r\n var touch1 = ev.touches[0];\r\n var touch2 = ev.touches[1];\r\n var dist = Math.sqrt((touch1.pageX - touch2.pageX) * (touch1.pageX - touch2.pageX) + (touch1.pageY - touch2.pageY) * (touch1.pageY - touch2.pageY));\r\n\r\n if (!originalDistance) {\r\n originalDistance = dist / self._currentZoom;\r\n }\r\n\r\n var scale = dist / originalDistance;\r\n\r\n _setZoomerVal.call(self, scale);\r\n dispatchChange(self.elements.zoomer);\r\n return;\r\n }\r\n }\r\n\r\n assignTransformCoordinates(deltaX, deltaY);\r\n\r\n newCss[CSS_TRANSFORM] = transform.toString();\r\n css(self.elements.preview, newCss);\r\n _updateOverlay.call(self);\r\n originalY = pageY;\r\n originalX = pageX;\r\n }\r\n\r\n function mouseUp() {\r\n isDragging = false;\r\n toggleGrabState(isDragging);\r\n window.removeEventListener('mousemove', mouseMove);\r\n window.removeEventListener('touchmove', mouseMove);\r\n window.removeEventListener('mouseup', mouseUp);\r\n window.removeEventListener('touchend', mouseUp);\r\n document.body.style[CSS_USERSELECT] = '';\r\n _updateCenterPoint.call(self);\r\n _triggerUpdate.call(self);\r\n originalDistance = 0;\r\n }\r\n\r\n self.elements.overlay.addEventListener('mousedown', mouseDown);\r\n self.elements.viewport.addEventListener('keydown', keyDown);\r\n self.elements.overlay.addEventListener('touchstart', mouseDown);\r\n }\r\n\r\n function _updateOverlay() {\r\n if (!this.elements) return; // since this is debounced, it can be fired after destroy\r\n var self = this,\r\n boundRect = self.elements.boundary.getBoundingClientRect(),\r\n imgData = self.elements.preview.getBoundingClientRect();\r\n\r\n css(self.elements.overlay, {\r\n width: imgData.width + 'px',\r\n height: imgData.height + 'px',\r\n top: (imgData.top - boundRect.top) + 'px',\r\n left: (imgData.left - boundRect.left) + 'px'\r\n });\r\n }\r\n var _debouncedOverlay = debounce(_updateOverlay, 500);\r\n\r\n function _triggerUpdate() {\r\n var self = this,\r\n data = self.get();\r\n\r\n if (!_isVisible.call(self)) {\r\n return;\r\n }\r\n\r\n self.options.update.call(self, data);\r\n if (self.$ && typeof Prototype === 'undefined') {\r\n self.$(self.element).trigger('update.croppie', data);\r\n }\r\n else {\r\n var ev;\r\n if (window.CustomEvent) {\r\n ev = new CustomEvent('update', { detail: data });\r\n } else {\r\n ev = document.createEvent('CustomEvent');\r\n ev.initCustomEvent('update', true, true, data);\r\n }\r\n\r\n self.element.dispatchEvent(ev);\r\n }\r\n }\r\n\r\n function _isVisible() {\r\n return this.elements.preview.offsetHeight > 0 && this.elements.preview.offsetWidth > 0;\r\n }\r\n\r\n function _updatePropertiesFromImage() {\r\n var self = this,\r\n initialZoom = 1,\r\n cssReset = {},\r\n img = self.elements.preview,\r\n imgData,\r\n transformReset = new Transform(0, 0, initialZoom),\r\n originReset = new TransformOrigin(),\r\n isVisible = _isVisible.call(self);\r\n\r\n if (!isVisible || self.data.bound) {// if the croppie isn't visible or it doesn't need binding\r\n return;\r\n }\r\n\r\n self.data.bound = true;\r\n cssReset[CSS_TRANSFORM] = transformReset.toString();\r\n cssReset[CSS_TRANS_ORG] = originReset.toString();\r\n cssReset['opacity'] = 1;\r\n css(img, cssReset);\r\n\r\n imgData = self.elements.preview.getBoundingClientRect();\r\n\r\n self._originalImageWidth = imgData.width;\r\n self._originalImageHeight = imgData.height;\r\n self.data.orientation = _hasExif.call(self) ? getExifOrientation(self.elements.img) : self.data.orientation;\r\n\r\n if (self.options.enableZoom) {\r\n _updateZoomLimits.call(self, true);\r\n }\r\n else {\r\n self._currentZoom = initialZoom;\r\n }\r\n\r\n transformReset.scale = self._currentZoom;\r\n cssReset[CSS_TRANSFORM] = transformReset.toString();\r\n css(img, cssReset);\r\n\r\n if (self.data.points.length) {\r\n _bindPoints.call(self, self.data.points);\r\n }\r\n else {\r\n _centerImage.call(self);\r\n }\r\n\r\n _updateCenterPoint.call(self);\r\n _updateOverlay.call(self);\r\n }\r\n\r\n function _updateZoomLimits (initial) {\r\n var self = this,\r\n minZoom = Math.max(self.options.minZoom, 0) || 0,\r\n maxZoom = self.options.maxZoom || 1.5,\r\n initialZoom,\r\n defaultInitialZoom,\r\n zoomer = self.elements.zoomer,\r\n scale = parseFloat(zoomer.value),\r\n boundaryData = self.elements.boundary.getBoundingClientRect(),\r\n imgData = naturalImageDimensions(self.elements.img, self.data.orientation),\r\n vpData = self.elements.viewport.getBoundingClientRect(),\r\n minW,\r\n minH;\r\n if (self.options.enforceBoundary) {\r\n minW = vpData.width / imgData.width;\r\n minH = vpData.height / imgData.height;\r\n minZoom = Math.max(minW, minH);\r\n }\r\n\r\n if (minZoom >= maxZoom) {\r\n maxZoom = minZoom + 1;\r\n }\r\n\r\n zoomer.min = fix(minZoom, 4);\r\n zoomer.max = fix(maxZoom, 4);\r\n\r\n if (!initial && (scale < zoomer.min || scale > zoomer.max)) {\r\n _setZoomerVal.call(self, scale < zoomer.min ? zoomer.min : zoomer.max);\r\n }\r\n else if (initial) {\r\n defaultInitialZoom = Math.max((boundaryData.width / imgData.width), (boundaryData.height / imgData.height));\r\n initialZoom = self.data.boundZoom !== null ? self.data.boundZoom : defaultInitialZoom;\r\n _setZoomerVal.call(self, initialZoom);\r\n }\r\n\r\n dispatchChange(zoomer);\r\n }\r\n\r\n function _bindPoints(points) {\r\n if (points.length !== 4) {\r\n throw \"Croppie - Invalid number of points supplied: \" + points;\r\n }\r\n var self = this,\r\n pointsWidth = points[2] - points[0],\r\n // pointsHeight = points[3] - points[1],\r\n vpData = self.elements.viewport.getBoundingClientRect(),\r\n boundRect = self.elements.boundary.getBoundingClientRect(),\r\n vpOffset = {\r\n left: vpData.left - boundRect.left,\r\n top: vpData.top - boundRect.top\r\n },\r\n scale = vpData.width / pointsWidth,\r\n originTop = points[1],\r\n originLeft = points[0],\r\n transformTop = (-1 * points[1]) + vpOffset.top,\r\n transformLeft = (-1 * points[0]) + vpOffset.left,\r\n newCss = {};\r\n\r\n newCss[CSS_TRANS_ORG] = originLeft + 'px ' + originTop + 'px';\r\n newCss[CSS_TRANSFORM] = new Transform(transformLeft, transformTop, scale).toString();\r\n css(self.elements.preview, newCss);\r\n\r\n _setZoomerVal.call(self, scale);\r\n self._currentZoom = scale;\r\n }\r\n\r\n function _centerImage() {\r\n var self = this,\r\n imgDim = self.elements.preview.getBoundingClientRect(),\r\n vpDim = self.elements.viewport.getBoundingClientRect(),\r\n boundDim = self.elements.boundary.getBoundingClientRect(),\r\n vpLeft = vpDim.left - boundDim.left,\r\n vpTop = vpDim.top - boundDim.top,\r\n w = vpLeft - ((imgDim.width - vpDim.width) / 2),\r\n h = vpTop - ((imgDim.height - vpDim.height) / 2),\r\n transform = new Transform(w, h, self._currentZoom);\r\n\r\n css(self.elements.preview, CSS_TRANSFORM, transform.toString());\r\n }\r\n\r\n function _transferImageToCanvas(customOrientation) {\r\n var self = this,\r\n canvas = self.elements.canvas,\r\n img = self.elements.img,\r\n ctx = canvas.getContext('2d');\r\n\r\n ctx.clearRect(0, 0, canvas.width, canvas.height);\r\n canvas.width = img.width;\r\n canvas.height = img.height;\r\n\r\n var orientation = self.options.enableOrientation && customOrientation || getExifOrientation(img);\r\n drawCanvas(canvas, img, orientation);\r\n }\r\n\r\n function _getCanvas(data) {\r\n var self = this,\r\n points = data.points,\r\n left = num(points[0]),\r\n top = num(points[1]),\r\n right = num(points[2]),\r\n bottom = num(points[3]),\r\n width = right-left,\r\n height = bottom-top,\r\n circle = data.circle,\r\n canvas = document.createElement('canvas'),\r\n ctx = canvas.getContext('2d'),\r\n startX = 0,\r\n startY = 0,\r\n canvasWidth = data.outputWidth || width,\r\n canvasHeight = data.outputHeight || height;\r\n\r\n canvas.width = canvasWidth;\r\n canvas.height = canvasHeight;\r\n\r\n if (data.backgroundColor) {\r\n ctx.fillStyle = data.backgroundColor;\r\n ctx.fillRect(0, 0, canvasWidth, canvasHeight);\r\n }\r\n\r\n // By default assume we're going to draw the entire\r\n // source image onto the destination canvas.\r\n var sx = left,\r\n sy = top,\r\n sWidth = width,\r\n sHeight = height,\r\n dx = 0,\r\n dy = 0,\r\n dWidth = canvasWidth,\r\n dHeight = canvasHeight;\r\n\r\n //\r\n // Do not go outside of the original image's bounds along the x-axis.\r\n // Handle translations when projecting onto the destination canvas.\r\n //\r\n\r\n // The smallest possible source x-position is 0.\r\n if (left < 0) {\r\n sx = 0;\r\n dx = (Math.abs(left) / width) * canvasWidth;\r\n }\r\n\r\n // The largest possible source width is the original image's width.\r\n if (sWidth + sx > self._originalImageWidth) {\r\n sWidth = self._originalImageWidth - sx;\r\n dWidth = (sWidth / width) * canvasWidth;\r\n }\r\n\r\n //\r\n // Do not go outside of the original image's bounds along the y-axis.\r\n //\r\n\r\n // The smallest possible source y-position is 0.\r\n if (top < 0) {\r\n sy = 0;\r\n dy = (Math.abs(top) / height) * canvasHeight;\r\n }\r\n\r\n // The largest possible source height is the original image's height.\r\n if (sHeight + sy > self._originalImageHeight) {\r\n sHeight = self._originalImageHeight - sy;\r\n dHeight = (sHeight / height) * canvasHeight;\r\n }\r\n\r\n // console.table({ left, right, top, bottom, canvasWidth, canvasHeight, width, height, startX, startY, circle, sx, sy, dx, dy, sWidth, sHeight, dWidth, dHeight });\r\n\r\n ctx.drawImage(this.elements.preview, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight);\r\n if (circle) {\r\n ctx.fillStyle = '#fff';\r\n ctx.globalCompositeOperation = 'destination-in';\r\n ctx.beginPath();\r\n ctx.arc(canvas.width / 2, canvas.height / 2, canvas.width / 2, 0, Math.PI * 2, true);\r\n ctx.closePath();\r\n ctx.fill();\r\n }\r\n return canvas;\r\n }\r\n\r\n function _getHtmlResult(data) {\r\n var points = data.points,\r\n div = document.createElement('div'),\r\n img = document.createElement('img'),\r\n width = points[2] - points[0],\r\n height = points[3] - points[1];\r\n\r\n addClass(div, 'croppie-result');\r\n div.appendChild(img);\r\n css(img, {\r\n left: (-1 * points[0]) + 'px',\r\n top: (-1 * points[1]) + 'px'\r\n });\r\n img.src = data.url;\r\n css(div, {\r\n width: width + 'px',\r\n height: height + 'px'\r\n });\r\n\r\n return div;\r\n }\r\n\r\n function _getBase64Result(data) {\r\n return _getCanvas.call(this, data).toDataURL(data.format, data.quality);\r\n }\r\n\r\n function _getBlobResult(data) {\r\n var self = this;\r\n return new Promise(function (resolve) {\r\n _getCanvas.call(self, data).toBlob(function (blob) {\r\n resolve(blob);\r\n }, data.format, data.quality);\r\n });\r\n }\r\n\r\n function _replaceImage(img) {\r\n if (this.elements.img.parentNode) {\r\n Array.prototype.forEach.call(this.elements.img.classList, function(c) { img.classList.add(c); });\r\n this.elements.img.parentNode.replaceChild(img, this.elements.img);\r\n this.elements.preview = img; // if the img is attached to the DOM, they're not using the canvas\r\n }\r\n this.elements.img = img;\r\n }\r\n\r\n function _bind(options, cb) {\r\n var self = this,\r\n url,\r\n points = [],\r\n zoom = null,\r\n hasExif = _hasExif.call(self);\r\n\r\n if (typeof (options) === 'string') {\r\n url = options;\r\n options = {};\r\n }\r\n else if (Array.isArray(options)) {\r\n points = options.slice();\r\n }\r\n else if (typeof (options) === 'undefined' && self.data.url) { //refreshing\r\n _updatePropertiesFromImage.call(self);\r\n _triggerUpdate.call(self);\r\n return null;\r\n }\r\n else {\r\n url = options.url;\r\n points = options.points || [];\r\n zoom = typeof(options.zoom) === 'undefined' ? null : options.zoom;\r\n }\r\n\r\n self.data.bound = false;\r\n self.data.url = url || self.data.url;\r\n self.data.boundZoom = zoom;\r\n\r\n return loadImage(url, hasExif).then(function (img) {\r\n _replaceImage.call(self, img);\r\n if (!points.length) {\r\n var natDim = naturalImageDimensions(img);\r\n var rect = self.elements.viewport.getBoundingClientRect();\r\n var aspectRatio = rect.width / rect.height;\r\n var imgAspectRatio = natDim.width / natDim.height;\r\n var width, height;\r\n\r\n if (imgAspectRatio > aspectRatio) {\r\n height = natDim.height;\r\n width = height * aspectRatio;\r\n }\r\n else {\r\n width = natDim.width;\r\n height = natDim.height / aspectRatio;\r\n }\r\n\r\n var x0 = (natDim.width - width) / 2;\r\n var y0 = (natDim.height - height) / 2;\r\n var x1 = x0 + width;\r\n var y1 = y0 + height;\r\n self.data.points = [x0, y0, x1, y1];\r\n }\r\n else if (self.options.relative) {\r\n points = [\r\n points[0] * img.naturalWidth / 100,\r\n points[1] * img.naturalHeight / 100,\r\n points[2] * img.naturalWidth / 100,\r\n points[3] * img.naturalHeight / 100\r\n ];\r\n }\r\n\r\n self.data.orientation = options.orientation || 1;\r\n self.data.points = points.map(function (p) {\r\n return parseFloat(p);\r\n });\r\n if (self.options.useCanvas) {\r\n _transferImageToCanvas.call(self, self.data.orientation);\r\n }\r\n _updatePropertiesFromImage.call(self);\r\n _triggerUpdate.call(self);\r\n cb && cb();\r\n });\r\n }\r\n\r\n function fix(v, decimalPoints) {\r\n return parseFloat(v).toFixed(decimalPoints || 0);\r\n }\r\n\r\n function _get() {\r\n var self = this,\r\n imgData = self.elements.preview.getBoundingClientRect(),\r\n vpData = self.elements.viewport.getBoundingClientRect(),\r\n x1 = vpData.left - imgData.left,\r\n y1 = vpData.top - imgData.top,\r\n widthDiff = (vpData.width - self.elements.viewport.offsetWidth) / 2, //border\r\n heightDiff = (vpData.height - self.elements.viewport.offsetHeight) / 2,\r\n x2 = x1 + self.elements.viewport.offsetWidth + widthDiff,\r\n y2 = y1 + self.elements.viewport.offsetHeight + heightDiff,\r\n scale = self._currentZoom;\r\n\r\n if (scale === Infinity || isNaN(scale)) {\r\n scale = 1;\r\n }\r\n\r\n var max = self.options.enforceBoundary ? 0 : Number.NEGATIVE_INFINITY;\r\n x1 = Math.max(max, x1 / scale);\r\n y1 = Math.max(max, y1 / scale);\r\n x2 = Math.max(max, x2 / scale);\r\n y2 = Math.max(max, y2 / scale);\r\n\r\n return {\r\n points: [fix(x1), fix(y1), fix(x2), fix(y2)],\r\n zoom: scale,\r\n orientation: self.data.orientation\r\n };\r\n }\r\n\r\n var RESULT_DEFAULTS = {\r\n type: 'canvas',\r\n format: 'png',\r\n quality: 1\r\n },\r\n RESULT_FORMATS = ['jpeg', 'webp', 'png'];\r\n\r\n function _result(options) {\r\n var self = this,\r\n data = _get.call(self),\r\n opts = deepExtend(clone(RESULT_DEFAULTS), clone(options)),\r\n resultType = (typeof (options) === 'string' ? options : (opts.type || 'base64')),\r\n size = opts.size || 'viewport',\r\n format = opts.format,\r\n quality = opts.quality,\r\n backgroundColor = opts.backgroundColor,\r\n circle = typeof opts.circle === 'boolean' ? opts.circle : (self.options.viewport.type === 'circle'),\r\n vpRect = self.elements.viewport.getBoundingClientRect(),\r\n ratio = vpRect.width / vpRect.height,\r\n prom;\r\n\r\n if (size === 'viewport') {\r\n data.outputWidth = vpRect.width;\r\n data.outputHeight = vpRect.height;\r\n } else if (typeof size === 'object') {\r\n if (size.width && size.height) {\r\n data.outputWidth = size.width;\r\n data.outputHeight = size.height;\r\n } else if (size.width) {\r\n data.outputWidth = size.width;\r\n data.outputHeight = size.width / ratio;\r\n } else if (size.height) {\r\n data.outputWidth = size.height * ratio;\r\n data.outputHeight = size.height;\r\n }\r\n }\r\n\r\n if (RESULT_FORMATS.indexOf(format) > -1) {\r\n data.format = 'image/' + format;\r\n data.quality = quality;\r\n }\r\n\r\n data.circle = circle;\r\n data.url = self.data.url;\r\n data.backgroundColor = backgroundColor;\r\n\r\n prom = new Promise(function (resolve) {\r\n switch(resultType.toLowerCase())\r\n {\r\n case 'rawcanvas':\r\n resolve(_getCanvas.call(self, data));\r\n break;\r\n case 'canvas':\r\n case 'base64':\r\n resolve(_getBase64Result.call(self, data));\r\n break;\r\n case 'blob':\r\n _getBlobResult.call(self, data).then(resolve);\r\n break;\r\n default:\r\n resolve(_getHtmlResult.call(self, data));\r\n break;\r\n }\r\n });\r\n return prom;\r\n }\r\n\r\n function _refresh() {\r\n _updatePropertiesFromImage.call(this);\r\n }\r\n\r\n function _rotate(deg) {\r\n if (!this.options.useCanvas || !this.options.enableOrientation) {\r\n throw 'Croppie: Cannot rotate without enableOrientation && EXIF.js included';\r\n }\r\n\r\n var self = this,\r\n canvas = self.elements.canvas;\r\n\r\n self.data.orientation = getExifOffset(self.data.orientation, deg);\r\n drawCanvas(canvas, self.elements.img, self.data.orientation);\r\n _updateCenterPoint.call(self, true);\r\n _updateZoomLimits.call(self);\r\n\r\n // Reverses image dimensions if the degrees of rotation is not divisible by 180.\r\n if ((Math.abs(deg) / 90) % 2 === 1) {\r\n var oldHeight = self._originalImageHeight;\r\n var oldWidth = self._originalImageWidth;\r\n self._originalImageWidth = oldHeight;\r\n self._originalImageHeight = oldWidth;\r\n }\r\n }\r\n\r\n function _destroy() {\r\n var self = this;\r\n self.element.removeChild(self.elements.boundary);\r\n removeClass(self.element, 'croppie-container');\r\n if (self.options.enableZoom) {\r\n self.element.removeChild(self.elements.zoomerWrap);\r\n }\r\n delete self.elements;\r\n }\r\n\r\n if (typeof window !== 'undefined' && window.jQuery) {\r\n var $ = window.jQuery;\r\n $.fn.croppie = function (opts) {\r\n var ot = typeof opts;\r\n\r\n if (ot === 'string') {\r\n var args = Array.prototype.slice.call(arguments, 1);\r\n var singleInst = $(this).data('croppie');\r\n\r\n if (opts === 'get') {\r\n return singleInst.get();\r\n }\r\n else if (opts === 'result') {\r\n return singleInst.result.apply(singleInst, args);\r\n }\r\n else if (opts === 'bind') {\r\n return singleInst.bind.apply(singleInst, args);\r\n }\r\n\r\n return this.each(function () {\r\n var i = $(this).data('croppie');\r\n if (!i) return;\r\n\r\n var method = i[opts];\r\n if ($.isFunction(method)) {\r\n method.apply(i, args);\r\n if (opts === 'destroy') {\r\n $(this).removeData('croppie');\r\n }\r\n }\r\n else {\r\n throw 'Croppie ' + opts + ' method not found';\r\n }\r\n });\r\n }\r\n else {\r\n return this.each(function () {\r\n var i = new Croppie(this, opts);\r\n i.$ = $;\r\n $(this).data('croppie', i);\r\n });\r\n }\r\n };\r\n }\r\n\r\n function Croppie(element, opts) {\r\n if (element.className.indexOf('croppie-container') > -1) {\r\n throw new Error(\"Croppie: Can't initialize croppie more than once\");\r\n }\r\n this.element = element;\r\n this.options = deepExtend(clone(Croppie.defaults), opts);\r\n\r\n if (this.element.tagName.toLowerCase() === 'img') {\r\n var origImage = this.element;\r\n addClass(origImage, 'cr-original-image');\r\n setAttributes(origImage, {'aria-hidden' : 'true', 'alt' : '' });\r\n var replacementDiv = document.createElement('div');\r\n this.element.parentNode.appendChild(replacementDiv);\r\n replacementDiv.appendChild(origImage);\r\n this.element = replacementDiv;\r\n this.options.url = this.options.url || origImage.src;\r\n }\r\n\r\n _create.call(this);\r\n if (this.options.url) {\r\n var bindOpts = {\r\n url: this.options.url,\r\n points: this.options.points\r\n };\r\n delete this.options['url'];\r\n delete this.options['points'];\r\n _bind.call(this, bindOpts);\r\n }\r\n }\r\n\r\n Croppie.defaults = {\r\n viewport: {\r\n width: 100,\r\n height: 100,\r\n type: 'square'\r\n },\r\n boundary: { },\r\n orientationControls: {\r\n enabled: true,\r\n leftClass: '',\r\n rightClass: ''\r\n },\r\n resizeControls: {\r\n width: true,\r\n height: true\r\n },\r\n customClass: '',\r\n showZoomer: true,\r\n enableZoom: true,\r\n enableResize: false,\r\n mouseWheelZoom: true,\r\n enableExif: false,\r\n enforceBoundary: true,\r\n enableOrientation: false,\r\n enableKeyMovement: true,\r\n update: function () { }\r\n };\r\n\r\n Croppie.globals = {\r\n translate: 'translate3d'\r\n };\r\n\r\n deepExtend(Croppie.prototype, {\r\n bind: function (options, cb) {\r\n return _bind.call(this, options, cb);\r\n },\r\n get: function () {\r\n var data = _get.call(this);\r\n var points = data.points;\r\n if (this.options.relative) {\r\n points[0] /= this.elements.img.naturalWidth / 100;\r\n points[1] /= this.elements.img.naturalHeight / 100;\r\n points[2] /= this.elements.img.naturalWidth / 100;\r\n points[3] /= this.elements.img.naturalHeight / 100;\r\n }\r\n return data;\r\n },\r\n result: function (type) {\r\n return _result.call(this, type);\r\n },\r\n refresh: function () {\r\n return _refresh.call(this);\r\n },\r\n setZoom: function (v) {\r\n _setZoomerVal.call(this, v);\r\n dispatchChange(this.elements.zoomer);\r\n },\r\n rotate: function (deg) {\r\n _rotate.call(this, deg);\r\n },\r\n destroy: function () {\r\n return _destroy.call(this);\r\n }\r\n });\r\n return Croppie;\r\n}));\r\n"],"names":["self","Promise","a","b","apply","arguments","c","this","TypeError","_state","_value","_deferreds","i","e","f","d","push","k","onFulfilled","onRejected","reject","resolve","then","g","call","length","h","j","setTimeout","setImmediate","l","Array","isArray","Object","prototype","toString","all","slice","constructor","race","_setImmediateFn","module","exports","window","CustomEvent","event","params","bubbles","cancelable","detail","undefined","evt","document","createEvent","initCustomEvent","Event","HTMLCanvasElement","toBlob","defineProperty","value","callback","type","quality","binStr","atob","toDataURL","split","len","arr","Uint8Array","charCodeAt","Blob","CSS_TRANS_ORG","CSS_TRANSFORM","CSS_USERSELECT","cssPrefixes","emptyStyles","createElement","style","EXIF_NORM","EXIF_FLIP","vendorPrefix","prop","capProp","toUpperCase","deepExtend","destination","source","property","clone","object","dispatchChange","element","initEvent","dispatchEvent","fireEvent","css","el","styles","val","tmp","addClass","classList","add","className","setAttributes","attrs","key","setAttribute","num","v","parseInt","naturalImageDimensions","img","ornt","w","naturalWidth","naturalHeight","orient","getExifOrientation","x","width","height","TRANSLATE_OPTS","suffix","Transform","y","scale","parseFloat","parse","indexOf","fromMatrix","fromString","vals","substring","values","translate","Croppie","globals","TransformOrigin","exifdata","Orientation","drawCanvas","canvas","orientation","ctx","getContext","save","rotate","Math","PI","drawImage","restore","_create","boundary","viewport","overlay","bw","bh","customViewportClass","options","useCanvas","enableOrientation","_hasExif","data","elements","preview","isNaN","appendChild","customClass","_initDraggable","enableZoom","_initializeZoom","enableResize","_initializeResize","enableExif","EXIF","direction","originalX","originalY","maxWidth","maxHeight","vr","hr","wrap","isDragging","mouseDown","ev","button","preventDefault","overlayRect","getBoundingClientRect","pageX","pageY","currentTarget","touches","addEventListener","mouseMove","mouseUp","body","deltaX","deltaY","newHeight","newWidth","_updateOverlay","_updateZoomLimits","_updateCenterPoint","_triggerUpdate","removeEventListener","resizeControls","_setZoomerVal","z","zoomer","fix","max","min","zoomerWrap","change","_onZoom","origin","viewportRect","transform","scroll","delta","targetZoom","mouseWheelZoom","ctrlKey","wheelDelta","_currentZoom","step","display","showZoomer","ui","vpRect","applyCss","transCss","enforceBoundary","boundaries","_getVirtualBoundaries","transBoundaries","oBoundaries","maxX","minX","maxY","minY","_debouncedOverlay","vpWidth","vpHeight","centerFromBoundaryX","clientWidth","centerFromBoundaryY","clientHeight","imgRect","curImgWidth","curImgHeight","halfWidth","halfHeight","originMinX","originMinY","vpData","pc","top","left","center","adj","cx","cy","tx","ty","newCss","originalDistance","assignTransformCoordinates","bottom","right","toggleGrabState","touch1","touch2","dist","sqrt","zoom","shiftKey","keyCode","enableKeyMovement","movement","parseKeyDown","keyMove","setZoom","boundRect","imgData","func","wait","immediate","timeout","context","args","later","callNow","clearTimeout","get","_isVisible","update","$","Prototype","trigger","offsetHeight","offsetWidth","_updatePropertiesFromImage","cssReset","transformReset","originReset","bound","_originalImageWidth","_originalImageHeight","points","_bindPoints","_centerImage","initial","initialZoom","defaultInitialZoom","minW","minH","minZoom","maxZoom","boundaryData","boundZoom","pointsWidth","vpOffset","originTop","originLeft","transformTop","transformLeft","imgDim","vpDim","boundDim","vpLeft","vpTop","_transferImageToCanvas","customOrientation","clearRect","_getCanvas","circle","canvasWidth","outputWidth","canvasHeight","outputHeight","backgroundColor","fillStyle","fillRect","sx","sy","sWidth","sHeight","dx","dy","dWidth","dHeight","abs","globalCompositeOperation","beginPath","arc","closePath","fill","_getHtmlResult","div","src","url","_getBase64Result","format","_getBlobResult","blob","_replaceImage","parentNode","forEach","replaceChild","_bind","cb","hasExif","doExif","Image","opacity","_resolve","removeAttribute","match","onload","getData","onerror","loadImage","relative","natDim","rect","aspectRatio","x0","y0","x1","y1","map","p","decimalPoints","toFixed","_get","widthDiff","heightDiff","x2","y2","Infinity","Number","NEGATIVE_INFINITY","RESULT_DEFAULTS","RESULT_FORMATS","_result","opts","resultType","size","ratio","toLowerCase","_refresh","_rotate","deg","index","offset","oldHeight","oldWidth","_destroy","removeChild","remove","replace","jQuery","fn","croppie","singleInst","result","bind","each","method","isFunction","removeData","Error","defaults","tagName","origImage","replacementDiv","bindOpts","orientationControls","enabled","leftClass","rightClass","refresh","destroy"],"sourceRoot":""} |