{ "version": 3, "sources": ["../../../node_modules/compressorjs/dist/compressor.js", "../javascripts/actions/media.ts"], "sourcesContent": ["/*!\n * Compressor.js v1.2.1\n * https://fengyuanchen.github.io/compressorjs\n *\n * Copyright 2018-present Chen Fengyuan\n * Released under the MIT license\n *\n * Date: 2023-02-28T14:09:41.732Z\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Compressor = factory());\n})(this, (function () { 'use strict';\n\n function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n }\n function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n }\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n }\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n }\n function _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n }\n function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n }\n function _toPrimitive(input, hint) {\n if (typeof input !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (typeof res !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n }\n function _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return typeof key === \"symbol\" ? key : String(key);\n }\n\n var canvasToBlob = {exports: {}};\n\n /*\n * JavaScript Canvas to Blob\n * https://github.com/blueimp/JavaScript-Canvas-to-Blob\n *\n * Copyright 2012, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on stackoverflow user Stoive's code snippet:\n * http://stackoverflow.com/q/4998908\n */\n (function (module) {\n if (typeof window === 'undefined') {\n return;\n }\n (function (window) {\n\n var CanvasPrototype = window.HTMLCanvasElement && window.HTMLCanvasElement.prototype;\n var hasBlobConstructor = window.Blob && function () {\n try {\n return Boolean(new Blob());\n } catch (e) {\n return false;\n }\n }();\n var hasArrayBufferViewSupport = hasBlobConstructor && window.Uint8Array && function () {\n try {\n return new Blob([new Uint8Array(100)]).size === 100;\n } catch (e) {\n return false;\n }\n }();\n var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder;\n var dataURIPattern = /^data:((.*?)(;charset=.*?)?)(;base64)?,/;\n var dataURLtoBlob = (hasBlobConstructor || BlobBuilder) && window.atob && window.ArrayBuffer && window.Uint8Array && function (dataURI) {\n var matches, mediaType, isBase64, dataString, byteString, arrayBuffer, intArray, i, bb;\n // Parse the dataURI components as per RFC 2397\n matches = dataURI.match(dataURIPattern);\n if (!matches) {\n throw new Error('invalid data URI');\n }\n // Default to text/plain;charset=US-ASCII\n mediaType = matches[2] ? matches[1] : 'text/plain' + (matches[3] || ';charset=US-ASCII');\n isBase64 = !!matches[4];\n dataString = dataURI.slice(matches[0].length);\n if (isBase64) {\n // Convert base64 to raw binary data held in a string:\n byteString = atob(dataString);\n } else {\n // Convert base64/URLEncoded data component to raw binary:\n byteString = decodeURIComponent(dataString);\n }\n // Write the bytes of the string to an ArrayBuffer:\n arrayBuffer = new ArrayBuffer(byteString.length);\n intArray = new Uint8Array(arrayBuffer);\n for (i = 0; i < byteString.length; i += 1) {\n intArray[i] = byteString.charCodeAt(i);\n }\n // Write the ArrayBuffer (or ArrayBufferView) to a blob:\n if (hasBlobConstructor) {\n return new Blob([hasArrayBufferViewSupport ? intArray : arrayBuffer], {\n type: mediaType\n });\n }\n bb = new BlobBuilder();\n bb.append(arrayBuffer);\n return bb.getBlob(mediaType);\n };\n if (window.HTMLCanvasElement && !CanvasPrototype.toBlob) {\n if (CanvasPrototype.mozGetAsFile) {\n CanvasPrototype.toBlob = function (callback, type, quality) {\n var self = this;\n setTimeout(function () {\n if (quality && CanvasPrototype.toDataURL && dataURLtoBlob) {\n callback(dataURLtoBlob(self.toDataURL(type, quality)));\n } else {\n callback(self.mozGetAsFile('blob', type));\n }\n });\n };\n } else if (CanvasPrototype.toDataURL && dataURLtoBlob) {\n if (CanvasPrototype.msToBlob) {\n CanvasPrototype.toBlob = function (callback, type, quality) {\n var self = this;\n setTimeout(function () {\n if ((type && type !== 'image/png' || quality) && CanvasPrototype.toDataURL && dataURLtoBlob) {\n callback(dataURLtoBlob(self.toDataURL(type, quality)));\n } else {\n callback(self.msToBlob(type));\n }\n });\n };\n } else {\n CanvasPrototype.toBlob = function (callback, type, quality) {\n var self = this;\n setTimeout(function () {\n callback(dataURLtoBlob(self.toDataURL(type, quality)));\n });\n };\n }\n }\n }\n if (module.exports) {\n module.exports = dataURLtoBlob;\n } else {\n window.dataURLtoBlob = dataURLtoBlob;\n }\n })(window);\n })(canvasToBlob);\n var toBlob = canvasToBlob.exports;\n\n var isBlob = function isBlob(value) {\n if (typeof Blob === 'undefined') {\n return false;\n }\n return value instanceof Blob || Object.prototype.toString.call(value) === '[object Blob]';\n };\n\n var DEFAULTS = {\n /**\n * Indicates if output the original image instead of the compressed one\n * when the size of the compressed image is greater than the original one's\n * @type {boolean}\n */\n strict: true,\n /**\n * Indicates if read the image's Exif Orientation information,\n * and then rotate or flip the image automatically.\n * @type {boolean}\n */\n checkOrientation: true,\n /**\n * Indicates if retain the image's Exif information after compressed.\n * @type {boolean}\n */\n retainExif: false,\n /**\n * The max width of the output image.\n * @type {number}\n */\n maxWidth: Infinity,\n /**\n * The max height of the output image.\n * @type {number}\n */\n maxHeight: Infinity,\n /**\n * The min width of the output image.\n * @type {number}\n */\n minWidth: 0,\n /**\n * The min height of the output image.\n * @type {number}\n */\n minHeight: 0,\n /**\n * The width of the output image.\n * If not specified, the natural width of the source image will be used.\n * @type {number}\n */\n width: undefined,\n /**\n * The height of the output image.\n * If not specified, the natural height of the source image will be used.\n * @type {number}\n */\n height: undefined,\n /**\n * Sets how the size of the image should be resized to the container\n * specified by the `width` and `height` options.\n * @type {string}\n */\n resize: 'none',\n /**\n * The quality of the output image.\n * It must be a number between `0` and `1`,\n * and only available for `image/jpeg` and `image/webp` images.\n * Check out {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob canvas.toBlob}.\n * @type {number}\n */\n quality: 0.8,\n /**\n * The mime type of the output image.\n * By default, the original mime type of the source image file will be used.\n * @type {string}\n */\n mimeType: 'auto',\n /**\n * Files whose file type is included in this list,\n * and whose file size exceeds the `convertSize` value will be converted to JPEGs.\n * @type {string\uFF5CArray}\n */\n convertTypes: ['image/png'],\n /**\n * PNG files over this size (5 MB by default) will be converted to JPEGs.\n * To disable this, just set the value to `Infinity`.\n * @type {number}\n */\n convertSize: 5000000,\n /**\n * The hook function to execute before draw the image into the canvas for compression.\n * @type {Function}\n * @param {CanvasRenderingContext2D} context - The 2d rendering context of the canvas.\n * @param {HTMLCanvasElement} canvas - The canvas for compression.\n * @example\n * function (context, canvas) {\n * context.fillStyle = '#fff';\n * }\n */\n beforeDraw: null,\n /**\n * The hook function to execute after drew the image into the canvas for compression.\n * @type {Function}\n * @param {CanvasRenderingContext2D} context - The 2d rendering context of the canvas.\n * @param {HTMLCanvasElement} canvas - The canvas for compression.\n * @example\n * function (context, canvas) {\n * context.filter = 'grayscale(100%)';\n * }\n */\n drew: null,\n /**\n * The hook function to execute when success to compress the image.\n * @type {Function}\n * @param {File} file - The compressed image File object.\n * @example\n * function (file) {\n * console.log(file);\n * }\n */\n success: null,\n /**\n * The hook function to execute when fail to compress the image.\n * @type {Function}\n * @param {Error} err - An Error object.\n * @example\n * function (err) {\n * console.log(err.message);\n * }\n */\n error: null\n };\n\n var IS_BROWSER = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n var WINDOW = IS_BROWSER ? window : {};\n\n /**\n * Check if the given value is a positive number.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is a positive number, else `false`.\n */\n var isPositiveNumber = function isPositiveNumber(value) {\n return value > 0 && value < Infinity;\n };\n var slice = Array.prototype.slice;\n\n /**\n * Convert array-like or iterable object to an array.\n * @param {*} value - The value to convert.\n * @returns {Array} Returns a new array.\n */\n function toArray(value) {\n return Array.from ? Array.from(value) : slice.call(value);\n }\n var REGEXP_IMAGE_TYPE = /^image\\/.+$/;\n\n /**\n * Check if the given value is a mime type of image.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given is a mime type of image, else `false`.\n */\n function isImageType(value) {\n return REGEXP_IMAGE_TYPE.test(value);\n }\n\n /**\n * Convert image type to extension.\n * @param {string} value - The image type to convert.\n * @returns {boolean} Returns the image extension.\n */\n function imageTypeToExtension(value) {\n var extension = isImageType(value) ? value.substr(6) : '';\n if (extension === 'jpeg') {\n extension = 'jpg';\n }\n return \".\".concat(extension);\n }\n var fromCharCode = String.fromCharCode;\n\n /**\n * Get string from char code in data view.\n * @param {DataView} dataView - The data view for read.\n * @param {number} start - The start index.\n * @param {number} length - The read length.\n * @returns {string} The read result.\n */\n function getStringFromCharCode(dataView, start, length) {\n var str = '';\n var i;\n length += start;\n for (i = start; i < length; i += 1) {\n str += fromCharCode(dataView.getUint8(i));\n }\n return str;\n }\n var btoa = WINDOW.btoa;\n\n /**\n * Transform array buffer to Data URL.\n * @param {ArrayBuffer} arrayBuffer - The array buffer to transform.\n * @param {string} mimeType - The mime type of the Data URL.\n * @returns {string} The result Data URL.\n */\n function arrayBufferToDataURL(arrayBuffer, mimeType) {\n var chunks = [];\n var chunkSize = 8192;\n var uint8 = new Uint8Array(arrayBuffer);\n while (uint8.length > 0) {\n // XXX: Babel's `toConsumableArray` helper will throw error in IE or Safari 9\n // eslint-disable-next-line prefer-spread\n chunks.push(fromCharCode.apply(null, toArray(uint8.subarray(0, chunkSize))));\n uint8 = uint8.subarray(chunkSize);\n }\n return \"data:\".concat(mimeType, \";base64,\").concat(btoa(chunks.join('')));\n }\n\n /**\n * Get orientation value from given array buffer.\n * @param {ArrayBuffer} arrayBuffer - The array buffer to read.\n * @returns {number} The read orientation value.\n */\n function resetAndGetOrientation(arrayBuffer) {\n var dataView = new DataView(arrayBuffer);\n var orientation;\n\n // Ignores range error when the image does not have correct Exif information\n try {\n var littleEndian;\n var app1Start;\n var ifdStart;\n\n // Only handle JPEG image (start by 0xFFD8)\n if (dataView.getUint8(0) === 0xFF && dataView.getUint8(1) === 0xD8) {\n var length = dataView.byteLength;\n var offset = 2;\n while (offset + 1 < length) {\n if (dataView.getUint8(offset) === 0xFF && dataView.getUint8(offset + 1) === 0xE1) {\n app1Start = offset;\n break;\n }\n offset += 1;\n }\n }\n if (app1Start) {\n var exifIDCode = app1Start + 4;\n var tiffOffset = app1Start + 10;\n if (getStringFromCharCode(dataView, exifIDCode, 4) === 'Exif') {\n var endianness = dataView.getUint16(tiffOffset);\n littleEndian = endianness === 0x4949;\n if (littleEndian || endianness === 0x4D4D /* bigEndian */) {\n if (dataView.getUint16(tiffOffset + 2, littleEndian) === 0x002A) {\n var firstIFDOffset = dataView.getUint32(tiffOffset + 4, littleEndian);\n if (firstIFDOffset >= 0x00000008) {\n ifdStart = tiffOffset + firstIFDOffset;\n }\n }\n }\n }\n }\n if (ifdStart) {\n var _length = dataView.getUint16(ifdStart, littleEndian);\n var _offset;\n var i;\n for (i = 0; i < _length; i += 1) {\n _offset = ifdStart + i * 12 + 2;\n if (dataView.getUint16(_offset, littleEndian) === 0x0112 /* Orientation */) {\n // 8 is the offset of the current tag's value\n _offset += 8;\n\n // Get the original orientation value\n orientation = dataView.getUint16(_offset, littleEndian);\n\n // Override the orientation with its default value\n dataView.setUint16(_offset, 1, littleEndian);\n break;\n }\n }\n }\n } catch (e) {\n orientation = 1;\n }\n return orientation;\n }\n\n /**\n * Parse Exif Orientation value.\n * @param {number} orientation - The orientation to parse.\n * @returns {Object} The parsed result.\n */\n function parseOrientation(orientation) {\n var rotate = 0;\n var scaleX = 1;\n var scaleY = 1;\n switch (orientation) {\n // Flip horizontal\n case 2:\n scaleX = -1;\n break;\n\n // Rotate left 180\u00B0\n case 3:\n rotate = -180;\n break;\n\n // Flip vertical\n case 4:\n scaleY = -1;\n break;\n\n // Flip vertical and rotate right 90\u00B0\n case 5:\n rotate = 90;\n scaleY = -1;\n break;\n\n // Rotate right 90\u00B0\n case 6:\n rotate = 90;\n break;\n\n // Flip horizontal and rotate right 90\u00B0\n case 7:\n rotate = 90;\n scaleX = -1;\n break;\n\n // Rotate left 90\u00B0\n case 8:\n rotate = -90;\n break;\n }\n return {\n rotate: rotate,\n scaleX: scaleX,\n scaleY: scaleY\n };\n }\n var REGEXP_DECIMALS = /\\.\\d*(?:0|9){12}\\d*$/;\n\n /**\n * Normalize decimal number.\n * Check out {@link https://0.30000000000000004.com/}\n * @param {number} value - The value to normalize.\n * @param {number} [times=100000000000] - The times for normalizing.\n * @returns {number} Returns the normalized number.\n */\n function normalizeDecimalNumber(value) {\n var times = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100000000000;\n return REGEXP_DECIMALS.test(value) ? Math.round(value * times) / times : value;\n }\n\n /**\n * Get the max sizes in a rectangle under the given aspect ratio.\n * @param {Object} data - The original sizes.\n * @param {string} [type='contain'] - The adjust type.\n * @returns {Object} The result sizes.\n */\n function getAdjustedSizes(_ref) {\n var aspectRatio = _ref.aspectRatio,\n height = _ref.height,\n width = _ref.width;\n var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'none';\n var isValidWidth = isPositiveNumber(width);\n var isValidHeight = isPositiveNumber(height);\n if (isValidWidth && isValidHeight) {\n var adjustedWidth = height * aspectRatio;\n if ((type === 'contain' || type === 'none') && adjustedWidth > width || type === 'cover' && adjustedWidth < width) {\n height = width / aspectRatio;\n } else {\n width = height * aspectRatio;\n }\n } else if (isValidWidth) {\n height = width / aspectRatio;\n } else if (isValidHeight) {\n width = height * aspectRatio;\n }\n return {\n width: width,\n height: height\n };\n }\n\n /**\n * Get Exif information from the given array buffer.\n * @param {ArrayBuffer} arrayBuffer - The array buffer to read.\n * @returns {Array} The read Exif information.\n */\n function getExif(arrayBuffer) {\n var array = toArray(new Uint8Array(arrayBuffer));\n var length = array.length;\n var segments = [];\n var start = 0;\n while (start + 3 < length) {\n var value = array[start];\n var next = array[start + 1];\n\n // SOS (Start of Scan)\n if (value === 0xFF && next === 0xDA) {\n break;\n }\n\n // SOI (Start of Image)\n if (value === 0xFF && next === 0xD8) {\n start += 2;\n } else {\n var offset = array[start + 2] * 256 + array[start + 3];\n var end = start + offset + 2;\n var segment = array.slice(start, end);\n segments.push(segment);\n start = end;\n }\n }\n return segments.reduce(function (exifArray, current) {\n if (current[0] === 0xFF && current[1] === 0xE1) {\n return exifArray.concat(current);\n }\n return exifArray;\n }, []);\n }\n\n /**\n * Insert Exif information into the given array buffer.\n * @param {ArrayBuffer} arrayBuffer - The array buffer to transform.\n * @param {Array} exifArray - The Exif information to insert.\n * @returns {ArrayBuffer} The transformed array buffer.\n */\n function insertExif(arrayBuffer, exifArray) {\n var array = toArray(new Uint8Array(arrayBuffer));\n if (array[2] !== 0xFF || array[3] !== 0xE0) {\n return arrayBuffer;\n }\n var app0Length = array[4] * 256 + array[5];\n var newArrayBuffer = [0xFF, 0xD8].concat(exifArray, array.slice(4 + app0Length));\n return new Uint8Array(newArrayBuffer);\n }\n\n var ArrayBuffer$1 = WINDOW.ArrayBuffer,\n FileReader = WINDOW.FileReader;\n var URL = WINDOW.URL || WINDOW.webkitURL;\n var REGEXP_EXTENSION = /\\.\\w+$/;\n var AnotherCompressor = WINDOW.Compressor;\n\n /**\n * Creates a new image compressor.\n * @class\n */\n var Compressor = /*#__PURE__*/function () {\n /**\n * The constructor of Compressor.\n * @param {File|Blob} file - The target image file for compressing.\n * @param {Object} [options] - The options for compressing.\n */\n function Compressor(file, options) {\n _classCallCheck(this, Compressor);\n this.file = file;\n this.exif = [];\n this.image = new Image();\n this.options = _objectSpread2(_objectSpread2({}, DEFAULTS), options);\n this.aborted = false;\n this.result = null;\n this.init();\n }\n _createClass(Compressor, [{\n key: \"init\",\n value: function init() {\n var _this = this;\n var file = this.file,\n options = this.options;\n if (!isBlob(file)) {\n this.fail(new Error('The first argument must be a File or Blob object.'));\n return;\n }\n var mimeType = file.type;\n if (!isImageType(mimeType)) {\n this.fail(new Error('The first argument must be an image File or Blob object.'));\n return;\n }\n if (!URL || !FileReader) {\n this.fail(new Error('The current browser does not support image compression.'));\n return;\n }\n if (!ArrayBuffer$1) {\n options.checkOrientation = false;\n options.retainExif = false;\n }\n var isJPEGImage = mimeType === 'image/jpeg';\n var checkOrientation = isJPEGImage && options.checkOrientation;\n var retainExif = isJPEGImage && options.retainExif;\n if (URL && !checkOrientation && !retainExif) {\n this.load({\n url: URL.createObjectURL(file)\n });\n } else {\n var reader = new FileReader();\n this.reader = reader;\n reader.onload = function (_ref) {\n var target = _ref.target;\n var result = target.result;\n var data = {};\n var orientation = 1;\n if (checkOrientation) {\n // Reset the orientation value to its default value 1\n // as some iOS browsers will render image with its orientation\n orientation = resetAndGetOrientation(result);\n if (orientation > 1) {\n _extends(data, parseOrientation(orientation));\n }\n }\n if (retainExif) {\n _this.exif = getExif(result);\n }\n if (checkOrientation || retainExif) {\n if (!URL\n\n // Generate a new URL with the default orientation value 1.\n || orientation > 1) {\n data.url = arrayBufferToDataURL(result, mimeType);\n } else {\n data.url = URL.createObjectURL(file);\n }\n } else {\n data.url = result;\n }\n _this.load(data);\n };\n reader.onabort = function () {\n _this.fail(new Error('Aborted to read the image with FileReader.'));\n };\n reader.onerror = function () {\n _this.fail(new Error('Failed to read the image with FileReader.'));\n };\n reader.onloadend = function () {\n _this.reader = null;\n };\n if (checkOrientation || retainExif) {\n reader.readAsArrayBuffer(file);\n } else {\n reader.readAsDataURL(file);\n }\n }\n }\n }, {\n key: \"load\",\n value: function load(data) {\n var _this2 = this;\n var file = this.file,\n image = this.image;\n image.onload = function () {\n _this2.draw(_objectSpread2(_objectSpread2({}, data), {}, {\n naturalWidth: image.naturalWidth,\n naturalHeight: image.naturalHeight\n }));\n };\n image.onabort = function () {\n _this2.fail(new Error('Aborted to load the image.'));\n };\n image.onerror = function () {\n _this2.fail(new Error('Failed to load the image.'));\n };\n\n // Match all browsers that use WebKit as the layout engine in iOS devices,\n // such as Safari for iOS, Chrome for iOS, and in-app browsers.\n if (WINDOW.navigator && /(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(WINDOW.navigator.userAgent)) {\n // Fix the `The operation is insecure` error (#57)\n image.crossOrigin = 'anonymous';\n }\n image.alt = file.name;\n image.src = data.url;\n }\n }, {\n key: \"draw\",\n value: function draw(_ref2) {\n var _this3 = this;\n var naturalWidth = _ref2.naturalWidth,\n naturalHeight = _ref2.naturalHeight,\n _ref2$rotate = _ref2.rotate,\n rotate = _ref2$rotate === void 0 ? 0 : _ref2$rotate,\n _ref2$scaleX = _ref2.scaleX,\n scaleX = _ref2$scaleX === void 0 ? 1 : _ref2$scaleX,\n _ref2$scaleY = _ref2.scaleY,\n scaleY = _ref2$scaleY === void 0 ? 1 : _ref2$scaleY;\n var file = this.file,\n image = this.image,\n options = this.options;\n var canvas = document.createElement('canvas');\n var context = canvas.getContext('2d');\n var is90DegreesRotated = Math.abs(rotate) % 180 === 90;\n var resizable = (options.resize === 'contain' || options.resize === 'cover') && isPositiveNumber(options.width) && isPositiveNumber(options.height);\n var maxWidth = Math.max(options.maxWidth, 0) || Infinity;\n var maxHeight = Math.max(options.maxHeight, 0) || Infinity;\n var minWidth = Math.max(options.minWidth, 0) || 0;\n var minHeight = Math.max(options.minHeight, 0) || 0;\n var aspectRatio = naturalWidth / naturalHeight;\n var width = options.width,\n height = options.height;\n if (is90DegreesRotated) {\n var _ref3 = [maxHeight, maxWidth];\n maxWidth = _ref3[0];\n maxHeight = _ref3[1];\n var _ref4 = [minHeight, minWidth];\n minWidth = _ref4[0];\n minHeight = _ref4[1];\n var _ref5 = [height, width];\n width = _ref5[0];\n height = _ref5[1];\n }\n if (resizable) {\n aspectRatio = width / height;\n }\n var _getAdjustedSizes = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: maxWidth,\n height: maxHeight\n }, 'contain');\n maxWidth = _getAdjustedSizes.width;\n maxHeight = _getAdjustedSizes.height;\n var _getAdjustedSizes2 = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: minWidth,\n height: minHeight\n }, 'cover');\n minWidth = _getAdjustedSizes2.width;\n minHeight = _getAdjustedSizes2.height;\n if (resizable) {\n var _getAdjustedSizes3 = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: width,\n height: height\n }, options.resize);\n width = _getAdjustedSizes3.width;\n height = _getAdjustedSizes3.height;\n } else {\n var _getAdjustedSizes4 = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: width,\n height: height\n });\n var _getAdjustedSizes4$wi = _getAdjustedSizes4.width;\n width = _getAdjustedSizes4$wi === void 0 ? naturalWidth : _getAdjustedSizes4$wi;\n var _getAdjustedSizes4$he = _getAdjustedSizes4.height;\n height = _getAdjustedSizes4$he === void 0 ? naturalHeight : _getAdjustedSizes4$he;\n }\n width = Math.floor(normalizeDecimalNumber(Math.min(Math.max(width, minWidth), maxWidth)));\n height = Math.floor(normalizeDecimalNumber(Math.min(Math.max(height, minHeight), maxHeight)));\n var destX = -width / 2;\n var destY = -height / 2;\n var destWidth = width;\n var destHeight = height;\n var params = [];\n if (resizable) {\n var srcX = 0;\n var srcY = 0;\n var srcWidth = naturalWidth;\n var srcHeight = naturalHeight;\n var _getAdjustedSizes5 = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: naturalWidth,\n height: naturalHeight\n }, {\n contain: 'cover',\n cover: 'contain'\n }[options.resize]);\n srcWidth = _getAdjustedSizes5.width;\n srcHeight = _getAdjustedSizes5.height;\n srcX = (naturalWidth - srcWidth) / 2;\n srcY = (naturalHeight - srcHeight) / 2;\n params.push(srcX, srcY, srcWidth, srcHeight);\n }\n params.push(destX, destY, destWidth, destHeight);\n if (is90DegreesRotated) {\n var _ref6 = [height, width];\n width = _ref6[0];\n height = _ref6[1];\n }\n canvas.width = width;\n canvas.height = height;\n if (!isImageType(options.mimeType)) {\n options.mimeType = file.type;\n }\n var fillStyle = 'transparent';\n\n // Converts PNG files over the `convertSize` to JPEGs.\n if (file.size > options.convertSize && options.convertTypes.indexOf(options.mimeType) >= 0) {\n options.mimeType = 'image/jpeg';\n }\n var isJPEGImage = options.mimeType === 'image/jpeg';\n if (isJPEGImage) {\n fillStyle = '#fff';\n }\n\n // Override the default fill color (#000, black)\n context.fillStyle = fillStyle;\n context.fillRect(0, 0, width, height);\n if (options.beforeDraw) {\n options.beforeDraw.call(this, context, canvas);\n }\n if (this.aborted) {\n return;\n }\n context.save();\n context.translate(width / 2, height / 2);\n context.rotate(rotate * Math.PI / 180);\n context.scale(scaleX, scaleY);\n context.drawImage.apply(context, [image].concat(params));\n context.restore();\n if (options.drew) {\n options.drew.call(this, context, canvas);\n }\n if (this.aborted) {\n return;\n }\n var callback = function callback(blob) {\n if (!_this3.aborted) {\n var done = function done(result) {\n return _this3.done({\n naturalWidth: naturalWidth,\n naturalHeight: naturalHeight,\n result: result\n });\n };\n if (blob && isJPEGImage && options.retainExif && _this3.exif && _this3.exif.length > 0) {\n var next = function next(arrayBuffer) {\n return done(toBlob(arrayBufferToDataURL(insertExif(arrayBuffer, _this3.exif), options.mimeType)));\n };\n if (blob.arrayBuffer) {\n blob.arrayBuffer().then(next).catch(function () {\n _this3.fail(new Error('Failed to read the compressed image with Blob.arrayBuffer().'));\n });\n } else {\n var reader = new FileReader();\n _this3.reader = reader;\n reader.onload = function (_ref7) {\n var target = _ref7.target;\n next(target.result);\n };\n reader.onabort = function () {\n _this3.fail(new Error('Aborted to read the compressed image with FileReader.'));\n };\n reader.onerror = function () {\n _this3.fail(new Error('Failed to read the compressed image with FileReader.'));\n };\n reader.onloadend = function () {\n _this3.reader = null;\n };\n reader.readAsArrayBuffer(blob);\n }\n } else {\n done(blob);\n }\n }\n };\n if (canvas.toBlob) {\n canvas.toBlob(callback, options.mimeType, options.quality);\n } else {\n callback(toBlob(canvas.toDataURL(options.mimeType, options.quality)));\n }\n }\n }, {\n key: \"done\",\n value: function done(_ref8) {\n var naturalWidth = _ref8.naturalWidth,\n naturalHeight = _ref8.naturalHeight,\n result = _ref8.result;\n var file = this.file,\n image = this.image,\n options = this.options;\n if (URL && image.src.indexOf('blob:') === 0) {\n URL.revokeObjectURL(image.src);\n }\n if (result) {\n // Returns original file if the result is greater than it and without size related options\n if (options.strict && !options.retainExif && result.size > file.size && options.mimeType === file.type && !(options.width > naturalWidth || options.height > naturalHeight || options.minWidth > naturalWidth || options.minHeight > naturalHeight || options.maxWidth < naturalWidth || options.maxHeight < naturalHeight)) {\n result = file;\n } else {\n var date = new Date();\n result.lastModified = date.getTime();\n result.lastModifiedDate = date;\n result.name = file.name;\n\n // Convert the extension to match its type\n if (result.name && result.type !== file.type) {\n result.name = result.name.replace(REGEXP_EXTENSION, imageTypeToExtension(result.type));\n }\n }\n } else {\n // Returns original file if the result is null in some cases.\n result = file;\n }\n this.result = result;\n if (options.success) {\n options.success.call(this, result);\n }\n }\n }, {\n key: \"fail\",\n value: function fail(err) {\n var options = this.options;\n if (options.error) {\n options.error.call(this, err);\n } else {\n throw err;\n }\n }\n }, {\n key: \"abort\",\n value: function abort() {\n if (!this.aborted) {\n this.aborted = true;\n if (this.reader) {\n this.reader.abort();\n } else if (!this.image.complete) {\n this.image.onload = null;\n this.image.onabort();\n } else {\n this.fail(new Error('The compression process has been aborted.'));\n }\n }\n }\n\n /**\n * Get the no conflict compressor class.\n * @returns {Compressor} The compressor class.\n */\n }], [{\n key: \"noConflict\",\n value: function noConflict() {\n window.Compressor = AnotherCompressor;\n return Compressor;\n }\n\n /**\n * Change the default options.\n * @param {Object} options - The new default options.\n */\n }, {\n key: \"setDefaults\",\n value: function setDefaults(options) {\n _extends(DEFAULTS, options);\n }\n }]);\n return Compressor;\n }();\n\n return Compressor;\n\n}));\n", "import type { Dispatch as ReduxDispatch } from '@reduxjs/toolkit';\nimport Compressor from 'compressorjs';\nimport { v4 as uuidv4 } from 'uuid';\nimport type { Media, MediaSortOrder, MediaUploadResponse } from '../@types/Media';\nimport type { BaseAction } from '../@types/actions';\nimport * as http from '../Http';\nimport {\n buildAuthorizedDeleteRequest,\n buildAuthorizedFormPostRequest,\n buildAuthorizedGetRequest,\n buildAuthorizedPutRequest,\n} from '../Http/requestTemplates';\nimport { get as getSettings } from '../helpers/settings';\nimport type { RootState } from '../reducers';\nimport type { MediaListItem } from '../routes/assignments/Components/media-selections';\nimport requestCache from '../utils/request-cache';\n\nexport const REQ_MEDIA_LIST = 'REQ/MEDIA_LIST';\nexport const RCV_MEDIA_LIST = 'RCV/MEDIA_LIST';\ntype REQ_MEDIA_LIST_TYPE = BaseAction;\ntype RCV_MEDIA_LIST_TYPE = BaseAction & {\n response: Media[];\n advertisement: { id: string };\n};\n\nexport const REQ_UPLOAD_MEDIA = 'REQ/UPLOAD_MEDIA';\nexport const RCV_UPLOAD_MEDIA = 'RCV/UPLOAD_MEDIA';\ntype REQ_UPLOAD_MEDIA_TYPE = BaseAction;\ntype RCV_UPLOAD_MEDIA_TYPE = BaseAction & {\n response: MediaUploadResponse;\n sortOrder: number;\n file: File;\n};\n\nexport const REQ_REMOVE_MEDIA = 'REQ/REMOVE_MEDIA';\nexport const RCV_REMOVE_MEDIA = 'RCV/REMOVE_MEDIA';\ntype REQ_REMOVE_MEDIA_TYPE = BaseAction;\ntype RCV_REMOVE_MEDIA_TYPE = BaseAction & {\n id: string;\n};\n\nexport const REQ_SORT_MEDIA = 'REQ/SORT_MEDIA';\nexport const RCV_SORT_MEDIA = 'RCV/SORT_MEDIA';\ntype REQ_SORT_MEDIA_TYPE = BaseAction;\ntype RCV_SORT_MEDIA_TYPE = BaseAction;\n\nexport const REQ_STAGE_SORT = 'REQ/STAGE_SORT';\ntype REQ_STAGE_SORT_TYPE = BaseAction & {\n media: MediaSortOrder[];\n};\n\nexport const REQ_STAGE_REMOVED = 'REQ/STAGE_REMOVED';\ntype REQ_STAGE_REMOVED_TYPE = BaseAction & {\n media: Media | MediaListItem;\n};\n\nexport const REQ_CLEAR_UPLOADS = 'REQ/CLEAR_MEDIA_UPLOADS';\ntype REQ_CLEAR_UPLOADS_TYPE = BaseAction;\n\nexport const REQUEST_FAILED = 'MEDIA/REQUEST_FAILED';\ntype REQUEST_FAILED_TYPE = BaseAction & {\n action:\n | typeof REQ_MEDIA_LIST\n | typeof REQ_UPLOAD_MEDIA\n | typeof REQ_REMOVE_MEDIA\n | typeof REQ_SORT_MEDIA;\n};\n\nexport type MEDIA_ACTION =\n | REQ_MEDIA_LIST_TYPE\n | RCV_MEDIA_LIST_TYPE\n | REQ_UPLOAD_MEDIA_TYPE\n | RCV_UPLOAD_MEDIA_TYPE\n | REQ_REMOVE_MEDIA_TYPE\n | RCV_REMOVE_MEDIA_TYPE\n | REQ_SORT_MEDIA_TYPE\n | RCV_SORT_MEDIA_TYPE\n | REQ_STAGE_SORT_TYPE\n | REQ_STAGE_REMOVED_TYPE\n | REQ_CLEAR_UPLOADS_TYPE\n | REQUEST_FAILED_TYPE;\n\ntype Dispatch = ReduxDispatch;\n\nconst queue: (() => void)[] = [];\nlet pendingQueue = false;\n\nconst executeNextQueue = () => {\n if (queue.length) {\n const m = queue.pop();\n if (m) {\n m();\n }\n } else if (pendingQueue) {\n pendingQueue = false;\n }\n};\n\nexport const all =\n (advertisement: { id: string }) => async (dispatch: Dispatch, getState: () => RootState) => {\n const { auth } = getState();\n if (!auth.token) return;\n\n try {\n dispatch({ type: REQ_MEDIA_LIST });\n const response = await http.httpJson(\n `${getSettings('mediaServiceUri')}/wayke-id/${advertisement.id}`,\n buildAuthorizedGetRequest(auth.token),\n );\n dispatch({\n type: RCV_MEDIA_LIST,\n response,\n advertisement,\n });\n } catch (_e) {\n dispatch({ type: REQUEST_FAILED, action: REQ_MEDIA_LIST });\n }\n };\n\nconst offileUploadResponseHandle = (file: File, sortOrder: number) => (dispatch: Dispatch) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = async () => {\n const base64 = reader.result as string;\n\n dispatch({\n type: RCV_UPLOAD_MEDIA,\n response: {\n fileId: uuidv4(),\n mediaId: uuidv4(),\n url: base64,\n },\n sortOrder,\n file,\n });\n };\n};\n\nconst offlineUpload = (file: File, sortOrder: number) => (dispatch: Dispatch) => {\n dispatch({ type: REQ_UPLOAD_MEDIA });\n new Compressor(file, {\n quality: 0.4,\n convertTypes: ['image/png', 'image/jpg', 'image/jpeg'],\n convertSize: 2000000,\n success(compressedFile) {\n offileUploadResponseHandle(compressedFile as File, sortOrder)(dispatch);\n },\n error() {\n offileUploadResponseHandle(file, sortOrder)(dispatch);\n },\n });\n};\n\nexport const upload =\n (file: File, sortOrder: number, purpose = 'Vehicle', allowOfflineUpload = false) =>\n async (dispatch: Dispatch, getState: () => RootState) => {\n const { auth } = getState();\n if (!auth.token) {\n if (allowOfflineUpload) {\n offlineUpload(file, sortOrder)(dispatch);\n }\n return;\n }\n\n const data = new FormData();\n\n data.append('file', file);\n data.append('Metadata.Purpose', purpose);\n data.append('Metadata.SortOrder', String(sortOrder));\n\n try {\n dispatch({ type: REQ_UPLOAD_MEDIA });\n const response = await http.httpJson(\n `${getSettings('mediaServiceUri')}/image`,\n buildAuthorizedFormPostRequest(auth.token, { content: data }),\n );\n\n dispatch({\n type: RCV_UPLOAD_MEDIA,\n response,\n sortOrder,\n file,\n });\n } catch (_e) {\n dispatch({ type: REQUEST_FAILED, action: REQ_UPLOAD_MEDIA });\n }\n };\n\nexport const remove =\n (media: Media | MediaListItem, silent = false) =>\n async (dispatch: Dispatch, getState: () => RootState) => {\n const key = `${REQ_REMOVE_MEDIA}/${media.id}`;\n const { auth } = getState();\n if (!auth.token || requestCache.isPending(key)) return;\n\n requestCache.isPending(key, true);\n\n try {\n dispatch({ type: REQ_REMOVE_MEDIA });\n await http.json(\n `${getSettings('mediaServiceUri')}/${media.id}`,\n buildAuthorizedDeleteRequest(auth.token),\n );\n dispatch({\n type: RCV_REMOVE_MEDIA,\n id: media.id,\n });\n } catch (_e) {\n if (silent) {\n dispatch({ type: RCV_REMOVE_MEDIA, id: media.id });\n } else {\n dispatch({ type: REQUEST_FAILED, action: REQ_REMOVE_MEDIA });\n }\n } finally {\n executeNextQueue();\n requestCache.isPending(key, false);\n }\n };\n\nexport const sort =\n (list: MediaSortOrder[]) => async (dispatch: Dispatch, getState: () => RootState) => {\n const { auth } = getState();\n if (!auth.token || requestCache.isPending(REQ_SORT_MEDIA)) return false;\n\n requestCache.isPending(REQ_SORT_MEDIA, true);\n\n try {\n dispatch({ type: REQ_SORT_MEDIA });\n await http.json(\n `${getSettings('mediaServiceUri')}/sort-order`,\n buildAuthorizedPutRequest(auth.token, { content: { sortOrder: list } }),\n );\n dispatch({\n type: RCV_SORT_MEDIA,\n });\n } catch (_e) {\n dispatch({ type: REQUEST_FAILED, action: REQ_SORT_MEDIA });\n } finally {\n executeNextQueue();\n requestCache.isPending(REQ_SORT_MEDIA, false);\n }\n };\n\nexport const clearUploads = () => (dispatch: Dispatch) => dispatch({ type: REQ_CLEAR_UPLOADS });\nexport const stageRemove = (media: Media | MediaListItem) => (dispatch: Dispatch) =>\n dispatch({ type: REQ_STAGE_REMOVED, media });\nexport const stageSort = (media: MediaSortOrder[]) => (dispatch: Dispatch) =>\n dispatch({ type: REQ_STAGE_SORT, media });\n"], "mappings": "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", "names": ["require_compressor", "__commonJSMin", "exports", "module", "global", "factory", "ownKeys", "object", "enumerableOnly", "keys", "symbols", "sym", "_objectSpread2", "target", "i", "source", "key", "_defineProperty", "_classCallCheck", "instance", "Constructor", "_defineProperties", "props", "descriptor", "_toPropertyKey", "_createClass", "protoProps", "staticProps", "obj", "value", "_extends", "_toPrimitive", "input", "hint", "prim", "res", "arg", "canvasToBlob", "window", "CanvasPrototype", "hasBlobConstructor", "hasArrayBufferViewSupport", "BlobBuilder", "dataURIPattern", "dataURLtoBlob", "dataURI", "matches", "mediaType", "isBase64", "dataString", "byteString", "arrayBuffer", "intArray", "bb", "callback", "type", "quality", "self", "toBlob", "isBlob", "DEFAULTS", "IS_BROWSER", "WINDOW", "isPositiveNumber", "slice", "toArray", "REGEXP_IMAGE_TYPE", "isImageType", "imageTypeToExtension", "extension", "fromCharCode", "getStringFromCharCode", "dataView", "start", "length", "str", "btoa", "arrayBufferToDataURL", "mimeType", "chunks", "chunkSize", "uint8", "resetAndGetOrientation", "orientation", "littleEndian", "app1Start", "ifdStart", "offset", "exifIDCode", "tiffOffset", "endianness", "firstIFDOffset", "_length", "_offset", "parseOrientation", "rotate", "scaleX", "scaleY", "REGEXP_DECIMALS", "normalizeDecimalNumber", "times", "getAdjustedSizes", "_ref", "aspectRatio", "height", "width", "isValidWidth", "isValidHeight", "adjustedWidth", "getExif", "array", "segments", "next", "end", "segment", "exifArray", "current", "insertExif", "app0Length", "newArrayBuffer", "ArrayBuffer$1", "FileReader", "URL", "REGEXP_EXTENSION", "AnotherCompressor", "Compressor", "file", "options", "_this", "isJPEGImage", "checkOrientation", "retainExif", "reader", "result", "data", "_this2", "image", "_ref2", "_this3", "naturalWidth", "naturalHeight", "_ref2$rotate", "_ref2$scaleX", "_ref2$scaleY", "canvas", "context", "is90DegreesRotated", "resizable", "maxWidth", "maxHeight", "minWidth", "minHeight", "_ref3", "_ref4", "_ref5", "_getAdjustedSizes", "_getAdjustedSizes2", "_getAdjustedSizes3", "_getAdjustedSizes4", "_getAdjustedSizes4$wi", "_getAdjustedSizes4$he", "destX", "destY", "destWidth", "destHeight", "params", "srcX", "srcY", "srcWidth", "srcHeight", "_getAdjustedSizes5", "_ref6", "fillStyle", "blob", "done", "_ref7", "_ref8", "date", "err", "import_compressorjs", "REQ_MEDIA_LIST", "RCV_MEDIA_LIST", "REQ_UPLOAD_MEDIA", "RCV_UPLOAD_MEDIA", "REQ_REMOVE_MEDIA", "RCV_REMOVE_MEDIA", "REQ_SORT_MEDIA", "RCV_SORT_MEDIA", "REQ_STAGE_SORT", "REQ_STAGE_REMOVED", "REQ_CLEAR_UPLOADS", "REQUEST_FAILED", "queue", "pendingQueue", "executeNextQueue", "m", "all", "advertisement", "dispatch", "getState", "auth", "response", "httpJson", "get", "buildAuthorizedGetRequest", "offileUploadResponseHandle", "file", "sortOrder", "reader", "base64", "v4_default", "offlineUpload", "Compressor", "compressedFile", "upload", "purpose", "allowOfflineUpload", "data", "buildAuthorizedFormPostRequest", "remove", "media", "silent", "key", "request_cache_default", "json", "buildAuthorizedDeleteRequest", "sort", "list", "buildAuthorizedPutRequest", "clearUploads", "stageRemove", "stageSort"] }