Your IP : 216.73.216.176


Current Path : /proc/thread-self/cwd/static/adminhtml/Magento/backend/it_IT/js/bundle/
Upload File :
Current File : //proc/thread-self/cwd/static/adminhtml/Magento/backend/it_IT/js/bundle/bundle7.js

require.config({"config": {
        "jsbuild":{"jquery/spectrum/tinycolor.js":"// This file is autogenerated. v1.6.0\n// It's here at this path for backwards compatibility for links to it\n// but the npm package now exports both CJS and ESM.\n// See https://github.com/bgrins/TinyColor/ for instructions.\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.tinycolor = factory());\n})(this, (function () { 'use strict';\n\n    function _typeof(obj) {\n        \"@babel/helpers - typeof\";\n\n        return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n            return typeof obj;\n        } : function (obj) {\n            return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n        }, _typeof(obj);\n    }\n\n    // https://github.com/bgrins/TinyColor\n    // Brian Grinstead, MIT License\n\n    var trimLeft = /^\\s+/;\n    var trimRight = /\\s+$/;\n    function tinycolor(color, opts) {\n        color = color ? color : \"\";\n        opts = opts || {};\n\n        // If input is already a tinycolor, return itself\n        if (color instanceof tinycolor) {\n            return color;\n        }\n        // If we are called as a function, call using new instead\n        if (!(this instanceof tinycolor)) {\n            return new tinycolor(color, opts);\n        }\n        var rgb = inputToRGB(color);\n        this._originalInput = color, this._r = rgb.r, this._g = rgb.g, this._b = rgb.b, this._a = rgb.a, this._roundA = Math.round(100 * this._a) / 100, this._format = opts.format || rgb.format;\n        this._gradientType = opts.gradientType;\n\n        // Don't let the range of [0,255] come back in [0,1].\n        // Potentially lose a little bit of precision here, but will fix issues where\n        // .5 gets interpreted as half of the total, instead of half of 1\n        // If it was supposed to be 128, this was already taken care of by `inputToRgb`\n        if (this._r < 1) this._r = Math.round(this._r);\n        if (this._g < 1) this._g = Math.round(this._g);\n        if (this._b < 1) this._b = Math.round(this._b);\n        this._ok = rgb.ok;\n    }\n    tinycolor.prototype = {\n        isDark: function isDark() {\n            return this.getBrightness() < 128;\n        },\n        isLight: function isLight() {\n            return !this.isDark();\n        },\n        isValid: function isValid() {\n            return this._ok;\n        },\n        getOriginalInput: function getOriginalInput() {\n            return this._originalInput;\n        },\n        getFormat: function getFormat() {\n            return this._format;\n        },\n        getAlpha: function getAlpha() {\n            return this._a;\n        },\n        getBrightness: function getBrightness() {\n            //http://www.w3.org/TR/AERT#color-contrast\n            var rgb = this.toRgb();\n            return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n        },\n        getLuminance: function getLuminance() {\n            //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n            var rgb = this.toRgb();\n            var RsRGB, GsRGB, BsRGB, R, G, B;\n            RsRGB = rgb.r / 255;\n            GsRGB = rgb.g / 255;\n            BsRGB = rgb.b / 255;\n            if (RsRGB <= 0.03928) R = RsRGB / 12.92;else R = Math.pow((RsRGB + 0.055) / 1.055, 2.4);\n            if (GsRGB <= 0.03928) G = GsRGB / 12.92;else G = Math.pow((GsRGB + 0.055) / 1.055, 2.4);\n            if (BsRGB <= 0.03928) B = BsRGB / 12.92;else B = Math.pow((BsRGB + 0.055) / 1.055, 2.4);\n            return 0.2126 * R + 0.7152 * G + 0.0722 * B;\n        },\n        setAlpha: function setAlpha(value) {\n            this._a = boundAlpha(value);\n            this._roundA = Math.round(100 * this._a) / 100;\n            return this;\n        },\n        toHsv: function toHsv() {\n            var hsv = rgbToHsv(this._r, this._g, this._b);\n            return {\n                h: hsv.h * 360,\n                s: hsv.s,\n                v: hsv.v,\n                a: this._a\n            };\n        },\n        toHsvString: function toHsvString() {\n            var hsv = rgbToHsv(this._r, this._g, this._b);\n            var h = Math.round(hsv.h * 360),\n                s = Math.round(hsv.s * 100),\n                v = Math.round(hsv.v * 100);\n            return this._a == 1 ? \"hsv(\" + h + \", \" + s + \"%, \" + v + \"%)\" : \"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \" + this._roundA + \")\";\n        },\n        toHsl: function toHsl() {\n            var hsl = rgbToHsl(this._r, this._g, this._b);\n            return {\n                h: hsl.h * 360,\n                s: hsl.s,\n                l: hsl.l,\n                a: this._a\n            };\n        },\n        toHslString: function toHslString() {\n            var hsl = rgbToHsl(this._r, this._g, this._b);\n            var h = Math.round(hsl.h * 360),\n                s = Math.round(hsl.s * 100),\n                l = Math.round(hsl.l * 100);\n            return this._a == 1 ? \"hsl(\" + h + \", \" + s + \"%, \" + l + \"%)\" : \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \" + this._roundA + \")\";\n        },\n        toHex: function toHex(allow3Char) {\n            return rgbToHex(this._r, this._g, this._b, allow3Char);\n        },\n        toHexString: function toHexString(allow3Char) {\n            return \"#\" + this.toHex(allow3Char);\n        },\n        toHex8: function toHex8(allow4Char) {\n            return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char);\n        },\n        toHex8String: function toHex8String(allow4Char) {\n            return \"#\" + this.toHex8(allow4Char);\n        },\n        toRgb: function toRgb() {\n            return {\n                r: Math.round(this._r),\n                g: Math.round(this._g),\n                b: Math.round(this._b),\n                a: this._a\n            };\n        },\n        toRgbString: function toRgbString() {\n            return this._a == 1 ? \"rgb(\" + Math.round(this._r) + \", \" + Math.round(this._g) + \", \" + Math.round(this._b) + \")\" : \"rgba(\" + Math.round(this._r) + \", \" + Math.round(this._g) + \", \" + Math.round(this._b) + \", \" + this._roundA + \")\";\n        },\n        toPercentageRgb: function toPercentageRgb() {\n            return {\n                r: Math.round(bound01(this._r, 255) * 100) + \"%\",\n                g: Math.round(bound01(this._g, 255) * 100) + \"%\",\n                b: Math.round(bound01(this._b, 255) * 100) + \"%\",\n                a: this._a\n            };\n        },\n        toPercentageRgbString: function toPercentageRgbString() {\n            return this._a == 1 ? \"rgb(\" + Math.round(bound01(this._r, 255) * 100) + \"%, \" + Math.round(bound01(this._g, 255) * 100) + \"%, \" + Math.round(bound01(this._b, 255) * 100) + \"%)\" : \"rgba(\" + Math.round(bound01(this._r, 255) * 100) + \"%, \" + Math.round(bound01(this._g, 255) * 100) + \"%, \" + Math.round(bound01(this._b, 255) * 100) + \"%, \" + this._roundA + \")\";\n        },\n        toName: function toName() {\n            if (this._a === 0) {\n                return \"transparent\";\n            }\n            if (this._a < 1) {\n                return false;\n            }\n            return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;\n        },\n        toFilter: function toFilter(secondColor) {\n            var hex8String = \"#\" + rgbaToArgbHex(this._r, this._g, this._b, this._a);\n            var secondHex8String = hex8String;\n            var gradientType = this._gradientType ? \"GradientType = 1, \" : \"\";\n            if (secondColor) {\n                var s = tinycolor(secondColor);\n                secondHex8String = \"#\" + rgbaToArgbHex(s._r, s._g, s._b, s._a);\n            }\n            return \"progid:DXImageTransform.Microsoft.gradient(\" + gradientType + \"startColorstr=\" + hex8String + \",endColorstr=\" + secondHex8String + \")\";\n        },\n        toString: function toString(format) {\n            var formatSet = !!format;\n            format = format || this._format;\n            var formattedString = false;\n            var hasAlpha = this._a < 1 && this._a >= 0;\n            var needsAlphaFormat = !formatSet && hasAlpha && (format === \"hex\" || format === \"hex6\" || format === \"hex3\" || format === \"hex4\" || format === \"hex8\" || format === \"name\");\n            if (needsAlphaFormat) {\n                // Special case for \"transparent\", all other non-alpha formats\n                // will return rgba when there is transparency.\n                if (format === \"name\" && this._a === 0) {\n                    return this.toName();\n                }\n                return this.toRgbString();\n            }\n            if (format === \"rgb\") {\n                formattedString = this.toRgbString();\n            }\n            if (format === \"prgb\") {\n                formattedString = this.toPercentageRgbString();\n            }\n            if (format === \"hex\" || format === \"hex6\") {\n                formattedString = this.toHexString();\n            }\n            if (format === \"hex3\") {\n                formattedString = this.toHexString(true);\n            }\n            if (format === \"hex4\") {\n                formattedString = this.toHex8String(true);\n            }\n            if (format === \"hex8\") {\n                formattedString = this.toHex8String();\n            }\n            if (format === \"name\") {\n                formattedString = this.toName();\n            }\n            if (format === \"hsl\") {\n                formattedString = this.toHslString();\n            }\n            if (format === \"hsv\") {\n                formattedString = this.toHsvString();\n            }\n            return formattedString || this.toHexString();\n        },\n        clone: function clone() {\n            return tinycolor(this.toString());\n        },\n        _applyModification: function _applyModification(fn, args) {\n            var color = fn.apply(null, [this].concat([].slice.call(args)));\n            this._r = color._r;\n            this._g = color._g;\n            this._b = color._b;\n            this.setAlpha(color._a);\n            return this;\n        },\n        lighten: function lighten() {\n            return this._applyModification(_lighten, arguments);\n        },\n        brighten: function brighten() {\n            return this._applyModification(_brighten, arguments);\n        },\n        darken: function darken() {\n            return this._applyModification(_darken, arguments);\n        },\n        desaturate: function desaturate() {\n            return this._applyModification(_desaturate, arguments);\n        },\n        saturate: function saturate() {\n            return this._applyModification(_saturate, arguments);\n        },\n        greyscale: function greyscale() {\n            return this._applyModification(_greyscale, arguments);\n        },\n        spin: function spin() {\n            return this._applyModification(_spin, arguments);\n        },\n        _applyCombination: function _applyCombination(fn, args) {\n            return fn.apply(null, [this].concat([].slice.call(args)));\n        },\n        analogous: function analogous() {\n            return this._applyCombination(_analogous, arguments);\n        },\n        complement: function complement() {\n            return this._applyCombination(_complement, arguments);\n        },\n        monochromatic: function monochromatic() {\n            return this._applyCombination(_monochromatic, arguments);\n        },\n        splitcomplement: function splitcomplement() {\n            return this._applyCombination(_splitcomplement, arguments);\n        },\n        // Disabled until https://github.com/bgrins/TinyColor/issues/254\n        // polyad: function (number) {\n        //   return this._applyCombination(polyad, [number]);\n        // },\n        triad: function triad() {\n            return this._applyCombination(polyad, [3]);\n        },\n        tetrad: function tetrad() {\n            return this._applyCombination(polyad, [4]);\n        }\n    };\n\n    // If input is an object, force 1 into \"1.0\" to handle ratios properly\n    // String input requires \"1.0\" as input, so 1 will be treated as 1\n    tinycolor.fromRatio = function (color, opts) {\n        if (_typeof(color) == \"object\") {\n            var newColor = {};\n            for (var i in color) {\n                if (color.hasOwnProperty(i)) {\n                    if (i === \"a\") {\n                        newColor[i] = color[i];\n                    } else {\n                        newColor[i] = convertToPercentage(color[i]);\n                    }\n                }\n            }\n            color = newColor;\n        }\n        return tinycolor(color, opts);\n    };\n\n    // Given a string or object, convert that input to RGB\n    // Possible string inputs:\n    //\n    //     \"red\"\n    //     \"#f00\" or \"f00\"\n    //     \"#ff0000\" or \"ff0000\"\n    //     \"#ff000000\" or \"ff000000\"\n    //     \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n    //     \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n    //     \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n    //     \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n    //     \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n    //     \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n    //     \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n    //\n    function inputToRGB(color) {\n        var rgb = {\n            r: 0,\n            g: 0,\n            b: 0\n        };\n        var a = 1;\n        var s = null;\n        var v = null;\n        var l = null;\n        var ok = false;\n        var format = false;\n        if (typeof color == \"string\") {\n            color = stringInputToObject(color);\n        }\n        if (_typeof(color) == \"object\") {\n            if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n                rgb = rgbToRgb(color.r, color.g, color.b);\n                ok = true;\n                format = String(color.r).substr(-1) === \"%\" ? \"prgb\" : \"rgb\";\n            } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n                s = convertToPercentage(color.s);\n                v = convertToPercentage(color.v);\n                rgb = hsvToRgb(color.h, s, v);\n                ok = true;\n                format = \"hsv\";\n            } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n                s = convertToPercentage(color.s);\n                l = convertToPercentage(color.l);\n                rgb = hslToRgb(color.h, s, l);\n                ok = true;\n                format = \"hsl\";\n            }\n            if (color.hasOwnProperty(\"a\")) {\n                a = color.a;\n            }\n        }\n        a = boundAlpha(a);\n        return {\n            ok: ok,\n            format: color.format || format,\n            r: Math.min(255, Math.max(rgb.r, 0)),\n            g: Math.min(255, Math.max(rgb.g, 0)),\n            b: Math.min(255, Math.max(rgb.b, 0)),\n            a: a\n        };\n    }\n\n    // Conversion Functions\n    // --------------------\n\n    // `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n    // <http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript>\n\n    // `rgbToRgb`\n    // Handle bounds / percentage checking to conform to CSS color spec\n    // <http://www.w3.org/TR/css3-color/>\n    // *Assumes:* r, g, b in [0, 255] or [0, 1]\n    // *Returns:* { r, g, b } in [0, 255]\n    function rgbToRgb(r, g, b) {\n        return {\n            r: bound01(r, 255) * 255,\n            g: bound01(g, 255) * 255,\n            b: bound01(b, 255) * 255\n        };\n    }\n\n    // `rgbToHsl`\n    // Converts an RGB color value to HSL.\n    // *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n    // *Returns:* { h, s, l } in [0,1]\n    function rgbToHsl(r, g, b) {\n        r = bound01(r, 255);\n        g = bound01(g, 255);\n        b = bound01(b, 255);\n        var max = Math.max(r, g, b),\n            min = Math.min(r, g, b);\n        var h,\n            s,\n            l = (max + min) / 2;\n        if (max == min) {\n            h = s = 0; // achromatic\n        } else {\n            var d = max - min;\n            s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n            switch (max) {\n                case r:\n                    h = (g - b) / d + (g < b ? 6 : 0);\n                    break;\n                case g:\n                    h = (b - r) / d + 2;\n                    break;\n                case b:\n                    h = (r - g) / d + 4;\n                    break;\n            }\n            h /= 6;\n        }\n        return {\n            h: h,\n            s: s,\n            l: l\n        };\n    }\n\n    // `hslToRgb`\n    // Converts an HSL color value to RGB.\n    // *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n    // *Returns:* { r, g, b } in the set [0, 255]\n    function hslToRgb(h, s, l) {\n        var r, g, b;\n        h = bound01(h, 360);\n        s = bound01(s, 100);\n        l = bound01(l, 100);\n        function hue2rgb(p, q, t) {\n            if (t < 0) t += 1;\n            if (t > 1) t -= 1;\n            if (t < 1 / 6) return p + (q - p) * 6 * t;\n            if (t < 1 / 2) return q;\n            if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n            return p;\n        }\n        if (s === 0) {\n            r = g = b = l; // achromatic\n        } else {\n            var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n            var p = 2 * l - q;\n            r = hue2rgb(p, q, h + 1 / 3);\n            g = hue2rgb(p, q, h);\n            b = hue2rgb(p, q, h - 1 / 3);\n        }\n        return {\n            r: r * 255,\n            g: g * 255,\n            b: b * 255\n        };\n    }\n\n    // `rgbToHsv`\n    // Converts an RGB color value to HSV\n    // *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n    // *Returns:* { h, s, v } in [0,1]\n    function rgbToHsv(r, g, b) {\n        r = bound01(r, 255);\n        g = bound01(g, 255);\n        b = bound01(b, 255);\n        var max = Math.max(r, g, b),\n            min = Math.min(r, g, b);\n        var h,\n            s,\n            v = max;\n        var d = max - min;\n        s = max === 0 ? 0 : d / max;\n        if (max == min) {\n            h = 0; // achromatic\n        } else {\n            switch (max) {\n                case r:\n                    h = (g - b) / d + (g < b ? 6 : 0);\n                    break;\n                case g:\n                    h = (b - r) / d + 2;\n                    break;\n                case b:\n                    h = (r - g) / d + 4;\n                    break;\n            }\n            h /= 6;\n        }\n        return {\n            h: h,\n            s: s,\n            v: v\n        };\n    }\n\n    // `hsvToRgb`\n    // Converts an HSV color value to RGB.\n    // *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n    // *Returns:* { r, g, b } in the set [0, 255]\n    function hsvToRgb(h, s, v) {\n        h = bound01(h, 360) * 6;\n        s = bound01(s, 100);\n        v = bound01(v, 100);\n        var i = Math.floor(h),\n            f = h - i,\n            p = v * (1 - s),\n            q = v * (1 - f * s),\n            t = v * (1 - (1 - f) * s),\n            mod = i % 6,\n            r = [v, q, p, p, t, v][mod],\n            g = [t, v, v, q, p, p][mod],\n            b = [p, p, t, v, v, q][mod];\n        return {\n            r: r * 255,\n            g: g * 255,\n            b: b * 255\n        };\n    }\n\n    // `rgbToHex`\n    // Converts an RGB color to hex\n    // Assumes r, g, and b are contained in the set [0, 255]\n    // Returns a 3 or 6 character hex\n    function rgbToHex(r, g, b, allow3Char) {\n        var hex = [pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16))];\n\n        // Return a 3 character hex if possible\n        if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) {\n            return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n        }\n        return hex.join(\"\");\n    }\n\n    // `rgbaToHex`\n    // Converts an RGBA color plus alpha transparency to hex\n    // Assumes r, g, b are contained in the set [0, 255] and\n    // a in [0, 1]. Returns a 4 or 8 character rgba hex\n    function rgbaToHex(r, g, b, a, allow4Char) {\n        var hex = [pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16)), pad2(convertDecimalToHex(a))];\n\n        // Return a 4 character hex if possible\n        if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) {\n            return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n        }\n        return hex.join(\"\");\n    }\n\n    // `rgbaToArgbHex`\n    // Converts an RGBA color to an ARGB Hex8 string\n    // Rarely used, but required for \"toFilter()\"\n    function rgbaToArgbHex(r, g, b, a) {\n        var hex = [pad2(convertDecimalToHex(a)), pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16))];\n        return hex.join(\"\");\n    }\n\n    // `equals`\n    // Can be called with any tinycolor input\n    tinycolor.equals = function (color1, color2) {\n        if (!color1 || !color2) return false;\n        return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();\n    };\n    tinycolor.random = function () {\n        return tinycolor.fromRatio({\n            r: Math.random(),\n            g: Math.random(),\n            b: Math.random()\n        });\n    };\n\n    // Modification Functions\n    // ----------------------\n    // Thanks to less.js for some of the basics here\n    // <https://github.com/cloudhead/less.js/blob/master/lib/less/functions.js>\n\n    function _desaturate(color, amount) {\n        amount = amount === 0 ? 0 : amount || 10;\n        var hsl = tinycolor(color).toHsl();\n        hsl.s -= amount / 100;\n        hsl.s = clamp01(hsl.s);\n        return tinycolor(hsl);\n    }\n    function _saturate(color, amount) {\n        amount = amount === 0 ? 0 : amount || 10;\n        var hsl = tinycolor(color).toHsl();\n        hsl.s += amount / 100;\n        hsl.s = clamp01(hsl.s);\n        return tinycolor(hsl);\n    }\n    function _greyscale(color) {\n        return tinycolor(color).desaturate(100);\n    }\n    function _lighten(color, amount) {\n        amount = amount === 0 ? 0 : amount || 10;\n        var hsl = tinycolor(color).toHsl();\n        hsl.l += amount / 100;\n        hsl.l = clamp01(hsl.l);\n        return tinycolor(hsl);\n    }\n    function _brighten(color, amount) {\n        amount = amount === 0 ? 0 : amount || 10;\n        var rgb = tinycolor(color).toRgb();\n        rgb.r = Math.max(0, Math.min(255, rgb.r - Math.round(255 * -(amount / 100))));\n        rgb.g = Math.max(0, Math.min(255, rgb.g - Math.round(255 * -(amount / 100))));\n        rgb.b = Math.max(0, Math.min(255, rgb.b - Math.round(255 * -(amount / 100))));\n        return tinycolor(rgb);\n    }\n    function _darken(color, amount) {\n        amount = amount === 0 ? 0 : amount || 10;\n        var hsl = tinycolor(color).toHsl();\n        hsl.l -= amount / 100;\n        hsl.l = clamp01(hsl.l);\n        return tinycolor(hsl);\n    }\n\n    // Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n    // Values outside of this range will be wrapped into this range.\n    function _spin(color, amount) {\n        var hsl = tinycolor(color).toHsl();\n        var hue = (hsl.h + amount) % 360;\n        hsl.h = hue < 0 ? 360 + hue : hue;\n        return tinycolor(hsl);\n    }\n\n    // Combination Functions\n    // ---------------------\n    // Thanks to jQuery xColor for some of the ideas behind these\n    // <https://github.com/infusion/jQuery-xcolor/blob/master/jquery.xcolor.js>\n\n    function _complement(color) {\n        var hsl = tinycolor(color).toHsl();\n        hsl.h = (hsl.h + 180) % 360;\n        return tinycolor(hsl);\n    }\n    function polyad(color, number) {\n        if (isNaN(number) || number <= 0) {\n            throw new Error(\"Argument to polyad must be a positive number\");\n        }\n        var hsl = tinycolor(color).toHsl();\n        var result = [tinycolor(color)];\n        var step = 360 / number;\n        for (var i = 1; i < number; i++) {\n            result.push(tinycolor({\n                h: (hsl.h + i * step) % 360,\n                s: hsl.s,\n                l: hsl.l\n            }));\n        }\n        return result;\n    }\n    function _splitcomplement(color) {\n        var hsl = tinycolor(color).toHsl();\n        var h = hsl.h;\n        return [tinycolor(color), tinycolor({\n            h: (h + 72) % 360,\n            s: hsl.s,\n            l: hsl.l\n        }), tinycolor({\n            h: (h + 216) % 360,\n            s: hsl.s,\n            l: hsl.l\n        })];\n    }\n    function _analogous(color, results, slices) {\n        results = results || 6;\n        slices = slices || 30;\n        var hsl = tinycolor(color).toHsl();\n        var part = 360 / slices;\n        var ret = [tinycolor(color)];\n        for (hsl.h = (hsl.h - (part * results >> 1) + 720) % 360; --results;) {\n            hsl.h = (hsl.h + part) % 360;\n            ret.push(tinycolor(hsl));\n        }\n        return ret;\n    }\n    function _monochromatic(color, results) {\n        results = results || 6;\n        var hsv = tinycolor(color).toHsv();\n        var h = hsv.h,\n            s = hsv.s,\n            v = hsv.v;\n        var ret = [];\n        var modification = 1 / results;\n        while (results--) {\n            ret.push(tinycolor({\n                h: h,\n                s: s,\n                v: v\n            }));\n            v = (v + modification) % 1;\n        }\n        return ret;\n    }\n\n    // Utility Functions\n    // ---------------------\n\n    tinycolor.mix = function (color1, color2, amount) {\n        amount = amount === 0 ? 0 : amount || 50;\n        var rgb1 = tinycolor(color1).toRgb();\n        var rgb2 = tinycolor(color2).toRgb();\n        var p = amount / 100;\n        var rgba = {\n            r: (rgb2.r - rgb1.r) * p + rgb1.r,\n            g: (rgb2.g - rgb1.g) * p + rgb1.g,\n            b: (rgb2.b - rgb1.b) * p + rgb1.b,\n            a: (rgb2.a - rgb1.a) * p + rgb1.a\n        };\n        return tinycolor(rgba);\n    };\n\n    // Readability Functions\n    // ---------------------\n    // <http://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef (WCAG Version 2)\n\n    // `contrast`\n    // Analyze the 2 colors and returns the color contrast defined by (WCAG Version 2)\n    tinycolor.readability = function (color1, color2) {\n        var c1 = tinycolor(color1);\n        var c2 = tinycolor(color2);\n        return (Math.max(c1.getLuminance(), c2.getLuminance()) + 0.05) / (Math.min(c1.getLuminance(), c2.getLuminance()) + 0.05);\n    };\n\n    // `isReadable`\n    // Ensure that foreground and background color combinations meet WCAG2 guidelines.\n    // The third argument is an optional Object.\n    //      the 'level' property states 'AA' or 'AAA' - if missing or invalid, it defaults to 'AA';\n    //      the 'size' property states 'large' or 'small' - if missing or invalid, it defaults to 'small'.\n    // If the entire object is absent, isReadable defaults to {level:\"AA\",size:\"small\"}.\n\n    // *Example*\n    //    tinycolor.isReadable(\"#000\", \"#111\") => false\n    //    tinycolor.isReadable(\"#000\", \"#111\",{level:\"AA\",size:\"large\"}) => false\n    tinycolor.isReadable = function (color1, color2, wcag2) {\n        var readability = tinycolor.readability(color1, color2);\n        var wcag2Parms, out;\n        out = false;\n        wcag2Parms = validateWCAG2Parms(wcag2);\n        switch (wcag2Parms.level + wcag2Parms.size) {\n            case \"AAsmall\":\n            case \"AAAlarge\":\n                out = readability >= 4.5;\n                break;\n            case \"AAlarge\":\n                out = readability >= 3;\n                break;\n            case \"AAAsmall\":\n                out = readability >= 7;\n                break;\n        }\n        return out;\n    };\n\n    // `mostReadable`\n    // Given a base color and a list of possible foreground or background\n    // colors for that base, returns the most readable color.\n    // Optionally returns Black or White if the most readable color is unreadable.\n    // *Example*\n    //    tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:false}).toHexString(); // \"#112255\"\n    //    tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:true}).toHexString();  // \"#ffffff\"\n    //    tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"large\"}).toHexString(); // \"#faf3f3\"\n    //    tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"small\"}).toHexString(); // \"#ffffff\"\n    tinycolor.mostReadable = function (baseColor, colorList, args) {\n        var bestColor = null;\n        var bestScore = 0;\n        var readability;\n        var includeFallbackColors, level, size;\n        args = args || {};\n        includeFallbackColors = args.includeFallbackColors;\n        level = args.level;\n        size = args.size;\n        for (var i = 0; i < colorList.length; i++) {\n            readability = tinycolor.readability(baseColor, colorList[i]);\n            if (readability > bestScore) {\n                bestScore = readability;\n                bestColor = tinycolor(colorList[i]);\n            }\n        }\n        if (tinycolor.isReadable(baseColor, bestColor, {\n            level: level,\n            size: size\n        }) || !includeFallbackColors) {\n            return bestColor;\n        } else {\n            args.includeFallbackColors = false;\n            return tinycolor.mostReadable(baseColor, [\"#fff\", \"#000\"], args);\n        }\n    };\n\n    // Big List of Colors\n    // ------------------\n    // <https://www.w3.org/TR/css-color-4/#named-colors>\n    var names = tinycolor.names = {\n        aliceblue: \"f0f8ff\",\n        antiquewhite: \"faebd7\",\n        aqua: \"0ff\",\n        aquamarine: \"7fffd4\",\n        azure: \"f0ffff\",\n        beige: \"f5f5dc\",\n        bisque: \"ffe4c4\",\n        black: \"000\",\n        blanchedalmond: \"ffebcd\",\n        blue: \"00f\",\n        blueviolet: \"8a2be2\",\n        brown: \"a52a2a\",\n        burlywood: \"deb887\",\n        burntsienna: \"ea7e5d\",\n        cadetblue: \"5f9ea0\",\n        chartreuse: \"7fff00\",\n        chocolate: \"d2691e\",\n        coral: \"ff7f50\",\n        cornflowerblue: \"6495ed\",\n        cornsilk: \"fff8dc\",\n        crimson: \"dc143c\",\n        cyan: \"0ff\",\n        darkblue: \"00008b\",\n        darkcyan: \"008b8b\",\n        darkgoldenrod: \"b8860b\",\n        darkgray: \"a9a9a9\",\n        darkgreen: \"006400\",\n        darkgrey: \"a9a9a9\",\n        darkkhaki: \"bdb76b\",\n        darkmagenta: \"8b008b\",\n        darkolivegreen: \"556b2f\",\n        darkorange: \"ff8c00\",\n        darkorchid: \"9932cc\",\n        darkred: \"8b0000\",\n        darksalmon: \"e9967a\",\n        darkseagreen: \"8fbc8f\",\n        darkslateblue: \"483d8b\",\n        darkslategray: \"2f4f4f\",\n        darkslategrey: \"2f4f4f\",\n        darkturquoise: \"00ced1\",\n        darkviolet: \"9400d3\",\n        deeppink: \"ff1493\",\n        deepskyblue: \"00bfff\",\n        dimgray: \"696969\",\n        dimgrey: \"696969\",\n        dodgerblue: \"1e90ff\",\n        firebrick: \"b22222\",\n        floralwhite: \"fffaf0\",\n        forestgreen: \"228b22\",\n        fuchsia: \"f0f\",\n        gainsboro: \"dcdcdc\",\n        ghostwhite: \"f8f8ff\",\n        gold: \"ffd700\",\n        goldenrod: \"daa520\",\n        gray: \"808080\",\n        green: \"008000\",\n        greenyellow: \"adff2f\",\n        grey: \"808080\",\n        honeydew: \"f0fff0\",\n        hotpink: \"ff69b4\",\n        indianred: \"cd5c5c\",\n        indigo: \"4b0082\",\n        ivory: \"fffff0\",\n        khaki: \"f0e68c\",\n        lavender: \"e6e6fa\",\n        lavenderblush: \"fff0f5\",\n        lawngreen: \"7cfc00\",\n        lemonchiffon: \"fffacd\",\n        lightblue: \"add8e6\",\n        lightcoral: \"f08080\",\n        lightcyan: \"e0ffff\",\n        lightgoldenrodyellow: \"fafad2\",\n        lightgray: \"d3d3d3\",\n        lightgreen: \"90ee90\",\n        lightgrey: \"d3d3d3\",\n        lightpink: \"ffb6c1\",\n        lightsalmon: \"ffa07a\",\n        lightseagreen: \"20b2aa\",\n        lightskyblue: \"87cefa\",\n        lightslategray: \"789\",\n        lightslategrey: \"789\",\n        lightsteelblue: \"b0c4de\",\n        lightyellow: \"ffffe0\",\n        lime: \"0f0\",\n        limegreen: \"32cd32\",\n        linen: \"faf0e6\",\n        magenta: \"f0f\",\n        maroon: \"800000\",\n        mediumaquamarine: \"66cdaa\",\n        mediumblue: \"0000cd\",\n        mediumorchid: \"ba55d3\",\n        mediumpurple: \"9370db\",\n        mediumseagreen: \"3cb371\",\n        mediumslateblue: \"7b68ee\",\n        mediumspringgreen: \"00fa9a\",\n        mediumturquoise: \"48d1cc\",\n        mediumvioletred: \"c71585\",\n        midnightblue: \"191970\",\n        mintcream: \"f5fffa\",\n        mistyrose: \"ffe4e1\",\n        moccasin: \"ffe4b5\",\n        navajowhite: \"ffdead\",\n        navy: \"000080\",\n        oldlace: \"fdf5e6\",\n        olive: \"808000\",\n        olivedrab: \"6b8e23\",\n        orange: \"ffa500\",\n        orangered: \"ff4500\",\n        orchid: \"da70d6\",\n        palegoldenrod: \"eee8aa\",\n        palegreen: \"98fb98\",\n        paleturquoise: \"afeeee\",\n        palevioletred: \"db7093\",\n        papayawhip: \"ffefd5\",\n        peachpuff: \"ffdab9\",\n        peru: \"cd853f\",\n        pink: \"ffc0cb\",\n        plum: \"dda0dd\",\n        powderblue: \"b0e0e6\",\n        purple: \"800080\",\n        rebeccapurple: \"663399\",\n        red: \"f00\",\n        rosybrown: \"bc8f8f\",\n        royalblue: \"4169e1\",\n        saddlebrown: \"8b4513\",\n        salmon: \"fa8072\",\n        sandybrown: \"f4a460\",\n        seagreen: \"2e8b57\",\n        seashell: \"fff5ee\",\n        sienna: \"a0522d\",\n        silver: \"c0c0c0\",\n        skyblue: \"87ceeb\",\n        slateblue: \"6a5acd\",\n        slategray: \"708090\",\n        slategrey: \"708090\",\n        snow: \"fffafa\",\n        springgreen: \"00ff7f\",\n        steelblue: \"4682b4\",\n        tan: \"d2b48c\",\n        teal: \"008080\",\n        thistle: \"d8bfd8\",\n        tomato: \"ff6347\",\n        turquoise: \"40e0d0\",\n        violet: \"ee82ee\",\n        wheat: \"f5deb3\",\n        white: \"fff\",\n        whitesmoke: \"f5f5f5\",\n        yellow: \"ff0\",\n        yellowgreen: \"9acd32\"\n    };\n\n    // Make it easy to access colors via `hexNames[hex]`\n    var hexNames = tinycolor.hexNames = flip(names);\n\n    // Utilities\n    // ---------\n\n    // `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }`\n    function flip(o) {\n        var flipped = {};\n        for (var i in o) {\n            if (o.hasOwnProperty(i)) {\n                flipped[o[i]] = i;\n            }\n        }\n        return flipped;\n    }\n\n    // Return a valid alpha value [0,1] with all invalid values being set to 1\n    function boundAlpha(a) {\n        a = parseFloat(a);\n        if (isNaN(a) || a < 0 || a > 1) {\n            a = 1;\n        }\n        return a;\n    }\n\n    // Take input from [0, n] and return it as [0, 1]\n    function bound01(n, max) {\n        if (isOnePointZero(n)) n = \"100%\";\n        var processPercent = isPercentage(n);\n        n = Math.min(max, Math.max(0, parseFloat(n)));\n\n        // Automatically convert percentage into number\n        if (processPercent) {\n            n = parseInt(n * max, 10) / 100;\n        }\n\n        // Handle floating point rounding errors\n        if (Math.abs(n - max) < 0.000001) {\n            return 1;\n        }\n\n        // Convert into [0, 1] range if it isn't already\n        return n % max / parseFloat(max);\n    }\n\n    // Force a number between 0 and 1\n    function clamp01(val) {\n        return Math.min(1, Math.max(0, val));\n    }\n\n    // Parse a base-16 hex value into a base-10 integer\n    function parseIntFromHex(val) {\n        return parseInt(val, 16);\n    }\n\n    // Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n    // <http://stackoverflow.com/questions/7422072/javascript-how-to-detect-number-as-a-decimal-including-1-0>\n    function isOnePointZero(n) {\n        return typeof n == \"string\" && n.indexOf(\".\") != -1 && parseFloat(n) === 1;\n    }\n\n    // Check to see if string passed in is a percentage\n    function isPercentage(n) {\n        return typeof n === \"string\" && n.indexOf(\"%\") != -1;\n    }\n\n    // Force a hex value to have 2 characters\n    function pad2(c) {\n        return c.length == 1 ? \"0\" + c : \"\" + c;\n    }\n\n    // Replace a decimal with it's percentage value\n    function convertToPercentage(n) {\n        if (n <= 1) {\n            n = n * 100 + \"%\";\n        }\n        return n;\n    }\n\n    // Converts a decimal to a hex value\n    function convertDecimalToHex(d) {\n        return Math.round(parseFloat(d) * 255).toString(16);\n    }\n    // Converts a hex value to a decimal\n    function convertHexToDecimal(h) {\n        return parseIntFromHex(h) / 255;\n    }\n    var matchers = function () {\n        // <http://www.w3.org/TR/css3-values/#integers>\n        var CSS_INTEGER = \"[-\\\\+]?\\\\d+%?\";\n\n        // <http://www.w3.org/TR/css3-values/#number-value>\n        var CSS_NUMBER = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\n\n        // Allow positive/negative integer/number.  Don't capture the either/or, just the entire outcome.\n        var CSS_UNIT = \"(?:\" + CSS_NUMBER + \")|(?:\" + CSS_INTEGER + \")\";\n\n        // Actual matching.\n        // Parentheses and commas are optional, but not required.\n        // Whitespace can take the place of commas or opening paren\n        var PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n        var PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n        return {\n            CSS_UNIT: new RegExp(CSS_UNIT),\n            rgb: new RegExp(\"rgb\" + PERMISSIVE_MATCH3),\n            rgba: new RegExp(\"rgba\" + PERMISSIVE_MATCH4),\n            hsl: new RegExp(\"hsl\" + PERMISSIVE_MATCH3),\n            hsla: new RegExp(\"hsla\" + PERMISSIVE_MATCH4),\n            hsv: new RegExp(\"hsv\" + PERMISSIVE_MATCH3),\n            hsva: new RegExp(\"hsva\" + PERMISSIVE_MATCH4),\n            hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n            hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n            hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n            hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/\n        };\n    }();\n\n    // `isValidCSSUnit`\n    // Take in a single string / number and check to see if it looks like a CSS unit\n    // (see `matchers` above for definition).\n    function isValidCSSUnit(color) {\n        return !!matchers.CSS_UNIT.exec(color);\n    }\n\n    // `stringInputToObject`\n    // Permissive string parsing.  Take in a number of formats, and output an object\n    // based on detected format.  Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\n    function stringInputToObject(color) {\n        color = color.replace(trimLeft, \"\").replace(trimRight, \"\").toLowerCase();\n        var named = false;\n        if (names[color]) {\n            color = names[color];\n            named = true;\n        } else if (color == \"transparent\") {\n            return {\n                r: 0,\n                g: 0,\n                b: 0,\n                a: 0,\n                format: \"name\"\n            };\n        }\n\n        // Try to match string input using regular expressions.\n        // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n        // Just return an object and let the conversion functions handle that.\n        // This way the result will be the same whether the tinycolor is initialized with string or object.\n        var match;\n        if (match = matchers.rgb.exec(color)) {\n            return {\n                r: match[1],\n                g: match[2],\n                b: match[3]\n            };\n        }\n        if (match = matchers.rgba.exec(color)) {\n            return {\n                r: match[1],\n                g: match[2],\n                b: match[3],\n                a: match[4]\n            };\n        }\n        if (match = matchers.hsl.exec(color)) {\n            return {\n                h: match[1],\n                s: match[2],\n                l: match[3]\n            };\n        }\n        if (match = matchers.hsla.exec(color)) {\n            return {\n                h: match[1],\n                s: match[2],\n                l: match[3],\n                a: match[4]\n            };\n        }\n        if (match = matchers.hsv.exec(color)) {\n            return {\n                h: match[1],\n                s: match[2],\n                v: match[3]\n            };\n        }\n        if (match = matchers.hsva.exec(color)) {\n            return {\n                h: match[1],\n                s: match[2],\n                v: match[3],\n                a: match[4]\n            };\n        }\n        if (match = matchers.hex8.exec(color)) {\n            return {\n                r: parseIntFromHex(match[1]),\n                g: parseIntFromHex(match[2]),\n                b: parseIntFromHex(match[3]),\n                a: convertHexToDecimal(match[4]),\n                format: named ? \"name\" : \"hex8\"\n            };\n        }\n        if (match = matchers.hex6.exec(color)) {\n            return {\n                r: parseIntFromHex(match[1]),\n                g: parseIntFromHex(match[2]),\n                b: parseIntFromHex(match[3]),\n                format: named ? \"name\" : \"hex\"\n            };\n        }\n        if (match = matchers.hex4.exec(color)) {\n            return {\n                r: parseIntFromHex(match[1] + \"\" + match[1]),\n                g: parseIntFromHex(match[2] + \"\" + match[2]),\n                b: parseIntFromHex(match[3] + \"\" + match[3]),\n                a: convertHexToDecimal(match[4] + \"\" + match[4]),\n                format: named ? \"name\" : \"hex8\"\n            };\n        }\n        if (match = matchers.hex3.exec(color)) {\n            return {\n                r: parseIntFromHex(match[1] + \"\" + match[1]),\n                g: parseIntFromHex(match[2] + \"\" + match[2]),\n                b: parseIntFromHex(match[3] + \"\" + match[3]),\n                format: named ? \"name\" : \"hex\"\n            };\n        }\n        return false;\n    }\n    function validateWCAG2Parms(parms) {\n        // return valid WCAG2 parms for isReadable.\n        // If input parms are invalid, return {\"level\":\"AA\", \"size\":\"small\"}\n        var level, size;\n        parms = parms || {\n            level: \"AA\",\n            size: \"small\"\n        };\n        level = (parms.level || \"AA\").toUpperCase();\n        size = (parms.size || \"small\").toLowerCase();\n        if (level !== \"AA\" && level !== \"AAA\") {\n            level = \"AA\";\n        }\n        if (size !== \"small\" && size !== \"large\") {\n            size = \"small\";\n        }\n        return {\n            level: level,\n            size: size\n        };\n    }\n\n    return tinycolor;\n\n}));\n","jquery/uppy/dist/uppy.min.js":"\"use strict\";(()=>{var Bb=Object.create;var Cl=Object.defineProperty;var zb=Object.getOwnPropertyDescriptor;var jb=Object.getOwnPropertyNames;var Hb=Object.getPrototypeOf,$b=Object.prototype.hasOwnProperty;var n=(i,e)=>Cl(i,\"name\",{value:e,configurable:!0});var he=(i,e)=>()=>(e||i((e={exports:{}}).exports,e),e.exports),Tl=(i,e)=>{for(var t in e)Cl(i,t,{get:e[t],enumerable:!0})},qb=(i,e,t,r)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let s of jb(e))!$b.call(i,s)&&s!==t&&Cl(i,s,{get:()=>e[s],enumerable:!(r=zb(e,s))||r.enumerable});return i};var de=(i,e,t)=>(t=i!=null?Bb(Hb(i)):{},qb(e||!i||!i.__esModule?Cl(t,\"default\",{value:i,enumerable:!0}):t,i));var yh=he((Zx,of)=>{of.exports=n(function(){var e={},t=e._fns={};e.emit=n(function(a,l,h,p,d,f,y){var b=r(a);b.length&&s(a,b,[l,h,p,d,f,y])},\"emit\"),e.on=n(function(a,l){t[a]||(t[a]=[]),t[a].push(l)},\"on\"),e.once=n(function(a,l){function h(){l.apply(this,arguments),e.off(a,h)}n(h,\"one\"),this.on(a,h)},\"once\"),e.off=n(function(a,l){var h=[];if(a&&l){var p=this._fns[a],d=0,f=p?p.length:0;for(d;d<f;d++)p[d]!==l&&h.push(p[d])}h.length?this._fns[a]=h:delete this._fns[a]},\"off\");function r(o){var a=t[o]?t[o]:[],l=o.indexOf(\":\"),h=l===-1?[o]:[o.substring(0,l),o.substring(l+1)],p=Object.keys(t),d=0,f=p.length;for(d;d<f;d++){var y=p[d];if(y===\"*\"&&(a=a.concat(t[y])),h.length===2&&h[0]===y){a=a.concat(t[y]);break}}return a}n(r,\"getListeners\");function s(o,a,l){var h=0,p=a.length;for(h;h<p&&a[h];h++)a[h].event=o,a[h].apply(a[h],l)}return n(s,\"emitAll\"),e},\"createNamespaceEmitter\")});var Al=he((rF,nf)=>{function Yb(i){var e=typeof i;return i!=null&&(e==\"object\"||e==\"function\")}n(Yb,\"isObject\");nf.exports=Yb});var lf=he((oF,af)=>{var Qb=typeof global==\"object\"&&global&&global.Object===Object&&global;af.exports=Qb});var vh=he((nF,uf)=>{var Jb=lf(),Zb=typeof self==\"object\"&&self&&self.Object===Object&&self,e1=Jb||Zb||Function(\"return this\")();uf.exports=e1});var df=he((aF,hf)=>{var t1=vh(),i1=n(function(){return t1.Date.now()},\"now\");hf.exports=i1});var pf=he((uF,cf)=>{var r1=/\\s/;function s1(i){for(var e=i.length;e--&&r1.test(i.charAt(e)););return e}n(s1,\"trimmedEndIndex\");cf.exports=s1});var mf=he((dF,ff)=>{var o1=pf(),n1=/^\\s+/;function a1(i){return i&&i.slice(0,o1(i)+1).replace(n1,\"\")}n(a1,\"baseTrim\");ff.exports=a1});var bh=he((pF,gf)=>{var l1=vh(),u1=l1.Symbol;gf.exports=u1});var wf=he((fF,bf)=>{var yf=bh(),vf=Object.prototype,h1=vf.hasOwnProperty,d1=vf.toString,cn=yf?yf.toStringTag:void 0;function c1(i){var e=h1.call(i,cn),t=i[cn];try{i[cn]=void 0;var r=!0}catch{}var s=d1.call(i);return r&&(e?i[cn]=t:delete i[cn]),s}n(c1,\"getRawTag\");bf.exports=c1});var Pf=he((gF,Sf)=>{var p1=Object.prototype,f1=p1.toString;function m1(i){return f1.call(i)}n(m1,\"objectToString\");Sf.exports=m1});var Ef=he((vF,Ff)=>{var _f=bh(),g1=wf(),y1=Pf(),v1=\"[object Null]\",b1=\"[object Undefined]\",xf=_f?_f.toStringTag:void 0;function w1(i){return i==null?i===void 0?b1:v1:xf&&xf in Object(i)?g1(i):y1(i)}n(w1,\"baseGetTag\");Ff.exports=w1});var Cf=he((wF,Of)=>{function S1(i){return i!=null&&typeof i==\"object\"}n(S1,\"isObjectLike\");Of.exports=S1});var Af=he((PF,Tf)=>{var P1=Ef(),_1=Cf(),x1=\"[object Symbol]\";function F1(i){return typeof i==\"symbol\"||_1(i)&&P1(i)==x1}n(F1,\"isSymbol\");Tf.exports=F1});var Df=he((xF,kf)=>{var E1=mf(),Rf=Al(),O1=Af(),Uf=0/0,C1=/^[-+]0x[0-9a-f]+$/i,T1=/^0b[01]+$/i,A1=/^0o[0-7]+$/i,R1=parseInt;function U1(i){if(typeof i==\"number\")return i;if(O1(i))return Uf;if(Rf(i)){var e=typeof i.valueOf==\"function\"?i.valueOf():i;i=Rf(e)?e+\"\":e}if(typeof i!=\"string\")return i===0?i:+i;i=E1(i);var t=T1.test(i);return t||A1.test(i)?R1(i.slice(2),t?2:8):C1.test(i)?Uf:+i}n(U1,\"toNumber\");kf.exports=U1});var Sh=he((EF,Nf)=>{var k1=Al(),wh=df(),If=Df(),D1=\"Expected a function\",I1=Math.max,N1=Math.min;function M1(i,e,t){var r,s,o,a,l,h,p=0,d=!1,f=!1,y=!0;if(typeof i!=\"function\")throw new TypeError(D1);e=If(e)||0,k1(t)&&(d=!!t.leading,f=\"maxWait\"in t,o=f?I1(If(t.maxWait)||0,e):o,y=\"trailing\"in t?!!t.trailing:y);function b(B){var z=r,K=s;return r=s=void 0,p=B,a=i.apply(K,z),a}n(b,\"invokeFunc\");function S(B){return p=B,l=setTimeout(F,e),d?b(B):a}n(S,\"leadingEdge\");function E(B){var z=B-h,K=B-p,oe=e-z;return f?N1(oe,o-K):oe}n(E,\"remainingWait\");function x(B){var z=B-h,K=B-p;return h===void 0||z>=e||z<0||f&&K>=o}n(x,\"shouldInvoke\");function F(){var B=wh();if(x(B))return U(B);l=setTimeout(F,E(B))}n(F,\"timerExpired\");function U(B){return l=void 0,y&&r?b(B):(r=s=void 0,a)}n(U,\"trailingEdge\");function j(){l!==void 0&&clearTimeout(l),p=0,r=h=s=l=void 0}n(j,\"cancel\");function G(){return l===void 0?a:U(wh())}n(G,\"flush\");function J(){var B=wh(),z=x(B);if(r=arguments,s=this,h=B,z){if(l===void 0)return S(h);if(f)return clearTimeout(l),l=setTimeout(F,e),b(h)}return l===void 0&&(l=setTimeout(F,e)),a}return n(J,\"debounced\"),J.cancel=j,J.flush=G,J}n(M1,\"debounce\");Nf.exports=M1});var Rl=he((CF,Mf)=>{var L1=Sh(),B1=Al(),z1=\"Expected a function\";function j1(i,e,t){var r=!0,s=!0;if(typeof i!=\"function\")throw new TypeError(z1);return B1(t)&&(r=\"leading\"in t?!!t.leading:r,s=\"trailing\"in t?!!t.trailing:s),L1(i,e,{leading:r,maxWait:e,trailing:s})}n(j1,\"throttle\");Mf.exports=j1});var Il=he((YF,Hf)=>{Hf.exports=n(function(e){if(typeof e!=\"number\"||isNaN(e))throw new TypeError(`Expected a number, got ${typeof e}`);let t=e<0,r=[\"B\",\"KB\",\"MB\",\"GB\",\"TB\",\"PB\",\"EB\",\"ZB\",\"YB\"];if(t&&(e=-e),e<1)return`${(t?\"-\":\"\")+e} B`;let s=Math.min(Math.floor(Math.log(e)/Math.log(1024)),r.length-1);e=Number(e/Math.pow(1024,s));let o=r[s];return e>=10||e%1===0?`${(t?\"-\":\"\")+e.toFixed(0)} ${o}`:`${(t?\"-\":\"\")+e.toFixed(1)} ${o}`},\"prettierBytes\")});var Vf=he((JF,qf)=>{\"use strict\";function $f(i,e){this.text=i=i||\"\",this.hasWild=~i.indexOf(\"*\"),this.separator=e,this.parts=i.split(e)}n($f,\"WildcardMatcher\");$f.prototype.match=function(i){var e=!0,t=this.parts,r,s=t.length,o;if(typeof i==\"string\"||i instanceof String)if(!this.hasWild&&this.text!=i)e=!1;else{for(o=(i||\"\").split(this.separator),r=0;e&&r<s;r++)t[r]!==\"*\"&&(r<o.length?e=t[r]===o[r]:e=!1);e=e&&o}else if(typeof i.splice==\"function\")for(e=[],r=i.length;r--;)this.match(i[r])&&(e[e.length]=i[r]);else if(typeof i==\"object\"){e={};for(var a in i)this.match(a)&&(e[a]=i[a])}return e};qf.exports=function(i,e,t){var r=new $f(i,t||/[\\/\\.]/);return typeof e<\"u\"?r.match(e):r}});var Gf=he((e3,Wf)=>{var G1=Vf(),K1=/[\\/\\+\\.]/;Wf.exports=function(i,e){function t(r){var s=G1(r,i,K1);return s&&s.length>=2}return n(t,\"test\"),e?t(e.split(\";\")[0]):t}});var bm=he((j3,vm)=>{function pi(i,e){typeof e==\"boolean\"&&(e={forever:e}),this._originalTimeouts=JSON.parse(JSON.stringify(i)),this._timeouts=i,this._options=e||{},this._maxRetryTime=e&&e.maxRetryTime||1/0,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._timer=null,this._options.forever&&(this._cachedTimeouts=this._timeouts.slice(0))}n(pi,\"RetryOperation\");vm.exports=pi;pi.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts.slice(0)};pi.prototype.stop=function(){this._timeout&&clearTimeout(this._timeout),this._timer&&clearTimeout(this._timer),this._timeouts=[],this._cachedTimeouts=null};pi.prototype.retry=function(i){if(this._timeout&&clearTimeout(this._timeout),!i)return!1;var e=new Date().getTime();if(i&&e-this._operationStart>=this._maxRetryTime)return this._errors.push(i),this._errors.unshift(new Error(\"RetryOperation timeout occurred\")),!1;this._errors.push(i);var t=this._timeouts.shift();if(t===void 0)if(this._cachedTimeouts)this._errors.splice(0,this._errors.length-1),t=this._cachedTimeouts.slice(-1);else return!1;var r=this;return this._timer=setTimeout(function(){r._attempts++,r._operationTimeoutCb&&(r._timeout=setTimeout(function(){r._operationTimeoutCb(r._attempts)},r._operationTimeout),r._options.unref&&r._timeout.unref()),r._fn(r._attempts)},t),this._options.unref&&this._timer.unref(),!0};pi.prototype.attempt=function(i,e){this._fn=i,e&&(e.timeout&&(this._operationTimeout=e.timeout),e.cb&&(this._operationTimeoutCb=e.cb));var t=this;this._operationTimeoutCb&&(this._timeout=setTimeout(function(){t._operationTimeoutCb()},t._operationTimeout)),this._operationStart=new Date().getTime(),this._fn(this._attempts)};pi.prototype.try=function(i){console.log(\"Using RetryOperation.try() is deprecated\"),this.attempt(i)};pi.prototype.start=function(i){console.log(\"Using RetryOperation.start() is deprecated\"),this.attempt(i)};pi.prototype.start=pi.prototype.try;pi.prototype.errors=function(){return this._errors};pi.prototype.attempts=function(){return this._attempts};pi.prototype.mainError=function(){if(this._errors.length===0)return null;for(var i={},e=null,t=0,r=0;r<this._errors.length;r++){var s=this._errors[r],o=s.message,a=(i[o]||0)+1;i[o]=a,a>=t&&(e=s,t=a)}return e}});var wm=he(Ss=>{var bw=bm();Ss.operation=function(i){var e=Ss.timeouts(i);return new bw(e,{forever:i&&(i.forever||i.retries===1/0),unref:i&&i.unref,maxRetryTime:i&&i.maxRetryTime})};Ss.timeouts=function(i){if(i instanceof Array)return[].concat(i);var e={retries:10,factor:2,minTimeout:1*1e3,maxTimeout:1/0,randomize:!1};for(var t in i)e[t]=i[t];if(e.minTimeout>e.maxTimeout)throw new Error(\"minTimeout is greater than maxTimeout\");for(var r=[],s=0;s<e.retries;s++)r.push(this.createTimeout(s,e));return i&&i.forever&&!r.length&&r.push(this.createTimeout(s,e)),r.sort(function(o,a){return o-a}),r};Ss.createTimeout=function(i,e){var t=e.randomize?Math.random()+1:1,r=Math.round(t*Math.max(e.minTimeout,1)*Math.pow(e.factor,i));return r=Math.min(r,e.maxTimeout),r};Ss.wrap=function(i,e,t){if(e instanceof Array&&(t=e,e=null),!t){t=[];for(var r in i)typeof i[r]==\"function\"&&t.push(r)}for(var s=0;s<t.length;s++){var o=t[s],a=i[o];i[o]=n(function(h){var p=Ss.operation(e),d=Array.prototype.slice.call(arguments,1),f=d.pop();d.push(function(y){p.retry(y)||(y&&(arguments[0]=p.mainError()),f.apply(this,arguments))}),p.attempt(function(){h.apply(i,d)})},\"retryWrapper\").bind(i,a),i[o].options=e}}});var Pm=he((V3,Sm)=>{Sm.exports=wm()});var Dm=he((UE,zh)=>{\"use strict\";var $w=Object.prototype.hasOwnProperty,At=\"~\";function In(){}n(In,\"Events\");Object.create&&(In.prototype=Object.create(null),new In().__proto__||(At=!1));function qw(i,e,t){this.fn=i,this.context=e,this.once=t||!1}n(qw,\"EE\");function km(i,e,t,r,s){if(typeof t!=\"function\")throw new TypeError(\"The listener must be a function\");var o=new qw(t,r||i,s),a=At?At+e:e;return i._events[a]?i._events[a].fn?i._events[a]=[i._events[a],o]:i._events[a].push(o):(i._events[a]=o,i._eventsCount++),i}n(km,\"addListener\");function Xl(i,e){--i._eventsCount===0?i._events=new In:delete i._events[e]}n(Xl,\"clearEvent\");function _t(){this._events=new In,this._eventsCount=0}n(_t,\"EventEmitter\");_t.prototype.eventNames=n(function(){var e=[],t,r;if(this._eventsCount===0)return e;for(r in t=this._events)$w.call(t,r)&&e.push(At?r.slice(1):r);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e},\"eventNames\");_t.prototype.listeners=n(function(e){var t=At?At+e:e,r=this._events[t];if(!r)return[];if(r.fn)return[r.fn];for(var s=0,o=r.length,a=new Array(o);s<o;s++)a[s]=r[s].fn;return a},\"listeners\");_t.prototype.listenerCount=n(function(e){var t=At?At+e:e,r=this._events[t];return r?r.fn?1:r.length:0},\"listenerCount\");_t.prototype.emit=n(function(e,t,r,s,o,a){var l=At?At+e:e;if(!this._events[l])return!1;var h=this._events[l],p=arguments.length,d,f;if(h.fn){switch(h.once&&this.removeListener(e,h.fn,void 0,!0),p){case 1:return h.fn.call(h.context),!0;case 2:return h.fn.call(h.context,t),!0;case 3:return h.fn.call(h.context,t,r),!0;case 4:return h.fn.call(h.context,t,r,s),!0;case 5:return h.fn.call(h.context,t,r,s,o),!0;case 6:return h.fn.call(h.context,t,r,s,o,a),!0}for(f=1,d=new Array(p-1);f<p;f++)d[f-1]=arguments[f];h.fn.apply(h.context,d)}else{var y=h.length,b;for(f=0;f<y;f++)switch(h[f].once&&this.removeListener(e,h[f].fn,void 0,!0),p){case 1:h[f].fn.call(h[f].context);break;case 2:h[f].fn.call(h[f].context,t);break;case 3:h[f].fn.call(h[f].context,t,r);break;case 4:h[f].fn.call(h[f].context,t,r,s);break;default:if(!d)for(b=1,d=new Array(p-1);b<p;b++)d[b-1]=arguments[b];h[f].fn.apply(h[f].context,d)}}return!0},\"emit\");_t.prototype.on=n(function(e,t,r){return km(this,e,t,r,!1)},\"on\");_t.prototype.once=n(function(e,t,r){return km(this,e,t,r,!0)},\"once\");_t.prototype.removeListener=n(function(e,t,r,s){var o=At?At+e:e;if(!this._events[o])return this;if(!t)return Xl(this,o),this;var a=this._events[o];if(a.fn)a.fn===t&&(!s||a.once)&&(!r||a.context===r)&&Xl(this,o);else{for(var l=0,h=[],p=a.length;l<p;l++)(a[l].fn!==t||s&&!a[l].once||r&&a[l].context!==r)&&h.push(a[l]);h.length?this._events[o]=h.length===1?h[0]:h:Xl(this,o)}return this},\"removeListener\");_t.prototype.removeAllListeners=n(function(e){var t;return e?(t=At?At+e:e,this._events[t]&&Xl(this,t)):(this._events=new In,this._eventsCount=0),this},\"removeAllListeners\");_t.prototype.off=_t.prototype.removeListener;_t.prototype.addListener=_t.prototype.on;_t.prefixed=At;_t.EventEmitter=_t;typeof zh<\"u\"&&(zh.exports=_t)});var Qt=he((nO,nu)=>{(function(){\"use strict\";var i={}.hasOwnProperty;function e(){for(var t=[],r=0;r<arguments.length;r++){var s=arguments[r];if(s){var o=typeof s;if(o===\"string\"||o===\"number\")t.push(s);else if(Array.isArray(s)){if(s.length){var a=e.apply(null,s);a&&t.push(a)}}else if(o===\"object\")if(s.toString===Object.prototype.toString)for(var l in s)i.call(s,l)&&s[l]&&t.push(l);else t.push(s.toString())}}return t.join(\" \")}n(e,\"classNames\"),typeof nu<\"u\"&&nu.exports?(e.default=e,nu.exports=e):typeof define==\"function\"&&typeof define.amd==\"object\"&&define.amd?define(\"classnames\",[],function(){return e}):window.classNames=e})()});var iy=he((xT,ty)=>{ty.exports=n(function(e,t){if(e===t)return!0;for(var r in e)if(!(r in t))return!1;for(var r in t)if(e[r]!==t[r])return!1;return!0},\"isShallowEqual\")});var oy=he((VT,sy)=>{sy.exports=n(function(e){if(typeof e!=\"number\"||isNaN(e))throw new TypeError(\"Expected a number, got \"+typeof e);var t=e<0,r=[\"B\",\"KB\",\"MB\",\"GB\",\"TB\",\"PB\",\"EB\",\"ZB\",\"YB\"];if(t&&(e=-e),e<1)return(t?\"-\":\"\")+e+\" B\";var s=Math.min(Math.floor(Math.log(e)/Math.log(1024)),r.length-1);e=Number(e/Math.pow(1024,s));var o=r[s];return e>=10||e%1===0?(t?\"-\":\"\")+e.toFixed(0)+\" \"+o:(t?\"-\":\"\")+e.toFixed(1)+\" \"+o},\"prettierBytes\")});var Ay=he((Vd,Wd)=>{(function(i,e){typeof Vd==\"object\"&&typeof Wd<\"u\"?Wd.exports=e():typeof define==\"function\"&&define.amd?define(e):(i=i||self,i.Cropper=e())})(Vd,function(){\"use strict\";function i(v){\"@babel/helpers - typeof\";return typeof Symbol==\"function\"&&typeof Symbol.iterator==\"symbol\"?i=n(function(c){return typeof c},\"_typeof\"):i=n(function(c){return c&&typeof Symbol==\"function\"&&c.constructor===Symbol&&c!==Symbol.prototype?\"symbol\":typeof c},\"_typeof\"),i(v)}n(i,\"_typeof\");function e(v,c){if(!(v instanceof c))throw new TypeError(\"Cannot call a class as a function\")}n(e,\"_classCallCheck\");function t(v,c){for(var g=0;g<c.length;g++){var m=c[g];m.enumerable=m.enumerable||!1,m.configurable=!0,\"value\"in m&&(m.writable=!0),Object.defineProperty(v,m.key,m)}}n(t,\"_defineProperties\");function r(v,c,g){return c&&t(v.prototype,c),g&&t(v,g),v}n(r,\"_createClass\");function s(v,c,g){return c in v?Object.defineProperty(v,c,{value:g,enumerable:!0,configurable:!0,writable:!0}):v[c]=g,v}n(s,\"_defineProperty\");function o(v,c){var g=Object.keys(v);if(Object.getOwnPropertySymbols){var m=Object.getOwnPropertySymbols(v);c&&(m=m.filter(function(P){return Object.getOwnPropertyDescriptor(v,P).enumerable})),g.push.apply(g,m)}return g}n(o,\"ownKeys\");function a(v){for(var c=1;c<arguments.length;c++){var g=arguments[c]!=null?arguments[c]:{};c%2?o(Object(g),!0).forEach(function(m){s(v,m,g[m])}):Object.getOwnPropertyDescriptors?Object.defineProperties(v,Object.getOwnPropertyDescriptors(g)):o(Object(g)).forEach(function(m){Object.defineProperty(v,m,Object.getOwnPropertyDescriptor(g,m))})}return v}n(a,\"_objectSpread2\");function l(v){return h(v)||p(v)||d(v)||y()}n(l,\"_toConsumableArray\");function h(v){if(Array.isArray(v))return f(v)}n(h,\"_arrayWithoutHoles\");function p(v){if(typeof Symbol<\"u\"&&Symbol.iterator in Object(v))return Array.from(v)}n(p,\"_iterableToArray\");function d(v,c){if(v){if(typeof v==\"string\")return f(v,c);var g=Object.prototype.toString.call(v).slice(8,-1);if(g===\"Object\"&&v.constructor&&(g=v.constructor.name),g===\"Map\"||g===\"Set\")return Array.from(v);if(g===\"Arguments\"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(g))return f(v,c)}}n(d,\"_unsupportedIterableToArray\");function f(v,c){(c==null||c>v.length)&&(c=v.length);for(var g=0,m=new Array(c);g<c;g++)m[g]=v[g];return m}n(f,\"_arrayLikeToArray\");function y(){throw new TypeError(`Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}n(y,\"_nonIterableSpread\");var b=typeof window<\"u\"&&typeof window.document<\"u\",S=b?window:{},E=b&&S.document.documentElement?\"ontouchstart\"in S.document.documentElement:!1,x=b?\"PointerEvent\"in S:!1,F=\"cropper\",U=\"all\",j=\"crop\",G=\"move\",J=\"zoom\",B=\"e\",z=\"w\",K=\"s\",oe=\"n\",Be=\"ne\",Je=\"nw\",wt=\"se\",We=\"sw\",_e=\"\".concat(F,\"-crop\"),ze=\"\".concat(F,\"-disabled\"),xe=\"\".concat(F,\"-hidden\"),ui=\"\".concat(F,\"-hide\"),V=\"\".concat(F,\"-invisible\"),R=\"\".concat(F,\"-modal\"),I=\"\".concat(F,\"-move\"),L=\"\".concat(F,\"Action\"),Q=\"\".concat(F,\"Preview\"),X=\"crop\",ye=\"move\",pe=\"none\",ne=\"crop\",re=\"cropend\",Fe=\"cropmove\",Ee=\"cropstart\",Ft=\"dblclick\",Et=E?\"touchstart\":\"mousedown\",te=E?\"touchmove\":\"mousemove\",Ot=E?\"touchend touchcancel\":\"mouseup\",Ge=x?\"pointerdown\":Et,lr=x?\"pointermove\":te,So=x?\"pointerup pointercancel\":Ot,Hr=\"ready\",$r=\"resize\",qr=\"wheel\",ur=\"zoom\",hr=\"image/jpeg\",nt=/^e|w|s|n|se|sw|ne|nw|all|crop|move|zoom$/,at=/^data:/,wl=/^data:image\\/jpeg;base64,/,Sl=/^img|canvas$/i,nn={viewMode:0,dragMode:X,initialAspectRatio:NaN,aspectRatio:NaN,data:null,preview:\"\",responsive:!0,restore:!0,checkCrossOrigin:!0,checkOrientation:!0,modal:!0,guides:!0,center:!0,highlight:!0,background:!0,autoCrop:!0,autoCropArea:.8,movable:!0,rotatable:!0,scalable:!0,zoomable:!0,zoomOnTouch:!0,zoomOnWheel:!0,wheelZoomRatio:.1,cropBoxMovable:!0,cropBoxResizable:!0,toggleDragModeOnDblclick:!0,minCanvasWidth:0,minCanvasHeight:0,minCropBoxWidth:0,minCropBoxHeight:0,minContainerWidth:200,minContainerHeight:100,ready:null,cropstart:null,cropmove:null,cropend:null,crop:null,zoom:null},Pl='<div class=\"cropper-container\" touch-action=\"none\"><div class=\"cropper-wrap-box\"><div class=\"cropper-canvas\"></div></div><div class=\"cropper-drag-box\"></div><div class=\"cropper-crop-box\"><span class=\"cropper-view-box\"></span><span class=\"cropper-dashed dashed-h\"></span><span class=\"cropper-dashed dashed-v\"></span><span class=\"cropper-center\"></span><span class=\"cropper-face\"></span><span class=\"cropper-line line-e\" data-cropper-action=\"e\"></span><span class=\"cropper-line line-n\" data-cropper-action=\"n\"></span><span class=\"cropper-line line-w\" data-cropper-action=\"w\"></span><span class=\"cropper-line line-s\" data-cropper-action=\"s\"></span><span class=\"cropper-point point-e\" data-cropper-action=\"e\"></span><span class=\"cropper-point point-n\" data-cropper-action=\"n\"></span><span class=\"cropper-point point-w\" data-cropper-action=\"w\"></span><span class=\"cropper-point point-s\" data-cropper-action=\"s\"></span><span class=\"cropper-point point-ne\" data-cropper-action=\"ne\"></span><span class=\"cropper-point point-nw\" data-cropper-action=\"nw\"></span><span class=\"cropper-point point-sw\" data-cropper-action=\"sw\"></span><span class=\"cropper-point point-se\" data-cropper-action=\"se\"></span></div></div>',_l=Number.isNaN||S.isNaN;function ie(v){return typeof v==\"number\"&&!_l(v)}n(ie,\"isNumber\");var an=n(function(c){return c>0&&c<1/0},\"isPositiveNumber\");function Po(v){return typeof v>\"u\"}n(Po,\"isUndefined\");function Ni(v){return i(v)===\"object\"&&v!==null}n(Ni,\"isObject\");var hh=Object.prototype.hasOwnProperty;function Vr(v){if(!Ni(v))return!1;try{var c=v.constructor,g=c.prototype;return c&&g&&hh.call(g,\"isPrototypeOf\")}catch{return!1}}n(Vr,\"isPlainObject\");function St(v){return typeof v==\"function\"}n(St,\"isFunction\");var dh=Array.prototype.slice;function _o(v){return Array.from?Array.from(v):dh.call(v)}n(_o,\"toArray\");function Re(v,c){return v&&St(c)&&(Array.isArray(v)||ie(v.length)?_o(v).forEach(function(g,m){c.call(v,g,m,v)}):Ni(v)&&Object.keys(v).forEach(function(g){c.call(v,v[g],g,v)})),v}n(Re,\"forEach\");var Se=Object.assign||n(function(c){for(var g=arguments.length,m=new Array(g>1?g-1:0),P=1;P<g;P++)m[P-1]=arguments[P];return Ni(c)&&m.length>0&&m.forEach(function(w){Ni(w)&&Object.keys(w).forEach(function(_){c[_]=w[_]})}),c},\"assign\"),ln=/\\.\\d*(?:0|9){12}\\d*$/;function Mi(v){var c=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1e11;return ln.test(v)?Math.round(v*c)/c:v}n(Mi,\"normalizeDecimalNumber\");var xl=/^width|height|left|top|marginLeft|marginTop$/;function vi(v,c){var g=v.style;Re(c,function(m,P){xl.test(P)&&ie(m)&&(m=\"\".concat(m,\"px\")),g[P]=m})}n(vi,\"setStyle\");function Fl(v,c){return v.classList?v.classList.contains(c):v.className.indexOf(c)>-1}n(Fl,\"hasClass\");function je(v,c){if(c){if(ie(v.length)){Re(v,function(m){je(m,c)});return}if(v.classList){v.classList.add(c);return}var g=v.className.trim();g?g.indexOf(c)<0&&(v.className=\"\".concat(g,\" \").concat(c)):v.className=c}}n(je,\"addClass\");function bi(v,c){if(c){if(ie(v.length)){Re(v,function(g){bi(g,c)});return}if(v.classList){v.classList.remove(c);return}v.className.indexOf(c)>=0&&(v.className=v.className.replace(c,\"\"))}}n(bi,\"removeClass\");function Wr(v,c,g){if(c){if(ie(v.length)){Re(v,function(m){Wr(m,c,g)});return}g?je(v,c):bi(v,c)}}n(Wr,\"toggleClass\");var yb=/([a-z\\d])([A-Z])/g;function ch(v){return v.replace(yb,\"$1-$2\").toLowerCase()}n(ch,\"toParamCase\");function ph(v,c){return Ni(v[c])?v[c]:v.dataset?v.dataset[c]:v.getAttribute(\"data-\".concat(ch(c)))}n(ph,\"getData\");function un(v,c,g){Ni(g)?v[c]=g:v.dataset?v.dataset[c]=g:v.setAttribute(\"data-\".concat(ch(c)),g)}n(un,\"setData\");function vb(v,c){if(Ni(v[c]))try{delete v[c]}catch{v[c]=void 0}else if(v.dataset)try{delete v.dataset[c]}catch{v.dataset[c]=void 0}else v.removeAttribute(\"data-\".concat(ch(c)))}n(vb,\"removeData\");var Vp=/\\s\\s*/,Wp=function(){var v=!1;if(b){var c=!1,g=n(function(){},\"listener\"),m=Object.defineProperty({},\"once\",{get:n(function(){return v=!0,c},\"get\"),set:n(function(w){c=w},\"set\")});S.addEventListener(\"test\",g,m),S.removeEventListener(\"test\",g,m)}return v}();function wi(v,c,g){var m=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},P=g;c.trim().split(Vp).forEach(function(w){if(!Wp){var _=v.listeners;_&&_[w]&&_[w][g]&&(P=_[w][g],delete _[w][g],Object.keys(_[w]).length===0&&delete _[w],Object.keys(_).length===0&&delete v.listeners)}v.removeEventListener(w,P,m)})}n(wi,\"removeListener\");function hi(v,c,g){var m=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},P=g;c.trim().split(Vp).forEach(function(w){if(m.once&&!Wp){var _=v.listeners,O=_===void 0?{}:_;P=n(function(){delete O[w][g],v.removeEventListener(w,P,m);for(var A=arguments.length,T=new Array(A),C=0;C<A;C++)T[C]=arguments[C];g.apply(v,T)},\"handler\"),O[w]||(O[w]={}),O[w][g]&&v.removeEventListener(w,O[w][g],m),O[w][g]=P,v.listeners=O}v.addEventListener(w,P,m)})}n(hi,\"addListener\");function xo(v,c,g){var m;return St(Event)&&St(CustomEvent)?m=new CustomEvent(c,{detail:g,bubbles:!0,cancelable:!0}):(m=document.createEvent(\"CustomEvent\"),m.initCustomEvent(c,!0,!0,g)),v.dispatchEvent(m)}n(xo,\"dispatchEvent\");function Gp(v){var c=v.getBoundingClientRect();return{left:c.left+(window.pageXOffset-document.documentElement.clientLeft),top:c.top+(window.pageYOffset-document.documentElement.clientTop)}}n(Gp,\"getOffset\");var fh=S.location,bb=/^(\\w+:)\\/\\/([^:/?#]*):?(\\d*)/i;function Kp(v){var c=v.match(bb);return c!==null&&(c[1]!==fh.protocol||c[2]!==fh.hostname||c[3]!==fh.port)}n(Kp,\"isCrossOriginURL\");function Xp(v){var c=\"timestamp=\".concat(new Date().getTime());return v+(v.indexOf(\"?\")===-1?\"?\":\"&\")+c}n(Xp,\"addTimestamp\");function hn(v){var c=v.rotate,g=v.scaleX,m=v.scaleY,P=v.translateX,w=v.translateY,_=[];ie(P)&&P!==0&&_.push(\"translateX(\".concat(P,\"px)\")),ie(w)&&w!==0&&_.push(\"translateY(\".concat(w,\"px)\")),ie(c)&&c!==0&&_.push(\"rotate(\".concat(c,\"deg)\")),ie(g)&&g!==1&&_.push(\"scaleX(\".concat(g,\")\")),ie(m)&&m!==1&&_.push(\"scaleY(\".concat(m,\")\"));var O=_.length?_.join(\" \"):\"none\";return{WebkitTransform:O,msTransform:O,transform:O}}n(hn,\"getTransforms\");function wb(v){var c=a({},v),g=[];return Re(v,function(m,P){delete c[P],Re(c,function(w){var _=Math.abs(m.startX-w.startX),O=Math.abs(m.startY-w.startY),D=Math.abs(m.endX-w.endX),A=Math.abs(m.endY-w.endY),T=Math.sqrt(_*_+O*O),C=Math.sqrt(D*D+A*A),k=(C-T)/T;g.push(k)})}),g.sort(function(m,P){return Math.abs(m)<Math.abs(P)}),g[0]}n(wb,\"getMaxZoomRatio\");function El(v,c){var g=v.pageX,m=v.pageY,P={endX:g,endY:m};return c?P:a({startX:g,startY:m},P)}n(El,\"getPointer\");function Sb(v){var c=0,g=0,m=0;return Re(v,function(P){var w=P.startX,_=P.startY;c+=w,g+=_,m+=1}),c/=m,g/=m,{pageX:c,pageY:g}}n(Sb,\"getPointersCenter\");function Gr(v){var c=v.aspectRatio,g=v.height,m=v.width,P=arguments.length>1&&arguments[1]!==void 0?arguments[1]:\"contain\",w=an(m),_=an(g);if(w&&_){var O=g*c;P===\"contain\"&&O>m||P===\"cover\"&&O<m?g=m/c:m=g*c}else w?g=m/c:_&&(m=g*c);return{width:m,height:g}}n(Gr,\"getAdjustedSizes\");function Pb(v){var c=v.width,g=v.height,m=v.degree;if(m=Math.abs(m)%180,m===90)return{width:g,height:c};var P=m%90*Math.PI/180,w=Math.sin(P),_=Math.cos(P),O=c*_+g*w,D=c*w+g*_;return m>90?{width:D,height:O}:{width:O,height:D}}n(Pb,\"getRotatedSizes\");function _b(v,c,g,m){var P=c.aspectRatio,w=c.naturalWidth,_=c.naturalHeight,O=c.rotate,D=O===void 0?0:O,A=c.scaleX,T=A===void 0?1:A,C=c.scaleY,k=C===void 0?1:C,ue=g.aspectRatio,le=g.naturalWidth,Ce=g.naturalHeight,fe=m.fillColor,Ze=fe===void 0?\"transparent\":fe,lt=m.imageSmoothingEnabled,Ke=lt===void 0?!0:lt,dr=m.imageSmoothingQuality,Wt=dr===void 0?\"low\":dr,M=m.maxWidth,me=M===void 0?1/0:M,et=m.maxHeight,di=et===void 0?1/0:et,cr=m.minWidth,ps=cr===void 0?0:cr,fs=m.minHeight,Kr=fs===void 0?0:fs,Li=document.createElement(\"canvas\"),jt=Li.getContext(\"2d\"),ms=Gr({aspectRatio:ue,width:me,height:di}),Ol=Gr({aspectRatio:ue,width:ps,height:Kr},\"cover\"),mh=Math.min(ms.width,Math.max(Ol.width,le)),gh=Math.min(ms.height,Math.max(Ol.height,Ce)),Jp=Gr({aspectRatio:P,width:me,height:di}),Zp=Gr({aspectRatio:P,width:ps,height:Kr},\"cover\"),ef=Math.min(Jp.width,Math.max(Zp.width,w)),tf=Math.min(Jp.height,Math.max(Zp.height,_)),Mb=[-ef/2,-tf/2,ef,tf];return Li.width=Mi(mh),Li.height=Mi(gh),jt.fillStyle=Ze,jt.fillRect(0,0,mh,gh),jt.save(),jt.translate(mh/2,gh/2),jt.rotate(D*Math.PI/180),jt.scale(T,k),jt.imageSmoothingEnabled=Ke,jt.imageSmoothingQuality=Wt,jt.drawImage.apply(jt,[v].concat(l(Mb.map(function(Lb){return Math.floor(Mi(Lb))})))),jt.restore(),Li}n(_b,\"getSourceCanvas\");var Yp=String.fromCharCode;function xb(v,c,g){var m=\"\";g+=c;for(var P=c;P<g;P+=1)m+=Yp(v.getUint8(P));return m}n(xb,\"getStringFromCharCode\");var Fb=/^data:.*,/;function Eb(v){var c=v.replace(Fb,\"\"),g=atob(c),m=new ArrayBuffer(g.length),P=new Uint8Array(m);return Re(P,function(w,_){P[_]=g.charCodeAt(_)}),m}n(Eb,\"dataURLToArrayBuffer\");function Ob(v,c){for(var g=[],m=8192,P=new Uint8Array(v);P.length>0;)g.push(Yp.apply(null,_o(P.subarray(0,m)))),P=P.subarray(m);return\"data:\".concat(c,\";base64,\").concat(btoa(g.join(\"\")))}n(Ob,\"arrayBufferToDataURL\");function Cb(v){var c=new DataView(v),g;try{var m,P,w;if(c.getUint8(0)===255&&c.getUint8(1)===216)for(var _=c.byteLength,O=2;O+1<_;){if(c.getUint8(O)===255&&c.getUint8(O+1)===225){P=O;break}O+=1}if(P){var D=P+4,A=P+10;if(xb(c,D,4)===\"Exif\"){var T=c.getUint16(A);if(m=T===18761,(m||T===19789)&&c.getUint16(A+2,m)===42){var C=c.getUint32(A+4,m);C>=8&&(w=A+C)}}}if(w){var k=c.getUint16(w,m),ue,le;for(le=0;le<k;le+=1)if(ue=w+le*12+2,c.getUint16(ue,m)===274){ue+=8,g=c.getUint16(ue,m),c.setUint16(ue,1,m);break}}}catch{g=1}return g}n(Cb,\"resetAndGetOrientation\");function Tb(v){var c=0,g=1,m=1;switch(v){case 2:g=-1;break;case 3:c=-180;break;case 4:m=-1;break;case 5:c=90,m=-1;break;case 6:c=90;break;case 7:c=90,g=-1;break;case 8:c=-90;break}return{rotate:c,scaleX:g,scaleY:m}}n(Tb,\"parseOrientation\");var Ab={render:n(function(){this.initContainer(),this.initCanvas(),this.initCropBox(),this.renderCanvas(),this.cropped&&this.renderCropBox()},\"render\"),initContainer:n(function(){var c=this.element,g=this.options,m=this.container,P=this.cropper;je(P,xe),bi(c,xe);var w={width:Math.max(m.offsetWidth,Number(g.minContainerWidth)||200),height:Math.max(m.offsetHeight,Number(g.minContainerHeight)||100)};this.containerData=w,vi(P,{width:w.width,height:w.height}),je(c,xe),bi(P,xe)},\"initContainer\"),initCanvas:n(function(){var c=this.containerData,g=this.imageData,m=this.options.viewMode,P=Math.abs(g.rotate)%180===90,w=P?g.naturalHeight:g.naturalWidth,_=P?g.naturalWidth:g.naturalHeight,O=w/_,D=c.width,A=c.height;c.height*O>c.width?m===3?D=c.height*O:A=c.width/O:m===3?A=c.width/O:D=c.height*O;var T={aspectRatio:O,naturalWidth:w,naturalHeight:_,width:D,height:A};T.left=(c.width-D)/2,T.top=(c.height-A)/2,T.oldLeft=T.left,T.oldTop=T.top,this.canvasData=T,this.limited=m===1||m===2,this.limitCanvas(!0,!0),this.initialImageData=Se({},g),this.initialCanvasData=Se({},T)},\"initCanvas\"),limitCanvas:n(function(c,g){var m=this.options,P=this.containerData,w=this.canvasData,_=this.cropBoxData,O=m.viewMode,D=w.aspectRatio,A=this.cropped&&_;if(c){var T=Number(m.minCanvasWidth)||0,C=Number(m.minCanvasHeight)||0;O>1?(T=Math.max(T,P.width),C=Math.max(C,P.height),O===3&&(C*D>T?T=C*D:C=T/D)):O>0&&(T?T=Math.max(T,A?_.width:0):C?C=Math.max(C,A?_.height:0):A&&(T=_.width,C=_.height,C*D>T?T=C*D:C=T/D));var k=Gr({aspectRatio:D,width:T,height:C});T=k.width,C=k.height,w.minWidth=T,w.minHeight=C,w.maxWidth=1/0,w.maxHeight=1/0}if(g)if(O>(A?0:1)){var ue=P.width-w.width,le=P.height-w.height;w.minLeft=Math.min(0,ue),w.minTop=Math.min(0,le),w.maxLeft=Math.max(0,ue),w.maxTop=Math.max(0,le),A&&this.limited&&(w.minLeft=Math.min(_.left,_.left+(_.width-w.width)),w.minTop=Math.min(_.top,_.top+(_.height-w.height)),w.maxLeft=_.left,w.maxTop=_.top,O===2&&(w.width>=P.width&&(w.minLeft=Math.min(0,ue),w.maxLeft=Math.max(0,ue)),w.height>=P.height&&(w.minTop=Math.min(0,le),w.maxTop=Math.max(0,le))))}else w.minLeft=-w.width,w.minTop=-w.height,w.maxLeft=P.width,w.maxTop=P.height},\"limitCanvas\"),renderCanvas:n(function(c,g){var m=this.canvasData,P=this.imageData;if(g){var w=Pb({width:P.naturalWidth*Math.abs(P.scaleX||1),height:P.naturalHeight*Math.abs(P.scaleY||1),degree:P.rotate||0}),_=w.width,O=w.height,D=m.width*(_/m.naturalWidth),A=m.height*(O/m.naturalHeight);m.left-=(D-m.width)/2,m.top-=(A-m.height)/2,m.width=D,m.height=A,m.aspectRatio=_/O,m.naturalWidth=_,m.naturalHeight=O,this.limitCanvas(!0,!1)}(m.width>m.maxWidth||m.width<m.minWidth)&&(m.left=m.oldLeft),(m.height>m.maxHeight||m.height<m.minHeight)&&(m.top=m.oldTop),m.width=Math.min(Math.max(m.width,m.minWidth),m.maxWidth),m.height=Math.min(Math.max(m.height,m.minHeight),m.maxHeight),this.limitCanvas(!1,!0),m.left=Math.min(Math.max(m.left,m.minLeft),m.maxLeft),m.top=Math.min(Math.max(m.top,m.minTop),m.maxTop),m.oldLeft=m.left,m.oldTop=m.top,vi(this.canvas,Se({width:m.width,height:m.height},hn({translateX:m.left,translateY:m.top}))),this.renderImage(c),this.cropped&&this.limited&&this.limitCropBox(!0,!0)},\"renderCanvas\"),renderImage:n(function(c){var g=this.canvasData,m=this.imageData,P=m.naturalWidth*(g.width/g.naturalWidth),w=m.naturalHeight*(g.height/g.naturalHeight);Se(m,{width:P,height:w,left:(g.width-P)/2,top:(g.height-w)/2}),vi(this.image,Se({width:m.width,height:m.height},hn(Se({translateX:m.left,translateY:m.top},m)))),c&&this.output()},\"renderImage\"),initCropBox:n(function(){var c=this.options,g=this.canvasData,m=c.aspectRatio||c.initialAspectRatio,P=Number(c.autoCropArea)||.8,w={width:g.width,height:g.height};m&&(g.height*m>g.width?w.height=w.width/m:w.width=w.height*m),this.cropBoxData=w,this.limitCropBox(!0,!0),w.width=Math.min(Math.max(w.width,w.minWidth),w.maxWidth),w.height=Math.min(Math.max(w.height,w.minHeight),w.maxHeight),w.width=Math.max(w.minWidth,w.width*P),w.height=Math.max(w.minHeight,w.height*P),w.left=g.left+(g.width-w.width)/2,w.top=g.top+(g.height-w.height)/2,w.oldLeft=w.left,w.oldTop=w.top,this.initialCropBoxData=Se({},w)},\"initCropBox\"),limitCropBox:n(function(c,g){var m=this.options,P=this.containerData,w=this.canvasData,_=this.cropBoxData,O=this.limited,D=m.aspectRatio;if(c){var A=Number(m.minCropBoxWidth)||0,T=Number(m.minCropBoxHeight)||0,C=O?Math.min(P.width,w.width,w.width+w.left,P.width-w.left):P.width,k=O?Math.min(P.height,w.height,w.height+w.top,P.height-w.top):P.height;A=Math.min(A,P.width),T=Math.min(T,P.height),D&&(A&&T?T*D>A?T=A/D:A=T*D:A?T=A/D:T&&(A=T*D),k*D>C?k=C/D:C=k*D),_.minWidth=Math.min(A,C),_.minHeight=Math.min(T,k),_.maxWidth=C,_.maxHeight=k}g&&(O?(_.minLeft=Math.max(0,w.left),_.minTop=Math.max(0,w.top),_.maxLeft=Math.min(P.width,w.left+w.width)-_.width,_.maxTop=Math.min(P.height,w.top+w.height)-_.height):(_.minLeft=0,_.minTop=0,_.maxLeft=P.width-_.width,_.maxTop=P.height-_.height))},\"limitCropBox\"),renderCropBox:n(function(){var c=this.options,g=this.containerData,m=this.cropBoxData;(m.width>m.maxWidth||m.width<m.minWidth)&&(m.left=m.oldLeft),(m.height>m.maxHeight||m.height<m.minHeight)&&(m.top=m.oldTop),m.width=Math.min(Math.max(m.width,m.minWidth),m.maxWidth),m.height=Math.min(Math.max(m.height,m.minHeight),m.maxHeight),this.limitCropBox(!1,!0),m.left=Math.min(Math.max(m.left,m.minLeft),m.maxLeft),m.top=Math.min(Math.max(m.top,m.minTop),m.maxTop),m.oldLeft=m.left,m.oldTop=m.top,c.movable&&c.cropBoxMovable&&un(this.face,L,m.width>=g.width&&m.height>=g.height?G:U),vi(this.cropBox,Se({width:m.width,height:m.height},hn({translateX:m.left,translateY:m.top}))),this.cropped&&this.limited&&this.limitCanvas(!0,!0),this.disabled||this.output()},\"renderCropBox\"),output:n(function(){this.preview(),xo(this.element,ne,this.getData())},\"output\")},Rb={initPreview:n(function(){var c=this.element,g=this.crossOrigin,m=this.options.preview,P=g?this.crossOriginUrl:this.url,w=c.alt||\"The image to preview\",_=document.createElement(\"img\");if(g&&(_.crossOrigin=g),_.src=P,_.alt=w,this.viewBox.appendChild(_),this.viewBoxImage=_,!!m){var O=m;typeof m==\"string\"?O=c.ownerDocument.querySelectorAll(m):m.querySelector&&(O=[m]),this.previews=O,Re(O,function(D){var A=document.createElement(\"img\");un(D,Q,{width:D.offsetWidth,height:D.offsetHeight,html:D.innerHTML}),g&&(A.crossOrigin=g),A.src=P,A.alt=w,A.style.cssText='display:block;width:100%;height:auto;min-width:0!important;min-height:0!important;max-width:none!important;max-height:none!important;image-orientation:0deg!important;\"',D.innerHTML=\"\",D.appendChild(A)})}},\"initPreview\"),resetPreview:n(function(){Re(this.previews,function(c){var g=ph(c,Q);vi(c,{width:g.width,height:g.height}),c.innerHTML=g.html,vb(c,Q)})},\"resetPreview\"),preview:n(function(){var c=this.imageData,g=this.canvasData,m=this.cropBoxData,P=m.width,w=m.height,_=c.width,O=c.height,D=m.left-g.left-c.left,A=m.top-g.top-c.top;!this.cropped||this.disabled||(vi(this.viewBoxImage,Se({width:_,height:O},hn(Se({translateX:-D,translateY:-A},c)))),Re(this.previews,function(T){var C=ph(T,Q),k=C.width,ue=C.height,le=k,Ce=ue,fe=1;P&&(fe=k/P,Ce=w*fe),w&&Ce>ue&&(fe=ue/w,le=P*fe,Ce=ue),vi(T,{width:le,height:Ce}),vi(T.getElementsByTagName(\"img\")[0],Se({width:_*fe,height:O*fe},hn(Se({translateX:-D*fe,translateY:-A*fe},c))))}))},\"preview\")},Ub={bind:n(function(){var c=this.element,g=this.options,m=this.cropper;St(g.cropstart)&&hi(c,Ee,g.cropstart),St(g.cropmove)&&hi(c,Fe,g.cropmove),St(g.cropend)&&hi(c,re,g.cropend),St(g.crop)&&hi(c,ne,g.crop),St(g.zoom)&&hi(c,ur,g.zoom),hi(m,Ge,this.onCropStart=this.cropStart.bind(this)),g.zoomable&&g.zoomOnWheel&&hi(m,qr,this.onWheel=this.wheel.bind(this),{passive:!1,capture:!0}),g.toggleDragModeOnDblclick&&hi(m,Ft,this.onDblclick=this.dblclick.bind(this)),hi(c.ownerDocument,lr,this.onCropMove=this.cropMove.bind(this)),hi(c.ownerDocument,So,this.onCropEnd=this.cropEnd.bind(this)),g.responsive&&hi(window,$r,this.onResize=this.resize.bind(this))},\"bind\"),unbind:n(function(){var c=this.element,g=this.options,m=this.cropper;St(g.cropstart)&&wi(c,Ee,g.cropstart),St(g.cropmove)&&wi(c,Fe,g.cropmove),St(g.cropend)&&wi(c,re,g.cropend),St(g.crop)&&wi(c,ne,g.crop),St(g.zoom)&&wi(c,ur,g.zoom),wi(m,Ge,this.onCropStart),g.zoomable&&g.zoomOnWheel&&wi(m,qr,this.onWheel,{passive:!1,capture:!0}),g.toggleDragModeOnDblclick&&wi(m,Ft,this.onDblclick),wi(c.ownerDocument,lr,this.onCropMove),wi(c.ownerDocument,So,this.onCropEnd),g.responsive&&wi(window,$r,this.onResize)},\"unbind\")},kb={resize:n(function(){if(!this.disabled){var c=this.options,g=this.container,m=this.containerData,P=g.offsetWidth/m.width;if(P!==1||g.offsetHeight!==m.height){var w,_;c.restore&&(w=this.getCanvasData(),_=this.getCropBoxData()),this.render(),c.restore&&(this.setCanvasData(Re(w,function(O,D){w[D]=O*P})),this.setCropBoxData(Re(_,function(O,D){_[D]=O*P})))}}},\"resize\"),dblclick:n(function(){this.disabled||this.options.dragMode===pe||this.setDragMode(Fl(this.dragBox,_e)?ye:X)},\"dblclick\"),wheel:n(function(c){var g=this,m=Number(this.options.wheelZoomRatio)||.1,P=1;this.disabled||(c.preventDefault(),!this.wheeling&&(this.wheeling=!0,setTimeout(function(){g.wheeling=!1},50),c.deltaY?P=c.deltaY>0?1:-1:c.wheelDelta?P=-c.wheelDelta/120:c.detail&&(P=c.detail>0?1:-1),this.zoom(-P*m,c)))},\"wheel\"),cropStart:n(function(c){var g=c.buttons,m=c.button;if(!(this.disabled||(c.type===\"mousedown\"||c.type===\"pointerdown\"&&c.pointerType===\"mouse\")&&(ie(g)&&g!==1||ie(m)&&m!==0||c.ctrlKey))){var P=this.options,w=this.pointers,_;c.changedTouches?Re(c.changedTouches,function(O){w[O.identifier]=El(O)}):w[c.pointerId||0]=El(c),Object.keys(w).length>1&&P.zoomable&&P.zoomOnTouch?_=J:_=ph(c.target,L),nt.test(_)&&xo(this.element,Ee,{originalEvent:c,action:_})!==!1&&(c.preventDefault(),this.action=_,this.cropping=!1,_===j&&(this.cropping=!0,je(this.dragBox,R)))}},\"cropStart\"),cropMove:n(function(c){var g=this.action;if(!(this.disabled||!g)){var m=this.pointers;c.preventDefault(),xo(this.element,Fe,{originalEvent:c,action:g})!==!1&&(c.changedTouches?Re(c.changedTouches,function(P){Se(m[P.identifier]||{},El(P,!0))}):Se(m[c.pointerId||0]||{},El(c,!0)),this.change(c))}},\"cropMove\"),cropEnd:n(function(c){if(!this.disabled){var g=this.action,m=this.pointers;c.changedTouches?Re(c.changedTouches,function(P){delete m[P.identifier]}):delete m[c.pointerId||0],g&&(c.preventDefault(),Object.keys(m).length||(this.action=\"\"),this.cropping&&(this.cropping=!1,Wr(this.dragBox,R,this.cropped&&this.options.modal)),xo(this.element,re,{originalEvent:c,action:g}))}},\"cropEnd\")},Db={change:n(function(c){var g=this.options,m=this.canvasData,P=this.containerData,w=this.cropBoxData,_=this.pointers,O=this.action,D=g.aspectRatio,A=w.left,T=w.top,C=w.width,k=w.height,ue=A+C,le=T+k,Ce=0,fe=0,Ze=P.width,lt=P.height,Ke=!0,dr;!D&&c.shiftKey&&(D=C&&k?C/k:1),this.limited&&(Ce=w.minLeft,fe=w.minTop,Ze=Ce+Math.min(P.width,m.width,m.left+m.width),lt=fe+Math.min(P.height,m.height,m.top+m.height));var Wt=_[Object.keys(_)[0]],M={x:Wt.endX-Wt.startX,y:Wt.endY-Wt.startY},me=n(function(di){switch(di){case B:ue+M.x>Ze&&(M.x=Ze-ue);break;case z:A+M.x<Ce&&(M.x=Ce-A);break;case oe:T+M.y<fe&&(M.y=fe-T);break;case K:le+M.y>lt&&(M.y=lt-le);break}},\"check\");switch(O){case U:A+=M.x,T+=M.y;break;case B:if(M.x>=0&&(ue>=Ze||D&&(T<=fe||le>=lt))){Ke=!1;break}me(B),C+=M.x,C<0&&(O=z,C=-C,A-=C),D&&(k=C/D,T+=(w.height-k)/2);break;case oe:if(M.y<=0&&(T<=fe||D&&(A<=Ce||ue>=Ze))){Ke=!1;break}me(oe),k-=M.y,T+=M.y,k<0&&(O=K,k=-k,T-=k),D&&(C=k*D,A+=(w.width-C)/2);break;case z:if(M.x<=0&&(A<=Ce||D&&(T<=fe||le>=lt))){Ke=!1;break}me(z),C-=M.x,A+=M.x,C<0&&(O=B,C=-C,A-=C),D&&(k=C/D,T+=(w.height-k)/2);break;case K:if(M.y>=0&&(le>=lt||D&&(A<=Ce||ue>=Ze))){Ke=!1;break}me(K),k+=M.y,k<0&&(O=oe,k=-k,T-=k),D&&(C=k*D,A+=(w.width-C)/2);break;case Be:if(D){if(M.y<=0&&(T<=fe||ue>=Ze)){Ke=!1;break}me(oe),k-=M.y,T+=M.y,C=k*D}else me(oe),me(B),M.x>=0?ue<Ze?C+=M.x:M.y<=0&&T<=fe&&(Ke=!1):C+=M.x,M.y<=0?T>fe&&(k-=M.y,T+=M.y):(k-=M.y,T+=M.y);C<0&&k<0?(O=We,k=-k,C=-C,T-=k,A-=C):C<0?(O=Je,C=-C,A-=C):k<0&&(O=wt,k=-k,T-=k);break;case Je:if(D){if(M.y<=0&&(T<=fe||A<=Ce)){Ke=!1;break}me(oe),k-=M.y,T+=M.y,C=k*D,A+=w.width-C}else me(oe),me(z),M.x<=0?A>Ce?(C-=M.x,A+=M.x):M.y<=0&&T<=fe&&(Ke=!1):(C-=M.x,A+=M.x),M.y<=0?T>fe&&(k-=M.y,T+=M.y):(k-=M.y,T+=M.y);C<0&&k<0?(O=wt,k=-k,C=-C,T-=k,A-=C):C<0?(O=Be,C=-C,A-=C):k<0&&(O=We,k=-k,T-=k);break;case We:if(D){if(M.x<=0&&(A<=Ce||le>=lt)){Ke=!1;break}me(z),C-=M.x,A+=M.x,k=C/D}else me(K),me(z),M.x<=0?A>Ce?(C-=M.x,A+=M.x):M.y>=0&&le>=lt&&(Ke=!1):(C-=M.x,A+=M.x),M.y>=0?le<lt&&(k+=M.y):k+=M.y;C<0&&k<0?(O=Be,k=-k,C=-C,T-=k,A-=C):C<0?(O=wt,C=-C,A-=C):k<0&&(O=Je,k=-k,T-=k);break;case wt:if(D){if(M.x>=0&&(ue>=Ze||le>=lt)){Ke=!1;break}me(B),C+=M.x,k=C/D}else me(K),me(B),M.x>=0?ue<Ze?C+=M.x:M.y>=0&&le>=lt&&(Ke=!1):C+=M.x,M.y>=0?le<lt&&(k+=M.y):k+=M.y;C<0&&k<0?(O=Je,k=-k,C=-C,T-=k,A-=C):C<0?(O=We,C=-C,A-=C):k<0&&(O=Be,k=-k,T-=k);break;case G:this.move(M.x,M.y),Ke=!1;break;case J:this.zoom(wb(_),c),Ke=!1;break;case j:if(!M.x||!M.y){Ke=!1;break}dr=Gp(this.cropper),A=Wt.startX-dr.left,T=Wt.startY-dr.top,C=w.minWidth,k=w.minHeight,M.x>0?O=M.y>0?wt:Be:M.x<0&&(A-=C,O=M.y>0?We:Je),M.y<0&&(T-=k),this.cropped||(bi(this.cropBox,xe),this.cropped=!0,this.limited&&this.limitCropBox(!0,!0));break}Ke&&(w.width=C,w.height=k,w.left=A,w.top=T,this.action=O,this.renderCropBox()),Re(_,function(et){et.startX=et.endX,et.startY=et.endY})},\"change\")},Ib={crop:n(function(){return this.ready&&!this.cropped&&!this.disabled&&(this.cropped=!0,this.limitCropBox(!0,!0),this.options.modal&&je(this.dragBox,R),bi(this.cropBox,xe),this.setCropBoxData(this.initialCropBoxData)),this},\"crop\"),reset:n(function(){return this.ready&&!this.disabled&&(this.imageData=Se({},this.initialImageData),this.canvasData=Se({},this.initialCanvasData),this.cropBoxData=Se({},this.initialCropBoxData),this.renderCanvas(),this.cropped&&this.renderCropBox()),this},\"reset\"),clear:n(function(){return this.cropped&&!this.disabled&&(Se(this.cropBoxData,{left:0,top:0,width:0,height:0}),this.cropped=!1,this.renderCropBox(),this.limitCanvas(!0,!0),this.renderCanvas(),bi(this.dragBox,R),je(this.cropBox,xe)),this},\"clear\"),replace:n(function(c){var g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return!this.disabled&&c&&(this.isImg&&(this.element.src=c),g?(this.url=c,this.image.src=c,this.ready&&(this.viewBoxImage.src=c,Re(this.previews,function(m){m.getElementsByTagName(\"img\")[0].src=c}))):(this.isImg&&(this.replaced=!0),this.options.data=null,this.uncreate(),this.load(c))),this},\"replace\"),enable:n(function(){return this.ready&&this.disabled&&(this.disabled=!1,bi(this.cropper,ze)),this},\"enable\"),disable:n(function(){return this.ready&&!this.disabled&&(this.disabled=!0,je(this.cropper,ze)),this},\"disable\"),destroy:n(function(){var c=this.element;return c[F]?(c[F]=void 0,this.isImg&&this.replaced&&(c.src=this.originalUrl),this.uncreate(),this):this},\"destroy\"),move:n(function(c){var g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:c,m=this.canvasData,P=m.left,w=m.top;return this.moveTo(Po(c)?c:P+Number(c),Po(g)?g:w+Number(g))},\"move\"),moveTo:n(function(c){var g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:c,m=this.canvasData,P=!1;return c=Number(c),g=Number(g),this.ready&&!this.disabled&&this.options.movable&&(ie(c)&&(m.left=c,P=!0),ie(g)&&(m.top=g,P=!0),P&&this.renderCanvas(!0)),this},\"moveTo\"),zoom:n(function(c,g){var m=this.canvasData;return c=Number(c),c<0?c=1/(1-c):c=1+c,this.zoomTo(m.width*c/m.naturalWidth,null,g)},\"zoom\"),zoomTo:n(function(c,g,m){var P=this.options,w=this.canvasData,_=w.width,O=w.height,D=w.naturalWidth,A=w.naturalHeight;if(c=Number(c),c>=0&&this.ready&&!this.disabled&&P.zoomable){var T=D*c,C=A*c;if(xo(this.element,ur,{ratio:c,oldRatio:_/D,originalEvent:m})===!1)return this;if(m){var k=this.pointers,ue=Gp(this.cropper),le=k&&Object.keys(k).length?Sb(k):{pageX:m.pageX,pageY:m.pageY};w.left-=(T-_)*((le.pageX-ue.left-w.left)/_),w.top-=(C-O)*((le.pageY-ue.top-w.top)/O)}else Vr(g)&&ie(g.x)&&ie(g.y)?(w.left-=(T-_)*((g.x-w.left)/_),w.top-=(C-O)*((g.y-w.top)/O)):(w.left-=(T-_)/2,w.top-=(C-O)/2);w.width=T,w.height=C,this.renderCanvas(!0)}return this},\"zoomTo\"),rotate:n(function(c){return this.rotateTo((this.imageData.rotate||0)+Number(c))},\"rotate\"),rotateTo:n(function(c){return c=Number(c),ie(c)&&this.ready&&!this.disabled&&this.options.rotatable&&(this.imageData.rotate=c%360,this.renderCanvas(!0,!0)),this},\"rotateTo\"),scaleX:n(function(c){var g=this.imageData.scaleY;return this.scale(c,ie(g)?g:1)},\"scaleX\"),scaleY:n(function(c){var g=this.imageData.scaleX;return this.scale(ie(g)?g:1,c)},\"scaleY\"),scale:n(function(c){var g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:c,m=this.imageData,P=!1;return c=Number(c),g=Number(g),this.ready&&!this.disabled&&this.options.scalable&&(ie(c)&&(m.scaleX=c,P=!0),ie(g)&&(m.scaleY=g,P=!0),P&&this.renderCanvas(!0,!0)),this},\"scale\"),getData:n(function(){var c=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,g=this.options,m=this.imageData,P=this.canvasData,w=this.cropBoxData,_;if(this.ready&&this.cropped){_={x:w.left-P.left,y:w.top-P.top,width:w.width,height:w.height};var O=m.width/m.naturalWidth;if(Re(_,function(T,C){_[C]=T/O}),c){var D=Math.round(_.y+_.height),A=Math.round(_.x+_.width);_.x=Math.round(_.x),_.y=Math.round(_.y),_.width=A-_.x,_.height=D-_.y}}else _={x:0,y:0,width:0,height:0};return g.rotatable&&(_.rotate=m.rotate||0),g.scalable&&(_.scaleX=m.scaleX||1,_.scaleY=m.scaleY||1),_},\"getData\"),setData:n(function(c){var g=this.options,m=this.imageData,P=this.canvasData,w={};if(this.ready&&!this.disabled&&Vr(c)){var _=!1;g.rotatable&&ie(c.rotate)&&c.rotate!==m.rotate&&(m.rotate=c.rotate,_=!0),g.scalable&&(ie(c.scaleX)&&c.scaleX!==m.scaleX&&(m.scaleX=c.scaleX,_=!0),ie(c.scaleY)&&c.scaleY!==m.scaleY&&(m.scaleY=c.scaleY,_=!0)),_&&this.renderCanvas(!0,!0);var O=m.width/m.naturalWidth;ie(c.x)&&(w.left=c.x*O+P.left),ie(c.y)&&(w.top=c.y*O+P.top),ie(c.width)&&(w.width=c.width*O),ie(c.height)&&(w.height=c.height*O),this.setCropBoxData(w)}return this},\"setData\"),getContainerData:n(function(){return this.ready?Se({},this.containerData):{}},\"getContainerData\"),getImageData:n(function(){return this.sized?Se({},this.imageData):{}},\"getImageData\"),getCanvasData:n(function(){var c=this.canvasData,g={};return this.ready&&Re([\"left\",\"top\",\"width\",\"height\",\"naturalWidth\",\"naturalHeight\"],function(m){g[m]=c[m]}),g},\"getCanvasData\"),setCanvasData:n(function(c){var g=this.canvasData,m=g.aspectRatio;return this.ready&&!this.disabled&&Vr(c)&&(ie(c.left)&&(g.left=c.left),ie(c.top)&&(g.top=c.top),ie(c.width)?(g.width=c.width,g.height=c.width/m):ie(c.height)&&(g.height=c.height,g.width=c.height*m),this.renderCanvas(!0)),this},\"setCanvasData\"),getCropBoxData:n(function(){var c=this.cropBoxData,g;return this.ready&&this.cropped&&(g={left:c.left,top:c.top,width:c.width,height:c.height}),g||{}},\"getCropBoxData\"),setCropBoxData:n(function(c){var g=this.cropBoxData,m=this.options.aspectRatio,P,w;return this.ready&&this.cropped&&!this.disabled&&Vr(c)&&(ie(c.left)&&(g.left=c.left),ie(c.top)&&(g.top=c.top),ie(c.width)&&c.width!==g.width&&(P=!0,g.width=c.width),ie(c.height)&&c.height!==g.height&&(w=!0,g.height=c.height),m&&(P?g.height=g.width/m:w&&(g.width=g.height*m)),this.renderCropBox()),this},\"setCropBoxData\"),getCroppedCanvas:n(function(){var c=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!this.ready||!window.HTMLCanvasElement)return null;var g=this.canvasData,m=_b(this.image,this.imageData,g,c);if(!this.cropped)return m;var P=this.getData(),w=P.x,_=P.y,O=P.width,D=P.height,A=m.width/Math.floor(g.naturalWidth);A!==1&&(w*=A,_*=A,O*=A,D*=A);var T=O/D,C=Gr({aspectRatio:T,width:c.maxWidth||1/0,height:c.maxHeight||1/0}),k=Gr({aspectRatio:T,width:c.minWidth||0,height:c.minHeight||0},\"cover\"),ue=Gr({aspectRatio:T,width:c.width||(A!==1?m.width:O),height:c.height||(A!==1?m.height:D)}),le=ue.width,Ce=ue.height;le=Math.min(C.width,Math.max(k.width,le)),Ce=Math.min(C.height,Math.max(k.height,Ce));var fe=document.createElement(\"canvas\"),Ze=fe.getContext(\"2d\");fe.width=Mi(le),fe.height=Mi(Ce),Ze.fillStyle=c.fillColor||\"transparent\",Ze.fillRect(0,0,le,Ce);var lt=c.imageSmoothingEnabled,Ke=lt===void 0?!0:lt,dr=c.imageSmoothingQuality;Ze.imageSmoothingEnabled=Ke,dr&&(Ze.imageSmoothingQuality=dr);var Wt=m.width,M=m.height,me=w,et=_,di,cr,ps,fs,Kr,Li;me<=-O||me>Wt?(me=0,di=0,ps=0,Kr=0):me<=0?(ps=-me,me=0,di=Math.min(Wt,O+me),Kr=di):me<=Wt&&(ps=0,di=Math.min(O,Wt-me),Kr=di),di<=0||et<=-D||et>M?(et=0,cr=0,fs=0,Li=0):et<=0?(fs=-et,et=0,cr=Math.min(M,D+et),Li=cr):et<=M&&(fs=0,cr=Math.min(D,M-et),Li=cr);var jt=[me,et,di,cr];if(Kr>0&&Li>0){var ms=le/O;jt.push(ps*ms,fs*ms,Kr*ms,Li*ms)}return Ze.drawImage.apply(Ze,[m].concat(l(jt.map(function(Ol){return Math.floor(Mi(Ol))})))),fe},\"getCroppedCanvas\"),setAspectRatio:n(function(c){var g=this.options;return!this.disabled&&!Po(c)&&(g.aspectRatio=Math.max(0,c)||NaN,this.ready&&(this.initCropBox(),this.cropped&&this.renderCropBox())),this},\"setAspectRatio\"),setDragMode:n(function(c){var g=this.options,m=this.dragBox,P=this.face;if(this.ready&&!this.disabled){var w=c===X,_=g.movable&&c===ye;c=w||_?c:pe,g.dragMode=c,un(m,L,c),Wr(m,_e,w),Wr(m,I,_),g.cropBoxMovable||(un(P,L,c),Wr(P,_e,w),Wr(P,I,_))}return this},\"setDragMode\")},Nb=S.Cropper,Qp=function(){function v(c){var g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(e(this,v),!c||!Sl.test(c.tagName))throw new Error(\"The first argument is required and must be an <img> or <canvas> element.\");this.element=c,this.options=Se({},nn,Vr(g)&&g),this.cropped=!1,this.disabled=!1,this.pointers={},this.ready=!1,this.reloading=!1,this.replaced=!1,this.sized=!1,this.sizing=!1,this.init()}return n(v,\"Cropper\"),r(v,[{key:\"init\",value:n(function(){var g=this.element,m=g.tagName.toLowerCase(),P;if(!g[F]){if(g[F]=this,m===\"img\"){if(this.isImg=!0,P=g.getAttribute(\"src\")||\"\",this.originalUrl=P,!P)return;P=g.src}else m===\"canvas\"&&window.HTMLCanvasElement&&(P=g.toDataURL());this.load(P)}},\"init\")},{key:\"load\",value:n(function(g){var m=this;if(g){this.url=g,this.imageData={};var P=this.element,w=this.options;if(!w.rotatable&&!w.scalable&&(w.checkOrientation=!1),!w.checkOrientation||!window.ArrayBuffer){this.clone();return}if(at.test(g)){wl.test(g)?this.read(Eb(g)):this.clone();return}var _=new XMLHttpRequest,O=this.clone.bind(this);this.reloading=!0,this.xhr=_,_.onabort=O,_.onerror=O,_.ontimeout=O,_.onprogress=function(){_.getResponseHeader(\"content-type\")!==hr&&_.abort()},_.onload=function(){m.read(_.response)},_.onloadend=function(){m.reloading=!1,m.xhr=null},w.checkCrossOrigin&&Kp(g)&&P.crossOrigin&&(g=Xp(g)),_.open(\"GET\",g),_.responseType=\"arraybuffer\",_.withCredentials=P.crossOrigin===\"use-credentials\",_.send()}},\"load\")},{key:\"read\",value:n(function(g){var m=this.options,P=this.imageData,w=Cb(g),_=0,O=1,D=1;if(w>1){this.url=Ob(g,hr);var A=Tb(w);_=A.rotate,O=A.scaleX,D=A.scaleY}m.rotatable&&(P.rotate=_),m.scalable&&(P.scaleX=O,P.scaleY=D),this.clone()},\"read\")},{key:\"clone\",value:n(function(){var g=this.element,m=this.url,P=g.crossOrigin,w=m;this.options.checkCrossOrigin&&Kp(m)&&(P||(P=\"anonymous\"),w=Xp(m)),this.crossOrigin=P,this.crossOriginUrl=w;var _=document.createElement(\"img\");P&&(_.crossOrigin=P),_.src=w||m,_.alt=g.alt||\"The image to crop\",this.image=_,_.onload=this.start.bind(this),_.onerror=this.stop.bind(this),je(_,ui),g.parentNode.insertBefore(_,g.nextSibling)},\"clone\")},{key:\"start\",value:n(function(){var g=this,m=this.image;m.onload=null,m.onerror=null,this.sizing=!0;var P=S.navigator&&/(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(S.navigator.userAgent),w=n(function(A,T){Se(g.imageData,{naturalWidth:A,naturalHeight:T,aspectRatio:A/T}),g.sizing=!1,g.sized=!0,g.build()},\"done\");if(m.naturalWidth&&!P){w(m.naturalWidth,m.naturalHeight);return}var _=document.createElement(\"img\"),O=document.body||document.documentElement;this.sizingImage=_,_.onload=function(){w(_.width,_.height),P||O.removeChild(_)},_.src=m.src,P||(_.style.cssText=\"left:0;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;opacity:0;position:absolute;top:0;z-index:-1;\",O.appendChild(_))},\"start\")},{key:\"stop\",value:n(function(){var g=this.image;g.onload=null,g.onerror=null,g.parentNode.removeChild(g),this.image=null},\"stop\")},{key:\"build\",value:n(function(){if(!(!this.sized||this.ready)){var g=this.element,m=this.options,P=this.image,w=g.parentNode,_=document.createElement(\"div\");_.innerHTML=Pl;var O=_.querySelector(\".\".concat(F,\"-container\")),D=O.querySelector(\".\".concat(F,\"-canvas\")),A=O.querySelector(\".\".concat(F,\"-drag-box\")),T=O.querySelector(\".\".concat(F,\"-crop-box\")),C=T.querySelector(\".\".concat(F,\"-face\"));this.container=w,this.cropper=O,this.canvas=D,this.dragBox=A,this.cropBox=T,this.viewBox=O.querySelector(\".\".concat(F,\"-view-box\")),this.face=C,D.appendChild(P),je(g,xe),w.insertBefore(O,g.nextSibling),this.isImg||bi(P,ui),this.initPreview(),this.bind(),m.initialAspectRatio=Math.max(0,m.initialAspectRatio)||NaN,m.aspectRatio=Math.max(0,m.aspectRatio)||NaN,m.viewMode=Math.max(0,Math.min(3,Math.round(m.viewMode)))||0,je(T,xe),m.guides||je(T.getElementsByClassName(\"\".concat(F,\"-dashed\")),xe),m.center||je(T.getElementsByClassName(\"\".concat(F,\"-center\")),xe),m.background&&je(O,\"\".concat(F,\"-bg\")),m.highlight||je(C,V),m.cropBoxMovable&&(je(C,I),un(C,L,U)),m.cropBoxResizable||(je(T.getElementsByClassName(\"\".concat(F,\"-line\")),xe),je(T.getElementsByClassName(\"\".concat(F,\"-point\")),xe)),this.render(),this.ready=!0,this.setDragMode(m.dragMode),m.autoCrop&&this.crop(),this.setData(m.data),St(m.ready)&&hi(g,Hr,m.ready,{once:!0}),xo(g,Hr)}},\"build\")},{key:\"unbuild\",value:n(function(){this.ready&&(this.ready=!1,this.unbind(),this.resetPreview(),this.cropper.parentNode.removeChild(this.cropper),bi(this.element,xe))},\"unbuild\")},{key:\"uncreate\",value:n(function(){this.ready?(this.unbuild(),this.ready=!1,this.cropped=!1):this.sizing?(this.sizingImage.onload=null,this.sizing=!1,this.sized=!1):this.reloading?(this.xhr.onabort=null,this.xhr.abort()):this.image&&this.stop()},\"uncreate\")}],[{key:\"noConflict\",value:n(function(){return window.Cropper=Nb,v},\"noConflict\")},{key:\"setDefaults\",value:n(function(g){Se(nn,Vr(g)&&g)},\"setDefaults\")}]),v}();return Se(Qp.prototype,Ab,Rb,Ub,kb,Db,Ib),Qp})});var sv=he((uD,Bu)=>{\"use strict\";Bu.exports=cc;Bu.exports.isMobile=cc;Bu.exports.default=cc;var wP=/(android|bb\\d+|meego).+mobile|armv7l|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series[46]0|samsungbrowser|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i,SP=/CrOS/,PP=/android|ipad|playbook|silk/i;function cc(i){i||(i={});let e=i.ua;if(!e&&typeof navigator<\"u\"&&(e=navigator.userAgent),e&&e.headers&&typeof e.headers[\"user-agent\"]==\"string\"&&(e=e.headers[\"user-agent\"]),typeof e!=\"string\")return!1;let t=wP.test(e)&&!SP.test(e)||!!i.tablet&&PP.test(e);return!t&&i.tablet&&i.featureDetect&&navigator&&navigator.maxTouchPoints>1&&e.indexOf(\"Macintosh\")!==-1&&e.indexOf(\"Safari\")!==-1&&(t=!0),t}n(cc,\"isMobile\")});var Kv=he((c9,Gv)=>{\"use strict\";Gv.exports=n(function(e,t){if(t=t.split(\":\")[0],e=+e,!e)return!1;switch(t){case\"http\":case\"ws\":return e!==80;case\"https\":case\"wss\":return e!==443;case\"ftp\":return e!==21;case\"gopher\":return e!==70;case\"file\":return!1}return e!==0},\"required\")});var Qv=he(Vc=>{\"use strict\";var U_=Object.prototype.hasOwnProperty,k_;function Xv(i){try{return decodeURIComponent(i.replace(/\\+/g,\" \"))}catch{return null}}n(Xv,\"decode\");function Yv(i){try{return encodeURIComponent(i)}catch{return null}}n(Yv,\"encode\");function D_(i){for(var e=/([^=?#&]+)=?([^&]*)/g,t={},r;r=e.exec(i);){var s=Xv(r[1]),o=Xv(r[2]);s===null||o===null||s in t||(t[s]=o)}return t}n(D_,\"querystring\");function I_(i,e){e=e||\"\";var t=[],r,s;typeof e!=\"string\"&&(e=\"?\");for(s in i)if(U_.call(i,s)){if(r=i[s],!r&&(r===null||r===k_||isNaN(r))&&(r=\"\"),s=Yv(s),r=Yv(r),s===null||r===null)continue;t.push(s+\"=\"+r)}return t.length?e+t.join(\"&\"):\"\"}n(I_,\"querystringify\");Vc.stringify=I_;Vc.parse=D_});var o0=he((g9,s0)=>{\"use strict\";var Zv=Kv(),Yu=Qv(),N_=/^[\\x00-\\x20\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]+/,e0=/[\\n\\r\\t]/g,M_=/^[A-Za-z][A-Za-z0-9+-.]*:\\/\\//,t0=/:\\d+$/,L_=/^([a-z][a-z0-9.+-]*:)?(\\/\\/)?([\\\\/]+)?([\\S\\s]*)/i,B_=/^[a-zA-Z]:/;function Gc(i){return(i||\"\").toString().replace(N_,\"\")}n(Gc,\"trimLeft\");var Wc=[[\"#\",\"hash\"],[\"?\",\"query\"],n(function(e,t){return rr(t.protocol)?e.replace(/\\\\/g,\"/\"):e},\"sanitize\"),[\"/\",\"pathname\"],[\"@\",\"auth\",1],[NaN,\"host\",void 0,1,1],[/:(\\d*)$/,\"port\",void 0,1],[NaN,\"hostname\",void 0,1,1]],Jv={hash:1,query:1};function i0(i){var e;typeof window<\"u\"?e=window:typeof global<\"u\"?e=global:typeof self<\"u\"?e=self:e={};var t=e.location||{};i=i||t;var r={},s=typeof i,o;if(i.protocol===\"blob:\")r=new sr(unescape(i.pathname),{});else if(s===\"string\"){r=new sr(i,{});for(o in Jv)delete r[o]}else if(s===\"object\"){for(o in i)o in Jv||(r[o]=i[o]);r.slashes===void 0&&(r.slashes=M_.test(i.href))}return r}n(i0,\"lolcation\");function rr(i){return i===\"file:\"||i===\"ftp:\"||i===\"http:\"||i===\"https:\"||i===\"ws:\"||i===\"wss:\"}n(rr,\"isSpecial\");function r0(i,e){i=Gc(i),i=i.replace(e0,\"\"),e=e||{};var t=L_.exec(i),r=t[1]?t[1].toLowerCase():\"\",s=!!t[2],o=!!t[3],a=0,l;return s?o?(l=t[2]+t[3]+t[4],a=t[2].length+t[3].length):(l=t[2]+t[4],a=t[2].length):o?(l=t[3]+t[4],a=t[3].length):l=t[4],r===\"file:\"?a>=2&&(l=l.slice(2)):rr(r)?l=t[4]:r?s&&(l=l.slice(2)):a>=2&&rr(e.protocol)&&(l=t[4]),{protocol:r,slashes:s||rr(r),slashesCount:a,rest:l}}n(r0,\"extractProtocol\");function z_(i,e){if(i===\"\")return e;for(var t=(e||\"/\").split(\"/\").slice(0,-1).concat(i.split(\"/\")),r=t.length,s=t[r-1],o=!1,a=0;r--;)t[r]===\".\"?t.splice(r,1):t[r]===\"..\"?(t.splice(r,1),a++):a&&(r===0&&(o=!0),t.splice(r,1),a--);return o&&t.unshift(\"\"),(s===\".\"||s===\"..\")&&t.push(\"\"),t.join(\"/\")}n(z_,\"resolve\");function sr(i,e,t){if(i=Gc(i),i=i.replace(e0,\"\"),!(this instanceof sr))return new sr(i,e,t);var r,s,o,a,l,h,p=Wc.slice(),d=typeof e,f=this,y=0;for(d!==\"object\"&&d!==\"string\"&&(t=e,e=null),t&&typeof t!=\"function\"&&(t=Yu.parse),e=i0(e),s=r0(i||\"\",e),r=!s.protocol&&!s.slashes,f.slashes=s.slashes||r&&e.slashes,f.protocol=s.protocol||e.protocol||\"\",i=s.rest,(s.protocol===\"file:\"&&(s.slashesCount!==2||B_.test(i))||!s.slashes&&(s.protocol||s.slashesCount<2||!rr(f.protocol)))&&(p[3]=[/(.*)/,\"pathname\"]);y<p.length;y++){if(a=p[y],typeof a==\"function\"){i=a(i,f);continue}o=a[0],h=a[1],o!==o?f[h]=i:typeof o==\"string\"?(l=o===\"@\"?i.lastIndexOf(o):i.indexOf(o),~l&&(typeof a[2]==\"number\"?(f[h]=i.slice(0,l),i=i.slice(l+a[2])):(f[h]=i.slice(l),i=i.slice(0,l)))):(l=o.exec(i))&&(f[h]=l[1],i=i.slice(0,l.index)),f[h]=f[h]||r&&a[3]&&e[h]||\"\",a[4]&&(f[h]=f[h].toLowerCase())}t&&(f.query=t(f.query)),r&&e.slashes&&f.pathname.charAt(0)!==\"/\"&&(f.pathname!==\"\"||e.pathname!==\"\")&&(f.pathname=z_(f.pathname,e.pathname)),f.pathname.charAt(0)!==\"/\"&&rr(f.protocol)&&(f.pathname=\"/\"+f.pathname),Zv(f.port,f.protocol)||(f.host=f.hostname,f.port=\"\"),f.username=f.password=\"\",f.auth&&(l=f.auth.indexOf(\":\"),~l?(f.username=f.auth.slice(0,l),f.username=encodeURIComponent(decodeURIComponent(f.username)),f.password=f.auth.slice(l+1),f.password=encodeURIComponent(decodeURIComponent(f.password))):f.username=encodeURIComponent(decodeURIComponent(f.auth)),f.auth=f.password?f.username+\":\"+f.password:f.username),f.origin=f.protocol!==\"file:\"&&rr(f.protocol)&&f.host?f.protocol+\"//\"+f.host:\"null\",f.href=f.toString()}n(sr,\"Url\");function j_(i,e,t){var r=this;switch(i){case\"query\":typeof e==\"string\"&&e.length&&(e=(t||Yu.parse)(e)),r[i]=e;break;case\"port\":r[i]=e,Zv(e,r.protocol)?e&&(r.host=r.hostname+\":\"+e):(r.host=r.hostname,r[i]=\"\");break;case\"hostname\":r[i]=e,r.port&&(e+=\":\"+r.port),r.host=e;break;case\"host\":r[i]=e,t0.test(e)?(e=e.split(\":\"),r.port=e.pop(),r.hostname=e.join(\":\")):(r.hostname=e,r.port=\"\");break;case\"protocol\":r.protocol=e.toLowerCase(),r.slashes=!t;break;case\"pathname\":case\"hash\":if(e){var s=i===\"pathname\"?\"/\":\"#\";r[i]=e.charAt(0)!==s?s+e:e}else r[i]=e;break;case\"username\":case\"password\":r[i]=encodeURIComponent(e);break;case\"auth\":var o=e.indexOf(\":\");~o?(r.username=e.slice(0,o),r.username=encodeURIComponent(decodeURIComponent(r.username)),r.password=e.slice(o+1),r.password=encodeURIComponent(decodeURIComponent(r.password))):r.username=encodeURIComponent(decodeURIComponent(e))}for(var a=0;a<Wc.length;a++){var l=Wc[a];l[4]&&(r[l[1]]=r[l[1]].toLowerCase())}return r.auth=r.password?r.username+\":\"+r.password:r.username,r.origin=r.protocol!==\"file:\"&&rr(r.protocol)&&r.host?r.protocol+\"//\"+r.host:\"null\",r.href=r.toString(),r}n(j_,\"set\");function H_(i){(!i||typeof i!=\"function\")&&(i=Yu.stringify);var e,t=this,r=t.host,s=t.protocol;s&&s.charAt(s.length-1)!==\":\"&&(s+=\":\");var o=s+(t.protocol&&t.slashes||rr(t.protocol)?\"//\":\"\");return t.username?(o+=t.username,t.password&&(o+=\":\"+t.password),o+=\"@\"):t.password?(o+=\":\"+t.password,o+=\"@\"):t.protocol!==\"file:\"&&rr(t.protocol)&&!r&&t.pathname!==\"/\"&&(o+=\"@\"),(r[r.length-1]===\":\"||t0.test(t.hostname)&&!t.port)&&(r+=\":\"),o+=r+t.pathname,e=typeof t.query==\"object\"?i(t.query):t.query,e&&(o+=e.charAt(0)!==\"?\"?\"?\"+e:e),t.hash&&(o+=t.hash),o}n(H_,\"toString\");sr.prototype={set:j_,toString:H_};sr.extractProtocol=r0;sr.location=i0;sr.trimLeft=Gc;sr.qs=Yu;s0.exports=sr});var cp=he((CI,dp)=>{typeof dp<\"u\"&&(dp.exports=ni);function ni(i){if(i)return j5(i)}n(ni,\"Emitter\");function j5(i){for(var e in ni.prototype)i[e]=ni.prototype[e];return i}n(j5,\"mixin\");ni.prototype.on=ni.prototype.addEventListener=function(i,e){return this._callbacks=this._callbacks||{},(this._callbacks[\"$\"+i]=this._callbacks[\"$\"+i]||[]).push(e),this};ni.prototype.once=function(i,e){function t(){this.off(i,t),e.apply(this,arguments)}return n(t,\"on\"),t.fn=e,this.on(i,t),this};ni.prototype.off=ni.prototype.removeListener=ni.prototype.removeAllListeners=ni.prototype.removeEventListener=function(i,e){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var t=this._callbacks[\"$\"+i];if(!t)return this;if(arguments.length==1)return delete this._callbacks[\"$\"+i],this;for(var r,s=0;s<t.length;s++)if(r=t[s],r===e||r.fn===e){t.splice(s,1);break}return t.length===0&&delete this._callbacks[\"$\"+i],this};ni.prototype.emit=function(i){this._callbacks=this._callbacks||{};for(var e=new Array(arguments.length-1),t=this._callbacks[\"$\"+i],r=1;r<arguments.length;r++)e[r-1]=arguments[r];if(t){t=t.slice(0);for(var r=0,s=t.length;r<s;++r)t[r].apply(this,e)}return this};ni.prototype.listeners=function(i){return this._callbacks=this._callbacks||{},this._callbacks[\"$\"+i]||[]};ni.prototype.hasListeners=function(i){return!!this.listeners(i).length}});var J0=he((jp,Hp)=>{(function(i,e){typeof jp==\"object\"&&typeof Hp<\"u\"?Hp.exports=e():typeof define==\"function\"&&define.amd?define(e):(i=typeof globalThis<\"u\"?globalThis:i||self,i.Compressor=e())})(jp,function(){\"use strict\";function i(V,R){var I=Object.keys(V);if(Object.getOwnPropertySymbols){var L=Object.getOwnPropertySymbols(V);R&&(L=L.filter(function(Q){return Object.getOwnPropertyDescriptor(V,Q).enumerable})),I.push.apply(I,L)}return I}n(i,\"ownKeys\");function e(V){for(var R=1;R<arguments.length;R++){var I=arguments[R]!=null?arguments[R]:{};R%2?i(Object(I),!0).forEach(function(L){o(V,L,I[L])}):Object.getOwnPropertyDescriptors?Object.defineProperties(V,Object.getOwnPropertyDescriptors(I)):i(Object(I)).forEach(function(L){Object.defineProperty(V,L,Object.getOwnPropertyDescriptor(I,L))})}return V}n(e,\"_objectSpread2\");function t(V,R){if(!(V instanceof R))throw new TypeError(\"Cannot call a class as a function\")}n(t,\"_classCallCheck\");function r(V,R){for(var I=0;I<R.length;I++){var L=R[I];L.enumerable=L.enumerable||!1,L.configurable=!0,\"value\"in L&&(L.writable=!0),Object.defineProperty(V,L.key,L)}}n(r,\"_defineProperties\");function s(V,R,I){return R&&r(V.prototype,R),I&&r(V,I),V}n(s,\"_createClass\");function o(V,R,I){return R in V?Object.defineProperty(V,R,{value:I,enumerable:!0,configurable:!0,writable:!0}):V[R]=I,V}n(o,\"_defineProperty\");function a(){return a=Object.assign||function(V){for(var R=1;R<arguments.length;R++){var I=arguments[R];for(var L in I)Object.prototype.hasOwnProperty.call(I,L)&&(V[L]=I[L])}return V},a.apply(this,arguments)}n(a,\"_extends\");var l={exports:{}};(function(V){typeof window>\"u\"||function(R){var I=R.HTMLCanvasElement&&R.HTMLCanvasElement.prototype,L=R.Blob&&function(){try{return!!new Blob}catch{return!1}}(),Q=L&&R.Uint8Array&&function(){try{return new Blob([new Uint8Array(100)]).size===100}catch{return!1}}(),X=R.BlobBuilder||R.WebKitBlobBuilder||R.MozBlobBuilder||R.MSBlobBuilder,ye=/^data:((.*?)(;charset=.*?)?)(;base64)?,/,pe=(L||X)&&R.atob&&R.ArrayBuffer&&R.Uint8Array&&function(ne){var re,Fe,Ee,Ft,Et,te,Ot,Ge,lr;if(re=ne.match(ye),!re)throw new Error(\"invalid data URI\");for(Fe=re[2]?re[1]:\"text/plain\"+(re[3]||\";charset=US-ASCII\"),Ee=!!re[4],Ft=ne.slice(re[0].length),Ee?Et=atob(Ft):Et=decodeURIComponent(Ft),te=new ArrayBuffer(Et.length),Ot=new Uint8Array(te),Ge=0;Ge<Et.length;Ge+=1)Ot[Ge]=Et.charCodeAt(Ge);return L?new Blob([Q?Ot:te],{type:Fe}):(lr=new X,lr.append(te),lr.getBlob(Fe))};R.HTMLCanvasElement&&!I.toBlob&&(I.mozGetAsFile?I.toBlob=function(ne,re,Fe){var Ee=this;setTimeout(function(){Fe&&I.toDataURL&&pe?ne(pe(Ee.toDataURL(re,Fe))):ne(Ee.mozGetAsFile(\"blob\",re))})}:I.toDataURL&&pe&&(I.msToBlob?I.toBlob=function(ne,re,Fe){var Ee=this;setTimeout(function(){(re&&re!==\"image/png\"||Fe)&&I.toDataURL&&pe?ne(pe(Ee.toDataURL(re,Fe))):ne(Ee.msToBlob(re))})}:I.toBlob=function(ne,re,Fe){var Ee=this;setTimeout(function(){ne(pe(Ee.toDataURL(re,Fe)))})})),V.exports?V.exports=pe:R.dataURLtoBlob=pe}(window)})(l);var h=l.exports,p=n(function(R){return typeof Blob>\"u\"?!1:R instanceof Blob||Object.prototype.toString.call(R)===\"[object Blob]\"},\"isBlob\"),d={strict:!0,checkOrientation:!0,maxWidth:1/0,maxHeight:1/0,minWidth:0,minHeight:0,width:void 0,height:void 0,resize:\"none\",quality:.8,mimeType:\"auto\",convertTypes:[\"image/png\"],convertSize:5e6,beforeDraw:null,drew:null,success:null,error:null},f=typeof window<\"u\"&&typeof window.document<\"u\",y=f?window:{},b=n(function(R){return R>0&&R<1/0},\"isPositiveNumber\"),S=Array.prototype.slice;function E(V){return Array.from?Array.from(V):S.call(V)}n(E,\"toArray\");var x=/^image\\/.+$/;function F(V){return x.test(V)}n(F,\"isImageType\");function U(V){var R=F(V)?V.substr(6):\"\";return R===\"jpeg\"&&(R=\"jpg\"),\".\".concat(R)}n(U,\"imageTypeToExtension\");var j=String.fromCharCode;function G(V,R,I){var L=\"\",Q;for(I+=R,Q=R;Q<I;Q+=1)L+=j(V.getUint8(Q));return L}n(G,\"getStringFromCharCode\");var J=y.btoa;function B(V,R){for(var I=[],L=8192,Q=new Uint8Array(V);Q.length>0;)I.push(j.apply(null,E(Q.subarray(0,L)))),Q=Q.subarray(L);return\"data:\".concat(R,\";base64,\").concat(J(I.join(\"\")))}n(B,\"arrayBufferToDataURL\");function z(V){var R=new DataView(V),I;try{var L,Q,X;if(R.getUint8(0)===255&&R.getUint8(1)===216)for(var ye=R.byteLength,pe=2;pe+1<ye;){if(R.getUint8(pe)===255&&R.getUint8(pe+1)===225){Q=pe;break}pe+=1}if(Q){var ne=Q+4,re=Q+10;if(G(R,ne,4)===\"Exif\"){var Fe=R.getUint16(re);if(L=Fe===18761,(L||Fe===19789)&&R.getUint16(re+2,L)===42){var Ee=R.getUint32(re+4,L);Ee>=8&&(X=re+Ee)}}}if(X){var Ft=R.getUint16(X,L),Et,te;for(te=0;te<Ft;te+=1)if(Et=X+te*12+2,R.getUint16(Et,L)===274){Et+=8,I=R.getUint16(Et,L),R.setUint16(Et,1,L);break}}}catch{I=1}return I}n(z,\"resetAndGetOrientation\");function K(V){var R=0,I=1,L=1;switch(V){case 2:I=-1;break;case 3:R=-180;break;case 4:L=-1;break;case 5:R=90,L=-1;break;case 6:R=90;break;case 7:R=90,I=-1;break;case 8:R=-90;break}return{rotate:R,scaleX:I,scaleY:L}}n(K,\"parseOrientation\");var oe=/\\.\\d*(?:0|9){12}\\d*$/;function Be(V){var R=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1e11;return oe.test(V)?Math.round(V*R)/R:V}n(Be,\"normalizeDecimalNumber\");function Je(V){var R=V.aspectRatio,I=V.height,L=V.width,Q=arguments.length>1&&arguments[1]!==void 0?arguments[1]:\"none\",X=b(L),ye=b(I);if(X&&ye){var pe=I*R;(Q===\"contain\"||Q===\"none\")&&pe>L||Q===\"cover\"&&pe<L?I=L/R:L=I*R}else X?I=L/R:ye&&(L=I*R);return{width:L,height:I}}n(Je,\"getAdjustedSizes\");var wt=y.ArrayBuffer,We=y.FileReader,_e=y.URL||y.webkitURL,ze=/\\.\\w+$/,xe=y.Compressor,ui=function(){function V(R,I){t(this,V),this.file=R,this.image=new Image,this.options=e(e({},d),I),this.aborted=!1,this.result=null,this.init()}return n(V,\"Compressor\"),s(V,[{key:\"init\",value:n(function(){var I=this,L=this.file,Q=this.options;if(!p(L)){this.fail(new Error(\"The first argument must be a File or Blob object.\"));return}var X=L.type;if(!F(X)){this.fail(new Error(\"The first argument must be an image File or Blob object.\"));return}if(!_e||!We){this.fail(new Error(\"The current browser does not support image compression.\"));return}if(wt||(Q.checkOrientation=!1),_e&&!Q.checkOrientation)this.load({url:_e.createObjectURL(L)});else{var ye=new We,pe=Q.checkOrientation&&X===\"image/jpeg\";this.reader=ye,ye.onload=function(ne){var re=ne.target,Fe=re.result,Ee={};if(pe){var Ft=z(Fe);Ft>1||!_e?(Ee.url=B(Fe,X),Ft>1&&a(Ee,K(Ft))):Ee.url=_e.createObjectURL(L)}else Ee.url=Fe;I.load(Ee)},ye.onabort=function(){I.fail(new Error(\"Aborted to read the image with FileReader.\"))},ye.onerror=function(){I.fail(new Error(\"Failed to read the image with FileReader.\"))},ye.onloadend=function(){I.reader=null},pe?ye.readAsArrayBuffer(L):ye.readAsDataURL(L)}},\"init\")},{key:\"load\",value:n(function(I){var L=this,Q=this.file,X=this.image;X.onload=function(){L.draw(e(e({},I),{},{naturalWidth:X.naturalWidth,naturalHeight:X.naturalHeight}))},X.onabort=function(){L.fail(new Error(\"Aborted to load the image.\"))},X.onerror=function(){L.fail(new Error(\"Failed to load the image.\"))},y.navigator&&/(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(y.navigator.userAgent)&&(X.crossOrigin=\"anonymous\"),X.alt=Q.name,X.src=I.url},\"load\")},{key:\"draw\",value:n(function(I){var L=this,Q=I.naturalWidth,X=I.naturalHeight,ye=I.rotate,pe=ye===void 0?0:ye,ne=I.scaleX,re=ne===void 0?1:ne,Fe=I.scaleY,Ee=Fe===void 0?1:Fe,Ft=this.file,Et=this.image,te=this.options,Ot=document.createElement(\"canvas\"),Ge=Ot.getContext(\"2d\"),lr=Math.abs(pe)%180===90,So=(te.resize===\"contain\"||te.resize===\"cover\")&&b(te.width)&&b(te.height),Hr=Math.max(te.maxWidth,0)||1/0,$r=Math.max(te.maxHeight,0)||1/0,qr=Math.max(te.minWidth,0)||0,ur=Math.max(te.minHeight,0)||0,hr=Q/X,nt=te.width,at=te.height;if(lr){var wl=[$r,Hr];Hr=wl[0],$r=wl[1];var Sl=[ur,qr];qr=Sl[0],ur=Sl[1];var nn=[at,nt];nt=nn[0],at=nn[1]}So&&(hr=nt/at);var Pl=Je({aspectRatio:hr,width:Hr,height:$r},\"contain\");Hr=Pl.width,$r=Pl.height;var _l=Je({aspectRatio:hr,width:qr,height:ur},\"cover\");if(qr=_l.width,ur=_l.height,So){var ie=Je({aspectRatio:hr,width:nt,height:at},te.resize);nt=ie.width,at=ie.height}else{var an=Je({aspectRatio:hr,width:nt,height:at}),Po=an.width;nt=Po===void 0?Q:Po;var Ni=an.height;at=Ni===void 0?X:Ni}nt=Math.floor(Be(Math.min(Math.max(nt,qr),Hr))),at=Math.floor(Be(Math.min(Math.max(at,ur),$r)));var hh=-nt/2,Vr=-at/2,St=nt,dh=at,_o=[];if(So){var Re=0,Se=0,ln=Q,Mi=X,xl=Je({aspectRatio:hr,width:Q,height:X},{contain:\"cover\",cover:\"contain\"}[te.resize]);ln=xl.width,Mi=xl.height,Re=(Q-ln)/2,Se=(X-Mi)/2,_o.push(Re,Se,ln,Mi)}if(_o.push(hh,Vr,St,dh),lr){var vi=[at,nt];nt=vi[0],at=vi[1]}Ot.width=nt,Ot.height=at,F(te.mimeType)||(te.mimeType=Ft.type);var Fl=\"transparent\";if(Ft.size>te.convertSize&&te.convertTypes.indexOf(te.mimeType)>=0&&(te.mimeType=\"image/jpeg\"),te.mimeType===\"image/jpeg\"&&(Fl=\"#fff\"),Ge.fillStyle=Fl,Ge.fillRect(0,0,nt,at),te.beforeDraw&&te.beforeDraw.call(this,Ge,Ot),!this.aborted&&(Ge.save(),Ge.translate(nt/2,at/2),Ge.rotate(pe*Math.PI/180),Ge.scale(re,Ee),Ge.drawImage.apply(Ge,[Et].concat(_o)),Ge.restore(),te.drew&&te.drew.call(this,Ge,Ot),!this.aborted)){var je=n(function(Wr){L.aborted||L.done({naturalWidth:Q,naturalHeight:X,result:Wr})},\"done\");Ot.toBlob?Ot.toBlob(je,te.mimeType,te.quality):je(h(Ot.toDataURL(te.mimeType,te.quality)))}},\"draw\")},{key:\"done\",value:n(function(I){var L=I.naturalWidth,Q=I.naturalHeight,X=I.result,ye=this.file,pe=this.image,ne=this.options;if(_e&&!ne.checkOrientation&&_e.revokeObjectURL(pe.src),X)if(ne.strict&&X.size>ye.size&&ne.mimeType===ye.type&&!(ne.width>L||ne.height>Q||ne.minWidth>L||ne.minHeight>Q||ne.maxWidth<L||ne.maxHeight<Q))X=ye;else{var re=new Date;X.lastModified=re.getTime(),X.lastModifiedDate=re,X.name=ye.name,X.name&&X.type!==ye.type&&(X.name=X.name.replace(ze,U(X.type)))}else X=ye;this.result=X,ne.success&&ne.success.call(this,X)},\"done\")},{key:\"fail\",value:n(function(I){var L=this.options;if(L.error)L.error.call(this,I);else throw I},\"fail\")},{key:\"abort\",value:n(function(){this.aborted||(this.aborted=!0,this.reader?this.reader.abort():this.image.complete?this.fail(new Error(\"The compression process has been aborted.\")):(this.image.onload=null,this.image.onabort()))},\"abort\")}],[{key:\"noConflict\",value:n(function(){return window.Compressor=xe,V},\"noConflict\")},{key:\"setDefaults\",value:n(function(I){a(d,I)},\"setDefaults\")}]),V}();return ui})});var qp={};Tl(qp,{Audio:()=>ns,AwsS3:()=>no,AwsS3Multipart:()=>Ri,BasePlugin:()=>ve,Box:()=>Xi,Compressor:()=>on,Core:()=>qx,Dashboard:()=>is,DefaultStore:()=>kl,DragDrop:()=>Gi,DropTarget:()=>Ns,Dropbox:()=>Yi,Facebook:()=>Qi,FileInput:()=>rs,Form:()=>go,GoldenRetriever:()=>bo,GoogleDrive:()=>Ji,ImageEditor:()=>ss,Informer:()=>qi,Instagram:()=>Zi,OneDrive:()=>er,ProgressBar:()=>os,ReduxDevTools:()=>wo,ReduxStore:()=>fg,RemoteSources:()=>zs,ScreenCapture:()=>as,StatusBar:()=>$i,ThumbnailGenerator:()=>Cr,Transloadit:()=>yi,Tus:()=>or,UIPlugin:()=>Z,Unsplash:()=>tr,Uppy:()=>Ah,Url:()=>Ti,Webcam:()=>ls,XHRUpload:()=>mo,Zoom:()=>ir,debugLogger:()=>mn,locales:()=>Wx,server:()=>Bh,views:()=>Vx});function Ct(i,e){return Object.prototype.hasOwnProperty.call(i,e)}n(Ct,\"has\");function rf(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(rf,\"_classPrivateFieldLooseBase\");var Vb=0;function Wb(i){return\"__private_\"+Vb+++\"_\"+i}n(Wb,\"_classPrivateFieldLooseKey\");function Gb(i,e,t){let r=[];return i.forEach(s=>typeof s!=\"string\"?r.push(s):e[Symbol.split](s).forEach((o,a,l)=>{o!==\"\"&&r.push(o),a<l.length-1&&r.push(t)})),r}n(Gb,\"insertReplacement\");function sf(i,e){let t=/\\$/g,r=\"$$$$\",s=[i];if(e==null)return s;for(let o of Object.keys(e))if(o!==\"_\"){let a=e[o];typeof a==\"string\"&&(a=t[Symbol.replace](a,r)),s=Gb(s,new RegExp(`%\\\\{${o}\\\\}`,\"g\"),a)}return s}n(sf,\"interpolate\");var dn=Wb(\"apply\"),Xr=class{constructor(e){Object.defineProperty(this,dn,{value:Kb}),this.locale={strings:{},pluralize(t){return t===1?0:1}},Array.isArray(e)?e.forEach(rf(this,dn)[dn],this):rf(this,dn)[dn](e)}translate(e,t){return this.translateArray(e,t).join(\"\")}translateArray(e,t){if(!Ct(this.locale.strings,e))throw new Error(`missing string: ${e}`);let r=this.locale.strings[e];if(typeof r==\"object\"){if(t&&typeof t.smart_count<\"u\"){let o=this.locale.pluralize(t.smart_count);return sf(r[o],t)}throw new Error(\"Attempted to use a string with plural forms, but no value was given for %{smart_count}\")}return sf(r,t)}};n(Xr,\"Translator\");function Kb(i){if(!(i!=null&&i.strings))return;let e=this.locale;this.locale={...e,strings:{...e.strings,...i.strings}},this.locale.pluralize=i.pluralize||e.pluralize}n(Kb,\"_apply2\");var Zf=de(yh(),1);var Xb=\"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";var Pt=n((i=21)=>{let e=\"\",t=i;for(;t--;)e+=Xb[Math.random()*64|0];return e},\"nanoid\");var em=de(Rl(),1);function Ul(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(Ul,\"_classPrivateFieldLooseBase\");var H1=0;function Lf(i){return\"__private_\"+H1+++\"_\"+i}n(Lf,\"_classPrivateFieldLooseKey\");var $1={version:\"3.1.0\"},gs=Lf(\"callbacks\"),Ph=Lf(\"publish\"),pn=class{constructor(){Object.defineProperty(this,Ph,{value:q1}),this.state={},Object.defineProperty(this,gs,{writable:!0,value:new Set})}getState(){return this.state}setState(e){let t={...this.state},r={...this.state,...e};this.state=r,Ul(this,Ph)[Ph](t,r,e)}subscribe(e){return Ul(this,gs)[gs].add(e),()=>{Ul(this,gs)[gs].delete(e)}}};n(pn,\"DefaultStore\");function q1(){for(var i=arguments.length,e=new Array(i),t=0;t<i;t++)e[t]=arguments[t];Ul(this,gs)[gs].forEach(r=>{r(...e)})}n(q1,\"_publish2\");pn.VERSION=$1.version;var kl=pn;function Bi(i){let e=i.lastIndexOf(\".\");return e===-1||e===i.length-1?{name:i,extension:void 0}:{name:i.slice(0,e),extension:i.slice(e+1)}}n(Bi,\"getFileNameAndExtension\");var fn={__proto__:null,md:\"text/markdown\",markdown:\"text/markdown\",mp4:\"video/mp4\",mp3:\"audio/mp3\",svg:\"image/svg+xml\",jpg:\"image/jpeg\",png:\"image/png\",webp:\"image/webp\",gif:\"image/gif\",heic:\"image/heic\",heif:\"image/heif\",yaml:\"text/yaml\",yml:\"text/yaml\",csv:\"text/csv\",tsv:\"text/tab-separated-values\",tab:\"text/tab-separated-values\",avi:\"video/x-msvideo\",mks:\"video/x-matroska\",mkv:\"video/x-matroska\",mov:\"video/quicktime\",dicom:\"application/dicom\",doc:\"application/msword\",docm:\"application/vnd.ms-word.document.macroenabled.12\",docx:\"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",dot:\"application/msword\",dotm:\"application/vnd.ms-word.template.macroenabled.12\",dotx:\"application/vnd.openxmlformats-officedocument.wordprocessingml.template\",xla:\"application/vnd.ms-excel\",xlam:\"application/vnd.ms-excel.addin.macroenabled.12\",xlc:\"application/vnd.ms-excel\",xlf:\"application/x-xliff+xml\",xlm:\"application/vnd.ms-excel\",xls:\"application/vnd.ms-excel\",xlsb:\"application/vnd.ms-excel.sheet.binary.macroenabled.12\",xlsm:\"application/vnd.ms-excel.sheet.macroenabled.12\",xlsx:\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",xlt:\"application/vnd.ms-excel\",xltm:\"application/vnd.ms-excel.template.macroenabled.12\",xltx:\"application/vnd.openxmlformats-officedocument.spreadsheetml.template\",xlw:\"application/vnd.ms-excel\",txt:\"text/plain\",text:\"text/plain\",conf:\"text/plain\",log:\"text/plain\",pdf:\"application/pdf\",zip:\"application/zip\",\"7z\":\"application/x-7z-compressed\",rar:\"application/x-rar-compressed\",tar:\"application/x-tar\",gz:\"application/gzip\",dmg:\"application/x-apple-diskimage\"};function ys(i){var e;if(i.type)return i.type;let t=i.name?(e=Bi(i.name).extension)==null?void 0:e.toLowerCase():null;return t&&t in fn?fn[t]:\"application/octet-stream\"}n(ys,\"getFileType\");function V1(i){return i.charCodeAt(0).toString(32)}n(V1,\"encodeCharacter\");function Bf(i){let e=\"\";return i.replace(/[^A-Z0-9]/gi,t=>(e+=`-${V1(t)}`,\"/\"))+e}n(Bf,\"encodeFilename\");function zf(i){let e=\"uppy\";return typeof i.name==\"string\"&&(e+=`-${Bf(i.name.toLowerCase())}`),i.type!==void 0&&(e+=`-${i.type}`),i.meta&&typeof i.meta.relativePath==\"string\"&&(e+=`-${Bf(i.meta.relativePath.toLowerCase())}`),i.data.size!==void 0&&(e+=`-${i.data.size}`),i.data.lastModified!==void 0&&(e+=`-${i.data.lastModified}`),e}n(zf,\"generateFileID\");function W1(i){return!i.isRemote||!i.remote?!1:new Set([\"box\",\"dropbox\",\"drive\",\"facebook\",\"unsplash\"]).has(i.remote.provider)}n(W1,\"hasFileStableId\");function Dl(i){if(W1(i))return i.id;let e=ys(i);return zf({...i,type:e})}n(Dl,\"getSafeFileId\");function _h(i){if(i==null&&typeof navigator<\"u\"&&(i=navigator.userAgent),!i)return!0;let e=/Edge\\/(\\d+\\.\\d+)/.exec(i);if(!e)return!0;let t=e[1],[r,s]=t.split(\".\");return r=parseInt(r,10),s=parseInt(s,10),r<15||r===15&&s<15063||r>18||r===18&&s>=18218}n(_h,\"supportsUploadProgress\");function xh(i,e){return e.name?e.name:i.split(\"/\")[0]===\"image\"?`${i.split(\"/\")[0]}.${i.split(\"/\")[1]}`:\"noname\"}n(xh,\"getFileName\");function Fh(i){return i<10?`0${i}`:i.toString()}n(Fh,\"pad\");function Fo(){let i=new Date,e=Fh(i.getHours()),t=Fh(i.getMinutes()),r=Fh(i.getSeconds());return`${e}:${t}:${r}`}n(Fo,\"getTimeStamp\");var jf={debug:()=>{},warn:()=>{},error:function(){for(var i=arguments.length,e=new Array(i),t=0;t<i;t++)e[t]=arguments[t];return console.error(`[Uppy] [${Fo()}]`,...e)}},mn={debug:function(){for(var i=arguments.length,e=new Array(i),t=0;t<i;t++)e[t]=arguments[t];return console.debug(`[Uppy] [${Fo()}]`,...e)},warn:function(){for(var i=arguments.length,e=new Array(i),t=0;t<i;t++)e[t]=arguments[t];return console.warn(`[Uppy] [${Fo()}]`,...e)},error:function(){for(var i=arguments.length,e=new Array(i),t=0;t<i;t++)e[t]=arguments[t];return console.error(`[Uppy] [${Fo()}]`,...e)}};var Nl=de(Il(),1),Kf=de(Gf(),1);var Xf={maxFileSize:null,minFileSize:null,maxTotalFileSize:null,maxNumberOfFiles:null,minNumberOfFiles:null,allowedFileTypes:null,requiredMetaFields:[]},Tt=class extends Error{constructor(e,t){let{isUserFacing:r=!0,file:s}=t===void 0?{}:t;super(e),this.isRestriction=!0,this.isUserFacing=r,s!=null&&(this.file=s)}};n(Tt,\"RestrictionError\");var gn=class{constructor(e,t){this.i18n=t,this.getOpts=()=>{let r=e();if(r.restrictions.allowedFileTypes!=null&&!Array.isArray(r.restrictions.allowedFileTypes))throw new TypeError(\"`restrictions.allowedFileTypes` must be an array\");return r}}validateAggregateRestrictions(e,t){let{maxTotalFileSize:r,maxNumberOfFiles:s}=this.getOpts().restrictions;if(s&&e.filter(a=>!a.isGhost).length+t.length>s)throw new Tt(`${this.i18n(\"youCanOnlyUploadX\",{smart_count:s})}`);if(r){let o=e.reduce((a,l)=>a+l.size,0);for(let a of t)if(a.size!=null&&(o+=a.size,o>r))throw new Tt(this.i18n(\"exceedsSize\",{size:(0,Nl.default)(r),file:a.name}))}}validateSingleFile(e){let{maxFileSize:t,minFileSize:r,allowedFileTypes:s}=this.getOpts().restrictions;if(s&&!s.some(a=>a.includes(\"/\")?e.type?(0,Kf.default)(e.type.replace(/;.*?$/,\"\"),a):!1:a[0]===\".\"&&e.extension?e.extension.toLowerCase()===a.slice(1).toLowerCase():!1)){let a=s.join(\", \");throw new Tt(this.i18n(\"youCanOnlyUploadFileTypes\",{types:a}),{file:e})}if(t&&e.size!=null&&e.size>t)throw new Tt(this.i18n(\"exceedsSize\",{size:(0,Nl.default)(t),file:e.name}),{file:e});if(r&&e.size!=null&&e.size<r)throw new Tt(this.i18n(\"inferiorSize\",{size:(0,Nl.default)(r)}),{file:e})}validate(e,t){t.forEach(r=>{this.validateSingleFile(r)}),this.validateAggregateRestrictions(e,t)}validateMinNumberOfFiles(e){let{minNumberOfFiles:t}=this.getOpts().restrictions;if(Object.keys(e).length<t)throw new Tt(this.i18n(\"youHaveToAtLeastSelectX\",{smart_count:t}))}getMissingRequiredMetaFields(e){let t=new Tt(this.i18n(\"missingRequiredMetaFieldOnFile\",{fileName:e.name})),{requiredMetaFields:r}=this.getOpts().restrictions,s=[];for(let o of r)(!Object.hasOwn(e.meta,o)||e.meta[o]===\"\")&&s.push(o);return{missingFields:s,error:t}}};n(gn,\"Restricter\");var Yf={strings:{addBulkFilesFailed:{0:\"Failed to add %{smart_count} file due to an internal error\",1:\"Failed to add %{smart_count} files due to internal errors\"},youCanOnlyUploadX:{0:\"You can only upload %{smart_count} file\",1:\"You can only upload %{smart_count} files\"},youHaveToAtLeastSelectX:{0:\"You have to select at least %{smart_count} file\",1:\"You have to select at least %{smart_count} files\"},exceedsSize:\"%{file} exceeds maximum allowed size of %{size}\",missingRequiredMetaField:\"Missing required meta fields\",missingRequiredMetaFieldOnFile:\"Missing required meta fields in %{fileName}\",inferiorSize:\"This file is smaller than the allowed size of %{size}\",youCanOnlyUploadFileTypes:\"You can only upload: %{types}\",noMoreFilesAllowed:\"Cannot add more files\",noDuplicates:\"Cannot add the duplicate file '%{fileName}', it already exists\",companionError:\"Connection with Companion failed\",authAborted:\"Authentication aborted\",companionUnauthorizeHint:\"To unauthorize to your %{provider} account, please go to %{url}\",failedToUpload:\"Failed to upload %{file}\",noInternetConnection:\"No Internet connection\",connectedToInternet:\"Connected to the Internet\",noFilesFound:\"You have no files or folders here\",noSearchResults:\"Unfortunately, there are no results for this search\",selectX:{0:\"Select %{smart_count}\",1:\"Select %{smart_count}\"},allFilesFromFolderNamed:\"All files from folder %{name}\",openFolderNamed:\"Open folder %{name}\",cancel:\"Cancel\",logOut:\"Log out\",filter:\"Filter\",resetFilter:\"Reset filter\",loading:\"Loading...\",loadedXFiles:\"Loaded %{numFiles} files\",authenticateWithTitle:\"Please authenticate with %{pluginName} to select files\",authenticateWith:\"Connect to %{pluginName}\",signInWithGoogle:\"Sign in with Google\",searchImages:\"Search for images\",enterTextToSearch:\"Enter text to search for images\",search:\"Search\",resetSearch:\"Reset search\",emptyFolderAdded:\"No files were added from empty folder\",addedNumFiles:\"Added %{numFiles} file(s)\",folderAlreadyAdded:'The folder \"%{folder}\" was already added',folderAdded:{0:\"Added %{smart_count} file from %{folder}\",1:\"Added %{smart_count} files from %{folder}\"},additionalRestrictionsFailed:\"%{count} additional restrictions were not fulfilled\"}};var Qf,Jf;function q(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(q,\"_classPrivateFieldLooseBase\");var X1=0;function Xe(i){return\"__private_\"+X1+++\"_\"+i}n(Xe,\"_classPrivateFieldLooseKey\");var Y1={version:\"3.7.1\"},Ml=n(()=>({totalProgress:0,allowNewUpload:!0,error:null,recoveredState:null}),\"getDefaultUploadState\"),ht=Xe(\"plugins\"),Gt=Xe(\"restricter\"),yn=Xe(\"storeUnsubscribe\"),pr=Xe(\"emitter\"),vs=Xe(\"preProcessors\"),bs=Xe(\"uploaders\"),gr=Xe(\"postProcessors\"),Kt=Xe(\"informAndEmit\"),Pn=Xe(\"checkRequiredMetaFieldsOnFile\"),Eh=Xe(\"checkRequiredMetaFields\"),vn=Xe(\"assertNewUploadAllowed\"),Th=Xe(\"transformFile\"),bn=Xe(\"startIfAutoProceed\"),wn=Xe(\"checkAndUpdateFileState\"),Oh=Xe(\"addListeners\"),Si=Xe(\"updateOnlineStatus\"),fr=Xe(\"createUpload\"),Ch=Xe(\"getUpload\"),ws=Xe(\"removeUpload\"),mr=Xe(\"runUpload\");Qf=Symbol.for(\"uppy test: getPlugins\");Jf=Symbol.for(\"uppy test: createUpload\");var Sn=class{constructor(e){Object.defineProperty(this,mr,{value:lw}),Object.defineProperty(this,ws,{value:aw}),Object.defineProperty(this,Ch,{value:nw}),Object.defineProperty(this,fr,{value:ow}),Object.defineProperty(this,Oh,{value:sw}),Object.defineProperty(this,wn,{value:rw}),Object.defineProperty(this,bn,{value:iw}),Object.defineProperty(this,Th,{value:tw}),Object.defineProperty(this,vn,{value:ew}),Object.defineProperty(this,Eh,{value:Z1}),Object.defineProperty(this,Pn,{value:J1}),Object.defineProperty(this,Kt,{value:Q1}),Object.defineProperty(this,ht,{writable:!0,value:Object.create(null)}),Object.defineProperty(this,Gt,{writable:!0,value:void 0}),Object.defineProperty(this,yn,{writable:!0,value:void 0}),Object.defineProperty(this,pr,{writable:!0,value:(0,Zf.default)()}),Object.defineProperty(this,vs,{writable:!0,value:new Set}),Object.defineProperty(this,bs,{writable:!0,value:new Set}),Object.defineProperty(this,gr,{writable:!0,value:new Set}),this.calculateProgress=(0,em.default)((r,s)=>{let o=this.getFile(r?.id);if(r==null||!o){this.log(`Not setting progress for a file that has been removed: ${r?.id}`);return}if(o.progress.percentage===100){this.log(`Not setting progress for a file that has been already uploaded: ${r.id}`);return}let a=Number.isFinite(s.bytesTotal)&&s.bytesTotal>0;this.setFileState(r.id,{progress:{...o.progress,bytesUploaded:s.bytesUploaded,bytesTotal:s.bytesTotal,percentage:a?Math.round(s.bytesUploaded/s.bytesTotal*100):0}}),this.calculateTotalProgress()},500,{leading:!0,trailing:!0}),Object.defineProperty(this,Si,{writable:!0,value:this.updateOnlineStatus.bind(this)}),this.defaultLocale=Yf;let t={id:\"uppy\",autoProceed:!1,allowMultipleUploadBatches:!0,debug:!1,restrictions:Xf,meta:{},onBeforeFileAdded:(r,s)=>!Object.hasOwn(s,r.id),onBeforeUpload:r=>r,store:new kl,logger:jf,infoTimeout:5e3};this.opts={...t,...e,restrictions:{...t.restrictions,...e&&e.restrictions}},e&&e.logger&&e.debug?this.log(\"You are using a custom `logger`, but also set `debug: true`, which uses built-in logger to output logs to console. Ignoring `debug: true` and using your custom `logger`.\",\"warning\"):e&&e.debug&&(this.opts.logger=mn),this.log(`Using Core v${this.constructor.VERSION}`),this.i18nInit(),this.store=this.opts.store,this.setState({...Ml(),plugins:{},files:{},currentUploads:{},capabilities:{uploadProgress:_h(),individualCancellation:!0,resumableUploads:!1},meta:{...this.opts.meta},info:[]}),q(this,Gt)[Gt]=new gn(()=>this.opts,this.i18n),q(this,yn)[yn]=this.store.subscribe((r,s,o)=>{this.emit(\"state-update\",r,s,o),this.updateAll(s)}),this.opts.debug&&typeof window<\"u\"&&(window[this.opts.id]=this),q(this,Oh)[Oh]()}emit(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),s=1;s<t;s++)r[s-1]=arguments[s];q(this,pr)[pr].emit(e,...r)}on(e,t){return q(this,pr)[pr].on(e,t),this}once(e,t){return q(this,pr)[pr].once(e,t),this}off(e,t){return q(this,pr)[pr].off(e,t),this}updateAll(e){this.iteratePlugins(t=>{t.update(e)})}setState(e){this.store.setState(e)}getState(){return this.store.getState()}patchFilesState(e){let t=this.getState().files;this.setState({files:{...t,...Object.fromEntries(Object.entries(e).map(r=>{let[s,o]=r;return[s,{...t[s],...o}]}))}})}setFileState(e,t){if(!this.getState().files[e])throw new Error(`Can\\u2019t set state for ${e} (the file could have been removed)`);this.patchFilesState({[e]:t})}i18nInit(){let e=new Xr([this.defaultLocale,this.opts.locale]);this.i18n=e.translate.bind(e),this.i18nArray=e.translateArray.bind(e),this.locale=e.locale}setOptions(e){this.opts={...this.opts,...e,restrictions:{...this.opts.restrictions,...e&&e.restrictions}},e.meta&&this.setMeta(e.meta),this.i18nInit(),e.locale&&this.iteratePlugins(t=>{t.setOptions(e)}),this.setState()}resetProgress(){let e={percentage:0,bytesUploaded:0,uploadComplete:!1,uploadStarted:null},t={...this.getState().files},r={};Object.keys(t).forEach(s=>{r[s]={...t[s],progress:{...t[s].progress,...e}}}),this.setState({files:r,...Ml()}),this.emit(\"reset-progress\")}clearUploadedFiles(){this.setState({...Ml(),files:{}})}addPreProcessor(e){q(this,vs)[vs].add(e)}removePreProcessor(e){return q(this,vs)[vs].delete(e)}addPostProcessor(e){q(this,gr)[gr].add(e)}removePostProcessor(e){return q(this,gr)[gr].delete(e)}addUploader(e){q(this,bs)[bs].add(e)}removeUploader(e){return q(this,bs)[bs].delete(e)}setMeta(e){let t={...this.getState().meta,...e},r={...this.getState().files};Object.keys(r).forEach(s=>{r[s]={...r[s],meta:{...r[s].meta,...e}}}),this.log(\"Adding metadata:\"),this.log(e),this.setState({meta:t,files:r})}setFileMeta(e,t){let r={...this.getState().files};if(!r[e]){this.log(\"Was trying to set metadata for a file that has been removed: \",e);return}let s={...r[e].meta,...t};r[e]={...r[e],meta:s},this.setState({files:r})}getFile(e){return this.getState().files[e]}getFiles(){let{files:e}=this.getState();return Object.values(e)}getFilesByIds(e){return e.map(t=>this.getFile(t))}getObjectOfFilesPerState(){let{files:e,totalProgress:t,error:r}=this.getState(),s=Object.values(e),o=s.filter(S=>{let{progress:E}=S;return!E.uploadComplete&&E.uploadStarted}),a=s.filter(S=>!S.progress.uploadStarted),l=s.filter(S=>S.progress.uploadStarted||S.progress.preprocess||S.progress.postprocess),h=s.filter(S=>S.progress.uploadStarted),p=s.filter(S=>S.isPaused),d=s.filter(S=>S.progress.uploadComplete),f=s.filter(S=>S.error),y=o.filter(S=>!S.isPaused),b=s.filter(S=>S.progress.preprocess||S.progress.postprocess);return{newFiles:a,startedFiles:l,uploadStartedFiles:h,pausedFiles:p,completeFiles:d,erroredFiles:f,inProgressFiles:o,inProgressNotPausedFiles:y,processingFiles:b,isUploadStarted:h.length>0,isAllComplete:t===100&&d.length===s.length&&b.length===0,isAllErrored:!!r&&f.length===s.length,isAllPaused:o.length!==0&&p.length===o.length,isUploadInProgress:o.length>0,isSomeGhost:s.some(S=>S.isGhost)}}validateRestrictions(e,t){t===void 0&&(t=this.getFiles());try{q(this,Gt)[Gt].validate(t,[e])}catch(r){return r}return null}checkIfFileAlreadyExists(e){let{files:t}=this.getState();return!!(t[e]&&!t[e].isGhost)}addFile(e){q(this,vn)[vn](e);let{nextFilesState:t,validFilesToAdd:r,errors:s}=q(this,wn)[wn]([e]),o=s.filter(l=>l.isRestriction);if(q(this,Kt)[Kt](o),s.length>0)throw s[0];this.setState({files:t});let[a]=r;return this.emit(\"file-added\",a),this.emit(\"files-added\",r),this.log(`Added file: ${a.name}, ${a.id}, mime type: ${a.type}`),q(this,bn)[bn](),a.id}addFiles(e){q(this,vn)[vn]();let{nextFilesState:t,validFilesToAdd:r,errors:s}=q(this,wn)[wn](e),o=s.filter(l=>l.isRestriction);q(this,Kt)[Kt](o);let a=s.filter(l=>!l.isRestriction);if(a.length>0){let l=`Multiple errors occurred while adding files:\n`;if(a.forEach(h=>{l+=`\n * ${h.message}`}),this.info({message:this.i18n(\"addBulkFilesFailed\",{smart_count:a.length}),details:l},\"error\",this.opts.infoTimeout),typeof AggregateError==\"function\")throw new AggregateError(a,l);{let h=new Error(l);throw h.errors=a,h}}this.setState({files:t}),r.forEach(l=>{this.emit(\"file-added\",l)}),this.emit(\"files-added\",r),r.length>5?this.log(`Added batch of ${r.length} files`):Object.values(r).forEach(l=>{this.log(`Added file: ${l.name}\n id: ${l.id}\n type: ${l.type}`)}),r.length>0&&q(this,bn)[bn]()}removeFiles(e,t){let{files:r,currentUploads:s}=this.getState(),o={...r},a={...s},l=Object.create(null);e.forEach(f=>{r[f]&&(l[f]=r[f],delete o[f])});function h(f){return l[f]===void 0}n(h,\"fileIsNotRemoved\"),Object.keys(a).forEach(f=>{let y=s[f].fileIDs.filter(h);if(y.length===0){delete a[f];return}let{capabilities:b}=this.getState();if(y.length!==s[f].fileIDs.length&&!b.individualCancellation)throw new Error(\"individualCancellation is disabled\");a[f]={...s[f],fileIDs:y}});let p={currentUploads:a,files:o};Object.keys(o).length===0&&(p.allowNewUpload=!0,p.error=null,p.recoveredState=null),this.setState(p),this.calculateTotalProgress();let d=Object.keys(l);d.forEach(f=>{this.emit(\"file-removed\",l[f],t)}),d.length>5?this.log(`Removed ${d.length} files`):this.log(`Removed files: ${d.join(\", \")}`)}removeFile(e,t){t===void 0&&(t=null),this.removeFiles([e],t)}pauseResume(e){if(!this.getState().capabilities.resumableUploads||this.getFile(e).uploadComplete)return;let r=!(this.getFile(e).isPaused||!1);return this.setFileState(e,{isPaused:r}),this.emit(\"upload-pause\",e,r),r}pauseAll(){let e={...this.getState().files};Object.keys(e).filter(r=>!e[r].progress.uploadComplete&&e[r].progress.uploadStarted).forEach(r=>{let s={...e[r],isPaused:!0};e[r]=s}),this.setState({files:e}),this.emit(\"pause-all\")}resumeAll(){let e={...this.getState().files};Object.keys(e).filter(r=>!e[r].progress.uploadComplete&&e[r].progress.uploadStarted).forEach(r=>{let s={...e[r],isPaused:!1,error:null};e[r]=s}),this.setState({files:e}),this.emit(\"resume-all\")}retryAll(){let e={...this.getState().files},t=Object.keys(e).filter(s=>e[s].error);if(t.forEach(s=>{let o={...e[s],isPaused:!1,error:null};e[s]=o}),this.setState({files:e,error:null}),this.emit(\"retry-all\",t),t.length===0)return Promise.resolve({successful:[],failed:[]});let r=q(this,fr)[fr](t,{forceAllowNewUpload:!0});return q(this,mr)[mr](r)}cancelAll(e){let{reason:t=\"user\"}=e===void 0?{}:e;if(this.emit(\"cancel-all\",{reason:t}),t===\"user\"){let{files:r}=this.getState(),s=Object.keys(r);s.length&&this.removeFiles(s,\"cancel-all\"),this.setState(Ml())}}retryUpload(e){this.setFileState(e,{error:null,isPaused:!1}),this.emit(\"upload-retry\",e);let t=q(this,fr)[fr]([e],{forceAllowNewUpload:!0});return q(this,mr)[mr](t)}logout(){this.iteratePlugins(e=>{e.provider&&e.provider.logout&&e.provider.logout()})}calculateTotalProgress(){let t=this.getFiles().filter(p=>p.progress.uploadStarted||p.progress.preprocess||p.progress.postprocess);if(t.length===0){this.emit(\"progress\",0),this.setState({totalProgress:0});return}let r=t.filter(p=>p.progress.bytesTotal!=null),s=t.filter(p=>p.progress.bytesTotal==null);if(r.length===0){let p=t.length*100,d=s.reduce((y,b)=>y+b.progress.percentage,0),f=Math.round(d/p*100);this.setState({totalProgress:f});return}let o=r.reduce((p,d)=>p+d.progress.bytesTotal,0),a=o/r.length;o+=a*s.length;let l=0;r.forEach(p=>{l+=p.progress.bytesUploaded}),s.forEach(p=>{l+=a*(p.progress.percentage||0)/100});let h=o===0?0:Math.round(l/o*100);h>100&&(h=100),this.setState({totalProgress:h}),this.emit(\"progress\",h)}updateOnlineStatus(){(typeof window.navigator.onLine<\"u\"?window.navigator.onLine:!0)?(this.emit(\"is-online\"),this.wasOffline&&(this.emit(\"back-online\"),this.info(this.i18n(\"connectedToInternet\"),\"success\",3e3),this.wasOffline=!1)):(this.emit(\"is-offline\"),this.info(this.i18n(\"noInternetConnection\"),\"error\",0),this.wasOffline=!0)}getID(){return this.opts.id}use(e,t){if(typeof e!=\"function\"){let a=`Expected a plugin class, but got ${e===null?\"null\":typeof e}. Please verify that the plugin was imported and spelled correctly.`;throw new TypeError(a)}let r=new e(this,t),s=r.id;if(!s)throw new Error(\"Your plugin must have an id\");if(!r.type)throw new Error(\"Your plugin must have a type\");let o=this.getPlugin(s);if(o){let a=`Already found a plugin named '${o.id}'. Tried to use: '${s}'.\nUppy plugins must have unique \\`id\\` options. See https://uppy.io/docs/plugins/#id.`;throw new Error(a)}return e.VERSION&&this.log(`Using ${s} v${e.VERSION}`),r.type in q(this,ht)[ht]?q(this,ht)[ht][r.type].push(r):q(this,ht)[ht][r.type]=[r],r.install(),this.emit(\"plugin-added\",r),this}getPlugin(e){for(let t of Object.values(q(this,ht)[ht])){let r=t.find(s=>s.id===e);if(r!=null)return r}}[Qf](e){return q(this,ht)[ht][e]}iteratePlugins(e){Object.values(q(this,ht)[ht]).flat(1).forEach(e)}removePlugin(e){this.log(`Removing plugin ${e.id}`),this.emit(\"plugin-remove\",e),e.uninstall&&e.uninstall();let t=q(this,ht)[ht][e.type],r=t.findIndex(a=>a.id===e.id);r!==-1&&t.splice(r,1);let o={plugins:{...this.getState().plugins,[e.id]:void 0}};this.setState(o)}close(e){let{reason:t}=e===void 0?{}:e;this.log(`Closing Uppy instance ${this.opts.id}: removing all files and uninstalling plugins`),this.cancelAll({reason:t}),q(this,yn)[yn](),this.iteratePlugins(r=>{this.removePlugin(r)}),typeof window<\"u\"&&window.removeEventListener&&(window.removeEventListener(\"online\",q(this,Si)[Si]),window.removeEventListener(\"offline\",q(this,Si)[Si]))}hideInfo(){let{info:e}=this.getState();this.setState({info:e.slice(1)}),this.emit(\"info-hidden\")}info(e,t,r){t===void 0&&(t=\"info\"),r===void 0&&(r=3e3);let s=typeof e==\"object\";this.setState({info:[...this.getState().info,{type:t,message:s?e.message:e,details:s?e.details:null}]}),setTimeout(()=>this.hideInfo(),r),this.emit(\"info-visible\")}log(e,t){let{logger:r}=this.opts;switch(t){case\"error\":r.error(e);break;case\"warning\":r.warn(e);break;default:r.debug(e);break}}restore(e){return this.log(`Core: attempting to restore upload \"${e}\"`),this.getState().currentUploads[e]?q(this,mr)[mr](e):(q(this,ws)[ws](e),Promise.reject(new Error(\"Nonexistent upload\")))}[Jf](){return q(this,fr)[fr](...arguments)}addResultData(e,t){if(!q(this,Ch)[Ch](e)){this.log(`Not setting result for an upload that has been removed: ${e}`);return}let{currentUploads:r}=this.getState(),s={...r[e],result:{...r[e].result,...t}};this.setState({currentUploads:{...r,[e]:s}})}upload(){var e;(e=q(this,ht)[ht].uploader)!=null&&e.length||this.log(\"No uploader type plugins are used\",\"warning\");let{files:t}=this.getState(),r=this.opts.onBeforeUpload(t);return r===!1?Promise.reject(new Error(\"Not starting the upload because onBeforeUpload returned false\")):(r&&typeof r==\"object\"&&(t=r,this.setState({files:t})),Promise.resolve().then(()=>q(this,Gt)[Gt].validateMinNumberOfFiles(t)).catch(s=>{throw q(this,Kt)[Kt]([s]),s}).then(()=>{if(!q(this,Eh)[Eh](t))throw new Tt(this.i18n(\"missingRequiredMetaField\"))}).catch(s=>{throw s}).then(()=>{let{currentUploads:s}=this.getState(),o=Object.values(s).flatMap(h=>h.fileIDs),a=[];Object.keys(t).forEach(h=>{let p=this.getFile(h);!p.progress.uploadStarted&&o.indexOf(h)===-1&&a.push(p.id)});let l=q(this,fr)[fr](a);return q(this,mr)[mr](l)}).catch(s=>{throw this.emit(\"error\",s),this.log(s,\"error\"),s}))}};n(Sn,\"Uppy\");function Q1(i){for(let o of i){let{file:a,isRestriction:l}=o;l?this.emit(\"restriction-failed\",a,o):this.emit(\"error\",o),this.log(o,\"warning\")}let e=i.filter(o=>o.isUserFacing),t=4,r=e.slice(0,t),s=e.slice(t);r.forEach(o=>{let{message:a,details:l=\"\"}=o;this.info({message:a,details:l},\"error\",this.opts.infoTimeout)}),s.length>0&&this.info({message:this.i18n(\"additionalRestrictionsFailed\",{count:s.length})})}n(Q1,\"_informAndEmit2\");function J1(i){let{missingFields:e,error:t}=q(this,Gt)[Gt].getMissingRequiredMetaFields(i);return e.length>0?(this.setFileState(i.id,{missingRequiredMetaFields:e}),this.log(t.message),this.emit(\"restriction-failed\",i,t),!1):!0}n(J1,\"_checkRequiredMetaFieldsOnFile2\");function Z1(i){let e=!0;for(let t of Object.values(i))q(this,Pn)[Pn](t)||(e=!1);return e}n(Z1,\"_checkRequiredMetaFields2\");function ew(i){let{allowNewUpload:e}=this.getState();if(e===!1){let t=new Tt(this.i18n(\"noMoreFilesAllowed\"),{file:i});throw q(this,Kt)[Kt]([t]),t}}n(ew,\"_assertNewUploadAllowed2\");function tw(i){let e=i instanceof File?{name:i.name,type:i.type,size:i.size,data:i}:i,t=ys(e),r=xh(t,e),s=Bi(r).extension,o=!!e.isRemote,a=Dl(e),l=e.meta||{};l.name=r,l.type=t;let h=Number.isFinite(e.data.size)?e.data.size:null;return{source:e.source||\"\",id:a,name:r,extension:s||\"\",meta:{...this.getState().meta,...l},type:t,data:e.data,progress:{percentage:0,bytesUploaded:0,bytesTotal:h,uploadComplete:!1,uploadStarted:null},size:h,isRemote:o,remote:e.remote||\"\",preview:e.preview}}n(tw,\"_transformFile2\");function iw(){this.opts.autoProceed&&!this.scheduledAutoProceed&&(this.scheduledAutoProceed=setTimeout(()=>{this.scheduledAutoProceed=null,this.upload().catch(i=>{i.isRestriction||this.log(i.stack||i.message||i)})},4))}n(iw,\"_startIfAutoProceed2\");function rw(i){let{files:e}=this.getState(),t={...e},r=[],s=[];for(let a of i)try{var o;let l=q(this,Th)[Th](a);if((o=e[l.id])!=null&&o.isGhost){let{isGhost:p,...d}=e[l.id];l={...d,data:a.data},this.log(`Replaced the blob in the restored ghost file: ${l.name}, ${l.id}`)}let h=this.opts.onBeforeFileAdded(l,t);if(!h&&this.checkIfFileAlreadyExists(l.id))throw new Tt(this.i18n(\"noDuplicates\",{fileName:l.name}),{file:a});if(h===!1)throw new Tt(\"Cannot add the file because onBeforeFileAdded returned false.\",{isUserFacing:!1,file:a});typeof h==\"object\"&&h!==null&&(l=h),q(this,Gt)[Gt].validateSingleFile(l),t[l.id]=l,r.push(l)}catch(l){s.push(l)}try{q(this,Gt)[Gt].validateAggregateRestrictions(Object.values(e),r)}catch(a){return s.push(a),{nextFilesState:e,validFilesToAdd:[],errors:s}}return{nextFilesState:t,validFilesToAdd:r,errors:s}}n(rw,\"_checkAndUpdateFileState2\");function sw(){let i=n((r,s,o)=>{let a=r.message||\"Unknown error\";r.details&&(a+=` ${r.details}`),this.setState({error:a}),s!=null&&s.id in this.getState().files&&this.setFileState(s.id,{error:a,response:o})},\"errorHandler\");this.on(\"error\",i),this.on(\"upload-error\",(r,s,o)=>{if(i(s,r,o),typeof s==\"object\"&&s.message){this.log(s.message,\"error\");let a=new Error(this.i18n(\"failedToUpload\",{file:r?.name}));a.isUserFacing=!0,a.details=s.message,s.details&&(a.details+=` ${s.details}`),q(this,Kt)[Kt]([a])}else q(this,Kt)[Kt]([s])});let e;this.on(\"upload-stalled\",(r,s)=>{let{message:o}=r,a=s.map(l=>l.meta.name).join(\", \");e||(this.info({message:o,details:a},\"warning\",this.opts.infoTimeout),e=setTimeout(()=>{e=null},this.opts.infoTimeout)),this.log(`${o} ${a}`.trim(),\"warning\")}),this.on(\"upload\",()=>{this.setState({error:null})});let t=n(r=>{let s=r.filter(a=>{let l=a!=null&&this.getFile(a.id);return l||this.log(`Not setting progress for a file that has been removed: ${a?.id}`),l}),o=Object.fromEntries(s.map(a=>[a.id,{progress:{uploadStarted:Date.now(),uploadComplete:!1,percentage:0,bytesUploaded:0,bytesTotal:a.size}}]));this.patchFilesState(o)},\"onUploadStarted\");this.on(\"upload-start\",r=>{r.forEach(s=>{this.emit(\"upload-started\",s)}),t(r)}),this.on(\"upload-progress\",this.calculateProgress),this.on(\"upload-success\",(r,s)=>{if(r==null||!this.getFile(r.id)){this.log(`Not setting progress for a file that has been removed: ${r?.id}`);return}let o=this.getFile(r.id).progress;this.setFileState(r.id,{progress:{...o,postprocess:q(this,gr)[gr].size>0?{mode:\"indeterminate\"}:null,uploadComplete:!0,percentage:100,bytesUploaded:o.bytesTotal},response:s,uploadURL:s.uploadURL,isPaused:!1}),r.size==null&&this.setFileState(r.id,{size:s.bytesUploaded||o.bytesTotal}),this.calculateTotalProgress()}),this.on(\"preprocess-progress\",(r,s)=>{if(r==null||!this.getFile(r.id)){this.log(`Not setting progress for a file that has been removed: ${r?.id}`);return}this.setFileState(r.id,{progress:{...this.getFile(r.id).progress,preprocess:s}})}),this.on(\"preprocess-complete\",r=>{if(r==null||!this.getFile(r.id)){this.log(`Not setting progress for a file that has been removed: ${r?.id}`);return}let s={...this.getState().files};s[r.id]={...s[r.id],progress:{...s[r.id].progress}},delete s[r.id].progress.preprocess,this.setState({files:s})}),this.on(\"postprocess-progress\",(r,s)=>{if(r==null||!this.getFile(r.id)){this.log(`Not setting progress for a file that has been removed: ${r?.id}`);return}this.setFileState(r.id,{progress:{...this.getState().files[r.id].progress,postprocess:s}})}),this.on(\"postprocess-complete\",r=>{if(r==null||!this.getFile(r.id)){this.log(`Not setting progress for a file that has been removed: ${r?.id}`);return}let s={...this.getState().files};s[r.id]={...s[r.id],progress:{...s[r.id].progress}},delete s[r.id].progress.postprocess,this.setState({files:s})}),this.on(\"restored\",()=>{this.calculateTotalProgress()}),this.on(\"dashboard:file-edit-complete\",r=>{r&&q(this,Pn)[Pn](r)}),typeof window<\"u\"&&window.addEventListener&&(window.addEventListener(\"online\",q(this,Si)[Si]),window.addEventListener(\"offline\",q(this,Si)[Si]),setTimeout(q(this,Si)[Si],3e3))}n(sw,\"_addListeners2\");function ow(i,e){e===void 0&&(e={});let{forceAllowNewUpload:t=!1}=e,{allowNewUpload:r,currentUploads:s}=this.getState();if(!r&&!t)throw new Error(\"Cannot create a new upload: already uploading.\");let o=Pt();return this.emit(\"upload\",{id:o,fileIDs:i}),this.setState({allowNewUpload:this.opts.allowMultipleUploadBatches!==!1&&this.opts.allowMultipleUploads!==!1,currentUploads:{...s,[o]:{fileIDs:i,step:0,result:{}}}}),o}n(ow,\"_createUpload2\");function nw(i){let{currentUploads:e}=this.getState();return e[i]}n(nw,\"_getUpload2\");function aw(i){let e={...this.getState().currentUploads};delete e[i],this.setState({currentUploads:e})}n(aw,\"_removeUpload2\");async function lw(i){let e=n(()=>{let{currentUploads:o}=this.getState();return o[i]},\"getCurrentUpload\"),t=e(),r=[...q(this,vs)[vs],...q(this,bs)[bs],...q(this,gr)[gr]];try{for(let o=t.step||0;o<r.length&&t;o++){let a=r[o];this.setState({currentUploads:{...this.getState().currentUploads,[i]:{...t,step:o}}});let{fileIDs:l}=t;await a(l,i),t=e()}}catch(o){throw q(this,ws)[ws](i),o}if(t){t.fileIDs.forEach(h=>{let p=this.getFile(h);p&&p.progress.postprocess&&this.emit(\"postprocess-complete\",p)});let o=t.fileIDs.map(h=>this.getFile(h)),a=o.filter(h=>!h.error),l=o.filter(h=>h.error);await this.addResultData(i,{successful:a,failed:l,uploadID:i}),t=e()}let s;return t&&(s=t.result,this.emit(\"complete\",s),q(this,ws)[ws](i)),s==null&&this.log(`Not setting result for an upload that has been removed: ${i}`),s}n(lw,\"_runUpload2\");Sn.VERSION=Y1.version;var Ah=Sn;var Fn,ee,nm,uw,_n,tm,hw,Ll={},am=[],dw=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function yr(i,e){for(var t in e)i[t]=e[t];return i}n(yr,\"s\");function lm(i){var e=i.parentNode;e&&e.removeChild(i)}n(lm,\"a\");function u(i,e,t){var r,s,o,a={};for(o in e)o==\"key\"?r=e[o]:o==\"ref\"?s=e[o]:a[o]=e[o];if(arguments.length>2&&(a.children=arguments.length>3?Fn.call(arguments,2):t),typeof i==\"function\"&&i.defaultProps!=null)for(o in i.defaultProps)a[o]===void 0&&(a[o]=i.defaultProps[o]);return xn(i,a,r,s,null)}n(u,\"h\");function xn(i,e,t,r,s){var o={type:i,props:e,key:t,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:s??++nm};return s==null&&ee.vnode!=null&&ee.vnode(o),o}n(xn,\"v\");function um(){return{current:null}}n(um,\"y\");function Ht(i){return i.children}n(Ht,\"p\");function we(i,e){this.props=i,this.context=e}n(we,\"d\");function Eo(i,e){if(e==null)return i.__?Eo(i.__,i.__.__k.indexOf(i)+1):null;for(var t;e<i.__k.length;e++)if((t=i.__k[e])!=null&&t.__e!=null)return t.__e;return typeof i.type==\"function\"?Eo(i):null}n(Eo,\"_\");function hm(i){var e,t;if((i=i.__)!=null&&i.__c!=null){for(i.__e=i.__c.base=null,e=0;e<i.__k.length;e++)if((t=i.__k[e])!=null&&t.__e!=null){i.__e=i.__c.base=t.__e;break}return hm(i)}}n(hm,\"k\");function im(i){(!i.__d&&(i.__d=!0)&&_n.push(i)&&!Bl.__r++||tm!==ee.debounceRendering)&&((tm=ee.debounceRendering)||setTimeout)(Bl)}n(im,\"b\");function Bl(){for(var i;Bl.__r=_n.length;)i=_n.sort(function(e,t){return e.__v.__b-t.__v.__b}),_n=[],i.some(function(e){var t,r,s,o,a,l;e.__d&&(a=(o=(t=e).__v).__e,(l=t.__P)&&(r=[],(s=yr({},o)).__v=o.__v+1,Rh(l,o,s,t.__n,l.ownerSVGElement!==void 0,o.__h!=null?[a]:null,r,a??Eo(o),o.__h),fm(r,o),o.__e!=a&&hm(o)))})}n(Bl,\"g\");function dm(i,e,t,r,s,o,a,l,h,p){var d,f,y,b,S,E,x,F=r&&r.__k||am,U=F.length;for(t.__k=[],d=0;d<e.length;d++)if((b=t.__k[d]=(b=e[d])==null||typeof b==\"boolean\"?null:typeof b==\"string\"||typeof b==\"number\"||typeof b==\"bigint\"?xn(null,b,null,null,b):Array.isArray(b)?xn(Ht,{children:b},null,null,null):b.__b>0?xn(b.type,b.props,b.key,null,b.__v):b)!=null){if(b.__=t,b.__b=t.__b+1,(y=F[d])===null||y&&b.key==y.key&&b.type===y.type)F[d]=void 0;else for(f=0;f<U;f++){if((y=F[f])&&b.key==y.key&&b.type===y.type){F[f]=void 0;break}y=null}Rh(i,b,y=y||Ll,s,o,a,l,h,p),S=b.__e,(f=b.ref)&&y.ref!=f&&(x||(x=[]),y.ref&&x.push(y.ref,null,b),x.push(f,b.__c||S,b)),S!=null?(E==null&&(E=S),typeof b.type==\"function\"&&b.__k===y.__k?b.__d=h=cm(b,h,i):h=pm(i,b,y,F,S,h),typeof t.type==\"function\"&&(t.__d=h)):h&&y.__e==h&&h.parentNode!=i&&(h=Eo(y))}for(t.__e=E,d=U;d--;)F[d]!=null&&(typeof t.type==\"function\"&&F[d].__e!=null&&F[d].__e==t.__d&&(t.__d=Eo(r,d+1)),gm(F[d],F[d]));if(x)for(d=0;d<x.length;d++)mm(x[d],x[++d],x[++d])}n(dm,\"w\");function cm(i,e,t){for(var r,s=i.__k,o=0;s&&o<s.length;o++)(r=s[o])&&(r.__=i,e=typeof r.type==\"function\"?cm(r,e,t):pm(t,r,r,s,r.__e,e));return e}n(cm,\"m\");function ci(i,e){return e=e||[],i==null||typeof i==\"boolean\"||(Array.isArray(i)?i.some(function(t){ci(t,e)}):e.push(i)),e}n(ci,\"x\");function pm(i,e,t,r,s,o){var a,l,h;if(e.__d!==void 0)a=e.__d,e.__d=void 0;else if(t==null||s!=o||s.parentNode==null)e:if(o==null||o.parentNode!==i)i.appendChild(s),a=null;else{for(l=o,h=0;(l=l.nextSibling)&&h<r.length;h+=2)if(l==s)break e;i.insertBefore(s,o),a=o}return a!==void 0?a:s.nextSibling}n(pm,\"A\");function cw(i,e,t,r,s){var o;for(o in t)o===\"children\"||o===\"key\"||o in e||zl(i,o,null,t[o],r);for(o in e)s&&typeof e[o]!=\"function\"||o===\"children\"||o===\"key\"||o===\"value\"||o===\"checked\"||t[o]===e[o]||zl(i,o,e[o],t[o],r)}n(cw,\"C\");function rm(i,e,t){e[0]===\"-\"?i.setProperty(e,t):i[e]=t==null?\"\":typeof t!=\"number\"||dw.test(e)?t:t+\"px\"}n(rm,\"$\");function zl(i,e,t,r,s){var o;e:if(e===\"style\")if(typeof t==\"string\")i.style.cssText=t;else{if(typeof r==\"string\"&&(i.style.cssText=r=\"\"),r)for(e in r)t&&e in t||rm(i.style,e,\"\");if(t)for(e in t)r&&t[e]===r[e]||rm(i.style,e,t[e])}else if(e[0]===\"o\"&&e[1]===\"n\")o=e!==(e=e.replace(/Capture$/,\"\")),e=e.toLowerCase()in i?e.toLowerCase().slice(2):e.slice(2),i.l||(i.l={}),i.l[e+o]=t,t?r||i.addEventListener(e,o?om:sm,o):i.removeEventListener(e,o?om:sm,o);else if(e!==\"dangerouslySetInnerHTML\"){if(s)e=e.replace(/xlink(H|:h)/,\"h\").replace(/sName$/,\"s\");else if(e!==\"href\"&&e!==\"list\"&&e!==\"form\"&&e!==\"tabIndex\"&&e!==\"download\"&&e in i)try{i[e]=t??\"\";break e}catch{}typeof t==\"function\"||(t!=null&&(t!==!1||e[0]===\"a\"&&e[1]===\"r\")?i.setAttribute(e,t):i.removeAttribute(e))}}n(zl,\"H\");function sm(i){this.l[i.type+!1](ee.event?ee.event(i):i)}n(sm,\"I\");function om(i){this.l[i.type+!0](ee.event?ee.event(i):i)}n(om,\"T\");function Rh(i,e,t,r,s,o,a,l,h){var p,d,f,y,b,S,E,x,F,U,j,G,J,B=e.type;if(e.constructor!==void 0)return null;t.__h!=null&&(h=t.__h,l=e.__e=t.__e,e.__h=null,o=[l]),(p=ee.__b)&&p(e);try{e:if(typeof B==\"function\"){if(x=e.props,F=(p=B.contextType)&&r[p.__c],U=p?F?F.props.value:p.__:r,t.__c?E=(d=e.__c=t.__c).__=d.__E:(\"prototype\"in B&&B.prototype.render?e.__c=d=new B(x,U):(e.__c=d=new we(x,U),d.constructor=B,d.render=fw),F&&F.sub(d),d.props=x,d.state||(d.state={}),d.context=U,d.__n=r,f=d.__d=!0,d.__h=[]),d.__s==null&&(d.__s=d.state),B.getDerivedStateFromProps!=null&&(d.__s==d.state&&(d.__s=yr({},d.__s)),yr(d.__s,B.getDerivedStateFromProps(x,d.__s))),y=d.props,b=d.state,f)B.getDerivedStateFromProps==null&&d.componentWillMount!=null&&d.componentWillMount(),d.componentDidMount!=null&&d.__h.push(d.componentDidMount);else{if(B.getDerivedStateFromProps==null&&x!==y&&d.componentWillReceiveProps!=null&&d.componentWillReceiveProps(x,U),!d.__e&&d.shouldComponentUpdate!=null&&d.shouldComponentUpdate(x,d.__s,U)===!1||e.__v===t.__v){d.props=x,d.state=d.__s,e.__v!==t.__v&&(d.__d=!1),d.__v=e,e.__e=t.__e,e.__k=t.__k,e.__k.forEach(function(z){z&&(z.__=e)}),d.__h.length&&a.push(d);break e}d.componentWillUpdate!=null&&d.componentWillUpdate(x,d.__s,U),d.componentDidUpdate!=null&&d.__h.push(function(){d.componentDidUpdate(y,b,S)})}if(d.context=U,d.props=x,d.__v=e,d.__P=i,j=ee.__r,G=0,\"prototype\"in B&&B.prototype.render)d.state=d.__s,d.__d=!1,j&&j(e),p=d.render(d.props,d.state,d.context);else do d.__d=!1,j&&j(e),p=d.render(d.props,d.state,d.context),d.state=d.__s;while(d.__d&&++G<25);d.state=d.__s,d.getChildContext!=null&&(r=yr(yr({},r),d.getChildContext())),f||d.getSnapshotBeforeUpdate==null||(S=d.getSnapshotBeforeUpdate(y,b)),J=p!=null&&p.type===Ht&&p.key==null?p.props.children:p,dm(i,Array.isArray(J)?J:[J],e,t,r,s,o,a,l,h),d.base=e.__e,e.__h=null,d.__h.length&&a.push(d),E&&(d.__E=d.__=null),d.__e=!1}else o==null&&e.__v===t.__v?(e.__k=t.__k,e.__e=t.__e):e.__e=pw(t.__e,e,t,r,s,o,a,h);(p=ee.diffed)&&p(e)}catch(z){e.__v=null,(h||o!=null)&&(e.__e=l,e.__h=!!h,o[o.indexOf(l)]=null),ee.__e(z,e,t)}}n(Rh,\"j\");function fm(i,e){ee.__c&&ee.__c(e,i),i.some(function(t){try{i=t.__h,t.__h=[],i.some(function(r){r.call(t)})}catch(r){ee.__e(r,t.__v)}})}n(fm,\"z\");function pw(i,e,t,r,s,o,a,l){var h,p,d,f=t.props,y=e.props,b=e.type,S=0;if(b===\"svg\"&&(s=!0),o!=null){for(;S<o.length;S++)if((h=o[S])&&\"setAttribute\"in h==!!b&&(b?h.localName===b:h.nodeType===3)){i=h,o[S]=null;break}}if(i==null){if(b===null)return document.createTextNode(y);i=s?document.createElementNS(\"http://www.w3.org/2000/svg\",b):document.createElement(b,y.is&&y),o=null,l=!1}if(b===null)f===y||l&&i.data===y||(i.data=y);else{if(o=o&&Fn.call(i.childNodes),p=(f=t.props||Ll).dangerouslySetInnerHTML,d=y.dangerouslySetInnerHTML,!l){if(o!=null)for(f={},S=0;S<i.attributes.length;S++)f[i.attributes[S].name]=i.attributes[S].value;(d||p)&&(d&&(p&&d.__html==p.__html||d.__html===i.innerHTML)||(i.innerHTML=d&&d.__html||\"\"))}if(cw(i,y,f,s,l),d)e.__k=[];else if(S=e.props.children,dm(i,Array.isArray(S)?S:[S],e,t,r,s&&b!==\"foreignObject\",o,a,o?o[0]:t.__k&&Eo(t,0),l),o!=null)for(S=o.length;S--;)o[S]!=null&&lm(o[S]);l||(\"value\"in y&&(S=y.value)!==void 0&&(S!==i.value||b===\"progress\"&&!S||b===\"option\"&&S!==f.value)&&zl(i,\"value\",S,f.value,!1),\"checked\"in y&&(S=y.checked)!==void 0&&S!==i.checked&&zl(i,\"checked\",S,f.checked,!1))}return i}n(pw,\"L\");function mm(i,e,t){try{typeof i==\"function\"?i(e):i.current=e}catch(r){ee.__e(r,t)}}n(mm,\"M\");function gm(i,e,t){var r,s;if(ee.unmount&&ee.unmount(i),(r=i.ref)&&(r.current&&r.current!==i.__e||mm(r,null,e)),(r=i.__c)!=null){if(r.componentWillUnmount)try{r.componentWillUnmount()}catch(o){ee.__e(o,e)}r.base=r.__P=null}if(r=i.__k)for(s=0;s<r.length;s++)r[s]&&gm(r[s],e,typeof i.type!=\"function\");t||i.__e==null||lm(i.__e),i.__e=i.__d=void 0}n(gm,\"N\");function fw(i,e,t){return this.constructor(i,t)}n(fw,\"O\");function Uh(i,e,t){var r,s,o;ee.__&&ee.__(i,e),s=(r=typeof t==\"function\")?null:t&&t.__k||e.__k,o=[],Rh(e,i=(!r&&t||e).__k=u(Ht,null,[i]),s||Ll,Ll,e.ownerSVGElement!==void 0,!r&&t?[t]:s?null:e.firstChild?Fn.call(e.childNodes):null,o,!r&&t?t:s?s.__e:e.firstChild,r),fm(o,i)}n(Uh,\"P\");function jl(i,e,t){var r,s,o,a=yr({},i.props);for(o in e)o==\"key\"?r=e[o]:o==\"ref\"?s=e[o]:a[o]=e[o];return arguments.length>2&&(a.children=arguments.length>3?Fn.call(arguments,2):t),xn(i.type,a,r||i.key,s||i.ref,null)}n(jl,\"q\");Fn=am.slice,ee={__e:function(i,e,t,r){for(var s,o,a;e=e.__;)if((s=e.__c)&&!s.__)try{if((o=s.constructor)&&o.getDerivedStateFromError!=null&&(s.setState(o.getDerivedStateFromError(i)),a=s.__d),s.componentDidCatch!=null&&(s.componentDidCatch(i,r||{}),a=s.__d),a)return s.__E=s}catch(l){i=l}throw i}},nm=0,uw=n(function(i){return i!=null&&i.constructor===void 0},\"i\"),we.prototype.setState=function(i,e){var t;t=this.__s!=null&&this.__s!==this.state?this.__s:this.__s=yr({},this.state),typeof i==\"function\"&&(i=i(yr({},t),this.props)),i&&yr(t,i),i!=null&&this.__v&&(e&&this.__h.push(e),im(this))},we.prototype.forceUpdate=function(i){this.__v&&(this.__e=!0,i&&this.__h.push(i),im(this))},we.prototype.render=Ht,_n=[],Bl.__r=0,hw=0;function En(i){return typeof i!=\"object\"||i===null||!(\"nodeType\"in i)?!1:i.nodeType===Node.ELEMENT_NODE}n(En,\"isDOMElement\");function On(i,e){return e===void 0&&(e=document),typeof i==\"string\"?e.querySelector(i):En(i)?i:null}n(On,\"findDOMElement\");function mw(i){for(var e;i&&!i.dir;)i=i.parentNode;return(e=i)==null?void 0:e.dir}n(mw,\"getTextDirection\");var Hl=mw;var ve=class{constructor(e,t){t===void 0&&(t={}),this.uppy=e,this.opts=t}getPluginState(){let{plugins:e}=this.uppy.getState();return e[this.id]||{}}setPluginState(e){let{plugins:t}=this.uppy.getState();this.uppy.setState({plugins:{...t,[this.id]:{...t[this.id],...e}}})}setOptions(e){this.opts={...this.opts,...e},this.setPluginState(),this.i18nInit()}i18nInit(){let e=new Xr([this.defaultLocale,this.uppy.locale,this.opts.locale]);this.i18n=e.translate.bind(e),this.i18nArray=e.translateArray.bind(e),this.setPluginState()}addTarget(){throw new Error(\"Extend the addTarget method to add your plugin to another plugin's target\")}install(){}uninstall(){}render(){throw new Error(\"Extend the render method to add your plugin to a DOM element\")}update(){}afterUpdate(){}};n(ve,\"BasePlugin\");function ym(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(ym,\"_classPrivateFieldLooseBase\");var gw=0;function yw(i){return\"__private_\"+gw+++\"_\"+i}n(yw,\"_classPrivateFieldLooseKey\");function vw(i){let e=null,t=null;return function(){for(var r=arguments.length,s=new Array(r),o=0;o<r;o++)s[o]=arguments[o];return t=s,e||(e=Promise.resolve().then(()=>(e=null,i(...t)))),e}}n(vw,\"debounce\");var Cn=yw(\"updateUI\"),Oo=class extends ve{constructor(){super(...arguments),Object.defineProperty(this,Cn,{writable:!0,value:void 0})}getTargetPlugin(e){let t;if(typeof e==\"object\"&&e instanceof Oo)t=e;else if(typeof e==\"function\"){let r=e;this.uppy.iteratePlugins(s=>{s instanceof r&&(t=s)})}return t}mount(e,t){let r=t.id,s=On(e);if(s){this.isTargetDOMEl=!0;let l=document.createElement(\"div\");return l.classList.add(\"uppy-Root\"),ym(this,Cn)[Cn]=vw(h=>{this.uppy.getPlugin(this.id)&&(Uh(this.render(h),l),this.afterUpdate())}),this.uppy.log(`Installing ${r} to a DOM element '${e}'`),this.opts.replaceTargetContent&&(s.innerHTML=\"\"),Uh(this.render(this.uppy.getState()),l),this.el=l,s.appendChild(l),l.dir=this.opts.direction||Hl(l)||\"ltr\",this.onMount(),this.el}let o=this.getTargetPlugin(e);if(o)return this.uppy.log(`Installing ${r} to ${o.id}`),this.parent=o,this.el=o.addTarget(t),this.onMount(),this.el;this.uppy.log(`Not installing ${r}`);let a=`Invalid target option given to ${r}.`;throw typeof e==\"function\"?a+=\" The given target is not a Plugin class. Please check that you're not specifying a React Component instead of a plugin. If you are using @uppy/* packages directly, make sure you have only 1 version of @uppy/core installed: run `npm ls @uppy/core` on the command line and verify that all the versions match and are deduped correctly.\":a+=\"If you meant to target an HTML element, please make sure that the element exists. Check that the <script> tag initializing Uppy is right before the closing </body> tag at the end of the page. (see https://github.com/transloadit/uppy/issues/1042)\\n\\nIf you meant to target a plugin, please confirm that your `import` statements or `require` calls are correct.\",new Error(a)}update(e){if(this.el!=null){var t,r;(t=(r=ym(this,Cn))[Cn])==null||t.call(r,e)}}unmount(){if(this.isTargetDOMEl){var e;(e=this.el)==null||e.remove()}this.onUnmount()}onMount(){}onUnmount(){}};n(Oo,\"UIPlugin\");var Z=Oo;var Bh={};Tl(Bh,{Provider:()=>be,RequestClient:()=>tt,SearchProvider:()=>Yr,Socket:()=>Co});var xm=de(Pm(),1);var ww=Object.prototype.toString,Sw=n(i=>ww.call(i)===\"[object Error]\",\"isError\"),Pw=new Set([\"Failed to fetch\",\"NetworkError when attempting to fetch resource.\",\"The Internet connection appears to be offline.\",\"Load failed\",\"Network request failed\",\"fetch failed\"]);function kh(i){return i&&Sw(i)&&i.name===\"TypeError\"&&typeof i.message==\"string\"?i.message===\"Load failed\"?i.stack===void 0:Pw.has(i.message):!1}n(kh,\"isNetworkError\");var Ps=class extends Error{constructor(e){super(),e instanceof Error?(this.originalError=e,{message:e}=e):(this.originalError=new Error(e),this.originalError.stack=this.stack),this.name=\"AbortError\",this.message=e}};n(Ps,\"AbortError\");var _m=n((i,e,t)=>{let r=t.retries-(e-1);return i.attemptNumber=e,i.retriesLeft=r,i},\"decorateErrorWithCounts\");async function $l(i,e){return new Promise((t,r)=>{e={onFailedAttempt(){},retries:10,...e};let s=xm.default.operation(e),o=n(()=>{s.stop(),r(e.signal?.reason)},\"abortHandler\");e.signal&&!e.signal.aborted&&e.signal.addEventListener(\"abort\",o,{once:!0});let a=n(()=>{e.signal?.removeEventListener(\"abort\",o),s.stop()},\"cleanUp\");s.attempt(async l=>{try{let h=await i(l);a(),t(h)}catch(h){try{if(!(h instanceof Error))throw new TypeError(`Non-error was thrown: \"${h}\". You should only throw errors.`);if(h instanceof Ps)throw h.originalError;if(h instanceof TypeError&&!kh(h))throw h;if(await e.onFailedAttempt(_m(h,l,e)),!s.retry(h))throw s.mainError()}catch(p){_m(p,l,e),a(),r(p)}}})})}n($l,\"pRetry\");var ql=class extends Error{constructor(e,t){t===void 0&&(t=null),super(\"This looks like a network error, the endpoint might be blocked by an internet provider or a firewall.\"),this.cause=e,this.isNetworkError=!0,this.request=t}};n(ql,\"NetworkError\");var Pi=ql;function _s(){return fetch(...arguments).catch(i=>{throw i.name===\"AbortError\"?i:new Pi(i)})}n(_s,\"fetchWithNetworkError\");var Vl=class extends Error{constructor(e,t){super(e),this.cause=t?.cause,this.cause&&Ct(this.cause,\"isNetworkError\")?this.isNetworkError=this.cause.isNetworkError:this.isNetworkError=!1}};n(Vl,\"ErrorWithCause\");var vr=Vl;var Fm=de(Rl(),1);function _w(i,e,t){let{progress:r,bytesUploaded:s,bytesTotal:o}=e;r&&(i.uppy.log(`Upload progress: ${r}`),i.uppy.emit(\"upload-progress\",t,{uploader:i,bytesUploaded:s,bytesTotal:o}))}n(_w,\"emitSocketProgress\");var Em=(0,Fm.default)(_w,300,{leading:!0,trailing:!0});function Dh(i){var e;let r=(e=/^(?:https?:\\/\\/|\\/\\/)?(?:[^@\\n]+@)?(?:www\\.)?([^\\n]+)/i.exec(i))==null?void 0:e[1];return`${/^http:\\/\\//i.test(i)?\"ws\":\"wss\"}://${r}`}n(Dh,\"getSocketHost\");var Wl=class extends Error{constructor(){super(\"Authorization required\"),this.name=\"AuthError\",this.isAuthError=!0}};n(Wl,\"AuthError\");var Gl=Wl;var Om;function zi(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(zi,\"_classPrivateFieldLooseBase\");var xw=0;function Kl(i){return\"__private_\"+xw+++\"_\"+i}n(Kl,\"_classPrivateFieldLooseKey\");var Fw={version:\"3.6.1\"};function Ew(i){return i.replace(/\\/$/,\"\")}n(Ew,\"stripSlash\");var Cm=10,Ow=5*60*1e3,Cw=401,Rn=class extends Error{constructor(e){let{statusCode:t,message:r}=e;super(r),this.statusCode=void 0,this.statusCode=t}};n(Rn,\"HttpError\");async function Tw(i){if(i.status===Cw)throw new Gl;if(i.ok)return i.json();let e=`Failed request with status: ${i.status}. ${i.statusText}`;try{let t=await i.json();e=t.message?`${e} message: ${t.message}`:e,e=t.requestId?`${e} request-Id: ${t.requestId}`:e}catch{}throw new Rn({statusCode:i.status,message:e})}n(Tw,\"handleJSONResponse\");var Tn=new Map,br=Kl(\"companionHeaders\"),xs=Kl(\"getUrl\"),Ih=Kl(\"requestSocketToken\"),An=Kl(\"awaitRemoteFileUpload\");Om=Symbol.for(\"uppy test: getCompanionHeaders\");var tt=class{constructor(e,t){Object.defineProperty(this,An,{value:Rw}),Object.defineProperty(this,xs,{value:Aw}),Object.defineProperty(this,br,{writable:!0,value:void 0}),Object.defineProperty(this,Ih,{writable:!0,value:async r=>{let{file:s,postBody:o,signal:a}=r;if(s.remote.url==null)throw new Error(\"Cannot connect to an undefined URL\");return(await this.post(s.remote.url,{...s.remote.body,...o},a)).token}}),this.uppy=e,this.opts=t,this.onReceiveResponse=this.onReceiveResponse.bind(this),zi(this,br)[br]=t?.companionHeaders}setCompanionHeaders(e){zi(this,br)[br]=e}[Om](){return zi(this,br)[br]}get hostname(){let{companion:e}=this.uppy.getState(),t=this.opts.companionUrl;return Ew(e&&e[t]?e[t]:t)}async headers(){return{...{Accept:\"application/json\",\"Content-Type\":\"application/json\",\"Uppy-Versions\":`@uppy/companion-client=${tt.VERSION}`},...zi(this,br)[br]}}onReceiveResponse(e){let{headers:t}=e,s=this.uppy.getState().companion||{},o=this.opts.companionUrl;t.has(\"i-am\")&&t.get(\"i-am\")!==s[o]&&this.uppy.setState({companion:{...s,[o]:t.get(\"i-am\")}})}async preflight(e){let t=Tn.get(this.hostname);if(t!=null)return t;let r=[\"accept\",\"content-type\",\"uppy-auth-token\"],s=(async()=>{try{let a=(await fetch(zi(this,xs)[xs](e),{method:\"OPTIONS\"})).headers.get(\"access-control-allow-headers\");if(a==null||a===\"*\")return Tn.set(this.hostname,r),r;this.uppy.log(`[CompanionClient] adding allowed preflight headers to companion cache: ${this.hostname} ${a}`);let l=a.split(\",\").map(h=>h.trim().toLowerCase());return Tn.set(this.hostname,l),l}catch(o){return this.uppy.log(`[CompanionClient] unable to make preflight request ${o}`,\"warning\"),Tn.delete(this.hostname),r}})();return Tn.set(this.hostname,s),s}async preflightAndHeaders(e){let[t,r]=await Promise.all([this.preflight(e),this.headers()]);return Object.fromEntries(Object.entries(r).filter(s=>{let[o]=s;return t.includes(o.toLowerCase())?!0:(this.uppy.log(`[CompanionClient] excluding disallowed header ${o}`),!1)}))}async request(e){let{path:t,method:r=\"GET\",data:s,skipPostResponse:o,signal:a}=e;try{let l=await this.preflightAndHeaders(t),h=await _s(zi(this,xs)[xs](t),{method:r,signal:a,headers:l,credentials:this.opts.companionCookiesRule||\"same-origin\",body:s?JSON.stringify(s):null});return o||this.onReceiveResponse(h),await Tw(h)}catch(l){throw l instanceof Gl||l.name===\"AbortError\"?l:new vr(`Could not ${r} ${zi(this,xs)[xs](t)}`,{cause:l})}}async get(e,t){return t===void 0&&(t=void 0),typeof t==\"boolean\"&&(t={skipPostResponse:t}),this.request({...t,path:e})}async post(e,t,r){return r===void 0&&(r=void 0),typeof r==\"boolean\"&&(r={skipPostResponse:r}),this.request({...r,path:e,method:\"POST\",data:t})}async delete(e,t,r){return t===void 0&&(t=void 0),typeof r==\"boolean\"&&(r={skipPostResponse:r}),this.request({...r,path:e,method:\"DELETE\",data:t})}async uploadRemoteFile(e,t,r){var s=this;r===void 0&&(r={});try{let{signal:o,getQueue:a}=r;return await $l(async()=>{var l;let h=(l=this.uppy.getFile(e.id))==null?void 0:l.serverToken;if(h!=null)return this.uppy.log(`Connecting to exiting websocket ${h}`),zi(this,An)[An]({file:e,queue:a(),signal:o});let d=await a().wrapPromiseFunction(async function(){try{return await zi(s,Ih)[Ih](...arguments)}catch(f){if(f instanceof Gl)throw new Ps(f);if(f.cause==null)throw f;let y=f.cause,b=n(()=>[408,409,429,418,423].includes(y.statusCode)||y.statusCode>=500&&y.statusCode<=599&&![501,505].includes(y.statusCode),\"isRetryableHttpError\");throw y instanceof Rn&&!b()?new Ps(y):y}},{priority:-1})({file:e,postBody:t,signal:o}).abortOn(o);if(this.uppy.getFile(e.id))return this.uppy.setFileState(e.id,{serverToken:d}),zi(this,An)[An]({file:this.uppy.getFile(e.id),queue:a(),signal:o})},{retries:Cm,signal:o,onFailedAttempt:l=>this.uppy.log(`Retrying upload due to: ${l.message}`,\"warning\")})}catch(o){if(o.name===\"AbortError\")return;throw this.uppy.emit(\"upload-error\",e,o),o}}};n(tt,\"RequestClient\");function Aw(i){return/^(https?:|)\\/\\//.test(i)?i:`${this.hostname}/${i}`}n(Aw,\"_getUrl2\");async function Rw(i){let{file:e,queue:t,signal:r}=i,s,{capabilities:o}=this.uppy.getState();try{return await new Promise((a,l)=>{let h=e.serverToken,p=Dh(e.remote.companionUrl),d,f,y,{isPaused:b}=e,S=n((z,K)=>{if(d==null||d.readyState!==d.OPEN){var oe;this.uppy.log(`Cannot send \"${z}\" to socket ${e.id} because the socket state was ${String((oe=d)==null?void 0:oe.readyState)}`,\"warning\");return}d.send(JSON.stringify({action:z,payload:K??{}}))},\"socketSend\");function E(){o.resumableUploads&&S(b?\"pause\":\"resume\")}n(E,\"sendState\");let x=n(async()=>{f&&f.abort(),f=new AbortController;let z=n(oe=>{var Be;this.uppy.setFileState(e.id,{serverToken:null}),(Be=f)==null||Be.abort==null||Be.abort(),l(oe)},\"onFatalError\");function K(){clearTimeout(y),!b&&(y=setTimeout(()=>z(new Error(\"Timeout waiting for message from Companion socket\")),Ow))}n(K,\"resetActivityTimeout\");try{await t.wrapPromiseFunction(async()=>{await $l(n(async()=>new Promise((Be,Je)=>{d=new WebSocket(`${p}/api/${h}`),K(),d.addEventListener(\"close\",()=>{d=void 0,Je(new Error(\"Socket closed unexpectedly\"))}),d.addEventListener(\"error\",We=>{this.uppy.log(`Companion socket error ${JSON.stringify(We)}, closing socket`,\"warning\"),d.close()}),d.addEventListener(\"open\",()=>{E()}),d.addEventListener(\"message\",We=>{K();try{let{action:ze,payload:xe}=JSON.parse(We.data);switch(ze){case\"progress\":{Em(this,xe,e);break}case\"success\":{var _e;this.uppy.emit(\"upload-success\",e,{uploadURL:xe.url}),(_e=f)==null||_e.abort==null||_e.abort(),a();break}case\"error\":{let{message:ui}=xe.error;throw Object.assign(new Error(ui),{cause:xe.error})}default:this.uppy.log(`Companion socket unknown action ${ze}`,\"warning\")}}catch(ze){z(ze)}});let wt=n(()=>{this.uppy.log(`Closing socket ${e.id}`,\"info\"),clearTimeout(y),d&&d.close(),d=void 0},\"closeSocket\");f.signal.addEventListener(\"abort\",()=>{wt()})}),\"reconnectWebsocket\"),{retries:Cm,signal:f.signal,onFailedAttempt:()=>{f.signal.aborted||this.uppy.log(`Retrying websocket ${e.id}`,\"info\")}})})().abortOn(f.signal)}catch(oe){if(f.signal.aborted)return;z(oe)}},\"createWebsocket\"),F=n(z=>{if(o.resumableUploads)if(b=z,d&&E(),z){var K;(K=f)==null||K.abort==null||K.abort()}else x()},\"pause\"),U=n(z=>{var K;o.individualCancellation&&z.id===e.id&&(S(\"cancel\"),(K=f)==null||K.abort==null||K.abort(),this.uppy.log(`upload ${e.id} was removed`,\"info\"),a())},\"onFileRemove\"),j=n(z=>{var K;let{reason:oe}=z;oe===\"user\"&&S(\"cancel\"),(K=f)==null||K.abort==null||K.abort(),this.uppy.log(`upload ${e.id} was canceled`,\"info\"),a()},\"onCancelAll\"),G=n((z,K)=>{z===e.id&&F(K)},\"onFilePausedChange\"),J=n(()=>F(!0),\"onPauseAll\"),B=n(()=>F(!1),\"onResumeAll\");this.uppy.on(\"file-removed\",U),this.uppy.on(\"cancel-all\",j),this.uppy.on(\"upload-pause\",G),this.uppy.on(\"pause-all\",J),this.uppy.on(\"resume-all\",B),s=n(()=>{this.uppy.off(\"file-removed\",U),this.uppy.off(\"cancel-all\",j),this.uppy.off(\"upload-pause\",G),this.uppy.off(\"pause-all\",J),this.uppy.off(\"resume-all\",B)},\"removeEventHandlers\"),r.addEventListener(\"abort\",()=>{var z;(z=f)==null||z.abort()}),x()})}finally{s?.()}}n(Rw,\"_awaitRemoteFileUpload2\");tt.VERSION=Fw.version;var Nh={};Tl(Nh,{getItem:()=>kw,removeItem:()=>Dw,setItem:()=>Uw});function Uw(i,e){return new Promise(t=>{localStorage.setItem(i,e),t()})}n(Uw,\"setItem\");function kw(i){return Promise.resolve(localStorage.getItem(i))}n(kw,\"getItem\");function Dw(i){return new Promise(e=>{localStorage.removeItem(i),e()})}n(Dw,\"removeItem\");function wr(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(wr,\"_classPrivateFieldLooseBase\");var Iw=0;function Mh(i){return\"__private_\"+Iw+++\"_\"+i}n(Mh,\"_classPrivateFieldLooseKey\");var Nw=n(i=>i.split(\"-\").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(\" \"),\"getName\");function Mw(){return location.origin}n(Mw,\"getOrigin\");function Tm(i){if(typeof i==\"string\")return new RegExp(`^${i}$`);if(i instanceof RegExp)return i}n(Tm,\"getRegex\");function Lw(i,e){return(Array.isArray(e)?e.map(Tm):[Tm(e)]).some(r=>r?.test(i)||r?.test(`${i}/`))}n(Lw,\"isOriginAllowed\");var _i=Mh(\"refreshingTokenPromise\"),Un=Mh(\"getAuthToken\"),kn=Mh(\"removeAuthToken\"),be=class extends tt{constructor(e,t){super(e,t),Object.defineProperty(this,kn,{value:zw}),Object.defineProperty(this,Un,{value:Bw}),Object.defineProperty(this,_i,{writable:!0,value:void 0}),this.provider=t.provider,this.id=this.provider,this.name=this.opts.name||Nw(this.id),this.pluginId=this.opts.pluginId,this.tokenKey=`companion-${this.pluginId}-auth-token`,this.companionKeysParams=this.opts.companionKeysParams,this.preAuthToken=null}async headers(){let[e,t]=await Promise.all([super.headers(),wr(this,Un)[Un]()]),r={};return t&&(r[\"uppy-auth-token\"]=t),this.companionKeysParams&&(r[\"uppy-credentials-params\"]=btoa(JSON.stringify({params:this.companionKeysParams}))),{...e,...r}}onReceiveResponse(e){super.onReceiveResponse(e);let t=this.uppy.getPlugin(this.pluginId),s=t.getPluginState().authenticated?e.status!==401:e.status<400;return t.setPluginState({authenticated:s}),e}async setAuthToken(e){return this.uppy.getPlugin(this.pluginId).storage.setItem(this.tokenKey,e)}async ensurePreAuth(){if(this.companionKeysParams&&!this.preAuthToken&&(await this.fetchPreAuthToken(),!this.preAuthToken))throw new Error(\"Could not load authentication data required for third-party login. Please try again later.\")}authUrl(e){e===void 0&&(e={});let t=new URLSearchParams({state:btoa(JSON.stringify({origin:Mw()})),...e});return this.preAuthToken&&t.set(\"uppyPreAuthToken\",this.preAuthToken),`${this.hostname}/${this.id}/connect?${t}`}async login(e){return await this.ensurePreAuth(),new Promise((t,r)=>{let s=this.authUrl(e),o=window.open(s,\"_blank\"),a=n(l=>{if(l.source!==o){let d=\"\";try{d=JSON.stringify(l.data)}catch{}this.uppy.log(`ignoring event from unknown source ${d}`,\"warning\");return}let{companionAllowedHosts:h}=this.uppy.getPlugin(this.pluginId).opts;if(!Lw(l.origin,h)){r(new Error(`rejecting event from ${l.origin} vs allowed pattern ${h}`));return}let p=typeof l.data==\"string\"?JSON.parse(l.data):l.data;if(p.error){let{uppy:d}=this,f=d.i18n(\"authAborted\");d.info({message:f},\"warning\",5e3),r(new Error(\"auth aborted\"));return}if(!p.token){r(new Error(\"did not receive token from auth window\"));return}o.close(),window.removeEventListener(\"message\",a),this.setAuthToken(p.token).then(()=>t()).catch(r)},\"handleToken\");window.addEventListener(\"message\",a)})}refreshTokenUrl(){return`${this.hostname}/${this.id}/refresh-token`}fileUrl(e){return`${this.hostname}/${this.id}/get/${e}`}async request(){await wr(this,_i)[_i];try{return await super.request(...arguments)}catch(e){let t=await wr(this,Un)[Un]();if(!e.isAuthError||!t)throw e;return wr(this,_i)[_i]==null&&(wr(this,_i)[_i]=(async()=>{try{this.uppy.log(\"[CompanionClient] Refreshing expired auth token\",\"info\");let r=await super.request({path:this.refreshTokenUrl(),method:\"POST\"});await this.setAuthToken(r.uppyAuthToken)}catch(r){throw r.isAuthError&&await wr(this,kn)[kn](),e}finally{wr(this,_i)[_i]=void 0}})()),await wr(this,_i)[_i],super.request(...arguments)}}async fetchPreAuthToken(){if(this.companionKeysParams)try{let e=await this.post(`${this.id}/preauth/`,{params:this.companionKeysParams});this.preAuthToken=e.token}catch(e){this.uppy.log(`[CompanionClient] unable to fetch preAuthToken ${e}`,\"warning\")}}list(e,t){return this.get(`${this.id}/list/${e||\"\"}`,t)}async logout(e){let t=await this.get(`${this.id}/logout`,e);return await wr(this,kn)[kn](),t}static initPlugin(e,t,r){if(e.type=\"acquirer\",e.files=[],r&&(e.opts={...r,...t}),t.serverUrl||t.serverPattern)throw new Error(\"`serverUrl` and `serverPattern` have been renamed to `companionUrl` and `companionAllowedHosts` respectively in the 0.30.5 release. Please consult the docs (for example, https://uppy.io/docs/instagram/ for the Instagram plugin) and use the updated options.`\");if(t.companionAllowedHosts){let s=t.companionAllowedHosts;if(typeof s!=\"string\"&&!Array.isArray(s)&&!(s instanceof RegExp))throw new TypeError(`${e.id}: the option \"companionAllowedHosts\" must be one of string, Array, RegExp`);e.opts.companionAllowedHosts=s}else/^(?!https?:\\/\\/).*$/i.test(t.companionUrl)?e.opts.companionAllowedHosts=`https://${t.companionUrl.replace(/^\\/\\//,\"\")}`:e.opts.companionAllowedHosts=new URL(t.companionUrl).origin;e.storage=e.opts.storage||Nh}};n(be,\"Provider\");async function Bw(){return this.uppy.getPlugin(this.pluginId).storage.getItem(this.tokenKey)}n(Bw,\"_getAuthToken2\");async function zw(){return this.uppy.getPlugin(this.pluginId).storage.removeItem(this.tokenKey)}n(zw,\"_removeAuthToken2\");var jw=n(i=>i.split(\"-\").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(\" \"),\"getName\"),Yr=class extends tt{constructor(e,t){super(e,t),this.provider=t.provider,this.id=this.provider,this.name=this.opts.name||jw(this.id),this.pluginId=this.opts.pluginId}fileUrl(e){return`${this.hostname}/search/${this.id}/get/${e}`}search(e,t){return this.get(`search/${this.id}/list?q=${encodeURIComponent(e)}${t?`&${t}`:\"\"}`)}};n(Yr,\"SearchProvider\");var Um=de(yh(),1);var Am,Rm;function Me(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(Me,\"_classPrivateFieldLooseBase\");var Hw=0;function Dn(i){return\"__private_\"+Hw+++\"_\"+i}n(Dn,\"_classPrivateFieldLooseKey\");var Sr=Dn(\"queued\"),Fs=Dn(\"emitter\"),xi=Dn(\"isOpen\"),it=Dn(\"socket\"),Lh=Dn(\"handleMessage\");Am=Symbol.for(\"uppy test: getSocket\");Rm=Symbol.for(\"uppy test: getQueued\");var Co=class{constructor(e){Object.defineProperty(this,Sr,{writable:!0,value:[]}),Object.defineProperty(this,Fs,{writable:!0,value:(0,Um.default)()}),Object.defineProperty(this,xi,{writable:!0,value:!1}),Object.defineProperty(this,it,{writable:!0,value:void 0}),Object.defineProperty(this,Lh,{writable:!0,value:t=>{try{let r=JSON.parse(t.data);this.emit(r.action,r.payload)}catch(r){console.log(r)}}}),this.opts=e,(!e||e.autoOpen!==!1)&&this.open()}get isOpen(){return Me(this,xi)[xi]}[Am](){return Me(this,it)[it]}[Rm](){return Me(this,Sr)[Sr]}open(){Me(this,it)[it]==null&&(Me(this,it)[it]=new WebSocket(this.opts.target),Me(this,it)[it].onopen=()=>{for(Me(this,xi)[xi]=!0;Me(this,Sr)[Sr].length>0&&Me(this,xi)[xi];){let e=Me(this,Sr)[Sr].shift();this.send(e.action,e.payload)}},Me(this,it)[it].onclose=()=>{Me(this,xi)[xi]=!1,Me(this,it)[it]=null},Me(this,it)[it].onmessage=Me(this,Lh)[Lh])}close(){var e;(e=Me(this,it)[it])==null||e.close()}send(e,t){if(!Me(this,xi)[xi]){Me(this,Sr)[Sr].push({action:e,payload:t});return}Me(this,it)[it].send(JSON.stringify({action:e,payload:t}))}on(e,t){Me(this,Fs)[Fs].on(e,t)}emit(e,t){Me(this,Fs)[Fs].emit(e,t)}once(e,t){Me(this,Fs)[Fs].once(e,t)}};n(Co,\"UppySocket\");var td={};Tl(td,{ProviderViews:()=>Te,SearchProviderViews:()=>ji,defaultPickerIcon:()=>ko});var jh=de(Dm(),1);var To=class extends Error{constructor(e){super(e),this.name=\"TimeoutError\"}};n(To,\"TimeoutError\");var Yl=class extends Error{constructor(e){super(),this.name=\"AbortError\",this.message=e}};n(Yl,\"AbortError\");var Im=n(i=>globalThis.DOMException===void 0?new Yl(i):new DOMException(i),\"getDOMException\"),Nm=n(i=>{let e=i.reason===void 0?Im(\"This operation was aborted.\"):i.reason;return e instanceof Error?e:Im(e)},\"getAbortedReason\");function Hh(i,e,t,r){let s,o=new Promise((a,l)=>{if(typeof e!=\"number\"||Math.sign(e)!==1)throw new TypeError(`Expected \\`milliseconds\\` to be a positive number, got \\`${e}\\``);if(e===Number.POSITIVE_INFINITY){a(i);return}if(r={customTimers:{setTimeout,clearTimeout},...r},r.signal){let{signal:h}=r;h.aborted&&l(Nm(h)),h.addEventListener(\"abort\",()=>{l(Nm(h))})}s=r.customTimers.setTimeout.call(void 0,()=>{if(typeof t==\"function\"){try{a(t())}catch(d){l(d)}return}let h=typeof t==\"string\"?t:`Promise timed out after ${e} milliseconds`,p=t instanceof Error?t:new To(h);typeof i.cancel==\"function\"&&i.cancel(),l(p)},e),(async()=>{try{a(await i)}catch(h){l(h)}finally{r.customTimers.clearTimeout.call(void 0,s)}})()});return o.clear=()=>{clearTimeout(s),s=void 0},o}n(Hh,\"pTimeout\");function $h(i,e,t){let r=0,s=i.length;for(;s>0;){let o=Math.trunc(s/2),a=r+o;t(i[a],e)<=0?(r=++a,s-=o+1):s=o}return r}n($h,\"lowerBound\");var Es=function(i,e,t,r){if(t===\"a\"&&!r)throw new TypeError(\"Private accessor was defined without a getter\");if(typeof e==\"function\"?i!==e||!r:!e.has(i))throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");return t===\"m\"?r:t===\"a\"?r.call(i):r?r.value:e.get(i)},Pr,Ql=class{constructor(){Pr.set(this,[])}enqueue(e,t){t={priority:0,...t};let r={priority:t.priority,run:e};if(this.size&&Es(this,Pr,\"f\")[this.size-1].priority>=t.priority){Es(this,Pr,\"f\").push(r);return}let s=$h(Es(this,Pr,\"f\"),r,(o,a)=>a.priority-o.priority);Es(this,Pr,\"f\").splice(s,0,r)}dequeue(){let e=Es(this,Pr,\"f\").shift();return e?.run}filter(e){return Es(this,Pr,\"f\").filter(t=>t.priority===e.priority).map(t=>t.run)}get size(){return Es(this,Pr,\"f\").length}};n(Ql,\"PriorityQueue\");Pr=new WeakMap;var Mm=Ql;var Ue=function(i,e,t,r,s){if(r===\"m\")throw new TypeError(\"Private method is not writable\");if(r===\"a\"&&!s)throw new TypeError(\"Private accessor was defined without a setter\");if(typeof e==\"function\"?i!==e||!s:!e.has(i))throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");return r===\"a\"?s.call(i,t):s?s.value=t:e.set(i,t),t},W=function(i,e,t,r){if(t===\"a\"&&!r)throw new TypeError(\"Private accessor was defined without a getter\");if(typeof e==\"function\"?i!==e||!r:!e.has(i))throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");return t===\"m\"?r:t===\"a\"?r.call(i):r?r.value:e.get(i)},He,Mn,Ln,Jr,su,Bn,Jl,Fi,Nn,Xt,Zl,Yt,zn,Qr,eu,Lm,Bm,Hm,zm,jm,tu,qh,Vh,ou,$m,iu,jn=class extends Error{};n(jn,\"AbortError\");var ru=class extends jh.default{constructor(e){var t,r,s,o;if(super(),He.add(this),Mn.set(this,void 0),Ln.set(this,void 0),Jr.set(this,0),su.set(this,void 0),Bn.set(this,void 0),Jl.set(this,0),Fi.set(this,void 0),Nn.set(this,void 0),Xt.set(this,void 0),Zl.set(this,void 0),Yt.set(this,0),zn.set(this,void 0),Qr.set(this,void 0),eu.set(this,void 0),Object.defineProperty(this,\"timeout\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),e={carryoverConcurrencyCount:!1,intervalCap:Number.POSITIVE_INFINITY,interval:0,concurrency:Number.POSITIVE_INFINITY,autoStart:!0,queueClass:Mm,...e},!(typeof e.intervalCap==\"number\"&&e.intervalCap>=1))throw new TypeError(`Expected \\`intervalCap\\` to be a number from 1 and up, got \\`${(r=(t=e.intervalCap)===null||t===void 0?void 0:t.toString())!==null&&r!==void 0?r:\"\"}\\` (${typeof e.intervalCap})`);if(e.interval===void 0||!(Number.isFinite(e.interval)&&e.interval>=0))throw new TypeError(`Expected \\`interval\\` to be a finite number >= 0, got \\`${(o=(s=e.interval)===null||s===void 0?void 0:s.toString())!==null&&o!==void 0?o:\"\"}\\` (${typeof e.interval})`);Ue(this,Mn,e.carryoverConcurrencyCount,\"f\"),Ue(this,Ln,e.intervalCap===Number.POSITIVE_INFINITY||e.interval===0,\"f\"),Ue(this,su,e.intervalCap,\"f\"),Ue(this,Bn,e.interval,\"f\"),Ue(this,Xt,new e.queueClass,\"f\"),Ue(this,Zl,e.queueClass,\"f\"),this.concurrency=e.concurrency,this.timeout=e.timeout,Ue(this,eu,e.throwOnTimeout===!0,\"f\"),Ue(this,Qr,e.autoStart===!1,\"f\")}get concurrency(){return W(this,zn,\"f\")}set concurrency(e){if(!(typeof e==\"number\"&&e>=1))throw new TypeError(`Expected \\`concurrency\\` to be a number from 1 and up, got \\`${e}\\` (${typeof e})`);Ue(this,zn,e,\"f\"),W(this,He,\"m\",ou).call(this)}async add(e,t={}){return t={timeout:this.timeout,throwOnTimeout:W(this,eu,\"f\"),...t},new Promise((r,s)=>{W(this,Xt,\"f\").enqueue(async()=>{var o,a,l;Ue(this,Yt,(a=W(this,Yt,\"f\"),a++,a),\"f\"),Ue(this,Jr,(l=W(this,Jr,\"f\"),l++,l),\"f\");try{if(!((o=t.signal)===null||o===void 0)&&o.aborted)throw new jn(\"The task was aborted.\");let h=e({signal:t.signal});t.timeout&&(h=Hh(Promise.resolve(h),t.timeout)),t.signal&&(h=Promise.race([h,W(this,He,\"m\",$m).call(this,t.signal)]));let p=await h;r(p),this.emit(\"completed\",p)}catch(h){if(h instanceof To&&!t.throwOnTimeout){r();return}s(h),this.emit(\"error\",h)}finally{W(this,He,\"m\",Hm).call(this)}},t),this.emit(\"add\"),W(this,He,\"m\",tu).call(this)})}async addAll(e,t){return Promise.all(e.map(async r=>this.add(r,t)))}start(){return W(this,Qr,\"f\")?(Ue(this,Qr,!1,\"f\"),W(this,He,\"m\",ou).call(this),this):this}pause(){Ue(this,Qr,!0,\"f\")}clear(){Ue(this,Xt,new(W(this,Zl,\"f\")),\"f\")}async onEmpty(){W(this,Xt,\"f\").size!==0&&await W(this,He,\"m\",iu).call(this,\"empty\")}async onSizeLessThan(e){W(this,Xt,\"f\").size<e||await W(this,He,\"m\",iu).call(this,\"next\",()=>W(this,Xt,\"f\").size<e)}async onIdle(){W(this,Yt,\"f\")===0&&W(this,Xt,\"f\").size===0||await W(this,He,\"m\",iu).call(this,\"idle\")}get size(){return W(this,Xt,\"f\").size}sizeBy(e){return W(this,Xt,\"f\").filter(e).length}get pending(){return W(this,Yt,\"f\")}get isPaused(){return W(this,Qr,\"f\")}};n(ru,\"PQueue\");Mn=new WeakMap,Ln=new WeakMap,Jr=new WeakMap,su=new WeakMap,Bn=new WeakMap,Jl=new WeakMap,Fi=new WeakMap,Nn=new WeakMap,Xt=new WeakMap,Zl=new WeakMap,Yt=new WeakMap,zn=new WeakMap,Qr=new WeakMap,eu=new WeakMap,He=new WeakSet,Lm=n(function(){return W(this,Ln,\"f\")||W(this,Jr,\"f\")<W(this,su,\"f\")},\"_PQueue_doesIntervalAllowAnother_get\"),Bm=n(function(){return W(this,Yt,\"f\")<W(this,zn,\"f\")},\"_PQueue_doesConcurrentAllowAnother_get\"),Hm=n(function(){var e;Ue(this,Yt,(e=W(this,Yt,\"f\"),e--,e),\"f\"),W(this,He,\"m\",tu).call(this),this.emit(\"next\")},\"_PQueue_next\"),zm=n(function(){W(this,He,\"m\",Vh).call(this),W(this,He,\"m\",qh).call(this),Ue(this,Nn,void 0,\"f\")},\"_PQueue_onResumeInterval\"),jm=n(function(){let e=Date.now();if(W(this,Fi,\"f\")===void 0){let t=W(this,Jl,\"f\")-e;if(t<0)Ue(this,Jr,W(this,Mn,\"f\")?W(this,Yt,\"f\"):0,\"f\");else return W(this,Nn,\"f\")===void 0&&Ue(this,Nn,setTimeout(()=>{W(this,He,\"m\",zm).call(this)},t),\"f\"),!0}return!1},\"_PQueue_isIntervalPaused_get\"),tu=n(function(){if(W(this,Xt,\"f\").size===0)return W(this,Fi,\"f\")&&clearInterval(W(this,Fi,\"f\")),Ue(this,Fi,void 0,\"f\"),this.emit(\"empty\"),W(this,Yt,\"f\")===0&&this.emit(\"idle\"),!1;if(!W(this,Qr,\"f\")){let e=!W(this,He,\"a\",jm);if(W(this,He,\"a\",Lm)&&W(this,He,\"a\",Bm)){let t=W(this,Xt,\"f\").dequeue();return t?(this.emit(\"active\"),t(),e&&W(this,He,\"m\",qh).call(this),!0):!1}}return!1},\"_PQueue_tryToStartAnother\"),qh=n(function(){W(this,Ln,\"f\")||W(this,Fi,\"f\")!==void 0||(Ue(this,Fi,setInterval(()=>{W(this,He,\"m\",Vh).call(this)},W(this,Bn,\"f\")),\"f\"),Ue(this,Jl,Date.now()+W(this,Bn,\"f\"),\"f\"))},\"_PQueue_initializeIntervalIfNeeded\"),Vh=n(function(){W(this,Jr,\"f\")===0&&W(this,Yt,\"f\")===0&&W(this,Fi,\"f\")&&(clearInterval(W(this,Fi,\"f\")),Ue(this,Fi,void 0,\"f\")),Ue(this,Jr,W(this,Mn,\"f\")?W(this,Yt,\"f\"):0,\"f\"),W(this,He,\"m\",ou).call(this)},\"_PQueue_onInterval\"),ou=n(function(){for(;W(this,He,\"m\",tu).call(this););},\"_PQueue_processQueue\"),$m=n(async function(e){return new Promise((t,r)=>{e.addEventListener(\"abort\",()=>{r(new jn(\"The task was aborted.\"))},{once:!0})})},\"_PQueue_throwOnAbort\"),iu=n(async function(e,t){return new Promise(r=>{let s=n(()=>{t&&!t()||(this.off(e,s),r())},\"listener\");this.on(e,s)})},\"_PQueue_onEvent\");var qm=ru;function Vw(){return u(\"svg\",{width:\"26\",height:\"26\",viewBox:\"0 0 26 26\",xmlns:\"http://www.w3.org/2000/svg\"},u(\"g\",{fill:\"none\",\"fill-rule\":\"evenodd\"},u(\"circle\",{fill:\"#FFF\",cx:\"13\",cy:\"13\",r:\"13\"}),u(\"path\",{d:\"M21.64 13.205c0-.639-.057-1.252-.164-1.841H13v3.481h4.844a4.14 4.14 0 01-1.796 2.716v2.259h2.908c1.702-1.567 2.684-3.875 2.684-6.615z\",fill:\"#4285F4\",\"fill-rule\":\"nonzero\"}),u(\"path\",{d:\"M13 22c2.43 0 4.467-.806 5.956-2.18l-2.908-2.259c-.806.54-1.837.86-3.048.86-2.344 0-4.328-1.584-5.036-3.711H4.957v2.332A8.997 8.997 0 0013 22z\",fill:\"#34A853\",\"fill-rule\":\"nonzero\"}),u(\"path\",{d:\"M7.964 14.71A5.41 5.41 0 017.682 13c0-.593.102-1.17.282-1.71V8.958H4.957A8.996 8.996 0 004 13c0 1.452.348 2.827.957 4.042l3.007-2.332z\",fill:\"#FBBC05\",\"fill-rule\":\"nonzero\"}),u(\"path\",{d:\"M13 7.58c1.321 0 2.508.454 3.44 1.345l2.582-2.58C17.463 4.891 15.426 4 13 4a8.997 8.997 0 00-8.043 4.958l3.007 2.332C8.672 9.163 10.656 7.58 13 7.58z\",fill:\"#EA4335\",\"fill-rule\":\"nonzero\"}),u(\"path\",{d:\"M4 4h18v18H4z\"})))}n(Vw,\"GoogleIcon\");function Ww(i){let{pluginName:e,pluginIcon:t,i18nArray:r,handleAuth:s}=i,o=e===\"Google Drive\",a=u(\"span\",{className:\"uppy-Provider-authTitleName\"},e,u(\"br\",null));return u(\"div\",{className:\"uppy-Provider-auth\"},u(\"div\",{className:\"uppy-Provider-authIcon\"},t()),u(\"div\",{className:\"uppy-Provider-authTitle\"},r(\"authenticateWithTitle\",{pluginName:a})),o?u(\"button\",{type:\"button\",className:\"uppy-u-reset uppy-c-btn uppy-c-btn-primary uppy-Provider-authBtn uppy-Provider-btn-google\",onClick:s,\"data-uppy-super-focusable\":!0},u(Vw,null),r(\"signInWithGoogle\")):u(\"button\",{type:\"button\",className:\"uppy-u-reset uppy-c-btn uppy-c-btn-primary uppy-Provider-authBtn\",onClick:s,\"data-uppy-super-focusable\":!0},r(\"authenticateWith\",{pluginName:e})))}n(Ww,\"AuthView\");var Vm=Ww;var Wm=n(i=>{let{i18n:e,logout:t,username:r}=i;return[u(\"span\",{className:\"uppy-ProviderBrowser-user\",key:\"username\"},r),u(\"button\",{type:\"button\",onClick:t,className:\"uppy-u-reset uppy-c-btn uppy-ProviderBrowser-userLogout\",key:\"logout\"},e(\"logOut\"))]},\"default\");var Gw=n(i=>{let{getFolder:e,title:t,isLast:r}=i;return u(Ht,null,u(\"button\",{type:\"button\",className:\"uppy-u-reset uppy-c-btn\",onClick:e},t),r?\"\":\" / \")},\"Breadcrumb\"),Gm=n(i=>{let{getFolder:e,title:t,breadcrumbsIcon:r,breadcrumbs:s}=i;return u(\"div\",{className:\"uppy-Provider-breadcrumbs\"},u(\"div\",{className:\"uppy-Provider-breadcrumbsIcon\"},r),s.map((o,a)=>u(Gw,{key:o.id,getFolder:()=>e(o.requestPath),title:a===0?t:o.name,isLast:a+1===s.length})))},\"default\");var Km=n(i=>{let e=[];return i.showBreadcrumbs&&e.push(Gm({getFolder:i.getFolder,breadcrumbs:i.breadcrumbs,breadcrumbsIcon:i.pluginIcon&&i.pluginIcon(),title:i.title})),e.push(Wm({logout:i.logout,username:i.username,i18n:i.i18n})),e},\"default\");var Zh=de(Qt(),1);function Hn(i){return{...i,type:i.mimeType,extension:i.name?Bi(i.name).extension:null}}n(Hn,\"remoteFileObjToLocal\");var uu,Rt,Wh,Xm,$n=0,ig=[],au=[],Ym=ee.__b,Qm=ee.__r,Jm=ee.diffed,Zm=ee.__c,eg=ee.unmount;function Kh(i,e){ee.__h&&ee.__h(Rt,i,$n||e),$n=0;var t=Rt.__H||(Rt.__H={__:[],__h:[]});return i>=t.__.length&&t.__.push({__V:au}),t.__[i]}n(Kh,\"p\");function Ao(i){return $n=1,Kw(sg,i)}n(Ao,\"y\");function Kw(i,e,t){var r=Kh(uu++,2);return r.t=i,r.__c||(r.__=[t?t(e):sg(void 0,e),function(s){var o=r.t(r.__[0],s);r.__[0]!==o&&(r.__=[o,r.__[1]],r.__c.setState({}))}],r.__c=Rt),r.__}n(Kw,\"d\");function Os(i,e){var t=Kh(uu++,3);!ee.__s&&rg(t.__H,e)&&(t.__=i,t.u=e,Rt.__H.__h.push(t))}n(Os,\"_\");function Xh(i){return $n=5,Ro(function(){return{current:i}},[])}n(Xh,\"s\");function Ro(i,e){var t=Kh(uu++,7);return rg(t.__H,e)?(t.__V=i(),t.u=e,t.__h=i,t.__V):t.__}n(Ro,\"F\");function qn(i,e){return $n=8,Ro(function(){return i},e)}n(qn,\"T\");function Xw(){for(var i;i=ig.shift();)if(i.__P)try{i.__H.__h.forEach(lu),i.__H.__h.forEach(Gh),i.__H.__h=[]}catch(e){i.__H.__h=[],ee.__e(e,i.__v)}}n(Xw,\"b\");ee.__b=function(i){Rt=null,Ym&&Ym(i)},ee.__r=function(i){Qm&&Qm(i),uu=0;var e=(Rt=i.__c).__H;e&&(Wh===Rt?(e.__h=[],Rt.__h=[],e.__.forEach(function(t){t.__V=au,t.u=void 0})):(e.__h.forEach(lu),e.__h.forEach(Gh),e.__h=[])),Wh=Rt},ee.diffed=function(i){Jm&&Jm(i);var e=i.__c;e&&e.__H&&(e.__H.__h.length&&(ig.push(e)!==1&&Xm===ee.requestAnimationFrame||((Xm=ee.requestAnimationFrame)||function(t){var r,s=n(function(){clearTimeout(o),tg&&cancelAnimationFrame(r),setTimeout(t)},\"u\"),o=setTimeout(s,100);tg&&(r=requestAnimationFrame(s))})(Xw)),e.__H.__.forEach(function(t){t.u&&(t.__H=t.u),t.__V!==au&&(t.__=t.__V),t.u=void 0,t.__V=au})),Wh=Rt=null},ee.__c=function(i,e){e.some(function(t){try{t.__h.forEach(lu),t.__h=t.__h.filter(function(r){return!r.__||Gh(r)})}catch(r){e.some(function(s){s.__h&&(s.__h=[])}),e=[],ee.__e(r,t.__v)}}),Zm&&Zm(i,e)},ee.unmount=function(i){eg&&eg(i);var e,t=i.__c;t&&t.__H&&(t.__H.__.forEach(function(r){try{lu(r)}catch(s){e=s}}),e&&ee.__e(e,t.__v))};var tg=typeof requestAnimationFrame==\"function\";function lu(i){var e=Rt,t=i.__c;typeof t==\"function\"&&(i.__c=void 0,t()),Rt=e}n(lu,\"j\");function Gh(i){var e=Rt;i.__c=i.__(),Rt=e}n(Gh,\"k\");function rg(i,e){return!i||i.length!==e.length||e.some(function(t,r){return t!==i[r]})}n(rg,\"w\");function sg(i,e){return typeof e==\"function\"?e(i):e}n(sg,\"z\");function Yh(){return Yh=Object.assign?Object.assign.bind():function(i){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[r]=t[r])}return i},Yh.apply(this,arguments)}n(Yh,\"_extends\");var Yw={position:\"relative\",width:\"100%\",minHeight:\"100%\"},Qw={position:\"absolute\",top:0,left:0,width:\"100%\",overflow:\"visible\"},hu=class extends we{constructor(e){super(e),this.handleScroll=()=>{this.setState({offset:this.base.scrollTop})},this.handleResize=()=>{this.resize()},this.focusElement=null,this.state={offset:0,height:0}}componentDidMount(){this.resize(),window.addEventListener(\"resize\",this.handleResize)}componentWillUpdate(){this.base.contains(document.activeElement)&&(this.focusElement=document.activeElement)}componentDidUpdate(){this.focusElement&&this.focusElement.parentNode&&document.activeElement!==this.focusElement&&this.focusElement.focus(),this.focusElement=null,this.resize()}componentWillUnmount(){window.removeEventListener(\"resize\",this.handleResize)}resize(){let{height:e}=this.state;e!==this.base.offsetHeight&&this.setState({height:this.base.offsetHeight})}render(e){let{data:t,rowHeight:r,renderRow:s,overscanCount:o=10,...a}=e,{offset:l,height:h}=this.state,p=Math.floor(l/r),d=Math.floor(h/r);o&&(p=Math.max(0,p-p%o),d+=o);let f=p+d+4,y=t.slice(p,f),b={...Yw,height:t.length*r},S={...Qw,top:p*r};return u(\"div\",Yh({onScroll:this.handleScroll},a),u(\"div\",{role:\"presentation\",style:b},u(\"div\",{role:\"presentation\",style:S},y.map(s))))}};n(hu,\"VirtualList\");var du=hu;function Vn(i){let{search:e,searchOnInput:t,searchTerm:r,showButton:s,inputLabel:o,clearSearchLabel:a,buttonLabel:l,clearSearch:h,inputClassName:p,buttonCSSClassName:d}=i,[f,y]=Ao(r??\"\"),b=qn(F=>{F.preventDefault(),e(f)},[e,f]),S=qn(F=>{let U=F.target.value;y(U),t&&e(U)},[y,t,e]),E=n(()=>{y(\"\"),h&&h()},\"handleReset\"),[x]=Ao(()=>{let F=document.createElement(\"form\");return F.setAttribute(\"tabindex\",\"-1\"),F.id=Pt(),F});return Os(()=>(document.body.appendChild(x),x.addEventListener(\"submit\",b),()=>{x.removeEventListener(\"submit\",b),document.body.removeChild(x)}),[x,b]),u(Ht,null,u(\"input\",{className:`uppy-u-reset ${p}`,type:\"search\",\"aria-label\":o,placeholder:o,value:f,onInput:S,form:x.id,\"data-uppy-super-focusable\":!0}),!s&&u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",class:\"uppy-c-icon uppy-ProviderBrowser-searchFilterIcon\",width:\"12\",height:\"12\",viewBox:\"0 0 12 12\"},u(\"path\",{d:\"M8.638 7.99l3.172 3.172a.492.492 0 1 1-.697.697L7.91 8.656a4.977 4.977 0 0 1-2.983.983C2.206 9.639 0 7.481 0 4.819 0 2.158 2.206 0 4.927 0c2.721 0 4.927 2.158 4.927 4.82a4.74 4.74 0 0 1-1.216 3.17zm-3.71.685c2.176 0 3.94-1.726 3.94-3.856 0-2.129-1.764-3.855-3.94-3.855C2.75.964.984 2.69.984 4.819c0 2.13 1.765 3.856 3.942 3.856z\"})),!s&&f&&u(\"button\",{className:\"uppy-u-reset uppy-ProviderBrowser-searchFilterReset\",type:\"button\",\"aria-label\":a,title:a,onClick:E},u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\",viewBox:\"0 0 19 19\"},u(\"path\",{d:\"M17.318 17.232L9.94 9.854 9.586 9.5l-.354.354-7.378 7.378h.707l-.62-.62v.706L9.318 9.94l.354-.354-.354-.354L1.94 1.854v.707l.62-.62h-.706l7.378 7.378.354.354.354-.354 7.378-7.378h-.707l.622.62v-.706L9.854 9.232l-.354.354.354.354 7.378 7.378.708-.707-7.38-7.378v.708l7.38-7.38.353-.353-.353-.353-.622-.622-.353-.353-.354.352-7.378 7.38h.708L2.56 1.23 2.208.88l-.353.353-.622.62-.353.355.352.353 7.38 7.38v-.708l-7.38 7.38-.353.353.352.353.622.622.353.353.354-.353 7.38-7.38h-.708l7.38 7.38z\"}))),s&&u(\"button\",{className:`uppy-u-reset uppy-c-btn uppy-c-btn-primary ${d}`,type:\"submit\",form:x.id},l))}n(Vn,\"SearchFilterInput\");var og=n(i=>{let{cancel:e,done:t,i18n:r,selected:s}=i;return u(\"div\",{className:\"uppy-ProviderBrowser-footer\"},u(\"button\",{className:\"uppy-u-reset uppy-c-btn uppy-c-btn-primary\",onClick:t,type:\"button\"},r(\"selectX\",{smart_count:s})),u(\"button\",{className:\"uppy-u-reset uppy-c-btn uppy-c-btn-link\",onClick:e,type:\"button\"},r(\"cancel\")))},\"default\");var ug=de(Qt(),1);function Jw(){return u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\",width:11,height:14.5,viewBox:\"0 0 44 58\"},u(\"path\",{d:\"M27.437.517a1 1 0 0 0-.094.03H4.25C2.037.548.217 2.368.217 4.58v48.405c0 2.212 1.82 4.03 4.03 4.03H39.03c2.21 0 4.03-1.818 4.03-4.03V15.61a1 1 0 0 0-.03-.28 1 1 0 0 0 0-.093 1 1 0 0 0-.03-.032 1 1 0 0 0 0-.03 1 1 0 0 0-.032-.063 1 1 0 0 0-.03-.063 1 1 0 0 0-.032 0 1 1 0 0 0-.03-.063 1 1 0 0 0-.032-.03 1 1 0 0 0-.03-.063 1 1 0 0 0-.063-.062l-14.593-14a1 1 0 0 0-.062-.062A1 1 0 0 0 28 .708a1 1 0 0 0-.374-.157 1 1 0 0 0-.156 0 1 1 0 0 0-.03-.03l-.003-.003zM4.25 2.547h22.218v9.97c0 2.21 1.82 4.03 4.03 4.03h10.564v36.438a2.02 2.02 0 0 1-2.032 2.032H4.25c-1.13 0-2.032-.9-2.032-2.032V4.58c0-1.13.902-2.032 2.03-2.032zm24.218 1.345l10.375 9.937.75.718H30.5c-1.13 0-2.032-.9-2.032-2.03V3.89z\"}))}n(Jw,\"FileIcon\");function Zw(){return u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\",style:{minWidth:16,marginRight:3},viewBox:\"0 0 276.157 276.157\"},u(\"path\",{d:\"M273.08 101.378c-3.3-4.65-8.86-7.32-15.254-7.32h-24.34V67.59c0-10.2-8.3-18.5-18.5-18.5h-85.322c-3.63 0-9.295-2.875-11.436-5.805l-6.386-8.735c-4.982-6.814-15.104-11.954-23.546-11.954H58.73c-9.292 0-18.638 6.608-21.737 15.372l-2.033 5.752c-.958 2.71-4.72 5.37-7.596 5.37H18.5C8.3 49.09 0 57.39 0 67.59v167.07c0 .886.16 1.73.443 2.52.152 3.306 1.18 6.424 3.053 9.064 3.3 4.652 8.86 7.32 15.255 7.32h188.487c11.395 0 23.27-8.425 27.035-19.18l40.677-116.188c2.11-6.035 1.43-12.164-1.87-16.816zM18.5 64.088h8.864c9.295 0 18.64-6.607 21.738-15.37l2.032-5.75c.96-2.712 4.722-5.373 7.597-5.373h29.565c3.63 0 9.295 2.876 11.437 5.806l6.386 8.735c4.982 6.815 15.104 11.954 23.546 11.954h85.322c1.898 0 3.5 1.602 3.5 3.5v26.47H69.34c-11.395 0-23.27 8.423-27.035 19.178L15 191.23V67.59c0-1.898 1.603-3.5 3.5-3.5zm242.29 49.15l-40.676 116.188c-1.674 4.78-7.812 9.135-12.877 9.135H18.75c-1.447 0-2.576-.372-3.02-.997-.442-.625-.422-1.814.057-3.18l40.677-116.19c1.674-4.78 7.812-9.134 12.877-9.134h188.487c1.448 0 2.577.372 3.02.997.443.625.423 1.814-.056 3.18z\"}))}n(Zw,\"FolderIcon\");function e2(){return u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",style:{width:16,marginRight:4},viewBox:\"0 0 58 58\"},u(\"path\",{d:\"M36.537 28.156l-11-7a1.005 1.005 0 0 0-1.02-.033C24.2 21.3 24 21.635 24 22v14a1 1 0 0 0 1.537.844l11-7a1.002 1.002 0 0 0 0-1.688zM26 34.18V23.82L34.137 29 26 34.18z\"}),u(\"path\",{d:\"M57 6H1a1 1 0 0 0-1 1v44a1 1 0 0 0 1 1h56a1 1 0 0 0 1-1V7a1 1 0 0 0-1-1zM10 28H2v-9h8v9zm-8 2h8v9H2v-9zm10 10V8h34v42H12V40zm44-12h-8v-9h8v9zm-8 2h8v9h-8v-9zm8-22v9h-8V8h8zM2 8h8v9H2V8zm0 42v-9h8v9H2zm54 0h-8v-9h8v9z\"}))}n(e2,\"VideoIcon\");var ng=n(i=>{let{itemIconString:e}=i;if(e!==null)switch(e){case\"file\":return u(Jw,null);case\"folder\":return u(Zw,null);case\"video\":return u(e2,null);default:{let{alt:t}=i;return u(\"img\",{src:e,alt:t,loading:\"lazy\",width:16,height:16})}}},\"default\");var ag=de(Qt(),1);function t2(i){let{className:e,isDisabled:t,restrictionError:r,isChecked:s,title:o,itemIconEl:a,showTitles:l,toggleCheckbox:h,recordShiftKeyPress:p,id:d,children:f}=i,y=(0,ag.default)(\"uppy-u-reset\",\"uppy-ProviderBrowserItem-checkbox\",\"uppy-ProviderBrowserItem-checkbox--grid\",{\"uppy-ProviderBrowserItem-checkbox--is-checked\":s});return u(\"li\",{className:e,title:t?r?.message:null},u(\"input\",{type:\"checkbox\",className:y,onChange:h,onKeyDown:p,onMouseDown:p,name:\"listitem\",id:d,checked:s,disabled:t,\"data-uppy-super-focusable\":!0}),u(\"label\",{htmlFor:d,\"aria-label\":o,className:\"uppy-u-reset uppy-ProviderBrowserItem-inner\"},a,l&&o,f))}n(t2,\"GridListItem\");var Qh=t2;function i2(i){let{className:e,isDisabled:t,restrictionError:r,isCheckboxDisabled:s,isChecked:o,toggleCheckbox:a,recordShiftKeyPress:l,type:h,id:p,itemIconEl:d,title:f,handleFolderClick:y,showTitles:b,i18n:S}=i;return u(\"li\",{className:e,title:t?r?.message:null},s?null:u(\"input\",{type:\"checkbox\",className:`uppy-u-reset uppy-ProviderBrowserItem-checkbox ${o?\"uppy-ProviderBrowserItem-checkbox--is-checked\":\"\"}`,onChange:a,onKeyDown:l,onMouseDown:l,name:\"listitem\",id:p,checked:o,\"aria-label\":h===\"file\"?null:S(\"allFilesFromFolderNamed\",{name:f}),disabled:t,\"data-uppy-super-focusable\":!0}),h===\"file\"?u(\"label\",{htmlFor:p,className:\"uppy-u-reset uppy-ProviderBrowserItem-inner\"},u(\"div\",{className:\"uppy-ProviderBrowserItem-iconWrap\"},d),b&&f):u(\"button\",{type:\"button\",className:\"uppy-u-reset uppy-c-btn uppy-ProviderBrowserItem-inner\",onClick:y,\"aria-label\":S(\"openFolderNamed\",{name:f})},u(\"div\",{className:\"uppy-ProviderBrowserItem-iconWrap\"},d),b&&u(\"span\",null,f)))}n(i2,\"ListItem\");var lg=i2;function Wn(){return Wn=Object.assign?Object.assign.bind():function(i){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[r]=t[r])}return i},Wn.apply(this,arguments)}n(Wn,\"_extends\");var Jh=n(i=>{let{author:e,getItemIcon:t,isChecked:r,isDisabled:s,viewType:o}=i,a=t(),l=(0,ug.default)(\"uppy-ProviderBrowserItem\",{\"uppy-ProviderBrowserItem--selected\":r},{\"uppy-ProviderBrowserItem--disabled\":s},{\"uppy-ProviderBrowserItem--noPreview\":a===\"video\"}),h=u(ng,{itemIconString:a});switch(o){case\"grid\":return u(Qh,Wn({},i,{className:l,itemIconEl:h}));case\"list\":return u(lg,Wn({},i,{className:l,itemIconEl:h}));case\"unsplash\":return u(Qh,Wn({},i,{className:l,itemIconEl:h}),u(\"a\",{href:`${e.url}?utm_source=Companion&utm_medium=referral`,target:\"_blank\",rel:\"noopener noreferrer\",className:\"uppy-ProviderBrowserItem-author\",tabIndex:\"-1\"},e.name));default:throw new Error(`There is no such type ${o}`)}},\"default\");var r2=\"shared-with-me\";function hg(i){let{currentSelection:e,uppyFiles:t,viewType:r,isChecked:s,toggleCheckbox:o,recordShiftKeyPress:a,showTitles:l,i18n:h,validateRestrictions:p,getNextFolder:d,columns:f,f:y}=i;if(y.isFolder){var b;return Jh({columns:f,showTitles:l,viewType:r,i18n:h,id:y.id,title:y.name,getItemIcon:()=>y.icon,isChecked:s(y),toggleCheckbox:E=>o(E,y),recordShiftKeyPress:a,type:\"folder\",isDisabled:(b=s(y))==null?void 0:b.loading,isCheckboxDisabled:y.id===r2,handleFolderClick:()=>d(y)})}let S=p(Hn(y),[...t,...e]);return Jh({id:y.id,title:y.name,author:y.author,getItemIcon:()=>y.icon,isChecked:s(y),toggleCheckbox:E=>o(E,y),recordShiftKeyPress:a,columns:f,showTitles:l,viewType:r,i18n:h,type:\"file\",isDisabled:S&&!s(y),restrictionError:S})}n(hg,\"ListItem\");function s2(i){let{currentSelection:e,folders:t,files:r,uppyFiles:s,viewType:o,headerComponent:a,showBreadcrumbs:l,isChecked:h,toggleCheckbox:p,recordShiftKeyPress:d,handleScroll:f,showTitles:y,i18n:b,validateRestrictions:S,isLoading:E,showSearchFilter:x,search:F,searchTerm:U,clearSearch:j,searchOnInput:G,searchInputLabel:J,clearSearchLabel:B,getNextFolder:z,cancel:K,done:oe,columns:Be,noResultsLabel:Je,loadAllFiles:wt}=i,We=e.length,_e=Ro(()=>[...t,...r],[t,r]);return u(\"div\",{className:(0,Zh.default)(\"uppy-ProviderBrowser\",`uppy-ProviderBrowser-viewType--${o}`)},a&&u(\"div\",{className:\"uppy-ProviderBrowser-header\"},u(\"div\",{className:(0,Zh.default)(\"uppy-ProviderBrowser-headerBar\",!l&&\"uppy-ProviderBrowser-headerBar--simple\")},a)),x&&u(\"div\",{class:\"uppy-ProviderBrowser-searchFilter\"},u(Vn,{search:F,searchTerm:U,clearSearch:j,inputLabel:J,clearSearchLabel:B,inputClassName:\"uppy-ProviderBrowser-searchFilterInput\",searchOnInput:G})),(()=>E?u(\"div\",{className:\"uppy-Provider-loading\"},u(\"span\",null,b(\"loading\"))):!t.length&&!r.length?u(\"div\",{className:\"uppy-Provider-empty\"},Je):wt?u(\"div\",{className:\"uppy-ProviderBrowser-body\"},u(\"ul\",{className:\"uppy-ProviderBrowser-list\"},u(du,{data:_e,renderRow:ze=>u(hg,{currentSelection:e,uppyFiles:s,viewType:o,isChecked:h,toggleCheckbox:p,recordShiftKeyPress:d,showTitles:y,i18n:b,validateRestrictions:S,getNextFolder:z,columns:Be,f:ze}),rowHeight:31}))):u(\"div\",{className:\"uppy-ProviderBrowser-body\"},u(\"ul\",{className:\"uppy-ProviderBrowser-list\",onScroll:f,role:\"listbox\",tabIndex:\"-1\"},_e.map(ze=>u(hg,{currentSelection:e,uppyFiles:s,viewType:o,isChecked:h,toggleCheckbox:p,recordShiftKeyPress:d,showTitles:y,i18n:b,validateRestrictions:S,getNextFolder:z,columns:Be,f:ze})))))(),We>0&&u(og,{selected:We,done:oe,cancel:K,i18n:b}))}n(s2,\"Browser\");var cu=s2;var dg=n(i=>{let{i18n:e,loading:t}=i;return u(\"div\",{className:\"uppy-Provider-loading\"},u(\"span\",null,e(\"loading\")),typeof t==\"string\"&&u(\"span\",{style:{marginTop:\".7em\"}},t))},\"default\");var Ei=class extends we{componentWillUnmount(){let{onUnmount:e}=this.props;e()}render(){let{children:e}=this.props;return ci(e)[0]}};n(Ei,\"CloseWrapper\");function Uo(i){return i?/^[^/]+\\/(jpe?g|gif|png|svg|svg\\+xml|bmp|webp|avif)$/.test(i):!1}n(Uo,\"isPreviewSupported\");var Zr=class{constructor(e,t){this.filterItems=r=>{let s=this.plugin.getPluginState();return!s.filterInput||s.filterInput===\"\"?r:r.filter(o=>o.name.toLowerCase().indexOf(s.filterInput.toLowerCase())!==-1)},this.recordShiftKeyPress=r=>{this.isShiftKeyPressed=r.shiftKey},this.toggleCheckbox=(r,s)=>{r.stopPropagation(),r.preventDefault(),r.currentTarget.focus();let{folders:o,files:a}=this.plugin.getPluginState(),l=this.filterItems(o.concat(a));if(this.lastCheckbox&&this.isShiftKeyPressed){let{currentSelection:p}=this.plugin.getPluginState(),d=l.indexOf(this.lastCheckbox),f=l.indexOf(s),y=d<f?l.slice(d,f+1):l.slice(f,d+1),b=[];for(let S of y){let{uppy:E}=this.plugin,x=E.validateRestrictions(Hn(S),[...E.getFiles(),...b]);x?E.info({message:x.message},\"error\",E.opts.infoTimeout):b.push(S)}this.plugin.setPluginState({currentSelection:[...new Set([...p,...b])]});return}this.lastCheckbox=s;let{currentSelection:h}=this.plugin.getPluginState();this.isChecked(s)?this.plugin.setPluginState({currentSelection:h.filter(p=>p.id!==s.id)}):this.plugin.setPluginState({currentSelection:h.concat([s])})},this.isChecked=r=>{let{currentSelection:s}=this.plugin.getPluginState();return s.some(o=>o.id===r.id)},this.plugin=e,this.provider=t.provider,this.isHandlingScroll=!1,this.preFirstRender=this.preFirstRender.bind(this),this.handleError=this.handleError.bind(this),this.clearSelection=this.clearSelection.bind(this),this.cancelPicking=this.cancelPicking.bind(this)}preFirstRender(){this.plugin.setPluginState({didFirstRender:!0}),this.plugin.onFirstRender()}shouldHandleScroll(e){let{scrollHeight:t,scrollTop:r,offsetHeight:s}=e.target;return t-(r+s)<50&&!this.isHandlingScroll}clearSelection(){this.plugin.setPluginState({currentSelection:[],filterInput:\"\"})}cancelPicking(){this.clearSelection();let e=this.plugin.uppy.getPlugin(\"Dashboard\");e&&e.hideAllPanels()}handleError(e){var t;let{uppy:r}=this.plugin,s=r.i18n(\"companionError\");r.log(e.toString()),!(e.isAuthError||((t=e.cause)==null?void 0:t.name)===\"AbortError\")&&r.info({message:s,details:e.toString()},\"error\",5e3)}getTagFile(e){let t={id:e.id,source:this.plugin.id,data:e,name:e.name||e.id,type:e.mimeType,isRemote:!0,meta:{},body:{fileId:e.id},remote:{companionUrl:this.plugin.opts.companionUrl,url:`${this.provider.fileUrl(e.requestPath)}`,body:{fileId:e.id},providerName:this.provider.name,provider:this.provider.provider}};Object.defineProperty(t.remote,\"requestClient\",{value:this.provider,enumerable:!1});let r=ys(t);return r&&Uo(r)&&(t.preview=e.thumbnail),e.author&&(e.author.name!=null&&(t.meta.authorName=String(e.author.name)),e.author.url&&(t.meta.authorUrl=e.author.url)),e.relDirPath!=null&&(t.meta.relativePath=e.relDirPath?`${e.relDirPath}/${t.name}`:null),e.absDirPath!=null&&(t.meta.absolutePath=e.absDirPath?`/${e.absDirPath}/${t.name}`:`/${t.name}`),t}setLoading(e){this.plugin.setPluginState({loading:e})}};n(Zr,\"View\");function Jt(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(Jt,\"_classPrivateFieldLooseBase\");var o2=0;function Yn(i){return\"__private_\"+o2+++\"_\"+i}n(Yn,\"_classPrivateFieldLooseKey\");var n2={version:\"3.7.0\"};function a2(i){return i.slice(1).map(e=>e.name).join(\"/\")}n(a2,\"formatBreadcrumbs\");function ed(i,e){return i?`${i}/${e}`:e}n(ed,\"prependPath\");function ko(){return u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",width:\"30\",height:\"30\",viewBox:\"0 0 30 30\"},u(\"path\",{d:\"M15 30c8.284 0 15-6.716 15-15 0-8.284-6.716-15-15-15C6.716 0 0 6.716 0 15c0 8.284 6.716 15 15 15zm4.258-12.676v6.846h-8.426v-6.846H5.204l9.82-12.364 9.82 12.364H19.26z\"}))}n(ko,\"defaultPickerIcon\");var Cs=Yn(\"abortController\"),_r=Yn(\"withAbort\"),Xn=Yn(\"list\"),Gn=Yn(\"listFilesAndFolders\"),Kn=Yn(\"recursivelyListAllFiles\"),Te=class extends Zr{constructor(e,t){super(e,t),Object.defineProperty(this,Kn,{value:d2}),Object.defineProperty(this,Gn,{value:h2}),Object.defineProperty(this,Xn,{value:u2}),Object.defineProperty(this,_r,{value:l2}),Object.defineProperty(this,Cs,{writable:!0,value:void 0});let r={viewType:\"list\",showTitles:!0,showFilter:!0,showBreadcrumbs:!0,loadAllFiles:!1};this.opts={...r,...t},this.filterQuery=this.filterQuery.bind(this),this.clearFilter=this.clearFilter.bind(this),this.getFolder=this.getFolder.bind(this),this.getNextFolder=this.getNextFolder.bind(this),this.logout=this.logout.bind(this),this.handleAuth=this.handleAuth.bind(this),this.handleScroll=this.handleScroll.bind(this),this.donePicking=this.donePicking.bind(this),this.render=this.render.bind(this),this.plugin.setPluginState({authenticated:!1,files:[],folders:[],breadcrumbs:[],filterInput:\"\",isSearchVisible:!1,currentSelection:[]})}tearDown(){}async getFolder(e,t){this.setLoading(!0);try{await Jt(this,_r)[_r](async r=>{this.lastCheckbox=void 0;let{breadcrumbs:s}=this.plugin.getPluginState(),o=s.findIndex(h=>e===h.requestPath);o!==-1?s=s.slice(0,o+1):s=[...s,{requestPath:e,name:t}],this.nextPagePath=e;let a=[],l=[];do{let{files:h,folders:p}=await Jt(this,Gn)[Gn]({breadcrumbs:s,signal:r});a=a.concat(h),l=l.concat(p),this.setLoading(this.plugin.uppy.i18n(\"loadedXFiles\",{numFiles:a.length+l.length}))}while(this.opts.loadAllFiles&&this.nextPagePath);this.plugin.setPluginState({folders:l,files:a,breadcrumbs:s,filterInput:\"\"})})}catch(r){this.handleError(r)}finally{this.setLoading(!1)}}getNextFolder(e){this.getFolder(e.requestPath,e.name),this.lastCheckbox=void 0}async logout(){try{await Jt(this,_r)[_r](async e=>{let t=await this.provider.logout({signal:e});if(t.ok){if(!t.revoked){let s=this.plugin.uppy.i18n(\"companionUnauthorizeHint\",{provider:this.plugin.title,url:t.manual_revoke_url});this.plugin.uppy.info(s,\"info\",7e3)}let r={authenticated:!1,files:[],folders:[],breadcrumbs:[],filterInput:\"\"};this.plugin.setPluginState(r)}})}catch(e){this.handleError(e)}}filterQuery(e){this.plugin.setPluginState({filterInput:e})}clearFilter(){this.plugin.setPluginState({filterInput:\"\"})}async handleAuth(){let e=`@uppy/provider-views=${Te.VERSION}`;try{await this.provider.login({uppyVersions:e}),this.plugin.setPluginState({authenticated:!0}),this.preFirstRender()}catch(t){this.plugin.uppy.log(`login failed: ${t.message}`)}}async handleScroll(e){if(this.shouldHandleScroll(e)&&this.nextPagePath){this.isHandlingScroll=!0;try{await Jt(this,_r)[_r](async t=>{let{files:r,folders:s,breadcrumbs:o}=this.plugin.getPluginState(),{files:a,folders:l}=await Jt(this,Gn)[Gn]({breadcrumbs:o,signal:t}),h=r.concat(a),p=s.concat(l);this.plugin.setPluginState({folders:p,files:h})})}catch(t){this.handleError(t)}finally{this.isHandlingScroll=!1}}}async donePicking(){this.setLoading(!0);try{await Jt(this,_r)[_r](async e=>{let{currentSelection:t}=this.plugin.getPluginState(),r=[],s=[];for(let o of t){let{requestPath:a}=o,l=n(h=>({...h,relDirPath:h.absDirPath.replace(o.absDirPath,\"\").replace(/^\\//,\"\")}),\"withRelDirPath\");if(o.isFolder){let h=!0,p=0,d=new qm({concurrency:6}),f=n(b=>{for(let S of b){let E=this.getTagFile(S),x=Dl(E);this.plugin.uppy.checkIfFileAlreadyExists(x)||(s.push(l(S)),p++,this.setLoading(this.plugin.uppy.i18n(\"addedNumFiles\",{numFiles:p}))),h=!1}},\"onFiles\");await Jt(this,Kn)[Kn]({requestPath:a,absDirPath:ed(o.absDirPath,o.name),relDirPath:o.name,queue:d,onFiles:f,signal:e}),await d.onIdle();let y;h?y=this.plugin.uppy.i18n(\"emptyFolderAdded\"):p===0?y=this.plugin.uppy.i18n(\"folderAlreadyAdded\",{folder:o.name}):y=this.plugin.uppy.i18n(\"folderAdded\",{smart_count:p,folder:o.name}),r.push(y)}else s.push(l(o))}this.plugin.uppy.log(\"Adding files from a remote provider\"),this.plugin.uppy.addFiles(s.map(o=>this.getTagFile(o))),this.plugin.setPluginState({filterInput:\"\"}),r.forEach(o=>this.plugin.uppy.info(o)),this.clearSelection()})}catch(e){this.handleError(e)}finally{this.setLoading(!1)}}render(e,t){var r=this;t===void 0&&(t={});let{authenticated:s,didFirstRender:o}=this.plugin.getPluginState(),{i18n:a}=this.plugin.uppy;o||this.preFirstRender();let l={...this.opts,...t},{files:h,folders:p,filterInput:d,loading:f,currentSelection:y}=this.plugin.getPluginState(),{isChecked:b,toggleCheckbox:S,recordShiftKeyPress:E,filterItems:x}=this,F=d!==\"\",U=this.plugin.icon||ko,j={showBreadcrumbs:l.showBreadcrumbs,getFolder:this.getFolder,breadcrumbs:this.plugin.getPluginState().breadcrumbs,pluginIcon:U,title:this.plugin.title,logout:this.logout,username:this.username,i18n:a},G={isChecked:b,toggleCheckbox:S,recordShiftKeyPress:E,currentSelection:y,files:F?x(h):h,folders:F?x(p):p,username:this.username,getNextFolder:this.getNextFolder,getFolder:this.getFolder,loadAllFiles:this.opts.loadAllFiles,showSearchFilter:l.showFilter,search:this.filterQuery,clearSearch:this.clearFilter,searchTerm:d,searchOnInput:!0,searchInputLabel:a(\"filter\"),clearSearchLabel:a(\"resetFilter\"),noResultsLabel:a(\"noFilesFound\"),logout:this.logout,handleScroll:this.handleScroll,done:this.donePicking,cancel:this.cancelPicking,headerComponent:Km(j),title:this.plugin.title,viewType:l.viewType,showTitles:l.showTitles,showBreadcrumbs:l.showBreadcrumbs,pluginIcon:U,i18n:this.plugin.uppy.i18n,uppyFiles:this.plugin.uppy.getFiles(),validateRestrictions:function(){return r.plugin.uppy.validateRestrictions(...arguments)}};return f?u(Ei,{onUnmount:this.clearSelection},u(dg,{i18n:this.plugin.uppy.i18n,loading:f})):s?u(Ei,{onUnmount:this.clearSelection},u(cu,G)):u(Ei,{onUnmount:this.clearSelection},u(Vm,{pluginName:this.plugin.title,pluginIcon:U,handleAuth:this.handleAuth,i18n:this.plugin.uppy.i18n,i18nArray:this.plugin.uppy.i18nArray}))}};n(Te,\"ProviderView\");async function l2(i){var e;(e=Jt(this,Cs)[Cs])==null||e.abort();let t=new AbortController;Jt(this,Cs)[Cs]=t;let r=n(()=>{t.abort(),this.clearSelection()},\"cancelRequest\");try{this.plugin.uppy.on(\"dashboard:close-panel\",r),this.plugin.uppy.on(\"cancel-all\",r),await i(t.signal)}finally{this.plugin.uppy.off(\"dashboard:close-panel\",r),this.plugin.uppy.off(\"cancel-all\",r),Jt(this,Cs)[Cs]=void 0}}n(l2,\"_withAbort2\");async function u2(i){let{requestPath:e,absDirPath:t,signal:r}=i,{username:s,nextPagePath:o,items:a}=await this.provider.list(e,{signal:r});return this.username=s||this.username,{items:a.map(l=>({...l,absDirPath:t})),nextPagePath:o}}n(u2,\"_list2\");async function h2(i){let{breadcrumbs:e,signal:t}=i,r=a2(e),{items:s,nextPagePath:o}=await Jt(this,Xn)[Xn]({requestPath:this.nextPagePath,absDirPath:r,signal:t});this.nextPagePath=o;let a=[],l=[];return s.forEach(h=>{h.isFolder?l.push(h):a.push(h)}),{files:a,folders:l}}n(h2,\"_listFilesAndFolders2\");async function d2(i){let{requestPath:e,absDirPath:t,relDirPath:r,queue:s,onFiles:o,signal:a}=i,l=e;for(;l;){let h=await Jt(this,Xn)[Xn]({requestPath:l,absDirPath:t,signal:a});l=h.nextPagePath;let p=h.items.filter(y=>!y.isFolder),d=h.items.filter(y=>y.isFolder);o(p);let f=d.map(async y=>s.add(async()=>Jt(this,Kn)[Kn]({requestPath:y.requestPath,absDirPath:ed(t,y.name),relDirPath:ed(r,y.name),queue:s,onFiles:o,signal:a})));await Promise.all(f)}}n(d2,\"_recursivelyListAllFiles2\");Te.VERSION=n2.version;function cg(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(cg,\"_classPrivateFieldLooseBase\");var c2=0;function p2(i){return\"__private_\"+c2+++\"_\"+i}n(p2,\"_classPrivateFieldLooseKey\");var f2={version:\"3.7.0\"},Qn=p2(\"updateFilesAndInputMode\"),ji=class extends Zr{constructor(e,t){super(e,t),Object.defineProperty(this,Qn,{value:m2});let r={viewType:\"grid\",showTitles:!1,showFilter:!1,showBreadcrumbs:!1};this.opts={...r,...t},this.search=this.search.bind(this),this.clearSearch=this.clearSearch.bind(this),this.resetPluginState=this.resetPluginState.bind(this),this.handleScroll=this.handleScroll.bind(this),this.donePicking=this.donePicking.bind(this),this.render=this.render.bind(this),this.defaultState={isInputMode:!0,files:[],folders:[],breadcrumbs:[],filterInput:\"\",currentSelection:[],searchTerm:null},this.plugin.setPluginState(this.defaultState)}tearDown(){}resetPluginState(){this.plugin.setPluginState(this.defaultState)}async search(e){let{searchTerm:t}=this.plugin.getPluginState();if(!(e&&e===t)){this.setLoading(!0);try{let r=await this.provider.search(e);cg(this,Qn)[Qn](r,[])}catch(r){this.handleError(r)}finally{this.setLoading(!1)}}}clearSearch(){this.plugin.setPluginState({currentSelection:[],files:[],searchTerm:null})}async handleScroll(e){let t=this.nextPageQuery||null;if(this.shouldHandleScroll(e)&&t){this.isHandlingScroll=!0;try{let{files:r,searchTerm:s}=this.plugin.getPluginState(),o=await this.provider.search(s,t);cg(this,Qn)[Qn](o,r)}catch(r){this.handleError(r)}finally{this.isHandlingScroll=!1}}}donePicking(){let{currentSelection:e}=this.plugin.getPluginState();this.plugin.uppy.log(\"Adding remote search provider files\"),this.plugin.uppy.addFiles(e.map(t=>this.getTagFile(t))),this.resetPluginState()}render(e,t){var r=this;t===void 0&&(t={});let{didFirstRender:s,isInputMode:o,searchTerm:a}=this.plugin.getPluginState(),{i18n:l}=this.plugin.uppy;s||this.preFirstRender();let h={...this.opts,...t},{files:p,folders:d,filterInput:f,loading:y,currentSelection:b}=this.plugin.getPluginState(),{isChecked:S,toggleCheckbox:E,filterItems:x,recordShiftKeyPress:F}=this,U=f!==\"\",j={isChecked:S,toggleCheckbox:E,recordShiftKeyPress:F,currentSelection:b,files:U?x(p):p,folders:U?x(d):d,handleScroll:this.handleScroll,done:this.donePicking,cancel:this.cancelPicking,showSearchFilter:h.showFilter,search:this.search,clearSearch:this.clearSearch,searchTerm:a,searchOnInput:!1,searchInputLabel:l(\"search\"),clearSearchLabel:l(\"resetSearch\"),noResultsLabel:l(\"noSearchResults\"),title:this.plugin.title,viewType:h.viewType,showTitles:h.showTitles,showFilter:h.showFilter,isLoading:y,showBreadcrumbs:h.showBreadcrumbs,pluginIcon:this.plugin.icon,i18n:l,uppyFiles:this.plugin.uppy.getFiles(),validateRestrictions:function(){return r.plugin.uppy.validateRestrictions(...arguments)}};return o?u(Ei,{onUnmount:this.resetPluginState},u(\"div\",{className:\"uppy-SearchProvider\"},u(Vn,{search:this.search,clearSelection:this.clearSelection,inputLabel:l(\"enterTextToSearch\"),buttonLabel:l(\"searchImages\"),inputClassName:\"uppy-c-textInput uppy-SearchProvider-input\",buttonCSSClassName:\"uppy-SearchProvider-searchButton\",showButton:!0}))):u(Ei,{onUnmount:this.resetPluginState},u(cu,j))}};n(ji,\"SearchProviderView\");function m2(i,e){this.nextPageQuery=i.nextPageQuery,i.items.forEach(t=>{e.push(t)}),this.plugin.setPluginState({currentSelection:[],isInputMode:!1,files:e,searchTerm:i.searchedFor})}n(m2,\"_updateFilesAndInputMode2\");ji.VERSION=f2.version;var pg;function Hi(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(Hi,\"_classPrivateFieldLooseBase\");var g2=0;function id(i){return\"__private_\"+g2+++\"_\"+i}n(id,\"_classPrivateFieldLooseKey\");var y2={version:\"3.0.5\"},v2=\"uppy/STATE_UPDATE\",b2=n(i=>e=>e.uppy[i],\"defaultSelector\");function w2(i,e){let t=Object.keys(e),r={};return t.forEach(s=>{i[s]!==e[s]&&(r[s]=e[s])}),r}n(w2,\"getPatch\");var xr=id(\"id\"),Jn=id(\"selector\"),Fr=id(\"store\");pg=Symbol.for(\"uppy test: get id\");var Zn=class{constructor(e){Object.defineProperty(this,xr,{writable:!0,value:void 0}),Object.defineProperty(this,Jn,{writable:!0,value:void 0}),Object.defineProperty(this,Fr,{writable:!0,value:void 0}),Hi(this,Fr)[Fr]=e.store,Hi(this,xr)[xr]=e.id||Pt(),Hi(this,Jn)[Jn]=e.selector||b2(Hi(this,xr)[xr]),this.setState({})}setState(e){Hi(this,Fr)[Fr].dispatch({type:v2,id:Hi(this,xr)[xr],payload:e})}getState(){return Hi(this,Jn)[Jn](Hi(this,Fr)[Fr].getState())}subscribe(e){let t=this.getState();return Hi(this,Fr)[Fr].subscribe(()=>{let r=this.getState();if(t!==r){let s=w2(t,r);e(t,r,s),t=r}})}[pg](){return Hi(this,xr)[xr]}};n(Zn,\"ReduxStore\");Zn.VERSION=y2.version;var fg=Zn;function pu(i,e,t,r){return t===0||i===e?i:r===0?e:i+(e-i)*2**(-r/t)}n(pu,\"emaFilter\");var Ut={STATE_ERROR:\"error\",STATE_WAITING:\"waiting\",STATE_PREPROCESSING:\"preprocessing\",STATE_UPLOADING:\"uploading\",STATE_POSTPROCESSING:\"postprocessing\",STATE_COMPLETE:\"complete\"};var ud=de(Qt(),1);function ea(i){let e=[],t,r;for(let{progress:o}of Object.values(i)){let{preprocess:a,postprocess:l}=o;r==null&&(a||l)&&({mode:t,message:r}=a||l),a?.mode===\"determinate\"&&e.push(a.value),l?.mode===\"determinate\"&&e.push(l.value)}let s=e.reduce((o,a)=>o+a/e.length,0);return{mode:t,message:r,value:s}}n(ea,\"calculateProcessingProgress\");var nd=de(Qt(),1),od=de(Il(),1);function rd(i){let e=Math.floor(i/3600)%24,t=Math.floor(i/60)%60,r=Math.floor(i%60);return{hours:e,minutes:t,seconds:r}}n(rd,\"secondsToTime\");function sd(i){let e=rd(i),t=e.hours===0?\"\":`${e.hours}h`,r=e.minutes===0?\"\":`${e.hours===0?e.minutes:` ${e.minutes.toString(10).padStart(2,\"0\")}`}m`,s=e.hours!==0?\"\":`${e.minutes===0?e.seconds:` ${e.seconds.toString(10).padStart(2,\"0\")}`}s`;return`${t}${r}${s}`}n(sd,\"prettyETA\");var S2=\"\\xB7\",mg=n(()=>` ${S2} `,\"renderDot\");function gg(i){let{newFiles:e,isUploadStarted:t,recoveredState:r,i18n:s,uploadState:o,isSomeGhost:a,startUpload:l}=i,h=(0,nd.default)(\"uppy-u-reset\",\"uppy-c-btn\",\"uppy-StatusBar-actionBtn\",\"uppy-StatusBar-actionBtn--upload\",{\"uppy-c-btn-primary\":o===Ut.STATE_WAITING},{\"uppy-StatusBar-actionBtn--disabled\":a}),p=e&&t&&!r?s(\"uploadXNewFiles\",{smart_count:e}):s(\"uploadXFiles\",{smart_count:e});return u(\"button\",{type:\"button\",className:h,\"aria-label\":s(\"uploadXFiles\",{smart_count:e}),onClick:l,disabled:a,\"data-uppy-super-focusable\":!0},p)}n(gg,\"UploadBtn\");function yg(i){let{i18n:e,uppy:t}=i;return u(\"button\",{type:\"button\",className:\"uppy-u-reset uppy-c-btn uppy-StatusBar-actionBtn uppy-StatusBar-actionBtn--retry\",\"aria-label\":e(\"retryUpload\"),onClick:()=>t.retryAll().catch(()=>{}),\"data-uppy-super-focusable\":!0,\"data-cy\":\"retry\"},u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\",width:\"8\",height:\"10\",viewBox:\"0 0 8 10\"},u(\"path\",{d:\"M4 2.408a2.75 2.75 0 1 0 2.75 2.75.626.626 0 0 1 1.25.018v.023a4 4 0 1 1-4-4.041V.25a.25.25 0 0 1 .389-.208l2.299 1.533a.25.25 0 0 1 0 .416l-2.3 1.533A.25.25 0 0 1 4 3.316v-.908z\"})),e(\"retry\"))}n(yg,\"RetryBtn\");function vg(i){let{i18n:e,uppy:t}=i;return u(\"button\",{type:\"button\",className:\"uppy-u-reset uppy-StatusBar-actionCircleBtn\",title:e(\"cancel\"),\"aria-label\":e(\"cancel\"),onClick:()=>t.cancelAll(),\"data-cy\":\"cancel\",\"data-uppy-super-focusable\":!0},u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\",width:\"16\",height:\"16\",viewBox:\"0 0 16 16\"},u(\"g\",{fill:\"none\",fillRule:\"evenodd\"},u(\"circle\",{fill:\"#888\",cx:\"8\",cy:\"8\",r:\"8\"}),u(\"path\",{fill:\"#FFF\",d:\"M9.283 8l2.567 2.567-1.283 1.283L8 9.283 5.433 11.85 4.15 10.567 6.717 8 4.15 5.433 5.433 4.15 8 6.717l2.567-2.567 1.283 1.283z\"}))))}n(vg,\"CancelBtn\");function bg(i){let{isAllPaused:e,i18n:t,isAllComplete:r,resumableUploads:s,uppy:o}=i,a=t(e?\"resume\":\"pause\");function l(){return r?null:s?e?o.resumeAll():o.pauseAll():o.cancelAll()}return n(l,\"togglePauseResume\"),u(\"button\",{title:a,\"aria-label\":a,className:\"uppy-u-reset uppy-StatusBar-actionCircleBtn\",type:\"button\",onClick:l,\"data-cy\":\"togglePauseResume\",\"data-uppy-super-focusable\":!0},u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\",width:\"16\",height:\"16\",viewBox:\"0 0 16 16\"},u(\"g\",{fill:\"none\",fillRule:\"evenodd\"},u(\"circle\",{fill:\"#888\",cx:\"8\",cy:\"8\",r:\"8\"}),u(\"path\",{fill:\"#FFF\",d:e?\"M6 4.25L11.5 8 6 11.75z\":\"M5 4.5h2v7H5v-7zm4 0h2v7H9v-7z\"}))))}n(bg,\"PauseResumeButton\");function wg(i){let{i18n:e,doneButtonHandler:t}=i;return u(\"button\",{type:\"button\",className:\"uppy-u-reset uppy-c-btn uppy-StatusBar-actionBtn uppy-StatusBar-actionBtn--done\",onClick:t,\"data-uppy-super-focusable\":!0},e(\"done\"))}n(wg,\"DoneBtn\");function Sg(){return u(\"svg\",{className:\"uppy-StatusBar-spinner\",\"aria-hidden\":\"true\",focusable:\"false\",width:\"14\",height:\"14\"},u(\"path\",{d:\"M13.983 6.547c-.12-2.509-1.64-4.893-3.939-5.936-2.48-1.127-5.488-.656-7.556 1.094C.524 3.367-.398 6.048.162 8.562c.556 2.495 2.46 4.52 4.94 5.183 2.932.784 5.61-.602 7.256-3.015-1.493 1.993-3.745 3.309-6.298 2.868-2.514-.434-4.578-2.349-5.153-4.84a6.226 6.226 0 0 1 2.98-6.778C6.34.586 9.74 1.1 11.373 3.493c.407.596.693 1.282.842 1.988.127.598.073 1.197.161 1.794.078.525.543 1.257 1.15.864.525-.341.49-1.05.456-1.592-.007-.15.02.3 0 0\",fillRule:\"evenodd\"}))}n(Sg,\"LoadingSpinner\");function Pg(i){let{progress:e}=i,{value:t,mode:r,message:s}=e,o=Math.round(t*100),a=\"\\xB7\";return u(\"div\",{className:\"uppy-StatusBar-content\"},u(Sg,null),r===\"determinate\"?`${o}% ${a} `:\"\",s)}n(Pg,\"ProgressBarProcessing\");function P2(i){let{numUploads:e,complete:t,totalUploadedSize:r,totalSize:s,totalETA:o,i18n:a}=i,l=e>1;return u(\"div\",{className:\"uppy-StatusBar-statusSecondary\"},l&&a(\"filesUploadedOfTotal\",{complete:t,smart_count:e}),u(\"span\",{className:\"uppy-StatusBar-additionalInfo\"},l&&mg(),a(\"dataUploadedOfTotal\",{complete:(0,od.default)(r),total:(0,od.default)(s)}),mg(),a(\"xTimeLeft\",{time:sd(o)})))}n(P2,\"ProgressDetails\");function _g(i){let{i18n:e,complete:t,numUploads:r}=i;return u(\"div\",{className:\"uppy-StatusBar-statusSecondary\"},e(\"filesUploadedOfTotal\",{complete:t,smart_count:r}))}n(_g,\"FileUploadCount\");function _2(i){let{i18n:e,newFiles:t,startUpload:r}=i,s=(0,nd.default)(\"uppy-u-reset\",\"uppy-c-btn\",\"uppy-StatusBar-actionBtn\",\"uppy-StatusBar-actionBtn--uploadNewlyAdded\");return u(\"div\",{className:\"uppy-StatusBar-statusSecondary\"},u(\"div\",{className:\"uppy-StatusBar-statusSecondaryHint\"},e(\"xMoreFilesAdded\",{smart_count:t})),u(\"button\",{type:\"button\",className:s,\"aria-label\":e(\"uploadXFiles\",{smart_count:t}),onClick:r},e(\"upload\")))}n(_2,\"UploadNewlyAddedFiles\");function xg(i){let{i18n:e,supportsUploadProgress:t,totalProgress:r,showProgressDetails:s,isUploadStarted:o,isAllComplete:a,isAllPaused:l,newFiles:h,numUploads:p,complete:d,totalUploadedSize:f,totalSize:y,totalETA:b,startUpload:S}=i,E=h&&o;if(!o||a)return null;let x=e(l?\"paused\":\"uploading\");function F(){return!l&&!E&&s?t?u(P2,{numUploads:p,complete:d,totalUploadedSize:f,totalSize:y,totalETA:b,i18n:e}):u(_g,{i18n:e,complete:d,numUploads:p}):null}return n(F,\"renderProgressDetails\"),u(\"div\",{className:\"uppy-StatusBar-content\",\"aria-label\":x,title:x},l?null:u(Sg,null),u(\"div\",{className:\"uppy-StatusBar-status\"},u(\"div\",{className:\"uppy-StatusBar-statusPrimary\"},t?`${x}: ${r}%`:x),F(),E?u(_2,{i18n:e,newFiles:h,startUpload:S}):null))}n(xg,\"ProgressBarUploading\");function Fg(i){let{i18n:e}=i;return u(\"div\",{className:\"uppy-StatusBar-content\",role:\"status\",title:e(\"complete\")},u(\"div\",{className:\"uppy-StatusBar-status\"},u(\"div\",{className:\"uppy-StatusBar-statusPrimary\"},u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-StatusBar-statusIndicator uppy-c-icon\",width:\"15\",height:\"11\",viewBox:\"0 0 15 11\"},u(\"path\",{d:\"M.414 5.843L1.627 4.63l3.472 3.472L13.202 0l1.212 1.213L5.1 10.528z\"})),e(\"complete\"))))}n(Fg,\"ProgressBarComplete\");function Eg(i){let{error:e,i18n:t,complete:r,numUploads:s}=i;function o(){let a=`${t(\"uploadFailed\")} \n\n ${e}`;alert(a)}return n(o,\"displayErrorAlert\"),u(\"div\",{className:\"uppy-StatusBar-content\",title:t(\"uploadFailed\")},u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-StatusBar-statusIndicator uppy-c-icon\",width:\"11\",height:\"11\",viewBox:\"0 0 11 11\"},u(\"path\",{d:\"M4.278 5.5L0 1.222 1.222 0 5.5 4.278 9.778 0 11 1.222 6.722 5.5 11 9.778 9.778 11 5.5 6.722 1.222 11 0 9.778z\"})),u(\"div\",{className:\"uppy-StatusBar-status\"},u(\"div\",{className:\"uppy-StatusBar-statusPrimary\"},t(\"uploadFailed\"),u(\"button\",{className:\"uppy-u-reset uppy-StatusBar-details\",\"aria-label\":t(\"showErrorDetails\"),\"data-microtip-position\":\"top-right\",\"data-microtip-size\":\"medium\",onClick:o,type:\"button\"},\"?\")),u(_g,{i18n:t,complete:r,numUploads:s})))}n(Eg,\"ProgressBarError\");var{STATE_ERROR:Og,STATE_WAITING:Cg,STATE_PREPROCESSING:ad,STATE_UPLOADING:fu,STATE_POSTPROCESSING:ld,STATE_COMPLETE:mu}=Ut;function hd(i){let{newFiles:e,allowNewUpload:t,isUploadInProgress:r,isAllPaused:s,resumableUploads:o,error:a,hideUploadButton:l,hidePauseResumeButton:h,hideCancelButton:p,hideRetryButton:d,recoveredState:f,uploadState:y,totalProgress:b,files:S,supportsUploadProgress:E,hideAfterFinish:x,isSomeGhost:F,doneButtonHandler:U,isUploadStarted:j,i18n:G,startUpload:J,uppy:B,isAllComplete:z,showProgressDetails:K,numUploads:oe,complete:Be,totalSize:Je,totalETA:wt,totalUploadedSize:We}=i;function _e(){switch(y){case ld:case ad:{let re=ea(S);return re.mode===\"determinate\"?re.value*100:b}case Og:return null;case fu:return E?b:null;default:return b}}n(_e,\"getProgressValue\");function ze(){switch(y){case ld:case ad:{let{mode:re}=ea(S);return re===\"indeterminate\"}case fu:return!E;default:return!1}}n(ze,\"getIsIndeterminate\");function xe(){if(f)return!1;switch(y){case Cg:return l||e===0;case mu:return x;default:return!1}}n(xe,\"getIsHidden\");let ui=_e(),V=xe(),R=ui??100,I=!a&&e&&!r&&!s&&t&&!l,L=!p&&y!==Cg&&y!==mu,Q=o&&!h&&y===fu,X=a&&!z&&!d,ye=U&&y===mu,pe=(0,ud.default)(\"uppy-StatusBar-progress\",{\"is-indeterminate\":ze()}),ne=(0,ud.default)(\"uppy-StatusBar\",`is-${y}`,{\"has-ghosts\":F});return u(\"div\",{className:ne,\"aria-hidden\":V},u(\"div\",{className:pe,style:{width:`${R}%`},role:\"progressbar\",\"aria-label\":`${R}%`,\"aria-valuetext\":`${R}%`,\"aria-valuemin\":\"0\",\"aria-valuemax\":\"100\",\"aria-valuenow\":ui}),(()=>{switch(y){case ad:case ld:return u(Pg,{progress:ea(S)});case mu:return u(Fg,{i18n:G});case Og:return u(Eg,{error:a,i18n:G,numUploads:oe,complete:Be});case fu:return u(xg,{i18n:G,supportsUploadProgress:E,totalProgress:b,showProgressDetails:K,isUploadStarted:j,isAllComplete:z,isAllPaused:s,newFiles:e,numUploads:oe,complete:Be,totalUploadedSize:We,totalSize:Je,totalETA:wt,startUpload:J});default:return null}})(),u(\"div\",{className:\"uppy-StatusBar-actions\"},f||I?u(gg,{newFiles:e,isUploadStarted:j,recoveredState:f,i18n:G,isSomeGhost:F,startUpload:J,uploadState:y}):null,X?u(yg,{i18n:G,uppy:B}):null,Q?u(bg,{isAllPaused:s,i18n:G,isAllComplete:z,resumableUploads:o,uppy:B}):null,L?u(vg,{i18n:G,uppy:B}):null,ye?u(wg,{i18n:G,doneButtonHandler:U}):null))}n(hd,\"StatusBar\");var Tg={strings:{uploading:\"Uploading\",complete:\"Complete\",uploadFailed:\"Upload failed\",paused:\"Paused\",retry:\"Retry\",cancel:\"Cancel\",pause:\"Pause\",resume:\"Resume\",done:\"Done\",filesUploadedOfTotal:{0:\"%{complete} of %{smart_count} file uploaded\",1:\"%{complete} of %{smart_count} files uploaded\"},dataUploadedOfTotal:\"%{complete} of %{total}\",xTimeLeft:\"%{time} left\",uploadXFiles:{0:\"Upload %{smart_count} file\",1:\"Upload %{smart_count} files\"},uploadXNewFiles:{0:\"Upload +%{smart_count} file\",1:\"Upload +%{smart_count} files\"},upload:\"Upload\",retryUpload:\"Retry upload\",xMoreFilesAdded:{0:\"%{smart_count} more file added\",1:\"%{smart_count} more files added\"},showErrorDetails:\"Show error details\"}};function ke(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(ke,\"_classPrivateFieldLooseBase\");var x2=0;function Do(i){return\"__private_\"+x2+++\"_\"+i}n(Do,\"_classPrivateFieldLooseKey\");var F2={version:\"3.2.5\"},E2=2e3,O2=2e3;function C2(i,e,t,r){if(i)return Ut.STATE_ERROR;if(e)return Ut.STATE_COMPLETE;if(t)return Ut.STATE_WAITING;let s=Ut.STATE_WAITING,o=Object.keys(r);for(let a=0;a<o.length;a++){let{progress:l}=r[o[a]];if(l.uploadStarted&&!l.uploadComplete)return Ut.STATE_UPLOADING;l.preprocess&&s!==Ut.STATE_UPLOADING&&(s=Ut.STATE_PREPROCESSING),l.postprocess&&s!==Ut.STATE_UPLOADING&&s!==Ut.STATE_PREPROCESSING&&(s=Ut.STATE_POSTPROCESSING)}return s}n(C2,\"getUploadingState\");var fi=Do(\"lastUpdateTime\"),Oi=Do(\"previousUploadedBytes\"),Er=Do(\"previousSpeed\"),Zt=Do(\"previousETA\"),dd=Do(\"computeSmoothETA\"),ta=Do(\"onUploadStart\"),$i=class extends Z{constructor(e,t){super(e,t),Object.defineProperty(this,dd,{value:T2}),Object.defineProperty(this,fi,{writable:!0,value:void 0}),Object.defineProperty(this,Oi,{writable:!0,value:void 0}),Object.defineProperty(this,Er,{writable:!0,value:void 0}),Object.defineProperty(this,Zt,{writable:!0,value:void 0}),this.startUpload=()=>this.uppy.upload().catch(()=>{}),Object.defineProperty(this,ta,{writable:!0,value:()=>{let{recoveredState:s}=this.uppy.getState();if(ke(this,Er)[Er]=null,ke(this,Zt)[Zt]=null,s){ke(this,Oi)[Oi]=Object.values(s.files).reduce((o,a)=>{let{progress:l}=a;return o+l.bytesUploaded},0),this.uppy.emit(\"restore-confirmed\");return}ke(this,fi)[fi]=performance.now(),ke(this,Oi)[Oi]=0}}),this.id=this.opts.id||\"StatusBar\",this.title=\"StatusBar\",this.type=\"progressindicator\",this.defaultLocale=Tg;let r={target:\"body\",hideUploadButton:!1,hideRetryButton:!1,hidePauseResumeButton:!1,hideCancelButton:!1,showProgressDetails:!1,hideAfterFinish:!0,doneButtonHandler:null};this.opts={...r,...t},this.i18nInit(),this.render=this.render.bind(this),this.install=this.install.bind(this)}render(e){let{capabilities:t,files:r,allowNewUpload:s,totalProgress:o,error:a,recoveredState:l}=e,{newFiles:h,startedFiles:p,completeFiles:d,isUploadStarted:f,isAllComplete:y,isAllErrored:b,isAllPaused:S,isUploadInProgress:E,isSomeGhost:x}=this.uppy.getObjectOfFilesPerState(),F=l?Object.values(r):h,U=!!t.resumableUploads,j=t.uploadProgress!==!1,G=0,J=0;p.forEach(z=>{G+=z.progress.bytesTotal||0,J+=z.progress.bytesUploaded||0});let B=ke(this,dd)[dd]({uploaded:J,total:G,remaining:G-J});return hd({error:a,uploadState:C2(a,y,l,e.files||{}),allowNewUpload:s,totalProgress:o,totalSize:G,totalUploadedSize:J,isAllComplete:!1,isAllPaused:S,isAllErrored:b,isUploadStarted:f,isUploadInProgress:E,isSomeGhost:x,recoveredState:l,complete:d.length,newFiles:F.length,numUploads:p.length,totalETA:B,files:r,i18n:this.i18n,uppy:this.uppy,startUpload:this.startUpload,doneButtonHandler:this.opts.doneButtonHandler,resumableUploads:U,supportsUploadProgress:j,showProgressDetails:this.opts.showProgressDetails,hideUploadButton:this.opts.hideUploadButton,hideRetryButton:this.opts.hideRetryButton,hidePauseResumeButton:this.opts.hidePauseResumeButton,hideCancelButton:this.opts.hideCancelButton,hideAfterFinish:this.opts.hideAfterFinish,isTargetDOMEl:this.isTargetDOMEl})}onMount(){let e=this.el;Hl(e)||(e.dir=\"ltr\")}install(){let{target:e}=this.opts;e&&this.mount(e,this),this.uppy.on(\"upload\",ke(this,ta)[ta]),ke(this,fi)[fi]=performance.now(),ke(this,Oi)[Oi]=this.uppy.getFiles().reduce((t,r)=>t+r.progress.bytesUploaded,0)}uninstall(){this.unmount(),this.uppy.off(\"upload\",ke(this,ta)[ta])}};n($i,\"StatusBar\");function T2(i){var e,t;if(i.total===0||i.remaining===0)return 0;(t=(e=ke(this,fi))[fi])!=null||(e[fi]=performance.now());let r=performance.now()-ke(this,fi)[fi];if(r===0){var s;return Math.round(((s=ke(this,Zt)[Zt])!=null?s:0)/100)/10}let o=i.uploaded-ke(this,Oi)[Oi];if(ke(this,Oi)[Oi]=i.uploaded,o<=0){var a;return Math.round(((a=ke(this,Zt)[Zt])!=null?a:0)/100)/10}let l=o/r,h=ke(this,Er)[Er]==null?l:pu(l,ke(this,Er)[Er],E2,r);ke(this,Er)[Er]=h;let p=i.remaining/h,d=Math.max(ke(this,Zt)[Zt]-r,0),f=ke(this,Zt)[Zt]==null?p:pu(p,d,O2,r);return ke(this,Zt)[Zt]=f,ke(this,fi)[fi]=performance.now(),Math.round(f/100)/10}n(T2,\"_computeSmoothETA2\");$i.VERSION=F2.version;var Ag=300,Io=class extends we{constructor(){super(...arguments),this.ref=um()}componentWillEnter(e){this.ref.current.style.opacity=\"1\",this.ref.current.style.transform=\"none\",setTimeout(e,Ag)}componentWillLeave(e){this.ref.current.style.opacity=\"0\",this.ref.current.style.transform=\"translateY(350%)\",setTimeout(e,Ag)}render(){let{children:e}=this.props;return u(\"div\",{className:\"uppy-Informer-animated\",ref:this.ref},e)}};n(Io,\"FadeIn\");function A2(i,e){return Object.assign(i,e)}n(A2,\"assign\");function R2(i,e){var t;return(t=i?.key)!=null?t:e}n(R2,\"getKey\");function U2(i,e){let t=i._ptgLinkedRefs||(i._ptgLinkedRefs={});return t[e]||(t[e]=r=>{i.refs[e]=r})}n(U2,\"linkRef\");function ia(i){let e={};for(let t=0;t<i.length;t++)if(i[t]!=null){let r=R2(i[t],t.toString(36));e[r]=i[t]}return e}n(ia,\"getChildMapping\");function k2(i,e){i=i||{},e=e||{};let t=n(a=>e.hasOwnProperty(a)?e[a]:i[a],\"getValueForKey\"),r={},s=[];for(let a in i)e.hasOwnProperty(a)?s.length&&(r[a]=s,s=[]):s.push(a);let o={};for(let a in e){if(r.hasOwnProperty(a))for(let l=0;l<r[a].length;l++){let h=r[a][l];o[r[a][l]]=t(h)}o[a]=t(a)}for(let a=0;a<s.length;a++)o[s[a]]=t(s[a]);return o}n(k2,\"mergeChildMappings\");var D2=n(i=>i,\"identity\"),ra=class extends we{constructor(e,t){super(e,t),this.refs={},this.state={children:ia(ci(ci(this.props.children))||[])},this.performAppear=this.performAppear.bind(this),this.performEnter=this.performEnter.bind(this),this.performLeave=this.performLeave.bind(this)}componentWillMount(){this.currentlyTransitioningKeys={},this.keysToAbortLeave=[],this.keysToEnter=[],this.keysToLeave=[]}componentDidMount(){let e=this.state.children;for(let t in e)e[t]&&this.performAppear(t)}componentWillReceiveProps(e){let t=ia(ci(e.children)||[]),r=this.state.children;this.setState(o=>({children:k2(o.children,t)}));let s;for(s in t)if(t.hasOwnProperty(s)){let o=r&&r.hasOwnProperty(s);t[s]&&o&&this.currentlyTransitioningKeys[s]?(this.keysToEnter.push(s),this.keysToAbortLeave.push(s)):t[s]&&!o&&!this.currentlyTransitioningKeys[s]&&this.keysToEnter.push(s)}for(s in r)if(r.hasOwnProperty(s)){let o=t&&t.hasOwnProperty(s);r[s]&&!o&&!this.currentlyTransitioningKeys[s]&&this.keysToLeave.push(s)}}componentDidUpdate(){let{keysToEnter:e}=this;this.keysToEnter=[],e.forEach(this.performEnter);let{keysToLeave:t}=this;this.keysToLeave=[],t.forEach(this.performLeave)}_finishAbort(e){let t=this.keysToAbortLeave.indexOf(e);t!==-1&&this.keysToAbortLeave.splice(t,1)}performAppear(e){this.currentlyTransitioningKeys[e]=!0;let t=this.refs[e];t!=null&&t.componentWillAppear?t.componentWillAppear(this._handleDoneAppearing.bind(this,e)):this._handleDoneAppearing(e)}_handleDoneAppearing(e){let t=this.refs[e];t!=null&&t.componentDidAppear&&t.componentDidAppear(),delete this.currentlyTransitioningKeys[e],this._finishAbort(e);let r=ia(ci(this.props.children)||[]);(!r||!r.hasOwnProperty(e))&&this.performLeave(e)}performEnter(e){this.currentlyTransitioningKeys[e]=!0;let t=this.refs[e];t!=null&&t.componentWillEnter?t.componentWillEnter(this._handleDoneEntering.bind(this,e)):this._handleDoneEntering(e)}_handleDoneEntering(e){let t=this.refs[e];t!=null&&t.componentDidEnter&&t.componentDidEnter(),delete this.currentlyTransitioningKeys[e],this._finishAbort(e);let r=ia(ci(this.props.children)||[]);(!r||!r.hasOwnProperty(e))&&this.performLeave(e)}performLeave(e){if(this.keysToAbortLeave.indexOf(e)!==-1)return;this.currentlyTransitioningKeys[e]=!0;let r=this.refs[e];r!=null&&r.componentWillLeave?r.componentWillLeave(this._handleDoneLeaving.bind(this,e)):this._handleDoneLeaving(e)}_handleDoneLeaving(e){if(this.keysToAbortLeave.indexOf(e)!==-1)return;let r=this.refs[e];r!=null&&r.componentDidLeave&&r.componentDidLeave(),delete this.currentlyTransitioningKeys[e];let s=ia(ci(this.props.children)||[]);if(s&&s.hasOwnProperty(e))this.performEnter(e);else{let o=A2({},this.state.children);delete o[e],this.setState({children:o})}}render(e,t){let{childFactory:r,transitionLeave:s,transitionName:o,transitionAppear:a,transitionEnter:l,transitionLeaveTimeout:h,transitionEnterTimeout:p,transitionAppearTimeout:d,component:f,...y}=e,{children:b}=t,S=Object.entries(b).map(E=>{let[x,F]=E;if(!F)return;let U=U2(this,x);return jl(r(F),{ref:U,key:x})}).filter(Boolean);return u(f,y,S)}};n(ra,\"TransitionGroup\");ra.defaultProps={component:\"span\",childFactory:D2};var Rg=ra;var I2={version:\"3.0.4\"},qi=class extends Z{constructor(e,t){super(e,t),this.render=s=>u(\"div\",{className:\"uppy uppy-Informer\"},u(Rg,null,s.info.map(o=>u(Io,{key:o.message},u(\"p\",{role:\"alert\"},o.message,\" \",o.details&&u(\"span\",{\"aria-label\":o.details,\"data-microtip-position\":\"top-left\",\"data-microtip-size\":\"medium\",role:\"tooltip\",onClick:()=>alert(`${o.message} \n\n ${o.details}`)},\"?\")))))),this.type=\"progressindicator\",this.id=this.opts.id||\"Informer\",this.title=\"Informer\";let r={};this.opts={...r,...t}}install(){let{target:e}=this.opts;e&&this.mount(e,this)}};n(qi,\"Informer\");qi.VERSION=I2.version;var N2=/^data:([^/]+\\/[^,;]+(?:[^,]*?))(;base64)?,([\\s\\S]*)$/;function cd(i,e,t){var r,s;let o=N2.exec(i),a=(r=(s=e.mimeType)!=null?s:o?.[1])!=null?r:\"plain/text\",l;if(o?.[2]!=null){let h=atob(decodeURIComponent(o[3])),p=new Uint8Array(h.length);for(let d=0;d<h.length;d++)p[d]=h.charCodeAt(d);l=[p]}else o?.[3]!=null&&(l=[decodeURIComponent(o[3])]);return t?new File(l,e.name||\"\",{type:a}):new Blob(l,{type:a})}n(cd,\"dataURItoBlob\");function gu(i){return i.startsWith(\"blob:\")}n(gu,\"isObjectURL\");function ge(i,e,t){return e in i?Object.defineProperty(i,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):i[e]=t,i}n(ge,\"e\");var zg=typeof self<\"u\"?self:global,la=typeof navigator<\"u\",M2=la&&typeof HTMLImageElement>\"u\",Ug=!(typeof global>\"u\"||typeof process>\"u\"||!process.versions||!process.versions.node),jg=zg.Buffer,Hg=!!jg,L2=n(i=>i!==void 0,\"h\");function $g(i){return i===void 0||(i instanceof Map?i.size===0:Object.values(i).filter(L2).length===0)}n($g,\"f\");function ut(i){let e=new Error(i);throw delete e.stack,e}n(ut,\"l\");function kg(i){let e=function(t){let r=0;return t.ifd0.enabled&&(r+=1024),t.exif.enabled&&(r+=2048),t.makerNote&&(r+=2048),t.userComment&&(r+=1024),t.gps.enabled&&(r+=512),t.interop.enabled&&(r+=100),t.ifd1.enabled&&(r+=1024),r+2048}(i);return i.jfif.enabled&&(e+=50),i.xmp.enabled&&(e+=2e4),i.iptc.enabled&&(e+=14e3),i.icc.enabled&&(e+=6e3),e}n(kg,\"o\");var pd=n(i=>String.fromCharCode.apply(null,i),\"u\"),Dg=typeof TextDecoder<\"u\"?new TextDecoder(\"utf-8\"):void 0,$t=class{static from(e,t){return e instanceof this&&e.le===t?e:new $t(e,void 0,void 0,t)}constructor(e,t=0,r,s){if(typeof s==\"boolean\"&&(this.le=s),Array.isArray(e)&&(e=new Uint8Array(e)),e===0)this.byteOffset=0,this.byteLength=0;else if(e instanceof ArrayBuffer){r===void 0&&(r=e.byteLength-t);let o=new DataView(e,t,r);this._swapDataView(o)}else if(e instanceof Uint8Array||e instanceof DataView||e instanceof $t){r===void 0&&(r=e.byteLength-t),(t+=e.byteOffset)+r>e.byteOffset+e.byteLength&&ut(\"Creating view outside of available memory in ArrayBuffer\");let o=new DataView(e.buffer,t,r);this._swapDataView(o)}else if(typeof e==\"number\"){let o=new DataView(new ArrayBuffer(e));this._swapDataView(o)}else ut(\"Invalid input argument for BufferView: \"+e)}_swapArrayBuffer(e){this._swapDataView(new DataView(e))}_swapBuffer(e){this._swapDataView(new DataView(e.buffer,e.byteOffset,e.byteLength))}_swapDataView(e){this.dataView=e,this.buffer=e.buffer,this.byteOffset=e.byteOffset,this.byteLength=e.byteLength}_lengthToEnd(e){return this.byteLength-e}set(e,t,r=$t){return e instanceof DataView||e instanceof $t?e=new Uint8Array(e.buffer,e.byteOffset,e.byteLength):e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Uint8Array||ut(\"BufferView.set(): Invalid data argument.\"),this.toUint8().set(e,t),new r(this,t,e.byteLength)}subarray(e,t){return t=t||this._lengthToEnd(e),new $t(this,e,t)}toUint8(){return new Uint8Array(this.buffer,this.byteOffset,this.byteLength)}getUint8Array(e,t){return new Uint8Array(this.buffer,this.byteOffset+e,t)}getString(e=0,t=this.byteLength){return s=this.getUint8Array(e,t),Dg?Dg.decode(s):Hg?Buffer.from(s).toString(\"utf8\"):decodeURIComponent(escape(pd(s)));var s}getLatin1String(e=0,t=this.byteLength){let r=this.getUint8Array(e,t);return pd(r)}getUnicodeString(e=0,t=this.byteLength){let r=[];for(let s=0;s<t&&e+s<this.byteLength;s+=2)r.push(this.getUint16(e+s));return pd(r)}getInt8(e){return this.dataView.getInt8(e)}getUint8(e){return this.dataView.getUint8(e)}getInt16(e,t=this.le){return this.dataView.getInt16(e,t)}getInt32(e,t=this.le){return this.dataView.getInt32(e,t)}getUint16(e,t=this.le){return this.dataView.getUint16(e,t)}getUint32(e,t=this.le){return this.dataView.getUint32(e,t)}getFloat32(e,t=this.le){return this.dataView.getFloat32(e,t)}getFloat64(e,t=this.le){return this.dataView.getFloat64(e,t)}getFloat(e,t=this.le){return this.dataView.getFloat32(e,t)}getDouble(e,t=this.le){return this.dataView.getFloat64(e,t)}getUintBytes(e,t,r){switch(t){case 1:return this.getUint8(e,r);case 2:return this.getUint16(e,r);case 4:return this.getUint32(e,r);case 8:return this.getUint64&&this.getUint64(e,r)}}getUint(e,t,r){switch(t){case 8:return this.getUint8(e,r);case 16:return this.getUint16(e,r);case 32:return this.getUint32(e,r);case 64:return this.getUint64&&this.getUint64(e,r)}}toString(e){return this.dataView.toString(e,this.constructor.name)}ensureChunk(){}};n($t,\"c\");function md(i,e){ut(`${i} '${e}' was not loaded, try using full build of exifr.`)}n(md,\"p\");var zo=class extends Map{constructor(e){super(),this.kind=e}get(e,t){return this.has(e)||md(this.kind,e),t&&(e in t||function(r,s){ut(`Unknown ${r} '${s}'.`)}(this.kind,e),t[e].enabled||md(this.kind,e)),super.get(e)}keyList(){return Array.from(this.keys())}};n(zo,\"g\");var xu=new zo(\"file parser\"),ei=new zo(\"segment parser\"),da=new zo(\"file reader\"),B2=zg.fetch;function Ig(i,e){return(t=i).startsWith(\"data:\")||t.length>1e4?yd(i,e,\"base64\"):Ug&&i.includes(\"://\")?gd(i,e,\"url\",Pu):Ug?yd(i,e,\"fs\"):la?gd(i,e,\"url\",Pu):void ut(\"Invalid input argument\");var t}n(Ig,\"k\");async function gd(i,e,t,r){return da.has(t)?yd(i,e,t):r?async function(s,o){let a=await o(s);return new $t(a)}(i,r):void ut(`Parser ${t} is not loaded`)}n(gd,\"O\");async function yd(i,e,t){let r=new(da.get(t))(i,e);return await r.read(),r}n(yd,\"v\");var Pu=n(i=>B2(i).then(e=>e.arrayBuffer()),\"S\"),ua=n(i=>new Promise((e,t)=>{let r=new FileReader;r.onloadend=()=>e(r.result||new ArrayBuffer),r.onerror=t,r.readAsArrayBuffer(i)}),\"A\"),yu=class extends Map{get tagKeys(){return this.allKeys||(this.allKeys=Array.from(this.keys())),this.allKeys}get tagValues(){return this.allValues||(this.allValues=Array.from(this.values())),this.allValues}};n(yu,\"U\");function qg(i,e,t){let r=new yu;for(let[s,o]of t)r.set(s,o);if(Array.isArray(e))for(let s of e)i.set(s,r);else i.set(e,r);return r}n(qg,\"x\");function Vg(i,e,t){let r,s=i.get(e);for(r of t)s.set(r[0],r[1])}n(Vg,\"C\");var ca=new Map,vd=new Map,bd=new Map,No=[\"chunked\",\"firstChunkSize\",\"firstChunkSizeNode\",\"firstChunkSizeBrowser\",\"chunkSize\",\"chunkLimit\"],Fu=[\"jfif\",\"xmp\",\"icc\",\"iptc\",\"ihdr\"],ha=[\"tiff\",...Fu],Ye=[\"ifd0\",\"ifd1\",\"exif\",\"gps\",\"interop\"],Mo=[...ha,...Ye],Lo=[\"makerNote\",\"userComment\"],Eu=[\"translateKeys\",\"translateValues\",\"reviveValues\",\"multiSegment\"],Bo=[...Eu,\"sanitize\",\"mergeOutput\",\"silentErrors\"],na=class{get translate(){return this.translateKeys||this.translateValues||this.reviveValues}};n(na,\"_\");var es=class extends na{get needed(){return this.enabled||this.deps.size>0}constructor(e,t,r,s){if(super(),ge(this,\"enabled\",!1),ge(this,\"skip\",new Set),ge(this,\"pick\",new Set),ge(this,\"deps\",new Set),ge(this,\"translateKeys\",!1),ge(this,\"translateValues\",!1),ge(this,\"reviveValues\",!1),this.key=e,this.enabled=t,this.parse=this.enabled,this.applyInheritables(s),this.canBeFiltered=Ye.includes(e),this.canBeFiltered&&(this.dict=ca.get(e)),r!==void 0)if(Array.isArray(r))this.parse=this.enabled=!0,this.canBeFiltered&&r.length>0&&this.translateTagSet(r,this.pick);else if(typeof r==\"object\"){if(this.enabled=!0,this.parse=r.parse!==!1,this.canBeFiltered){let{pick:o,skip:a}=r;o&&o.length>0&&this.translateTagSet(o,this.pick),a&&a.length>0&&this.translateTagSet(a,this.skip)}this.applyInheritables(r)}else r===!0||r===!1?this.parse=this.enabled=r:ut(`Invalid options argument: ${r}`)}applyInheritables(e){let t,r;for(t of Eu)r=e[t],r!==void 0&&(this[t]=r)}translateTagSet(e,t){if(this.dict){let r,s,{tagKeys:o,tagValues:a}=this.dict;for(r of e)typeof r==\"string\"?(s=a.indexOf(r),s===-1&&(s=o.indexOf(Number(r))),s!==-1&&t.add(Number(o[s]))):t.add(r)}else for(let r of e)t.add(r)}finalizeFilters(){!this.enabled&&this.deps.size>0?(this.enabled=!0,_u(this.pick,this.deps)):this.enabled&&this.pick.size>0&&_u(this.pick,this.deps)}};n(es,\"D\");var kt={jfif:!1,tiff:!0,xmp:!1,icc:!1,iptc:!1,ifd0:!0,ifd1:!1,exif:!0,gps:!0,interop:!1,ihdr:void 0,makerNote:!1,userComment:!1,multiSegment:!1,skip:[],pick:[],translateKeys:!0,translateValues:!0,reviveValues:!0,sanitize:!0,mergeOutput:!0,silentErrors:!0,chunked:!0,firstChunkSize:void 0,firstChunkSizeNode:512,firstChunkSizeBrowser:65536,chunkSize:65536,chunkLimit:5},Ng=new Map,ts=class extends na{static useCached(e){let t=Ng.get(e);return t!==void 0||(t=new this(e),Ng.set(e,t)),t}constructor(e){super(),e===!0?this.setupFromTrue():e===void 0?this.setupFromUndefined():Array.isArray(e)?this.setupFromArray(e):typeof e==\"object\"?this.setupFromObject(e):ut(`Invalid options argument ${e}`),this.firstChunkSize===void 0&&(this.firstChunkSize=la?this.firstChunkSizeBrowser:this.firstChunkSizeNode),this.mergeOutput&&(this.ifd1.enabled=!1),this.filterNestedSegmentTags(),this.traverseTiffDependencyTree(),this.checkLoadedPlugins()}setupFromUndefined(){let e;for(e of No)this[e]=kt[e];for(e of Bo)this[e]=kt[e];for(e of Lo)this[e]=kt[e];for(e of Mo)this[e]=new es(e,kt[e],void 0,this)}setupFromTrue(){let e;for(e of No)this[e]=kt[e];for(e of Bo)this[e]=kt[e];for(e of Lo)this[e]=!0;for(e of Mo)this[e]=new es(e,!0,void 0,this)}setupFromArray(e){let t;for(t of No)this[t]=kt[t];for(t of Bo)this[t]=kt[t];for(t of Lo)this[t]=kt[t];for(t of Mo)this[t]=new es(t,!1,void 0,this);this.setupGlobalFilters(e,void 0,Ye)}setupFromObject(e){let t;for(t of(Ye.ifd0=Ye.ifd0||Ye.image,Ye.ifd1=Ye.ifd1||Ye.thumbnail,Object.assign(this,e),No))this[t]=fd(e[t],kt[t]);for(t of Bo)this[t]=fd(e[t],kt[t]);for(t of Lo)this[t]=fd(e[t],kt[t]);for(t of ha)this[t]=new es(t,kt[t],e[t],this);for(t of Ye)this[t]=new es(t,kt[t],e[t],this.tiff);this.setupGlobalFilters(e.pick,e.skip,Ye,Mo),e.tiff===!0?this.batchEnableWithBool(Ye,!0):e.tiff===!1?this.batchEnableWithUserValue(Ye,e):Array.isArray(e.tiff)?this.setupGlobalFilters(e.tiff,void 0,Ye):typeof e.tiff==\"object\"&&this.setupGlobalFilters(e.tiff.pick,e.tiff.skip,Ye)}batchEnableWithBool(e,t){for(let r of e)this[r].enabled=t}batchEnableWithUserValue(e,t){for(let r of e){let s=t[r];this[r].enabled=s!==!1&&s!==void 0}}setupGlobalFilters(e,t,r,s=r){if(e&&e.length){for(let a of s)this[a].enabled=!1;let o=Mg(e,r);for(let[a,l]of o)_u(this[a].pick,l),this[a].enabled=!0}else if(t&&t.length){let o=Mg(t,r);for(let[a,l]of o)_u(this[a].skip,l)}}filterNestedSegmentTags(){let{ifd0:e,exif:t,xmp:r,iptc:s,icc:o}=this;this.makerNote?t.deps.add(37500):t.skip.add(37500),this.userComment?t.deps.add(37510):t.skip.add(37510),r.enabled||e.skip.add(700),s.enabled||e.skip.add(33723),o.enabled||e.skip.add(34675)}traverseTiffDependencyTree(){let{ifd0:e,exif:t,gps:r,interop:s}=this;s.needed&&(t.deps.add(40965),e.deps.add(40965)),t.needed&&e.deps.add(34665),r.needed&&e.deps.add(34853),this.tiff.enabled=Ye.some(o=>this[o].enabled===!0)||this.makerNote||this.userComment;for(let o of Ye)this[o].finalizeFilters()}get onlyTiff(){return!Fu.map(e=>this[e].enabled).some(e=>e===!0)&&this.tiff.enabled}checkLoadedPlugins(){for(let e of ha)this[e].enabled&&!ei.has(e)&&md(\"segment parser\",e)}};n(ts,\"R\");function Mg(i,e){let t,r,s,o,a=[];for(s of e){for(o of(t=ca.get(s),r=[],t))(i.includes(o[0])||i.includes(o[1]))&&r.push(o[0]);r.length&&a.push([s,r])}return a}n(Mg,\"K\");function fd(i,e){return i!==void 0?i:e!==void 0?e:void 0}n(fd,\"W\");function _u(i,e){for(let t of e)i.add(t)}n(_u,\"X\");ge(ts,\"default\",kt);var Ts=class{constructor(e){ge(this,\"parsers\",{}),ge(this,\"output\",{}),ge(this,\"errors\",[]),ge(this,\"pushToErrors\",t=>this.errors.push(t)),this.options=ts.useCached(e)}async read(e){this.file=await function(t,r){return typeof t==\"string\"?Ig(t,r):la&&!M2&&t instanceof HTMLImageElement?Ig(t.src,r):t instanceof Uint8Array||t instanceof ArrayBuffer||t instanceof DataView?new $t(t):la&&t instanceof Blob?gd(t,r,\"blob\",ua):void ut(\"Invalid input argument\")}(e,this.options)}setup(){if(this.fileParser)return;let{file:e}=this,t=e.getUint16(0);for(let[r,s]of xu)if(s.canHandle(e,t))return this.fileParser=new s(this.options,this.file,this.parsers),e[r]=!0;this.file.close&&this.file.close(),ut(\"Unknown file format\")}async parse(){let{output:e,errors:t}=this;return this.setup(),this.options.silentErrors?(await this.executeParsers().catch(this.pushToErrors),t.push(...this.fileParser.errors)):await this.executeParsers(),this.file.close&&this.file.close(),this.options.silentErrors&&t.length>0&&(e.errors=t),$g(r=e)?void 0:r;var r}async executeParsers(){let{output:e}=this;await this.fileParser.parse();let t=Object.values(this.parsers).map(async r=>{let s=await r.parse();r.assignToOutput(e,s)});this.options.silentErrors&&(t=t.map(r=>r.catch(this.pushToErrors))),await Promise.all(t)}async extractThumbnail(){this.setup();let{options:e,file:t}=this,r=ei.get(\"tiff\",e);var s;if(t.tiff?s={start:0,type:\"tiff\"}:t.jpeg&&(s=await this.fileParser.getOrFindSegment(\"tiff\")),s===void 0)return;let o=await this.fileParser.ensureSegmentChunk(s),a=this.parsers.tiff=new r(o,e,t),l=await a.extractThumbnail();return t.close&&t.close(),l}};n(Ts,\"H\");async function Wg(i,e){let t=new Ts(e);return await t.read(i),t.parse()}n(Wg,\"Y\");var z2=Object.freeze({__proto__:null,parse:Wg,Exifr:Ts,fileParsers:xu,segmentParsers:ei,fileReaders:da,tagKeys:ca,tagValues:vd,tagRevivers:bd,createDictionary:qg,extendDictionary:Vg,fetchUrlAsArrayBuffer:Pu,readBlobAsArrayBuffer:ua,chunkedProps:No,otherSegments:Fu,segments:ha,tiffBlocks:Ye,segmentsAndBlocks:Mo,tiffExtractables:Lo,inheritables:Eu,allFormatters:Bo,Options:ts}),Or=class{static findPosition(e,t){let r=e.getUint16(t+2)+2,s=typeof this.headerLength==\"function\"?this.headerLength(e,t,r):this.headerLength,o=t+s,a=r-s;return{offset:t,length:r,headerLength:s,start:o,size:a,end:o+a}}static parse(e,t={}){return new this(e,new ts({[this.type]:t}),e).parse()}normalizeInput(e){return e instanceof $t?e:new $t(e)}constructor(e,t={},r){ge(this,\"errors\",[]),ge(this,\"raw\",new Map),ge(this,\"handleError\",s=>{if(!this.options.silentErrors)throw s;this.errors.push(s.message)}),this.chunk=this.normalizeInput(e),this.file=r,this.type=this.constructor.type,this.globalOptions=this.options=t,this.localOptions=t[this.type],this.canTranslate=this.localOptions&&this.localOptions.translate}translate(){this.canTranslate&&(this.translated=this.translateBlock(this.raw,this.type))}get output(){return this.translated?this.translated:this.raw?Object.fromEntries(this.raw):void 0}translateBlock(e,t){let r=bd.get(t),s=vd.get(t),o=ca.get(t),a=this.options[t],l=a.reviveValues&&!!r,h=a.translateValues&&!!s,p=a.translateKeys&&!!o,d={};for(let[f,y]of e)l&&r.has(f)?y=r.get(f)(y):h&&s.has(f)&&(y=this.translateValue(y,s.get(f))),p&&o.has(f)&&(f=o.get(f)||f),d[f]=y;return d}translateValue(e,t){return t[e]||t.DEFAULT||e}assignToOutput(e,t){this.assignObjectToOutput(e,this.constructor.type,t)}assignObjectToOutput(e,t,r){if(this.globalOptions.mergeOutput)return Object.assign(e,r);e[t]?Object.assign(e[t],r):e[t]=r}};n(Or,\"J\");ge(Or,\"headerLength\",4),ge(Or,\"type\",void 0),ge(Or,\"multiSegment\",!1),ge(Or,\"canHandle\",()=>!1);function j2(i){return i===192||i===194||i===196||i===219||i===221||i===218||i===254}n(j2,\"q\");function H2(i){return i>=224&&i<=239}n(H2,\"Q\");function $2(i,e,t){for(let[r,s]of ei)if(s.canHandle(i,e,t))return r}n($2,\"Z\");var aa=class extends class{constructor(e,t,r){ge(this,\"errors\",[]),ge(this,\"ensureSegmentChunk\",async s=>{let o=s.start,a=s.size||65536;if(this.file.chunked)if(this.file.available(o,a))s.chunk=this.file.subarray(o,a);else try{s.chunk=await this.file.readChunk(o,a)}catch(l){ut(`Couldn't read segment: ${JSON.stringify(s)}. ${l.message}`)}else this.file.byteLength>o+a?s.chunk=this.file.subarray(o,a):s.size===void 0?s.chunk=this.file.subarray(o):ut(\"Segment unreachable: \"+JSON.stringify(s));return s.chunk}),this.extendOptions&&this.extendOptions(e),this.options=e,this.file=t,this.parsers=r}injectSegment(e,t){this.options[e].enabled&&this.createParser(e,t)}createParser(e,t){let r=new(ei.get(e))(t,this.options,this.file);return this.parsers[e]=r}createParsers(e){for(let t of e){let{type:r,chunk:s}=t,o=this.options[r];if(o&&o.enabled){let a=this.parsers[r];a&&a.append||a||this.createParser(r,s)}}}async readSegments(e){let t=e.map(this.ensureSegmentChunk);await Promise.all(t)}}{constructor(...e){super(...e),ge(this,\"appSegments\",[]),ge(this,\"jpegSegments\",[]),ge(this,\"unknownSegments\",[])}static canHandle(e,t){return t===65496}async parse(){await this.findAppSegments(),await this.readSegments(this.appSegments),this.mergeMultiSegments(),this.createParsers(this.mergedAppSegments||this.appSegments)}setupSegmentFinderArgs(e){e===!0?(this.findAll=!0,this.wanted=new Set(ei.keyList())):(e=e===void 0?ei.keyList().filter(t=>this.options[t].enabled):e.filter(t=>this.options[t].enabled&&ei.has(t)),this.findAll=!1,this.remaining=new Set(e),this.wanted=new Set(e)),this.unfinishedMultiSegment=!1}async findAppSegments(e=0,t){this.setupSegmentFinderArgs(t);let{file:r,findAll:s,wanted:o,remaining:a}=this;if(!s&&this.file.chunked&&(s=Array.from(o).some(l=>{let h=ei.get(l),p=this.options[l];return h.multiSegment&&p.multiSegment}),s&&await this.file.readWhole()),e=this.findAppSegmentsInRange(e,r.byteLength),!this.options.onlyTiff&&r.chunked){let l=!1;for(;a.size>0&&!l&&(r.canReadNextChunk||this.unfinishedMultiSegment);){let{nextChunkOffset:h}=r,p=this.appSegments.some(d=>!this.file.available(d.offset||d.start,d.length||d.size));if(l=e>h&&!p?!await r.readNextChunk(e):!await r.readNextChunk(h),(e=this.findAppSegmentsInRange(e,r.byteLength))===void 0)return}}}findAppSegmentsInRange(e,t){t-=2;let r,s,o,a,l,h,{file:p,findAll:d,wanted:f,remaining:y,options:b}=this;for(;e<t;e++)if(p.getUint8(e)===255){if(r=p.getUint8(e+1),H2(r)){if(s=p.getUint16(e+2),o=$2(p,e,s),o&&f.has(o)&&(a=ei.get(o),l=a.findPosition(p,e),h=b[o],l.type=o,this.appSegments.push(l),!d&&(a.multiSegment&&h.multiSegment?(this.unfinishedMultiSegment=l.chunkNumber<l.chunkCount,this.unfinishedMultiSegment||y.delete(o)):y.delete(o),y.size===0)))break;b.recordUnknownSegments&&(l=Or.findPosition(p,e),l.marker=r,this.unknownSegments.push(l)),e+=s+1}else if(j2(r)){if(s=p.getUint16(e+2),r===218&&b.stopAfterSos!==!1)return;b.recordJpegSegments&&this.jpegSegments.push({offset:e,length:s,marker:r}),e+=s+1}}return e}mergeMultiSegments(){if(!this.appSegments.some(t=>t.multiSegment))return;let e=function(t,r){let s,o,a,l=new Map;for(let h=0;h<t.length;h++)s=t[h],o=s[r],l.has(o)?a=l.get(o):l.set(o,a=[]),a.push(s);return Array.from(l)}(this.appSegments,\"type\");this.mergedAppSegments=e.map(([t,r])=>{let s=ei.get(t,this.options);return s.handleMultiSegments?{type:t,chunk:s.handleMultiSegments(r)}:r[0]})}getSegment(e){return this.appSegments.find(t=>t.type===e)}async getOrFindSegment(e){let t=this.getSegment(e);return t===void 0&&(await this.findAppSegments(0,[e]),t=this.getSegment(e)),t}};n(aa,\"ee\");ge(aa,\"type\",\"jpeg\"),xu.set(\"jpeg\",aa);var q2=[void 0,1,1,2,4,8,1,1,2,4,8,4,8,4],vu=class extends Or{parseHeader(){var e=this.chunk.getUint16();e===18761?this.le=!0:e===19789&&(this.le=!1),this.chunk.le=this.le,this.headerParsed=!0}parseTags(e,t,r=new Map){let{pick:s,skip:o}=this.options[t];s=new Set(s);let a=s.size>0,l=o.size===0,h=this.chunk.getUint16(e);e+=2;for(let p=0;p<h;p++){let d=this.chunk.getUint16(e);if(a){if(s.has(d)&&(r.set(d,this.parseTag(e,d,t)),s.delete(d),s.size===0))break}else!l&&o.has(d)||r.set(d,this.parseTag(e,d,t));e+=12}return r}parseTag(e,t,r){let{chunk:s}=this,o=s.getUint16(e+2),a=s.getUint32(e+4),l=q2[o];if(l*a<=4?e+=8:e=s.getUint32(e+8),(o<1||o>13)&&ut(`Invalid TIFF value type. block: ${r.toUpperCase()}, tag: ${t.toString(16)}, type: ${o}, offset ${e}`),e>s.byteLength&&ut(`Invalid TIFF value offset. block: ${r.toUpperCase()}, tag: ${t.toString(16)}, type: ${o}, offset ${e} is outside of chunk size ${s.byteLength}`),o===1)return s.getUint8Array(e,a);if(o===2)return(h=function(p){for(;p.endsWith(\"\\0\");)p=p.slice(0,-1);return p}(h=s.getString(e,a)).trim())===\"\"?void 0:h;var h;if(o===7)return s.getUint8Array(e,a);if(a===1)return this.parseTagValue(o,e);{let p=new(function(f){switch(f){case 1:return Uint8Array;case 3:return Uint16Array;case 4:return Uint32Array;case 5:return Array;case 6:return Int8Array;case 8:return Int16Array;case 9:return Int32Array;case 10:return Array;case 11:return Float32Array;case 12:return Float64Array;default:return Array}}(o))(a),d=l;for(let f=0;f<a;f++)p[f]=this.parseTagValue(o,e),e+=d;return p}}parseTagValue(e,t){let{chunk:r}=this;switch(e){case 1:return r.getUint8(t);case 3:return r.getUint16(t);case 4:return r.getUint32(t);case 5:return r.getUint32(t)/r.getUint32(t+4);case 6:return r.getInt8(t);case 8:return r.getInt16(t);case 9:return r.getInt32(t);case 10:return r.getInt32(t)/r.getInt32(t+4);case 11:return r.getFloat(t);case 12:return r.getDouble(t);case 13:return r.getUint32(t);default:ut(`Invalid tiff type ${e}`)}}};n(vu,\"se\");var jo=class extends vu{static canHandle(e,t){return e.getUint8(t+1)===225&&e.getUint32(t+4)===1165519206&&e.getUint16(t+8)===0}async parse(){this.parseHeader();let{options:e}=this;return e.ifd0.enabled&&await this.parseIfd0Block(),e.exif.enabled&&await this.safeParse(\"parseExifBlock\"),e.gps.enabled&&await this.safeParse(\"parseGpsBlock\"),e.interop.enabled&&await this.safeParse(\"parseInteropBlock\"),e.ifd1.enabled&&await this.safeParse(\"parseThumbnailBlock\"),this.createOutput()}safeParse(e){let t=this[e]();return t.catch!==void 0&&(t=t.catch(this.handleError)),t}findIfd0Offset(){this.ifd0Offset===void 0&&(this.ifd0Offset=this.chunk.getUint32(4))}findIfd1Offset(){if(this.ifd1Offset===void 0){this.findIfd0Offset();let e=this.chunk.getUint16(this.ifd0Offset),t=this.ifd0Offset+2+12*e;this.ifd1Offset=this.chunk.getUint32(t)}}parseBlock(e,t){let r=new Map;return this[t]=r,this.parseTags(e,t,r),r}async parseIfd0Block(){if(this.ifd0)return;let{file:e}=this;this.findIfd0Offset(),this.ifd0Offset<8&&ut(\"Malformed EXIF data\"),!e.chunked&&this.ifd0Offset>e.byteLength&&ut(`IFD0 offset points to outside of file.\nthis.ifd0Offset: ${this.ifd0Offset}, file.byteLength: ${e.byteLength}`),e.tiff&&await e.ensureChunk(this.ifd0Offset,kg(this.options));let t=this.parseBlock(this.ifd0Offset,\"ifd0\");return t.size!==0?(this.exifOffset=t.get(34665),this.interopOffset=t.get(40965),this.gpsOffset=t.get(34853),this.xmp=t.get(700),this.iptc=t.get(33723),this.icc=t.get(34675),this.options.sanitize&&(t.delete(34665),t.delete(40965),t.delete(34853),t.delete(700),t.delete(33723),t.delete(34675)),t):void 0}async parseExifBlock(){if(this.exif||(this.ifd0||await this.parseIfd0Block(),this.exifOffset===void 0))return;this.file.tiff&&await this.file.ensureChunk(this.exifOffset,kg(this.options));let e=this.parseBlock(this.exifOffset,\"exif\");return this.interopOffset||(this.interopOffset=e.get(40965)),this.makerNote=e.get(37500),this.userComment=e.get(37510),this.options.sanitize&&(e.delete(40965),e.delete(37500),e.delete(37510)),this.unpack(e,41728),this.unpack(e,41729),e}unpack(e,t){let r=e.get(t);r&&r.length===1&&e.set(t,r[0])}async parseGpsBlock(){if(this.gps||(this.ifd0||await this.parseIfd0Block(),this.gpsOffset===void 0))return;let e=this.parseBlock(this.gpsOffset,\"gps\");return e&&e.has(2)&&e.has(4)&&(e.set(\"latitude\",Lg(...e.get(2),e.get(1))),e.set(\"longitude\",Lg(...e.get(4),e.get(3)))),e}async parseInteropBlock(){if(!this.interop&&(this.ifd0||await this.parseIfd0Block(),this.interopOffset!==void 0||this.exif||await this.parseExifBlock(),this.interopOffset!==void 0))return this.parseBlock(this.interopOffset,\"interop\")}async parseThumbnailBlock(e=!1){if(!this.ifd1&&!this.ifd1Parsed&&(!this.options.mergeOutput||e))return this.findIfd1Offset(),this.ifd1Offset>0&&(this.parseBlock(this.ifd1Offset,\"ifd1\"),this.ifd1Parsed=!0),this.ifd1}async extractThumbnail(){if(this.headerParsed||this.parseHeader(),this.ifd1Parsed||await this.parseThumbnailBlock(!0),this.ifd1===void 0)return;let e=this.ifd1.get(513),t=this.ifd1.get(514);return this.chunk.getUint8Array(e,t)}get image(){return this.ifd0}get thumbnail(){return this.ifd1}createOutput(){let e,t,r,s={};for(t of Ye)if(e=this[t],!$g(e))if(r=this.canTranslate?this.translateBlock(e,t):Object.fromEntries(e),this.options.mergeOutput){if(t===\"ifd1\")continue;Object.assign(s,r)}else s[t]=r;return this.makerNote&&(s.makerNote=this.makerNote),this.userComment&&(s.userComment=this.userComment),s}assignToOutput(e,t){if(this.globalOptions.mergeOutput)Object.assign(e,t);else for(let[r,s]of Object.entries(t))this.assignObjectToOutput(e,r,s)}};n(jo,\"ie\");function Lg(i,e,t,r){var s=i+e/60+t/3600;return r!==\"S\"&&r!==\"W\"||(s*=-1),s}n(Lg,\"ne\");ge(jo,\"type\",\"tiff\"),ge(jo,\"headerLength\",10),ei.set(\"tiff\",jo);var R4=Object.freeze({__proto__:null,default:z2,Exifr:Ts,fileParsers:xu,segmentParsers:ei,fileReaders:da,tagKeys:ca,tagValues:vd,tagRevivers:bd,createDictionary:qg,extendDictionary:Vg,fetchUrlAsArrayBuffer:Pu,readBlobAsArrayBuffer:ua,chunkedProps:No,otherSegments:Fu,segments:ha,tiffBlocks:Ye,segmentsAndBlocks:Mo,tiffExtractables:Lo,inheritables:Eu,allFormatters:Bo,Options:ts,parse:Wg}),wd={ifd0:!1,ifd1:!1,exif:!1,gps:!1,interop:!1,sanitize:!1,reviveValues:!0,translateKeys:!1,translateValues:!1,mergeOutput:!1},U4=Object.assign({},wd,{firstChunkSize:4e4,gps:[1,2,3,4]});var k4=Object.assign({},wd,{tiff:!1,ifd1:!0,mergeOutput:!1});var V2=Object.assign({},wd,{firstChunkSize:4e4,ifd0:[274]});async function W2(i){let e=new Ts(V2);await e.read(i);let t=await e.parse();if(t&&t.ifd0)return t.ifd0[274]}n(W2,\"ce\");var G2=Object.freeze({1:{dimensionSwapped:!1,scaleX:1,scaleY:1,deg:0,rad:0},2:{dimensionSwapped:!1,scaleX:-1,scaleY:1,deg:0,rad:0},3:{dimensionSwapped:!1,scaleX:1,scaleY:1,deg:180,rad:180*Math.PI/180},4:{dimensionSwapped:!1,scaleX:-1,scaleY:1,deg:180,rad:180*Math.PI/180},5:{dimensionSwapped:!0,scaleX:1,scaleY:-1,deg:90,rad:90*Math.PI/180},6:{dimensionSwapped:!0,scaleX:1,scaleY:1,deg:90,rad:90*Math.PI/180},7:{dimensionSwapped:!0,scaleX:1,scaleY:-1,deg:270,rad:270*Math.PI/180},8:{dimensionSwapped:!0,scaleX:1,scaleY:1,deg:270,rad:270*Math.PI/180}}),sa=!0,oa=!0;if(typeof navigator==\"object\"){let i=navigator.userAgent;if(i.includes(\"iPad\")||i.includes(\"iPhone\")){let e=i.match(/OS (\\d+)_(\\d+)/);if(e){let[,t,r]=e;sa=Number(t)+.1*Number(r)<13.4,oa=!1}}else if(i.includes(\"OS X 10\")){let[,e]=i.match(/OS X 10[_.](\\d+)/);sa=oa=Number(e)<15}if(i.includes(\"Chrome/\")){let[,e]=i.match(/Chrome\\/(\\d+)/);sa=oa=Number(e)<81}else if(i.includes(\"Firefox/\")){let[,e]=i.match(/Firefox\\/(\\d+)/);sa=oa=Number(e)<77}}async function Gg(i){let e=await W2(i);return Object.assign({canvas:sa,css:oa},G2[e])}n(Gg,\"ye\");var bu=class extends $t{constructor(...e){super(...e),ge(this,\"ranges\",new wu),this.byteLength!==0&&this.ranges.add(0,this.byteLength)}_tryExtend(e,t,r){if(e===0&&this.byteLength===0&&r){let s=new DataView(r.buffer||r,r.byteOffset,r.byteLength);this._swapDataView(s)}else{let s=e+t;if(s>this.byteLength){let{dataView:o}=this._extend(s);this._swapDataView(o)}}}_extend(e){let t;t=Hg?jg.allocUnsafe(e):new Uint8Array(e);let r=new DataView(t.buffer,t.byteOffset,t.byteLength);return t.set(new Uint8Array(this.buffer,this.byteOffset,this.byteLength),0),{uintView:t,dataView:r}}subarray(e,t,r=!1){return t=t||this._lengthToEnd(e),r&&this._tryExtend(e,t),this.ranges.add(e,t),super.subarray(e,t)}set(e,t,r=!1){r&&this._tryExtend(t,e.byteLength,e);let s=super.set(e,t);return this.ranges.add(t,s.byteLength),s}async ensureChunk(e,t){this.chunked&&(this.ranges.available(e,t)||await this.readChunk(e,t))}available(e,t){return this.ranges.available(e,t)}};n(bu,\"be\");var wu=class{constructor(){ge(this,\"list\",[])}get length(){return this.list.length}add(e,t,r=0){let s=e+t,o=this.list.filter(a=>Bg(e,a.offset,s)||Bg(e,a.end,s));if(o.length>0){e=Math.min(e,...o.map(l=>l.offset)),s=Math.max(s,...o.map(l=>l.end)),t=s-e;let a=o.shift();a.offset=e,a.length=t,a.end=s,this.list=this.list.filter(l=>!o.includes(l))}else this.list.push({offset:e,length:t,end:s})}available(e,t){let r=e+t;return this.list.some(s=>s.offset<=e&&r<=s.end)}};n(wu,\"we\");function Bg(i,e,t){return i<=e&&e<=t}n(Bg,\"ke\");var Su=class extends bu{constructor(e,t){super(0),ge(this,\"chunksRead\",0),this.input=e,this.options=t}async readWhole(){this.chunked=!1,await this.readChunk(this.nextChunkOffset)}async readChunked(){this.chunked=!0,await this.readChunk(0,this.options.firstChunkSize)}async readNextChunk(e=this.nextChunkOffset){if(this.fullyRead)return this.chunksRead++,!1;let t=this.options.chunkSize,r=await this.readChunk(e,t);return!!r&&r.byteLength===t}async readChunk(e,t){if(this.chunksRead++,(t=this.safeWrapAddress(e,t))!==0)return this._readChunk(e,t)}safeWrapAddress(e,t){return this.size!==void 0&&e+t>this.size?Math.max(0,this.size-e):t}get nextChunkOffset(){if(this.ranges.list.length!==0)return this.ranges.list[0].length}get canReadNextChunk(){return this.chunksRead<this.options.chunkLimit}get fullyRead(){return this.size!==void 0&&this.nextChunkOffset===this.size}read(){return this.options.chunked?this.readChunked():this.readWhole()}close(){}};n(Su,\"Oe\");da.set(\"blob\",class extends Su{async readWhole(){this.chunked=!1;let i=await ua(this.input);this._swapArrayBuffer(i)}readChunked(){return this.chunked=!0,this.size=this.input.size,super.readChunked()}async _readChunk(i,e){let t=e?i+e:void 0,r=this.input.slice(i,t),s=await ua(r);return this.set(s,i,!0)}});var Kg={strings:{generatingThumbnails:\"Generating thumbnails...\"}};var K2={version:\"3.0.6\"};function X2(i,e,t){try{i.getContext(\"2d\").getImageData(0,0,1,1)}catch(r){if(r.code===18)return Promise.reject(new Error(\"cannot read image, probably an svg with external resources\"))}return i.toBlob?new Promise(r=>{i.toBlob(r,e,t)}).then(r=>{if(r===null)throw new Error(\"cannot read image, probably an svg with external resources\");return r}):Promise.resolve().then(()=>cd(i.toDataURL(e,t),{})).then(r=>{if(r===null)throw new Error(\"could not extract blob, probably an old browser\");return r})}n(X2,\"canvasToBlob\");function Y2(i,e){let t=i.width,r=i.height;(e.deg===90||e.deg===270)&&(t=i.height,r=i.width);let s=document.createElement(\"canvas\");s.width=t,s.height=r;let o=s.getContext(\"2d\");return o.translate(t/2,r/2),e.canvas&&(o.rotate(e.rad),o.scale(e.scaleX,e.scaleY)),o.drawImage(i,-i.width/2,-i.height/2,i.width,i.height),s}n(Y2,\"rotateImage\");function Q2(i){let e=i.width/i.height,t=5e6,r=4096,s=Math.floor(Math.sqrt(t*e)),o=Math.floor(t/Math.sqrt(t*e));if(s>r&&(s=r,o=Math.round(s/e)),o>r&&(o=r,s=Math.round(e*o)),i.width>s){let a=document.createElement(\"canvas\");return a.width=s,a.height=o,a.getContext(\"2d\").drawImage(i,0,0,s,o),a}return i}n(Q2,\"protect\");var Cr=class extends Z{constructor(e,t){super(e,t),this.onFileAdded=s=>{!s.preview&&s.data&&Uo(s.type)&&!s.isRemote&&this.addToQueue(s.id)},this.onCancelRequest=s=>{let o=this.queue.indexOf(s.id);o!==-1&&this.queue.splice(o,1)},this.onFileRemoved=s=>{let o=this.queue.indexOf(s.id);o!==-1&&this.queue.splice(o,1),s.preview&&gu(s.preview)&&URL.revokeObjectURL(s.preview)},this.onRestored=()=>{this.uppy.getFiles().filter(o=>o.isRestored).forEach(o=>{(!o.preview||gu(o.preview))&&this.addToQueue(o.id)})},this.onAllFilesRemoved=()=>{this.queue=[]},this.waitUntilAllProcessed=s=>{s.forEach(a=>{let l=this.uppy.getFile(a);this.uppy.emit(\"preprocess-progress\",l,{mode:\"indeterminate\",message:this.i18n(\"generatingThumbnails\")})});let o=n(()=>{s.forEach(a=>{let l=this.uppy.getFile(a);this.uppy.emit(\"preprocess-complete\",l)})},\"emitPreprocessCompleteForAll\");return new Promise(a=>{this.queueProcessing?this.uppy.once(\"thumbnail:all-generated\",()=>{o(),a()}):(o(),a())})},this.type=\"modifier\",this.id=this.opts.id||\"ThumbnailGenerator\",this.title=\"Thumbnail Generator\",this.queue=[],this.queueProcessing=!1,this.defaultThumbnailDimension=200,this.thumbnailType=this.opts.thumbnailType||\"image/jpeg\",this.defaultLocale=Kg;let r={thumbnailWidth:null,thumbnailHeight:null,waitForThumbnailsBeforeUpload:!1,lazy:!1};if(this.opts={...r,...t},this.i18nInit(),this.opts.lazy&&this.opts.waitForThumbnailsBeforeUpload)throw new Error(\"ThumbnailGenerator: The `lazy` and `waitForThumbnailsBeforeUpload` options are mutually exclusive. Please ensure at most one of them is set to `true`.\")}createThumbnail(e,t,r){let s=URL.createObjectURL(e.data),o=new Promise((l,h)=>{let p=new Image;p.src=s,p.addEventListener(\"load\",()=>{URL.revokeObjectURL(s),l(p)}),p.addEventListener(\"error\",d=>{URL.revokeObjectURL(s),h(d.error||new Error(\"Could not create thumbnail\"))})}),a=Gg(e.data).catch(()=>1);return Promise.all([o,a]).then(l=>{let[h,p]=l,d=this.getProportionalDimensions(h,t,r,p.deg),f=Y2(h,p),y=this.resizeImage(f,d.width,d.height);return X2(y,this.thumbnailType,80)}).then(l=>URL.createObjectURL(l))}getProportionalDimensions(e,t,r,s){let o=e.width/e.height;return(s===90||s===270)&&(o=e.height/e.width),t!=null?{width:t,height:Math.round(t/o)}:r!=null?{width:Math.round(r*o),height:r}:{width:this.defaultThumbnailDimension,height:Math.round(this.defaultThumbnailDimension/o)}}resizeImage(e,t,r){let s=Q2(e),o=Math.ceil(Math.log2(s.width/t));o<1&&(o=1);let a=t*2**(o-1),l=r*2**(o-1),h=2;for(;o--;){let p=document.createElement(\"canvas\");p.width=a,p.height=l,p.getContext(\"2d\").drawImage(s,0,0,a,l),s=p,a=Math.round(a/h),l=Math.round(l/h)}return s}setPreviewURL(e,t){this.uppy.setFileState(e,{preview:t})}addToQueue(e){this.queue.push(e),this.queueProcessing===!1&&this.processQueue()}processQueue(){if(this.queueProcessing=!0,this.queue.length>0){let e=this.uppy.getFile(this.queue.shift());return e?this.requestThumbnail(e).catch(()=>{}).then(()=>this.processQueue()):(this.uppy.log(\"[ThumbnailGenerator] file was removed before a thumbnail could be generated, but not removed from the queue. This is probably a bug\",\"error\"),Promise.resolve())}return this.queueProcessing=!1,this.uppy.log(\"[ThumbnailGenerator] Emptied thumbnail queue\"),this.uppy.emit(\"thumbnail:all-generated\"),Promise.resolve()}requestThumbnail(e){return Uo(e.type)&&!e.isRemote?this.createThumbnail(e,this.opts.thumbnailWidth,this.opts.thumbnailHeight).then(t=>{this.setPreviewURL(e.id,t),this.uppy.log(`[ThumbnailGenerator] Generated thumbnail for ${e.id}`),this.uppy.emit(\"thumbnail:generated\",this.uppy.getFile(e.id),t)}).catch(t=>{this.uppy.log(`[ThumbnailGenerator] Failed thumbnail for ${e.id}:`,\"warning\"),this.uppy.log(t,\"warning\"),this.uppy.emit(\"thumbnail:error\",this.uppy.getFile(e.id),t)}):Promise.resolve()}install(){this.uppy.on(\"file-removed\",this.onFileRemoved),this.uppy.on(\"cancel-all\",this.onAllFilesRemoved),this.opts.lazy?(this.uppy.on(\"thumbnail:request\",this.onFileAdded),this.uppy.on(\"thumbnail:cancel\",this.onCancelRequest)):(this.uppy.on(\"file-added\",this.onFileAdded),this.uppy.on(\"restored\",this.onRestored)),this.opts.waitForThumbnailsBeforeUpload&&this.uppy.addPreProcessor(this.waitUntilAllProcessed)}uninstall(){this.uppy.off(\"file-removed\",this.onFileRemoved),this.uppy.off(\"cancel-all\",this.onAllFilesRemoved),this.opts.lazy?(this.uppy.off(\"thumbnail:request\",this.onFileAdded),this.uppy.off(\"thumbnail:cancel\",this.onCancelRequest)):(this.uppy.off(\"file-added\",this.onFileAdded),this.uppy.off(\"restored\",this.onRestored)),this.opts.waitForThumbnailsBeforeUpload&&this.uppy.removePreProcessor(this.waitUntilAllProcessed)}};n(Cr,\"ThumbnailGenerator\");Cr.VERSION=K2.version;function Ou(i){if(typeof i==\"string\"){let e=document.querySelectorAll(i);return e.length===0?null:Array.from(e)}return typeof i==\"object\"&&En(i)?[i]:null}n(Ou,\"findAllDOMElements\");var Qe=Array.from;function Cu(i,e,t,r){let{onSuccess:s}=r;i.readEntries(o=>{let a=[...e,...o];o.length?queueMicrotask(()=>{Cu(i,a,t,{onSuccess:s})}):s(a)},o=>{t(o),s(e)})}n(Cu,\"getFilesAndDirectoriesFromDirectory\");function Xg(i,e){return i==null?i:{kind:i.isFile?\"file\":i.isDirectory?\"directory\":void 0,name:i.name,getFile(){return new Promise((t,r)=>i.file(t,r))},async*values(){let t=i.createReader();yield*await new Promise(s=>{Cu(t,[],e,{onSuccess:o=>s(o.map(a=>Xg(a,e)))})})},isSameEntry:void 0}}n(Xg,\"getAsFileSystemHandleFromEntry\");function Yg(i,e,t){try{return t===void 0&&(t=void 0),async function*(){let r=n(()=>`${e}/${i.name}`,\"getNextRelativePath\");if(i.kind===\"file\"){let s=await i.getFile();s!=null?(s.relativePath=e?r():null,yield s):t!=null&&(yield t)}else if(i.kind===\"directory\")for await(let s of i.values())yield*Yg(s,e?r():i.name);else t!=null&&(yield t)}()}catch(r){return Promise.reject(r)}}n(Yg,\"createPromiseToAddFileOrParseDirectory\");async function*Sd(i,e){let t=await Promise.all(Array.from(i.items,async r=>{var s;let o,a=n(()=>typeof r.getAsEntry==\"function\"?r.getAsEntry():r.webkitGetAsEntry(),\"getAsEntry\");return(s=o)!=null||(o=Xg(a(),e)),{fileSystemHandle:o,lastResortFile:r.getAsFile()}}));for(let{lastResortFile:r,fileSystemHandle:s}of t)if(s!=null)try{yield*Yg(s,\"\",r)}catch(o){r!=null?yield r:e(o)}else r!=null&&(yield r)}n(Sd,\"getFilesFromDataTransfer\");function Pd(i){let e=Qe(i.files);return Promise.resolve(e)}n(Pd,\"fallbackApi\");async function As(i,e){var t;let r=(t=e?.logDropError)!=null?t:Function.prototype;try{let s=[];for await(let o of Sd(i,r))s.push(o);return s}catch{return Pd(i)}}n(As,\"getDroppedFiles\");var Qg=Number.isNaN||n(function(e){return typeof e==\"number\"&&e!==e},\"ponyfill\");function J2(i,e){return!!(i===e||Qg(i)&&Qg(e))}n(J2,\"isEqual\");function Z2(i,e){if(i.length!==e.length)return!1;for(var t=0;t<i.length;t++)if(!J2(i[t],e[t]))return!1;return!0}n(Z2,\"areInputsEqual\");function _d(i,e){e===void 0&&(e=Z2);var t=null;function r(){for(var s=[],o=0;o<arguments.length;o++)s[o]=arguments[o];if(t&&t.lastThis===this&&e(s,t.lastArgs))return t.lastResult;var a=i.apply(this,s);return t={lastResult:a,lastArgs:s,lastThis:this},a}return n(r,\"memoized\"),r.clear=n(function(){t=null},\"clear\"),r}n(_d,\"memoizeOne\");var Tu=['a[href]:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])','area[href]:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])',\"input:not([disabled]):not([inert]):not([aria-hidden])\",\"select:not([disabled]):not([inert]):not([aria-hidden])\",\"textarea:not([disabled]):not([inert]):not([aria-hidden])\",\"button:not([disabled]):not([inert]):not([aria-hidden])\",'iframe:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])','object:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])','embed:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])','[contenteditable]:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])','[tabindex]:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])'];function pa(i,e){if(e){let t=i.querySelector(`[data-uppy-paneltype=\"${e}\"]`);if(t)return t}return i}n(pa,\"getActiveOverlayEl\");function Jg(i,e){let t=e[0];t&&(t.focus(),i.preventDefault())}n(Jg,\"focusOnFirstNode\");function eS(i,e){let t=e[e.length-1];t&&(t.focus(),i.preventDefault())}n(eS,\"focusOnLastNode\");function tS(i){return i.contains(document.activeElement)}n(tS,\"isFocusInOverlay\");function xd(i,e,t){let r=pa(t,e),s=Qe(r.querySelectorAll(Tu)),o=s.indexOf(document.activeElement);tS(r)?i.shiftKey&&o===0?eS(i,s):!i.shiftKey&&o===s.length-1&&Jg(i,s):Jg(i,s)}n(xd,\"trapFocus\");function Zg(i,e,t){e===null||xd(i,e,t)}n(Zg,\"forInline\");var ey=de(Sh(),1);function Fd(){let i=!1;return(0,ey.default)(n((t,r)=>{let s=pa(t,r),o=s.contains(document.activeElement);if(o&&i)return;let a=s.querySelector(\"[data-uppy-super-focusable]\");if(!(o&&!a))if(a)a.focus({preventScroll:!0}),i=!0;else{let l=s.querySelector(Tu);l?.focus({preventScroll:!0}),i=!1}},\"superFocus\"),260)}n(Fd,\"createSuperFocus\");var xy=de(Qt(),1);function fa(){let i=document.body;return!(!(\"draggable\"in i)||!(\"ondragstart\"in i&&\"ondrop\"in i)||!(\"FormData\"in window)||!(\"FileReader\"in window))}n(fa,\"isDragDropSupported\");var ay=de(Qt(),1),ly=de(iy(),1);function rS(){return u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",width:\"25\",height:\"25\",viewBox:\"0 0 25 25\"},u(\"g\",{fill:\"#686DE0\",fillRule:\"evenodd\"},u(\"path\",{d:\"M5 7v10h15V7H5zm0-1h15a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1z\",fillRule:\"nonzero\"}),u(\"path\",{d:\"M6.35 17.172l4.994-5.026a.5.5 0 0 1 .707 0l2.16 2.16 3.505-3.505a.5.5 0 0 1 .707 0l2.336 2.31-.707.72-1.983-1.97-3.505 3.505a.5.5 0 0 1-.707 0l-2.16-2.159-3.938 3.939-1.409.026z\",fillRule:\"nonzero\"}),u(\"circle\",{cx:\"7.5\",cy:\"9.5\",r:\"1.5\"})))}n(rS,\"iconImage\");function sS(){return u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\",width:\"25\",height:\"25\",viewBox:\"0 0 25 25\"},u(\"path\",{d:\"M9.5 18.64c0 1.14-1.145 2-2.5 2s-2.5-.86-2.5-2c0-1.14 1.145-2 2.5-2 .557 0 1.079.145 1.5.396V7.25a.5.5 0 0 1 .379-.485l9-2.25A.5.5 0 0 1 18.5 5v11.64c0 1.14-1.145 2-2.5 2s-2.5-.86-2.5-2c0-1.14 1.145-2 2.5-2 .557 0 1.079.145 1.5.396V8.67l-8 2v7.97zm8-11v-2l-8 2v2l8-2zM7 19.64c.855 0 1.5-.484 1.5-1s-.645-1-1.5-1-1.5.484-1.5 1 .645 1 1.5 1zm9-2c.855 0 1.5-.484 1.5-1s-.645-1-1.5-1-1.5.484-1.5 1 .645 1 1.5 1z\",fill:\"#049BCF\",fillRule:\"nonzero\"}))}n(sS,\"iconAudio\");function oS(){return u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\",width:\"25\",height:\"25\",viewBox:\"0 0 25 25\"},u(\"path\",{d:\"M16 11.834l4.486-2.691A1 1 0 0 1 22 10v6a1 1 0 0 1-1.514.857L16 14.167V17a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V9a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v2.834zM15 9H5v8h10V9zm1 4l5 3v-6l-5 3z\",fill:\"#19AF67\",fillRule:\"nonzero\"}))}n(oS,\"iconVideo\");function nS(){return u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\",width:\"25\",height:\"25\",viewBox:\"0 0 25 25\"},u(\"path\",{d:\"M9.766 8.295c-.691-1.843-.539-3.401.747-3.726 1.643-.414 2.505.938 2.39 3.299-.039.79-.194 1.662-.537 3.148.324.49.66.967 1.055 1.51.17.231.382.488.629.757 1.866-.128 3.653.114 4.918.655 1.487.635 2.192 1.685 1.614 2.84-.566 1.133-1.839 1.084-3.416.249-1.141-.604-2.457-1.634-3.51-2.707a13.467 13.467 0 0 0-2.238.426c-1.392 4.051-4.534 6.453-5.707 4.572-.986-1.58 1.38-4.206 4.914-5.375.097-.322.185-.656.264-1.001.08-.353.306-1.31.407-1.737-.678-1.059-1.2-2.031-1.53-2.91zm2.098 4.87c-.033.144-.068.287-.104.427l.033-.01-.012.038a14.065 14.065 0 0 1 1.02-.197l-.032-.033.052-.004a7.902 7.902 0 0 1-.208-.271c-.197-.27-.38-.526-.555-.775l-.006.028-.002-.003c-.076.323-.148.632-.186.8zm5.77 2.978c1.143.605 1.832.632 2.054.187.26-.519-.087-1.034-1.113-1.473-.911-.39-2.175-.608-3.55-.608.845.766 1.787 1.459 2.609 1.894zM6.559 18.789c.14.223.693.16 1.425-.413.827-.648 1.61-1.747 2.208-3.206-2.563 1.064-4.102 2.867-3.633 3.62zm5.345-10.97c.088-1.793-.351-2.48-1.146-2.28-.473.119-.564 1.05-.056 2.405.213.566.52 1.188.908 1.859.18-.858.268-1.453.294-1.984z\",fill:\"#E2514A\",fillRule:\"nonzero\"}))}n(nS,\"iconPDF\");function aS(){return u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",width:\"25\",height:\"25\",viewBox:\"0 0 25 25\"},u(\"path\",{d:\"M10.45 2.05h1.05a.5.5 0 0 1 .5.5v.024a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5V2.55a.5.5 0 0 1 .5-.5zm2.05 1.024h1.05a.5.5 0 0 1 .5.5V3.6a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5v-.001zM10.45 0h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5V.5a.5.5 0 0 1 .5-.5zm2.05 1.025h1.05a.5.5 0 0 1 .5.5v.024a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.024a.5.5 0 0 1 .5-.5zm-2.05 3.074h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5zm2.05 1.025h1.05a.5.5 0 0 1 .5.5v.024a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.024a.5.5 0 0 1 .5-.5zm-2.05 1.024h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5zm2.05 1.025h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5zm-2.05 1.025h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5zm2.05 1.025h1.05a.5.5 0 0 1 .5.5v.024a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.024a.5.5 0 0 1 .5-.5zm-1.656 3.074l-.82 5.946c.52.302 1.174.458 1.976.458.803 0 1.455-.156 1.975-.458l-.82-5.946h-2.311zm0-1.025h2.312c.512 0 .946.378 1.015.885l.82 5.946c.056.412-.142.817-.501 1.026-.686.398-1.515.597-2.49.597-.974 0-1.804-.199-2.49-.597a1.025 1.025 0 0 1-.5-1.026l.819-5.946c.07-.507.503-.885 1.015-.885zm.545 6.6a.5.5 0 0 1-.397-.561l.143-.999a.5.5 0 0 1 .495-.429h.74a.5.5 0 0 1 .495.43l.143.998a.5.5 0 0 1-.397.561c-.404.08-.819.08-1.222 0z\",fill:\"#00C469\",fillRule:\"nonzero\"}))}n(aS,\"iconArchive\");function lS(){return u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\",width:\"25\",height:\"25\",viewBox:\"0 0 25 25\"},u(\"g\",{fill:\"#A7AFB7\",fillRule:\"nonzero\"},u(\"path\",{d:\"M5.5 22a.5.5 0 0 1-.5-.5v-18a.5.5 0 0 1 .5-.5h10.719a.5.5 0 0 1 .367.16l3.281 3.556a.5.5 0 0 1 .133.339V21.5a.5.5 0 0 1-.5.5h-14zm.5-1h13V7.25L16 4H6v17z\"}),u(\"path\",{d:\"M15 4v3a1 1 0 0 0 1 1h3V7h-3V4h-1z\"})))}n(lS,\"iconFile\");function uS(){return u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\",width:\"25\",height:\"25\",viewBox:\"0 0 25 25\"},u(\"path\",{d:\"M4.5 7h13a.5.5 0 1 1 0 1h-13a.5.5 0 0 1 0-1zm0 3h15a.5.5 0 1 1 0 1h-15a.5.5 0 1 1 0-1zm0 3h15a.5.5 0 1 1 0 1h-15a.5.5 0 1 1 0-1zm0 3h10a.5.5 0 1 1 0 1h-10a.5.5 0 1 1 0-1z\",fill:\"#5A5E69\",fillRule:\"nonzero\"}))}n(uS,\"iconText\");function Rs(i){let e={color:\"#838999\",icon:lS()};if(!i)return e;let t=i.split(\"/\")[0],r=i.split(\"/\")[1];return t===\"text\"?{color:\"#5a5e69\",icon:uS()}:t===\"image\"?{color:\"#686de0\",icon:rS()}:t===\"audio\"?{color:\"#068dbb\",icon:sS()}:t===\"video\"?{color:\"#19af67\",icon:oS()}:t===\"application\"&&r===\"pdf\"?{color:\"#e25149\",icon:nS()}:t===\"application\"&&[\"zip\",\"x-7z-compressed\",\"x-rar-compressed\",\"x-tar\",\"x-gzip\",\"x-apple-diskimage\"].indexOf(r)!==-1?{color:\"#00C469\",icon:aS()}:e}n(Rs,\"getIconByMime\");function ma(i){let{file:e}=i;if(e.preview)return u(\"img\",{className:\"uppy-Dashboard-Item-previewImg\",alt:e.name,src:e.preview});let{color:t,icon:r}=Rs(e.type);return u(\"div\",{className:\"uppy-Dashboard-Item-previewIconWrap\"},u(\"span\",{className:\"uppy-Dashboard-Item-previewIcon\",style:{color:t}},r),u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-Dashboard-Item-previewIconBg\",width:\"58\",height:\"76\",viewBox:\"0 0 58 76\"},u(\"rect\",{fill:\"#FFF\",width:\"58\",height:\"76\",rx:\"3\",fillRule:\"evenodd\"})))}n(ma,\"FilePreview\");var hS=n((i,e)=>(typeof e==\"function\"?e():e).filter(s=>s.id===i)[0].name,\"metaFieldIdToName\");function ga(i){let{file:e,toggleFileCard:t,i18n:r,metaFields:s}=i,{missingRequiredMetaFields:o}=e;if(!(o!=null&&o.length))return null;let a=o.map(l=>hS(l,s)).join(\", \");return u(\"div\",{className:\"uppy-Dashboard-Item-errorMessage\"},r(\"missingRequiredMetaFields\",{smart_count:o.length,fields:a}),\" \",u(\"button\",{type:\"button\",class:\"uppy-u-reset uppy-Dashboard-Item-errorMessageBtn\",onClick:()=>t(!0,e.id)},r(\"editFile\")))}n(ga,\"renderMissingMetaFieldsError\");function Ed(i){let{file:e,i18n:t,toggleFileCard:r,metaFields:s,showLinkToFileUploadResult:o}=i,a=\"rgba(255, 255, 255, 0.5)\",l=e.preview?a:Rs(i.file.type).color;return u(\"div\",{className:\"uppy-Dashboard-Item-previewInnerWrap\",style:{backgroundColor:l}},o&&e.uploadURL&&u(\"a\",{className:\"uppy-Dashboard-Item-previewLink\",href:e.uploadURL,rel:\"noreferrer noopener\",target:\"_blank\",\"aria-label\":e.meta.name},u(\"span\",{hidden:!0},e.meta.name)),u(ma,{file:e}),u(ga,{file:e,i18n:t,toggleFileCard:r,metaFields:s}))}n(Ed,\"FilePreviewAndLink\");function dS(i){if(!i.isUploaded){if(i.error&&!i.hideRetryButton){i.uppy.retryUpload(i.file.id);return}i.resumableUploads&&!i.hidePauseResumeButton?i.uppy.pauseResume(i.file.id):i.individualCancellation&&!i.hideCancelButton&&i.uppy.removeFile(i.file.id)}}n(dS,\"onPauseResumeCancelRetry\");function ry(i){return i.isUploaded?i.i18n(\"uploadComplete\"):i.error?i.i18n(\"retryUpload\"):i.resumableUploads?i.file.isPaused?i.i18n(\"resumeUpload\"):i.i18n(\"pauseUpload\"):i.individualCancellation?i.i18n(\"cancelUpload\"):\"\"}n(ry,\"progressIndicatorTitle\");function Od(i){return u(\"div\",{className:\"uppy-Dashboard-Item-progress\"},u(\"button\",{className:\"uppy-u-reset uppy-c-btn uppy-Dashboard-Item-progressIndicator\",type:\"button\",\"aria-label\":ry(i),title:ry(i),onClick:()=>dS(i)},i.children))}n(Od,\"ProgressIndicatorButton\");function Au(i){let{children:e}=i;return u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",width:\"70\",height:\"70\",viewBox:\"0 0 36 36\",className:\"uppy-c-icon uppy-Dashboard-Item-progressIcon--circle\"},e)}n(Au,\"ProgressCircleContainer\");function Cd(i){let{progress:e}=i,t=2*Math.PI*15;return u(\"g\",null,u(\"circle\",{className:\"uppy-Dashboard-Item-progressIcon--bg\",r:\"15\",cx:\"18\",cy:\"18\",\"stroke-width\":\"2\",fill:\"none\"}),u(\"circle\",{className:\"uppy-Dashboard-Item-progressIcon--progress\",r:\"15\",cx:\"18\",cy:\"18\",transform:\"rotate(-90, 18, 18)\",fill:\"none\",\"stroke-width\":\"2\",\"stroke-dasharray\":t,\"stroke-dashoffset\":t-t/100*e}))}n(Cd,\"ProgressCircle\");function Td(i){if(!i.file.progress.uploadStarted)return null;if(i.isUploaded)return u(\"div\",{className:\"uppy-Dashboard-Item-progress\"},u(\"div\",{className:\"uppy-Dashboard-Item-progressIndicator\"},u(Au,null,u(\"circle\",{r:\"15\",cx:\"18\",cy:\"18\",fill:\"#1bb240\"}),u(\"polygon\",{className:\"uppy-Dashboard-Item-progressIcon--check\",transform:\"translate(2, 3)\",points:\"14 22.5 7 15.2457065 8.99985857 13.1732815 14 18.3547104 22.9729883 9 25 11.1005634\"}))));if(!i.recoveredState)return i.error&&!i.hideRetryButton?u(Od,i,u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon uppy-Dashboard-Item-progressIcon--retry\",width:\"28\",height:\"31\",viewBox:\"0 0 16 19\"},u(\"path\",{d:\"M16 11a8 8 0 1 1-8-8v2a6 6 0 1 0 6 6h2z\"}),u(\"path\",{d:\"M7.9 3H10v2H7.9z\"}),u(\"path\",{d:\"M8.536.5l3.535 3.536-1.414 1.414L7.12 1.914z\"}),u(\"path\",{d:\"M10.657 2.621l1.414 1.415L8.536 7.57 7.12 6.157z\"}))):i.resumableUploads&&!i.hidePauseResumeButton?u(Od,i,u(Au,null,u(Cd,{progress:i.file.progress.percentage}),i.file.isPaused?u(\"polygon\",{className:\"uppy-Dashboard-Item-progressIcon--play\",transform:\"translate(3, 3)\",points:\"12 20 12 10 20 15\"}):u(\"g\",{className:\"uppy-Dashboard-Item-progressIcon--pause\",transform:\"translate(14.5, 13)\"},u(\"rect\",{x:\"0\",y:\"0\",width:\"2\",height:\"10\",rx:\"0\"}),u(\"rect\",{x:\"5\",y:\"0\",width:\"2\",height:\"10\",rx:\"0\"})))):!i.resumableUploads&&i.individualCancellation&&!i.hideCancelButton?u(Od,i,u(Au,null,u(Cd,{progress:i.file.progress.percentage}),u(\"polygon\",{className:\"cancel\",transform:\"translate(2, 2)\",points:\"19.8856516 11.0625 16 14.9481516 12.1019737 11.0625 11.0625 12.1143484 14.9481516 16 11.0625 19.8980263 12.1019737 20.9375 16 17.0518484 19.8856516 20.9375 20.9375 19.8980263 17.0518484 16 20.9375 12\"}))):u(\"div\",{className:\"uppy-Dashboard-Item-progress\"},u(\"div\",{className:\"uppy-Dashboard-Item-progressIndicator\"},u(Au,null,u(Cd,{progress:i.file.progress.percentage}))))}n(Td,\"FileProgress\");var ny=de(oy(),1);var Ad=\"...\";function Ru(i,e){if(e===0)return\"\";if(i.length<=e)return i;if(e<=Ad.length+1)return`${i.slice(0,e-1)}\\u2026`;let t=e-Ad.length,r=Math.ceil(t/2),s=Math.floor(t/2);return i.slice(0,r)+Ad+i.slice(-s)}n(Ru,\"truncateString\");var cS=n(i=>{let{author:e,name:t}=i.file.meta;function r(){return i.isSingleFile&&i.containerHeight>=350?90:i.containerWidth<=352?35:i.containerWidth<=576?60:e?20:30}return n(r,\"getMaxNameLength\"),u(\"div\",{className:\"uppy-Dashboard-Item-name\",title:t},Ru(t,r()))},\"renderFileName\"),pS=n(i=>{let{author:e}=i.file.meta,{providerName:t}=i.file.remote,r=\"\\xB7\";return e?u(\"div\",{className:\"uppy-Dashboard-Item-author\"},u(\"a\",{href:`${e.url}?utm_source=Companion&utm_medium=referral`,target:\"_blank\",rel:\"noopener noreferrer\"},Ru(e.name,13)),t?u(Ht,null,` ${r} `,t,` ${r} `):null):null},\"renderAuthor\"),fS=n(i=>i.file.size&&u(\"div\",{className:\"uppy-Dashboard-Item-statusSize\"},(0,ny.default)(i.file.size)),\"renderFileSize\"),mS=n(i=>i.file.isGhost&&u(\"span\",null,\" \\u2022 \",u(\"button\",{className:\"uppy-u-reset uppy-c-btn uppy-Dashboard-Item-reSelect\",type:\"button\",onClick:i.toggleAddFilesPanel},i.i18n(\"reSelect\"))),\"ReSelectButton\"),gS=n(i=>{let{file:e,onClick:t}=i;return e.error?u(\"button\",{className:\"uppy-u-reset uppy-c-btn uppy-Dashboard-Item-errorDetails\",\"aria-label\":e.error,\"data-microtip-position\":\"bottom\",\"data-microtip-size\":\"medium\",onClick:t,type:\"button\"},\"?\"):null},\"ErrorButton\");function Rd(i){let{file:e}=i;return u(\"div\",{className:\"uppy-Dashboard-Item-fileInfo\",\"data-uppy-file-source\":e.source},u(\"div\",{className:\"uppy-Dashboard-Item-fileName\"},cS(i),u(gS,{file:i.file,onClick:()=>alert(i.file.error)})),u(\"div\",{className:\"uppy-Dashboard-Item-status\"},pS(i),fS(i),mS(i)),u(ga,{file:i.file,i18n:i.i18n,toggleFileCard:i.toggleFileCard,metaFields:i.metaFields}))}n(Rd,\"FileInfo\");function Ud(i,e){return e===void 0&&(e=\"Copy the URL below\"),new Promise(t=>{let r=document.createElement(\"textarea\");r.setAttribute(\"style\",{position:\"fixed\",top:0,left:0,width:\"2em\",height:\"2em\",padding:0,border:\"none\",outline:\"none\",boxShadow:\"none\",background:\"transparent\"}),r.value=i,document.body.appendChild(r),r.select();let s=n(()=>{document.body.removeChild(r),window.prompt(e,i),t()},\"magicCopyFailed\");try{return document.execCommand(\"copy\")?(document.body.removeChild(r),t()):s(\"copy command unavailable\")}catch(o){return document.body.removeChild(r),s(o)}})}n(Ud,\"copyToClipboard\");function yS(i){let{file:e,uploadInProgressOrComplete:t,metaFields:r,canEditFile:s,i18n:o,onClick:a}=i;return!t&&r&&r.length>0||!t&&s(e)?u(\"button\",{className:\"uppy-u-reset uppy-c-btn uppy-Dashboard-Item-action uppy-Dashboard-Item-action--edit\",type:\"button\",\"aria-label\":o(\"editFileWithFilename\",{file:e.meta.name}),title:o(\"editFileWithFilename\",{file:e.meta.name}),onClick:()=>a()},u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\",width:\"14\",height:\"14\",viewBox:\"0 0 14 14\"},u(\"g\",{fillRule:\"evenodd\"},u(\"path\",{d:\"M1.5 10.793h2.793A1 1 0 0 0 5 10.5L11.5 4a1 1 0 0 0 0-1.414L9.707.793a1 1 0 0 0-1.414 0l-6.5 6.5A1 1 0 0 0 1.5 8v2.793zm1-1V8L9 1.5l1.793 1.793-6.5 6.5H2.5z\",fillRule:\"nonzero\"}),u(\"rect\",{x:\"1\",y:\"12.293\",width:\"11\",height:\"1\",rx:\".5\"}),u(\"path\",{fillRule:\"nonzero\",d:\"M6.793 2.5L9.5 5.207l.707-.707L7.5 1.793z\"})))):null}n(yS,\"EditButton\");function vS(i){let{i18n:e,onClick:t,file:r}=i;return u(\"button\",{className:\"uppy-u-reset uppy-Dashboard-Item-action uppy-Dashboard-Item-action--remove\",type:\"button\",\"aria-label\":e(\"removeFile\",{file:r.meta.name}),title:e(\"removeFile\",{file:r.meta.name}),onClick:()=>t()},u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\",width:\"18\",height:\"18\",viewBox:\"0 0 18 18\"},u(\"path\",{d:\"M9 0C4.034 0 0 4.034 0 9s4.034 9 9 9 9-4.034 9-9-4.034-9-9-9z\"}),u(\"path\",{fill:\"#FFF\",d:\"M13 12.222l-.778.778L9 9.778 5.778 13 5 12.222 8.222 9 5 5.778 5.778 5 9 8.222 12.222 5l.778.778L9.778 9z\"})))}n(vS,\"RemoveButton\");var bS=n((i,e)=>{Ud(e.file.uploadURL,e.i18n(\"copyLinkToClipboardFallback\")).then(()=>{e.uppy.log(\"Link copied to clipboard.\"),e.uppy.info(e.i18n(\"copyLinkToClipboardSuccess\"),\"info\",3e3)}).catch(e.uppy.log).then(()=>i.target.focus({preventScroll:!0}))},\"copyLinkToClipboard\");function wS(i){let{i18n:e}=i;return u(\"button\",{className:\"uppy-u-reset uppy-Dashboard-Item-action uppy-Dashboard-Item-action--copyLink\",type:\"button\",\"aria-label\":e(\"copyLink\"),title:e(\"copyLink\"),onClick:t=>bS(t,i)},u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\",width:\"14\",height:\"14\",viewBox:\"0 0 14 12\"},u(\"path\",{d:\"M7.94 7.703a2.613 2.613 0 0 1-.626 2.681l-.852.851a2.597 2.597 0 0 1-1.849.766A2.616 2.616 0 0 1 2.764 7.54l.852-.852a2.596 2.596 0 0 1 2.69-.625L5.267 7.099a1.44 1.44 0 0 0-.833.407l-.852.851a1.458 1.458 0 0 0 1.03 2.486c.39 0 .755-.152 1.03-.426l.852-.852c.231-.231.363-.522.406-.824l1.04-1.038zm4.295-5.937A2.596 2.596 0 0 0 10.387 1c-.698 0-1.355.272-1.849.766l-.852.851a2.614 2.614 0 0 0-.624 2.688l1.036-1.036c.041-.304.173-.6.407-.833l.852-.852c.275-.275.64-.426 1.03-.426a1.458 1.458 0 0 1 1.03 2.486l-.852.851a1.442 1.442 0 0 1-.824.406l-1.04 1.04a2.596 2.596 0 0 0 2.683-.628l.851-.85a2.616 2.616 0 0 0 0-3.697zm-6.88 6.883a.577.577 0 0 0 .82 0l3.474-3.474a.579.579 0 1 0-.819-.82L5.355 7.83a.579.579 0 0 0 0 .819z\"})))}n(wS,\"CopyLinkButton\");function kd(i){let{uppy:e,file:t,uploadInProgressOrComplete:r,canEditFile:s,metaFields:o,showLinkToFileUploadResult:a,showRemoveButton:l,i18n:h,toggleFileCard:p,openFileEditor:d}=i;return u(\"div\",{className:\"uppy-Dashboard-Item-actionWrapper\"},u(yS,{i18n:h,file:t,uploadInProgressOrComplete:r,canEditFile:s,metaFields:o,onClick:n(()=>{o&&o.length>0?p(!0,t.id):d(t)},\"editAction\")}),a&&t.uploadURL?u(wS,{file:t,uppy:e,i18n:h}):null,l?u(vS,{i18n:h,file:t,uppy:e,onClick:()=>i.uppy.removeFile(t.id,\"removed-by-user\")}):null)}n(kd,\"Buttons\");var Ho=class extends we{componentDidMount(){let{file:e}=this.props;e.preview||this.props.handleRequestThumbnail(e)}shouldComponentUpdate(e){return!(0,ly.default)(this.props,e)}componentDidUpdate(){let{file:e}=this.props;e.preview||this.props.handleRequestThumbnail(e)}componentWillUnmount(){let{file:e}=this.props;e.preview||this.props.handleCancelThumbnail(e)}render(){let{file:e}=this.props,t=e.progress.preprocess||e.progress.postprocess,r=e.progress.uploadComplete&&!t&&!e.error,s=e.progress.uploadStarted||t,o=e.progress.uploadStarted&&!e.progress.uploadComplete||t,a=e.error||!1,{isGhost:l}=e,h=(this.props.individualCancellation||!o)&&!r;r&&this.props.showRemoveButtonAfterComplete&&(h=!0);let p=(0,ay.default)({\"uppy-Dashboard-Item\":!0,\"is-inprogress\":o&&!this.props.recoveredState,\"is-processing\":t,\"is-complete\":r,\"is-error\":!!a,\"is-resumable\":this.props.resumableUploads,\"is-noIndividualCancellation\":!this.props.individualCancellation,\"is-ghost\":l});return u(\"div\",{className:p,id:`uppy_${e.id}`,role:this.props.role},u(\"div\",{className:\"uppy-Dashboard-Item-preview\"},u(Ed,{file:e,showLinkToFileUploadResult:this.props.showLinkToFileUploadResult,i18n:this.props.i18n,toggleFileCard:this.props.toggleFileCard,metaFields:this.props.metaFields}),u(Td,{uppy:this.props.uppy,file:e,error:a,isUploaded:r,hideRetryButton:this.props.hideRetryButton,hideCancelButton:this.props.hideCancelButton,hidePauseResumeButton:this.props.hidePauseResumeButton,recoveredState:this.props.recoveredState,showRemoveButtonAfterComplete:this.props.showRemoveButtonAfterComplete,resumableUploads:this.props.resumableUploads,individualCancellation:this.props.individualCancellation,i18n:this.props.i18n})),u(\"div\",{className:\"uppy-Dashboard-Item-fileInfoAndButtons\"},u(Rd,{file:e,id:this.props.id,acquirers:this.props.acquirers,containerWidth:this.props.containerWidth,containerHeight:this.props.containerHeight,i18n:this.props.i18n,toggleAddFilesPanel:this.props.toggleAddFilesPanel,toggleFileCard:this.props.toggleFileCard,metaFields:this.props.metaFields,isSingleFile:this.props.isSingleFile}),u(kd,{file:e,metaFields:this.props.metaFields,showLinkToFileUploadResult:this.props.showLinkToFileUploadResult,showRemoveButton:h,canEditFile:this.props.canEditFile,uploadInProgressOrComplete:s,toggleFileCard:this.props.toggleFileCard,openFileEditor:this.props.openFileEditor,uppy:this.props.uppy,i18n:this.props.i18n})))}};n(Ho,\"FileItem\");function SS(i,e){let t=[],r=[];return i.forEach(s=>{r.length<e?r.push(s):(t.push(r),r=[s])}),r.length&&t.push(r),t}n(SS,\"chunks\");var uy=n(i=>{let{id:e,error:t,i18n:r,uppy:s,files:o,acquirers:a,resumableUploads:l,hideRetryButton:h,hidePauseResumeButton:p,hideCancelButton:d,showLinkToFileUploadResult:f,showRemoveButtonAfterComplete:y,isWide:b,metaFields:S,isSingleFile:E,toggleFileCard:x,handleRequestThumbnail:F,handleCancelThumbnail:U,recoveredState:j,individualCancellation:G,itemsPerRow:J,openFileEditor:B,canEditFile:z,toggleAddFilesPanel:K,containerWidth:oe,containerHeight:Be}=i,Je=J===1?71:200,wt=Ro(()=>{let _e=n((xe,ui)=>o[ui].isGhost-o[xe].isGhost,\"sortByGhostComesFirst\"),ze=Object.keys(o);return j&&ze.sort(_e),SS(ze,J)},[o,J,j]),We=n(_e=>u(\"div\",{class:\"uppy-Dashboard-filesInner\",role:\"presentation\",key:_e[0]},_e.map(ze=>u(Ho,{key:ze,uppy:s,id:e,error:t,i18n:r,acquirers:a,resumableUploads:l,individualCancellation:G,hideRetryButton:h,hidePauseResumeButton:p,hideCancelButton:d,showLinkToFileUploadResult:f,showRemoveButtonAfterComplete:y,isWide:b,metaFields:S,recoveredState:j,isSingleFile:E,containerWidth:oe,containerHeight:Be,toggleFileCard:x,handleRequestThumbnail:F,handleCancelThumbnail:U,role:\"listitem\",openFileEditor:B,canEditFile:z,toggleAddFilesPanel:K,file:o[ze]}))),\"renderRow\");return E?u(\"div\",{class:\"uppy-Dashboard-files\"},We(wt[0])):u(du,{class:\"uppy-Dashboard-files\",role:\"list\",data:wt,renderRow:We,rowHeight:Je})},\"default\");var hy;hy=Symbol.for(\"uppy test: disable unused locale key warning\");var Uu=class extends we{constructor(){super(...arguments),this.triggerFileInputClick=()=>{this.fileInput.click()},this.triggerFolderInputClick=()=>{this.folderInput.click()},this.triggerVideoCameraInputClick=()=>{this.mobileVideoFileInput.click()},this.triggerPhotoCameraInputClick=()=>{this.mobilePhotoFileInput.click()},this.onFileInputChange=e=>{this.props.handleInputChange(e),e.target.value=null},this.renderHiddenInput=(e,t)=>u(\"input\",{className:\"uppy-Dashboard-input\",hidden:!0,\"aria-hidden\":\"true\",tabIndex:-1,webkitdirectory:e,type:\"file\",name:\"files[]\",multiple:this.props.maxNumberOfFiles!==1,onChange:this.onFileInputChange,accept:this.props.allowedFileTypes,ref:t}),this.renderHiddenCameraInput=(e,t,r)=>{let o={photo:\"image/*\",video:\"video/*\"}[e];return u(\"input\",{className:\"uppy-Dashboard-input\",hidden:!0,\"aria-hidden\":\"true\",tabIndex:-1,type:\"file\",name:`camera-${e}`,onChange:this.onFileInputChange,capture:t,accept:o,ref:r})},this.renderMyDeviceAcquirer=()=>u(\"div\",{className:\"uppy-DashboardTab\",role:\"presentation\",\"data-uppy-acquirer-id\":\"MyDevice\"},u(\"button\",{type:\"button\",className:\"uppy-u-reset uppy-c-btn uppy-DashboardTab-btn\",role:\"tab\",tabIndex:0,\"data-uppy-super-focusable\":!0,onClick:this.triggerFileInputClick},u(\"div\",{className:\"uppy-DashboardTab-inner\"},u(\"svg\",{className:\"uppy-DashboardTab-iconMyDevice\",\"aria-hidden\":\"true\",focusable:\"false\",width:\"32\",height:\"32\",viewBox:\"0 0 32 32\"},u(\"path\",{d:\"M8.45 22.087l-1.305-6.674h17.678l-1.572 6.674H8.45zm4.975-12.412l1.083 1.765a.823.823 0 00.715.386h7.951V13.5H8.587V9.675h4.838zM26.043 13.5h-1.195v-2.598c0-.463-.336-.75-.798-.75h-8.356l-1.082-1.766A.823.823 0 0013.897 8H7.728c-.462 0-.815.256-.815.718V13.5h-.956a.97.97 0 00-.746.37.972.972 0 00-.19.81l1.724 8.565c.095.44.484.755.933.755H24c.44 0 .824-.3.929-.727l2.043-8.568a.972.972 0 00-.176-.825.967.967 0 00-.753-.38z\",fill:\"currentcolor\",\"fill-rule\":\"evenodd\"}))),u(\"div\",{className:\"uppy-DashboardTab-name\"},this.props.i18n(\"myDevice\")))),this.renderPhotoCamera=()=>u(\"div\",{className:\"uppy-DashboardTab\",role:\"presentation\",\"data-uppy-acquirer-id\":\"MobilePhotoCamera\"},u(\"button\",{type:\"button\",className:\"uppy-u-reset uppy-c-btn uppy-DashboardTab-btn\",role:\"tab\",tabIndex:0,\"data-uppy-super-focusable\":!0,onClick:this.triggerPhotoCameraInputClick},u(\"div\",{className:\"uppy-DashboardTab-inner\"},u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",width:\"32\",height:\"32\",viewBox:\"0 0 32 32\"},u(\"path\",{d:\"M23.5 9.5c1.417 0 2.5 1.083 2.5 2.5v9.167c0 1.416-1.083 2.5-2.5 2.5h-15c-1.417 0-2.5-1.084-2.5-2.5V12c0-1.417 1.083-2.5 2.5-2.5h2.917l1.416-2.167C13 7.167 13.25 7 13.5 7h5c.25 0 .5.167.667.333L20.583 9.5H23.5zM16 11.417a4.706 4.706 0 00-4.75 4.75 4.704 4.704 0 004.75 4.75 4.703 4.703 0 004.75-4.75c0-2.663-2.09-4.75-4.75-4.75zm0 7.825c-1.744 0-3.076-1.332-3.076-3.074 0-1.745 1.333-3.077 3.076-3.077 1.744 0 3.074 1.333 3.074 3.076s-1.33 3.075-3.074 3.075z\",fill:\"#02B383\",\"fill-rule\":\"nonzero\"}))),u(\"div\",{className:\"uppy-DashboardTab-name\"},this.props.i18n(\"takePictureBtn\")))),this.renderVideoCamera=()=>u(\"div\",{className:\"uppy-DashboardTab\",role:\"presentation\",\"data-uppy-acquirer-id\":\"MobileVideoCamera\"},u(\"button\",{type:\"button\",className:\"uppy-u-reset uppy-c-btn uppy-DashboardTab-btn\",role:\"tab\",tabIndex:0,\"data-uppy-super-focusable\":!0,onClick:this.triggerVideoCameraInputClick},u(\"div\",{className:\"uppy-DashboardTab-inner\"},u(\"svg\",{\"aria-hidden\":\"true\",width:\"32\",height:\"32\",viewBox:\"0 0 32 32\"},u(\"path\",{fill:\"#FF675E\",fillRule:\"nonzero\",d:\"m21.254 14.277 2.941-2.588c.797-.313 1.243.818 1.09 1.554-.01 2.094.02 4.189-.017 6.282-.126.915-1.145 1.08-1.58.34l-2.434-2.142c-.192.287-.504 1.305-.738.468-.104-1.293-.028-2.596-.05-3.894.047-.312.381.823.426 1.069.063-.384.206-.744.362-1.09zm-12.939-3.73c3.858.013 7.717-.025 11.574.02.912.129 1.492 1.237 1.351 2.217-.019 2.412.04 4.83-.03 7.239-.17 1.025-1.166 1.59-2.029 1.429-3.705-.012-7.41.025-11.114-.019-.913-.129-1.492-1.237-1.352-2.217.018-2.404-.036-4.813.029-7.214.136-.82.83-1.473 1.571-1.454z \"}))),u(\"div\",{className:\"uppy-DashboardTab-name\"},this.props.i18n(\"recordVideoBtn\")))),this.renderBrowseButton=(e,t)=>{let r=this.props.acquirers.length;return u(\"button\",{type:\"button\",className:\"uppy-u-reset uppy-c-btn uppy-Dashboard-browse\",onClick:t,\"data-uppy-super-focusable\":r===0},e)},this.renderDropPasteBrowseTagline=e=>{let t=this.renderBrowseButton(this.props.i18n(\"browseFiles\"),this.triggerFileInputClick),r=this.renderBrowseButton(this.props.i18n(\"browseFolders\"),this.triggerFolderInputClick),s=this.props.fileManagerSelectionType,o=s.charAt(0).toUpperCase()+s.slice(1);return u(\"div\",{class:\"uppy-Dashboard-AddFiles-title\"},this.props.disableLocalFiles?this.props.i18n(\"importFiles\"):e>0?this.props.i18nArray(`dropPasteImport${o}`,{browseFiles:t,browseFolders:r,browse:t}):this.props.i18nArray(`dropPaste${o}`,{browseFiles:t,browseFolders:r,browse:t}))},this.renderAcquirer=e=>u(\"div\",{className:\"uppy-DashboardTab\",role:\"presentation\",\"data-uppy-acquirer-id\":e.id},u(\"button\",{type:\"button\",className:\"uppy-u-reset uppy-c-btn uppy-DashboardTab-btn\",role:\"tab\",tabIndex:0,\"data-cy\":e.id,\"aria-controls\":`uppy-DashboardContent-panel--${e.id}`,\"aria-selected\":this.props.activePickerPanel.id===e.id,\"data-uppy-super-focusable\":!0,onClick:()=>this.props.showPanel(e.id)},u(\"div\",{className:\"uppy-DashboardTab-inner\"},e.icon()),u(\"div\",{className:\"uppy-DashboardTab-name\"},e.name))),this.renderAcquirers=e=>{let t=[...e],r=t.splice(e.length-2,e.length);return u(Ht,null,t.map(s=>this.renderAcquirer(s)),u(\"span\",{role:\"presentation\",style:{\"white-space\":\"nowrap\"}},r.map(s=>this.renderAcquirer(s))))},this.renderSourcesList=(e,t)=>{let{showNativePhotoCameraButton:r,showNativeVideoCameraButton:s}=this.props,o=[],a=\"myDevice\";t||(o.push({key:a,elements:this.renderMyDeviceAcquirer()}),r&&o.push({key:\"nativePhotoCameraButton\",elements:this.renderPhotoCamera()}),s&&o.push({key:\"nativePhotoCameraButton\",elements:this.renderVideoCamera()})),o.push(...e.map(f=>({key:f.id,elements:this.renderAcquirer(f)}))),o.length===1&&o[0].key===a&&(o=[]);let h=[...o],p=h.splice(o.length-2,o.length),d=n(f=>f.map(y=>{let{key:b,elements:S}=y;return u(Ht,{key:b},S)}),\"renderList\");return u(Ht,null,this.renderDropPasteBrowseTagline(o.length),u(\"div\",{className:\"uppy-Dashboard-AddFiles-list\",role:\"tablist\"},d(h),u(\"span\",{role:\"presentation\",style:{\"white-space\":\"nowrap\"}},d(p))))}}[hy](){this.props.i18nArray(\"dropPasteBoth\"),this.props.i18nArray(\"dropPasteFiles\"),this.props.i18nArray(\"dropPasteFolders\"),this.props.i18nArray(\"dropPasteImportBoth\"),this.props.i18nArray(\"dropPasteImportFiles\"),this.props.i18nArray(\"dropPasteImportFolders\")}renderPoweredByUppy(){let{i18nArray:e}=this.props,t=u(\"span\",null,u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon uppy-Dashboard-poweredByIcon\",width:\"11\",height:\"11\",viewBox:\"0 0 11 11\"},u(\"path\",{d:\"M7.365 10.5l-.01-4.045h2.612L5.5.806l-4.467 5.65h2.604l.01 4.044h3.718z\",fillRule:\"evenodd\"})),u(\"span\",{className:\"uppy-Dashboard-poweredByUppy\"},\"Uppy\")),r=e(\"poweredBy\",{uppy:t});return u(\"a\",{tabIndex:\"-1\",href:\"https://uppy.io\",rel:\"noreferrer noopener\",target:\"_blank\",className:\"uppy-Dashboard-poweredBy\"},r)}render(){let{showNativePhotoCameraButton:e,showNativeVideoCameraButton:t,nativeCameraFacingMode:r}=this.props;return u(\"div\",{className:\"uppy-Dashboard-AddFiles\"},this.renderHiddenInput(!1,s=>{this.fileInput=s}),this.renderHiddenInput(!0,s=>{this.folderInput=s}),e&&this.renderHiddenCameraInput(\"photo\",r,s=>{this.mobilePhotoFileInput=s}),t&&this.renderHiddenCameraInput(\"video\",r,s=>{this.mobileVideoFileInput=s}),this.renderSourcesList(this.props.acquirers,this.props.disableLocalFiles),u(\"div\",{className:\"uppy-Dashboard-AddFiles-info\"},this.props.note&&u(\"div\",{className:\"uppy-Dashboard-note\"},this.props.note),this.props.proudlyDisplayPoweredByUppy&&this.renderPoweredByUppy(this.props)))}};n(Uu,\"AddFiles\");var ku=Uu;var dy=de(Qt(),1);var PS=n(i=>u(\"div\",{className:(0,dy.default)(\"uppy-Dashboard-AddFilesPanel\",i.className),\"data-uppy-panelType\":\"AddFiles\",\"aria-hidden\":!i.showAddFilesPanel},u(\"div\",{className:\"uppy-DashboardContent-bar\"},u(\"div\",{className:\"uppy-DashboardContent-title\",role:\"heading\",\"aria-level\":\"1\"},i.i18n(\"addingMoreFiles\")),u(\"button\",{className:\"uppy-DashboardContent-back\",type:\"button\",onClick:()=>i.toggleAddFilesPanel(!1)},i.i18n(\"back\"))),u(ku,i)),\"AddFilesPanel\"),cy=PS;var py=de(Qt(),1);function _S(i){let{tagName:e}=i.target;if(e===\"INPUT\"||e===\"TEXTAREA\"){i.stopPropagation();return}i.preventDefault(),i.stopPropagation()}n(_S,\"ignoreEvent\");var Vi=_S;function xS(i){let{activePickerPanel:e,className:t,hideAllPanels:r,i18n:s,state:o,uppy:a}=i;return u(\"div\",{className:(0,py.default)(\"uppy-DashboardContent-panel\",t),role:\"tabpanel\",\"data-uppy-panelType\":\"PickerPanel\",id:`uppy-DashboardContent-panel--${e.id}`,onDragOver:Vi,onDragLeave:Vi,onDrop:Vi,onPaste:Vi},u(\"div\",{className:\"uppy-DashboardContent-bar\"},u(\"div\",{className:\"uppy-DashboardContent-title\",role:\"heading\",\"aria-level\":\"1\"},s(\"importFrom\",{name:e.name})),u(\"button\",{className:\"uppy-DashboardContent-back\",type:\"button\",onClick:r},s(\"cancel\"))),u(\"div\",{className:\"uppy-DashboardContent-panelBody\"},a.getPlugin(e.id).render(o)))}n(xS,\"PickerPanelContent\");var fy=xS;var my=de(Qt(),1);function FS(i){let e=i.files[i.fileCardFor],t=n(()=>{i.uppy.emit(\"file-editor:cancel\",e),i.hideAllPanels()},\"handleCancel\");return u(\"div\",{className:(0,my.default)(\"uppy-DashboardContent-panel\",i.className),role:\"tabpanel\",\"data-uppy-panelType\":\"FileEditor\",id:\"uppy-DashboardContent-panel--editor\"},u(\"div\",{className:\"uppy-DashboardContent-bar\"},u(\"div\",{className:\"uppy-DashboardContent-title\",role:\"heading\",\"aria-level\":\"1\"},i.i18nArray(\"editing\",{file:u(\"span\",{className:\"uppy-DashboardContent-titleFile\"},e.meta?e.meta.name:e.name)})),u(\"button\",{className:\"uppy-DashboardContent-back\",type:\"button\",onClick:t},i.i18n(\"cancel\")),u(\"button\",{className:\"uppy-DashboardContent-save\",type:\"button\",onClick:i.saveFileEditor},i.i18n(\"save\"))),u(\"div\",{className:\"uppy-DashboardContent-panelBody\"},i.editors.map(r=>i.uppy.getPlugin(r.id).render(i.state))))}n(FS,\"EditorPanel\");var gy=FS;var Wi={STATE_ERROR:\"error\",STATE_WAITING:\"waiting\",STATE_PREPROCESSING:\"preprocessing\",STATE_UPLOADING:\"uploading\",STATE_POSTPROCESSING:\"postprocessing\",STATE_COMPLETE:\"complete\",STATE_PAUSED:\"paused\"};function ES(i,e,t,r){if(r===void 0&&(r={}),i)return Wi.STATE_ERROR;if(e)return Wi.STATE_COMPLETE;if(t)return Wi.STATE_PAUSED;let s=Wi.STATE_WAITING,o=Object.keys(r);for(let a=0;a<o.length;a++){let{progress:l}=r[o[a]];if(l.uploadStarted&&!l.uploadComplete)return Wi.STATE_UPLOADING;l.preprocess&&s!==Wi.STATE_UPLOADING&&(s=Wi.STATE_PREPROCESSING),l.postprocess&&s!==Wi.STATE_UPLOADING&&s!==Wi.STATE_PREPROCESSING&&(s=Wi.STATE_POSTPROCESSING)}return s}n(ES,\"getUploadingState\");function OS(i){let{files:e,i18n:t,isAllComplete:r,isAllErrored:s,isAllPaused:o,inProgressNotPausedFiles:a,newFiles:l,processingFiles:h}=i;switch(ES(s,r,o,e)){case\"uploading\":return t(\"uploadingXFiles\",{smart_count:a.length});case\"preprocessing\":case\"postprocessing\":return t(\"processingXFiles\",{smart_count:h.length});case\"paused\":return t(\"uploadPaused\");case\"waiting\":return t(\"xFilesSelected\",{smart_count:l.length});case\"complete\":return t(\"uploadComplete\");case\"error\":return t(\"error\");default:}}n(OS,\"UploadStatus\");function CS(i){let{i18n:e,isAllComplete:t,hideCancelButton:r,maxNumberOfFiles:s,toggleAddFilesPanel:o,uppy:a}=i,{allowNewUpload:l}=i;return l&&s&&(l=i.totalFileCount<i.maxNumberOfFiles),u(\"div\",{className:\"uppy-DashboardContent-bar\"},!t&&!r?u(\"button\",{className:\"uppy-DashboardContent-back\",type:\"button\",onClick:()=>a.cancelAll()},e(\"cancel\")):u(\"div\",null),u(\"div\",{className:\"uppy-DashboardContent-title\",role:\"heading\",\"aria-level\":\"1\"},u(OS,i)),l?u(\"button\",{className:\"uppy-DashboardContent-addMore\",type:\"button\",\"aria-label\":e(\"addMoreFiles\"),title:e(\"addMoreFiles\"),onClick:()=>o(!0)},u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\",width:\"15\",height:\"15\",viewBox:\"0 0 15 15\"},u(\"path\",{d:\"M8 6.5h6a.5.5 0 0 1 .5.5v.5a.5.5 0 0 1-.5.5H8v6a.5.5 0 0 1-.5.5H7a.5.5 0 0 1-.5-.5V8h-6a.5.5 0 0 1-.5-.5V7a.5.5 0 0 1 .5-.5h6v-6A.5.5 0 0 1 7 0h.5a.5.5 0 0 1 .5.5v6z\"})),u(\"span\",{className:\"uppy-DashboardContent-addMoreCaption\"},e(\"addMore\"))):u(\"div\",null))}n(CS,\"PanelTopBar\");var yy=CS;var vy=de(Qt(),1);function Dd(i){let{computedMetaFields:e,requiredMetaFields:t,updateMeta:r,form:s,formState:o}=i,a={text:\"uppy-u-reset uppy-c-textInput uppy-Dashboard-FileCard-input\"};return e.map(l=>{let h=`uppy-Dashboard-FileCard-input-${l.id}`,p=t.includes(l.id);return u(\"fieldset\",{key:l.id,className:\"uppy-Dashboard-FileCard-fieldset\"},u(\"label\",{className:\"uppy-Dashboard-FileCard-label\",htmlFor:h},l.name),l.render!==void 0?l.render({value:o[l.id],onChange:d=>r(d,l.id),fieldCSSClasses:a,required:p,form:s.id},u):u(\"input\",{className:a.text,id:h,form:s.id,type:l.type||\"text\",required:p,value:o[l.id],placeholder:l.placeholder,onInput:d=>r(d.target.value,l.id),\"data-uppy-super-focusable\":!0}))})}n(Dd,\"RenderMetaFields\");function Id(i){var e;let{files:t,fileCardFor:r,toggleFileCard:s,saveFileCard:o,metaFields:a,requiredMetaFields:l,openFileEditor:h,i18n:p,i18nArray:d,className:f,canEditFile:y}=i,b=n(()=>typeof a==\"function\"?a(t[r]):a,\"getMetaFields\"),S=t[r],E=(e=b())!=null?e:[],x=y(S),F={};E.forEach(K=>{var oe;F[K.id]=(oe=S.meta[K.id])!=null?oe:\"\"});let[U,j]=Ao(F),G=qn(K=>{K.preventDefault(),o(U,r)},[o,U,r]),J=n((K,oe)=>{j({...U,[oe]:K})},\"updateMeta\"),B=n(()=>{s(!1)},\"handleCancel\"),[z]=Ao(()=>{let K=document.createElement(\"form\");return K.setAttribute(\"tabindex\",\"-1\"),K.id=Pt(),K});return Os(()=>(document.body.appendChild(z),z.addEventListener(\"submit\",G),()=>{z.removeEventListener(\"submit\",G),document.body.removeChild(z)}),[z,G]),u(\"div\",{className:(0,vy.default)(\"uppy-Dashboard-FileCard\",f),\"data-uppy-panelType\":\"FileCard\",onDragOver:Vi,onDragLeave:Vi,onDrop:Vi,onPaste:Vi},u(\"div\",{className:\"uppy-DashboardContent-bar\"},u(\"div\",{className:\"uppy-DashboardContent-title\",role:\"heading\",\"aria-level\":\"1\"},d(\"editing\",{file:u(\"span\",{className:\"uppy-DashboardContent-titleFile\"},S.meta?S.meta.name:S.name)})),u(\"button\",{className:\"uppy-DashboardContent-back\",type:\"button\",form:z.id,title:p(\"finishEditingFile\"),onClick:B},p(\"cancel\"))),u(\"div\",{className:\"uppy-Dashboard-FileCard-inner\"},u(\"div\",{className:\"uppy-Dashboard-FileCard-preview\",style:{backgroundColor:Rs(S.type).color}},u(ma,{file:S}),x&&u(\"button\",{type:\"button\",className:\"uppy-u-reset uppy-c-btn uppy-Dashboard-FileCard-edit\",onClick:K=>{G(K),h(S)}},p(\"editFile\"))),u(\"div\",{className:\"uppy-Dashboard-FileCard-info\"},u(Dd,{computedMetaFields:E,requiredMetaFields:l,updateMeta:J,form:z,formState:U})),u(\"div\",{className:\"uppy-Dashboard-FileCard-actions\"},u(\"button\",{className:\"uppy-u-reset uppy-c-btn uppy-c-btn-primary uppy-Dashboard-FileCard-actionsBtn\",type:\"submit\",form:z.id},p(\"saveChanges\")),u(\"button\",{className:\"uppy-u-reset uppy-c-btn uppy-c-btn-link uppy-Dashboard-FileCard-actionsBtn\",type:\"button\",onClick:B,form:z.id},p(\"cancel\")))))}n(Id,\"FileCard\");var wy=de(Qt(),1);var $o=\"uppy-transition-slideDownUp\",by=250,Du=class extends we{constructor(e){super(e),this.state={cachedChildren:null,className:\"\"}}componentWillUpdate(e){let{cachedChildren:t}=this.state,r=ci(e.children)[0];if(t===r)return null;let s={cachedChildren:r};r&&!t&&(s.className=`${$o}-enter`,cancelAnimationFrame(this.animationFrame),clearTimeout(this.leaveTimeout),this.leaveTimeout=void 0,this.animationFrame=requestAnimationFrame(()=>{this.setState({className:`${$o}-enter ${$o}-enter-active`}),this.enterTimeout=setTimeout(()=>{this.setState({className:\"\"})},by)})),t&&!r&&this.leaveTimeout===void 0&&(s.cachedChildren=t,s.className=`${$o}-leave`,cancelAnimationFrame(this.animationFrame),clearTimeout(this.enterTimeout),this.enterTimeout=void 0,this.animationFrame=requestAnimationFrame(()=>{this.setState({className:`${$o}-leave ${$o}-leave-active`}),this.leaveTimeout=setTimeout(()=>{this.setState({cachedChildren:null,className:\"\"})},by)})),this.setState(s)}render(){let{cachedChildren:e,className:t}=this.state;return e?jl(e,{className:(0,wy.default)(t,e.props.className)}):null}};n(Du,\"Slide\");var ya=Du;function Us(){return Us=Object.assign?Object.assign.bind():function(i){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[r]=t[r])}return i},Us.apply(this,arguments)}n(Us,\"_extends\");var Sy=900,Py=700,Nd=576,_y=330;function Md(i){let e=i.totalFileCount===0,t=i.totalFileCount===1,r=i.containerWidth>Nd,s=i.containerHeight>_y,o=(0,xy.default)({\"uppy-Dashboard\":!0,\"uppy-Dashboard--isDisabled\":i.disabled,\"uppy-Dashboard--animateOpenClose\":i.animateOpenClose,\"uppy-Dashboard--isClosing\":i.isClosing,\"uppy-Dashboard--isDraggingOver\":i.isDraggingOver,\"uppy-Dashboard--modal\":!i.inline,\"uppy-size--md\":i.containerWidth>Nd,\"uppy-size--lg\":i.containerWidth>Py,\"uppy-size--xl\":i.containerWidth>Sy,\"uppy-size--height-md\":i.containerHeight>_y,\"uppy-Dashboard--isAddFilesPanelVisible\":i.showAddFilesPanel,\"uppy-Dashboard--isInnerWrapVisible\":i.areInsidesReadyToBeVisible,\"uppy-Dashboard--singleFile\":i.singleFileFullScreen&&t&&s}),a=1;i.containerWidth>Sy?a=5:i.containerWidth>Py?a=4:i.containerWidth>Nd&&(a=3);let l=i.showSelectedFiles&&!e,h=i.recoveredState?Object.keys(i.recoveredState.files).length:null,p=i.files?Object.keys(i.files).filter(y=>i.files[y].isGhost).length:null,d=n(()=>p>0?i.i18n(\"recoveredXFiles\",{smart_count:p}):i.i18n(\"recoveredAllFiles\"),\"renderRestoredText\");return u(\"div\",{className:o,\"data-uppy-theme\":i.theme,\"data-uppy-num-acquirers\":i.acquirers.length,\"data-uppy-drag-drop-supported\":!i.disableLocalFiles&&fa(),\"aria-hidden\":i.inline?\"false\":i.isHidden,\"aria-disabled\":i.disabled,\"aria-label\":i.inline?i.i18n(\"dashboardTitle\"):i.i18n(\"dashboardWindowTitle\"),onPaste:i.handlePaste,onDragOver:i.handleDragOver,onDragLeave:i.handleDragLeave,onDrop:i.handleDrop},u(\"div\",{\"aria-hidden\":\"true\",className:\"uppy-Dashboard-overlay\",tabIndex:-1,onClick:i.handleClickOutside}),u(\"div\",{className:\"uppy-Dashboard-inner\",\"aria-modal\":!i.inline&&\"true\",role:!i.inline&&\"dialog\",style:{width:i.inline&&i.width?i.width:\"\",height:i.inline&&i.height?i.height:\"\"}},i.inline?null:u(\"button\",{className:\"uppy-u-reset uppy-Dashboard-close\",type:\"button\",\"aria-label\":i.i18n(\"closeModal\"),title:i.i18n(\"closeModal\"),onClick:i.closeModal},u(\"span\",{\"aria-hidden\":\"true\"},\"\\xD7\")),u(\"div\",{className:\"uppy-Dashboard-innerWrap\"},u(\"div\",{className:\"uppy-Dashboard-dropFilesHereHint\"},i.i18n(\"dropHint\")),l&&u(yy,i),h&&u(\"div\",{className:\"uppy-Dashboard-serviceMsg\"},u(\"svg\",{className:\"uppy-Dashboard-serviceMsg-icon\",\"aria-hidden\":\"true\",focusable:\"false\",width:\"21\",height:\"16\",viewBox:\"0 0 24 19\"},u(\"g\",{transform:\"translate(0 -1)\",fill:\"none\",fillRule:\"evenodd\"},u(\"path\",{d:\"M12.857 1.43l10.234 17.056A1 1 0 0122.234 20H1.766a1 1 0 01-.857-1.514L11.143 1.429a1 1 0 011.714 0z\",fill:\"#FFD300\"}),u(\"path\",{fill:\"#000\",d:\"M11 6h2l-.3 8h-1.4z\"}),u(\"circle\",{fill:\"#000\",cx:\"12\",cy:\"17\",r:\"1\"}))),u(\"strong\",{className:\"uppy-Dashboard-serviceMsg-title\"},i.i18n(\"sessionRestored\")),u(\"div\",{className:\"uppy-Dashboard-serviceMsg-text\"},d())),l?u(uy,{id:i.id,error:i.error,i18n:i.i18n,uppy:i.uppy,files:i.files,acquirers:i.acquirers,resumableUploads:i.resumableUploads,hideRetryButton:i.hideRetryButton,hidePauseResumeButton:i.hidePauseResumeButton,hideCancelButton:i.hideCancelButton,showLinkToFileUploadResult:i.showLinkToFileUploadResult,showRemoveButtonAfterComplete:i.showRemoveButtonAfterComplete,isWide:i.isWide,metaFields:i.metaFields,toggleFileCard:i.toggleFileCard,handleRequestThumbnail:i.handleRequestThumbnail,handleCancelThumbnail:i.handleCancelThumbnail,recoveredState:i.recoveredState,individualCancellation:i.individualCancellation,openFileEditor:i.openFileEditor,canEditFile:i.canEditFile,toggleAddFilesPanel:i.toggleAddFilesPanel,isSingleFile:t,itemsPerRow:a}):u(ku,Us({},i,{isSizeMD:r})),u(ya,null,i.showAddFilesPanel?u(cy,Us({key:\"AddFiles\"},i,{isSizeMD:r})):null),u(ya,null,i.fileCardFor?u(Id,Us({key:\"FileCard\"},i)):null),u(ya,null,i.activePickerPanel?u(fy,Us({key:\"Picker\"},i)):null),u(ya,null,i.showFileEditor?u(gy,Us({key:\"Editor\"},i)):null),u(\"div\",{className:\"uppy-Dashboard-progressindicators\"},i.progressindicators.map(y=>i.uppy.getPlugin(y.id).render(i.state))))))}n(Md,\"Dashboard\");var Fy={strings:{closeModal:\"Close Modal\",addMoreFiles:\"Add more files\",addingMoreFiles:\"Adding more files\",importFrom:\"Import from %{name}\",dashboardWindowTitle:\"Uppy Dashboard Window (Press escape to close)\",dashboardTitle:\"Uppy Dashboard\",copyLinkToClipboardSuccess:\"Link copied to clipboard.\",copyLinkToClipboardFallback:\"Copy the URL below\",copyLink:\"Copy link\",back:\"Back\",removeFile:\"Remove file\",editFile:\"Edit file\",editing:\"Editing %{file}\",error:\"Error\",finishEditingFile:\"Finish editing file\",saveChanges:\"Save changes\",myDevice:\"My Device\",dropHint:\"Drop your files here\",uploadComplete:\"Upload complete\",uploadPaused:\"Upload paused\",resumeUpload:\"Resume upload\",pauseUpload:\"Pause upload\",retryUpload:\"Retry upload\",cancelUpload:\"Cancel upload\",xFilesSelected:{0:\"%{smart_count} file selected\",1:\"%{smart_count} files selected\"},uploadingXFiles:{0:\"Uploading %{smart_count} file\",1:\"Uploading %{smart_count} files\"},processingXFiles:{0:\"Processing %{smart_count} file\",1:\"Processing %{smart_count} files\"},poweredBy:\"Powered by %{uppy}\",addMore:\"Add more\",editFileWithFilename:\"Edit file %{file}\",save:\"Save\",cancel:\"Cancel\",dropPasteFiles:\"Drop files here or %{browseFiles}\",dropPasteFolders:\"Drop files here or %{browseFolders}\",dropPasteBoth:\"Drop files here, %{browseFiles} or %{browseFolders}\",dropPasteImportFiles:\"Drop files here, %{browseFiles} or import from:\",dropPasteImportFolders:\"Drop files here, %{browseFolders} or import from:\",dropPasteImportBoth:\"Drop files here, %{browseFiles}, %{browseFolders} or import from:\",importFiles:\"Import files from:\",browseFiles:\"browse files\",browseFolders:\"browse folders\",recoveredXFiles:{0:\"We could not fully recover 1 file. Please re-select it and resume the upload.\",1:\"We could not fully recover %{smart_count} files. Please re-select them and resume the upload.\"},recoveredAllFiles:\"We restored all files. You can now resume the upload.\",sessionRestored:\"Session restored\",reSelect:\"Re-select\",missingRequiredMetaFields:{0:\"Missing required meta field: %{fields}.\",1:\"Missing required meta fields: %{fields}.\"},takePictureBtn:\"Take Picture\",recordVideoBtn:\"Record Video\"}};function Ae(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(Ae,\"_classPrivateFieldLooseBase\");var TS=0;function Ci(i){return\"__private_\"+TS+++\"_\"+i}n(Ci,\"_classPrivateFieldLooseKey\");var AS={version:\"3.7.1\"},Ld=_d.default||_d,Ey=9,RS=27;function Oy(){let i={};return i.promise=new Promise((e,t)=>{i.resolve=e,i.reject=t}),i}n(Oy,\"createPromise\");var ks=Ci(\"disabledNodes\"),Tr=Ci(\"generateLargeThumbnailIfSingleFile\"),va=Ci(\"openFileEditorWhenFilesAdded\"),Ds=Ci(\"attachRenderFunctionToTarget\"),Bd=Ci(\"isTargetSupported\"),zd=Ci(\"getAcquirers\"),jd=Ci(\"getProgressIndicators\"),Ar=Ci(\"getEditors\"),Hd=Ci(\"addSpecifiedPluginsFromOptions\"),$d=Ci(\"autoDiscoverPlugins\"),Is=Ci(\"addSupportedPluginIfNoTarget\"),is=class extends Z{constructor(e,t){var r;super(e,t),r=this,Object.defineProperty(this,ks,{writable:!0,value:null}),this.removeTarget=o=>{let l=this.getPluginState().targets.filter(h=>h.id!==o.id);this.setPluginState({targets:l})},this.addTarget=o=>{let a=o.id||o.constructor.name,l=o.title||a,h=o.type;if(h!==\"acquirer\"&&h!==\"progressindicator\"&&h!==\"editor\"){let y=\"Dashboard: can only be targeted by plugins of types: acquirer, progressindicator, editor\";this.uppy.log(y,\"error\");return}let p={id:a,name:l,type:h},f=this.getPluginState().targets.slice();return f.push(p),this.setPluginState({targets:f}),this.el},this.hideAllPanels=()=>{let o=this.getPluginState(),a={activePickerPanel:!1,showAddFilesPanel:!1,activeOverlayType:null,fileCardFor:null,showFileEditor:!1};o.activePickerPanel===a.activePickerPanel&&o.showAddFilesPanel===a.showAddFilesPanel&&o.showFileEditor===a.showFileEditor&&o.activeOverlayType===a.activeOverlayType||(this.setPluginState(a),this.uppy.emit(\"dashboard:close-panel\",o.activePickerPanel.id))},this.showPanel=o=>{let{targets:a}=this.getPluginState(),l=a.filter(h=>h.type===\"acquirer\"&&h.id===o)[0];this.setPluginState({activePickerPanel:l,activeOverlayType:\"PickerPanel\"}),this.uppy.emit(\"dashboard:show-panel\",o)},this.canEditFile=o=>{let{targets:a}=this.getPluginState();return Ae(this,Ar)[Ar](a).some(h=>this.uppy.getPlugin(h.id).canEditFile(o))},this.openFileEditor=o=>{let{targets:a}=this.getPluginState(),l=Ae(this,Ar)[Ar](a);this.setPluginState({showFileEditor:!0,fileCardFor:o.id||null,activeOverlayType:\"FileEditor\"}),l.forEach(h=>{this.uppy.getPlugin(h.id).selectFile(o)})},this.saveFileEditor=()=>{let{targets:o}=this.getPluginState();Ae(this,Ar)[Ar](o).forEach(l=>{this.uppy.getPlugin(l.id).save()}),this.hideAllPanels()},this.openModal=()=>{let{promise:o,resolve:a}=Oy();if(this.savedScrollPosition=window.pageYOffset,this.savedActiveElement=document.activeElement,this.opts.disablePageScrollWhenModalOpen&&document.body.classList.add(\"uppy-Dashboard-isFixed\"),this.opts.animateOpenClose&&this.getPluginState().isClosing){let l=n(()=>{this.setPluginState({isHidden:!1}),this.el.removeEventListener(\"animationend\",l,!1),a()},\"handler\");this.el.addEventListener(\"animationend\",l,!1)}else this.setPluginState({isHidden:!1}),a();return this.opts.browserBackButtonClose&&this.updateBrowserHistory(),document.addEventListener(\"keydown\",this.handleKeyDownInModal),this.uppy.emit(\"dashboard:modal-open\"),o},this.closeModal=function(o){o===void 0&&(o={});let{manualClose:a=!0}=o,{isHidden:l,isClosing:h}=r.getPluginState();if(l||h)return;let{promise:p,resolve:d}=Oy();if(r.opts.disablePageScrollWhenModalOpen&&document.body.classList.remove(\"uppy-Dashboard-isFixed\"),r.opts.animateOpenClose){r.setPluginState({isClosing:!0});let y=n(()=>{r.setPluginState({isHidden:!0,isClosing:!1}),r.superFocus.cancel(),r.savedActiveElement.focus(),r.el.removeEventListener(\"animationend\",y,!1),d()},\"handler\");r.el.addEventListener(\"animationend\",y,!1)}else r.setPluginState({isHidden:!0}),r.superFocus.cancel(),r.savedActiveElement.focus(),d();if(document.removeEventListener(\"keydown\",r.handleKeyDownInModal),a&&r.opts.browserBackButtonClose){var f;(f=history.state)!=null&&f[r.modalName]&&history.back()}return r.uppy.emit(\"dashboard:modal-closed\"),p},this.isModalOpen=()=>!this.getPluginState().isHidden||!1,this.requestCloseModal=()=>this.opts.onRequestCloseModal?this.opts.onRequestCloseModal():this.closeModal(),this.setDarkModeCapability=o=>{let{capabilities:a}=this.uppy.getState();this.uppy.setState({capabilities:{...a,darkMode:o}})},this.handleSystemDarkModeChange=o=>{let a=o.matches;this.uppy.log(`[Dashboard] Dark mode is ${a?\"on\":\"off\"}`),this.setDarkModeCapability(a)},this.toggleFileCard=(o,a)=>{let l=this.uppy.getFile(a);o?this.uppy.emit(\"dashboard:file-edit-start\",l):this.uppy.emit(\"dashboard:file-edit-complete\",l),this.setPluginState({fileCardFor:o?a:null,activeOverlayType:o?\"FileCard\":null})},this.toggleAddFilesPanel=o=>{this.setPluginState({showAddFilesPanel:o,activeOverlayType:o?\"AddFiles\":null})},this.addFiles=o=>{let a=o.map(l=>({source:this.id,name:l.name,type:l.type,data:l,meta:{relativePath:l.relativePath||l.webkitRelativePath||null}}));try{this.uppy.addFiles(a)}catch(l){this.uppy.log(l)}},this.startListeningToResize=()=>{this.resizeObserver=new ResizeObserver(o=>{let a=o[0],{width:l,height:h}=a.contentRect;this.setPluginState({containerWidth:l,containerHeight:h,areInsidesReadyToBeVisible:!0})}),this.resizeObserver.observe(this.el.querySelector(\".uppy-Dashboard-inner\")),this.makeDashboardInsidesVisibleAnywayTimeout=setTimeout(()=>{let o=this.getPluginState(),a=!this.opts.inline&&o.isHidden;!o.areInsidesReadyToBeVisible&&!a&&(this.uppy.log(\"[Dashboard] resize event didn\\u2019t fire on time: defaulted to mobile layout\",\"warning\"),this.setPluginState({areInsidesReadyToBeVisible:!0}))},1e3)},this.stopListeningToResize=()=>{this.resizeObserver.disconnect(),clearTimeout(this.makeDashboardInsidesVisibleAnywayTimeout)},this.recordIfFocusedOnUppyRecently=o=>{this.el.contains(o.target)?this.ifFocusedOnUppyRecently=!0:(this.ifFocusedOnUppyRecently=!1,this.superFocus.cancel())},this.disableInteractiveElements=o=>{var a;let l=[\"a[href]\",\"input:not([disabled])\",\"select:not([disabled])\",\"textarea:not([disabled])\",\"button:not([disabled])\",'[role=\"button\"]:not([disabled])'],h=(a=Ae(this,ks)[ks])!=null?a:Qe(this.el.querySelectorAll(l)).filter(p=>!p.classList.contains(\"uppy-Dashboard-close\"));for(let p of h)p.tagName===\"A\"?p.setAttribute(\"aria-disabled\",o):p.disabled=o;o?Ae(this,ks)[ks]=h:Ae(this,ks)[ks]=null,this.dashboardIsDisabled=o},this.updateBrowserHistory=()=>{var o;(o=history.state)!=null&&o[this.modalName]||history.pushState({...history.state,[this.modalName]:!0},\"\"),window.addEventListener(\"popstate\",this.handlePopState,!1)},this.handlePopState=o=>{var a;this.isModalOpen()&&(!o.state||!o.state[this.modalName])&&this.closeModal({manualClose:!1}),!this.isModalOpen()&&(a=o.state)!=null&&a[this.modalName]&&history.back()},this.handleKeyDownInModal=o=>{o.keyCode===RS&&this.requestCloseModal(o),o.keyCode===Ey&&xd(o,this.getPluginState().activeOverlayType,this.el)},this.handleClickOutside=()=>{this.opts.closeModalOnClickOutside&&this.requestCloseModal()},this.handlePaste=o=>{this.uppy.iteratePlugins(l=>{l.type===\"acquirer\"&&(l.handleRootPaste==null||l.handleRootPaste(o))});let a=Qe(o.clipboardData.files);a.length>0&&(this.uppy.log(\"[Dashboard] Files pasted\"),this.addFiles(a))},this.handleInputChange=o=>{o.preventDefault();let a=Qe(o.target.files);a.length>0&&(this.uppy.log(\"[Dashboard] Files selected through input\"),this.addFiles(a))},this.handleDragOver=o=>{var a,l;o.preventDefault(),o.stopPropagation();let h=n(()=>{let y=!0;return this.uppy.iteratePlugins(b=>{b.canHandleRootDrop!=null&&b.canHandleRootDrop(o)&&(y=!0)}),y},\"canSomePluginHandleRootDrop\"),p=n(()=>{let{types:y}=o.dataTransfer;return y.some(b=>b===\"Files\")},\"doesEventHaveFiles\"),d=h(o),f=p(o);if(!d&&!f||this.opts.disabled||this.opts.disableLocalFiles&&(f||!d)||!this.uppy.getState().allowNewUpload){o.dataTransfer.dropEffect=\"none\",clearTimeout(this.removeDragOverClassTimeout);return}o.dataTransfer.dropEffect=\"copy\",clearTimeout(this.removeDragOverClassTimeout),this.setPluginState({isDraggingOver:!0}),(a=(l=this.opts).onDragOver)==null||a.call(l,o)},this.handleDragLeave=o=>{var a,l;o.preventDefault(),o.stopPropagation(),clearTimeout(this.removeDragOverClassTimeout),this.removeDragOverClassTimeout=setTimeout(()=>{this.setPluginState({isDraggingOver:!1})},50),(a=(l=this.opts).onDragLeave)==null||a.call(l,o)},this.handleDrop=async o=>{var a,l;o.preventDefault(),o.stopPropagation(),clearTimeout(this.removeDragOverClassTimeout),this.setPluginState({isDraggingOver:!1}),this.uppy.iteratePlugins(f=>{f.type===\"acquirer\"&&(f.handleRootDrop==null||f.handleRootDrop(o))});let h=!1,p=n(f=>{this.uppy.log(f,\"error\"),h||(this.uppy.info(f.message,\"error\"),h=!0)},\"logDropError\");this.uppy.log(\"[Dashboard] Processing dropped files\");let d=await As(o.dataTransfer,{logDropError:p});d.length>0&&(this.uppy.log(\"[Dashboard] Files dropped\"),this.addFiles(d)),(a=(l=this.opts).onDrop)==null||a.call(l,o)},this.handleRequestThumbnail=o=>{this.opts.waitForThumbnailsBeforeUpload||this.uppy.emit(\"thumbnail:request\",o)},this.handleCancelThumbnail=o=>{this.opts.waitForThumbnailsBeforeUpload||this.uppy.emit(\"thumbnail:cancel\",o)},this.handleKeyDownInInline=o=>{o.keyCode===Ey&&Zg(o,this.getPluginState().activeOverlayType,this.el)},this.handlePasteOnBody=o=>{this.el.contains(document.activeElement)&&this.handlePaste(o)},this.handleComplete=o=>{let{failed:a}=o;this.opts.closeAfterFinish&&a.length===0&&this.requestCloseModal()},this.handleCancelRestore=()=>{this.uppy.emit(\"restore-canceled\")},Object.defineProperty(this,Tr,{writable:!0,value:()=>{if(this.opts.disableThumbnailGenerator)return;let o=600,a=this.uppy.getFiles();if(a.length===1){let l=this.uppy.getPlugin(`${this.id}:ThumbnailGenerator`);l?.setOptions({thumbnailWidth:o});let h={...a[0],preview:void 0};l.requestThumbnail(h).then(()=>{l?.setOptions({thumbnailWidth:this.opts.thumbnailWidth})})}}}),Object.defineProperty(this,va,{writable:!0,value:o=>{let a=o[0];this.canEditFile(a)&&this.openFileEditor(a)}}),this.initEvents=()=>{if(this.opts.trigger&&!this.opts.inline){let o=Ou(this.opts.trigger);o?o.forEach(a=>a.addEventListener(\"click\",this.openModal)):this.uppy.log(\"Dashboard modal trigger not found. Make sure `trigger` is set in Dashboard options, unless you are planning to call `dashboard.openModal()` method yourself\",\"warning\")}this.startListeningToResize(),document.addEventListener(\"paste\",this.handlePasteOnBody),this.uppy.on(\"plugin-added\",Ae(this,Is)[Is]),this.uppy.on(\"plugin-remove\",this.removeTarget),this.uppy.on(\"file-added\",this.hideAllPanels),this.uppy.on(\"dashboard:modal-closed\",this.hideAllPanels),this.uppy.on(\"file-editor:complete\",this.hideAllPanels),this.uppy.on(\"complete\",this.handleComplete),this.uppy.on(\"files-added\",Ae(this,Tr)[Tr]),this.uppy.on(\"file-removed\",Ae(this,Tr)[Tr]),document.addEventListener(\"focus\",this.recordIfFocusedOnUppyRecently,!0),document.addEventListener(\"click\",this.recordIfFocusedOnUppyRecently,!0),this.opts.inline&&this.el.addEventListener(\"keydown\",this.handleKeyDownInInline),this.opts.autoOpenFileEditor&&this.uppy.on(\"files-added\",Ae(this,va)[va])},this.removeEvents=()=>{let o=Ou(this.opts.trigger);!this.opts.inline&&o&&o.forEach(a=>a.removeEventListener(\"click\",this.openModal)),this.stopListeningToResize(),document.removeEventListener(\"paste\",this.handlePasteOnBody),window.removeEventListener(\"popstate\",this.handlePopState,!1),this.uppy.off(\"plugin-added\",Ae(this,Is)[Is]),this.uppy.off(\"plugin-remove\",this.removeTarget),this.uppy.off(\"file-added\",this.hideAllPanels),this.uppy.off(\"dashboard:modal-closed\",this.hideAllPanels),this.uppy.off(\"file-editor:complete\",this.hideAllPanels),this.uppy.off(\"complete\",this.handleComplete),this.uppy.off(\"files-added\",Ae(this,Tr)[Tr]),this.uppy.off(\"file-removed\",Ae(this,Tr)[Tr]),document.removeEventListener(\"focus\",this.recordIfFocusedOnUppyRecently),document.removeEventListener(\"click\",this.recordIfFocusedOnUppyRecently),this.opts.inline&&this.el.removeEventListener(\"keydown\",this.handleKeyDownInInline),this.opts.autoOpenFileEditor&&this.uppy.off(\"files-added\",Ae(this,va)[va])},this.superFocusOnEachUpdate=()=>{let o=this.el.contains(document.activeElement),a=document.activeElement===document.body||document.activeElement===null,l=this.uppy.getState().info.length===0,h=!this.opts.inline;l&&(h||o||a&&this.ifFocusedOnUppyRecently)?this.superFocus(this.el,this.getPluginState().activeOverlayType):this.superFocus.cancel()},this.afterUpdate=()=>{if(this.opts.disabled&&!this.dashboardIsDisabled){this.disableInteractiveElements(!0);return}!this.opts.disabled&&this.dashboardIsDisabled&&this.disableInteractiveElements(!1),this.superFocusOnEachUpdate()},this.saveFileCard=(o,a)=>{this.uppy.setFileMeta(a,o),this.toggleFileCard(!1,a)},Object.defineProperty(this,Ds,{writable:!0,value:o=>{let a=this.uppy.getPlugin(o.id);return{...o,icon:a.icon||this.opts.defaultPickerIcon,render:a.render}}}),Object.defineProperty(this,Bd,{writable:!0,value:o=>{let a=this.uppy.getPlugin(o.id);return typeof a.isSupported!=\"function\"?!0:a.isSupported()}}),Object.defineProperty(this,zd,{writable:!0,value:Ld(o=>o.filter(a=>a.type===\"acquirer\"&&Ae(this,Bd)[Bd](a)).map(Ae(this,Ds)[Ds]))}),Object.defineProperty(this,jd,{writable:!0,value:Ld(o=>o.filter(a=>a.type===\"progressindicator\").map(Ae(this,Ds)[Ds]))}),Object.defineProperty(this,Ar,{writable:!0,value:Ld(o=>o.filter(a=>a.type===\"editor\").map(Ae(this,Ds)[Ds]))}),this.render=o=>{let a=this.getPluginState(),{files:l,capabilities:h,allowNewUpload:p}=o,{newFiles:d,uploadStartedFiles:f,completeFiles:y,erroredFiles:b,inProgressFiles:S,inProgressNotPausedFiles:E,processingFiles:x,isUploadStarted:F,isAllComplete:U,isAllErrored:j,isAllPaused:G}=this.uppy.getObjectOfFilesPerState(),J=Ae(this,zd)[zd](a.targets),B=Ae(this,jd)[jd](a.targets),z=Ae(this,Ar)[Ar](a.targets),K;return this.opts.theme===\"auto\"?K=h.darkMode?\"dark\":\"light\":K=this.opts.theme,[\"files\",\"folders\",\"both\"].indexOf(this.opts.fileManagerSelectionType)<0&&(this.opts.fileManagerSelectionType=\"files\",console.warn(`Unsupported option for \"fileManagerSelectionType\". Using default of \"${this.opts.fileManagerSelectionType}\".`)),Md({state:o,isHidden:a.isHidden,files:l,newFiles:d,uploadStartedFiles:f,completeFiles:y,erroredFiles:b,inProgressFiles:S,inProgressNotPausedFiles:E,processingFiles:x,isUploadStarted:F,isAllComplete:U,isAllErrored:j,isAllPaused:G,totalFileCount:Object.keys(l).length,totalProgress:o.totalProgress,allowNewUpload:p,acquirers:J,theme:K,disabled:this.opts.disabled,disableLocalFiles:this.opts.disableLocalFiles,direction:this.opts.direction,activePickerPanel:a.activePickerPanel,showFileEditor:a.showFileEditor,saveFileEditor:this.saveFileEditor,disableInteractiveElements:this.disableInteractiveElements,animateOpenClose:this.opts.animateOpenClose,isClosing:a.isClosing,progressindicators:B,editors:z,autoProceed:this.uppy.opts.autoProceed,id:this.id,closeModal:this.requestCloseModal,handleClickOutside:this.handleClickOutside,handleInputChange:this.handleInputChange,handlePaste:this.handlePaste,inline:this.opts.inline,showPanel:this.showPanel,hideAllPanels:this.hideAllPanels,i18n:this.i18n,i18nArray:this.i18nArray,uppy:this.uppy,note:this.opts.note,recoveredState:o.recoveredState,metaFields:a.metaFields,resumableUploads:h.resumableUploads||!1,individualCancellation:h.individualCancellation,isMobileDevice:h.isMobileDevice,fileCardFor:a.fileCardFor,toggleFileCard:this.toggleFileCard,toggleAddFilesPanel:this.toggleAddFilesPanel,showAddFilesPanel:a.showAddFilesPanel,saveFileCard:this.saveFileCard,openFileEditor:this.openFileEditor,canEditFile:this.canEditFile,width:this.opts.width,height:this.opts.height,showLinkToFileUploadResult:this.opts.showLinkToFileUploadResult,fileManagerSelectionType:this.opts.fileManagerSelectionType,proudlyDisplayPoweredByUppy:this.opts.proudlyDisplayPoweredByUppy,hideCancelButton:this.opts.hideCancelButton,hideRetryButton:this.opts.hideRetryButton,hidePauseResumeButton:this.opts.hidePauseResumeButton,showRemoveButtonAfterComplete:this.opts.showRemoveButtonAfterComplete,containerWidth:a.containerWidth,containerHeight:a.containerHeight,areInsidesReadyToBeVisible:a.areInsidesReadyToBeVisible,isTargetDOMEl:this.isTargetDOMEl,parentElement:this.el,allowedFileTypes:this.uppy.opts.restrictions.allowedFileTypes,maxNumberOfFiles:this.uppy.opts.restrictions.maxNumberOfFiles,requiredMetaFields:this.uppy.opts.restrictions.requiredMetaFields,showSelectedFiles:this.opts.showSelectedFiles,showNativePhotoCameraButton:this.opts.showNativePhotoCameraButton,showNativeVideoCameraButton:this.opts.showNativeVideoCameraButton,nativeCameraFacingMode:this.opts.nativeCameraFacingMode,singleFileFullScreen:this.opts.singleFileFullScreen,handleCancelRestore:this.handleCancelRestore,handleRequestThumbnail:this.handleRequestThumbnail,handleCancelThumbnail:this.handleCancelThumbnail,isDraggingOver:a.isDraggingOver,handleDragOver:this.handleDragOver,handleDragLeave:this.handleDragLeave,handleDrop:this.handleDrop})},Object.defineProperty(this,Hd,{writable:!0,value:()=>{(this.opts.plugins||[]).forEach(a=>{let l=this.uppy.getPlugin(a);l?l.mount(this,l):this.uppy.log(`[Uppy] Dashboard could not find plugin '${a}', make sure to uppy.use() the plugins you are specifying`,\"warning\")})}}),Object.defineProperty(this,$d,{writable:!0,value:()=>{this.uppy.iteratePlugins(Ae(this,Is)[Is])}}),Object.defineProperty(this,Is,{writable:!0,value:o=>{var a;let l=[\"acquirer\",\"editor\"];o&&!((a=o.opts)!=null&&a.target)&&l.includes(o.type)&&(this.getPluginState().targets.some(p=>o.id===p.id)||o.mount(this,o))}}),this.install=()=>{this.setPluginState({isHidden:!0,fileCardFor:null,activeOverlayType:null,showAddFilesPanel:!1,activePickerPanel:!1,showFileEditor:!1,metaFields:this.opts.metaFields,targets:[],areInsidesReadyToBeVisible:!1,isDraggingOver:!1});let{inline:o,closeAfterFinish:a}=this.opts;if(o&&a)throw new Error(\"[Dashboard] `closeAfterFinish: true` cannot be used on an inline Dashboard, because an inline Dashboard cannot be closed at all. Either set `inline: false`, or disable the `closeAfterFinish` option.\");let{allowMultipleUploads:l,allowMultipleUploadBatches:h}=this.uppy.opts;(l||h)&&a&&this.uppy.log(\"[Dashboard] When using `closeAfterFinish`, we recommended setting the `allowMultipleUploadBatches` option to `false` in the Uppy constructor. See https://uppy.io/docs/uppy/#allowMultipleUploads-true\",\"warning\");let{target:p}=this.opts;p&&this.mount(p,this),this.opts.disableStatusBar||this.uppy.use($i,{id:`${this.id}:StatusBar`,target:this,hideUploadButton:this.opts.hideUploadButton,hideRetryButton:this.opts.hideRetryButton,hidePauseResumeButton:this.opts.hidePauseResumeButton,hideCancelButton:this.opts.hideCancelButton,showProgressDetails:this.opts.showProgressDetails,hideAfterFinish:this.opts.hideProgressAfterFinish,locale:this.opts.locale,doneButtonHandler:this.opts.doneButtonHandler}),this.opts.disableInformer||this.uppy.use(qi,{id:`${this.id}:Informer`,target:this}),this.opts.disableThumbnailGenerator||this.uppy.use(Cr,{id:`${this.id}:ThumbnailGenerator`,thumbnailWidth:this.opts.thumbnailWidth,thumbnailHeight:this.opts.thumbnailHeight,thumbnailType:this.opts.thumbnailType,waitForThumbnailsBeforeUpload:this.opts.waitForThumbnailsBeforeUpload,lazy:!this.opts.waitForThumbnailsBeforeUpload}),this.darkModeMediaQuery=typeof window<\"u\"&&window.matchMedia?window.matchMedia(\"(prefers-color-scheme: dark)\"):null;let d=this.darkModeMediaQuery?this.darkModeMediaQuery.matches:!1;this.uppy.log(`[Dashboard] Dark mode is ${d?\"on\":\"off\"}`),this.setDarkModeCapability(d),this.opts.theme===\"auto\"&&this.darkModeMediaQuery.addListener(this.handleSystemDarkModeChange),Ae(this,Hd)[Hd](),Ae(this,$d)[$d](),this.initEvents()},this.uninstall=()=>{if(!this.opts.disableInformer){let a=this.uppy.getPlugin(`${this.id}:Informer`);a&&this.uppy.removePlugin(a)}if(!this.opts.disableStatusBar){let a=this.uppy.getPlugin(`${this.id}:StatusBar`);a&&this.uppy.removePlugin(a)}if(!this.opts.disableThumbnailGenerator){let a=this.uppy.getPlugin(`${this.id}:ThumbnailGenerator`);a&&this.uppy.removePlugin(a)}(this.opts.plugins||[]).forEach(a=>{let l=this.uppy.getPlugin(a);l&&l.unmount()}),this.opts.theme===\"auto\"&&this.darkModeMediaQuery.removeListener(this.handleSystemDarkModeChange),this.opts.disablePageScrollWhenModalOpen&&document.body.classList.remove(\"uppy-Dashboard-isFixed\"),this.unmount(),this.removeEvents()},this.id=this.opts.id||\"Dashboard\",this.title=\"Dashboard\",this.type=\"orchestrator\",this.modalName=`uppy-Dashboard-${Pt()}`,this.defaultLocale=Fy;let s={target:\"body\",metaFields:[],trigger:null,inline:!1,width:750,height:550,thumbnailWidth:280,thumbnailType:\"image/jpeg\",waitForThumbnailsBeforeUpload:!1,defaultPickerIcon:ko,showLinkToFileUploadResult:!1,showProgressDetails:!1,hideUploadButton:!1,hideCancelButton:!1,hideRetryButton:!1,hidePauseResumeButton:!1,hideProgressAfterFinish:!1,doneButtonHandler:()=>{this.uppy.clearUploadedFiles(),this.requestCloseModal()},note:null,closeModalOnClickOutside:!1,closeAfterFinish:!1,singleFileFullScreen:!0,disableStatusBar:!1,disableInformer:!1,disableThumbnailGenerator:!1,disablePageScrollWhenModalOpen:!0,animateOpenClose:!0,fileManagerSelectionType:\"files\",proudlyDisplayPoweredByUppy:!0,onRequestCloseModal:()=>this.closeModal(),showSelectedFiles:!0,showRemoveButtonAfterComplete:!1,browserBackButtonClose:!1,showNativePhotoCameraButton:!1,showNativeVideoCameraButton:!1,theme:\"light\",autoOpenFileEditor:!1,disabled:!1,disableLocalFiles:!1};this.opts={...s,...t},this.i18nInit(),this.superFocus=Fd(),this.ifFocusedOnUppyRecently=!1,this.makeDashboardInsidesVisibleAnywayTimeout=null,this.removeDragOverClassTimeout=null}};n(is,\"Dashboard\");is.VERSION=AS.version;var Cy={strings:{dropHereOr:\"Drop here or %{browse}\",browse:\"browse\"}};var US={version:\"3.0.3\"},Gi=class extends Z{constructor(e,t){super(e,t),this.handleDrop=async s=>{var o,a;s.preventDefault(),s.stopPropagation(),clearTimeout(this.removeDragOverClassTimeout),this.setPluginState({isDraggingOver:!1});let l=n(p=>{this.uppy.log(p,\"error\")},\"logDropError\"),h=await As(s.dataTransfer,{logDropError:l});h.length>0&&(this.uppy.log(\"[DragDrop] Files dropped\"),this.addFiles(h)),(o=(a=this.opts).onDrop)==null||o.call(a,s)},this.type=\"acquirer\",this.id=this.opts.id||\"DragDrop\",this.title=\"Drag & Drop\",this.defaultLocale=Cy;let r={target:null,inputName:\"files[]\",width:\"100%\",height:\"100%\",note:null};this.opts={...r,...t},this.i18nInit(),this.isDragDropSupported=fa(),this.removeDragOverClassTimeout=null,this.onInputChange=this.onInputChange.bind(this),this.handleDragOver=this.handleDragOver.bind(this),this.handleDragLeave=this.handleDragLeave.bind(this),this.handleDrop=this.handleDrop.bind(this),this.addFiles=this.addFiles.bind(this),this.render=this.render.bind(this)}addFiles(e){let t=e.map(r=>({source:this.id,name:r.name,type:r.type,data:r,meta:{relativePath:r.relativePath||null}}));try{this.uppy.addFiles(t)}catch(r){this.uppy.log(r)}}onInputChange(e){let t=Qe(e.target.files);t.length>0&&(this.uppy.log(\"[DragDrop] Files selected through input\"),this.addFiles(t)),e.target.value=null}handleDragOver(e){var t,r;e.preventDefault(),e.stopPropagation();let{types:s}=e.dataTransfer,o=s.some(l=>l===\"Files\"),{allowNewUpload:a}=this.uppy.getState();if(!o||!a){e.dataTransfer.dropEffect=\"none\",clearTimeout(this.removeDragOverClassTimeout);return}e.dataTransfer.dropEffect=\"copy\",clearTimeout(this.removeDragOverClassTimeout),this.setPluginState({isDraggingOver:!0}),(t=(r=this.opts).onDragOver)==null||t.call(r,e)}handleDragLeave(e){var t,r;e.preventDefault(),e.stopPropagation(),clearTimeout(this.removeDragOverClassTimeout),this.removeDragOverClassTimeout=setTimeout(()=>{this.setPluginState({isDraggingOver:!1})},50),(t=(r=this.opts).onDragLeave)==null||t.call(r,e)}renderHiddenFileInput(){let{restrictions:e}=this.uppy.opts;return u(\"input\",{className:\"uppy-DragDrop-input\",type:\"file\",hidden:!0,ref:t=>{this.fileInputRef=t},name:this.opts.inputName,multiple:e.maxNumberOfFiles!==1,accept:e.allowedFileTypes,onChange:this.onInputChange})}static renderArrowSvg(){return u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon uppy-DragDrop-arrow\",width:\"16\",height:\"16\",viewBox:\"0 0 16 16\"},u(\"path\",{d:\"M11 10V0H5v10H2l6 6 6-6h-3zm0 0\",fillRule:\"evenodd\"}))}renderLabel(){return u(\"div\",{className:\"uppy-DragDrop-label\"},this.i18nArray(\"dropHereOr\",{browse:u(\"span\",{className:\"uppy-DragDrop-browse\"},this.i18n(\"browse\"))}))}renderNote(){return u(\"span\",{className:\"uppy-DragDrop-note\"},this.opts.note)}render(){let e=`uppy-u-reset\n      uppy-DragDrop-container\n      ${this.isDragDropSupported?\"uppy-DragDrop--isDragDropSupported\":\"\"}\n      ${this.getPluginState().isDraggingOver?\"uppy-DragDrop--isDraggingOver\":\"\"}\n    `,t={width:this.opts.width,height:this.opts.height};return u(\"button\",{type:\"button\",className:e,style:t,onClick:()=>this.fileInputRef.click(),onDragOver:this.handleDragOver,onDragLeave:this.handleDragLeave,onDrop:this.handleDrop},this.renderHiddenFileInput(),u(\"div\",{className:\"uppy-DragDrop-inner\"},Gi.renderArrowSvg(),this.renderLabel(),this.renderNote()))}install(){let{target:e}=this.opts;this.setPluginState({isDraggingOver:!1}),e&&this.mount(e,this)}uninstall(){this.unmount()}};n(Gi,\"DragDrop\");Gi.VERSION=US.version;var kS={version:\"2.0.2\"};function qd(i){var e,t;return(e=(t=i.dataTransfer.types)==null?void 0:t.some(r=>r===\"Files\"))!=null?e:!1}n(qd,\"isFileTransfer\");var Ns=class extends ve{constructor(e,t){super(e,t),this.addFiles=s=>{let o=s.map(a=>({source:this.id,name:a.name,type:a.type,data:a,meta:{relativePath:a.relativePath||null}}));try{this.uppy.addFiles(o)}catch(a){this.uppy.log(a)}},this.handleDrop=async s=>{var o,a;if(!qd(s))return;s.preventDefault(),s.stopPropagation(),clearTimeout(this.removeDragOverClassTimeout),s.currentTarget.classList.remove(\"uppy-is-drag-over\"),this.setPluginState({isDraggingOver:!1}),this.uppy.iteratePlugins(d=>{d.type===\"acquirer\"&&(d.handleRootDrop==null||d.handleRootDrop(s))});let l=!1,h=n(d=>{this.uppy.log(d,\"error\"),l||(this.uppy.info(d.message,\"error\"),l=!0)},\"logDropError\"),p=await As(s.dataTransfer,{logDropError:h});p.length>0&&(this.uppy.log(\"[DropTarget] Files were dropped\"),this.addFiles(p)),(o=(a=this.opts).onDrop)==null||o.call(a,s)},this.handleDragOver=s=>{var o,a;qd(s)&&(s.preventDefault(),s.stopPropagation(),s.dataTransfer.dropEffect=\"copy\",clearTimeout(this.removeDragOverClassTimeout),s.currentTarget.classList.add(\"uppy-is-drag-over\"),this.setPluginState({isDraggingOver:!0}),(o=(a=this.opts).onDragOver)==null||o.call(a,s))},this.handleDragLeave=s=>{var o,a;if(!qd(s))return;s.preventDefault(),s.stopPropagation();let{currentTarget:l}=s;clearTimeout(this.removeDragOverClassTimeout),this.removeDragOverClassTimeout=setTimeout(()=>{l.classList.remove(\"uppy-is-drag-over\"),this.setPluginState({isDraggingOver:!1})},50),(o=(a=this.opts).onDragLeave)==null||o.call(a,s)},this.addListeners=()=>{let{target:s}=this.opts;if(s instanceof Element?this.nodes=[s]:typeof s==\"string\"&&(this.nodes=Qe(document.querySelectorAll(s))),!this.nodes&&!this.nodes.length>0)throw new Error(`\"${s}\" does not match any HTML elements`);this.nodes.forEach(o=>{o.addEventListener(\"dragover\",this.handleDragOver,!1),o.addEventListener(\"dragleave\",this.handleDragLeave,!1),o.addEventListener(\"drop\",this.handleDrop,!1)})},this.removeListeners=()=>{this.nodes&&this.nodes.forEach(s=>{s.removeEventListener(\"dragover\",this.handleDragOver,!1),s.removeEventListener(\"dragleave\",this.handleDragLeave,!1),s.removeEventListener(\"drop\",this.handleDrop,!1)})},this.type=\"acquirer\",this.id=this.opts.id||\"DropTarget\",this.title=\"Drop Target\";let r={target:null};this.opts={...r,...t},this.removeDragOverClassTimeout=null}install(){this.setPluginState({isDraggingOver:!1}),this.addListeners()}uninstall(){this.removeListeners()}};n(Ns,\"DropTarget\");Ns.VERSION=kS.version;var Ty={strings:{chooseFiles:\"Choose files\"}};var DS={version:\"3.0.4\"},rs=class extends Z{constructor(e,t){super(e,t),this.id=this.opts.id||\"FileInput\",this.title=\"File Input\",this.type=\"acquirer\",this.defaultLocale=Ty;let r={target:null,pretty:!0,inputName:\"files[]\"};this.opts={...r,...t},this.i18nInit(),this.render=this.render.bind(this),this.handleInputChange=this.handleInputChange.bind(this),this.handleClick=this.handleClick.bind(this)}addFiles(e){let t=e.map(r=>({source:this.id,name:r.name,type:r.type,data:r}));try{this.uppy.addFiles(t)}catch(r){this.uppy.log(r)}}handleInputChange(e){this.uppy.log(\"[FileInput] Something selected through input...\");let t=Qe(e.target.files);this.addFiles(t),e.target.value=null}handleClick(){this.input.click()}render(){let e={width:\"0.1px\",height:\"0.1px\",opacity:0,overflow:\"hidden\",position:\"absolute\",zIndex:-1},{restrictions:t}=this.uppy.opts,r=t.allowedFileTypes?t.allowedFileTypes.join(\",\"):null;return u(\"div\",{className:\"uppy-FileInput-container\"},u(\"input\",{className:\"uppy-FileInput-input\",style:this.opts.pretty&&e,type:\"file\",name:this.opts.inputName,onChange:this.handleInputChange,multiple:t.maxNumberOfFiles!==1,accept:r,ref:s=>{this.input=s}}),this.opts.pretty&&u(\"button\",{className:\"uppy-FileInput-btn\",type:\"button\",onClick:this.handleClick},this.i18n(\"chooseFiles\")))}install(){let{target:e}=this.opts;e&&this.mount(e,this)}uninstall(){this.unmount()}};n(rs,\"FileInput\");rs.VERSION=DS.version;var Iy=de(Ay(),1);function IS(i,e){let t=i.width/e.width,r=i.height/e.height,s=Math.min(t,r),o=e.width*s,a=e.height*s,l=(i.width-o)/2,h=(i.height-a)/2;return{width:o,height:a,left:l,top:h}}n(IS,\"getCanvasDataThatFitsPerfectlyIntoContainer\");var Ry=IS;function NS(i){return i*(Math.PI/180)}n(NS,\"toRadians\");function MS(i,e,t){let r=Math.abs(NS(t));return Math.max((Math.sin(r)*i+Math.cos(r)*e)/e,(Math.sin(r)*e+Math.cos(r)*i)/i)}n(MS,\"getScaleFactorThatRemovesDarkCorners\");var Uy=MS;function LS(i,e,t){return e.left<i.left?{left:i.left,width:t.width}:e.top<i.top?{top:i.top,height:t.height}:e.left+e.width>i.left+i.width?{left:i.left+i.width-t.width,width:t.width}:e.top+e.height>i.top+i.height?{top:i.top+i.height-t.height,height:t.height}:null}n(LS,\"limitCropboxMovementOnMove\");var ky=LS;function BS(i,e,t){return e.left<i.left?{left:i.left,width:t.left+t.width-i.left}:e.top<i.top?{top:i.top,height:t.top+t.height-i.top}:e.left+e.width>i.left+i.width?{left:t.left,width:i.left+i.width-t.left}:e.top+e.height>i.top+i.height?{top:t.top,height:i.top+i.height-t.top}:null}n(BS,\"limitCropboxMovementOnResize\");var Dy=BS;var qo=class extends we{constructor(e){super(e),this.onRotate90Deg=()=>{let{angle90Deg:t}=this.state,r=t-90;this.setState({angle90Deg:r,angleGranular:0}),this.cropper.scale(1),this.cropper.rotateTo(r);let s=this.cropper.getCanvasData(),o=this.cropper.getContainerData(),a=Ry(o,s);this.cropper.setCanvasData(a),this.cropper.setCropBoxData(a)},this.onRotateGranular=t=>{let r=Number(t.target.value);this.setState({angleGranular:r});let{angle90Deg:s}=this.state,o=s+r;this.cropper.rotateTo(o);let a=this.cropper.getImageData(),l=Uy(a.naturalWidth,a.naturalHeight,r),h=this.cropper.getImageData().scaleX<0?-l:l;this.cropper.scale(h,l)},this.state={angle90Deg:0,angleGranular:0,prevCropboxData:null},this.storePrevCropboxData=this.storePrevCropboxData.bind(this),this.limitCropboxMovement=this.limitCropboxMovement.bind(this)}componentDidMount(){let{opts:e,storeCropperInstance:t}=this.props;this.cropper=new Iy.default(this.imgElement,e.cropperOptions),this.imgElement.addEventListener(\"cropstart\",this.storePrevCropboxData),this.imgElement.addEventListener(\"cropend\",this.limitCropboxMovement),t(this.cropper)}componentWillUnmount(){this.cropper.destroy(),this.imgElement.removeEventListener(\"cropstart\",this.storePrevCropboxData),this.imgElement.removeEventListener(\"cropend\",this.limitCropboxMovement)}storePrevCropboxData(){this.setState({prevCropboxData:this.cropper.getCropBoxData()})}limitCropboxMovement(e){let t=this.cropper.getCanvasData(),r=this.cropper.getCropBoxData(),{prevCropboxData:s}=this.state;if(e.detail.action===\"all\"){let o=ky(t,r,s);o&&this.cropper.setCropBoxData(o)}else{let o=Dy(t,r,s);o&&this.cropper.setCropBoxData(o)}}renderGranularRotate(){let{i18n:e}=this.props,{angleGranular:t}=this.state;return u(\"label\",{role:\"tooltip\",\"aria-label\":`${t}\\xBA`,\"data-microtip-position\":\"top\",className:\"uppy-ImageCropper-rangeWrapper\"},u(\"input\",{className:\"uppy-ImageCropper-range uppy-u-reset\",type:\"range\",onInput:this.onRotateGranular,onChange:this.onRotateGranular,value:t,min:\"-45\",max:\"45\",\"aria-label\":e(\"rotate\")}))}renderRevert(){let{i18n:e}=this.props;return u(\"label\",{role:\"tooltip\",\"aria-label\":e(\"revert\"),\"data-microtip-position\":\"top\"},u(\"button\",{type:\"button\",className:\"uppy-u-reset uppy-c-btn\",onClick:()=>{this.cropper.reset(),this.cropper.setAspectRatio(0),this.setState({angle90Deg:0,angleGranular:0})}},u(\"svg\",{\"aria-hidden\":\"true\",className:\"uppy-c-icon\",width:\"24\",height:\"24\",viewBox:\"0 0 24 24\"},u(\"path\",{d:\"M0 0h24v24H0z\",fill:\"none\"}),u(\"path\",{d:\"M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9zm-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8H12z\"}))))}renderRotate(){let{i18n:e}=this.props;return u(\"label\",{role:\"tooltip\",\"aria-label\":e(\"rotate\"),\"data-microtip-position\":\"top\"},u(\"button\",{type:\"button\",className:\"uppy-u-reset uppy-c-btn\",onClick:this.onRotate90Deg},u(\"svg\",{\"aria-hidden\":\"true\",className:\"uppy-c-icon\",width:\"24\",height:\"24\",viewBox:\"0 0 24 24\"},u(\"path\",{d:\"M0 0h24v24H0V0zm0 0h24v24H0V0z\",fill:\"none\"}),u(\"path\",{d:\"M14 10a2 2 0 012 2v7a2 2 0 01-2 2H6a2 2 0 01-2-2v-7a2 2 0 012-2h8zm0 1.75H6a.25.25 0 00-.243.193L5.75 12v7a.25.25 0 00.193.243L6 19.25h8a.25.25 0 00.243-.193L14.25 19v-7a.25.25 0 00-.193-.243L14 11.75zM12 .76V4c2.3 0 4.61.88 6.36 2.64a8.95 8.95 0 012.634 6.025L21 13a1 1 0 01-1.993.117L19 13h-.003a6.979 6.979 0 00-2.047-4.95 6.97 6.97 0 00-4.652-2.044L12 6v3.24L7.76 5 12 .76z\"}))))}renderFlip(){let{i18n:e}=this.props;return u(\"label\",{role:\"tooltip\",\"aria-label\":e(\"flipHorizontal\"),\"data-microtip-position\":\"top\"},u(\"button\",{type:\"button\",className:\"uppy-u-reset uppy-c-btn\",onClick:()=>this.cropper.scaleX(-this.cropper.getData().scaleX||-1)},u(\"svg\",{\"aria-hidden\":\"true\",className:\"uppy-c-icon\",width:\"24\",height:\"24\",viewBox:\"0 0 24 24\"},u(\"path\",{d:\"M0 0h24v24H0z\",fill:\"none\"}),u(\"path\",{d:\"M15 21h2v-2h-2v2zm4-12h2V7h-2v2zM3 5v14c0 1.1.9 2 2 2h4v-2H5V5h4V3H5c-1.1 0-2 .9-2 2zm16-2v2h2c0-1.1-.9-2-2-2zm-8 20h2V1h-2v22zm8-6h2v-2h-2v2zM15 5h2V3h-2v2zm4 8h2v-2h-2v2zm0 8c1.1 0 2-.9 2-2h-2v2z\"}))))}renderZoomIn(){let{i18n:e}=this.props;return u(\"label\",{role:\"tooltip\",\"aria-label\":e(\"zoomIn\"),\"data-microtip-position\":\"top\"},u(\"button\",{type:\"button\",className:\"uppy-u-reset uppy-c-btn\",onClick:()=>this.cropper.zoom(.1)},u(\"svg\",{\"aria-hidden\":\"true\",className:\"uppy-c-icon\",height:\"24\",viewBox:\"0 0 24 24\",width:\"24\"},u(\"path\",{d:\"M0 0h24v24H0V0z\",fill:\"none\"}),u(\"path\",{d:\"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\"}),u(\"path\",{d:\"M12 10h-2v2H9v-2H7V9h2V7h1v2h2v1z\"}))))}renderZoomOut(){let{i18n:e}=this.props;return u(\"label\",{role:\"tooltip\",\"aria-label\":e(\"zoomOut\"),\"data-microtip-position\":\"top\"},u(\"button\",{type:\"button\",className:\"uppy-u-reset uppy-c-btn\",onClick:()=>this.cropper.zoom(-.1)},u(\"svg\",{\"aria-hidden\":\"true\",className:\"uppy-c-icon\",width:\"24\",height:\"24\",viewBox:\"0 0 24 24\"},u(\"path\",{d:\"M0 0h24v24H0V0z\",fill:\"none\"}),u(\"path\",{d:\"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14zM7 9h5v1H7z\"}))))}renderCropSquare(){let{i18n:e}=this.props;return u(\"label\",{role:\"tooltip\",\"aria-label\":e(\"aspectRatioSquare\"),\"data-microtip-position\":\"top\"},u(\"button\",{type:\"button\",className:\"uppy-u-reset uppy-c-btn\",onClick:()=>this.cropper.setAspectRatio(1)},u(\"svg\",{\"aria-hidden\":\"true\",className:\"uppy-c-icon\",width:\"24\",height:\"24\",viewBox:\"0 0 24 24\"},u(\"path\",{d:\"M0 0h24v24H0z\",fill:\"none\"}),u(\"path\",{d:\"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z\"}))))}renderCropWidescreen(){let{i18n:e}=this.props;return u(\"label\",{role:\"tooltip\",\"aria-label\":e(\"aspectRatioLandscape\"),\"data-microtip-position\":\"top\"},u(\"button\",{type:\"button\",className:\"uppy-u-reset uppy-c-btn\",onClick:()=>this.cropper.setAspectRatio(16/9)},u(\"svg\",{\"aria-hidden\":\"true\",className:\"uppy-c-icon\",width:\"24\",height:\"24\",viewBox:\"0 0 24 24\"},u(\"path\",{d:\"M 19,4.9999992 V 17.000001 H 4.9999998 V 6.9999992 H 19 m 0,-2 H 4.9999998 c -1.0999999,0 -1.9999999,0.9000001 -1.9999999,2 V 17.000001 c 0,1.1 0.9,2 1.9999999,2 H 19 c 1.1,0 2,-0.9 2,-2 V 6.9999992 c 0,-1.0999999 -0.9,-2 -2,-2 z\"}),u(\"path\",{fill:\"none\",d:\"M0 0h24v24H0z\"}))))}renderCropWidescreenVertical(){let{i18n:e}=this.props;return u(\"label\",{role:\"tooltip\",\"aria-label\":e(\"aspectRatioPortrait\"),\"data-microtip-position\":\"top\"},u(\"button\",{type:\"button\",className:\"uppy-u-reset uppy-c-btn\",onClick:()=>this.cropper.setAspectRatio(9/16)},u(\"svg\",{\"aria-hidden\":\"true\",className:\"uppy-c-icon\",width:\"24\",height:\"24\",viewBox:\"0 0 24 24\"},u(\"path\",{d:\"M 19.000001,19 H 6.999999 V 5 h 10.000002 v 14 m 2,0 V 5 c 0,-1.0999999 -0.9,-1.9999999 -2,-1.9999999 H 6.999999 c -1.1,0 -2,0.9 -2,1.9999999 v 14 c 0,1.1 0.9,2 2,2 h 10.000002 c 1.1,0 2,-0.9 2,-2 z\"}),u(\"path\",{d:\"M0 0h24v24H0z\",fill:\"none\"}))))}render(){let{currentImage:e,opts:t}=this.props,{actions:r}=t,s=URL.createObjectURL(e.data);return u(\"div\",{className:\"uppy-ImageCropper\"},u(\"div\",{className:\"uppy-ImageCropper-container\"},u(\"img\",{className:\"uppy-ImageCropper-image\",alt:e.name,src:s,ref:o=>{this.imgElement=o}})),u(\"div\",{className:\"uppy-ImageCropper-controls\"},r.revert&&this.renderRevert(),r.rotate&&this.renderRotate(),r.granularRotate&&this.renderGranularRotate(),r.flip&&this.renderFlip(),r.zoomIn&&this.renderZoomIn(),r.zoomOut&&this.renderZoomOut(),r.cropSquare&&this.renderCropSquare(),r.cropWidescreen&&this.renderCropWidescreen(),r.cropWidescreenVertical&&this.renderCropWidescreenVertical()))}};n(qo,\"Editor\");var Ny={strings:{revert:\"Reset\",rotate:\"Rotate 90\\xB0\",zoomIn:\"Zoom in\",zoomOut:\"Zoom out\",flipHorizontal:\"Flip horizontally\",aspectRatioSquare:\"Crop square\",aspectRatioLandscape:\"Crop landscape (16:9)\",aspectRatioPortrait:\"Crop portrait (9:16)\"}};var zS={version:\"2.3.0\"},ss=class extends Z{constructor(e,t){super(e,t),this.save=()=>{let a=n(p=>{let{currentImage:d}=this.getPluginState();this.uppy.setFileState(d.id,{data:p,size:p.size,preview:null});let f=this.uppy.getFile(d.id);this.uppy.emit(\"thumbnail:request\",f),this.setPluginState({currentImage:f}),this.uppy.emit(\"file-editor:complete\",f)},\"saveBlobCallback\"),{currentImage:l}=this.getPluginState(),h=this.cropper.getCroppedCanvas({});h.width%2!==0&&this.cropper.setData({width:h.width-1}),h.height%2!==0&&this.cropper.setData({height:h.height-1}),this.cropper.getCroppedCanvas(this.opts.cropperOptions.croppedCanvasOptions).toBlob(a,l.type,this.opts.quality)},this.storeCropperInstance=a=>{this.cropper=a},this.selectFile=a=>{this.uppy.emit(\"file-editor:start\",a),this.setPluginState({currentImage:a})},this.id=this.opts.id||\"ImageEditor\",this.title=\"Image Editor\",this.type=\"editor\",this.defaultLocale=Ny;let r={viewMode:0,background:!1,autoCropArea:1,responsive:!0,minCropBoxWidth:70,minCropBoxHeight:70,croppedCanvasOptions:{}},s={revert:!0,rotate:!0,granularRotate:!0,flip:!0,zoomIn:!0,zoomOut:!0,cropSquare:!0,cropWidescreen:!0,cropWidescreenVertical:!0},o={quality:.8};this.opts={...o,...t,actions:{...s,...t?.actions},cropperOptions:{...r,...t?.cropperOptions}},this.i18nInit()}canEditFile(e){if(!e.type||e.isRemote)return!1;let t=e.type.split(\"/\")[1];return!!/^(jpe?g|gif|png|bmp|webp)$/.test(t)}install(){this.setPluginState({currentImage:null});let{target:e}=this.opts;e&&this.mount(e,this)}uninstall(){let{currentImage:e}=this.getPluginState();if(e){let t=this.uppy.getFile(e.id);this.uppy.emit(\"file-editor:cancel\",t)}this.unmount()}render(){let{currentImage:e}=this.getPluginState();return e===null||e.isRemote?null:u(qo,{currentImage:e,storeCropperInstance:this.storeCropperInstance,save:this.save,opts:this.opts,i18n:this.i18n})}};n(ss,\"ImageEditor\");ss.VERSION=zS.version;var jS={version:\"3.0.4\"},os=class extends Z{constructor(e,t){super(e,t),this.id=this.opts.id||\"ProgressBar\",this.title=\"Progress Bar\",this.type=\"progressindicator\";let r={target:\"body\",fixed:!1,hideAfterFinish:!0};this.opts={...r,...t},this.render=this.render.bind(this)}render(e){let t=e.totalProgress||0,r=(t===0||t===100)&&this.opts.hideAfterFinish;return u(\"div\",{className:\"uppy uppy-ProgressBar\",style:{position:this.opts.fixed?\"fixed\":\"initial\"},\"aria-hidden\":r},u(\"div\",{className:\"uppy-ProgressBar-inner\",style:{width:`${t}%`}}),u(\"div\",{className:\"uppy-ProgressBar-percentage\"},t))}install(){let{target:e}=this.opts;e&&this.mount(e,this)}uninstall(){this.unmount()}};n(os,\"ProgressBar\");os.VERSION=jS.version;var HS={__proto__:null,\"audio/mp3\":\"mp3\",\"audio/mp4\":\"mp4\",\"audio/ogg\":\"ogg\",\"audio/webm\":\"webm\",\"image/gif\":\"gif\",\"image/heic\":\"heic\",\"image/heif\":\"heif\",\"image/jpeg\":\"jpg\",\"image/png\":\"png\",\"image/svg+xml\":\"svg\",\"video/mp4\":\"mp4\",\"video/ogg\":\"ogv\",\"video/quicktime\":\"mov\",\"video/webm\":\"webm\",\"video/x-matroska\":\"mkv\",\"video/x-msvideo\":\"avi\"};function Ki(i){return[i]=i.split(\";\",1),HS[i]||null}n(Ki,\"getFileTypeExtension\");function Gd(){var i;return typeof MediaRecorder==\"function\"&&typeof((i=MediaRecorder.prototype)==null?void 0:i.start)==\"function\"}n(Gd,\"supportsMediaRecorder\");function Kd(i){let{recording:e,onStartRecording:t,onStopRecording:r,i18n:s}=i;return e?u(\"button\",{className:\"uppy-u-reset uppy-c-btn uppy-Audio-button\",type:\"button\",title:s(\"stopAudioRecording\"),\"aria-label\":s(\"stopAudioRecording\"),onClick:r,\"data-uppy-super-focusable\":!0},u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\",width:\"100\",height:\"100\",viewBox:\"0 0 100 100\"},u(\"rect\",{x:\"15\",y:\"15\",width:\"70\",height:\"70\"}))):u(\"button\",{className:\"uppy-u-reset uppy-c-btn uppy-Audio-button\",type:\"button\",title:s(\"startAudioRecording\"),\"aria-label\":s(\"startAudioRecording\"),onClick:t,\"data-uppy-super-focusable\":!0},u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\",width:\"14px\",height:\"20px\",viewBox:\"0 0 14 20\"},u(\"path\",{d:\"M7 14c2.21 0 4-1.71 4-3.818V3.818C11 1.71 9.21 0 7 0S3 1.71 3 3.818v6.364C3 12.29 4.79 14 7 14zm6.364-7h-.637a.643.643 0 0 0-.636.65V9.6c0 3.039-2.565 5.477-5.6 5.175-2.645-.264-4.582-2.692-4.582-5.407V7.65c0-.36-.285-.65-.636-.65H.636A.643.643 0 0 0 0 7.65v1.631c0 3.642 2.544 6.888 6.045 7.382v1.387H3.818a.643.643 0 0 0-.636.65v.65c0 .36.285.65.636.65h6.364c.351 0 .636-.29.636-.65v-.65c0-.36-.285-.65-.636-.65H7.955v-1.372C11.363 16.2 14 13.212 14 9.6V7.65c0-.36-.285-.65-.636-.65z\",fill:\"#FFF\",\"fill-rule\":\"nonzero\"})))}n(Kd,\"RecordButton\");function Xd(i){return`${Math.floor(i/60)}:${String(i%60).padStart(2,0)}`}n(Xd,\"formatSeconds\");function Yd(i){let{recordingLengthSeconds:e,i18n:t}=i,r=Xd(e);return u(\"span\",{\"aria-label\":t(\"recordingLength\",{recording_length:r})},r)}n(Yd,\"RecordingLength\");var My=n(i=>{let{currentDeviceId:e,audioSources:t,onChangeSource:r}=i;return u(\"div\",{className:\"uppy-Audio-videoSource\"},u(\"select\",{className:\"uppy-u-reset uppy-Audio-audioSource-select\",onChange:s=>{r(s.target.value)}},t.map(s=>u(\"option\",{key:s.deviceId,value:s.deviceId,selected:s.deviceId===e},s.label))))},\"default\");function $S(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n($S,\"_classPrivateFieldLooseBase\");var qS=0;function VS(i){return\"__private_\"+qS+++\"_\"+i}n(VS,\"_classPrivateFieldLooseKey\");function Ly(i){return typeof i==\"function\"}n(Ly,\"isFunction\");function ba(i){return Ly(i)?i():i}n(ba,\"result\");var Qd=VS(\"draw\"),Vo=class{constructor(e,t){t===void 0&&(t={}),Object.defineProperty(this,Qd,{writable:!0,value:()=>this.draw()});let r=t.canvas||{},s=t.canvasContext||{};this.analyser=null,this.bufferLength=0,this.dataArray=[],this.canvas=e,this.width=ba(r.width)||this.canvas.width,this.height=ba(r.height)||this.canvas.height,this.canvas.width=this.width,this.canvas.height=this.height,this.canvasContext=this.canvas.getContext(\"2d\"),this.canvasContext.fillStyle=ba(s.fillStyle)||\"rgb(255, 255, 255)\",this.canvasContext.strokeStyle=ba(s.strokeStyle)||\"rgb(0, 0, 0)\",this.canvasContext.lineWidth=ba(s.lineWidth)||1,this.onDrawFrame=Ly(t.onDrawFrame)?t.onDrawFrame:()=>{}}addSource(e){this.streamSource=e,this.audioContext=this.streamSource.context,this.analyser=this.audioContext.createAnalyser(),this.analyser.fftSize=2048,this.bufferLength=this.analyser.frequencyBinCount,this.source=this.audioContext.createBufferSource(),this.dataArray=new Uint8Array(this.bufferLength),this.analyser.getByteTimeDomainData(this.dataArray),this.streamSource.connect(this.analyser)}draw(){let{analyser:e,dataArray:t,bufferLength:r}=this,s=this.canvasContext,o=this.width,a=this.height;e&&e.getByteTimeDomainData(t),s.fillRect(0,0,o,a),s.beginPath();let l=o*1/r,h=0;r||s.moveTo(0,this.height/2);for(let p=0;p<r;p++){let f=t[p]/128*(a/2);p===0?s.moveTo(h,f):s.lineTo(h,f),h+=l}s.lineTo(o,a/2),s.stroke(),this.onDrawFrame(this),requestAnimationFrame($S(this,Qd)[Qd])}};n(Vo,\"AudioOscilloscope\");function WS(i){let{onSubmit:e,i18n:t}=i;return u(\"button\",{className:\"uppy-u-reset uppy-c-btn uppy-Audio-button uppy-Audio-button--submit\",type:\"button\",title:t(\"submitRecordedFile\"),\"aria-label\":t(\"submitRecordedFile\"),onClick:e,\"data-uppy-super-focusable\":!0},u(\"svg\",{width:\"12\",height:\"9\",viewBox:\"0 0 12 9\",xmlns:\"http://www.w3.org/2000/svg\",\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\"},u(\"path\",{fill:\"#fff\",fillRule:\"nonzero\",d:\"M10.66 0L12 1.31 4.136 9 0 4.956l1.34-1.31L4.136 6.38z\"})))}n(WS,\"SubmitButton\");var By=WS;function GS(i){let{onDiscard:e,i18n:t}=i;return u(\"button\",{className:\"uppy-u-reset uppy-c-btn uppy-Audio-button\",type:\"button\",title:t(\"discardRecordedFile\"),\"aria-label\":t(\"discardRecordedFile\"),onClick:e,\"data-uppy-super-focusable\":!0},u(\"svg\",{width:\"13\",height:\"13\",viewBox:\"0 0 13 13\",xmlns:\"http://www.w3.org/2000/svg\",\"aria-hidden\":\"true\",className:\"uppy-c-icon\"},u(\"g\",{fill:\"#FFF\",fillRule:\"evenodd\"},u(\"path\",{d:\"M.496 11.367L11.103.76l1.414 1.414L1.911 12.781z\"}),u(\"path\",{d:\"M11.104 12.782L.497 2.175 1.911.76l10.607 10.606z\"}))))}n(GS,\"DiscardButton\");var zy=GS;function Jd(i){let{stream:e,recordedAudio:t,onStop:r,recording:s,supportsRecording:o,audioSources:a,showAudioSourceDropdown:l,onSubmit:h,i18n:p,onStartRecording:d,onStopRecording:f,onDiscardRecordedAudio:y,recordingLengthSeconds:b}=i,S=Xh(null),E=Xh(null);Os(()=>()=>{E.current=null,r()},[r]),Os(()=>{if(!t&&(E.current=new Vo(S.current,{canvas:{width:600,height:600},canvasContext:{lineWidth:2,fillStyle:\"rgb(0,0,0)\",strokeStyle:\"green\"}}),E.current.draw(),e)){let G=new AudioContext().createMediaStreamSource(e);E.current.addSource(G)}},[t,e]);let x=t!=null,F=!x&&o,U=l&&!x&&a&&a.length>1;return u(\"div\",{className:\"uppy-Audio-container\"},u(\"div\",{className:\"uppy-Audio-audioContainer\"},x?u(\"audio\",{className:\"uppy-Audio-player\",controls:!0,src:t}):u(\"canvas\",{ref:S,className:\"uppy-Audio-canvas\"})),u(\"div\",{className:\"uppy-Audio-footer\"},u(\"div\",{className:\"uppy-Audio-audioSourceContainer\"},U?My(i):null),u(\"div\",{className:\"uppy-Audio-buttonContainer\"},F&&u(Kd,{recording:s,onStartRecording:d,onStopRecording:f,i18n:p}),x&&u(By,{onSubmit:h,i18n:p}),x&&u(zy,{onDiscard:y,i18n:p})),u(\"div\",{className:\"uppy-Audio-recordingLength\"},!x&&u(Yd,{recordingLengthSeconds:b,i18n:p}))))}n(Jd,\"RecordingScreen\");var jy=n(i=>{let{icon:e,hasAudio:t,i18n:r}=i;return u(\"div\",{className:\"uppy-Audio-permissons\"},u(\"div\",{className:\"uppy-Audio-permissonsIcon\"},e()),u(\"h1\",{className:\"uppy-Audio-title\"},r(t?\"allowAudioAccessTitle\":\"noAudioTitle\")),u(\"p\",null,r(t?\"allowAudioAccessDescription\":\"noAudioDescription\")))},\"default\");var Hy={strings:{pluginNameAudio:\"Audio\",startAudioRecording:\"Begin audio recording\",stopAudioRecording:\"Stop audio recording\",allowAudioAccessTitle:\"Please allow access to your microphone\",allowAudioAccessDescription:\"In order to record audio, please allow microphone access for this site.\",noAudioTitle:\"Microphone Not Available\",noAudioDescription:\"In order to record audio, please connect a microphone or another audio input device\",recordingStoppedMaxSize:\"Recording stopped because the file size is about to exceed the limit\",recordingLength:\"Recording length %{recording_length}\",submitRecordedFile:\"Submit recorded file\",discardRecordedFile:\"Discard recorded file\"}};function oc(){return oc=Object.assign?Object.assign.bind():function(i){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[r]=t[r])}return i},oc.apply(this,arguments)}n(oc,\"_extends\");function H(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(H,\"_classPrivateFieldLooseBase\");var KS=0;function pt(i){return\"__private_\"+KS+++\"_\"+i}n(pt,\"_classPrivateFieldLooseKey\");var XS={version:\"1.1.4\"},dt=pt(\"stream\"),Rr=pt(\"audioActive\"),Ie=pt(\"recordingChunks\"),De=pt(\"recorder\"),Ur=pt(\"capturedMediaFile\"),ct=pt(\"mediaDevices\"),wa=pt(\"supportsUserMedia\"),Zd=pt(\"hasAudioCheck\"),Ms=pt(\"start\"),ec=pt(\"startRecording\"),Sa=pt(\"stopRecording\"),tc=pt(\"discardRecordedAudio\"),ic=pt(\"submit\"),kr=pt(\"stop\"),rc=pt(\"getAudio\"),sc=pt(\"changeSource\"),Ls=pt(\"updateSources\"),ns=class extends Z{constructor(e,t){var r;super(e,t),r=this,Object.defineProperty(this,rc,{value:QS}),Object.defineProperty(this,Zd,{value:YS}),Object.defineProperty(this,dt,{writable:!0,value:null}),Object.defineProperty(this,Rr,{writable:!0,value:!1}),Object.defineProperty(this,Ie,{writable:!0,value:null}),Object.defineProperty(this,De,{writable:!0,value:null}),Object.defineProperty(this,Ur,{writable:!0,value:null}),Object.defineProperty(this,ct,{writable:!0,value:null}),Object.defineProperty(this,wa,{writable:!0,value:null}),Object.defineProperty(this,Ms,{writable:!0,value:function(s){if(s===void 0&&(s=null),!H(r,wa)[wa])return Promise.reject(new Error(\"Microphone access not supported\"));H(r,Rr)[Rr]=!0,H(r,Zd)[Zd]().then(o=>(r.setPluginState({hasAudio:o}),H(r,ct)[ct].getUserMedia({audio:!0}).then(a=>{H(r,dt)[dt]=a;let l=null,h=a.getAudioTracks();!s||!s.deviceId?l=h[0].getSettings().deviceId:h.forEach(p=>{p.getSettings().deviceId===s.deviceId&&(l=p.getSettings().deviceId)}),H(r,Ls)[Ls](),r.setPluginState({currentDeviceId:l,audioReady:!0})}).catch(a=>{r.setPluginState({audioReady:!1,cameraError:a}),r.uppy.info(a.message,\"error\")})))}}),Object.defineProperty(this,ec,{writable:!0,value:()=>{H(this,De)[De]=new MediaRecorder(H(this,dt)[dt]),H(this,Ie)[Ie]=[];let s=!1;H(this,De)[De].addEventListener(\"dataavailable\",o=>{H(this,Ie)[Ie].push(o.data);let{restrictions:a}=this.uppy.opts;if(H(this,Ie)[Ie].length>1&&a.maxFileSize!=null&&!s){let l=H(this,Ie)[Ie].reduce((f,y)=>f+y.size,0),p=(l-H(this,Ie)[Ie][0].size)/(H(this,Ie)[Ie].length-1)*3,d=Math.max(0,a.maxFileSize-p);l>d&&(s=!0,this.uppy.info(this.i18n(\"recordingStoppedMaxSize\"),\"warning\",4e3),H(this,Sa)[Sa]())}}),H(this,De)[De].start(500),this.recordingLengthTimer=setInterval(()=>{let o=this.getPluginState().recordingLengthSeconds;this.setPluginState({recordingLengthSeconds:o+1})},1e3),this.setPluginState({isRecording:!0})}}),Object.defineProperty(this,Sa,{writable:!0,value:()=>new Promise(o=>{H(this,De)[De].addEventListener(\"stop\",()=>{o()}),H(this,De)[De].stop(),clearInterval(this.recordingLengthTimer),this.setPluginState({recordingLengthSeconds:0})}).then(()=>(this.setPluginState({isRecording:!1}),H(this,rc)[rc]())).then(o=>{try{H(this,Ur)[Ur]=o,this.setPluginState({recordedAudio:URL.createObjectURL(o.data)})}catch(a){a.isRestriction||this.uppy.log(a)}}).then(()=>{H(this,Ie)[Ie]=null,H(this,De)[De]=null},o=>{throw H(this,Ie)[Ie]=null,H(this,De)[De]=null,o})}),Object.defineProperty(this,tc,{writable:!0,value:()=>{this.setPluginState({recordedAudio:null}),H(this,Ur)[Ur]=null}}),Object.defineProperty(this,ic,{writable:!0,value:()=>{try{H(this,Ur)[Ur]&&this.uppy.addFile(H(this,Ur)[Ur])}catch(s){s.isRestriction||this.uppy.log(s,\"warning\")}}}),Object.defineProperty(this,kr,{writable:!0,value:async()=>{H(this,dt)[dt]&&H(this,dt)[dt].getAudioTracks().forEach(o=>o.stop()),H(this,De)[De]&&await new Promise(s=>{H(this,De)[De].addEventListener(\"stop\",s,{once:!0}),H(this,De)[De].stop(),clearInterval(this.recordingLengthTimer)}),H(this,Ie)[Ie]=null,H(this,De)[De]=null,H(this,Rr)[Rr]=!1,H(this,dt)[dt]=null,this.setPluginState({recordedAudio:null,isRecording:!1,recordingLengthSeconds:0})}}),Object.defineProperty(this,sc,{writable:!0,value:s=>{H(this,kr)[kr](),H(this,Ms)[Ms]({deviceId:s})}}),Object.defineProperty(this,Ls,{writable:!0,value:()=>{H(this,ct)[ct].enumerateDevices().then(s=>{this.setPluginState({audioSources:s.filter(o=>o.kind===\"audioinput\")})})}}),H(this,ct)[ct]=navigator.mediaDevices,H(this,wa)[wa]=H(this,ct)[ct]!=null,this.id=this.opts.id||\"Audio\",this.type=\"acquirer\",this.icon=()=>u(\"svg\",{className:\"uppy-DashboardTab-iconAudio\",\"aria-hidden\":\"true\",focusable:\"false\",width:\"32px\",height:\"32px\",viewBox:\"0 0 32 32\"},u(\"path\",{d:\"M21.143 12.297c.473 0 .857.383.857.857v2.572c0 3.016-2.24 5.513-5.143 5.931v2.64h2.572a.857.857 0 110 1.714H12.57a.857.857 0 110-1.714h2.572v-2.64C12.24 21.24 10 18.742 10 15.726v-2.572a.857.857 0 111.714 0v2.572A4.29 4.29 0 0016 20.01a4.29 4.29 0 004.286-4.285v-2.572c0-.474.384-.857.857-.857zM16 6.5a3 3 0 013 3v6a3 3 0 01-6 0v-6a3 3 0 013-3z\",fill:\"currentcolor\",\"fill-rule\":\"nonzero\"})),this.defaultLocale=Hy,this.opts={...t},this.i18nInit(),this.title=this.i18n(\"pluginNameAudio\"),this.setPluginState({hasAudio:!1,audioReady:!1,cameraError:null,recordingLengthSeconds:0,audioSources:[],currentDeviceId:null})}render(){H(this,Rr)[Rr]||H(this,Ms)[Ms]();let e=this.getPluginState();return!e.audioReady||!e.hasAudio?u(jy,{icon:this.icon,i18n:this.i18n,hasAudio:e.hasAudio}):u(Jd,oc({},e,{audioActive:H(this,Rr)[Rr],onChangeSource:H(this,sc)[sc],onStartRecording:H(this,ec)[ec],onStopRecording:H(this,Sa)[Sa],onDiscardRecordedAudio:H(this,tc)[tc],onSubmit:H(this,ic)[ic],onStop:H(this,kr)[kr],i18n:this.i18n,showAudioSourceDropdown:this.opts.showAudioSourceDropdown,supportsRecording:Gd(),recording:e.isRecording,stream:H(this,dt)[dt]}))}install(){this.setPluginState({audioReady:!1,recordingLengthSeconds:0});let{target:e}=this.opts;e&&this.mount(e,this),H(this,ct)[ct]&&(H(this,Ls)[Ls](),H(this,ct)[ct].ondevicechange=()=>{if(H(this,Ls)[Ls](),H(this,dt)[dt]){let t=!0,{audioSources:r,currentDeviceId:s}=this.getPluginState();r.forEach(o=>{s===o.deviceId&&(t=!1)}),t&&(H(this,kr)[kr](),H(this,Ms)[Ms]())}})}uninstall(){H(this,dt)[dt]&&H(this,kr)[kr](),this.unmount()}};n(ns,\"Audio\");function YS(){return H(this,ct)[ct]?H(this,ct)[ct].enumerateDevices().then(i=>i.some(e=>e.kind===\"audioinput\")):Promise.resolve(!1)}n(YS,\"_hasAudioCheck2\");function QS(){let i=H(this,Ie)[Ie].find(o=>{var a;return((a=o.type)==null?void 0:a.length)>0}).type,e=Ki(i);if(!e)return Promise.reject(new Error(`Could not retrieve recording: Unsupported media type \"${i}\"`));let t=`audio-${Date.now()}.${e}`,r=new Blob(H(this,Ie)[Ie],{type:i}),s={source:this.id,name:t,data:new Blob([r],{type:i}),type:i};return Promise.resolve(s)}n(QS,\"_getAudio2\");ns.VERSION=XS.version;var $y={strings:{pluginNameBox:\"Box\"}};var JS={version:\"2.1.4\"},Xi=class extends Z{constructor(e,t){super(e,t),this.id=this.opts.id||\"Box\",be.initPlugin(this,t),this.title=this.opts.title||\"Box\",this.icon=()=>u(\"svg\",{className:\"uppy-DashboardTab-iconBox\",\"aria-hidden\":\"true\",focusable:\"false\",width:\"32\",height:\"32\",viewBox:\"0 0 32 32\"},u(\"g\",{fill:\"currentcolor\",fillRule:\"nonzero\"},u(\"path\",{d:\"m16.4 13.5c-1.6 0-3 0.9-3.7 2.2-0.7-1.3-2.1-2.2-3.7-2.2-1 0-1.8 0.3-2.5 0.8v-3.6c-0.1-0.3-0.5-0.7-1-0.7s-0.8 0.4-0.8 0.8v7c0 2.3 1.9 4.2 4.2 4.2 1.6 0 3-0.9 3.7-2.2 0.7 1.3 2.1 2.2 3.7 2.2 2.3 0 4.2-1.9 4.2-4.2 0.1-2.4-1.8-4.3-4.1-4.3m-7.5 6.8c-1.4 0-2.5-1.1-2.5-2.5s1.1-2.5 2.5-2.5 2.5 1.1 2.5 2.5-1.1 2.5-2.5 2.5m7.5 0c-1.4 0-2.5-1.1-2.5-2.5s1.1-2.5 2.5-2.5 2.5 1.1 2.5 2.5-1.1 2.5-2.5 2.5\"}),u(\"path\",{d:\"m27.2 20.6l-2.3-2.8 2.3-2.8c0.3-0.4 0.2-0.9-0.2-1.2s-1-0.2-1.3 0.2l-2 2.4-2-2.4c-0.3-0.4-0.9-0.4-1.3-0.2-0.4 0.3-0.5 0.8-0.2 1.2l2.3 2.8-2.3 2.8c-0.3 0.4-0.2 0.9 0.2 1.2s1 0.2 1.3-0.2l2-2.4 2 2.4c0.3 0.4 0.9 0.4 1.3 0.2 0.4-0.3 0.4-0.8 0.2-1.2\"}))),this.provider=new be(e,{companionUrl:this.opts.companionUrl,companionHeaders:this.opts.companionHeaders,companionKeysParams:this.opts.companionKeysParams,companionCookiesRule:this.opts.companionCookiesRule,provider:\"box\",pluginId:this.id}),this.defaultLocale=$y,this.i18nInit(),this.title=this.i18n(\"pluginNameBox\"),this.onFirstRender=this.onFirstRender.bind(this),this.render=this.render.bind(this)}install(){this.view=new Te(this,{provider:this.provider,loadAllFiles:!0});let{target:e}=this.opts;e&&this.mount(e,this)}uninstall(){this.view.tearDown(),this.unmount()}onFirstRender(){return this.view.getFolder()}render(e){return this.view.render(e)}};n(Xi,\"Box\");Xi.VERSION=JS.version;var qy={strings:{pluginNameDropbox:\"Dropbox\"}};var ZS={version:\"3.1.4\"},Yi=class extends Z{constructor(e,t){super(e,t),this.id=this.opts.id||\"Dropbox\",be.initPlugin(this,t),this.title=this.opts.title||\"Dropbox\",this.icon=()=>u(\"svg\",{className:\"uppy-DashboardTab-iconDropbox\",\"aria-hidden\":\"true\",focusable:\"false\",width:\"32\",height:\"32\",viewBox:\"0 0 32 32\"},u(\"path\",{d:\"M10.5 7.5L5 10.955l5.5 3.454 5.5-3.454 5.5 3.454 5.5-3.454L21.5 7.5 16 10.955zM10.5 21.319L5 17.864l5.5-3.455 5.5 3.455zM16 17.864l5.5-3.455 5.5 3.455-5.5 3.455zM16 25.925l-5.5-3.455 5.5-3.454 5.5 3.454z\",fill:\"currentcolor\",fillRule:\"nonzero\"})),this.provider=new be(e,{companionUrl:this.opts.companionUrl,companionHeaders:this.opts.companionHeaders,companionKeysParams:this.opts.companionKeysParams,companionCookiesRule:this.opts.companionCookiesRule,provider:\"dropbox\",pluginId:this.id}),this.defaultLocale=qy,this.i18nInit(),this.title=this.i18n(\"pluginNameDropbox\"),this.onFirstRender=this.onFirstRender.bind(this),this.render=this.render.bind(this)}install(){this.view=new Te(this,{provider:this.provider,loadAllFiles:!0});let{target:e}=this.opts;e&&this.mount(e,this)}uninstall(){this.view.tearDown(),this.unmount()}onFirstRender(){return Promise.all([this.provider.fetchPreAuthToken(),this.view.getFolder()])}render(e){return this.view.render(e)}};n(Yi,\"Dropbox\");Yi.VERSION=ZS.version;var Vy={strings:{pluginNameFacebook:\"Facebook\"}};var eP={version:\"3.1.3\"},Qi=class extends Z{constructor(e,t){super(e,t),this.id=this.opts.id||\"Facebook\",be.initPlugin(this,t),this.title=this.opts.title||\"Facebook\",this.icon=()=>u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",width:\"32\",height:\"32\",viewBox:\"0 0 32 32\"},u(\"g\",{fill:\"none\",fillRule:\"evenodd\"},u(\"path\",{d:\"M27 16c0-6.075-4.925-11-11-11S5 9.925 5 16c0 5.49 4.023 10.041 9.281 10.866V19.18h-2.793V16h2.793v-2.423c0-2.757 1.642-4.28 4.155-4.28 1.204 0 2.462.215 2.462.215v2.707h-1.387c-1.366 0-1.792.848-1.792 1.718V16h3.05l-.487 3.18h-2.563v7.686C22.977 26.041 27 21.49 27 16\",fill:\"#1777F2\"}),u(\"path\",{d:\"M20.282 19.18L20.77 16h-3.051v-2.063c0-.87.426-1.718 1.792-1.718h1.387V9.512s-1.258-.215-2.462-.215c-2.513 0-4.155 1.523-4.155 4.28V16h-2.793v3.18h2.793v7.686a11.082 11.082 0 003.438 0V19.18h2.563\",fill:\"#FFFFFE\"}))),this.provider=new be(e,{companionUrl:this.opts.companionUrl,companionHeaders:this.opts.companionHeaders,companionKeysParams:this.opts.companionKeysParams,companionCookiesRule:this.opts.companionCookiesRule,provider:\"facebook\",pluginId:this.id}),this.defaultLocale=Vy,this.i18nInit(),this.title=this.i18n(\"pluginNameFacebook\"),this.onFirstRender=this.onFirstRender.bind(this),this.render=this.render.bind(this)}install(){this.view=new Te(this,{provider:this.provider});let{target:e}=this.opts;e&&this.mount(e,this)}uninstall(){this.view.tearDown(),this.unmount()}onFirstRender(){return Promise.all([this.provider.fetchPreAuthToken(),this.view.getFolder()])}render(e){let t={};return this.getPluginState().files.length&&!this.getPluginState().folders.length&&(t.viewType=\"grid\",t.showFilter=!1,t.showTitles=!1),this.view.render(e,t)}};n(Qi,\"Facebook\");Qi.VERSION=eP.version;var Wo=class extends Te{toggleCheckbox(e,t){e.stopPropagation(),e.preventDefault(),t.custom.isSharedDrive||super.toggleCheckbox(e,t)}};n(Wo,\"DriveProviderViews\");var Wy={strings:{pluginNameGoogleDrive:\"Google Drive\"}};var tP={version:\"3.3.0\"},Ji=class extends Z{constructor(e,t){super(e,t),this.id=this.opts.id||\"GoogleDrive\",this.title=this.opts.title||\"Google Drive\",be.initPlugin(this,t),this.title=this.opts.title||\"Google Drive\",this.icon=()=>u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",width:\"32\",height:\"32\",viewBox:\"0 0 32 32\"},u(\"g\",{fillRule:\"nonzero\",fill:\"none\"},u(\"path\",{d:\"M6.663 22.284l.97 1.62c.202.34.492.609.832.804l3.465-5.798H5c0 .378.1.755.302 1.096l1.361 2.278z\",fill:\"#0066DA\"}),u(\"path\",{d:\"M16 12.09l-3.465-5.798c-.34.195-.63.463-.832.804l-6.4 10.718A2.15 2.15 0 005 18.91h6.93L16 12.09z\",fill:\"#00AC47\"}),u(\"path\",{d:\"M23.535 24.708c.34-.195.63-.463.832-.804l.403-.67 1.928-3.228c.201-.34.302-.718.302-1.096h-6.93l1.474 2.802 1.991 2.996z\",fill:\"#EA4335\"}),u(\"path\",{d:\"M16 12.09l3.465-5.798A2.274 2.274 0 0018.331 6h-4.662c-.403 0-.794.11-1.134.292L16 12.09z\",fill:\"#00832D\"}),u(\"path\",{d:\"M20.07 18.91h-8.14l-3.465 5.798c.34.195.73.292 1.134.292h12.802c.403 0 .794-.11 1.134-.292L20.07 18.91z\",fill:\"#2684FC\"}),u(\"path\",{d:\"M23.497 12.455l-3.2-5.359a2.252 2.252 0 00-.832-.804L16 12.09l4.07 6.82h6.917c0-.377-.1-.755-.302-1.096l-3.188-5.359z\",fill:\"#FFBA00\"}))),this.provider=new be(e,{companionUrl:this.opts.companionUrl,companionHeaders:this.opts.companionHeaders,companionKeysParams:this.opts.companionKeysParams,companionCookiesRule:this.opts.companionCookiesRule,provider:\"drive\",pluginId:this.id}),this.defaultLocale=Wy,this.i18nInit(),this.title=this.i18n(\"pluginNameGoogleDrive\"),this.onFirstRender=this.onFirstRender.bind(this),this.render=this.render.bind(this)}install(){this.view=new Wo(this,{provider:this.provider,loadAllFiles:!0});let{target:e}=this.opts;e&&this.mount(e,this)}uninstall(){this.view.tearDown(),this.unmount()}onFirstRender(){return Promise.all([this.provider.fetchPreAuthToken(),this.view.getFolder(\"root\")])}render(e){return this.view.render(e)}};n(Ji,\"GoogleDrive\");Ji.VERSION=tP.version;var Gy={strings:{pluginNameInstagram:\"Instagram\"}};var iP={version:\"3.1.3\"},Zi=class extends Z{constructor(e,t){super(e,t),this.id=this.opts.id||\"Instagram\",be.initPlugin(this,t),this.icon=()=>u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",width:\"32\",height:\"32\",viewBox:\"0 0 32 32\"},u(\"defs\",null,u(\"path\",{d:\"M16.825 5l.483-.001.799.002c1.168.005 1.598.021 2.407.057 1.17.05 1.97.235 2.67.506.725.28 1.34.655 1.951 1.265.613.61.99 1.223 1.273 1.946.273.7.46 1.498.516 2.67l.025.552.008.205c.029.748.037 1.51.042 3.777l.001.846v.703l-.001.398a50.82 50.82 0 01-.058 2.588c-.05 1.17-.235 1.97-.506 2.67a5.394 5.394 0 01-1.265 1.951c-.61.613-1.222.99-1.946 1.273-.699.273-1.498.46-2.668.516-.243.012-.451.022-.656.03l-.204.007c-.719.026-1.512.034-3.676.038l-.847.001h-1.1a50.279 50.279 0 01-2.587-.059c-1.171-.05-1.971-.235-2.671-.506a5.394 5.394 0 01-1.951-1.265 5.385 5.385 0 01-1.272-1.946c-.274-.699-.46-1.498-.517-2.668a88.15 88.15 0 01-.03-.656l-.007-.205c-.026-.718-.034-1.512-.038-3.674v-2.129c.006-1.168.022-1.597.058-2.406.051-1.171.235-1.971.506-2.672a5.39 5.39 0 011.265-1.95 5.381 5.381 0 011.946-1.272c.699-.274 1.498-.462 2.669-.517l.656-.03.204-.007c.718-.026 1.511-.034 3.674-.038zm.678 1.981h-1.226l-.295.001c-2.307.005-3.016.013-3.777.043l-.21.009-.457.02c-1.072.052-1.654.232-2.042.383-.513.2-.879.44-1.263.825a3.413 3.413 0 00-.82 1.267c-.15.388-.33.97-.375 2.043a48.89 48.89 0 00-.056 2.482v.398 1.565c.006 2.937.018 3.285.073 4.444.05 1.073.231 1.654.382 2.043.2.512.44.878.825 1.263.386.383.753.621 1.267.82.388.15.97.328 2.043.374.207.01.388.017.563.024l.208.007a63.28 63.28 0 002.109.026h1.564c2.938-.006 3.286-.019 4.446-.073 1.071-.051 1.654-.232 2.04-.383.514-.2.88-.44 1.264-.825.384-.386.622-.753.82-1.266.15-.389.328-.971.375-2.044.039-.88.054-1.292.057-2.723v-1.15-.572c-.006-2.936-.019-3.284-.074-4.445-.05-1.071-.23-1.654-.382-2.04-.2-.515-.44-.88-.825-1.264a3.405 3.405 0 00-1.267-.82c-.388-.15-.97-.328-2.042-.375a48.987 48.987 0 00-2.535-.056zm-1.515 3.37a5.65 5.65 0 11.021 11.299 5.65 5.65 0 01-.02-11.3zm.004 1.982a3.667 3.667 0 10.015 7.334 3.667 3.667 0 00-.015-7.334zm5.865-3.536a1.32 1.32 0 11.005 2.64 1.32 1.32 0 01-.005-2.64z\",id:\"a\"})),u(\"g\",{fill:\"none\",\"fill-rule\":\"evenodd\"},u(\"mask\",{id:\"b\",fill:\"#fff\"},u(\"use\",{xlinkHref:\"#a\"})),u(\"image\",{mask:\"url(#b)\",x:\"4\",y:\"4\",width:\"24\",height:\"24\",xlinkHref:\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAALKADAAQAAAABAAAALAAAAAD8buejAAALZklEQVRYCVWZC2LbNhAFCRKykvP0bD1506SxRKIzbwHJoU3jv5h9WICU3P7+6zlG2zZvr8s/rW1tN7U0rMll8aDYufdzbLfc1JHmpv3jpPy8tsO+3O2s/O6YMSjTl/qdCds4mIIG60m8vdq2Z+phm2V4vAb9+o7BbZeuoM0NyYazvTvbvlN1MGjHUAesZ/IWWOsCeF0BOwAK4ITR0WYd/QKHEPv2DEymmorZtiubjOHEMYEzXmC9GMxu+95Kz+kuwxjDBKb8iUoCAdqZoAeyALreW6ZNx9Y4Jz8cLwjTZOEoR+HU05k2RzgP2iafGgfZiEdZbEr94zpX/xkPtDtGAxF+LRcgTsp9CAZg0rnEnXmPqFshY5vLnVWxLXO/bah2sZQgBZppGSe8NbjNPN5kc/WbIYEn8U+jXCOezT4zfgS1eoVEhceVeK74Fe4N6CoYEoLWykzHsd+GMAUqdTTVvvqT1uWqB3lVCLb12/ORAe8/5Zu9mp7lqoEFUCAFDIxqz7i1bq2AY1U9jqq2QK/7DYl+1AeZlAFcEc+U/jkRUqsvCHQ/nyGvjrOl6EuZWRWVGCKUMCkntQ5o+u2AZ3OxakbTcoBZnY0xhgGCUM4Kp1xtBTnBnXM5ASRms/Fs7d9OpX8bXN45pibQY/ML1MmA5G9CINBuCpdftexr6i2c5qd9J441LNJm3zk1GVusJ7v6mPJ7HPxJR0Li/vg9O1XHTEgvsQoSgExU0NnlLF0paK+6d06aOMKE2nCKV0ofNw4WsWmLsWrv6lPLnhGpr9E137QkHOMB/jh/T8MOqOadXarR44zPBW5NvDccnBxVmdK81+7RQ5p6qnQoRDZPh9+xWj0N2XpqxX1HzMty9UlFnKya/h3gulziAsyxwkSmpTIPB8vagKLyktRdDuBEHNGZMm4oCFWgjq31WPHpaC93gGNqpOpP4Ez4spa+nMNvhTWcuPKAJ79fqIxVoUvdjEG9qSy2WhpQlz61yG/gnKEA25IrIOYK6DIsQs2EE9LR/sTKq38Nd1y/X//FXG0QDHkEqSz3EYVV2dhb00rgLPSDcqmrScs55NNOD2zVqKmYnYTFnkACp520dkW5vBxK99BVzr792/iZ+VVo92UkKU2oG5WFTb6mNiA1H2C8KC0E44qaQleR3EQvQNwLrECOVAiSwM5gpF7nvDND0lZvYuQ9JbZfqdTrqCgwMcVrRS0z9QkLu9NWmkgEHb8p2zDRylj9VWA3lXD2vObEdWpT3w5MiFqQ1W/lteG4eipastxv2w+TeTBP0ypK84HiOW9fUzLcjRDwCW2b2VxmnGSKTX6uRSwMnC9YX4l05Mh2uwI+QVWdWUOSTWd5Xjjf7/tPYk2stSh053XTGN5RJMCMSajMcS8Trn3j/E1ajthlxCkmJXVi47PSUsyyq+jyexsayQNuv5GVYJaszprNsQD3RkgYiy49kFl2JlJJxlf8Uu/lpkq7+aWqzEzjr5cTVpFaJvSVr8AKRtiTlVPFk5t1nO30W+o6jrbAk76kxFa/tX+dom4C1wDPk03gqCw8HTBSxx4FHxIA+mh2pM3rKu5SNqBAuOSZnHzsB9JwW7DV/ge8dlVsOh375PvH8YO8EALU1HuecIC6qQgXifNuSx9XAoLaoGIYDjkWFrawX1U1XrknuMFw7QBSPtg79XovmBvwqnDICrhClEO6wgKFj9vPqJWlthUvdgH1DOA8+wFMexzQc5BUS1d1IsdBSjEv4Fe1LgBO1CpFPTpV1JuPSFNt4y/trzbtaUfwBWwM3/6JsrL6MSQYwLKXAm9YJBxsM8992MblZ63Gami0+rnwOMyPykVpQsyl9eYNOfVC6kRBkwaop//LgcAKWivkHF791g0JK5kMmCgKPas2QRkUFQsuTvm6R1946Wg95k764ZRLW59yO5UVGsawwELupCfAbdCuAwvcz5Xk18rIVEdgSRBRgO77R206QdXHuA2goaGiCQ0GmUfN1JlmFayjv0IcKGkfYt4HAj0yuQBRGDjzuS/rTmAf29Gov1S+FF7QBayNcpoBOEsMt3vFcIUC7VxOnE+pxmkgqEzduzwsPykrjBszCusgdarsRIAL6CM/KqsqcAf1vj8P1TXFyN6e5G8ao48fjKfDQJYizIdIfb+Xwp6Z2fE2C7mUfUEzMKqSBp4VUV1A49Sz1M2LzVzahEfyHUAcQNltR0nADYkBvHXDZQo8H9dQvHF7qhjPtSolBJ0A/vaLwdRz5YFFGoWBy8E/4aKcjqimaUBXXnjBpzOZnMlIVXsTVEBBUa+dD0BR0xVopgAD70psY0KjMHpmHB2kApea9o23NS83mpsref5OZet4U/0CMhSEDpwnxB9lVKSfk5djllXRFPizQmKcqMpnyZ3ycPntf96Ym9ChzU8vCQnhgWZ2UuySArw+cVBG4gqNCS6YoSEEziRWVStKUpe4FfCd91V0XA/qgOJuF7FpGjjyQgsFoNDtibp8cm+cyXxbB6zh4pMUO4H06yzsv4E/A6rg/uRJRnMRmrhMDIhyOjABX9CMDFhBFxx19KujjqWeim5PwVFU6IBiewfyk7IPETcg52kjXN7nsbaoEykKf/cjUgVxpTZZVtnqFMgv4FHa8oSOisawinMLHfUBzJcK1j8BeqquedKDtgcgnA4bym4P6gBWYVM3W/pn41ku5L4RElFWtlk5SXHEThhOWDiIyVROlQNM+wyHimlgATI/PPIm4BB8qfqwHnhgL89gzs+Ww1xQb4821SZ/4IwOJiRqH/X9u7Hj08JLSZfawOQcpRzwgk1oBNzzcgLn1FBNHspMENik9OG4awIDaUjw9rKNT1KXPl9neua6sSbkgqfs/CNfBdNfDDhQuL4AKXEXeOgZID91eOiRUnEFOIA5rnTkBU0/IT05gByoq5KBJF4Hym4Pxh3UcxZ7HjdhEhKWURbhavNR9rjLBwk3ryDcrGzfvk9I69b1yhMGWQ4bqMwv/RMSplQkjjVKXzZX8wESVcuB7QG0YUCMjk/aOmWgc/vC4oMCVYfghIGP6MT1zpeUhM1rQzOnGxmFKwTCir1Xaj5vN7T7nDZvnbDGHbCKnwji2zofNsOvbold3zlUtKGosBun3PbJSrrReHEaCQVCIDEMaCCBs+P+AbybkbIhmbNecGwF+E5/L2ECuPKCWsUESQkKnyyJ93TGACk7OrAY9P8XG//fGCoM7DAEUGnj5Mw7aQfelySWOm9iPuFyvrL8rKQR6mM6qdCUDQsfNPVu4yv/HaPOT1e/yDaviMKmTkg/I/F7MUG9OlrmDrBLRVd3c8KBJlPEKoVRcIJuhoQAmZDUkPC00W5OI1dOpQ1F61kFNqr9SmFcaHdBheOaDHF6QZMOP6QyiZ804oj98wLiAMIgcWw4UDYkDAWfR+4d5s0zP2GgUZX04i+NeSgYGokvbDhIZYUWHgd9K8zZzir264NxZUFbsfM1jdqpV2naA48tx6hsvBSabE4IMtlcOGgq8PqCjoly2rw2soqy4RJWQtPZl6PUCU14ZUWENuZV2Honn3f+k6R6wrkqgTStyQ0bFY+XAaafMRFgUlVeXxXFUcpLEYfZz3FrVUzZrOOJK+4B/wnIZ8TGRvb9OB8EUM0w8uNYj/oa9iK9AMoy6gA72o02srMxpAPUD+EDnVEF7P5xw896VyAbFk8MgnpVpR3gfLnt/wECq3rYFvYLcKCpqvcI+/hVl8AumXDeApklDRRKJSS+KOaq1Rgg4igOYtiQK1hJy46TBtDjznDp3iqJff5j0/LfSZbYVdauqXccJ9W+czupp0sU9gMlqkQ52lU1E6tUwoDUukAD6YRpAwqDrAErzA8QCRvXm98KEep0xIdY1CN1ye27IP0IHvvYIW18qGz8S7VWUZuMkUOb3P8DHTl67ur/i1UAAAAASUVORK5CYII=\"}))),this.defaultLocale=Gy,this.i18nInit(),this.title=this.i18n(\"pluginNameInstagram\"),this.provider=new be(e,{companionUrl:this.opts.companionUrl,companionHeaders:this.opts.companionHeaders,companionKeysParams:this.opts.companionKeysParams,companionCookiesRule:this.opts.companionCookiesRule,provider:\"instagram\",pluginId:this.id}),this.onFirstRender=this.onFirstRender.bind(this),this.render=this.render.bind(this)}install(){this.view=new Te(this,{provider:this.provider,viewType:\"grid\",showTitles:!1,showFilter:!1,showBreadcrumbs:!1});let{target:e}=this.opts;e&&this.mount(e,this)}uninstall(){this.view.tearDown(),this.unmount()}onFirstRender(){return Promise.all([this.provider.fetchPreAuthToken(),this.view.getFolder(\"recent\")])}render(e){return this.view.render(e)}};n(Zi,\"Instagram\");Zi.VERSION=iP.version;var Ky={strings:{pluginNameOneDrive:\"OneDrive\"}};var rP={version:\"3.1.4\"},er=class extends Z{constructor(e,t){super(e,t),this.id=this.opts.id||\"OneDrive\",be.initPlugin(this,t),this.title=this.opts.title||\"OneDrive\",this.icon=()=>u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",width:\"32\",height:\"32\",viewBox:\"0 0 32 32\"},u(\"g\",{fill:\"none\",fillRule:\"nonzero\"},u(\"path\",{d:\"M13.39 12.888l4.618 2.747 2.752-1.15a4.478 4.478 0 012.073-.352 6.858 6.858 0 00-5.527-5.04 6.895 6.895 0 00-6.876 2.982l.07-.002a5.5 5.5 0 012.89.815z\",fill:\"#0364B8\"}),u(\"path\",{d:\"M13.39 12.887v.001a5.5 5.5 0 00-2.89-.815l-.07.002a5.502 5.502 0 00-4.822 2.964 5.43 5.43 0 00.38 5.62l4.073-1.702 1.81-.757 4.032-1.685 2.105-.88-4.619-2.748z\",fill:\"#0078D4\"}),u(\"path\",{d:\"M22.833 14.133a4.479 4.479 0 00-2.073.352l-2.752 1.15.798.475 2.616 1.556 1.141.68 3.902 2.321a4.413 4.413 0 00-.022-4.25 4.471 4.471 0 00-3.61-2.284z\",fill:\"#1490DF\"}),u(\"path\",{d:\"M22.563 18.346l-1.141-.68-2.616-1.556-.798-.475-2.105.88L11.87 18.2l-1.81.757-4.073 1.702A5.503 5.503 0 0010.5 23h12.031a4.472 4.472 0 003.934-2.333l-3.902-2.321z\",fill:\"#28A8EA\"}))),this.provider=new be(e,{companionUrl:this.opts.companionUrl,companionHeaders:this.opts.companionHeaders,companionCookiesRule:this.opts.companionCookiesRule,provider:\"onedrive\",pluginId:this.id}),this.defaultLocale=Ky,this.i18nInit(),this.title=this.i18n(\"pluginNameOneDrive\"),this.onFirstRender=this.onFirstRender.bind(this),this.render=this.render.bind(this)}install(){this.view=new Te(this,{provider:this.provider,loadAllFiles:!0});let{target:e}=this.opts;e&&this.mount(e,this)}uninstall(){this.view.tearDown(),this.unmount()}onFirstRender(){return Promise.all([this.provider.fetchPreAuthToken(),this.view.getFolder()])}render(e){return this.view.render(e)}};n(er,\"OneDrive\");er.VERSION=rP.version;var sP={version:\"3.2.3\"},tr=class extends Z{constructor(e,t){if(super(e,t),this.id=this.opts.id||\"Unsplash\",this.title=this.opts.title||\"Unsplash\",be.initPlugin(this,t,{}),this.icon=()=>u(\"svg\",{className:\"uppy-DashboardTab-iconUnsplash\",viewBox:\"0 0 32 32\",height:\"32\",width:\"32\",\"aria-hidden\":\"true\"},u(\"g\",{fill:\"currentcolor\"},u(\"path\",{d:\"M46.575 10.883v-9h12v9zm12 5h10v18h-32v-18h10v9h12z\"}),u(\"path\",{d:\"M13 12.5V8h6v4.5zm6 2.5h5v9H8v-9h5v4.5h6z\"}))),!this.opts.companionUrl)throw new Error(\"Companion hostname is required, please consult https://uppy.io/docs/companion\");this.hostname=this.opts.companionUrl,this.provider=new Yr(e,{companionUrl:this.opts.companionUrl,companionHeaders:this.opts.companionHeaders,companionCookiesRule:this.opts.companionCookiesRule,provider:\"unsplash\",pluginId:this.id})}install(){this.view=new ji(this,{provider:this.provider,viewType:\"unsplash\",showFilter:!0});let{target:e}=this.opts;e&&this.mount(e,this)}onFirstRender(){}render(e){return this.view.render(e)}uninstall(){this.unmount()}};n(tr,\"Unsplash\");tr.VERSION=sP.version;function Xy(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(Xy,\"_classPrivateFieldLooseBase\");var oP=0;function nP(i){return\"__private_\"+oP+++\"_\"+i}n(nP,\"_classPrivateFieldLooseKey\");var Pa=nP(\"handleSubmit\"),Iu=class extends we{constructor(e){super(e),this.form=document.createElement(\"form\"),Object.defineProperty(this,Pa,{writable:!0,value:t=>{t.preventDefault();let{addFile:r}=this.props,s=this.input.value.trim();r(s)}}),this.form.id=Pt()}componentDidMount(){this.input.value=\"\",this.form.addEventListener(\"submit\",Xy(this,Pa)[Pa]),document.body.appendChild(this.form)}componentWillUnmount(){this.form.removeEventListener(\"submit\",Xy(this,Pa)[Pa]),document.body.removeChild(this.form)}render(){let{i18n:e}=this.props;return u(\"div\",{className:\"uppy-Url\"},u(\"input\",{className:\"uppy-u-reset uppy-c-textInput uppy-Url-input\",type:\"text\",\"aria-label\":e(\"enterUrlToImport\"),placeholder:e(\"enterUrlToImport\"),ref:t=>{this.input=t},\"data-uppy-super-focusable\":!0,form:this.form.id}),u(\"button\",{className:\"uppy-u-reset uppy-c-btn uppy-c-btn-primary uppy-Url-importButton\",type:\"submit\",form:this.form.id},e(\"import\")))}};n(Iu,\"UrlUI\");var Yy=Iu;function Nu(i,e,t){let r=Qe(i.items),s;switch(e){case\"paste\":{if(r.some(a=>a.kind===\"file\"))return;s=r.filter(a=>a.kind===\"string\"&&a.type===\"text/plain\");break}case\"drop\":{s=r.filter(o=>o.kind===\"string\"&&o.type===\"text/uri-list\");break}default:throw new Error(`isDropOrPaste must be either 'drop' or 'paste', but it's ${e}`)}s.forEach(o=>{o.getAsString(a=>t(a))})}n(Nu,\"forEachDroppedOrPastedUrl\");var Qy={strings:{import:\"Import\",enterUrlToImport:\"Enter URL to import a file\",failedToFetch:\"Companion failed to fetch this URL, please make sure it\\u2019s correct\",enterCorrectUrl:\"Incorrect URL: Please make sure you are entering a direct link to a file\"}};var aP={version:\"3.4.0\"};function lP(){return u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",width:\"32\",height:\"32\",viewBox:\"0 0 32 32\"},u(\"path\",{d:\"M23.637 15.312l-2.474 2.464a3.582 3.582 0 01-.577.491c-.907.657-1.897.986-2.968.986a4.925 4.925 0 01-3.959-1.971c-.248-.329-.164-.902.165-1.149.33-.247.907-.164 1.155.164 1.072 1.478 3.133 1.724 4.618.656a.642.642 0 00.33-.328l2.473-2.463c1.238-1.313 1.238-3.366-.082-4.597a3.348 3.348 0 00-4.618 0l-1.402 1.395a.799.799 0 01-1.154 0 .79.79 0 010-1.15l1.402-1.394a4.843 4.843 0 016.843 0c2.062 1.805 2.144 5.007.248 6.896zm-8.081 5.664l-1.402 1.395a3.348 3.348 0 01-4.618 0c-1.319-1.23-1.319-3.365-.082-4.596l2.475-2.464.328-.328c.743-.492 1.567-.739 2.475-.657.906.165 1.648.574 2.143 1.314.248.329.825.411 1.155.165.33-.248.412-.822.165-1.15-.825-1.068-1.98-1.724-3.216-1.888-1.238-.247-2.556.082-3.628.902l-.495.493-2.474 2.464c-1.897 1.969-1.814 5.09.083 6.977.99.904 2.226 1.396 3.463 1.396s2.473-.492 3.463-1.395l1.402-1.396a.79.79 0 000-1.15c-.33-.328-.908-.41-1.237-.082z\",fill:\"#FF753E\",\"fill-rule\":\"nonzero\"}))}n(lP,\"UrlIcon\");function uP(i){let e=/^[a-z0-9]+:\\/\\//,t=\"http://\";return e.test(i)?i:t+i}n(uP,\"addProtocolToURL\");function hP(i){return Qe(i.dataTransfer.items).filter(r=>r.kind===\"string\"&&r.type===\"text/uri-list\").length>0}n(hP,\"canHandleRootDrop\");function dP(i){if(!i)return!1;let e=i.match(/^([a-z0-9]+):\\/\\//)[1];return!(e!==\"http\"&&e!==\"https\")}n(dP,\"checkIfCorrectURL\");function cP(i){let{pathname:e}=new URL(i);return e.substring(e.lastIndexOf(\"/\")+1)}n(cP,\"getFileNameFromUrl\");var Ti=class extends Z{constructor(e,t){super(e,t),this.id=this.opts.id||\"Url\",this.title=this.opts.title||\"Link\",this.type=\"acquirer\",this.icon=()=>u(lP,null),this.defaultLocale=Qy;let r={};if(this.opts={...r,...t},this.i18nInit(),this.hostname=this.opts.companionUrl,!this.hostname)throw new Error(\"Companion hostname is required, please consult https://uppy.io/docs/companion\");this.getMeta=this.getMeta.bind(this),this.addFile=this.addFile.bind(this),this.handleRootDrop=this.handleRootDrop.bind(this),this.handleRootPaste=this.handleRootPaste.bind(this),this.client=new tt(e,{companionUrl:this.opts.companionUrl,companionHeaders:this.opts.companionHeaders,companionCookiesRule:this.opts.companionCookiesRule})}getMeta(e){return this.client.post(\"url/meta\",{url:e}).then(t=>{if(t.error)throw this.uppy.log(\"[URL] Error:\"),this.uppy.log(t.error),new Error(\"Failed to fetch the file\");return t})}async addFile(e,t){t===void 0&&(t=void 0);let r=uP(e);if(!dP(r)){this.uppy.log(`[URL] Incorrect URL entered: ${r}`),this.uppy.info(this.i18n(\"enterCorrectUrl\"),\"error\",4e3);return}try{let s=await this.getMeta(r),o={meta:t,source:this.id,name:s.name||cP(r),type:s.type,data:{size:s.size},isRemote:!0,body:{url:r},remote:{companionUrl:this.opts.companionUrl,url:`${this.hostname}/url/get`,body:{fileId:r,url:r}}};Object.defineProperty(o.remote,\"requestClient\",{value:this.client,enumerable:!1}),this.uppy.log(\"[Url] Adding remote file\");try{return this.uppy.addFile(o)}catch(a){return a.isRestriction||this.uppy.log(a),a}}catch(s){return this.uppy.log(s),this.uppy.info({message:this.i18n(\"failedToFetch\"),details:s},\"error\",4e3),s}}handleRootDrop(e){Nu(e.dataTransfer,\"drop\",t=>{this.uppy.log(`[URL] Adding file from dropped url: ${t}`),this.addFile(t)})}handleRootPaste(e){Nu(e.clipboardData,\"paste\",t=>{this.uppy.log(`[URL] Adding file from pasted url: ${t}`),this.addFile(t)})}render(){return u(Yy,{i18n:this.i18n,addFile:this.addFile})}install(){let{target:e}=this.opts;e&&this.mount(e,this)}uninstall(){this.unmount()}};n(Ti,\"Url\");Ti.VERSION=aP.version;Ti.prototype.canHandleRootDrop=hP;var Jy={strings:{pluginNameZoom:\"Zoom\"}};var pP={version:\"2.1.3\"},ir=class extends Z{constructor(e,t){super(e,t),this.id=this.opts.id||\"Zoom\",be.initPlugin(this,t),this.title=this.opts.title||\"Zoom\",this.icon=()=>u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",width:\"32\",height:\"32\",viewBox:\"0 0 32 32\"},u(\"path\",{d:\"M24.5 11.125l-2.75 2.063c-.473.353-.75.91-.75 1.5v3.124c0 .59.277 1.147.75 1.5l2.75 2.063a.938.938 0 001.5-.75v-8.75a.938.938 0 00-1.5-.75zm-4.75 9.5c0 1.035-.84 1.875-1.875 1.875H9.75A3.75 3.75 0 016 18.75v-6.875C6 10.84 6.84 10 7.875 10H16a3.75 3.75 0 013.75 3.75v6.875z\",fill:\"#2E8CFF\",\"fill-rule\":\"evenodd\"})),this.provider=new be(e,{companionUrl:this.opts.companionUrl,companionHeaders:this.opts.companionHeaders,companionKeysParams:this.opts.companionKeysParams,companionCookiesRule:this.opts.companionCookiesRule,provider:\"zoom\",pluginId:this.id}),this.defaultLocale=Jy,this.i18nInit(),this.title=this.i18n(\"pluginNameZoom\"),this.onFirstRender=this.onFirstRender.bind(this),this.render=this.render.bind(this)}install(){this.view=new Te(this,{provider:this.provider});let{target:e}=this.opts;e&&this.mount(e,this)}uninstall(){this.view.tearDown(),this.unmount()}onFirstRender(){return Promise.all([this.provider.fetchPreAuthToken(),this.view.getFolder()])}render(e){return this.view.render(e)}};n(ir,\"Zoom\");ir.VERSION=pP.version;function nc(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(nc,\"_classPrivateFieldLooseBase\");var fP=0;function mP(i){return\"__private_\"+fP+++\"_\"+i}n(mP,\"_classPrivateFieldLooseKey\");var gP={version:\"1.1.0\"},ac={__proto__:null,Box:Xi,Dropbox:Yi,Facebook:Qi,GoogleDrive:Ji,Instagram:Zi,OneDrive:er,Unsplash:tr,Url:Ti,Zoom:ir},Bs=mP(\"installedPlugins\"),zs=class extends ve{constructor(e,t){super(e,t),Object.defineProperty(this,Bs,{writable:!0,value:new Set}),this.id=this.opts.id||\"RemoteSources\",this.type=\"preset\";let r={sources:Object.keys(ac)};if(this.opts={...r,...t},this.opts.companionUrl==null)throw new Error(\"Please specify companionUrl for RemoteSources to work, see https://uppy.io/docs/remote-sources#companionUrl\")}setOptions(e){this.uninstall(),super.setOptions(e),this.install()}install(){this.opts.sources.forEach(e=>{let t={...this.opts,sources:void 0},r=ac[e];if(r==null){let s=Object.keys(ac),o=new Intl.ListFormat(\"en\",{style:\"long\",type:\"disjunction\"});throw new Error(`Invalid plugin: \"${e}\" is not one of: ${o.format(s)}.`)}this.uppy.use(r,t),nc(this,Bs)[Bs].add(this.uppy.getPlugin(e))})}uninstall(){for(let e of nc(this,Bs)[Bs])this.uppy.removePlugin(e);nc(this,Bs)[Bs].clear()}};n(zs,\"RemoteSources\");zs.VERSION=gP.version;var Zy=n(()=>u(\"svg\",{className:\"uppy-DashboardTab-iconScreenRec\",\"aria-hidden\":\"true\",focusable:\"false\",width:\"32\",height:\"32\",viewBox:\"0 0 32 32\"},u(\"g\",{fill:\"currentcolor\",fillRule:\"evenodd\"},u(\"path\",{d:\"M24.182 9H7.818C6.81 9 6 9.742 6 10.667v10c0 .916.81 1.666 1.818 1.666h4.546V24h7.272v-1.667h4.546c1 0 1.809-.75 1.809-1.666l.009-10C26 9.742 25.182 9 24.182 9zM24 21H8V11h16v10z\"}),u(\"circle\",{cx:\"16\",cy:\"16\",r:\"2\"}))),\"default\");function lc(i){let{recording:e,onStartRecording:t,onStopRecording:r,i18n:s}=i;return e?u(\"button\",{className:\"uppy-u-reset uppy-c-btn uppy-ScreenCapture-button uppy-ScreenCapture-button--video uppy-ScreenCapture-button--stop-rec\",type:\"button\",title:s(\"stopCapturing\"),\"aria-label\":s(\"stopCapturing\"),onClick:r,\"data-uppy-super-focusable\":!0},u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\",width:\"100\",height:\"100\",viewBox:\"0 0 100 100\"},u(\"rect\",{x:\"15\",y:\"15\",width:\"70\",height:\"70\"}))):u(\"button\",{className:\"uppy-u-reset uppy-c-btn uppy-ScreenCapture-button uppy-ScreenCapture-button--video\",type:\"button\",title:s(\"startCapturing\"),\"aria-label\":s(\"startCapturing\"),onClick:t,\"data-uppy-super-focusable\":!0},u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\",width:\"100\",height:\"100\",viewBox:\"0 0 100 100\"},u(\"circle\",{cx:\"50\",cy:\"50\",r:\"40\"})))}n(lc,\"RecordButton\");function uc(i){let{recording:e,recordedVideo:t,onSubmit:r,i18n:s}=i;return t&&!e?u(\"button\",{className:\"uppy-u-reset uppy-c-btn uppy-ScreenCapture-button uppy-ScreenCapture-button--submit\",type:\"button\",title:s(\"submitRecordedFile\"),\"aria-label\":s(\"submitRecordedFile\"),onClick:r,\"data-uppy-super-focusable\":!0},u(\"svg\",{width:\"12\",height:\"9\",viewBox:\"0 0 12 9\",xmlns:\"http://www.w3.org/2000/svg\",\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\"},u(\"path\",{fill:\"#fff\",fillRule:\"nonzero\",d:\"M10.66 0L12 1.31 4.136 9 0 4.956l1.34-1.31L4.136 6.38z\"}))):null}n(uc,\"SubmitButton\");var Mu=class extends we{constructor(e){super(e),this.state={elapsedTime:0},this.wrapperStyle={width:\"100%\",height:\"100%\",display:\"flex\"},this.overlayStyle={position:\"absolute\",width:\"100%\",height:\"100%\",background:\"black\",opacity:.7},this.infoContainerStyle={marginLeft:\"auto\",marginRight:\"auto\",marginTop:\"auto\",marginBottom:\"auto\",zIndex:1,color:\"white\"},this.infotextStyle={marginLeft:\"auto\",marginRight:\"auto\",marginBottom:\"1rem\",fontSize:\"1.5rem\"},this.timeStyle={display:\"block\",fontWeight:\"bold\",marginLeft:\"auto\",marginRight:\"auto\",fontSize:\"3rem\",fontFamily:\"Courier New\"}}startTimer(){this.timerTick(),this.timerRunning=!0}resetTimer(){clearTimeout(this.timer),this.setState({elapsedTime:0}),this.timerRunning=!1}timerTick(){this.timer=setTimeout(()=>{this.setState(e=>({elapsedTime:e.elapsedTime+1})),this.timerTick()},1e3)}fmtMSS(e){return(e-(e%=60))/60+(e>9?\":\":\":0\")+e}render(){let{recording:e,i18n:t}={...this.props},{elapsedTime:r}=this.state,s=this.fmtMSS(r);return e&&!this.timerRunning&&this.startTimer(),!e&&this.timerRunning&&this.resetTimer(),e?u(\"div\",{style:this.wrapperStyle},u(\"div\",{style:this.overlayStyle}),u(\"div\",{style:this.infoContainerStyle},u(\"div\",{style:this.infotextStyle},t(\"recording\")),u(\"div\",{style:this.timeStyle},s))):null}};n(Mu,\"StopWatch\");var ev=Mu;var tv=n(i=>{let{streamActive:e,i18n:t}=i;return e?u(\"div\",{title:t(\"streamActive\"),\"aria-label\":t(\"streamActive\"),className:\"uppy-ScreenCapture-icon--stream uppy-ScreenCapture-icon--streamActive\"},u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",width:\"24\",height:\"24\",viewBox:\"0 0 24 24\"},u(\"path\",{d:\"M0 0h24v24H0z\",opacity:\".1\",fill:\"none\"}),u(\"path\",{d:\"M0 0h24v24H0z\",fill:\"none\"}),u(\"path\",{d:\"M1 18v3h3c0-1.66-1.34-3-3-3zm0-4v2c2.76 0 5 2.24 5 5h2c0-3.87-3.13-7-7-7zm18-7H5v1.63c3.96 1.28 7.09 4.41 8.37 8.37H19V7zM1 10v2c4.97 0 9 4.03 9 9h2c0-6.08-4.93-11-11-11zm20-7H3c-1.1 0-2 .9-2 2v3h2V5h18v14h-7v2h7c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z\"}))):u(\"div\",{title:t(\"streamPassive\"),\"aria-label\":t(\"streamPassive\"),className:\"uppy-ScreenCapture-icon--stream\"},u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",width:\"24\",height:\"24\",viewBox:\"0 0 24 24\"},u(\"path\",{d:\"M0 0h24v24H0z\",opacity:\".1\",fill:\"none\"}),u(\"path\",{d:\"M0 0h24v24H0z\",fill:\"none\"}),u(\"path\",{d:\"M21 3H3c-1.1 0-2 .9-2 2v3h2V5h18v14h-7v2h7c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM1 18v3h3c0-1.66-1.34-3-3-3zm0-4v2c2.76 0 5 2.24 5 5h2c0-3.87-3.13-7-7-7zm0-4v2c4.97 0 9 4.03 9 9h2c0-6.08-4.93-11-11-11z\"})))},\"default\");function hc(){return hc=Object.assign?Object.assign.bind():function(i){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[r]=t[r])}return i},hc.apply(this,arguments)}n(hc,\"_extends\");var Lu=class extends we{componentWillUnmount(){let{onStop:e}=this.props;e()}render(){let{recording:e,stream:t,recordedVideo:r}=this.props,s={playsinline:!0};return(e||!r&&!e)&&(s.muted=!0,s.autoplay=!0,s.srcObject=t),r&&!e&&(s.muted=!1,s.controls=!0,s.src=r,this.videoElement&&(this.videoElement.srcObject=void 0)),u(\"div\",{className:\"uppy uppy-ScreenCapture-container\"},u(\"div\",{className:\"uppy-ScreenCapture-videoContainer\"},u(tv,this.props),u(\"video\",hc({ref:o=>{this.videoElement=o},className:\"uppy-ScreenCapture-video\"},s)),u(ev,this.props)),u(\"div\",{className:\"uppy-ScreenCapture-buttonContainer\"},u(lc,this.props),u(uc,this.props)))}};n(Lu,\"RecorderScreen\");var iv=Lu;var rv={strings:{startCapturing:\"Begin screen capturing\",stopCapturing:\"Stop screen capturing\",submitRecordedFile:\"Submit recorded file\",streamActive:\"Stream active\",streamPassive:\"Stream passive\",micDisabled:\"Microphone access denied by user\",recording:\"Recording\"}};function dc(){return dc=Object.assign?Object.assign.bind():function(i){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[r]=t[r])}return i},dc.apply(this,arguments)}n(dc,\"_extends\");var yP={version:\"3.1.3\"};function vP(){var i;return window.MediaRecorder&&((i=navigator.mediaDevices)==null?void 0:i.getDisplayMedia)}n(vP,\"isScreenRecordingSupported\");function bP(){return window.MediaRecorder&&navigator.mediaDevices}n(bP,\"getMediaDevices\");var as=class extends Z{constructor(e,t){super(e,t),this.mediaDevices=bP(),this.protocol=location.protocol===\"https:\"?\"https\":\"http\",this.id=this.opts.id||\"ScreenCapture\",this.title=this.opts.title||\"Screencast\",this.type=\"acquirer\",this.icon=Zy,this.defaultLocale=rv;let r={displayMediaConstraints:{video:{width:1280,height:720,frameRate:{ideal:3,max:5},cursor:\"motion\",displaySurface:\"monitor\"}},userMediaConstraints:{audio:!0},preferredVideoMimeType:\"video/webm\"};this.opts={...r,...t},this.i18nInit(),this.install=this.install.bind(this),this.setPluginState=this.setPluginState.bind(this),this.render=this.render.bind(this),this.start=this.start.bind(this),this.stop=this.stop.bind(this),this.startRecording=this.startRecording.bind(this),this.stopRecording=this.stopRecording.bind(this),this.submit=this.submit.bind(this),this.streamInterrupted=this.streamInactivated.bind(this),this.captureActive=!1,this.capturedMediaFile=null}install(){if(!vP())return this.uppy.log(\"Screen recorder access is not supported\",\"warning\"),null;this.setPluginState({streamActive:!1,audioStreamActive:!1});let{target:e}=this.opts;e&&this.mount(e,this)}uninstall(){this.videoStream&&this.stop(),this.unmount()}start(){return this.mediaDevices?(this.captureActive=!0,this.selectAudioStreamSource(),this.selectVideoStreamSource().then(e=>{e===!1&&this.parent&&this.parent.hideAllPanels&&(this.parent.hideAllPanels(),this.captureActive=!1)})):Promise.reject(new Error(\"Screen recorder access not supported\"))}selectVideoStreamSource(){return this.videoStream?new Promise(e=>e(this.videoStream)):this.mediaDevices.getDisplayMedia(this.opts.displayMediaConstraints).then(e=>(this.videoStream=e,this.videoStream.addEventListener(\"inactive\",()=>{this.streamInactivated()}),this.setPluginState({streamActive:!0}),e)).catch(e=>(this.setPluginState({screenRecError:e}),this.userDenied=!0,setTimeout(()=>{this.userDenied=!1},1e3),!1))}selectAudioStreamSource(){return this.audioStream?new Promise(e=>e(this.audioStream)):this.mediaDevices.getUserMedia(this.opts.userMediaConstraints).then(e=>(this.audioStream=e,this.setPluginState({audioStreamActive:!0}),e)).catch(e=>(e.name===\"NotAllowedError\"&&(this.uppy.info(this.i18n(\"micDisabled\"),\"error\",5e3),this.uppy.log(this.i18n(\"micDisabled\"),\"warning\")),!1))}startRecording(){let e={};this.capturedMediaFile=null,this.recordingChunks=[];let{preferredVideoMimeType:t}=this.opts;this.selectVideoStreamSource().then(r=>{t&&MediaRecorder.isTypeSupported(t)&&Ki(t)&&(e.mimeType=t);let s=[r.getVideoTracks()[0]];this.audioStream&&s.push(this.audioStream.getAudioTracks()[0]),this.outputStream=new MediaStream(s),this.recorder=new MediaRecorder(this.outputStream,e),this.recorder.addEventListener(\"dataavailable\",o=>{this.recordingChunks.push(o.data)}),this.recorder.start(),this.setPluginState({recording:!0})}).catch(r=>{this.uppy.log(r,\"error\")})}streamInactivated(){let{recordedVideo:e,recording:t}={...this.getPluginState()};!e&&!t?this.parent&&this.parent.hideAllPanels&&this.parent.hideAllPanels():t&&(this.uppy.log(\"Capture stream inactive \\u2014 stop recording\"),this.stopRecording()),this.videoStream=null,this.audioStream=null,this.setPluginState({streamActive:!1,audioStreamActive:!1})}stopRecording(){return new Promise(t=>{this.recorder.addEventListener(\"stop\",()=>{t()}),this.recorder.stop()}).then(()=>(this.setPluginState({recording:!1}),this.getVideo())).then(t=>{this.capturedMediaFile=t,this.setPluginState({recordedVideo:URL.createObjectURL(t.data)})}).then(()=>{this.recordingChunks=null,this.recorder=null},t=>{throw this.recordingChunks=null,this.recorder=null,t})}submit(){try{this.capturedMediaFile&&this.uppy.addFile(this.capturedMediaFile)}catch(e){e.isRestriction||this.uppy.log(e,\"warning\")}}stop(){this.videoStream&&(this.videoStream.getVideoTracks().forEach(e=>{e.stop()}),this.videoStream.getAudioTracks().forEach(e=>{e.stop()}),this.videoStream=null),this.audioStream&&(this.audioStream.getAudioTracks().forEach(e=>{e.stop()}),this.audioStream.getVideoTracks().forEach(e=>{e.stop()}),this.audioStream=null),this.outputStream&&(this.outputStream.getAudioTracks().forEach(e=>{e.stop()}),this.outputStream.getVideoTracks().forEach(e=>{e.stop()}),this.outputStream=null),this.setPluginState({recordedVideo:null}),this.captureActive=!1}getVideo(){let e=this.recordingChunks[0].type,t=Ki(e);if(!t)return Promise.reject(new Error(`Could not retrieve recording: Unsupported media type \"${e}\"`));let r=`screencap-${Date.now()}.${t}`,s=new Blob(this.recordingChunks,{type:e}),o={source:this.id,name:r,data:new Blob([s],{type:e}),type:e};return Promise.resolve(o)}render(){let e=this.getPluginState();return!e.streamActive&&!this.captureActive&&!this.userDenied&&this.start(),u(iv,dc({},e,{onStartRecording:this.startRecording,onStopRecording:this.stopRecording,onStop:this.stop,onSubmit:this.submit,i18n:this.i18n,stream:this.videoStream}))}};n(as,\"ScreenCapture\");as.VERSION=yP.version;var pv=de(sv(),1);function pc(i,e,t){return new Promise(r=>{i.toBlob(r,e,t)})}n(pc,\"canvasToBlob\");function fc(){return typeof MediaRecorder==\"function\"&&!!MediaRecorder.prototype&&typeof MediaRecorder.prototype.start==\"function\"}n(fc,\"supportsMediaRecorder\");var zu=n(()=>u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",fill:\"#0097DC\",width:\"66\",height:\"55\",viewBox:\"0 0 66 55\"},u(\"path\",{d:\"M57.3 8.433c4.59 0 8.1 3.51 8.1 8.1v29.7c0 4.59-3.51 8.1-8.1 8.1H8.7c-4.59 0-8.1-3.51-8.1-8.1v-29.7c0-4.59 3.51-8.1 8.1-8.1h9.45l4.59-7.02c.54-.54 1.35-1.08 2.16-1.08h16.2c.81 0 1.62.54 2.16 1.08l4.59 7.02h9.45zM33 14.64c-8.62 0-15.393 6.773-15.393 15.393 0 8.62 6.773 15.393 15.393 15.393 8.62 0 15.393-6.773 15.393-15.393 0-8.62-6.773-15.393-15.393-15.393zM33 40c-5.648 0-9.966-4.319-9.966-9.967 0-5.647 4.318-9.966 9.966-9.966s9.966 4.319 9.966 9.966C42.966 35.681 38.648 40 33 40z\",fillRule:\"evenodd\"})),\"default\");var ov=n(i=>{let{onSnapshot:e,i18n:t}=i;return u(\"button\",{className:\"uppy-u-reset uppy-c-btn uppy-Webcam-button uppy-Webcam-button--picture\",type:\"button\",title:t(\"takePicture\"),\"aria-label\":t(\"takePicture\"),onClick:e,\"data-uppy-super-focusable\":!0},zu())},\"default\");function mc(i){let{recording:e,onStartRecording:t,onStopRecording:r,i18n:s}=i;return e?u(\"button\",{className:\"uppy-u-reset uppy-c-btn uppy-Webcam-button\",type:\"button\",title:s(\"stopRecording\"),\"aria-label\":s(\"stopRecording\"),onClick:r,\"data-uppy-super-focusable\":!0},u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\",width:\"100\",height:\"100\",viewBox:\"0 0 100 100\"},u(\"rect\",{x:\"15\",y:\"15\",width:\"70\",height:\"70\"}))):u(\"button\",{className:\"uppy-u-reset uppy-c-btn uppy-Webcam-button\",type:\"button\",title:s(\"startRecording\"),\"aria-label\":s(\"startRecording\"),onClick:t,\"data-uppy-super-focusable\":!0},u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\",width:\"100\",height:\"100\",viewBox:\"0 0 100 100\"},u(\"circle\",{cx:\"50\",cy:\"50\",r:\"40\"})))}n(mc,\"RecordButton\");function gc(i){return`${Math.floor(i/60)}:${String(i%60).padStart(2,0)}`}n(gc,\"formatSeconds\");function yc(i){let{recordingLengthSeconds:e,i18n:t}=i,r=gc(e);return u(\"span\",{\"aria-label\":t(\"recordingLength\",{recording_length:r})},r)}n(yc,\"RecordingLength\");var nv=n(i=>{let{currentDeviceId:e,videoSources:t,onChangeVideoSource:r}=i;return u(\"div\",{className:\"uppy-Webcam-videoSource\"},u(\"select\",{className:\"uppy-u-reset uppy-Webcam-videoSource-select\",onChange:s=>{r(s.target.value)}},t.map(s=>u(\"option\",{key:s.deviceId,value:s.deviceId,selected:s.deviceId===e},s.label))))},\"default\");function _P(i){let{onSubmit:e,i18n:t}=i;return u(\"button\",{className:\"uppy-u-reset uppy-c-btn uppy-Webcam-button uppy-Webcam-button--submit\",type:\"button\",title:t(\"submitRecordedFile\"),\"aria-label\":t(\"submitRecordedFile\"),onClick:e,\"data-uppy-super-focusable\":!0},u(\"svg\",{width:\"12\",height:\"9\",viewBox:\"0 0 12 9\",xmlns:\"http://www.w3.org/2000/svg\",\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\"},u(\"path\",{fill:\"#fff\",fillRule:\"nonzero\",d:\"M10.66 0L12 1.31 4.136 9 0 4.956l1.34-1.31L4.136 6.38z\"})))}n(_P,\"SubmitButton\");var av=_P;function xP(i){let{onDiscard:e,i18n:t}=i;return u(\"button\",{className:\"uppy-u-reset uppy-c-btn uppy-Webcam-button uppy-Webcam-button--discard\",type:\"button\",title:t(\"discardRecordedFile\"),\"aria-label\":t(\"discardRecordedFile\"),onClick:e,\"data-uppy-super-focusable\":!0},u(\"svg\",{width:\"13\",height:\"13\",viewBox:\"0 0 13 13\",xmlns:\"http://www.w3.org/2000/svg\",\"aria-hidden\":\"true\",focusable:\"false\",className:\"uppy-c-icon\"},u(\"g\",{fill:\"#FFF\",fillRule:\"evenodd\"},u(\"path\",{d:\"M.496 11.367L11.103.76l1.414 1.414L1.911 12.781z\"}),u(\"path\",{d:\"M11.104 12.782L.497 2.175 1.911.76l10.607 10.606z\"}))))}n(xP,\"DiscardButton\");var lv=xP;function vc(){return vc=Object.assign?Object.assign.bind():function(i){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[r]=t[r])}return i},vc.apply(this,arguments)}n(vc,\"_extends\");function ju(i,e){return i.includes(e)}n(ju,\"isModeAvailable\");var Hu=class extends we{componentDidMount(){let{onFocus:e}=this.props;e()}componentWillUnmount(){let{onStop:e}=this.props;e()}render(){let{src:e,recordedVideo:t,recording:r,modes:s,supportsRecording:o,videoSources:a,showVideoSourceDropdown:l,showRecordingLength:h,onSubmit:p,i18n:d,mirror:f,onSnapshot:y,onStartRecording:b,onStopRecording:S,onDiscardRecordedVideo:E,recordingLengthSeconds:x}=this.props,F=!!t,U=!F&&o&&(ju(s,\"video-only\")||ju(s,\"audio-only\")||ju(s,\"video-audio\")),j=!F&&ju(s,\"picture\"),G=o&&h&&!F,J=l&&a&&a.length>1,B={playsinline:!0};return t?(B.muted=!1,B.controls=!0,B.src=t,this.videoElement&&(this.videoElement.srcObject=void 0)):(B.muted=!0,B.autoplay=!0,B.srcObject=e),u(\"div\",{className:\"uppy uppy-Webcam-container\"},u(\"div\",{className:\"uppy-Webcam-videoContainer\"},u(\"video\",vc({ref:z=>this.videoElement=z,className:`uppy-Webcam-video  ${f?\"uppy-Webcam-video--mirrored\":\"\"}`},B))),u(\"div\",{className:\"uppy-Webcam-footer\"},u(\"div\",{className:\"uppy-Webcam-videoSourceContainer\"},J?nv(this.props):null),u(\"div\",{className:\"uppy-Webcam-buttonContainer\"},j&&u(ov,{onSnapshot:y,i18n:d}),U&&u(mc,{recording:r,onStartRecording:b,onStopRecording:S,i18n:d}),F&&u(av,{onSubmit:p,i18n:d}),F&&u(lv,{onDiscard:E,i18n:d})),u(\"div\",{className:\"uppy-Webcam-recordingLength\"},G&&u(yc,{recordingLengthSeconds:x,i18n:d}))))}};n(Hu,\"CameraScreen\");var uv=Hu;var hv=n(i=>{let{icon:e,i18n:t,hasCamera:r}=i;return u(\"div\",{className:\"uppy-Webcam-permissons\"},u(\"div\",{className:\"uppy-Webcam-permissonsIcon\"},e()),u(\"h1\",{className:\"uppy-Webcam-title\"},t(r?\"allowAccessTitle\":\"noCameraTitle\")),u(\"p\",null,t(r?\"allowAccessDescription\":\"noCameraDescription\")))},\"default\");var dv={strings:{pluginNameCamera:\"Camera\",noCameraTitle:\"Camera Not Available\",noCameraDescription:\"In order to take pictures or record video, please connect a camera device\",recordingStoppedMaxSize:\"Recording stopped because the file size is about to exceed the limit\",submitRecordedFile:\"Submit recorded file\",discardRecordedFile:\"Discard recorded file\",smile:\"Smile!\",takePicture:\"Take a picture\",startRecording:\"Begin video recording\",stopRecording:\"Stop video recording\",recordingLength:\"Recording length %{recording_length}\",allowAccessTitle:\"Please allow access to your camera\",allowAccessDescription:\"In order to take pictures or record video with your camera, please allow camera access for this site.\"}};function wc(){return wc=Object.assign?Object.assign.bind():function(i){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[r]=t[r])}return i},wc.apply(this,arguments)}n(wc,\"_extends\");function _a(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(_a,\"_classPrivateFieldLooseBase\");var FP=0;function EP(i){return\"__private_\"+FP+++\"_\"+i}n(EP,\"_classPrivateFieldLooseKey\");var OP={version:\"3.3.4\"};function cv(i){return i[0]===\".\"?fn[i.slice(1)]:i}n(cv,\"toMimeType\");function CP(i){return/^video\\/[^*]+$/.test(i)}n(CP,\"isVideoMimeType\");function TP(i){return/^image\\/[^*]+$/.test(i)}n(TP,\"isImageMimeType\");function AP(){return navigator.mediaDevices}n(AP,\"getMediaDevices\");function bc(i,e){return i.includes(e)}n(bc,\"isModeAvailable\");var Ai=EP(\"enableMirror\"),ls=class extends Z{constructor(e,t){super(e,t),Object.defineProperty(this,Ai,{writable:!0,value:void 0}),this.mediaDevices=AP(),this.supportsUserMedia=!!this.mediaDevices,this.protocol=location.protocol.match(/https/i)?\"https\":\"http\",this.id=this.opts.id||\"Webcam\",this.type=\"acquirer\",this.capturedMediaFile=null,this.icon=()=>u(\"svg\",{\"aria-hidden\":\"true\",focusable:\"false\",width:\"32\",height:\"32\",viewBox:\"0 0 32 32\"},u(\"path\",{d:\"M23.5 9.5c1.417 0 2.5 1.083 2.5 2.5v9.167c0 1.416-1.083 2.5-2.5 2.5h-15c-1.417 0-2.5-1.084-2.5-2.5V12c0-1.417 1.083-2.5 2.5-2.5h2.917l1.416-2.167C13 7.167 13.25 7 13.5 7h5c.25 0 .5.167.667.333L20.583 9.5H23.5zM16 11.417a4.706 4.706 0 00-4.75 4.75 4.704 4.704 0 004.75 4.75 4.703 4.703 0 004.75-4.75c0-2.663-2.09-4.75-4.75-4.75zm0 7.825c-1.744 0-3.076-1.332-3.076-3.074 0-1.745 1.333-3.077 3.076-3.077 1.744 0 3.074 1.333 3.074 3.076s-1.33 3.075-3.074 3.075z\",fill:\"#02B383\",fillRule:\"nonzero\"})),this.defaultLocale=dv;let r={onBeforeSnapshot:()=>Promise.resolve(),countdown:!1,modes:[\"video-audio\",\"video-only\",\"audio-only\",\"picture\"],mirror:!0,showVideoSourceDropdown:!1,facingMode:\"user\",videoConstraints:void 0,preferredImageMimeType:null,preferredVideoMimeType:null,showRecordingLength:!1,mobileNativeCamera:(0,pv.default)({tablet:!0})};this.opts={...r,...t},this.i18nInit(),this.title=this.i18n(\"pluginNameCamera\"),_a(this,Ai)[Ai]=this.opts.mirror,this.install=this.install.bind(this),this.setPluginState=this.setPluginState.bind(this),this.render=this.render.bind(this),this.start=this.start.bind(this),this.stop=this.stop.bind(this),this.takeSnapshot=this.takeSnapshot.bind(this),this.startRecording=this.startRecording.bind(this),this.stopRecording=this.stopRecording.bind(this),this.discardRecordedVideo=this.discardRecordedVideo.bind(this),this.submit=this.submit.bind(this),this.oneTwoThreeSmile=this.oneTwoThreeSmile.bind(this),this.focus=this.focus.bind(this),this.changeVideoSource=this.changeVideoSource.bind(this),this.webcamActive=!1,this.opts.countdown&&(this.opts.onBeforeSnapshot=this.oneTwoThreeSmile),this.setPluginState({hasCamera:!1,cameraReady:!1,cameraError:null,recordingLengthSeconds:0,videoSources:[],currentDeviceId:null})}setOptions(e){super.setOptions({...e,videoConstraints:{...this.opts.videoConstraints,...e?.videoConstraints}})}hasCameraCheck(){return this.mediaDevices?this.mediaDevices.enumerateDevices().then(e=>e.some(t=>t.kind===\"videoinput\")):Promise.resolve(!1)}isAudioOnly(){return this.opts.modes.length===1&&this.opts.modes[0]===\"audio-only\"}getConstraints(e){e===void 0&&(e=null);let t=this.opts.modes.indexOf(\"video-audio\")!==-1||this.opts.modes.indexOf(\"audio-only\")!==-1,r=!this.isAudioOnly()&&(this.opts.modes.indexOf(\"video-audio\")!==-1||this.opts.modes.indexOf(\"video-only\")!==-1||this.opts.modes.indexOf(\"picture\")!==-1),s={...this.opts.videoConstraints||{facingMode:this.opts.facingMode},...e?{deviceId:e,facingMode:null}:{}};return{audio:t,video:r?s:!1}}start(e){if(e===void 0&&(e=null),!this.supportsUserMedia)return Promise.reject(new Error(\"Webcam access not supported\"));this.webcamActive=!0,this.opts.mirror&&(_a(this,Ai)[Ai]=!0);let t=this.getConstraints(e&&e.deviceId?e.deviceId:null);this.hasCameraCheck().then(r=>(this.setPluginState({hasCamera:r}),this.mediaDevices.getUserMedia(t).then(s=>{this.stream=s;let o=null,a=this.isAudioOnly()?s.getAudioTracks():s.getVideoTracks();!e||!e.deviceId?o=a[0].getSettings().deviceId:a.forEach(l=>{l.getSettings().deviceId===e.deviceId&&(o=l.getSettings().deviceId)}),this.updateVideoSources(),this.setPluginState({currentDeviceId:o,cameraReady:!0})}).catch(s=>{this.setPluginState({cameraReady:!1,cameraError:s}),this.uppy.info(s.message,\"error\")})))}getMediaRecorderOptions(){let e={};if(MediaRecorder.isTypeSupported){let{restrictions:t}=this.uppy.opts,r=[];this.opts.preferredVideoMimeType?r=[this.opts.preferredVideoMimeType]:t.allowedFileTypes&&(r=t.allowedFileTypes.map(cv).filter(CP));let s=n(a=>MediaRecorder.isTypeSupported(a)&&Ki(a),\"filterSupportedTypes\"),o=r.filter(s);o.length>0&&(e.mimeType=o[0])}return e}startRecording(){this.recorder=new MediaRecorder(this.stream,this.getMediaRecorderOptions()),this.recordingChunks=[];let e=!1;this.recorder.addEventListener(\"dataavailable\",t=>{this.recordingChunks.push(t.data);let{restrictions:r}=this.uppy.opts;if(this.recordingChunks.length>1&&r.maxFileSize!=null&&!e){let s=this.recordingChunks.reduce((h,p)=>h+p.size,0),a=(s-this.recordingChunks[0].size)/(this.recordingChunks.length-1)*3,l=Math.max(0,r.maxFileSize-a);s>l&&(e=!0,this.uppy.info(this.i18n(\"recordingStoppedMaxSize\"),\"warning\",4e3),this.stopRecording())}}),this.recorder.start(500),this.opts.showRecordingLength&&(this.recordingLengthTimer=setInterval(()=>{let t=this.getPluginState().recordingLengthSeconds;this.setPluginState({recordingLengthSeconds:t+1})},1e3)),this.setPluginState({isRecording:!0})}stopRecording(){return new Promise(t=>{this.recorder.addEventListener(\"stop\",()=>{t()}),this.recorder.stop(),this.opts.showRecordingLength&&(clearInterval(this.recordingLengthTimer),this.setPluginState({recordingLengthSeconds:0}))}).then(()=>(this.setPluginState({isRecording:!1}),this.getVideo())).then(t=>{try{this.capturedMediaFile=t,this.setPluginState({recordedVideo:URL.createObjectURL(t.data)}),_a(this,Ai)[Ai]=!1}catch(r){r.isRestriction||this.uppy.log(r)}}).then(()=>{this.recordingChunks=null,this.recorder=null},t=>{throw this.recordingChunks=null,this.recorder=null,t})}discardRecordedVideo(){this.setPluginState({recordedVideo:null}),this.opts.mirror&&(_a(this,Ai)[Ai]=!0),this.capturedMediaFile=null}submit(){try{this.capturedMediaFile&&this.uppy.addFile(this.capturedMediaFile)}catch(e){e.isRestriction||this.uppy.log(e,\"error\")}}async stop(){if(this.stream){let e=this.stream.getAudioTracks(),t=this.stream.getVideoTracks();e.concat(t).forEach(r=>r.stop())}this.recorder&&await new Promise(e=>{this.recorder.addEventListener(\"stop\",e,{once:!0}),this.recorder.stop(),this.opts.showRecordingLength&&clearInterval(this.recordingLengthTimer)}),this.recordingChunks=null,this.recorder=null,this.webcamActive=!1,this.stream=null,this.setPluginState({recordedVideo:null,isRecording:!1,recordingLengthSeconds:0})}getVideoElement(){return this.el.querySelector(\".uppy-Webcam-video\")}oneTwoThreeSmile(){return new Promise((e,t)=>{let r=this.opts.countdown,s=setInterval(()=>{if(!this.webcamActive)return clearInterval(s),this.captureInProgress=!1,t(new Error(\"Webcam is not active\"));r>0?(this.uppy.info(`${r}...`,\"warning\",800),r--):(clearInterval(s),this.uppy.info(this.i18n(\"smile\"),\"success\",1500),setTimeout(()=>e(),1500))},1e3)})}takeSnapshot(){this.captureInProgress||(this.captureInProgress=!0,this.opts.onBeforeSnapshot().catch(e=>{let t=typeof e==\"object\"?e.message:e;return this.uppy.info(t,\"error\",5e3),Promise.reject(new Error(`onBeforeSnapshot: ${t}`))}).then(()=>this.getImage()).then(e=>{this.captureInProgress=!1;try{this.uppy.addFile(e)}catch(t){t.isRestriction||this.uppy.log(t)}},e=>{throw this.captureInProgress=!1,e}))}getImage(){let e=this.getVideoElement();if(!e)return Promise.reject(new Error(\"No video element found, likely due to the Webcam tab being closed.\"));let t=e.videoWidth,r=e.videoHeight,s=document.createElement(\"canvas\");s.width=t,s.height=r,s.getContext(\"2d\").drawImage(e,0,0);let{restrictions:a}=this.uppy.opts,l=[];this.opts.preferredImageMimeType?l=[this.opts.preferredImageMimeType]:a.allowedFileTypes&&(l=a.allowedFileTypes.map(cv).filter(TP));let h=l[0]||\"image/jpeg\",p=Ki(h)||\"jpg\",d=`cam-${Date.now()}.${p}`;return pc(s,h).then(f=>({source:this.id,name:d,data:new Blob([f],{type:h}),type:h}))}getVideo(){let e=this.recordingChunks.find(a=>{var l;return((l=a.type)==null?void 0:l.length)>0}).type,t=Ki(e);if(!t)return Promise.reject(new Error(`Could not retrieve recording: Unsupported media type \"${e}\"`));let r=`webcam-${Date.now()}.${t}`,s=new Blob(this.recordingChunks,{type:e}),o={source:this.id,name:r,data:new Blob([s],{type:e}),type:e};return Promise.resolve(o)}focus(){this.opts.countdown&&setTimeout(()=>{this.uppy.info(this.i18n(\"smile\"),\"success\",1500)},1e3)}changeVideoSource(e){this.stop(),this.start({deviceId:e})}updateVideoSources(){this.mediaDevices.enumerateDevices().then(e=>{this.setPluginState({videoSources:e.filter(t=>t.kind===\"videoinput\")})})}render(){this.webcamActive||this.start();let e=this.getPluginState();return!e.cameraReady||!e.hasCamera?u(hv,{icon:zu,i18n:this.i18n,hasCamera:e.hasCamera}):u(uv,wc({},e,{onChangeVideoSource:this.changeVideoSource,onSnapshot:this.takeSnapshot,onStartRecording:this.startRecording,onStopRecording:this.stopRecording,onDiscardRecordedVideo:this.discardRecordedVideo,onSubmit:this.submit,onFocus:this.focus,onStop:this.stop,i18n:this.i18n,modes:this.opts.modes,showRecordingLength:this.opts.showRecordingLength,showVideoSourceDropdown:this.opts.showVideoSourceDropdown,supportsRecording:fc(),recording:e.isRecording,mirror:_a(this,Ai)[Ai],src:this.stream}))}install(){let{mobileNativeCamera:e,modes:t,facingMode:r,videoConstraints:s}=this.opts,{target:o}=this.opts;if(e&&o){var a;(a=this.getTargetPlugin(o))==null||a.setOptions({showNativeVideoCameraButton:bc(t,\"video-only\")||bc(t,\"video-audio\"),showNativePhotoCameraButton:bc(t,\"picture\"),nativeCameraFacingMode:s?.facingMode||r});return}this.setPluginState({cameraReady:!1,recordingLengthSeconds:0}),o&&this.mount(o,this),this.mediaDevices&&(this.updateVideoSources(),this.mediaDevices.ondevicechange=()=>{if(this.updateVideoSources(),this.stream){let l=!0,{videoSources:h,currentDeviceId:p}=this.getPluginState();h.forEach(d=>{p===d.deviceId&&(l=!1)}),l&&(this.stop(),this.start())}})}uninstall(){this.stop(),this.unmount()}onUnmount(){this.stop()}};n(ls,\"Webcam\");ls.VERSION=OP.version;function Dr(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(Dr,\"_classPrivateFieldLooseBase\");var RP=0;function fv(i){return\"__private_\"+RP+++\"_\"+i}n(fv,\"_classPrivateFieldLooseKey\");var Dt=fv(\"uppy\"),xa=fv(\"events\"),mi=class{constructor(e){Object.defineProperty(this,Dt,{writable:!0,value:void 0}),Object.defineProperty(this,xa,{writable:!0,value:[]}),Dr(this,Dt)[Dt]=e}on(e,t){return Dr(this,xa)[xa].push([e,t]),Dr(this,Dt)[Dt].on(e,t)}remove(){for(let[e,t]of Dr(this,xa)[xa].splice(0))Dr(this,Dt)[Dt].off(e,t)}onFilePause(e,t){this.on(\"upload-pause\",(r,s)=>{e===r&&t(s)})}onFileRemove(e,t){this.on(\"file-removed\",r=>{e===r.id&&t(r.id)})}onPause(e,t){this.on(\"upload-pause\",(r,s)=>{e===r&&t(s)})}onRetry(e,t){this.on(\"upload-retry\",r=>{e===r&&t()})}onRetryAll(e,t){this.on(\"retry-all\",()=>{Dr(this,Dt)[Dt].getFile(e)&&t()})}onPauseAll(e,t){this.on(\"pause-all\",()=>{Dr(this,Dt)[Dt].getFile(e)&&t()})}onCancelAll(e,t){var r=this;this.on(\"cancel-all\",function(){Dr(r,Dt)[Dt].getFile(e)&&t(...arguments)})}onResumeAll(e,t){this.on(\"resume-all\",()=>{Dr(this,Dt)[Dt].getFile(e)&&t()})}};n(mi,\"EventManager\");function Y(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(Y,\"_classPrivateFieldLooseBase\");var UP=0;function qt(i){return\"__private_\"+UP+++\"_\"+i}n(qt,\"_classPrivateFieldLooseKey\");function kP(i){return new Error(\"Cancelled\",{cause:i})}n(kP,\"createCancelError\");function mv(i){if(i!=null){var e;let t=n(()=>this.abort(i.reason),\"abortPromise\");i.addEventListener(\"abort\",t,{once:!0});let r=n(()=>{i.removeEventListener(\"abort\",t)},\"removeAbortListener\");(e=this.then)==null||e.call(this,r,r)}return this}n(mv,\"abortOn\");var ii=qt(\"activeRequests\"),Nt=qt(\"queuedHandlers\"),ti=qt(\"paused\"),js=qt(\"pauseTimer\"),It=qt(\"downLimit\"),Hs=qt(\"upperLimit\"),Ir=qt(\"rateLimitingTimer\"),Fa=qt(\"call\"),Nr=qt(\"queueNext\"),_c=qt(\"next\"),Sc=qt(\"queue\"),xc=qt(\"dequeue\"),Pc=qt(\"resume\"),$s=qt(\"increaseLimit\"),Mt=class{constructor(e){Object.defineProperty(this,xc,{value:LP}),Object.defineProperty(this,Sc,{value:MP}),Object.defineProperty(this,_c,{value:NP}),Object.defineProperty(this,Nr,{value:IP}),Object.defineProperty(this,Fa,{value:DP}),Object.defineProperty(this,ii,{writable:!0,value:0}),Object.defineProperty(this,Nt,{writable:!0,value:[]}),Object.defineProperty(this,ti,{writable:!0,value:!1}),Object.defineProperty(this,js,{writable:!0,value:void 0}),Object.defineProperty(this,It,{writable:!0,value:1}),Object.defineProperty(this,Hs,{writable:!0,value:void 0}),Object.defineProperty(this,Ir,{writable:!0,value:void 0}),Object.defineProperty(this,Pc,{writable:!0,value:()=>this.resume()}),Object.defineProperty(this,$s,{writable:!0,value:()=>{if(Y(this,ti)[ti]){Y(this,Ir)[Ir]=setTimeout(Y(this,$s)[$s],0);return}Y(this,It)[It]=this.limit,this.limit=Math.ceil((Y(this,Hs)[Hs]+Y(this,It)[It])/2);for(let t=Y(this,It)[It];t<=this.limit;t++)Y(this,Nr)[Nr]();Y(this,Hs)[Hs]-Y(this,It)[It]>3?Y(this,Ir)[Ir]=setTimeout(Y(this,$s)[$s],2e3):Y(this,It)[It]=Math.floor(Y(this,It)[It]/2)}}),typeof e!=\"number\"||e===0?this.limit=1/0:this.limit=e}run(e,t){return!Y(this,ti)[ti]&&Y(this,ii)[ii]<this.limit?Y(this,Fa)[Fa](e):Y(this,Sc)[Sc](e,t)}wrapSyncFunction(e,t){var r=this;return function(){for(var s=arguments.length,o=new Array(s),a=0;a<s;a++)o[a]=arguments[a];let l=r.run(()=>(e(...o),queueMicrotask(()=>l.done()),()=>{}),t);return{abortOn:mv,abort(){l.abort()}}}}wrapPromiseFunction(e,t){var r=this;return function(){for(var s=arguments.length,o=new Array(s),a=0;a<s;a++)o[a]=arguments[a];let l,h=new Promise((p,d)=>{l=r.run(()=>{let f,y;try{y=Promise.resolve(e(...o))}catch(b){y=Promise.reject(b)}return y.then(b=>{f?d(f):(l.done(),p(b))},b=>{f?d(f):(l.done(),d(b))}),b=>{f=kP(b)}},t)});return h.abort=p=>{l.abort(p)},h.abortOn=mv,h}}resume(){Y(this,ti)[ti]=!1,clearTimeout(Y(this,js)[js]);for(let e=0;e<this.limit;e++)Y(this,Nr)[Nr]()}pause(e){e===void 0&&(e=null),Y(this,ti)[ti]=!0,clearTimeout(Y(this,js)[js]),e!=null&&(Y(this,js)[js]=setTimeout(Y(this,Pc)[Pc],e))}rateLimit(e){clearTimeout(Y(this,Ir)[Ir]),this.pause(e),this.limit>1&&Number.isFinite(this.limit)&&(Y(this,Hs)[Hs]=this.limit-1,this.limit=Y(this,It)[It],Y(this,Ir)[Ir]=setTimeout(Y(this,$s)[$s],e))}get isPaused(){return Y(this,ti)[ti]}};n(Mt,\"RateLimitedQueue\");function DP(i){Y(this,ii)[ii]+=1;let e=!1,t;try{t=i()}catch(r){throw Y(this,ii)[ii]-=1,r}return{abort:r=>{e||(e=!0,Y(this,ii)[ii]-=1,t?.(r),Y(this,Nr)[Nr]())},done:()=>{e||(e=!0,Y(this,ii)[ii]-=1,Y(this,Nr)[Nr]())}}}n(DP,\"_call2\");function IP(){queueMicrotask(()=>Y(this,_c)[_c]())}n(IP,\"_queueNext2\");function NP(){if(Y(this,ti)[ti]||Y(this,ii)[ii]>=this.limit||Y(this,Nt)[Nt].length===0)return;let i=Y(this,Nt)[Nt].shift(),e=Y(this,Fa)[Fa](i.fn);i.abort=e.abort,i.done=e.done}n(NP,\"_next2\");function MP(i,e){e===void 0&&(e={});let t={fn:i,priority:e.priority||0,abort:()=>{Y(this,xc)[xc](t)},done:()=>{throw new Error(\"Cannot mark a queued request as done: this indicates a bug\")}},r=Y(this,Nt)[Nt].findIndex(s=>t.priority>s.priority);return r===-1?Y(this,Nt)[Nt].push(t):Y(this,Nt)[Nt].splice(r,0,t),t}n(MP,\"_queue2\");function LP(i){let e=Y(this,Nt)[Nt].indexOf(i);e!==-1&&Y(this,Nt)[Nt].splice(e,1)}n(LP,\"_dequeue2\");var us=Symbol(\"__queue\");function hs(i){let e=n(t=>\"error\"in t&&!!t.error,\"hasError\");return i.filter(t=>!e(t))}n(hs,\"filterNonFailedFiles\");function ds(i){return i.filter(e=>{var t;return!((t=e.progress)!=null&&t.uploadStarted)||!e.isRestored})}n(ds,\"filterFilesToEmitUploadStarted\");var{AbortController:$u}=globalThis,{AbortSignal:w7}=globalThis,Fc=n(function(i,e){i===void 0&&(i=\"Aborted\");let t=new DOMException(i,\"AbortError\");return e!=null&&Ct(e,\"cause\")&&Object.defineProperty(t,\"cause\",{__proto__:null,configurable:!0,writable:!0,value:e.cause}),t},\"createAbortError\");function $(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n($,\"_classPrivateFieldLooseBase\");var BP=0;function st(i){return\"__private_\"+BP+++\"_\"+i}n(st,\"_classPrivateFieldLooseKey\");var zP=1024*1024,gv={getChunkSize(i){return Math.ceil(i.size/1e4)},onProgress(){},onPartComplete(){},onSuccess(){},onError(i){throw i}};function jP(i){if(typeof i==\"string\")return parseInt(i,10);if(typeof i==\"number\")return i;throw new TypeError(\"Expected a number\")}n(jP,\"ensureInt\");var Ra=Symbol(\"pausing upload, not an actual error\"),ft=st(\"abortController\"),rt=st(\"chunks\"),Lt=st(\"chunkState\"),ri=st(\"data\"),si=st(\"file\"),Ua=st(\"uploadHasStarted\"),Ea=st(\"onError\"),Ws=st(\"onSuccess\"),Mr=st(\"shouldUseMultipart\"),Vs=st(\"isRestoring\"),ka=st(\"onReject\"),qs=st(\"maxMultipartParts\"),Ca=st(\"minPartSize\"),Ec=st(\"initChunks\"),Oc=st(\"createUpload\"),Oa=st(\"resumeUpload\"),Ta=st(\"onPartProgress\"),Aa=st(\"onPartComplete\"),Cc=st(\"abortUpload\"),qu=class{constructor(e,t){var r,s;Object.defineProperty(this,Cc,{value:VP}),Object.defineProperty(this,Oa,{value:qP}),Object.defineProperty(this,Oc,{value:$P}),Object.defineProperty(this,Ec,{value:HP}),Object.defineProperty(this,ft,{writable:!0,value:new $u}),Object.defineProperty(this,rt,{writable:!0,value:void 0}),Object.defineProperty(this,Lt,{writable:!0,value:void 0}),Object.defineProperty(this,ri,{writable:!0,value:void 0}),Object.defineProperty(this,si,{writable:!0,value:void 0}),Object.defineProperty(this,Ua,{writable:!0,value:!1}),Object.defineProperty(this,Ea,{writable:!0,value:void 0}),Object.defineProperty(this,Ws,{writable:!0,value:void 0}),Object.defineProperty(this,Mr,{writable:!0,value:void 0}),Object.defineProperty(this,Vs,{writable:!0,value:void 0}),Object.defineProperty(this,ka,{writable:!0,value:o=>o?.cause===Ra?null:$(this,Ea)[Ea](o)}),Object.defineProperty(this,qs,{writable:!0,value:1e4}),Object.defineProperty(this,Ca,{writable:!0,value:5*zP}),Object.defineProperty(this,Ta,{writable:!0,value:o=>a=>{if(!a.lengthComputable)return;$(this,Lt)[Lt][o].uploaded=jP(a.loaded);let l=$(this,Lt)[Lt].reduce((h,p)=>h+p.uploaded,0);this.options.onProgress(l,$(this,ri)[ri].size)}}),Object.defineProperty(this,Aa,{writable:!0,value:o=>a=>{$(this,rt)[rt][o]=null,$(this,Lt)[Lt][o].etag=a,$(this,Lt)[Lt][o].done=!0;let l={PartNumber:o+1,ETag:a};this.options.onPartComplete(l)}}),this.options={...gv,...t},(s=(r=this.options).getChunkSize)!=null||(r.getChunkSize=gv.getChunkSize),$(this,ri)[ri]=e,$(this,si)[si]=t.file,$(this,Ws)[Ws]=this.options.onSuccess,$(this,Ea)[Ea]=this.options.onError,$(this,Mr)[Mr]=this.options.shouldUseMultipart,$(this,Vs)[Vs]=t.uploadId&&t.key,$(this,Ec)[Ec]()}start(){$(this,Ua)[Ua]?($(this,ft)[ft].signal.aborted||$(this,ft)[ft].abort(Ra),$(this,ft)[ft]=new $u,$(this,Oa)[Oa]()):$(this,Vs)[Vs]?(this.options.companionComm.restoreUploadFile($(this,si)[si],{uploadId:this.options.uploadId,key:this.options.key}),$(this,Oa)[Oa]()):$(this,Oc)[Oc]()}pause(){$(this,ft)[ft].abort(Ra),$(this,ft)[ft]=new $u}abort(e){var t;e===void 0&&(e=void 0),(t=e)!=null&&t.really?$(this,Cc)[Cc]():this.pause()}get chunkState(){return $(this,Lt)[Lt]}};n(qu,\"MultipartUploader\");function HP(){let i=$(this,ri)[ri].size,e=typeof $(this,Mr)[Mr]==\"function\"?$(this,Mr)[Mr]($(this,si)[si]):!!$(this,Mr)[Mr];if(e&&i>$(this,Ca)[Ca]){let t=Math.max(this.options.getChunkSize($(this,ri)[ri]),$(this,Ca)[Ca]),r=Math.floor(i/t);r>$(this,qs)[qs]&&(r=$(this,qs)[qs],t=i/$(this,qs)[qs]),$(this,rt)[rt]=Array(r);for(let s=0,o=0;s<i;s+=t,o++){let a=Math.min(i,s+t),l=n(()=>{let h=s;return $(this,ri)[ri].slice(h,a)},\"getData\");if($(this,rt)[rt][o]={getData:l,onProgress:$(this,Ta)[Ta](o),onComplete:$(this,Aa)[Aa](o),shouldUseMultipart:e},$(this,Vs)[Vs]){let h=s+t>i?i-s:t;$(this,rt)[rt][o].setAsUploaded=()=>{$(this,rt)[rt][o]=null,$(this,Lt)[Lt][o].uploaded=h}}}}else $(this,rt)[rt]=[{getData:()=>$(this,ri)[ri],onProgress:$(this,Ta)[Ta](0),onComplete:$(this,Aa)[Aa](0),shouldUseMultipart:e}];$(this,Lt)[Lt]=$(this,rt)[rt].map(()=>({uploaded:0}))}n(HP,\"_initChunks2\");function $P(){this.options.companionComm.uploadFile($(this,si)[si],$(this,rt)[rt],$(this,ft)[ft].signal).then($(this,Ws)[Ws],$(this,ka)[ka]),$(this,Ua)[Ua]=!0}n($P,\"_createUpload2\");function qP(){this.options.companionComm.resumeUploadFile($(this,si)[si],$(this,rt)[rt],$(this,ft)[ft].signal).then($(this,Ws)[Ws],$(this,ka)[ka])}n(qP,\"_resumeUpload2\");function VP(){$(this,ft)[ft].abort(),this.options.companionComm.abortFileUpload($(this,si)[si]).catch(i=>this.options.log(i))}n(VP,\"_abortUpload2\");var yv=qu;function WP(i){let{method:e=\"PUT\",CanonicalUri:t=\"/\",CanonicalQueryString:r=\"\",SignedHeaders:s,HashedPayload:o}=i,a=Object.keys(s).map(l=>l.toLowerCase()).sort();return[e,t,r,...a.map(l=>`${l}:${s[l]}`),\"\",a.join(\";\"),o].join(`\n`)}n(WP,\"createCanonicalRequest\");var Tc=new TextEncoder,Ac={name:\"HMAC\",hash:\"SHA-256\"};async function GP(i){let{subtle:e}=globalThis.crypto;return e.digest(Ac.hash,Tc.encode(i))}n(GP,\"digest\");async function KP(i){let{subtle:e}=globalThis.crypto;return e.importKey(\"raw\",typeof i==\"string\"?Tc.encode(i):i,Ac,!1,[\"sign\"])}n(KP,\"generateHmacKey\");function vv(i){let e=new Uint8Array(i),t=\"\";for(let r=0;r<e.length;r++)t+=e[r].toString(16).padStart(2,\"0\");return t}n(vv,\"arrayBufferToHexString\");async function Da(i,e){let{subtle:t}=globalThis.crypto;return t.sign(Ac,await KP(i),Tc.encode(e))}n(Da,\"hash\");async function Rc(i){let{accountKey:e,accountSecret:t,sessionToken:r,bucketName:s,Key:o,Region:a,expires:l,uploadId:h,partNumber:p}=i,d=\"s3\",f=`${s}.${d}.${a}.amazonaws.com`,y=`/${encodeURI(o)}`,b=\"UNSIGNED-PAYLOAD\",S=new Date().toISOString().replace(/[-:]|\\.\\d+/g,\"\"),E=S.slice(0,8),x=`${E}/${a}/${d}/aws4_request`,F=new URL(`https://${f}${y}`);F.searchParams.set(\"X-Amz-Algorithm\",\"AWS4-HMAC-SHA256\"),F.searchParams.set(\"X-Amz-Content-Sha256\",b),F.searchParams.set(\"X-Amz-Credential\",`${e}/${x}`),F.searchParams.set(\"X-Amz-Date\",S),F.searchParams.set(\"X-Amz-Expires\",l),F.searchParams.set(\"X-Amz-Security-Token\",r),F.searchParams.set(\"X-Amz-SignedHeaders\",\"host\"),p&&F.searchParams.set(\"partNumber\",p),h&&F.searchParams.set(\"uploadId\",h),F.searchParams.set(\"x-id\",p&&h?\"UploadPart\":\"PutObject\");let U=WP({CanonicalUri:y,CanonicalQueryString:F.search.slice(1),SignedHeaders:{host:f},HashedPayload:b}),j=vv(await GP(U)),G=[\"AWS4-HMAC-SHA256\",S,x,j].join(`\n`),J=await Da(`AWS4${t}`,E),B=await Da(J,a),z=await Da(B,d),K=await Da(z,\"aws4_request\"),oe=vv(await Da(K,G));return F.searchParams.set(\"X-Amz-Signature\",oe),F}n(Rc,\"createSignedURL\");var wv;function N(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(N,\"_classPrivateFieldLooseBase\");var XP=0;function Pe(i){return\"__private_\"+XP+++\"_\"+i}n(Pe,\"_classPrivateFieldLooseKey\");var YP={version:\"3.9.0\"};function Go(i){if(i&&i.error){let e=new Error(i.message);throw Object.assign(e,i.error),e}return i}n(Go,\"assertServerError\");function QP(i){let e=new URL(i);return e.search=\"\",e.hash=\"\",e.href}n(QP,\"removeMetadataFromURL\");function Sv(i){let e=i.Expiration;if(e){let t=Math.floor((new Date(e)-Date.now())/1e3);if(t>9)return t}}n(Sv,\"getExpiry\");function bv(i){let{meta:e,allowedMetaFields:t,querify:r=!1}=i,s=t??Object.keys(e);return e?Object.fromEntries(s.filter(o=>e[o]!=null).map(o=>{let a=r?`metadata[${o}]`:o,l=String(e[o]);return[a,l]})):{}}n(bv,\"getAllowedMetadata\");function xt(i){if(i!=null&&i.aborted)throw Fc(\"The operation was aborted\",{cause:i.reason})}n(xt,\"throwIfAborted\");var Ia=Pe(\"abortMultipartUpload\"),mt=Pe(\"cache\"),Na=Pe(\"createMultipartUpload\"),Ma=Pe(\"fetchSignature\"),Ha=Pe(\"getUploadParameters\"),La=Pe(\"listParts\"),Qs=Pe(\"previousRetryDelay\"),Js=Pe(\"requests\"),Gs=Pe(\"retryDelays\"),Ks=Pe(\"sendCompletionRequest\"),Xs=Pe(\"setS3MultipartState\"),Zs=Pe(\"uploadPartBytes\"),yt=Pe(\"getFile\"),Uc=Pe(\"shouldRetry\"),Ba=Pe(\"nonMultipartUpload\"),Vu=class{constructor(e,t,r,s){Object.defineProperty(this,Ba,{value:ZP}),Object.defineProperty(this,Uc,{value:JP}),Object.defineProperty(this,Ia,{writable:!0,value:void 0}),Object.defineProperty(this,mt,{writable:!0,value:new WeakMap}),Object.defineProperty(this,Na,{writable:!0,value:void 0}),Object.defineProperty(this,Ma,{writable:!0,value:void 0}),Object.defineProperty(this,Ha,{writable:!0,value:void 0}),Object.defineProperty(this,La,{writable:!0,value:void 0}),Object.defineProperty(this,Qs,{writable:!0,value:void 0}),Object.defineProperty(this,Js,{writable:!0,value:void 0}),Object.defineProperty(this,Gs,{writable:!0,value:void 0}),Object.defineProperty(this,Ks,{writable:!0,value:void 0}),Object.defineProperty(this,Xs,{writable:!0,value:void 0}),Object.defineProperty(this,Zs,{writable:!0,value:void 0}),Object.defineProperty(this,yt,{writable:!0,value:void 0}),N(this,Js)[Js]=e,N(this,Xs)[Xs]=r,N(this,yt)[yt]=s,this.setOptions(t)}setOptions(e){let t=N(this,Js)[Js];if(\"abortMultipartUpload\"in e&&(N(this,Ia)[Ia]=t.wrapPromiseFunction(e.abortMultipartUpload,{priority:1})),\"createMultipartUpload\"in e&&(N(this,Na)[Na]=t.wrapPromiseFunction(e.createMultipartUpload,{priority:-1})),\"signPart\"in e&&(N(this,Ma)[Ma]=t.wrapPromiseFunction(e.signPart)),\"listParts\"in e&&(N(this,La)[La]=t.wrapPromiseFunction(e.listParts)),\"completeMultipartUpload\"in e&&(N(this,Ks)[Ks]=t.wrapPromiseFunction(e.completeMultipartUpload,{priority:1})),\"retryDelays\"in e){var r;N(this,Gs)[Gs]=(r=e.retryDelays)!=null?r:[]}\"uploadPartBytes\"in e&&(N(this,Zs)[Zs]=t.wrapPromiseFunction(e.uploadPartBytes,{priority:1/0})),\"getUploadParameters\"in e&&(N(this,Ha)[Ha]=t.wrapPromiseFunction(e.getUploadParameters))}async getUploadId(e,t){let r;for(;(r=N(this,mt)[mt].get(e.data))!=null;)try{return await r}catch{}let s=N(this,Na)[Na](N(this,yt)[yt](e),t),o=n(()=>{s.abort(t.reason),N(this,mt)[mt].delete(e.data)},\"abortPromise\");return t.addEventListener(\"abort\",o,{once:!0}),N(this,mt)[mt].set(e.data,s),s.then(async a=>{t.removeEventListener(\"abort\",o),N(this,Xs)[Xs](e,a),N(this,mt)[mt].set(e.data,a)},()=>{t.removeEventListener(\"abort\",o),N(this,mt)[mt].delete(e.data)}),s}async abortFileUpload(e){let t=N(this,mt)[mt].get(e.data);if(t==null)return;N(this,mt)[mt].delete(e.data),N(this,Xs)[Xs](e,Object.create(null));let r;try{r=await t}catch{return}await N(this,Ia)[Ia](N(this,yt)[yt](e),r)}async uploadFile(e,t,r){if(xt(r),t.length===1&&!t[0].shouldUseMultipart)return N(this,Ba)[Ba](e,t[0],r);let{uploadId:s,key:o}=await this.getUploadId(e,r);xt(r);try{let a=await Promise.all(t.map((l,h)=>this.uploadChunk(e,h+1,l,r)));return xt(r),await N(this,Ks)[Ks](N(this,yt)[yt](e),{key:o,uploadId:s,parts:a,signal:r},r).abortOn(r)}catch(a){throw a?.cause!==Ra&&a?.name!==\"AbortError\"&&this.abortFileUpload(e),a}}restoreUploadFile(e,t){N(this,mt)[mt].set(e.data,t)}async resumeUploadFile(e,t,r){if(xt(r),t.length===1&&t[0]!=null&&!t[0].shouldUseMultipart)return N(this,Ba)[Ba](e,t[0],r);let{uploadId:s,key:o}=await this.getUploadId(e,r);xt(r);let a=await N(this,La)[La](N(this,yt)[yt](e),{uploadId:s,key:o,signal:r},r).abortOn(r);xt(r);let l=await Promise.all(t.map((h,p)=>{let d=p+1,f=a.find(y=>{let{PartNumber:b}=y;return b===d});return f==null?this.uploadChunk(e,d,h,r):(h==null||h.setAsUploaded==null||h.setAsUploaded(),{PartNumber:d,ETag:f.ETag})}));return xt(r),N(this,Ks)[Ks](N(this,yt)[yt](e),{key:o,uploadId:s,parts:l,signal:r},r).abortOn(r)}async uploadChunk(e,t,r,s){xt(s);let{uploadId:o,key:a}=await this.getUploadId(e,s),l=N(this,Gs)[Gs].values(),h=N(this,Gs)[Gs].values(),p=n(()=>{let d=l.next();return d==null||d.done?null:d.value},\"shouldRetrySignature\");for(;;){xt(s);let d=r.getData(),{onProgress:f,onComplete:y}=r,b;try{b=await N(this,Ma)[Ma](N(this,yt)[yt](e),{uploadId:o,key:a,partNumber:t,body:d,signal:s}).abortOn(s)}catch(S){let E=p();if(E==null||s.aborted)throw S;await new Promise(x=>setTimeout(x,E));continue}xt(s);try{return{PartNumber:t,...await N(this,Zs)[Zs]({signature:b,body:d,size:d.size,onProgress:f,onComplete:y,signal:s}).abortOn(s)}}catch(S){if(!await N(this,Uc)[Uc](S,h))throw S}}}};n(Vu,\"HTTPCommunicationQueue\");async function JP(i,e){var t;let r=N(this,Js)[Js],s=i==null||(t=i.source)==null?void 0:t.status;if(s==null)return!1;if(s===403&&i.message===\"Request has expired\"){if(!r.isPaused){if(r.limit===1||N(this,Qs)[Qs]==null){let o=e.next();if(o==null||o.done)return!1;N(this,Qs)[Qs]=o.value}r.rateLimit(0),await new Promise(o=>setTimeout(o,N(this,Qs)[Qs]))}}else if(s===429){if(!r.isPaused){let o=e.next();if(o==null||o.done)return!1;r.rateLimit(o.value)}}else{if(s>400&&s<500&&s!==409)return!1;if(typeof navigator<\"u\"&&navigator.onLine===!1)r.isPaused||(r.pause(),window.addEventListener(\"online\",()=>{r.resume()},{once:!0}));else{let o=e.next();if(o==null||o.done)return!1;await new Promise(a=>setTimeout(a,o.value))}}return!0}n(JP,\"_shouldRetry2\");async function ZP(i,e,t){let{method:r=\"POST\",url:s,fields:o,headers:a}=await N(this,Ha)[Ha](N(this,yt)[yt](i),{signal:t}).abortOn(t),l,h=e.getData();if(r.toUpperCase()===\"POST\"){let y=new FormData;Object.entries(o).forEach(b=>{let[S,E]=b;return y.set(S,E)}),y.set(\"file\",h),l=y}else l=h;let{onProgress:p,onComplete:d}=e,f=await N(this,Zs)[Zs]({signature:{url:s,headers:a,method:r},body:l,size:h.size,onProgress:p,onComplete:d,signal:t}).abortOn(t);return\"location\"in f?f:{location:QP(s),...f}}n(ZP,\"_nonMultipartUpload2\");var eo=Pe(\"companionCommunicationQueue\"),$e=Pe(\"client\"),gt=Pe(\"cachedTemporaryCredentials\"),kc=Pe(\"getTemporarySecurityCredentials\"),Dc=Pe(\"setS3MultipartState\"),to=Pe(\"getFile\"),Ic=Pe(\"uploadLocalFile\"),Nc=Pe(\"getCompanionClientArgs\"),za=Pe(\"upload\"),Ys=Pe(\"setCompanionHeaders\"),Lr=Pe(\"setResumableUploadsCapability\"),ja=Pe(\"resetResumableCapability\");wv=Symbol.for(\"uppy test: getClient\");var Ri=class extends ve{constructor(e,t){var r;super(e,t),Object.defineProperty(this,Nc,{value:i_}),Object.defineProperty(this,Ic,{value:t_}),Object.defineProperty(this,kc,{value:e_}),Object.defineProperty(this,eo,{writable:!0,value:void 0}),Object.defineProperty(this,$e,{writable:!0,value:void 0}),Object.defineProperty(this,gt,{writable:!0,value:void 0}),Object.defineProperty(this,Dc,{writable:!0,value:(o,a)=>{let{key:l,uploadId:h}=a,p=this.uppy.getFile(o.id);p!=null&&this.uppy.setFileState(o.id,{s3Multipart:{...p.s3Multipart,key:l,uploadId:h}})}}),Object.defineProperty(this,to,{writable:!0,value:o=>this.uppy.getFile(o.id)||o}),Object.defineProperty(this,za,{writable:!0,value:async o=>{if(o.length===0)return;let a=this.uppy.getFilesByIds(o),l=hs(a),h=ds(l);this.uppy.emit(\"upload-start\",h);let p=l.map(f=>{if(f.isRemote){let y=n(()=>this.requests,\"getQueue\");N(this,Lr)[Lr](!1);let b=new AbortController,S=n(x=>{x.id===f.id&&b.abort()},\"removedHandler\");this.uppy.on(\"file-removed\",S);let E=f.remote.requestClient.uploadRemoteFile(f,N(this,Nc)[Nc](f),{signal:b.signal,getQueue:y});return this.requests.wrapSyncFunction(()=>{this.uppy.off(\"file-removed\",S)},{priority:-1})(),E}return N(this,Ic)[Ic](f)}),d=await Promise.all(p);return N(this,Lr)[Lr](!0),d}}),Object.defineProperty(this,Ys,{writable:!0,value:()=>{N(this,$e)[$e].setCompanionHeaders(this.opts.companionHeaders)}}),Object.defineProperty(this,Lr,{writable:!0,value:o=>{let{capabilities:a}=this.uppy.getState();this.uppy.setState({capabilities:{...a,resumableUploads:o}})}}),Object.defineProperty(this,ja,{writable:!0,value:()=>{N(this,Lr)[Lr](!0)}}),this.type=\"uploader\",this.id=this.opts.id||\"AwsS3Multipart\",this.title=\"AWS S3 Multipart\",N(this,$e)[$e]=new tt(e,t);let s={allowedMetaFields:null,limit:6,shouldUseMultipart:o=>o.size!==0,retryDelays:[0,1e3,3e3,5e3],createMultipartUpload:this.createMultipartUpload.bind(this),listParts:this.listParts.bind(this),abortMultipartUpload:this.abortMultipartUpload.bind(this),completeMultipartUpload:this.completeMultipartUpload.bind(this),getTemporarySecurityCredentials:!1,signPart:t!=null&&t.getTemporarySecurityCredentials?this.createSignedURL.bind(this):this.signPart.bind(this),uploadPartBytes:Ri.uploadPartBytes,getUploadParameters:t!=null&&t.getTemporarySecurityCredentials?this.createSignedURL.bind(this):this.getUploadParameters.bind(this),companionHeaders:{}};this.opts={...s,...t},t?.prepareUploadParts!=null&&t.signPart==null&&(this.opts.signPart=async(o,a)=>{let{uploadId:l,key:h,partNumber:p,body:d,signal:f}=a,{presignedUrls:y,headers:b}=await t.prepareUploadParts(o,{uploadId:l,key:h,parts:[{number:p,chunk:d}],signal:f});return{url:y?.[p],headers:b?.[p]}}),this.requests=(r=this.opts.rateLimitedQueue)!=null?r:new Mt(this.opts.limit),N(this,eo)[eo]=new Vu(this.requests,this.opts,N(this,Dc)[Dc],N(this,to)[to]),this.uploaders=Object.create(null),this.uploaderEvents=Object.create(null),this.uploaderSockets=Object.create(null)}[wv](){return N(this,$e)[$e]}setOptions(e){N(this,eo)[eo].setOptions(e),super.setOptions(e),N(this,Ys)[Ys]()}resetUploaderReferences(e,t){t===void 0&&(t={}),this.uploaders[e]&&(this.uploaders[e].abort({really:t.abort||!1}),this.uploaders[e]=null),this.uploaderEvents[e]&&(this.uploaderEvents[e].remove(),this.uploaderEvents[e]=null),this.uploaderSockets[e]&&(this.uploaderSockets[e].close(),this.uploaderSockets[e]=null)}assertHost(e){if(!this.opts.companionUrl)throw new Error(`Expected a \\`companionUrl\\` option containing a Companion address, or if you are not using Companion, a custom \\`${e}\\` implementation.`)}createMultipartUpload(e,t){this.assertHost(\"createMultipartUpload\"),xt(t);let r=bv({meta:e.meta,allowedMetaFields:this.opts.allowedMetaFields});return N(this,$e)[$e].post(\"s3/multipart\",{filename:e.name,type:e.type,metadata:r},{signal:t}).then(Go)}listParts(e,t,r){let{key:s,uploadId:o}=t;this.assertHost(\"listParts\"),xt(r);let a=encodeURIComponent(s);return N(this,$e)[$e].get(`s3/multipart/${o}?key=${a}`,{signal:r}).then(Go)}completeMultipartUpload(e,t,r){let{key:s,uploadId:o,parts:a}=t;this.assertHost(\"completeMultipartUpload\"),xt(r);let l=encodeURIComponent(s),h=encodeURIComponent(o);return N(this,$e)[$e].post(`s3/multipart/${h}/complete?key=${l}`,{parts:a},{signal:r}).then(Go)}async createSignedURL(e,t){let r=await N(this,kc)[kc](t),s=Sv(r.credentials)||604800,{uploadId:o,key:a,partNumber:l,signal:h}=t;return{method:\"PUT\",expires:s,fields:{},url:`${await Rc({accountKey:r.credentials.AccessKeyId,accountSecret:r.credentials.SecretAccessKey,sessionToken:r.credentials.SessionToken,expires:s,bucketName:r.bucket,Region:r.region,Key:a??`${crypto.randomUUID()}-${e.name}`,uploadId:o,partNumber:l,signal:h})}`,headers:{\"Content-Type\":e.type}}}signPart(e,t){let{uploadId:r,key:s,partNumber:o,signal:a}=t;if(this.assertHost(\"signPart\"),xt(a),r==null||s==null||o==null)throw new Error(\"Cannot sign without a key, an uploadId, and a partNumber\");let l=encodeURIComponent(s);return N(this,$e)[$e].get(`s3/multipart/${r}/${o}?key=${l}`,{signal:a}).then(Go)}abortMultipartUpload(e,t,r){let{key:s,uploadId:o}=t;this.assertHost(\"abortMultipartUpload\");let a=encodeURIComponent(s),l=encodeURIComponent(o);return N(this,$e)[$e].delete(`s3/multipart/${l}?key=${a}`,void 0,{signal:r}).then(Go)}getUploadParameters(e,t){let{meta:r}=e,{type:s,name:o}=r,a=bv({meta:r,allowedMetaFields:this.opts.allowedMetaFields,querify:!0}),l=new URLSearchParams({filename:o,type:s,...a});return N(this,$e)[$e].get(`s3/params?${l}`,t)}static async uploadPartBytes(e){let{signature:{url:t,expires:r,headers:s,method:o=\"PUT\"},body:a,size:l=a.size,onProgress:h,onComplete:p,signal:d}=e;if(xt(d),t==null)throw new Error(\"Cannot upload to an undefined URL\");return new Promise((f,y)=>{let b=new XMLHttpRequest;b.open(o,t,!0),s&&Object.keys(s).forEach(x=>{b.setRequestHeader(x,s[x])}),b.responseType=\"text\",typeof r==\"number\"&&(b.timeout=r*1e3);function S(){b.abort()}n(S,\"onabort\");function E(){d.removeEventListener(\"abort\",S)}n(E,\"cleanup\"),d.addEventListener(\"abort\",S),b.upload.addEventListener(\"progress\",x=>{h(x)}),b.addEventListener(\"abort\",()=>{E(),y(Fc())}),b.addEventListener(\"timeout\",()=>{E();let x=new Error(\"Request has expired\");x.source={status:403},y(x)}),b.addEventListener(\"load\",x=>{if(E(),x.target.status===403&&x.target.responseText.includes(\"<Message>Request has expired</Message>\")){let j=new Error(\"Request has expired\");j.source=x.target,y(j);return}if(x.target.status<200||x.target.status>=300){let j=new Error(\"Non 2xx\");j.source=x.target,y(j);return}h?.({loaded:l,lengthComputable:!0});let F=x.target.getResponseHeader(\"ETag\"),U=x.target.getResponseHeader(\"Location\");if(o.toUpperCase()===\"POST\"&&U===null&&console.warn(\"AwsS3/Multipart: Could not read the Location header. This likely means CORS is not configured correctly on the S3 Bucket. See https://uppy.io/docs/aws-s3-multipart#S3-Bucket-Configuration for instructions.\"),F===null){y(new Error(\"AwsS3/Multipart: Could not read the ETag header. This likely means CORS is not configured correctly on the S3 Bucket. See https://uppy.io/docs/aws-s3-multipart#S3-Bucket-Configuration for instructions.\"));return}p?.(F),f({ETag:F,...U?{location:U}:void 0})}),b.addEventListener(\"error\",x=>{E();let F=new Error(\"Unknown error\");F.source=x.target,y(F)}),b.send(a)})}install(){N(this,Lr)[Lr](!0),this.uppy.addPreProcessor(N(this,Ys)[Ys]),this.uppy.addUploader(N(this,za)[za]),this.uppy.on(\"cancel-all\",N(this,ja)[ja])}uninstall(){this.uppy.removePreProcessor(N(this,Ys)[Ys]),this.uppy.removeUploader(N(this,za)[za]),this.uppy.off(\"cancel-all\",N(this,ja)[ja])}};n(Ri,\"AwsS3Multipart\");async function e_(i){return xt(i?.signal),N(this,gt)[gt]==null&&(this.opts.getTemporarySecurityCredentials===!0?(this.assertHost(\"getTemporarySecurityCredentials\"),N(this,gt)[gt]=N(this,$e)[$e].get(\"s3/sts\",null,i).then(Go)):N(this,gt)[gt]=this.opts.getTemporarySecurityCredentials(i),N(this,gt)[gt]=await N(this,gt)[gt],setTimeout(()=>{N(this,gt)[gt]=null},(Sv(N(this,gt)[gt].credentials)||0)*500)),N(this,gt)[gt]}n(e_,\"_getTemporarySecurityCredentials2\");function t_(i){var e=this;return new Promise((t,r)=>{let s=n((d,f)=>{this.uppy.emit(\"upload-progress\",i,{uploader:this,bytesUploaded:d,bytesTotal:f})},\"onProgress\"),o=n(d=>{this.uppy.log(d),this.uppy.emit(\"upload-error\",i,d),this.resetUploaderReferences(i.id),r(d)},\"onError\"),a=n(d=>{let f={body:{...d},uploadURL:d.location};this.resetUploaderReferences(i.id),this.uppy.emit(\"upload-success\",N(this,to)[to](i),f),d.location&&this.uppy.log(`Download ${i.name} from ${d.location}`),t()},\"onSuccess\"),l=n(d=>{this.uppy.emit(\"s3-multipart:part-uploaded\",N(this,to)[to](i),d)},\"onPartComplete\"),h=new yv(i.data,{companionComm:N(this,eo)[eo],log:function(){return e.uppy.log(...arguments)},getChunkSize:this.opts.getChunkSize?this.opts.getChunkSize.bind(this):null,onProgress:s,onError:o,onSuccess:a,onPartComplete:l,file:i,shouldUseMultipart:this.opts.shouldUseMultipart,...i.s3Multipart});this.uploaders[i.id]=h;let p=new mi(this.uppy);this.uploaderEvents[i.id]=p,p.onFileRemove(i.id,d=>{h.abort(),this.resetUploaderReferences(i.id,{abort:!0}),t(`upload ${d.id} was removed`)}),p.onCancelAll(i.id,function(d){let{reason:f}=d===void 0?{}:d;f===\"user\"&&(h.abort(),e.resetUploaderReferences(i.id,{abort:!0})),t(`upload ${i.id} was canceled`)}),p.onFilePause(i.id,d=>{d?h.pause():h.start()}),p.onPauseAll(i.id,()=>{h.pause()}),p.onResumeAll(i.id,()=>{h.start()}),h.start()})}n(t_,\"_uploadLocalFile2\");function i_(i){return{...i.remote.body,protocol:\"s3-multipart\",size:i.data.size,metadata:i.meta}}n(i_,\"_getCompanionClientArgs2\");Ri.VERSION=YP.version;function gi(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(gi,\"_classPrivateFieldLooseBase\");var r_=0;function Gu(i){return\"__private_\"+r_+++\"_\"+i}n(Gu,\"_classPrivateFieldLooseKey\");var Br=Gu(\"aliveTimer\"),io=Gu(\"isDone\"),$a=Gu(\"onTimedOut\"),ro=Gu(\"timeout\"),Wu=class{constructor(e,t){Object.defineProperty(this,Br,{writable:!0,value:void 0}),Object.defineProperty(this,io,{writable:!0,value:!1}),Object.defineProperty(this,$a,{writable:!0,value:void 0}),Object.defineProperty(this,ro,{writable:!0,value:void 0}),gi(this,ro)[ro]=e,gi(this,$a)[$a]=t}progress(){gi(this,io)[io]||gi(this,ro)[ro]>0&&(clearTimeout(gi(this,Br)[Br]),gi(this,Br)[Br]=setTimeout(gi(this,$a)[$a],gi(this,ro)[ro]))}done(){gi(this,io)[io]||(clearTimeout(gi(this,Br)[Br]),gi(this,Br)[Br]=void 0,gi(this,io)[io]=!0)}};n(Wu,\"ProgressTimeout\");var qa=Wu;function s_(i){return i?i.readyState!==0&&i.readyState!==4||i.status===0:!1}n(s_,\"isNetworkError\");var so=s_;function Pv(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(Pv,\"_classPrivateFieldLooseBase\");var o_=0;function xv(i){return\"__private_\"+o_+++\"_\"+i}n(xv,\"_classPrivateFieldLooseKey\");function _v(i,e){if(so(i))return new Pi(e,i);let t=new vr(\"Upload error\",{cause:e});return t.request=i,t}n(_v,\"buildResponseError\");function n_(i){return i.data.slice(0,i.data.size,i.meta.type)}n(n_,\"setTypeInBlob\");function a_(i,e,t){(Array.isArray(t.allowedMetaFields)?t.allowedMetaFields:Object.keys(e)).forEach(s=>{i.append(s,e[s])})}n(a_,\"addMetadata\");function l_(i,e){let t=new FormData;a_(t,i.meta,e);let r=n_(i);return i.name?t.append(e.fieldName,r,i.meta.name):t.append(e.fieldName,r),t}n(l_,\"createFormDataUpload\");var u_=n(i=>i.data,\"createBareUpload\"),Mc=xv(\"addEventHandlerForFile\"),Lc=xv(\"addEventHandlerIfFileStillExists\"),Ko=class{constructor(e,t){Object.defineProperty(this,Lc,{value:d_}),Object.defineProperty(this,Mc,{value:h_}),this.uppy=e,this.opts={validateStatus(r){return r>=200&&r<300},...t},this.requests=t[us],this.uploaderEvents=Object.create(null),this.i18n=t.i18n}getOptions(e){var t;let{uppy:r}=this,s=r.getState().xhrUpload;return{...this.opts,...s||{},...e.xhrUpload||{},headers:{...this.opts.headers,...s?.headers,...(t=e.xhrUpload)==null?void 0:t.headers}}}uploadLocalFile(e){let t=this.getOptions(e);return new Promise((r,s)=>{let o=t.formData?l_(e,t):u_(e,t),a=new XMLHttpRequest;this.uploaderEvents[e.id]=new mi(this.uppy);let l=new qa(t.timeout,()=>{a.abort(),p.done();let d=new Error(this.i18n(\"timedOut\",{seconds:Math.ceil(t.timeout/1e3)}));this.uppy.emit(\"upload-error\",e,d),s(d)}),h=Pt();a.upload.addEventListener(\"loadstart\",()=>{this.uppy.log(`[AwsS3/XHRUpload] ${h} started`)}),a.upload.addEventListener(\"progress\",d=>{this.uppy.log(`[AwsS3/XHRUpload] ${h} progress: ${d.loaded} / ${d.total}`),l.progress(),d.lengthComputable&&this.uppy.emit(\"upload-progress\",e,{uploader:this,bytesUploaded:d.loaded,bytesTotal:d.total})}),a.addEventListener(\"load\",d=>{if(this.uppy.log(`[AwsS3/XHRUpload] ${h} finished`),l.done(),p.done(),this.uploaderEvents[e.id]&&(this.uploaderEvents[e.id].remove(),this.uploaderEvents[e.id]=null),t.validateStatus(d.target.status,a.responseText,a)){let S=t.getResponseData(a.responseText,a),E=S[t.responseUrlFieldName],x={status:d.target.status,body:S,uploadURL:E};return this.uppy.emit(\"upload-success\",e,x),E&&this.uppy.log(`Download ${e.name} from ${E}`),r(e)}let f=t.getResponseData(a.responseText,a),y=_v(a,t.getResponseError(a.responseText,a)),b={status:d.target.status,body:f};return this.uppy.emit(\"upload-error\",e,y,b),s(y)}),a.addEventListener(\"error\",()=>{this.uppy.log(`[AwsS3/XHRUpload] ${h} errored`),l.done(),p.done(),this.uploaderEvents[e.id]&&(this.uploaderEvents[e.id].remove(),this.uploaderEvents[e.id]=null);let d=_v(a,t.getResponseError(a.responseText,a));return this.uppy.emit(\"upload-error\",e,d),s(d)}),a.open(t.method.toUpperCase(),t.endpoint,!0),a.withCredentials=!!t.withCredentials,t.responseType!==\"\"&&(a.responseType=t.responseType),Object.keys(t.headers).forEach(d=>{a.setRequestHeader(d,t.headers[d])});let p=this.requests.run(()=>(a.send(o),()=>{l.done(),a.abort()}),{priority:1});Pv(this,Mc)[Mc](\"file-removed\",e.id,()=>{p.abort(),s(new Error(\"File removed\"))}),Pv(this,Lc)[Lc](\"cancel-all\",e.id,function(d){let{reason:f}=d===void 0?{}:d;f===\"user\"&&p.abort(),s(new Error(\"Upload cancelled\"))})})}};n(Ko,\"MiniXHRUpload\");function h_(i,e,t){this.uploaderEvents[e].on(i,r=>{var s;let o=(s=r?.id)!=null?s:r;e===o&&t()})}n(h_,\"_addEventHandlerForFile2\");function d_(i,e,t){var r=this;this.uploaderEvents[e].on(i,function(){r.uppy.getFile(e)&&t(...arguments)})}n(d_,\"_addEventHandlerIfFileStillExists2\");function c_(i){return i.replace(/;.*$/,\"\")}n(c_,\"removeMimeParameters\");function p_(i,e){let t=e.headers?e.headers[\"content-type\"]:e.getResponseHeader(\"Content-Type\");if(typeof t==\"string\"){let r=c_(t).toLowerCase();if(r===\"application/xml\"||r===\"text/xml\"||r===\"text/html\"&&/^<\\?xml /.test(i))return!0}return!1}n(p_,\"isXml\");var Bc=p_;var Fv={strings:{timedOut:\"Upload stalled for %{seconds} seconds, aborting.\"}};var Ov;function ot(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(ot,\"_classPrivateFieldLooseBase\");var f_=0;function Xo(i){return\"__private_\"+f_+++\"_\"+i}n(Xo,\"_classPrivateFieldLooseKey\");var m_={version:\"3.5.0\"};function g_(i,e){return!i&&!e.startsWith(\"https://\")&&!e.startsWith(\"http://\")&&(e=`https://${e}`),new URL(e,i||void 0).toString()}n(g_,\"resolveUrl\");function Ga(i,e){let t=i.indexOf(`<${e}>`),r=i.indexOf(`</${e}>`,t);return t!==-1&&r!==-1?i.slice(t+e.length+2,r):\"\"}n(Ga,\"getXmlValue\");function y_(i){if(i&&i.error){let e=new Error(i.message);throw Object.assign(e,i.error),e}return i}n(y_,\"assertServerError\");function v_(i,e){if(!(e!=null&&typeof e.url==\"string\"&&(typeof e.fields==\"object\"||e.fields==null)))throw new TypeError(`AwsS3: got incorrect result from 'getUploadParameters()' for file '${i.name}', expected an object '{ url, method, fields, headers }' but got '${JSON.stringify(e)}' instead.\nSee https://uppy.io/docs/aws-s3/#getUploadParameters-file for more on the expected format.`);if(!(e.method==null||/^p(u|os)t$/i.test(e.method)))throw new TypeError(`AwsS3: got incorrect method from 'getUploadParameters()' for file '${i.name}', expected  'PUT' or 'POST' but got '${e.method}' instead.\nSee https://uppy.io/docs/aws-s3/#getUploadParameters-file for more on the expected format.`)}n(v_,\"validateParameters\");function b_(i,e){if(!Bc(i,e))return;let t=Ga(i,\"Message\");return new Error(t)}n(b_,\"defaultGetResponseError\");var Ev=!1,oi=Xo(\"client\"),Ui=Xo(\"requests\"),oo=Xo(\"uploader\"),Va=Xo(\"handleUpload\"),Wa=Xo(\"setCompanionHeaders\"),zc=Xo(\"getCompanionClientArgs\");Ov=Symbol.for(\"uppy test: getClient\");var no=class extends ve{constructor(e,t){if(t?.shouldUseMultipart!=null)return new Ri(e,t);super(e,t),Object.defineProperty(this,oi,{writable:!0,value:void 0}),Object.defineProperty(this,Ui,{writable:!0,value:void 0}),Object.defineProperty(this,oo,{writable:!0,value:void 0}),Object.defineProperty(this,Va,{writable:!0,value:async s=>{let o=Object.create(null);function a(y){var b;let{id:S}=y;(b=o[S])==null||b.abort()}n(a,\"onremove\"),this.uppy.on(\"file-removed\",a);let l=this.uppy.getFilesByIds(s),h=hs(l),p=ds(h);this.uppy.emit(\"upload-start\",p);let d=ot(this,Ui)[Ui].wrapPromiseFunction(y=>this.opts.getUploadParameters(y)),f=s.length;return Promise.allSettled(s.map((y,b)=>(o[y]=d(this.uppy.getFile(y)),o[y].then(S=>{delete o[y];let E=this.uppy.getFile(y);v_(E,S);let{method:x=\"POST\",url:F,fields:U,headers:j}=S,G={method:x,formData:x.toUpperCase()===\"POST\",endpoint:F,allowedMetaFields:U?Object.keys(U):[]};return j&&(G.headers=j),this.uppy.setFileState(E.id,{meta:{...E.meta,...U},xhrUpload:G}),this.uploadFile(E.id,b,f)}).catch(S=>{delete o[y];let E=this.uppy.getFile(y);return this.uppy.emit(\"upload-error\",E,S),Promise.reject(S)})))).finally(()=>{this.uppy.off(\"file-removed\",a)})}}),Object.defineProperty(this,Wa,{writable:!0,value:()=>(ot(this,oi)[oi].setCompanionHeaders(this.opts.companionHeaders),Promise.resolve())}),Object.defineProperty(this,zc,{writable:!0,value:s=>{let o=ot(this,oo)[oo].getOptions(s),a=Array.isArray(o.allowedMetaFields)?o.allowedMetaFields:Object.keys(s.meta);return{...s.remote.body,protocol:\"multipart\",endpoint:o.endpoint,size:s.data.size,fieldname:o.fieldName,metadata:Object.fromEntries(a.map(l=>[l,s.meta[l]])),httpMethod:o.method,useFormData:o.formData,headers:typeof o.headers==\"function\"?o.headers(s):o.headers}}}),this.type=\"uploader\",this.id=this.opts.id||\"AwsS3\",this.title=\"AWS S3\",this.defaultLocale=Fv;let r={timeout:30*1e3,limit:0,allowedMetaFields:[],getUploadParameters:this.getUploadParameters.bind(this),shouldUseMultipart:!1,companionHeaders:{}};if(this.opts={...r,...t},t?.allowedMetaFields===void 0&&\"metaFields\"in this.opts)throw new Error(\"The `metaFields` option has been renamed to `allowedMetaFields`.\");this.i18nInit(),ot(this,oi)[oi]=new tt(e,t),ot(this,Ui)[Ui]=new Mt(this.opts.limit)}[Ov](){return ot(this,oi)[oi]}get client(){return ot(this,oi)[oi]}set client(e){ot(this,oi)[oi]=e}getUploadParameters(e){if(!this.opts.companionUrl)throw new Error(\"Expected a `companionUrl` option containing a Companion address.\");let t=e.meta.name,{type:r}=e.meta,s=Object.fromEntries(this.opts.allowedMetaFields.filter(a=>e.meta[a]!=null).map(a=>[`metadata[${a}]`,e.meta[a].toString()])),o=new URLSearchParams({filename:t,type:r,...s});return ot(this,oi)[oi].get(`s3/params?${o}`).then(y_)}uploadFile(e,t,r){let s=this.uppy.getFile(e);if(this.uppy.log(`uploading ${t} of ${r}`),s.error)throw new Error(s.error);if(s.isRemote){let o=n(()=>ot(this,Ui)[Ui],\"getQueue\"),a=new AbortController,l=n(p=>{p.id===s.id&&a.abort()},\"removedHandler\");this.uppy.on(\"file-removed\",l);let h=s.remote.requestClient.uploadRemoteFile(s,ot(this,zc)[zc](s),{signal:a.signal,getQueue:o});return ot(this,Ui)[Ui].wrapSyncFunction(()=>{this.uppy.off(\"file-removed\",l)},{priority:-1})(),h}return ot(this,oo)[oo].uploadLocalFile(s,t,r)}install(){let{uppy:e}=this;e.addPreProcessor(ot(this,Wa)[Wa]),e.addUploader(ot(this,Va)[Va]);function t(s,o){let a=this;return Bc(s,o)?{location:g_(o.responseURL,Ga(s,\"Location\")),bucket:Ga(s,\"Bucket\"),key:Ga(s,\"Key\"),etag:Ga(s,\"ETag\")}:a.method.toUpperCase()===\"POST\"?(Ev||(e.log(\"[AwsS3] No response data found, make sure to set the success_action_status AWS SDK option to 201. See https://uppy.io/docs/aws-s3/#POST-Uploads\",\"warning\"),Ev=!0),{location:null}):o.responseURL?{location:o.responseURL.replace(/\\?.*$/,\"\")}:{location:null}}n(t,\"defaultGetResponseData\");let r={fieldName:\"file\",responseUrlFieldName:\"location\",timeout:this.opts.timeout,[us]:ot(this,Ui)[Ui],responseType:\"text\",getResponseData:this.opts.getResponseData||t,getResponseError:b_};r.i18n=this.i18n,ot(this,oo)[oo]=new Ko(e,r)}uninstall(){this.uppy.removePreProcessor(ot(this,Wa)[Wa]),this.uppy.removeUploader(ot(this,Va)[Va])}};n(no,\"AwsS3\");no.VERSION=m_.version;var kv=\"3.7.2\",w_=kv,S_=typeof atob==\"function\",P_=typeof btoa==\"function\",Qo=typeof Buffer==\"function\",Cv=typeof TextDecoder==\"function\"?new TextDecoder:void 0,Tv=typeof TextEncoder==\"function\"?new TextEncoder:void 0,__=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\",Ka=Array.prototype.slice.call(__),Ku=(i=>{let e={};return i.forEach((t,r)=>e[t]=r),e})(Ka),x_=/^(?:[A-Za-z\\d+\\/]{4})*?(?:[A-Za-z\\d+\\/]{2}(?:==)?|[A-Za-z\\d+\\/]{3}=?)?$/,vt=String.fromCharCode.bind(String),Av=typeof Uint8Array.from==\"function\"?Uint8Array.from.bind(Uint8Array):(i,e=t=>t)=>new Uint8Array(Array.prototype.slice.call(i,0).map(e)),Dv=n(i=>i.replace(/=/g,\"\").replace(/[+\\/]/g,e=>e==\"+\"?\"-\":\"_\"),\"_mkUriSafe\"),Iv=n(i=>i.replace(/[^A-Za-z0-9\\+\\/]/g,\"\"),\"_tidyB64\"),Nv=n(i=>{let e,t,r,s,o=\"\",a=i.length%3;for(let l=0;l<i.length;){if((t=i.charCodeAt(l++))>255||(r=i.charCodeAt(l++))>255||(s=i.charCodeAt(l++))>255)throw new TypeError(\"invalid character found\");e=t<<16|r<<8|s,o+=Ka[e>>18&63]+Ka[e>>12&63]+Ka[e>>6&63]+Ka[e&63]}return a?o.slice(0,a-3)+\"===\".substring(a):o},\"btoaPolyfill\"),$c=P_?i=>btoa(i):Qo?i=>Buffer.from(i,\"binary\").toString(\"base64\"):Nv,jc=Qo?i=>Buffer.from(i).toString(\"base64\"):i=>{let t=[];for(let r=0,s=i.length;r<s;r+=4096)t.push(vt.apply(null,i.subarray(r,r+4096)));return $c(t.join(\"\"))},Xu=n((i,e=!1)=>e?Dv(jc(i)):jc(i),\"fromUint8Array\"),F_=n(i=>{if(i.length<2){var e=i.charCodeAt(0);return e<128?i:e<2048?vt(192|e>>>6)+vt(128|e&63):vt(224|e>>>12&15)+vt(128|e>>>6&63)+vt(128|e&63)}else{var e=65536+(i.charCodeAt(0)-55296)*1024+(i.charCodeAt(1)-56320);return vt(240|e>>>18&7)+vt(128|e>>>12&63)+vt(128|e>>>6&63)+vt(128|e&63)}},\"cb_utob\"),E_=/[\\uD800-\\uDBFF][\\uDC00-\\uDFFFF]|[^\\x00-\\x7F]/g,Mv=n(i=>i.replace(E_,F_),\"utob\"),Rv=Qo?i=>Buffer.from(i,\"utf8\").toString(\"base64\"):Tv?i=>jc(Tv.encode(i)):i=>$c(Mv(i)),Yo=n((i,e=!1)=>e?Dv(Rv(i)):Rv(i),\"encode\"),Uv=n(i=>Yo(i,!0),\"encodeURI\"),O_=/[\\xC0-\\xDF][\\x80-\\xBF]|[\\xE0-\\xEF][\\x80-\\xBF]{2}|[\\xF0-\\xF7][\\x80-\\xBF]{3}/g,C_=n(i=>{switch(i.length){case 4:var e=(7&i.charCodeAt(0))<<18|(63&i.charCodeAt(1))<<12|(63&i.charCodeAt(2))<<6|63&i.charCodeAt(3),t=e-65536;return vt((t>>>10)+55296)+vt((t&1023)+56320);case 3:return vt((15&i.charCodeAt(0))<<12|(63&i.charCodeAt(1))<<6|63&i.charCodeAt(2));default:return vt((31&i.charCodeAt(0))<<6|63&i.charCodeAt(1))}},\"cb_btou\"),Lv=n(i=>i.replace(O_,C_),\"btou\"),Bv=n(i=>{if(i=i.replace(/\\s+/g,\"\"),!x_.test(i))throw new TypeError(\"malformed base64.\");i+=\"==\".slice(2-(i.length&3));let e,t=\"\",r,s;for(let o=0;o<i.length;)e=Ku[i.charAt(o++)]<<18|Ku[i.charAt(o++)]<<12|(r=Ku[i.charAt(o++)])<<6|(s=Ku[i.charAt(o++)]),t+=r===64?vt(e>>16&255):s===64?vt(e>>16&255,e>>8&255):vt(e>>16&255,e>>8&255,e&255);return t},\"atobPolyfill\"),qc=S_?i=>atob(Iv(i)):Qo?i=>Buffer.from(i,\"base64\").toString(\"binary\"):Bv,zv=Qo?i=>Av(Buffer.from(i,\"base64\")):i=>Av(qc(i),e=>e.charCodeAt(0)),jv=n(i=>zv(Hv(i)),\"toUint8Array\"),T_=Qo?i=>Buffer.from(i,\"base64\").toString(\"utf8\"):Cv?i=>Cv.decode(zv(i)):i=>Lv(qc(i)),Hv=n(i=>Iv(i.replace(/[-_]/g,e=>e==\"-\"?\"+\":\"/\")),\"_unURI\"),Hc=n(i=>T_(Hv(i)),\"decode\"),A_=n(i=>{if(typeof i!=\"string\")return!1;let e=i.replace(/\\s+/g,\"\").replace(/={0,2}$/,\"\");return!/[^\\s0-9a-zA-Z\\+/]/.test(e)||!/[^\\s0-9a-zA-Z\\-_]/.test(e)},\"isValid\"),$v=n(i=>({value:i,enumerable:!1,writable:!0,configurable:!0}),\"_noEnum\"),qv=n(function(){let i=n((e,t)=>Object.defineProperty(String.prototype,e,$v(t)),\"_add\");i(\"fromBase64\",function(){return Hc(this)}),i(\"toBase64\",function(e){return Yo(this,e)}),i(\"toBase64URI\",function(){return Yo(this,!0)}),i(\"toBase64URL\",function(){return Yo(this,!0)}),i(\"toUint8Array\",function(){return jv(this)})},\"extendString\"),Vv=n(function(){let i=n((e,t)=>Object.defineProperty(Uint8Array.prototype,e,$v(t)),\"_add\");i(\"toBase64\",function(e){return Xu(this,e)}),i(\"toBase64URI\",function(){return Xu(this,!0)}),i(\"toBase64URL\",function(){return Xu(this,!0)})},\"extendUint8Array\"),R_=n(()=>{qv(),Vv()},\"extendBuiltins\"),Wv={version:kv,VERSION:w_,atob:qc,atobPolyfill:Bv,btoa:$c,btoaPolyfill:Nv,fromBase64:Hc,toBase64:Yo,encode:Yo,encodeURI:Uv,encodeURL:Uv,utob:Mv,btou:Lv,decode:Hc,isValid:A_,fromUint8Array:Xu,toUint8Array:jv,extendString:qv,extendUint8Array:Vv,extendBuiltins:R_};var y0=de(o0());function Kc(i){\"@babel/helpers - typeof\";return Kc=typeof Symbol==\"function\"&&typeof Symbol.iterator==\"symbol\"?function(e){return typeof e}:function(e){return e&&typeof Symbol==\"function\"&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},Kc(i)}n(Kc,\"_typeof\");function n0(i,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(i,r.key,r)}}n(n0,\"_defineProperties\");function $_(i,e,t){return e&&n0(i.prototype,e),t&&n0(i,t),Object.defineProperty(i,\"prototype\",{writable:!1}),i}n($_,\"_createClass\");function q_(i,e){if(!(i instanceof e))throw new TypeError(\"Cannot call a class as a function\")}n(q_,\"_classCallCheck\");function V_(i,e){if(typeof e!=\"function\"&&e!==null)throw new TypeError(\"Super expression must either be null or a function\");i.prototype=Object.create(e&&e.prototype,{constructor:{value:i,writable:!0,configurable:!0}}),Object.defineProperty(i,\"prototype\",{writable:!1}),e&&Xa(i,e)}n(V_,\"_inherits\");function W_(i){var e=a0();return n(function(){var r=Ya(i),s;if(e){var o=Ya(this).constructor;s=Reflect.construct(r,arguments,o)}else s=r.apply(this,arguments);return G_(this,s)},\"_createSuperInternal\")}n(W_,\"_createSuper\");function G_(i,e){if(e&&(Kc(e)===\"object\"||typeof e==\"function\"))return e;if(e!==void 0)throw new TypeError(\"Derived constructors may only return object or undefined\");return K_(i)}n(G_,\"_possibleConstructorReturn\");function K_(i){if(i===void 0)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return i}n(K_,\"_assertThisInitialized\");function Xc(i){var e=typeof Map==\"function\"?new Map:void 0;return Xc=n(function(r){if(r===null||!X_(r))return r;if(typeof r!=\"function\")throw new TypeError(\"Super expression must either be null or a function\");if(typeof e<\"u\"){if(e.has(r))return e.get(r);e.set(r,s)}function s(){return Qu(r,arguments,Ya(this).constructor)}return n(s,\"Wrapper\"),s.prototype=Object.create(r.prototype,{constructor:{value:s,enumerable:!1,writable:!0,configurable:!0}}),Xa(s,r)},\"_wrapNativeSuper\"),Xc(i)}n(Xc,\"_wrapNativeSuper\");function Qu(i,e,t){return a0()?Qu=Reflect.construct.bind():Qu=n(function(s,o,a){var l=[null];l.push.apply(l,o);var h=Function.bind.apply(s,l),p=new h;return a&&Xa(p,a.prototype),p},\"_construct\"),Qu.apply(null,arguments)}n(Qu,\"_construct\");function a0(){if(typeof Reflect>\"u\"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy==\"function\")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}n(a0,\"_isNativeReflectConstruct\");function X_(i){return Function.toString.call(i).indexOf(\"[native code]\")!==-1}n(X_,\"_isNativeFunction\");function Xa(i,e){return Xa=Object.setPrototypeOf?Object.setPrototypeOf.bind():n(function(r,s){return r.__proto__=s,r},\"_setPrototypeOf\"),Xa(i,e)}n(Xa,\"_setPrototypeOf\");function Ya(i){return Ya=Object.setPrototypeOf?Object.getPrototypeOf.bind():n(function(t){return t.__proto__||Object.getPrototypeOf(t)},\"_getPrototypeOf\"),Ya(i)}n(Ya,\"_getPrototypeOf\");var Y_=function(i){V_(t,i);var e=W_(t);function t(r){var s,o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null,l=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null;if(q_(this,t),s=e.call(this,r),s.originalRequest=a,s.originalResponse=l,s.causingError=o,o!=null&&(r+=\", caused by \".concat(o.toString())),a!=null){var h=a.getHeader(\"X-Request-ID\")||\"n/a\",p=a.getMethod(),d=a.getURL(),f=l?l.getStatus():\"n/a\",y=l?l.getBody()||\"\":\"n/a\";r+=\", originated from request (method: \".concat(p,\", url: \").concat(d,\", response code: \").concat(f,\", response text: \").concat(y,\", request id: \").concat(h,\")\")}return s.message=r,s}return n(t,\"DetailedError\"),$_(t)}(Xc(Error)),Jo=Y_;var Q_=!1;function cs(i){Q_&&console.log(i)}n(cs,\"log\");function Yc(){return\"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g,function(i){var e=Math.random()*16|0,t=i===\"x\"?e:e&3|8;return t.toString(16)})}n(Yc,\"uuid\");function g0(i,e){return t5(i)||e5(i,e)||Z_(i,e)||J_()}n(g0,\"_slicedToArray\");function J_(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}n(J_,\"_nonIterableRest\");function Z_(i,e){if(i){if(typeof i==\"string\")return l0(i,e);var t=Object.prototype.toString.call(i).slice(8,-1);if(t===\"Object\"&&i.constructor&&(t=i.constructor.name),t===\"Map\"||t===\"Set\")return Array.from(i);if(t===\"Arguments\"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return l0(i,e)}}n(Z_,\"_unsupportedIterableToArray\");function l0(i,e){(e==null||e>i.length)&&(e=i.length);for(var t=0,r=new Array(e);t<e;t++)r[t]=i[t];return r}n(l0,\"_arrayLikeToArray\");function e5(i,e){var t=i==null?null:typeof Symbol<\"u\"&&i[Symbol.iterator]||i[\"@@iterator\"];if(t!=null){var r=[],s=!0,o=!1,a,l;try{for(t=t.call(i);!(s=(a=t.next()).done)&&(r.push(a.value),!(e&&r.length===e));s=!0);}catch(h){o=!0,l=h}finally{try{!s&&t.return!=null&&t.return()}finally{if(o)throw l}}return r}}n(e5,\"_iterableToArrayLimit\");function t5(i){if(Array.isArray(i))return i}n(t5,\"_arrayWithHoles\");function u0(i,e){var t=Object.keys(i);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(i);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(i,s).enumerable})),t.push.apply(t,r)}return t}n(u0,\"ownKeys\");function Zo(i){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?u0(Object(t),!0).forEach(function(r){i5(i,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(i,Object.getOwnPropertyDescriptors(t)):u0(Object(t)).forEach(function(r){Object.defineProperty(i,r,Object.getOwnPropertyDescriptor(t,r))})}return i}n(Zo,\"_objectSpread\");function i5(i,e,t){return e in i?Object.defineProperty(i,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):i[e]=t,i}n(i5,\"_defineProperty\");function r5(i,e){if(!(i instanceof e))throw new TypeError(\"Cannot call a class as a function\")}n(r5,\"_classCallCheck\");function h0(i,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(i,r.key,r)}}n(h0,\"_defineProperties\");function s5(i,e,t){return e&&h0(i.prototype,e),t&&h0(i,t),Object.defineProperty(i,\"prototype\",{writable:!1}),i}n(s5,\"_createClass\");var o5={endpoint:null,uploadUrl:null,metadata:{},fingerprint:null,uploadSize:null,onProgress:null,onChunkComplete:null,onSuccess:null,onError:null,_onUploadUrlAvailable:null,overridePatchMethod:!1,headers:{},addRequestId:!1,onBeforeRequest:null,onAfterResponse:null,onShouldRetry:null,chunkSize:1/0,retryDelays:[0,1e3,3e3,5e3],parallelUploads:1,parallelUploadBoundaries:null,storeFingerprintForResuming:!0,removeFingerprintOnSuccess:!1,uploadLengthDeferred:!1,uploadDataDuringCreation:!1,urlStorage:null,fileReader:null,httpStack:null},v0=function(){function i(e,t){r5(this,i),\"resume\"in t&&console.log(\"tus: The `resume` option has been removed in tus-js-client v2. Please use the URL storage API instead.\"),this.options=t,this.options.chunkSize=Number(this.options.chunkSize),this._urlStorage=this.options.urlStorage,this.file=e,this.url=null,this._req=null,this._fingerprint=null,this._urlStorageKey=null,this._offset=null,this._aborted=!1,this._size=null,this._source=null,this._retryAttempt=0,this._retryTimeout=null,this._offsetBeforeRetry=0,this._parallelUploads=null,this._parallelUploadUrls=null}return n(i,\"BaseUpload\"),s5(i,[{key:\"findPreviousUploads\",value:n(function(){var t=this;return this.options.fingerprint(this.file,this.options).then(function(r){return t._urlStorage.findUploadsByFingerprint(r)})},\"findPreviousUploads\")},{key:\"resumeFromPreviousUpload\",value:n(function(t){this.url=t.uploadUrl||null,this._parallelUploadUrls=t.parallelUploadUrls||null,this._urlStorageKey=t.urlStorageKey},\"resumeFromPreviousUpload\")},{key:\"start\",value:n(function(){var t=this,r=this.file;if(!r){this._emitError(new Error(\"tus: no file or stream to upload provided\"));return}if(!this.options.endpoint&&!this.options.uploadUrl&&!this.url){this._emitError(new Error(\"tus: neither an endpoint or an upload URL is provided\"));return}var s=this.options.retryDelays;if(s!=null&&Object.prototype.toString.call(s)!==\"[object Array]\"){this._emitError(new Error(\"tus: the `retryDelays` option must either be an array or null\"));return}if(this.options.parallelUploads>1)for(var o=0,a=[\"uploadUrl\",\"uploadSize\",\"uploadLengthDeferred\"];o<a.length;o++){var l=a[o];if(this.options[l]){this._emitError(new Error(\"tus: cannot use the \".concat(l,\" option when parallelUploads is enabled\")));return}}if(this.options.parallelUploadBoundaries){if(this.options.parallelUploads<=1){this._emitError(new Error(\"tus: cannot use the `parallelUploadBoundaries` option when `parallelUploads` is disabled\"));return}if(this.options.parallelUploads!==this.options.parallelUploadBoundaries.length){this._emitError(new Error(\"tus: the `parallelUploadBoundaries` must have the same length as the value of `parallelUploads`\"));return}}this.options.fingerprint(r,this.options).then(function(h){return h==null?cs(\"No fingerprint was calculated meaning that the upload cannot be stored in the URL storage.\"):cs(\"Calculated fingerprint: \".concat(h)),t._fingerprint=h,t._source?t._source:t.options.fileReader.openFile(r,t.options.chunkSize)}).then(function(h){if(t._source=h,t.options.uploadLengthDeferred)t._size=null;else if(t.options.uploadSize!=null){if(t._size=Number(t.options.uploadSize),Number.isNaN(t._size)){t._emitError(new Error(\"tus: cannot convert `uploadSize` option into a number\"));return}}else if(t._size=t._source.size,t._size==null){t._emitError(new Error(\"tus: cannot automatically derive upload's size from input. Specify it manually using the `uploadSize` option or use the `uploadLengthDeferred` option\"));return}t.options.parallelUploads>1||t._parallelUploadUrls!=null?t._startParallelUpload():t._startSingleUpload()}).catch(function(h){t._emitError(h)})},\"start\")},{key:\"_startParallelUpload\",value:n(function(){var t,r=this,s=this._size,o=0;this._parallelUploads=[];var a=this._parallelUploadUrls!=null?this._parallelUploadUrls.length:this.options.parallelUploads,l=(t=this.options.parallelUploadBoundaries)!==null&&t!==void 0?t:a5(this._source.size,a);this._parallelUploadUrls&&l.forEach(function(d,f){d.uploadUrl=r._parallelUploadUrls[f]||null}),this._parallelUploadUrls=new Array(l.length);var h=l.map(function(d,f){var y=0;return r._source.slice(d.start,d.end).then(function(b){var S=b.value;return new Promise(function(E,x){var F=Zo(Zo({},r.options),{},{uploadUrl:d.uploadUrl||null,storeFingerprintForResuming:!1,removeFingerprintOnSuccess:!1,parallelUploads:1,parallelUploadBoundaries:null,metadata:{},headers:Zo(Zo({},r.options.headers),{},{\"Upload-Concat\":\"partial\"}),onSuccess:E,onError:x,onProgress:n(function(G){o=o-y+G,y=G,r._emitProgress(o,s)},\"onProgress\"),_onUploadUrlAvailable:n(function(){r._parallelUploadUrls[f]=U.url,r._parallelUploadUrls.filter(function(G){return!!G}).length===l.length&&r._saveUploadInUrlStorage()},\"_onUploadUrlAvailable\")}),U=new i(S,F);U.start(),r._parallelUploads.push(U)})})}),p;Promise.all(h).then(function(){p=r._openRequest(\"POST\",r.options.endpoint),p.setHeader(\"Upload-Concat\",\"final;\".concat(r._parallelUploadUrls.join(\" \")));var d=d0(r.options.metadata);return d!==\"\"&&p.setHeader(\"Upload-Metadata\",d),r._sendRequest(p,null)}).then(function(d){if(!en(d.getStatus(),200)){r._emitHttpError(p,d,\"tus: unexpected response while creating upload\");return}var f=d.getHeader(\"Location\");if(f==null){r._emitHttpError(p,d,\"tus: invalid or missing Location header\");return}r.url=m0(r.options.endpoint,f),cs(\"Created upload at \".concat(r.url)),r._emitSuccess()}).catch(function(d){r._emitError(d)})},\"_startParallelUpload\")},{key:\"_startSingleUpload\",value:n(function(){if(this._aborted=!1,this.url!=null){cs(\"Resuming upload from previous URL: \".concat(this.url)),this._resumeUpload();return}if(this.options.uploadUrl!=null){cs(\"Resuming upload from provided URL: \".concat(this.options.uploadUrl)),this.url=this.options.uploadUrl,this._resumeUpload();return}cs(\"Creating a new upload\"),this._createUpload()},\"_startSingleUpload\")},{key:\"abort\",value:n(function(t){var r=this;return this._parallelUploads!=null&&this._parallelUploads.forEach(function(s){s.abort(t)}),this._req!==null&&this._req.abort(),this._aborted=!0,this._retryTimeout!=null&&(clearTimeout(this._retryTimeout),this._retryTimeout=null),!t||this.url==null?Promise.resolve():i.terminate(this.url,this.options).then(function(){return r._removeFromUrlStorage()})},\"abort\")},{key:\"_emitHttpError\",value:n(function(t,r,s,o){this._emitError(new Jo(s,o,t,r))},\"_emitHttpError\")},{key:\"_emitError\",value:n(function(t){var r=this;if(!this._aborted){if(this.options.retryDelays!=null){var s=this._offset!=null&&this._offset>this._offsetBeforeRetry;if(s&&(this._retryAttempt=0),f0(t,this._retryAttempt,this.options)){var o=this.options.retryDelays[this._retryAttempt++];this._offsetBeforeRetry=this._offset,this._retryTimeout=setTimeout(function(){r.start()},o);return}}if(typeof this.options.onError==\"function\")this.options.onError(t);else throw t}},\"_emitError\")},{key:\"_emitSuccess\",value:n(function(){this.options.removeFingerprintOnSuccess&&this._removeFromUrlStorage(),typeof this.options.onSuccess==\"function\"&&this.options.onSuccess()},\"_emitSuccess\")},{key:\"_emitProgress\",value:n(function(t,r){typeof this.options.onProgress==\"function\"&&this.options.onProgress(t,r)},\"_emitProgress\")},{key:\"_emitChunkComplete\",value:n(function(t,r,s){typeof this.options.onChunkComplete==\"function\"&&this.options.onChunkComplete(t,r,s)},\"_emitChunkComplete\")},{key:\"_createUpload\",value:n(function(){var t=this;if(!this.options.endpoint){this._emitError(new Error(\"tus: unable to create upload because no endpoint is provided\"));return}var r=this._openRequest(\"POST\",this.options.endpoint);this.options.uploadLengthDeferred?r.setHeader(\"Upload-Defer-Length\",1):r.setHeader(\"Upload-Length\",this._size);var s=d0(this.options.metadata);s!==\"\"&&r.setHeader(\"Upload-Metadata\",s);var o;this.options.uploadDataDuringCreation&&!this.options.uploadLengthDeferred?(this._offset=0,o=this._addChunkToRequest(r)):o=this._sendRequest(r,null),o.then(function(a){if(!en(a.getStatus(),200)){t._emitHttpError(r,a,\"tus: unexpected response while creating upload\");return}var l=a.getHeader(\"Location\");if(l==null){t._emitHttpError(r,a,\"tus: invalid or missing Location header\");return}if(t.url=m0(t.options.endpoint,l),cs(\"Created upload at \".concat(t.url)),typeof t.options._onUploadUrlAvailable==\"function\"&&t.options._onUploadUrlAvailable(),t._size===0){t._emitSuccess(),t._source.close();return}t._saveUploadInUrlStorage().then(function(){t.options.uploadDataDuringCreation?t._handleUploadResponse(r,a):(t._offset=0,t._performUpload())})}).catch(function(a){t._emitHttpError(r,null,\"tus: failed to create upload\",a)})},\"_createUpload\")},{key:\"_resumeUpload\",value:n(function(){var t=this,r=this._openRequest(\"HEAD\",this.url),s=this._sendRequest(r,null);s.then(function(o){var a=o.getStatus();if(!en(a,200)){if(a===423){t._emitHttpError(r,o,\"tus: upload is currently locked; retry later\");return}if(en(a,400)&&t._removeFromUrlStorage(),!t.options.endpoint){t._emitHttpError(r,o,\"tus: unable to resume upload (new upload cannot be created without an endpoint)\");return}t.url=null,t._createUpload();return}var l=parseInt(o.getHeader(\"Upload-Offset\"),10);if(Number.isNaN(l)){t._emitHttpError(r,o,\"tus: invalid or missing offset value\");return}var h=parseInt(o.getHeader(\"Upload-Length\"),10);if(Number.isNaN(h)&&!t.options.uploadLengthDeferred){t._emitHttpError(r,o,\"tus: invalid or missing length value\");return}typeof t.options._onUploadUrlAvailable==\"function\"&&t.options._onUploadUrlAvailable(),t._saveUploadInUrlStorage().then(function(){if(l===h){t._emitProgress(h,h),t._emitSuccess();return}t._offset=l,t._performUpload()})}).catch(function(o){t._emitHttpError(r,null,\"tus: failed to resume upload\",o)})},\"_resumeUpload\")},{key:\"_performUpload\",value:n(function(){var t=this;if(!this._aborted){var r;this.options.overridePatchMethod?(r=this._openRequest(\"POST\",this.url),r.setHeader(\"X-HTTP-Method-Override\",\"PATCH\")):r=this._openRequest(\"PATCH\",this.url),r.setHeader(\"Upload-Offset\",this._offset);var s=this._addChunkToRequest(r);s.then(function(o){if(!en(o.getStatus(),200)){t._emitHttpError(r,o,\"tus: unexpected response while uploading chunk\");return}t._handleUploadResponse(r,o)}).catch(function(o){t._aborted||t._emitHttpError(r,null,\"tus: failed to upload chunk at offset \".concat(t._offset),o)})}},\"_performUpload\")},{key:\"_addChunkToRequest\",value:n(function(t){var r=this,s=this._offset,o=this._offset+this.options.chunkSize;return t.setProgressHandler(function(a){r._emitProgress(s+a,r._size)}),t.setHeader(\"Content-Type\",\"application/offset+octet-stream\"),(o===1/0||o>this._size)&&!this.options.uploadLengthDeferred&&(o=this._size),this._source.slice(s,o).then(function(a){var l=a.value,h=a.done;return r.options.uploadLengthDeferred&&h&&(r._size=r._offset+(l&&l.size?l.size:0),t.setHeader(\"Upload-Length\",r._size)),l===null?r._sendRequest(t):(r._emitProgress(r._offset,r._size),r._sendRequest(t,l))})},\"_addChunkToRequest\")},{key:\"_handleUploadResponse\",value:n(function(t,r){var s=parseInt(r.getHeader(\"Upload-Offset\"),10);if(Number.isNaN(s)){this._emitHttpError(t,r,\"tus: invalid or missing offset value\");return}if(this._emitProgress(s,this._size),this._emitChunkComplete(s-this._offset,s,this._size),this._offset=s,s===this._size){this._emitSuccess(),this._source.close();return}this._performUpload()},\"_handleUploadResponse\")},{key:\"_openRequest\",value:n(function(t,r){var s=c0(t,r,this.options);return this._req=s,s},\"_openRequest\")},{key:\"_removeFromUrlStorage\",value:n(function(){var t=this;this._urlStorageKey&&(this._urlStorage.removeUpload(this._urlStorageKey).catch(function(r){t._emitError(r)}),this._urlStorageKey=null)},\"_removeFromUrlStorage\")},{key:\"_saveUploadInUrlStorage\",value:n(function(){var t=this;if(!this.options.storeFingerprintForResuming||!this._fingerprint||this._urlStorageKey!==null)return Promise.resolve();var r={size:this._size,metadata:this.options.metadata,creationTime:new Date().toString()};return this._parallelUploads?r.parallelUploadUrls=this._parallelUploadUrls:r.uploadUrl=this.url,this._urlStorage.addUpload(this._fingerprint,r).then(function(s){t._urlStorageKey=s})},\"_saveUploadInUrlStorage\")},{key:\"_sendRequest\",value:n(function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;return p0(t,r,this.options)},\"_sendRequest\")}],[{key:\"terminate\",value:n(function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},s=c0(\"DELETE\",t,r);return p0(s,null,r).then(function(o){if(o.getStatus()!==204)throw new Jo(\"tus: unexpected response while terminating upload\",null,s,o)}).catch(function(o){if(o instanceof Jo||(o=new Jo(\"tus: failed to terminate upload\",o,s,null)),!f0(o,0,r))throw o;var a=r.retryDelays[0],l=r.retryDelays.slice(1),h=Zo(Zo({},r),{},{retryDelays:l});return new Promise(function(p){return setTimeout(p,a)}).then(function(){return i.terminate(t,h)})})},\"terminate\")}]),i}();function d0(i){return Object.entries(i).map(function(e){var t=g0(e,2),r=t[0],s=t[1];return\"\".concat(r,\" \").concat(Wv.encode(String(s)))}).join(\",\")}n(d0,\"encodeMetadata\");function en(i,e){return i>=e&&i<e+100}n(en,\"inStatusCategory\");function c0(i,e,t){var r=t.httpStack.createRequest(i,e);r.setHeader(\"Tus-Resumable\",\"1.0.0\");var s=t.headers||{};if(Object.entries(s).forEach(function(a){var l=g0(a,2),h=l[0],p=l[1];r.setHeader(h,p)}),t.addRequestId){var o=Yc();r.setHeader(\"X-Request-ID\",o)}return r}n(c0,\"openRequest\");function p0(i,e,t){var r=typeof t.onBeforeRequest==\"function\"?Promise.resolve(t.onBeforeRequest(i)):Promise.resolve();return r.then(function(){return i.send(e).then(function(s){var o=typeof t.onAfterResponse==\"function\"?Promise.resolve(t.onAfterResponse(i,s)):Promise.resolve();return o.then(function(){return s})})})}n(p0,\"sendRequest\");function n5(){var i=!0;return typeof window<\"u\"&&\"navigator\"in window&&window.navigator.onLine===!1&&(i=!1),i}n(n5,\"isOnline\");function f0(i,e,t){if(t.retryDelays==null||e>=t.retryDelays.length||i.originalRequest==null)return!1;if(t&&typeof t.onShouldRetry==\"function\")return t.onShouldRetry(i,e,t);var r=i.originalResponse?i.originalResponse.getStatus():0;return(!en(r,400)||r===409||r===423)&&n5()}n(f0,\"shouldRetry\");function m0(i,e){return new y0.default(e,i).toString()}n(m0,\"resolveUrl\");function a5(i,e){for(var t=Math.floor(i/e),r=[],s=0;s<e;s++)r.push({start:t*s,end:t*(s+1)});return r[e-1].end=i,r}n(a5,\"splitSizeIntoParts\");v0.defaultOptions=o5;var Ju=v0;function l5(i,e){if(!(i instanceof e))throw new TypeError(\"Cannot call a class as a function\")}n(l5,\"_classCallCheck\");function b0(i,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(i,r.key,r)}}n(b0,\"_defineProperties\");function u5(i,e,t){return e&&b0(i.prototype,e),t&&b0(i,t),Object.defineProperty(i,\"prototype\",{writable:!1}),i}n(u5,\"_createClass\");var w0=function(){function i(){l5(this,i)}return n(i,\"NoopUrlStorage\"),u5(i,[{key:\"listAllUploads\",value:n(function(){return Promise.resolve([])},\"listAllUploads\")},{key:\"findUploadsByFingerprint\",value:n(function(t){return Promise.resolve([])},\"findUploadsByFingerprint\")},{key:\"removeUpload\",value:n(function(t){return Promise.resolve()},\"removeUpload\")},{key:\"addUpload\",value:n(function(t,r){return Promise.resolve(null)},\"addUpload\")}]),i}();function h5(i,e){if(!(i instanceof e))throw new TypeError(\"Cannot call a class as a function\")}n(h5,\"_classCallCheck\");function S0(i,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(i,r.key,r)}}n(S0,\"_defineProperties\");function d5(i,e,t){return e&&S0(i.prototype,e),t&&S0(i,t),Object.defineProperty(i,\"prototype\",{writable:!1}),i}n(d5,\"_createClass\");var Jc=!1;try{Jc=\"localStorage\"in window,Qc=\"tusSupport\",localStorage.setItem(Qc,localStorage.getItem(Qc))}catch(i){if(i.code===i.SECURITY_ERR||i.code===i.QUOTA_EXCEEDED_ERR)Jc=!1;else throw i}var Qc,P0=Jc,_0=function(){function i(){h5(this,i)}return n(i,\"WebStorageUrlStorage\"),d5(i,[{key:\"findAllUploads\",value:n(function(){var t=this._findEntries(\"tus::\");return Promise.resolve(t)},\"findAllUploads\")},{key:\"findUploadsByFingerprint\",value:n(function(t){var r=this._findEntries(\"tus::\".concat(t,\"::\"));return Promise.resolve(r)},\"findUploadsByFingerprint\")},{key:\"removeUpload\",value:n(function(t){return localStorage.removeItem(t),Promise.resolve()},\"removeUpload\")},{key:\"addUpload\",value:n(function(t,r){var s=Math.round(Math.random()*1e12),o=\"tus::\".concat(t,\"::\").concat(s);return localStorage.setItem(o,JSON.stringify(r)),Promise.resolve(o)},\"addUpload\")},{key:\"_findEntries\",value:n(function(t){for(var r=[],s=0;s<localStorage.length;s++){var o=localStorage.key(s);if(o.indexOf(t)===0)try{var a=JSON.parse(localStorage.getItem(o));a.urlStorageKey=o,r.push(a)}catch{}}return r},\"_findEntries\")}]),i}();function Zc(i,e){if(!(i instanceof e))throw new TypeError(\"Cannot call a class as a function\")}n(Zc,\"_classCallCheck\");function x0(i,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(i,r.key,r)}}n(x0,\"_defineProperties\");function ep(i,e,t){return e&&x0(i.prototype,e),t&&x0(i,t),Object.defineProperty(i,\"prototype\",{writable:!1}),i}n(ep,\"_createClass\");var F0=function(){function i(){Zc(this,i)}return n(i,\"XHRHttpStack\"),ep(i,[{key:\"createRequest\",value:n(function(t,r){return new c5(t,r)},\"createRequest\")},{key:\"getName\",value:n(function(){return\"XHRHttpStack\"},\"getName\")}]),i}();var c5=function(){function i(e,t){Zc(this,i),this._xhr=new XMLHttpRequest,this._xhr.open(e,t,!0),this._method=e,this._url=t,this._headers={}}return n(i,\"Request\"),ep(i,[{key:\"getMethod\",value:n(function(){return this._method},\"getMethod\")},{key:\"getURL\",value:n(function(){return this._url},\"getURL\")},{key:\"setHeader\",value:n(function(t,r){this._xhr.setRequestHeader(t,r),this._headers[t]=r},\"setHeader\")},{key:\"getHeader\",value:n(function(t){return this._headers[t]},\"getHeader\")},{key:\"setProgressHandler\",value:n(function(t){\"upload\"in this._xhr&&(this._xhr.upload.onprogress=function(r){r.lengthComputable&&t(r.loaded)})},\"setProgressHandler\")},{key:\"send\",value:n(function(){var t=this,r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null;return new Promise(function(s,o){t._xhr.onload=function(){s(new p5(t._xhr))},t._xhr.onerror=function(a){o(a)},t._xhr.send(r)})},\"send\")},{key:\"abort\",value:n(function(){return this._xhr.abort(),Promise.resolve()},\"abort\")},{key:\"getUnderlyingObject\",value:n(function(){return this._xhr},\"getUnderlyingObject\")}]),i}(),p5=function(){function i(e){Zc(this,i),this._xhr=e}return n(i,\"Response\"),ep(i,[{key:\"getStatus\",value:n(function(){return this._xhr.status},\"getStatus\")},{key:\"getHeader\",value:n(function(t){return this._xhr.getResponseHeader(t)},\"getHeader\")},{key:\"getBody\",value:n(function(){return this._xhr.responseText},\"getBody\")},{key:\"getUnderlyingObject\",value:n(function(){return this._xhr},\"getUnderlyingObject\")}]),i}();var f5=n(function(){return typeof navigator<\"u\"&&typeof navigator.product==\"string\"&&navigator.product.toLowerCase()===\"reactnative\"},\"isReactNative\"),Zu=f5;function tp(i){return new Promise(function(e,t){var r=new XMLHttpRequest;r.responseType=\"blob\",r.onload=function(){var s=r.response;e(s)},r.onerror=function(s){t(s)},r.open(\"GET\",i),r.send()})}n(tp,\"uriToBlob\");var m5=n(function(){return typeof window<\"u\"&&(typeof window.PhoneGap<\"u\"||typeof window.Cordova<\"u\"||typeof window.cordova<\"u\")},\"isCordova\"),E0=m5;function ip(i){return new Promise(function(e,t){var r=new FileReader;r.onload=function(){var s=new Uint8Array(r.result);e({value:s})},r.onerror=function(s){t(s)},r.readAsArrayBuffer(i)})}n(ip,\"readAsByteArray\");function g5(i,e){if(!(i instanceof e))throw new TypeError(\"Cannot call a class as a function\")}n(g5,\"_classCallCheck\");function O0(i,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(i,r.key,r)}}n(O0,\"_defineProperties\");function y5(i,e,t){return e&&O0(i.prototype,e),t&&O0(i,t),Object.defineProperty(i,\"prototype\",{writable:!1}),i}n(y5,\"_createClass\");var rp=function(){function i(e){g5(this,i),this._file=e,this.size=e.size}return n(i,\"FileSource\"),y5(i,[{key:\"slice\",value:n(function(t,r){if(E0())return ip(this._file.slice(t,r));var s=this._file.slice(t,r);return Promise.resolve({value:s})},\"slice\")},{key:\"close\",value:n(function(){},\"close\")}]),i}();function v5(i,e){if(!(i instanceof e))throw new TypeError(\"Cannot call a class as a function\")}n(v5,\"_classCallCheck\");function C0(i,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(i,r.key,r)}}n(C0,\"_defineProperties\");function b5(i,e,t){return e&&C0(i.prototype,e),t&&C0(i,t),Object.defineProperty(i,\"prototype\",{writable:!1}),i}n(b5,\"_createClass\");function T0(i){return i===void 0?0:i.size!==void 0?i.size:i.length}n(T0,\"len\");function w5(i,e){if(i.concat)return i.concat(e);if(i instanceof Blob)return new Blob([i,e],{type:i.type});if(i.set){var t=new i.constructor(i.length+e.length);return t.set(i),t.set(e,i.length),t}throw new Error(\"Unknown data type\")}n(w5,\"concat\");var A0=function(){function i(e){v5(this,i),this._buffer=void 0,this._bufferOffset=0,this._reader=e,this._done=!1}return n(i,\"StreamSource\"),b5(i,[{key:\"slice\",value:n(function(t,r){return t<this._bufferOffset?Promise.reject(new Error(\"Requested data is before the reader's current offset\")):this._readUntilEnoughDataOrDone(t,r)},\"slice\")},{key:\"_readUntilEnoughDataOrDone\",value:n(function(t,r){var s=this,o=r<=this._bufferOffset+T0(this._buffer);if(this._done||o){var a=this._getDataFromBuffer(t,r),l=a==null?this._done:!1;return Promise.resolve({value:a,done:l})}return this._reader.read().then(function(h){var p=h.value,d=h.done;return d?s._done=!0:s._buffer===void 0?s._buffer=p:s._buffer=w5(s._buffer,p),s._readUntilEnoughDataOrDone(t,r)})},\"_readUntilEnoughDataOrDone\")},{key:\"_getDataFromBuffer\",value:n(function(t,r){t>this._bufferOffset&&(this._buffer=this._buffer.slice(t-this._bufferOffset),this._bufferOffset=t);var s=T0(this._buffer)===0;return this._done&&s?null:this._buffer.slice(0,r-t)},\"_getDataFromBuffer\")},{key:\"close\",value:n(function(){this._reader.cancel&&this._reader.cancel()},\"close\")}]),i}();function S5(i,e){if(!(i instanceof e))throw new TypeError(\"Cannot call a class as a function\")}n(S5,\"_classCallCheck\");function R0(i,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(i,r.key,r)}}n(R0,\"_defineProperties\");function P5(i,e,t){return e&&R0(i.prototype,e),t&&R0(i,t),Object.defineProperty(i,\"prototype\",{writable:!1}),i}n(P5,\"_createClass\");var U0=function(){function i(){S5(this,i)}return n(i,\"FileReader\"),P5(i,[{key:\"openFile\",value:n(function(t,r){return Zu()&&t&&typeof t.uri<\"u\"?tp(t.uri).then(function(s){return new rp(s)}).catch(function(s){throw new Error(\"tus: cannot fetch `file.uri` as Blob, make sure the uri is correct and accessible. \".concat(s))}):typeof t.slice==\"function\"&&typeof t.size<\"u\"?Promise.resolve(new rp(t)):typeof t.read==\"function\"?(r=Number(r),Number.isFinite(r)?Promise.resolve(new A0(t,r)):Promise.reject(new Error(\"cannot create source for stream without a finite value for the `chunkSize` option\"))):Promise.reject(new Error(\"source object may only be an instance of File, Blob, or Reader in this environment\"))},\"openFile\")}]),i}();function sp(i,e){return Zu()?Promise.resolve(_5(i,e)):Promise.resolve([\"tus-br\",i.name,i.type,i.size,i.lastModified,e.endpoint].join(\"-\"))}n(sp,\"fingerprint\");function _5(i,e){var t=i.exif?x5(JSON.stringify(i.exif)):\"noexif\";return[\"tus-rn\",i.name||\"noname\",i.size||\"nosize\",t,e.endpoint].join(\"/\")}n(_5,\"reactNativeFingerprint\");function x5(i){var e=0;if(i.length===0)return e;for(var t=0;t<i.length;t++){var r=i.charCodeAt(t);e=(e<<5)-e+r,e&=e}return e}n(x5,\"hashCode\");function op(i){\"@babel/helpers - typeof\";return op=typeof Symbol==\"function\"&&typeof Symbol.iterator==\"symbol\"?function(e){return typeof e}:function(e){return e&&typeof Symbol==\"function\"&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},op(i)}n(op,\"_typeof\");function F5(i,e){if(!(i instanceof e))throw new TypeError(\"Cannot call a class as a function\")}n(F5,\"_classCallCheck\");function k0(i,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(i,r.key,r)}}n(k0,\"_defineProperties\");function E5(i,e,t){return e&&k0(i.prototype,e),t&&k0(i,t),Object.defineProperty(i,\"prototype\",{writable:!1}),i}n(E5,\"_createClass\");function O5(i,e){if(typeof e!=\"function\"&&e!==null)throw new TypeError(\"Super expression must either be null or a function\");i.prototype=Object.create(e&&e.prototype,{constructor:{value:i,writable:!0,configurable:!0}}),Object.defineProperty(i,\"prototype\",{writable:!1}),e&&np(i,e)}n(O5,\"_inherits\");function np(i,e){return np=Object.setPrototypeOf?Object.setPrototypeOf.bind():n(function(r,s){return r.__proto__=s,r},\"_setPrototypeOf\"),np(i,e)}n(np,\"_setPrototypeOf\");function C5(i){var e=R5();return n(function(){var r=eh(i),s;if(e){var o=eh(this).constructor;s=Reflect.construct(r,arguments,o)}else s=r.apply(this,arguments);return T5(this,s)},\"_createSuperInternal\")}n(C5,\"_createSuper\");function T5(i,e){if(e&&(op(e)===\"object\"||typeof e==\"function\"))return e;if(e!==void 0)throw new TypeError(\"Derived constructors may only return object or undefined\");return A5(i)}n(T5,\"_possibleConstructorReturn\");function A5(i){if(i===void 0)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return i}n(A5,\"_assertThisInitialized\");function R5(){if(typeof Reflect>\"u\"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy==\"function\")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}n(R5,\"_isNativeReflectConstruct\");function eh(i){return eh=Object.setPrototypeOf?Object.getPrototypeOf.bind():n(function(t){return t.__proto__||Object.getPrototypeOf(t)},\"_getPrototypeOf\"),eh(i)}n(eh,\"_getPrototypeOf\");function D0(i,e){var t=Object.keys(i);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(i);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(i,s).enumerable})),t.push.apply(t,r)}return t}n(D0,\"ownKeys\");function tn(i){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?D0(Object(t),!0).forEach(function(r){U5(i,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(i,Object.getOwnPropertyDescriptors(t)):D0(Object(t)).forEach(function(r){Object.defineProperty(i,r,Object.getOwnPropertyDescriptor(t,r))})}return i}n(tn,\"_objectSpread\");function U5(i,e,t){return e in i?Object.defineProperty(i,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):i[e]=t,i}n(U5,\"_defineProperty\");var th=tn(tn({},Ju.defaultOptions),{},{httpStack:new F0,fileReader:new U0,urlStorage:P0?new _0:new w0,fingerprint:sp}),N0=function(i){O5(t,i);var e=C5(t);function t(){var r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return F5(this,t),s=tn(tn({},th),s),e.call(this,r,s)}return n(t,\"Upload\"),E5(t,null,[{key:\"terminate\",value:n(function(s,o,a){return o=tn(tn({},th),o),Ju.terminate(s,o,a)},\"terminate\")}]),t}(Ju),M0=window,k5=M0.XMLHttpRequest,I0=M0.Blob,fI=k5&&I0&&typeof I0.prototype.slice==\"function\";function D5(){return typeof window<\"u\"&&(typeof window.PhoneGap<\"u\"||typeof window.Cordova<\"u\"||typeof window.cordova<\"u\")}n(D5,\"isCordova\");function I5(){return typeof navigator<\"u\"&&typeof navigator.product==\"string\"&&navigator.product.toLowerCase()===\"reactnative\"}n(I5,\"isReactNative\");function ap(i){return(e,t)=>{if(D5()||I5())return th.fingerprint(e,t);let r=[\"tus\",i.id,t.endpoint].join(\"-\");return Promise.resolve(r)}}n(ap,\"getFingerprint\");function ao(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(ao,\"_classPrivateFieldLooseBase\");var N5=0;function Za(i){return\"__private_\"+N5+++\"_\"+i}n(Za,\"_classPrivateFieldLooseKey\");var M5={version:\"3.4.0\"},B0={endpoint:\"\",uploadUrl:null,metadata:{},uploadSize:null,onProgress:null,onChunkComplete:null,onSuccess:null,onError:null,overridePatchMethod:!1,headers:{},addRequestId:!1,chunkSize:1/0,retryDelays:[100,1e3,3e3,5e3],parallelUploads:1,removeFingerprintOnSuccess:!1,uploadLengthDeferred:!1,uploadDataDuringCreation:!1},Ja=Za(\"retryDelayIterator\"),up=Za(\"uploadLocalFile\"),hp=Za(\"getCompanionClientArgs\"),lp=Za(\"uploadFiles\"),Qa=Za(\"handleUpload\"),or=class extends ve{constructor(e,t){var r,s;super(e,t),Object.defineProperty(this,lp,{value:z5}),Object.defineProperty(this,hp,{value:B5}),Object.defineProperty(this,up,{value:L5}),Object.defineProperty(this,Ja,{writable:!0,value:void 0}),Object.defineProperty(this,Qa,{writable:!0,value:async a=>{if(a.length===0){this.uppy.log(\"[Tus] No files to upload\");return}this.opts.limit===0&&this.uppy.log(\"[Tus] When uploading multiple files at once, consider setting the `limit` option (to `10` for example), to limit the number of concurrent uploads, which helps prevent memory and network issues: https://uppy.io/docs/tus/#limit-0\",\"warning\"),this.uppy.log(\"[Tus] Uploading...\");let l=this.uppy.getFilesByIds(a);await ao(this,lp)[lp](l)}}),this.type=\"uploader\",this.id=this.opts.id||\"Tus\",this.title=\"Tus\";let o={limit:20,retryDelays:B0.retryDelays,withCredentials:!1};if(this.opts={...o,...t},t?.allowedMetaFields===void 0&&\"metaFields\"in this.opts)throw new Error(\"The `metaFields` option has been renamed to `allowedMetaFields`.\");if(\"autoRetry\"in t)throw new Error(\"The `autoRetry` option was deprecated and has been removed.\");this.requests=(r=this.opts.rateLimitedQueue)!=null?r:new Mt(this.opts.limit),ao(this,Ja)[Ja]=(s=this.opts.retryDelays)==null?void 0:s.values(),this.uploaders=Object.create(null),this.uploaderEvents=Object.create(null),this.handleResetProgress=this.handleResetProgress.bind(this)}handleResetProgress(){let e={...this.uppy.getState().files};Object.keys(e).forEach(t=>{if(e[t].tus&&e[t].tus.uploadUrl){let r={...e[t].tus};delete r.uploadUrl,e[t]={...e[t],tus:r}}}),this.uppy.setState({files:e})}resetUploaderReferences(e,t){if(t===void 0&&(t={}),this.uploaders[e]){let r=this.uploaders[e];r.abort(),t.abort&&r.abort(!0),this.uploaders[e]=null}this.uploaderEvents[e]&&(this.uploaderEvents[e].remove(),this.uploaderEvents[e]=null)}onReceiveUploadUrl(e,t){let r=this.uppy.getFile(e.id);r&&(!r.tus||r.tus.uploadUrl!==t)&&(this.uppy.log(\"[Tus] Storing upload url\"),this.uppy.setFileState(r.id,{tus:{...r.tus,uploadUrl:t}}))}install(){this.uppy.setState({capabilities:{...this.uppy.getState().capabilities,resumableUploads:!0}}),this.uppy.addUploader(ao(this,Qa)[Qa]),this.uppy.on(\"reset-progress\",this.handleResetProgress)}uninstall(){this.uppy.setState({capabilities:{...this.uppy.getState().capabilities,resumableUploads:!1}}),this.uppy.removeUploader(ao(this,Qa)[Qa])}};n(or,\"Tus\");function L5(i){var e=this;return this.resetUploaderReferences(i.id),new Promise((t,r)=>{let s,o,a,l={...this.opts,...i.tus||{}};typeof l.headers==\"function\"&&(l.headers=l.headers(i));let h={...B0,...l};h.fingerprint=ap(i),h.onBeforeRequest=S=>{let E=S.getUnderlyingObject();E.withCredentials=!!l.withCredentials;let x;if(typeof l.onBeforeRequest==\"function\"&&(x=l.onBeforeRequest(S,i)),Ct(s,\"shouldBeRequeued\")){if(!s.shouldBeRequeued)return Promise.reject();let F,U=new Promise(j=>{F=j});return s=this.requests.run(()=>(i.isPaused&&s.abort(),F(),()=>{})),Promise.all([U,x])}return x},h.onError=S=>{var E;this.uppy.log(S);let x=S.originalRequest?S.originalRequest.getUnderlyingObject():null;so(x)&&(S=new Pi(S,x)),this.resetUploaderReferences(i.id),(E=s)==null||E.abort(),this.uppy.emit(\"upload-error\",i,S),typeof l.onError==\"function\"&&l.onError(S),r(S)},h.onProgress=(S,E)=>{this.onReceiveUploadUrl(i,a.url),typeof l.onProgress==\"function\"&&l.onProgress(S,E),this.uppy.emit(\"upload-progress\",i,{uploader:this,bytesUploaded:S,bytesTotal:E})},h.onSuccess=()=>{let S={uploadURL:a.url};this.resetUploaderReferences(i.id),s.done(),this.uppy.emit(\"upload-success\",i,S),a.url&&this.uppy.log(`Download ${a.file.name} from ${a.url}`),typeof l.onSuccess==\"function\"&&l.onSuccess(),t(a)};let p=n(S=>{var E;let x=S==null||(E=S.originalResponse)==null?void 0:E.getStatus();if(x===429){if(!this.requests.isPaused){var F;let U=(F=ao(this,Ja)[Ja])==null?void 0:F.next();if(U==null||U.done)return!1;this.requests.rateLimit(U.value)}}else{if(x>400&&x<500&&x!==409&&x!==423)return!1;typeof navigator<\"u\"&&navigator.onLine===!1&&(this.requests.isPaused||(this.requests.pause(),window.addEventListener(\"online\",()=>{this.requests.resume()},{once:!0})))}return s.abort(),s={shouldBeRequeued:!0,abort(){this.shouldBeRequeued=!1},done(){throw new Error(\"Cannot mark a queued request as done: this indicates a bug\")},fn(){throw new Error(\"Cannot run a queued request: this indicates a bug\")}},!0},\"defaultOnShouldRetry\");l.onShouldRetry!=null?h.onShouldRetry=function(){for(var S=arguments.length,E=new Array(S),x=0;x<S;x++)E[x]=arguments[x];return l.onShouldRetry(...E,p)}:h.onShouldRetry=p;let d=n((S,E,x)=>{Ct(S,E)&&!Ct(S,x)&&(S[x]=S[E])},\"copyProp\"),f={};(Array.isArray(l.allowedMetaFields)?l.allowedMetaFields:Object.keys(i.meta)).forEach(S=>{f[S]=i.meta[S]}),d(f,\"type\",\"filetype\"),d(f,\"name\",\"filename\"),h.metadata=f,a=new N0(i.data,h),this.uploaders[i.id]=a;let b=new mi(this.uppy);this.uploaderEvents[i.id]=b,o=n(()=>(i.isPaused||a.start(),()=>{}),\"qRequest\"),a.findPreviousUploads().then(S=>{let E=S[0];E&&(this.uppy.log(`[Tus] Resuming upload of ${i.id} started at ${E.creationTime}`),a.resumeFromPreviousUpload(E))}),s=this.requests.run(o),b.onFileRemove(i.id,S=>{s.abort(),this.resetUploaderReferences(i.id,{abort:!!a.url}),t(`upload ${S} was removed`)}),b.onPause(i.id,S=>{s.abort(),S?a.abort():s=this.requests.run(o)}),b.onPauseAll(i.id,()=>{s.abort(),a.abort()}),b.onCancelAll(i.id,function(S){let{reason:E}=S===void 0?{}:S;E===\"user\"&&(s.abort(),e.resetUploaderReferences(i.id,{abort:!!a.url})),t(`upload ${i.id} was canceled`)}),b.onResumeAll(i.id,()=>{s.abort(),i.error&&a.abort(),s=this.requests.run(o)})}).catch(t=>{throw this.uppy.emit(\"upload-error\",i,t),t})}n(L5,\"_uploadLocalFile2\");function B5(i){let e={...this.opts};return i.tus&&Object.assign(e,i.tus),{...i.remote.body,endpoint:e.endpoint,uploadUrl:e.uploadUrl,protocol:\"tus\",size:i.data.size,headers:e.headers,metadata:i.meta}}n(B5,\"_getCompanionClientArgs2\");async function z5(i){let e=hs(i),t=ds(e);this.uppy.emit(\"upload-start\",t),await Promise.allSettled(e.map((r,s)=>{let o=s+1,a=i.length;if(r.isRemote){let l=n(()=>this.requests,\"getQueue\"),h=new AbortController,p=n(f=>{f.id===r.id&&h.abort()},\"removedHandler\");this.uppy.on(\"file-removed\",p);let d=r.remote.requestClient.uploadRemoteFile(r,ao(this,hp)[hp](r),{signal:h.signal,getQueue:l});return this.requests.wrapSyncFunction(()=>{this.uppy.off(\"file-removed\",p)},{priority:-1})(),d}return ao(this,up)[up](r,o,a)}))}n(z5,\"_uploadFiles2\");or.VERSION=M5.version;var j0=de(cp(),1);function ce(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(ce,\"_classPrivateFieldLooseBase\");var H5=0;function nr(i){return\"__private_\"+H5+++\"_\"+i}n(nr,\"_classPrivateFieldLooseKey\");var $5=\"ASSEMBLY_UPLOADING\",gp=\"ASSEMBLY_EXECUTING\",yp=\"ASSEMBLY_COMPLETED\",z0=[$5,gp,yp];function ih(i,e){return z0.indexOf(i)>=z0.indexOf(e)}n(ih,\"isStatus\");var uo=nr(\"rateLimitedQueue\"),el=nr(\"fetchWithNetworkError\"),lo=nr(\"previousFetchStatusStillPending\"),qe=nr(\"sse\"),vp=nr(\"onFinished\"),pp=nr(\"connectServerSentEvents\"),ki=nr(\"onError\"),fp=nr(\"beginPolling\"),zr=nr(\"fetchStatus\"),mp=nr(\"diffStatus\"),rh=class extends j0.default{constructor(e,t){super(),Object.defineProperty(this,mp,{value:X5}),Object.defineProperty(this,zr,{value:K5}),Object.defineProperty(this,fp,{value:G5}),Object.defineProperty(this,ki,{value:W5}),Object.defineProperty(this,pp,{value:V5}),Object.defineProperty(this,vp,{value:q5}),Object.defineProperty(this,uo,{writable:!0,value:void 0}),Object.defineProperty(this,el,{writable:!0,value:void 0}),Object.defineProperty(this,lo,{writable:!0,value:!1}),Object.defineProperty(this,qe,{writable:!0,value:void 0}),this.status=e,this.pollInterval=null,this.closed=!1,ce(this,uo)[uo]=t,ce(this,el)[el]=t.wrapPromiseFunction(_s)}connect(){ce(this,pp)[pp](),ce(this,fp)[fp]()}update(){return ce(this,zr)[zr]({diff:!0})}updateStatus(e){ce(this,mp)[mp](this.status,e),this.status=e}close(){this.closed=!0,ce(this,qe)[qe]&&(ce(this,qe)[qe].close(),ce(this,qe)[qe]=null),clearInterval(this.pollInterval),this.pollInterval=null}};n(rh,\"TransloaditAssembly\");function q5(){this.emit(\"finished\"),this.close()}n(q5,\"_onFinished2\");function V5(){ce(this,qe)[qe]=new EventSource(`${this.status.websocket_url}?assembly=${this.status.assembly_id}`),ce(this,qe)[qe].addEventListener(\"open\",()=>{this.socket&&(this.socket.disconnect(),this.socket=null),clearInterval(this.pollInterval),this.pollInterval=null}),ce(this,qe)[qe].addEventListener(\"message\",i=>{i.data===\"assembly_finished\"&&ce(this,vp)[vp](),i.data===\"assembly_uploading_finished\"&&this.emit(\"executing\"),i.data===\"assembly_upload_meta_data_extracted\"&&(this.emit(\"metadata\"),ce(this,zr)[zr]({diff:!1}))}),ce(this,qe)[qe].addEventListener(\"assembly_upload_finished\",i=>{let e=JSON.parse(i.data);this.emit(\"upload\",e),this.status.uploads.push(e)}),ce(this,qe)[qe].addEventListener(\"assembly_result_finished\",i=>{var e,t;let[r,s]=JSON.parse(i.data);this.emit(\"result\",r,s),((t=(e=this.status.results)[r])!=null?t:e[r]=[]).push(s)}),ce(this,qe)[qe].addEventListener(\"assembly_execution_progress\",i=>{let e=JSON.parse(i.data);this.emit(\"execution-progress\",e)}),ce(this,qe)[qe].addEventListener(\"assembly_error\",i=>{try{ce(this,ki)[ki](JSON.parse(i.data))}catch{ce(this,ki)[ki]({msg:i.data})}ce(this,zr)[zr]({diff:!1})})}n(V5,\"_connectServerSentEvents2\");function W5(i){this.emit(\"error\",Object.assign(new Error(i.msg),i)),this.close()}n(W5,\"_onError2\");function G5(){this.pollInterval=setInterval(()=>{ce(this,zr)[zr]()},2e3)}n(G5,\"_beginPolling2\");async function K5(i){let{diff:e=!0}=i===void 0?{}:i;if(!(this.closed||ce(this,uo)[uo].isPaused||ce(this,lo)[lo]))try{ce(this,lo)[lo]=!0;let t=await ce(this,el)[el](this.status.assembly_ssl_url);if(ce(this,lo)[lo]=!1,this.closed)return;if(t.status===429){ce(this,uo)[uo].rateLimit(2e3);return}if(!t.ok){ce(this,ki)[ki](new Pi(t.statusText));return}let r=await t.json();if(this.closed)return;this.emit(\"status\",r),e?this.updateStatus(r):this.status=r}catch(t){ce(this,ki)[ki](t)}}n(K5,\"_fetchStatus2\");function X5(i,e){let t=i.ok,r=e.ok;if(e.error&&!i.error)return ce(this,ki)[ki](e);let s=ih(r,gp)&&!ih(t,gp);s&&this.emit(\"executing\"),Object.keys(e.uploads).filter(o=>!Ct(i.uploads,o)).forEach(o=>{this.emit(\"upload\",e.uploads[o])}),s&&this.emit(\"metadata\"),Object.keys(e.results).forEach(o=>{let a=e.results[o],l=i.results[o];a.filter(h=>!l||!l.some(p=>p.id===h.id)).forEach(h=>{this.emit(\"result\",o,h)})}),ih(r,yp)&&!ih(t,yp)&&this.emit(\"finished\")}n(X5,\"_diffStatus2\");var bp=rh;function Ne(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(Ne,\"_classPrivateFieldLooseBase\");var Y5=0;function sh(i){return\"__private_\"+Y5+++\"_\"+i}n(sh,\"_classPrivateFieldLooseKey\");var H0=\"/assemblies\",Bt=sh(\"headers\"),tl=sh(\"fetchWithNetworkError\"),bt=sh(\"fetchJSON\"),ai=sh(\"reportError\"),rn=class{constructor(e){e===void 0&&(e={}),Object.defineProperty(this,bt,{value:Q5}),Object.defineProperty(this,Bt,{writable:!0,value:{}}),Object.defineProperty(this,tl,{writable:!0,value:void 0}),Object.defineProperty(this,ai,{writable:!0,value:(t,r)=>{if(this.opts.errorReporting===!1)throw t;let s={type:r.type};throw r.assembly&&(s.assembly=r.assembly.assembly_id,s.instance=r.assembly.instance),r.url&&(s.endpoint=r.url),this.submitError(t,s).catch(()=>{}),t}}),this.opts=e,this.opts.client!=null&&(Ne(this,Bt)[Bt][\"Transloadit-Client\"]=this.opts.client),Ne(this,tl)[tl]=this.opts.rateLimitedQueue.wrapPromiseFunction(_s)}createAssembly(e){let{params:t,fields:r,signature:s,expectedFiles:o}=e,a=new FormData;a.append(\"params\",typeof t==\"string\"?t:JSON.stringify(t)),s&&a.append(\"signature\",s),Object.keys(r).forEach(h=>{a.append(h,r[h])}),a.append(\"num_expected_upload_files\",o);let l=new URL(H0,`${this.opts.service}`).href;return Ne(this,bt)[bt](l,{method:\"POST\",headers:Ne(this,Bt)[Bt],body:a}).catch(h=>Ne(this,ai)[ai](h,{url:l,type:\"API_ERROR\"}))}reserveFile(e,t){let r=encodeURIComponent(t.size),s=`${e.assembly_ssl_url}/reserve_file?size=${r}`;return Ne(this,bt)[bt](s,{method:\"POST\",headers:Ne(this,Bt)[Bt]}).catch(o=>Ne(this,ai)[ai](o,{assembly:e,file:t,url:s,type:\"API_ERROR\"}))}addFile(e,t){if(!t.uploadURL)return Promise.reject(new Error(\"File does not have an `uploadURL`.\"));let r=encodeURIComponent(t.size),s=encodeURIComponent(t.uploadURL),o=encodeURIComponent(t.name),l=`size=${r}&filename=${o}&fieldname=file&s3Url=${s}`,h=`${e.assembly_ssl_url}/add_file?${l}`;return Ne(this,bt)[bt](h,{method:\"POST\",headers:Ne(this,Bt)[Bt]}).catch(p=>Ne(this,ai)[ai](p,{assembly:e,file:t,url:h,type:\"API_ERROR\"}))}updateNumberOfFilesInAssembly(e,t){let r=new URL(e.assembly_ssl_url);r.pathname=\"/update_assemblies\";let s=JSON.stringify({assembly_updates:[{assembly_id:e.assembly_id,num_expected_upload_files:t}]});return Ne(this,bt)[bt](r,{method:\"POST\",headers:Ne(this,Bt)[Bt],body:s}).catch(o=>Ne(this,ai)[ai](o,{url:r,type:\"API_ERROR\"}))}cancelAssembly(e){let t=e.assembly_ssl_url;return Ne(this,bt)[bt](t,{method:\"DELETE\",headers:Ne(this,Bt)[Bt]}).catch(r=>Ne(this,ai)[ai](r,{url:t,type:\"API_ERROR\"}))}getAssemblyStatus(e){return Ne(this,bt)[bt](e,{headers:Ne(this,Bt)[Bt]}).catch(t=>Ne(this,ai)[ai](t,{url:e,type:\"STATUS_ERROR\"}))}submitError(e,t){let{endpoint:r,instance:s,assembly:o}=t===void 0?{}:t,a=e.details?`${e.message} (${e.details})`:e.message;return Ne(this,bt)[bt](\"https://transloaditstatus.com/client_error\",{method:\"POST\",body:JSON.stringify({endpoint:r,instance:s,assembly_id:o,agent:typeof navigator<\"u\"?navigator.userAgent:\"\",client:this.opts.client,error:a})})}};n(rn,\"Client\");function Q5(){for(var i=arguments.length,e=new Array(i),t=0;t<i;t++)e[t]=arguments[t];return Ne(this,tl)[tl](...e).then(r=>{if(r.status===429)return this.opts.rateLimitedQueue.rateLimit(2e3),Ne(this,bt)[bt](...e);if(!r.ok){let s=new Error(r.statusText);return s.statusCode=r.status,`${e[0]}`.endsWith(H0)?r.json().then(o=>{if(!o.error)throw s;let a=new Error(o.error);throw a.details=o.message,a.assembly=o,o.assembly_id&&(a.details+=` Assembly ID: ${o.assembly_id}`),a},o=>{throw o.cause=s,o}):Promise.reject(s)}return r.json()})}n(Q5,\"_fetchJSON2\");function wp(i){if(i==null)throw new Error(\"Transloadit: The `params` option is required.\");if(typeof i==\"string\")try{i=JSON.parse(i)}catch(e){throw new vr(\"Transloadit: The `params` option is a malformed JSON string.\",{cause:e})}if(!i.auth||!i.auth.key)throw new Error(\"Transloadit: The `params.auth.key` option is required. You can find your Transloadit API key at https://transloadit.com/c/template-credentials\")}n(wp,\"validateParams\");function J5(i){let e=Object.create(null);for(let{fileIDs:t,options:r}of i.filter(Boolean)){let s=JSON.stringify(r);s in e?e[s].fileIDArrays.push(t):e[s]={options:r,fileIDArrays:[t]}}return Object.values(e).map(t=>{let{options:r,fileIDArrays:s}=t;return{options:r,fileIDs:s.flat(1)}})}n(J5,\"dedupe\");async function $0(i,e){let t=typeof e.assemblyOptions==\"function\"?await e.assemblyOptions(i,e):e.assemblyOptions;wp(t.params);let{fields:r}=t;return Array.isArray(r)?t.fields=i==null?{}:Object.fromEntries(r.map(s=>[s,i.meta[s]])):r==null&&(t.fields={}),t}n($0,\"getAssemblyOptions\");var oh=class{constructor(e,t){this.files=e,this.opts=t}async build(){let e=this.opts;if(this.files.length>0)return Promise.all(this.files.map(async t=>{if(t==null)return;let r=await $0(t,e);if(t!=null)return{fileIDs:[t.id],options:r}})).then(J5);if(e.alwaysRunAssembly){let t=await $0(null,e);return[{fileIDs:[],options:t}]}return[]}};n(oh,\"AssemblyOptions\");var q0=oh;var V0=de(cp(),1);function se(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(se,\"_classPrivateFieldLooseBase\");var Z5=0;function li(i){return\"__private_\"+Z5+++\"_\"+i}n(li,\"_classPrivateFieldLooseKey\");var il=li(\"assemblyIDs\"),Sp=li(\"reject\"),co=li(\"remaining\"),rl=li(\"resolve\"),Oe=li(\"uppy\"),jr=li(\"watching\"),sl=li(\"onAssemblyComplete\"),ol=li(\"onAssemblyCancel\"),po=li(\"onAssemblyError\"),nl=li(\"onImportError\"),ho=li(\"checkAllComplete\"),_p=li(\"removeListeners\"),Pp=li(\"addListeners\"),nh=class extends V0.default{constructor(e,t){super(),Object.defineProperty(this,Pp,{value:rx}),Object.defineProperty(this,_p,{value:ix}),Object.defineProperty(this,ho,{value:tx}),Object.defineProperty(this,jr,{value:ex}),Object.defineProperty(this,il,{writable:!0,value:void 0}),Object.defineProperty(this,Sp,{writable:!0,value:void 0}),Object.defineProperty(this,co,{writable:!0,value:void 0}),Object.defineProperty(this,rl,{writable:!0,value:void 0}),Object.defineProperty(this,Oe,{writable:!0,value:void 0}),Object.defineProperty(this,sl,{writable:!0,value:r=>{se(this,jr)[jr](r.assembly_id)&&(se(this,Oe)[Oe].log(`[Transloadit] AssemblyWatcher: Got Assembly finish ${r.assembly_id}`),this.emit(\"assembly-complete\",r.assembly_id),se(this,ho)[ho]())}}),Object.defineProperty(this,ol,{writable:!0,value:r=>{se(this,jr)[jr](r.assembly_id)&&se(this,ho)[ho]()}}),Object.defineProperty(this,po,{writable:!0,value:(r,s)=>{se(this,jr)[jr](r.assembly_id)&&(se(this,Oe)[Oe].log(`[Transloadit] AssemblyWatcher: Got Assembly error ${r.assembly_id}`),se(this,Oe)[Oe].log(s),this.emit(\"assembly-error\",r.assembly_id,s),se(this,ho)[ho]())}}),Object.defineProperty(this,nl,{writable:!0,value:(r,s,o)=>{se(this,jr)[jr](r.assembly_id)&&se(this,po)[po](r,o)}}),se(this,Oe)[Oe]=e,se(this,il)[il]=t,se(this,co)[co]=t.length,this.promise=new Promise((r,s)=>{se(this,rl)[rl]=r,se(this,Sp)[Sp]=s}),se(this,Pp)[Pp]()}};n(nh,\"TransloaditAssemblyWatcher\");function ex(i){return se(this,il)[il].indexOf(i)!==-1}n(ex,\"_watching2\");function tx(){se(this,co)[co]-=1,se(this,co)[co]===0&&(se(this,_p)[_p](),se(this,rl)[rl]())}n(tx,\"_checkAllComplete2\");function ix(){se(this,Oe)[Oe].off(\"transloadit:complete\",se(this,sl)[sl]),se(this,Oe)[Oe].off(\"transloadit:assembly-cancel\",se(this,ol)[ol]),se(this,Oe)[Oe].off(\"transloadit:assembly-error\",se(this,po)[po]),se(this,Oe)[Oe].off(\"transloadit:import-error\",se(this,nl)[nl])}n(ix,\"_removeListeners2\");function rx(){se(this,Oe)[Oe].on(\"transloadit:complete\",se(this,sl)[sl]),se(this,Oe)[Oe].on(\"transloadit:assembly-cancel\",se(this,ol)[ol]),se(this,Oe)[Oe].on(\"transloadit:assembly-error\",se(this,po)[po]),se(this,Oe)[Oe].on(\"transloadit:import-error\",se(this,nl)[nl])}n(rx,\"_addListeners2\");var W0=nh;var G0={strings:{creatingAssembly:\"Preparing upload...\",creatingAssemblyFailed:\"Transloadit: Could not create Assembly\",encoding:\"Encoding...\"}};function ae(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(ae,\"_classPrivateFieldLooseBase\");var sx=0;function Le(i){return\"__private_\"+sx+++\"_\"+i}n(Le,\"_classPrivateFieldLooseKey\");var ox={version:\"3.4.0\"},K0=n(i=>e=>{let t=new vr(\"Failed to send error to the client\",{cause:e});console.error(t,i)},\"sendErrorToConsole\"),Ip=\"https://api2.transloadit.com/companion\",Np=/\\.transloadit\\.com$/,nx=/https?:\\/\\/api2(?:-\\w+)?\\.transloadit\\.com\\/companion/,Di=Le(\"rateLimitedQueue\"),xp=Le(\"getClientVersion\"),Up=Le(\"attachAssemblyMetadata\"),Fp=Le(\"createAssembly\"),al=Le(\"createAssemblyWatcher\"),Ep=Le(\"shouldWaitAfterUpload\"),Op=Le(\"reserveFiles\"),ll=Le(\"onFileUploadURLAvailable\"),fl=Le(\"findFile\"),kp=Le(\"onFileUploadComplete\"),Dp=Le(\"onResult\"),pl=Le(\"onAssemblyFinished\"),ml=Le(\"cancelAssembly\"),Cp=Le(\"onCancelAll\"),Tp=Le(\"getPersistentData\"),Ap=Le(\"onRestored\"),ul=Le(\"connectAssembly\"),hl=Le(\"prepareUpload\"),fo=Le(\"afterUpload\"),dl=Le(\"closeAssemblyIfExists\"),cl=Le(\"onError\"),Rp=Le(\"onTusError\"),yi=class extends ve{constructor(e,t){var r,s,o,a;super(e,t),r=this,Object.defineProperty(this,ul,{value:vx}),Object.defineProperty(this,ml,{value:yx}),Object.defineProperty(this,pl,{value:gx}),Object.defineProperty(this,Dp,{value:mx}),Object.defineProperty(this,kp,{value:fx}),Object.defineProperty(this,fl,{value:px}),Object.defineProperty(this,Op,{value:cx}),Object.defineProperty(this,Ep,{value:dx}),Object.defineProperty(this,al,{value:hx}),Object.defineProperty(this,Fp,{value:ux}),Object.defineProperty(this,Up,{value:lx}),Object.defineProperty(this,xp,{value:ax}),Object.defineProperty(this,Di,{writable:!0,value:void 0}),Object.defineProperty(this,ll,{writable:!0,value:h=>{var p;let d=this.uppy.getFile(h.id);if(!(d!=null&&(p=d.transloadit)!=null&&p.assembly))return;let{assemblies:f}=this.getPluginState(),y=f[d.transloadit.assembly];this.client.addFile(y,d).catch(b=>{this.uppy.log(b),this.uppy.emit(\"transloadit:import-error\",y,d.id,b)})}}),Object.defineProperty(this,Cp,{writable:!0,value:async function(h){let{reason:p}=h===void 0?{}:h;try{if(p!==\"user\")return;let{uploadsAssemblies:d}=r.getPluginState(),y=Object.values(d).flat(1).map(b=>r.getAssembly(b));await Promise.all(y.map(b=>ae(r,ml)[ml](b)))}catch(d){r.uppy.log(d)}}}),Object.defineProperty(this,Tp,{writable:!0,value:h=>{let{assemblies:p,uploadsAssemblies:d}=this.getPluginState();h({[this.id]:{assemblies:p,uploadsAssemblies:d}})}}),Object.defineProperty(this,Ap,{writable:!0,value:h=>{let p=h&&h[this.id]?h[this.id]:{},d=p.assemblies||{},f=p.uploadsAssemblies||{};if(Object.keys(f).length===0)return;let y=n(E=>{let x={},F=[];for(let[U,j]of Object.entries(E)){j.uploads.forEach(J=>{let B=ae(this,fl)[fl](J);x[J.id]={id:B.id,assembly:U,uploadedFile:J}});let G=this.getPluginState();Object.keys(j.results).forEach(J=>{for(let B of j.results[J]){let z=G.files[B.original_id];B.localId=z?z.id:null,F.push({id:B.id,result:B,stepName:J,assembly:U})}})}this.setPluginState({assemblies:E,files:x,results:F,uploadsAssemblies:f})},\"restoreState\"),b=n(()=>{let{assemblies:E,uploadsAssemblies:x}=this.getPluginState();Object.keys(x).forEach(U=>{let j=x[U];ae(this,al)[al](j,U)}),Object.keys(E).forEach(U=>{let j=new bp(E[U],ae(this,Di)[Di]);ae(this,ul)[ul](j)})},\"restoreAssemblies\"),S=n(()=>{let{assemblies:E}=this.getPluginState();return Promise.all(Object.keys(E).map(x=>this.activeAssemblies[x].update()))},\"updateAssemblies\");this.restored=Promise.resolve().then(()=>(y(d),b(),S())),this.restored.then(()=>{this.restored=null})}}),Object.defineProperty(this,hl,{writable:!0,value:(h,p)=>{let f=h.map(E=>this.uppy.getFile(E)).filter(E=>E.error?!1:(this.uppy.emit(\"preprocess-progress\",E,{mode:\"indeterminate\",message:this.i18n(\"creatingAssembly\")}),!0)),y=n(async E=>{let{fileIDs:x,options:F}=E;try{let U=await ae(this,Fp)[Fp](x,p,F);return this.opts.importFromUploadURLs&&await ae(this,Op)[Op](U,x),x.forEach(j=>{let G=this.uppy.getFile(j);this.uppy.emit(\"preprocess-complete\",G)}),U}catch(U){throw x.forEach(j=>{let G=this.uppy.getFile(j);this.uppy.emit(\"preprocess-complete\",G),this.uppy.emit(\"upload-error\",G,U)}),U}},\"createAssembly\"),{uploadsAssemblies:b}=this.getPluginState();return this.setPluginState({uploadsAssemblies:{...b,[p]:[]}}),new q0(f,this.opts).build().then(E=>Promise.all(E.map(y))).then(E=>{let x=E.filter(Boolean),F=x.map(U=>U.status.assembly_id);return ae(this,al)[al](F,p),Promise.all(x.map(U=>ae(this,ul)[ul](U)))}).catch(E=>{throw f.forEach(x=>{this.uppy.emit(\"preprocess-complete\",x),this.uppy.emit(\"upload-error\",x,E)}),E})}}),Object.defineProperty(this,fo,{writable:!0,value:(h,p)=>{let d=h.map(F=>this.uppy.getFile(F)),f=d.filter(F=>!F.error).map(F=>F.id),y=this.getPluginState();if(this.restored)return this.restored.then(()=>ae(this,fo)[fo](f,p));let b=y.uploadsAssemblies[p],S=n(()=>{b.forEach(F=>{this.activeAssemblies[F].close(),delete this.activeAssemblies[F]})},\"closeSocketConnections\");if(!ae(this,Ep)[Ep]()){S();let F=b.map(U=>this.getAssembly(U));return this.uppy.addResultData(p,{transloadit:F}),Promise.resolve()}return b.length===0?(this.uppy.addResultData(p,{transloadit:[]}),Promise.resolve()):(d.filter(F=>!Ct(this.completedFiles,F.id)).forEach(F=>{this.uppy.emit(\"postprocess-progress\",F,{mode:\"indeterminate\",message:this.i18n(\"encoding\")})}),this.assemblyWatchers[p].promise.then(()=>{S();let F=b.map(j=>this.getAssembly(j)),U={...this.getPluginState().uploadsAssemblies};delete U[p],this.setPluginState({uploadsAssemblies:U}),this.uppy.addResultData(p,{transloadit:F})}))}}),Object.defineProperty(this,dl,{writable:!0,value:h=>{var p;(p=this.activeAssemblies[h])==null||p.close()}}),Object.defineProperty(this,cl,{writable:!0,value:function(h,p){h===void 0&&(h=null);let f=r.getPluginState().uploadsAssemblies[p];f?.forEach(ae(r,dl)[dl]),r.client.submitError(h).catch(K0(h))}}),Object.defineProperty(this,Rp,{writable:!0,value:(h,p)=>{var d,f;if(ae(this,dl)[dl](h==null||(d=h.transloadit)==null?void 0:d.assembly),p!=null&&(f=p.message)!=null&&f.startsWith(\"tus: \")){var y;let b=(y=p.originalRequest)==null||(y=y.getUnderlyingObject())==null?void 0:y.responseURL;this.client.submitError(p,{endpoint:b,type:\"TUS_ERROR\"}).catch(K0(p))}}}),this.type=\"uploader\",this.id=this.opts.id||\"Transloadit\",this.title=\"Transloadit\",this.defaultLocale=G0;let l={service:\"https://api2.transloadit.com\",errorReporting:!0,waitForEncoding:!1,waitForMetadata:!1,alwaysRunAssembly:!1,importFromUploadURLs:!1,signature:null,params:null,fields:null,getAssemblyOptions:null,limit:20,retryDelays:[7e3,1e4,15e3,2e4]};this.opts={...l,...t},(o=(s=this.opts).assemblyOptions)!=null||(s.assemblyOptions=(a=this.opts.getAssemblyOptions)!=null?a:{params:this.opts.params,signature:this.opts.signature,fields:this.opts.fields}),t?.params!=null&&t.getAssemblyOptions==null&&t.assemblyOptions==null&&wp(this.opts.assemblyOptions.params),ae(this,Di)[Di]=new Mt(this.opts.limit),this.i18nInit(),this.client=new rn({service:this.opts.service,client:ae(this,xp)[xp](),errorReporting:this.opts.errorReporting,rateLimitedQueue:ae(this,Di)[Di]}),this.activeAssemblies={},this.assemblyWatchers={},this.completedFiles=Object.create(null)}install(){this.uppy.addPreProcessor(ae(this,hl)[hl]),this.uppy.addPostProcessor(ae(this,fo)[fo]),this.uppy.on(\"error\",ae(this,cl)[cl]),this.uppy.on(\"cancel-all\",ae(this,Cp)[Cp]),this.uppy.on(\"upload-error\",ae(this,Rp)[Rp]),this.opts.importFromUploadURLs?this.uppy.on(\"upload-success\",ae(this,ll)[ll]):this.uppy.use(or,{storeFingerprintForResuming:!1,allowedMetaFields:[\"assembly_url\",\"filename\",\"fieldname\"],limit:this.opts.limit,rateLimitedQueue:ae(this,Di)[Di],retryDelays:this.opts.retryDelays}),this.uppy.on(\"restore:get-data\",ae(this,Tp)[Tp]),this.uppy.on(\"restored\",ae(this,Ap)[Ap]),this.setPluginState({assemblies:{},uploadsAssemblies:{},files:{},results:[]});let{capabilities:e}=this.uppy.getState();this.uppy.setState({capabilities:{...e,individualCancellation:!1}})}uninstall(){this.uppy.removePreProcessor(ae(this,hl)[hl]),this.uppy.removePostProcessor(ae(this,fo)[fo]),this.uppy.off(\"error\",ae(this,cl)[cl]),this.opts.importFromUploadURLs&&this.uppy.off(\"upload-success\",ae(this,ll)[ll]);let{capabilities:e}=this.uppy.getState();this.uppy.setState({capabilities:{...e,individualCancellation:!0}})}getAssembly(e){let{assemblies:t}=this.getPluginState();return t[e]}getAssemblyFiles(e){return this.uppy.getFiles().filter(t=>{var r;return(t==null||(r=t.transloadit)==null?void 0:r.assembly)===e})}};n(yi,\"Transloadit\");function ax(){let i=[`uppy-core:${this.uppy.constructor.VERSION}`,`uppy-transloadit:${this.constructor.VERSION}`,`uppy-tus:${or.VERSION}`],e=n((t,r)=>{let s=this.uppy.getPlugin(t);s&&i.push(`${r}:${s.constructor.VERSION}`)},\"addPluginVersion\");return this.opts.importFromUploadURLs&&(e(\"XHRUpload\",\"uppy-xhr-upload\"),e(\"AwsS3\",\"uppy-aws-s3\"),e(\"AwsS3Multipart\",\"uppy-aws-s3-multipart\")),e(\"Dropbox\",\"uppy-dropbox\"),e(\"Box\",\"uppy-box\"),e(\"Facebook\",\"uppy-facebook\"),e(\"GoogleDrive\",\"uppy-google-drive\"),e(\"Instagram\",\"uppy-instagram\"),e(\"OneDrive\",\"uppy-onedrive\"),e(\"Zoom\",\"uppy-zoom\"),e(\"Url\",\"uppy-url\"),i.join(\",\")}n(ax,\"_getClientVersion2\");function lx(i,e){let t={...i.meta,assembly_url:e.assembly_url,filename:i.name,fieldname:\"file\"},r={...i.tus,endpoint:e.tus_url,addRequestId:!0},{remote:s}=i;if(i.remote&&nx.test(i.remote.companionUrl)){let a=e.companion_url.replace(/\\/$/,\"\"),l=i.remote.url.replace(i.remote.companionUrl,\"\").replace(/^\\//,\"\");s={...i.remote,companionUrl:a,url:`${a}/${l}`}}let o={...i,transloadit:{assembly:e.assembly_id}};return this.opts.importFromUploadURLs||Object.assign(o,{meta:t,tus:r,remote:s}),o}n(lx,\"_attachAssemblyMetadata2\");function ux(i,e,t){return this.uppy.log(\"[Transloadit] Create Assembly\"),this.client.createAssembly({...t,expectedFiles:i.length}).then(async r=>{let s=this.uppy.getFiles().filter(y=>{let{id:b}=y;return i.includes(b)});if(s.length!==i.length){if(s.length===0)return await this.client.cancelAssembly(r),null;await this.client.updateNumberOfFilesInAssembly(r,s.length)}let o=new bp(r,ae(this,Di)[Di]),{status:a}=o,l=a.assembly_id,{assemblies:h,uploadsAssemblies:p}=this.getPluginState();this.setPluginState({assemblies:{...h,[l]:a},uploadsAssemblies:{...p,[e]:[...p[e],l]}});let d={};s.forEach(y=>{d[y.id]=ae(this,Up)[Up](y,a)}),this.uppy.setState({files:{...this.uppy.getState().files,...d}});let f=n((y,b)=>{var S;if(((S=o.status)==null?void 0:S.ok)===\"ASSEMBLY_COMPLETED\"){this.uppy.off(\"file-removed\",f);return}if(b===\"cancel-all\")o.close(),this.uppy.off(\"file-removed\",f);else if(y.id in d){delete d[y.id];let E=Object.keys(d).length;E===0?(o.close(),ae(this,ml)[ml](r).catch(()=>{}),this.uppy.off(\"file-removed\",f)):this.client.updateNumberOfFilesInAssembly(r,E).catch(()=>{})}},\"fileRemovedHandler\");return this.uppy.on(\"file-removed\",f),this.uppy.emit(\"transloadit:assembly-created\",a,i),this.uppy.log(`[Transloadit] Created Assembly ${l}`),o}).catch(r=>{let s=new vr(`${this.i18n(\"creatingAssemblyFailed\")}: ${r.message}`,{cause:r});throw\"details\"in r&&(s.details=r.details),\"assembly\"in r&&(s.assembly=r.assembly),s})}n(ux,\"_createAssembly2\");function hx(i,e){let t=new W0(this.uppy,i);t.on(\"assembly-complete\",r=>{this.getAssemblyFiles(r).forEach(o=>{this.completedFiles[o.id]=!0,this.uppy.emit(\"postprocess-complete\",o)})}),t.on(\"assembly-error\",(r,s)=>{let o=this.getAssemblyFiles(r);o.forEach(l=>{this.uppy.emit(\"upload-error\",l,s),this.uppy.emit(\"postprocess-complete\",l)});let a={...this.uppy.getState().files};o.forEach(l=>delete a[l.id].tus),this.uppy.setState({files:a}),this.uppy.emit(\"error\",s)}),this.assemblyWatchers[e]=t}n(hx,\"_createAssemblyWatcher2\");function dx(){return this.opts.waitForEncoding||this.opts.waitForMetadata}n(dx,\"_shouldWaitAfterUpload2\");function cx(i,e){return Promise.all(e.map(t=>{let r=this.uppy.getFile(t);return this.client.reserveFile(i.status,r)}))}n(cx,\"_reserveFiles2\");function px(i){let e=this.uppy.getFiles();for(let t=0;t<e.length;t++){let r=e[t];if(r.uploadURL===i.tus_upload_url||r.tus&&r.tus.uploadUrl===i.tus_upload_url||!i.is_tus_file&&r.name===i.name&&r.size===i.size)return r}}n(px,\"_findFile2\");function fx(i,e){let t=this.getPluginState(),r=ae(this,fl)[fl](e);if(!r){this.uppy.log(\"[Transloadit] Couldn\\u2019t find the file, it was likely removed in the process\");return}this.setPluginState({files:{...t.files,[e.id]:{assembly:i,id:r.id,uploadedFile:e}}}),this.uppy.emit(\"transloadit:upload\",e,this.getAssembly(i))}n(fx,\"_onFileUploadComplete2\");function mx(i,e,t){let r=this.getPluginState(),s=r.files[t.original_id];t.localId=s?s.id:null;let o={result:t,stepName:e,id:t.id,assembly:i};this.setPluginState({results:[...r.results,o]}),this.uppy.emit(\"transloadit:result\",e,t,this.getAssembly(i))}n(mx,\"_onResult2\");function gx(i){let e=i.assembly_ssl_url;this.client.getAssemblyStatus(e).then(t=>{let r=t.assembly_id,s=this.getPluginState();this.setPluginState({assemblies:{...s.assemblies,[r]:t}}),this.uppy.emit(\"transloadit:complete\",t)})}n(gx,\"_onAssemblyFinished2\");async function yx(i){await this.client.cancelAssembly(i),this.uppy.emit(\"transloadit:assembly-cancelled\",i)}n(yx,\"_cancelAssembly2\");function vx(i){let{status:e}=i,t=e.assembly_id;return this.activeAssemblies[t]=i,i.on(\"status\",r=>{let{assemblies:s}=this.getPluginState();this.setPluginState({assemblies:{...s,[t]:r}})}),i.on(\"upload\",r=>{ae(this,kp)[kp](t,r)}),i.on(\"error\",r=>{r.assembly=i.status,this.uppy.emit(\"transloadit:assembly-error\",i.status,r)}),i.on(\"executing\",()=>{this.uppy.emit(\"transloadit:assembly-executing\",i.status)}),i.on(\"execution-progress\",r=>{if(this.uppy.emit(\"transloadit:execution-progress\",r),r.progress_combined!=null)for(let s of this.uppy.getFiles())this.uppy.emit(\"postprocess-progress\",s,{mode:\"determinate\",value:r.progress_combined/100,message:this.i18n(\"encoding\")})}),this.opts.waitForEncoding&&i.on(\"result\",(r,s)=>{ae(this,Dp)[Dp](t,r,s)}),this.opts.waitForEncoding?i.on(\"finished\",()=>{ae(this,pl)[pl](i.status)}):this.opts.waitForMetadata&&i.on(\"metadata\",()=>{ae(this,pl)[pl](i.status)}),i.ok===\"ASSEMBLY_COMPLETE\"||i.connect(),i}n(vx,\"_connectAssembly2\");yi.VERSION=ox.version;yi.COMPANION=Ip;yi.COMPANION_PATTERN=Np;var X0={strings:{uploadStalled:\"Upload has not made any progress for %{seconds} seconds. You may want to retry it.\"}};function sn(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(sn,\"_classPrivateFieldLooseBase\");var bx=0;function yl(i){return\"__private_\"+bx+++\"_\"+i}n(yl,\"_classPrivateFieldLooseKey\");var wx={version:\"3.5.0\"};function Y0(i,e){let t=e;return t||(t=new Error(\"Upload error\")),typeof t==\"string\"&&(t=new Error(t)),t instanceof Error||(t=Object.assign(new Error(\"Upload error\"),{data:t})),so(i)?(t=new Pi(t,i),t):(t.request=i,t)}n(Y0,\"buildResponseError\");function Q0(i){return i.data.slice(0,i.data.size,i.meta.type)}n(Q0,\"setTypeInBlob\");var Bp=yl(\"uploadLocalFile\"),Mp=yl(\"uploadBundle\"),zp=yl(\"getCompanionClientArgs\"),Lp=yl(\"uploadFiles\"),gl=yl(\"handleUpload\"),mo=class extends ve{constructor(e,t){super(e,t),Object.defineProperty(this,Lp,{value:xx}),Object.defineProperty(this,zp,{value:_x}),Object.defineProperty(this,Mp,{value:Px}),Object.defineProperty(this,Bp,{value:Sx}),Object.defineProperty(this,gl,{writable:!0,value:async s=>{if(s.length===0){this.uppy.log(\"[XHRUpload] No files to upload!\");return}this.opts.limit===0&&!this.opts[us]&&this.uppy.log(\"[XHRUpload] When uploading multiple files at once, consider setting the `limit` option (to `10` for example), to limit the number of concurrent uploads, which helps prevent memory and network issues: https://uppy.io/docs/xhr-upload/#limit-0\",\"warning\"),this.uppy.log(\"[XHRUpload] Uploading...\");let o=this.uppy.getFilesByIds(s),a=hs(o),l=ds(a);if(this.uppy.emit(\"upload-start\",l),this.opts.bundle){if(a.some(p=>p.isRemote))throw new Error(\"Can\\u2019t upload remote files when the `bundle: true` option is set\");if(typeof this.opts.headers==\"function\")throw new TypeError(\"`headers` may not be a function when the `bundle: true` option is set\");await sn(this,Mp)[Mp](a)}else await sn(this,Lp)[Lp](a)}}),this.type=\"uploader\",this.id=this.opts.id||\"XHRUpload\",this.title=\"XHRUpload\",this.defaultLocale=X0;let r={formData:!0,fieldName:t.bundle?\"files[]\":\"file\",method:\"post\",allowedMetaFields:null,responseUrlFieldName:\"url\",bundle:!1,headers:{},timeout:30*1e3,limit:5,withCredentials:!1,responseType:\"\",getResponseData(s){let o={};try{o=JSON.parse(s)}catch(a){e.log(a)}return o},getResponseError(s,o){let a=new Error(\"Upload error\");return so(o)&&(a=new Pi(a,o)),a},validateStatus(s){return s>=200&&s<300}};if(this.opts={...r,...t},this.i18nInit(),us in this.opts?this.requests=this.opts[us]:this.requests=new Mt(this.opts.limit),this.opts.bundle&&!this.opts.formData)throw new Error(\"`opts.formData` must be true when `opts.bundle` is enabled.\");if(t?.allowedMetaFields===void 0&&\"metaFields\"in this.opts)throw new Error(\"The `metaFields` option has been renamed to `allowedMetaFields`.\");this.uploaderEvents=Object.create(null)}getOptions(e){let t=this.uppy.getState().xhrUpload,{headers:r}=this.opts,s={...this.opts,...t||{},...e.xhrUpload||{},headers:{}};return typeof r==\"function\"?s.headers=r(e):Object.assign(s.headers,this.opts.headers),t&&Object.assign(s.headers,t.headers),e.xhrUpload&&Object.assign(s.headers,e.xhrUpload.headers),s}addMetadata(e,t,r){(Array.isArray(r.allowedMetaFields)?r.allowedMetaFields:Object.keys(t)).forEach(o=>{Array.isArray(t[o])?t[o].forEach(a=>e.append(o,a)):e.append(o,t[o])})}createFormDataUpload(e,t){let r=new FormData;this.addMetadata(r,e.meta,t);let s=Q0(e);return e.name?r.append(t.fieldName,s,e.meta.name):r.append(t.fieldName,s),r}createBundledUpload(e,t){let r=new FormData,{meta:s}=this.uppy.getState();return this.addMetadata(r,s,t),e.forEach(o=>{let a=this.getOptions(o),l=Q0(o);o.name?r.append(a.fieldName,l,o.name):r.append(a.fieldName,l)}),r}install(){if(this.opts.bundle){let{capabilities:e}=this.uppy.getState();this.uppy.setState({capabilities:{...e,individualCancellation:!1}})}this.uppy.addUploader(sn(this,gl)[gl])}uninstall(){if(this.opts.bundle){let{capabilities:e}=this.uppy.getState();this.uppy.setState({capabilities:{...e,individualCancellation:!0}})}this.uppy.removeUploader(sn(this,gl)[gl])}};n(mo,\"XHRUpload\");async function Sx(i,e,t){let r=this.getOptions(i);return this.uppy.log(`uploading ${e} of ${t}`),new Promise((s,o)=>{let a=r.formData?this.createFormDataUpload(i,r):i.data,l=new XMLHttpRequest,h=new mi(this.uppy);this.uploaderEvents[i.id]=h;let p,d=new qa(r.timeout,()=>{let y=new Error(this.i18n(\"uploadStalled\",{seconds:Math.ceil(r.timeout/1e3)}));this.uppy.emit(\"upload-stalled\",y,[i])}),f=Pt();l.upload.addEventListener(\"loadstart\",()=>{this.uppy.log(`[XHRUpload] ${f} started`)}),l.upload.addEventListener(\"progress\",y=>{this.uppy.log(`[XHRUpload] ${f} progress: ${y.loaded} / ${y.total}`),d.progress(),y.lengthComputable&&this.uppy.emit(\"upload-progress\",i,{uploader:this,bytesUploaded:y.loaded,bytesTotal:y.total})}),l.addEventListener(\"load\",()=>{if(this.uppy.log(`[XHRUpload] ${f} finished`),d.done(),p.done(),this.uploaderEvents[i.id]&&(this.uploaderEvents[i.id].remove(),this.uploaderEvents[i.id]=null),r.validateStatus(l.status,l.responseText,l)){let E=r.getResponseData(l.responseText,l),x=E[r.responseUrlFieldName],F={status:l.status,body:E,uploadURL:x};return this.uppy.emit(\"upload-success\",i,F),x&&this.uppy.log(`Download ${i.name} from ${x}`),s(i)}let y=r.getResponseData(l.responseText,l),b=Y0(l,r.getResponseError(l.responseText,l)),S={status:l.status,body:y};return this.uppy.emit(\"upload-error\",i,b,S),o(b)}),l.addEventListener(\"error\",()=>{this.uppy.log(`[XHRUpload] ${f} errored`),d.done(),p.done(),this.uploaderEvents[i.id]&&(this.uploaderEvents[i.id].remove(),this.uploaderEvents[i.id]=null);let y=Y0(l,r.getResponseError(l.responseText,l));return this.uppy.emit(\"upload-error\",i,y),o(y)}),l.open(r.method.toUpperCase(),r.endpoint,!0),l.withCredentials=r.withCredentials,r.responseType!==\"\"&&(l.responseType=r.responseType),p=this.requests.run(()=>{let y=this.getOptions(i);return Object.keys(y.headers).forEach(b=>{l.setRequestHeader(b,y.headers[b])}),l.send(a),()=>{d.done(),l.abort()}}),h.onFileRemove(i.id,()=>{p.abort(),o(new Error(\"File removed\"))}),h.onCancelAll(i.id,y=>{let{reason:b}=y;b===\"user\"&&p.abort(),o(new Error(\"Upload cancelled\"))})})}n(Sx,\"_uploadLocalFile2\");function Px(i){return new Promise((e,t)=>{let{endpoint:r}=this.opts,{method:s}=this.opts,o=this.uppy.getState().xhrUpload,a=this.createBundledUpload(i,{...this.opts,...o||{}}),l=new XMLHttpRequest,h=n(d=>{i.forEach(f=>{this.uppy.emit(\"upload-error\",f,d)})},\"emitError\"),p=new qa(this.opts.timeout,()=>{let d=new Error(this.i18n(\"uploadStalled\",{seconds:Math.ceil(this.opts.timeout/1e3)}));this.uppy.emit(\"upload-stalled\",d,i)});l.upload.addEventListener(\"loadstart\",()=>{this.uppy.log(\"[XHRUpload] started uploading bundle\"),p.progress()}),l.upload.addEventListener(\"progress\",d=>{p.progress(),d.lengthComputable&&i.forEach(f=>{this.uppy.emit(\"upload-progress\",f,{uploader:this,bytesUploaded:d.loaded/d.total*f.size,bytesTotal:f.size})})}),l.addEventListener(\"load\",d=>{if(p.done(),this.opts.validateStatus(d.target.status,l.responseText,l)){let y=this.opts.getResponseData(l.responseText,l),b={status:d.target.status,body:y};return i.forEach(S=>{this.uppy.emit(\"upload-success\",S,b)}),e()}let f=this.opts.getResponseError(l.responseText,l)||new Error(\"Upload error\");return f.request=l,h(f),t(f)}),l.addEventListener(\"error\",()=>{p.done();let d=this.opts.getResponseError(l.responseText,l)||new Error(\"Upload error\");return h(d),t(d)}),this.uppy.on(\"cancel-all\",function(d){let{reason:f}=d===void 0?{}:d;f===\"user\"&&(p.done(),l.abort())}),l.open(s.toUpperCase(),r,!0),l.withCredentials=this.opts.withCredentials,this.opts.responseType!==\"\"&&(l.responseType=this.opts.responseType),Object.keys(this.opts.headers).forEach(d=>{l.setRequestHeader(d,this.opts.headers[d])}),l.send(a)})}n(Px,\"_uploadBundle2\");function _x(i){let e=this.getOptions(i),t=Array.isArray(e.allowedMetaFields)?e.allowedMetaFields:Object.keys(i.meta);return{...i.remote.body,protocol:\"multipart\",endpoint:e.endpoint,size:i.data.size,fieldname:e.fieldName,metadata:Object.fromEntries(t.map(r=>[r,i.meta[r]])),httpMethod:e.method,useFormData:e.formData,headers:e.headers}}n(_x,\"_getCompanionClientArgs2\");async function xx(i){await Promise.allSettled(i.map((e,t)=>{let r=parseInt(t,10)+1,s=i.length;if(e.isRemote){let o=n(()=>this.requests,\"getQueue\"),a=new AbortController,l=n(p=>{p.id===e.id&&a.abort()},\"removedHandler\");this.uppy.on(\"file-removed\",l);let h=e.remote.requestClient.uploadRemoteFile(e,sn(this,zp)[zp](e),{signal:a.signal,getQueue:o});return this.requests.wrapSyncFunction(()=>{this.uppy.off(\"file-removed\",l)},{priority:-1})(),h}return sn(this,Bp)[Bp](e,r,s)}))}n(xx,\"_uploadFiles2\");mo.VERSION=wx.version;var $p=de(Il(),1),tb=de(J0(),1);var Z0={strings:{compressingImages:\"Compressing images...\",compressedX:\"Saved %{size} by compressing images\"}};function eb(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(eb,\"_classPrivateFieldLooseBase\");var Fx=0;function Ex(i){return\"__private_\"+Fx+++\"_\"+i}n(Ex,\"_classPrivateFieldLooseKey\");var vl=Ex(\"RateLimitedQueue\"),on=class extends ve{constructor(e,t){super(e,t),Object.defineProperty(this,vl,{writable:!0,value:void 0}),this.id=this.opts.id||\"Compressor\",this.type=\"modifier\",this.defaultLocale=Z0;let r={quality:.6,limit:10};this.opts={...r,...t},eb(this,vl)[vl]=new Mt(this.opts.limit),this.i18nInit(),this.prepareUpload=this.prepareUpload.bind(this),this.compress=this.compress.bind(this)}compress(e){return new Promise((t,r)=>{new tb.default(e,{...this.opts,success:t,error:r})})}async prepareUpload(e){let t=0,r=[],s=eb(this,vl)[vl].wrapPromiseFunction(async a=>{try{let l=await this.compress(a.data),h=a.data.size-l.size;this.uppy.log(`[Image Compressor] Image ${a.id} compressed by ${(0,$p.default)(h)}`),t+=h;let{name:p,type:d,size:f}=l,y=Bi(p),S=`${Bi(a.meta.name).name}.${y.extension}`;this.uppy.setFileState(a.id,{...p&&{name:p},...y.extension&&{extension:y.extension},...d&&{type:d},...f&&{size:f},data:l,meta:{...a.meta,type:d,name:S}}),r.push(a)}catch(l){this.uppy.log(`[Image Compressor] Failed to compress ${a.id}:`,\"warning\"),this.uppy.log(l,\"warning\")}}),o=e.map(a=>{let l=this.uppy.getFile(a);return this.uppy.emit(\"preprocess-progress\",l,{mode:\"indeterminate\",message:this.i18n(\"compressingImages\")}),l.isRemote||(l.data.type||(l.data=l.data.slice(0,l.data.size,l.type)),!l.type.startsWith(\"image/\"))?Promise.resolve():s(l)});await Promise.all(o),this.uppy.emit(\"compressor:complete\",r),t>1024&&this.uppy.info(this.i18n(\"compressedX\",{size:(0,$p.default)(t)}),\"info\");for(let a of e){let l=this.uppy.getFile(a);this.uppy.emit(\"preprocess-complete\",l)}}install(){this.uppy.addPreProcessor(this.prepareUpload)}uninstall(){this.uppy.removePreProcessor(this.prepareUpload)}};n(on,\"Compressor\");function ah(){return ah=Object.assign||function(i){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[r]=t[r])}return i},ah.apply(this,arguments)}n(ah,\"_extends\");var Ox={\"[object HTMLCollection]\":!0,\"[object NodeList]\":!0,\"[object RadioNodeList]\":!0},Cx={button:!0,fieldset:!0,reset:!0,submit:!0},Tx={checkbox:!0,radio:!0},Ax=/^\\s+|\\s+$/g,Rx=Array.prototype.slice,ib=Object.prototype.toString;function lh(i,e){if(!i)throw new Error(\"A form is required by getFormData, was given form=\"+i);e=ah({includeDisabled:!1,trim:!1},e);for(var t={},r,s=[],o={},a=0,l=i.elements.length;a<l;a++){var h=i.elements[a];Cx[h.type]||h.disabled&&!e.includeDisabled||(r=h.name||h.id,r&&!o[r]&&(s.push(r),o[r]=!0))}for(var p=0,d=s.length;p<d;p++){r=s[p];var f=sb(i,r,e);f!=null&&(t[r]=f)}return t}n(lh,\"getFormData\");function sb(i,e,t){if(!i)throw new Error(\"A form is required by getFieldData, was given form=\"+i);if(!e&&ib.call(e)!==\"[object String]\")throw new Error(\"A field name is required by getFieldData, was given fieldName=\"+e);t=ah({includeDisabled:!1,trim:!1},t);var r=i.elements[e];if(!r||r.disabled&&!t.includeDisabled)return null;if(!Ox[ib.call(r)])return rb(r,t.trim);for(var s=[],o=!0,a=0,l=r.length;a<l;a++)if(!(r[a].disabled&&!t.includeDisabled)){o&&r[a].type!==\"radio\"&&(o=!1);var h=rb(r[a],t.trim);h!=null&&(s=s.concat(h))}return o&&s.length===1?s[0]:s.length>0?s:null}n(sb,\"getFieldData\");function rb(i,e){var t=null,r=i.type;if(r===\"select-one\")return i.options.length&&(t=i.options[i.selectedIndex].value),t;if(r===\"select-multiple\"){t=[];for(var s=0,o=i.options.length;s<o;s++)i.options[s].selected&&t.push(i.options[s].value);return t.length===0&&(t=null),t}return r===\"file\"&&\"files\"in i?(i.multiple?(t=Rx.call(i.files),t.length===0&&(t=null)):t=i.files[0],t):(Tx[r]?i.checked&&(r===\"checkbox\"&&!i.hasAttribute(\"value\")?t=!0:t=i.value):t=e?i.value.replace(Ax,\"\"):i.value,t)}n(rb,\"getFormElementValue\");lh.getFieldData=sb;var Ux={version:\"3.0.3\"},go=class extends ve{constructor(e,t){super(e,t),this.type=\"acquirer\",this.id=this.opts.id||\"Form\",this.title=\"Form\";let r={target:null,resultName:\"uppyResult\",getMetaFromForm:!0,addResultToForm:!0,submitOnSuccess:!1,triggerUploadOnSubmit:!1};this.opts={...r,...t},this.handleFormSubmit=this.handleFormSubmit.bind(this),this.handleUploadStart=this.handleUploadStart.bind(this),this.handleSuccess=this.handleSuccess.bind(this),this.addResultToForm=this.addResultToForm.bind(this),this.getMetaFromForm=this.getMetaFromForm.bind(this)}handleUploadStart(){this.opts.getMetaFromForm&&this.getMetaFromForm()}handleSuccess(e){this.opts.addResultToForm&&this.addResultToForm(e),this.opts.submitOnSuccess&&this.form.submit()}handleFormSubmit(e){if(this.opts.triggerUploadOnSubmit){e.preventDefault();let t=Qe(e.target.elements),r=[];t.forEach(s=>{(s.tagName===\"BUTTON\"||s.tagName===\"INPUT\"&&s.type===\"submit\")&&!s.disabled&&(s.disabled=!0,r.push(s))}),this.uppy.upload().then(()=>{r.forEach(s=>{s.disabled=!1})},s=>(r.forEach(o=>{o.disabled=!1}),Promise.reject(s))).catch(s=>{this.uppy.log(s.stack||s.message||s)})}}addResultToForm(e){this.uppy.log(\"[Form] Adding result to the original form:\"),this.uppy.log(e);let t=this.form.querySelector(`[name=\"${this.opts.resultName}\"]`);if(t){let r;try{r=JSON.parse(t.value)}catch{}Array.isArray(r)||(r=[]),r.push(e),t.value=JSON.stringify(r);return}t=document.createElement(\"input\"),t.name=this.opts.resultName,t.type=\"hidden\",t.value=JSON.stringify([e]),this.form.appendChild(t)}getMetaFromForm(){let e=lh(this.form);delete e[this.opts.resultName],this.uppy.setMeta(e)}install(){if(this.form=On(this.opts.target),!this.form||this.form.nodeName!==\"FORM\"){this.uppy.log(\"Form plugin requires a <form> target element passed in options to operate, none was found\",\"error\");return}this.form.addEventListener(\"submit\",this.handleFormSubmit),this.uppy.on(\"upload\",this.handleUploadStart),this.uppy.on(\"complete\",this.handleSuccess)}uninstall(){this.form.removeEventListener(\"submit\",this.handleFormSubmit),this.uppy.off(\"upload\",this.handleUploadStart),this.uppy.off(\"complete\",this.handleSuccess)}};n(go,\"Form\");go.VERSION=Ux.version;var gb=de(Rl(),1);function yo(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(yo,\"_classPrivateFieldLooseBase\");var kx=0;function Dx(i){return\"__private_\"+kx+++\"_\"+i}n(Dx,\"_classPrivateFieldLooseKey\");var ob=typeof navigator<\"u\"&&\"serviceWorker\"in navigator;function Ix(){return new Promise((i,e)=>{ob?navigator.serviceWorker.controller?i():navigator.serviceWorker.addEventListener(\"controllerchange\",()=>{i()}):e(new Error(\"Unsupported\"))})}n(Ix,\"waitForServiceWorker\");var zt=Dx(\"ready\"),bl=class{constructor(e){Object.defineProperty(this,zt,{writable:!0,value:void 0}),yo(this,zt)[zt]=Ix().then(t=>{yo(this,zt)[zt]=t}),this.name=e.storeName}get ready(){return Promise.resolve(yo(this,zt)[zt])}set ready(e){yo(this,zt)[zt]=e}async list(){return await yo(this,zt)[zt],new Promise((e,t)=>{let r=n(s=>{if(s.data.store===this.name)switch(s.data.type){case\"uppy/ALL_FILES\":e(s.data.files),navigator.serviceWorker.removeEventListener(\"message\",r);break;default:t()}},\"onMessage\");navigator.serviceWorker.addEventListener(\"message\",r),navigator.serviceWorker.controller.postMessage({type:\"uppy/GET_FILES\",store:this.name})})}async put(e){await yo(this,zt)[zt],navigator.serviceWorker.controller.postMessage({type:\"uppy/ADD_FILE\",store:this.name,file:e})}async delete(e){await yo(this,zt)[zt],navigator.serviceWorker.controller.postMessage({type:\"uppy/REMOVE_FILE\",store:this.name,fileID:e})}};n(bl,\"ServiceWorkerStore\");bl.isSupported=ob;var nb=bl;function ar(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError(\"attempted to use private field on non-instance\");return i}n(ar,\"_classPrivateFieldLooseBase\");var Nx=0;function Mx(i){return\"__private_\"+Nx+++\"_\"+i}n(Mx,\"_classPrivateFieldLooseKey\");var db=typeof window<\"u\"&&(window.indexedDB||window.webkitIndexedDB||window.mozIndexedDB||window.OIndexedDB||window.msIndexedDB),Lx=!!db,ab=\"uppy-blobs\",Vt=\"files\",cb=24*60*60*1e3,Bx=3,lb=1048576;function zx(i){let e=i.openCursor();e.onsuccess=t=>{let r=t.target.result;if(!r)return;let s=r.value;s.expires=Date.now()+cb,r.update(s)}}n(zx,\"migrateExpiration\");function ub(i){let e=db.open(i,Bx);return new Promise((t,r)=>{e.onupgradeneeded=s=>{let o=s.target.result,{transaction:a}=s.currentTarget;if(s.oldVersion<2&&o.createObjectStore(Vt,{keyPath:\"id\"}).createIndex(\"store\",\"store\",{unique:!1}),s.oldVersion<3){let l=a.objectStore(Vt);l.createIndex(\"expires\",\"expires\",{unique:!1}),zx(l)}a.oncomplete=()=>{t(o)}},e.onsuccess=s=>{t(s.target.result)},e.onerror=r})}n(ub,\"connect\");function uh(i){return new Promise((e,t)=>{i.onsuccess=r=>{e(r.target.result)},i.onerror=t})}n(uh,\"waitForRequest\");var hb=!1,Ve=Mx(\"ready\"),vo=class{constructor(e){Object.defineProperty(this,Ve,{writable:!0,value:void 0}),this.opts={dbName:ab,storeName:\"default\",expires:cb,maxFileSize:10*lb,maxTotalSize:300*lb,...e},this.name=this.opts.storeName;let t=n(async()=>{let r=await ub(this.opts.dbName);return ar(this,Ve)[Ve]=r,r},\"createConnection\");hb?ar(this,Ve)[Ve]=t():(hb=!0,ar(this,Ve)[Ve]=vo.cleanup().then(t,t))}get ready(){return Promise.resolve(ar(this,Ve)[Ve])}set ready(e){ar(this,Ve)[Ve]=e}key(e){return`${this.name}!${e}`}async list(){let s=(await ar(this,Ve)[Ve]).transaction([Vt],\"readonly\").objectStore(Vt).index(\"store\").getAll(IDBKeyRange.only(this.name)),o=await uh(s);return Object.fromEntries(o.map(a=>[a.fileID,a.data]))}async get(e){let s=(await ar(this,Ve)[Ve]).transaction([Vt],\"readonly\").objectStore(Vt).get(this.key(e)),{data:o}=await uh(s);return{id:o.fileID,data:o.data}}async getSize(){let s=(await ar(this,Ve)[Ve]).transaction([Vt],\"readonly\").objectStore(Vt).index(\"store\").openCursor(IDBKeyRange.only(this.name));return new Promise((o,a)=>{let l=0;s.onsuccess=h=>{let p=h.target.result;p?(l+=p.value.data.size,p.continue()):o(l)},s.onerror=()=>{a(new Error(\"Could not retrieve stored blobs size\"))}})}async put(e){if(e.data.size>this.opts.maxFileSize)throw new Error(\"File is too big to store.\");if(await this.getSize()>this.opts.maxTotalSize)throw new Error(\"No space left\");let o=ar(this,Ve)[Ve].transaction([Vt],\"readwrite\").objectStore(Vt).add({id:this.key(e.id),fileID:e.id,store:this.name,expires:Date.now()+this.opts.expires,data:e.data});return uh(o)}async delete(e){let s=(await ar(this,Ve)[Ve]).transaction([Vt],\"readwrite\").objectStore(Vt).delete(this.key(e));return uh(s)}static async cleanup(){let e=await ub(ab),s=e.transaction([Vt],\"readwrite\").objectStore(Vt).index(\"expires\").openCursor(IDBKeyRange.upperBound(Date.now()));await new Promise((o,a)=>{s.onsuccess=l=>{let h=l.target.result;h?(h.delete(),h.continue()):o()},s.onerror=a}),e.close()}};n(vo,\"IndexedDBStore\");vo.isSupported=Lx;var pb=vo;function jx(){let i=[];for(let e=0;e<localStorage.length;e++){let t=localStorage.key(e);t.startsWith(\"uppyState:\")&&i.push(t.slice(10))}return i}n(jx,\"findUppyInstances\");function fb(i){try{return JSON.parse(i)}catch{return null}}n(fb,\"maybeParse\");var mb=!1,Ii=class{constructor(e){this.opts={expires:24*60*60*1e3,...e},this.name=`uppyState:${e.storeName}`,mb||(mb=!0,Ii.cleanup())}load(){let e=localStorage.getItem(this.name);if(!e)return null;let t=fb(e);return t?t.metadata?t.metadata:(this.save(t),t):null}save(e){let t=Date.now()+this.opts.expires,r=JSON.stringify({metadata:e,expires:t});localStorage.setItem(this.name,r)}static cleanup(e){if(e){localStorage.removeItem(`uppyState:${e}`);return}let t=jx(),r=Date.now();t.forEach(s=>{let o=localStorage.getItem(`uppyState:${s}`);if(!o)return;let a=fb(o);a&&a.expires&&a.expires<r&&localStorage.removeItem(`uppyState:${s}`)})}};n(Ii,\"MetaDataStore\");var Hx={version:\"3.1.1\"},bo=class extends ve{constructor(e,t){super(e,t),this.addBlobToStores=s=>{s.isRemote||(this.ServiceWorkerStore&&this.ServiceWorkerStore.put(s).catch(o=>{this.uppy.log(\"[GoldenRetriever] Could not store file\",\"warning\"),this.uppy.log(o)}),this.IndexedDBStore.put(s).catch(o=>{this.uppy.log(\"[GoldenRetriever] Could not store file\",\"warning\"),this.uppy.log(o)}))},this.removeBlobFromStores=s=>{this.ServiceWorkerStore&&this.ServiceWorkerStore.delete(s.id).catch(o=>{this.uppy.log(\"[GoldenRetriever] Failed to remove file\",\"warning\"),this.uppy.log(o)}),this.IndexedDBStore.delete(s.id).catch(o=>{this.uppy.log(\"[GoldenRetriever] Failed to remove file\",\"warning\"),this.uppy.log(o)})},this.replaceBlobInStores=s=>{this.removeBlobFromStores(s),this.addBlobToStores(s)},this.handleRestoreConfirmed=()=>{this.uppy.log(\"[GoldenRetriever] Restore confirmed, proceeding...\");let{currentUploads:s}=this.uppy.getState();s&&(this.uppy.resumeAll(),Object.keys(s).forEach(o=>{this.uppy.restore(o,s[o])})),this.uppy.setState({recoveredState:null})},this.abortRestore=()=>{this.uppy.log(\"[GoldenRetriever] Aborting restore...\");let s=Object.keys(this.uppy.getState().files);this.deleteBlobs(s).then(()=>{this.uppy.log(`[GoldenRetriever] Removed ${s.length} files`)}).catch(o=>{this.uppy.log(`[GoldenRetriever] Could not remove ${s.length} files`,\"warning\"),this.uppy.log(o)}),this.uppy.cancelAll(),this.uppy.setState({recoveredState:null}),Ii.cleanup(this.uppy.opts.id)},this.handleComplete=s=>{let{successful:o}=s,a=o.map(l=>l.id);this.deleteBlobs(a).then(()=>{this.uppy.log(`[GoldenRetriever] Removed ${o.length} files that finished uploading`)}).catch(l=>{this.uppy.log(`[GoldenRetriever] Could not remove ${o.length} files that finished uploading`,\"warning\"),this.uppy.log(l)}),this.uppy.setState({recoveredState:null}),Ii.cleanup(this.uppy.opts.id)},this.restoreBlobs=()=>{this.uppy.getFiles().length>0?Promise.all([this.loadFileBlobsFromServiceWorker(),this.loadFileBlobsFromIndexedDB()]).then(s=>{let o={...s[0],...s[1]};this.onBlobsLoaded(o)}):this.uppy.log(\"[GoldenRetriever] No files need to be loaded, only restoring processing state...\")},this.type=\"debugger\",this.id=this.opts.id||\"GoldenRetriever\",this.title=\"Golden Retriever\";let r={expires:24*60*60*1e3,serviceWorker:!1};this.opts={...r,...t},this.MetaDataStore=new Ii({expires:this.opts.expires,storeName:e.getID()}),this.ServiceWorkerStore=null,this.opts.serviceWorker&&(this.ServiceWorkerStore=new nb({storeName:e.getID()})),this.IndexedDBStore=new pb({expires:this.opts.expires,...this.opts.indexedDB||{},storeName:e.getID()}),this.saveFilesStateToLocalStorage=(0,gb.default)(this.saveFilesStateToLocalStorage.bind(this),500,{leading:!0,trailing:!0}),this.restoreState=this.restoreState.bind(this),this.loadFileBlobsFromServiceWorker=this.loadFileBlobsFromServiceWorker.bind(this),this.loadFileBlobsFromIndexedDB=this.loadFileBlobsFromIndexedDB.bind(this),this.onBlobsLoaded=this.onBlobsLoaded.bind(this)}restoreState(){let e=this.MetaDataStore.load();e&&(this.uppy.log(\"[GoldenRetriever] Recovered some state from Local Storage\"),this.uppy.setState({currentUploads:e.currentUploads||{},files:e.files||{},recoveredState:e}),this.savedPluginData=e.pluginData)}getWaitingFiles(){let e={};return this.uppy.getFiles().forEach(t=>{(!t.progress||!t.progress.uploadStarted)&&(e[t.id]=t)}),e}getUploadingFiles(){let e={},{currentUploads:t}=this.uppy.getState();return t&&Object.keys(t).forEach(s=>{t[s].fileIDs.forEach(a=>{e[a]=this.uppy.getFile(a)})}),e}saveFilesStateToLocalStorage(){let e={...this.getWaitingFiles(),...this.getUploadingFiles()},t=Object.entries(e);if(t.length===0){this.uppy.getState().recoveredState!==null&&this.uppy.setState({recoveredState:null}),Ii.cleanup(this.uppy.opts.id);return}let r=Object.fromEntries(t.map(a=>{let[l,h]=a;return[l,h.isRemote?{...h,isRestored:!0}:{...h,isRestored:!0,data:null,preview:null}]})),s={};this.uppy.emit(\"restore:get-data\",a=>{Object.assign(s,a)});let{currentUploads:o}=this.uppy.getState();this.MetaDataStore.save({currentUploads:o,files:r,pluginData:s})}loadFileBlobsFromServiceWorker(){return this.ServiceWorkerStore?this.ServiceWorkerStore.list().then(e=>{let t=Object.keys(e).length;return t>0?(this.uppy.log(`[GoldenRetriever] Successfully recovered ${t} blobs from Service Worker!`),e):(this.uppy.log(\"[GoldenRetriever] No blobs found in Service Worker, trying IndexedDB now...\"),{})}).catch(e=>(this.uppy.log(\"[GoldenRetriever] Failed to recover blobs from Service Worker\",\"warning\"),this.uppy.log(e),{})):Promise.resolve({})}loadFileBlobsFromIndexedDB(){return this.IndexedDBStore.list().then(e=>{let t=Object.keys(e).length;return t>0?(this.uppy.log(`[GoldenRetriever] Successfully recovered ${t} blobs from IndexedDB!`),e):(this.uppy.log(\"[GoldenRetriever] No blobs found in IndexedDB\"),{})}).catch(e=>(this.uppy.log(\"[GoldenRetriever] Failed to recover blobs from IndexedDB\",\"warning\"),this.uppy.log(e),{}))}onBlobsLoaded(e){let t=[],r={...this.uppy.getState().files};Object.keys(e).forEach(s=>{let o=this.uppy.getFile(s);if(!o){t.push(s);return}let l={data:e[s],isRestored:!0,isGhost:!1};r[s]={...o,...l}}),Object.keys(r).forEach(s=>{r[s].data===null&&(r[s]={...r[s],isGhost:!0})}),this.uppy.setState({files:r}),this.uppy.emit(\"restored\",this.savedPluginData),t.length&&this.deleteBlobs(t).then(()=>{this.uppy.log(`[GoldenRetriever] Cleaned up ${t.length} old files`)}).catch(s=>{this.uppy.log(`[GoldenRetriever] Could not clean up ${t.length} old files`,\"warning\"),this.uppy.log(s)})}deleteBlobs(e){return Promise.all(e.map(t=>{var r,s,o;return(r=(s=this.ServiceWorkerStore)==null?void 0:s.delete(t))!=null?r:(o=this.IndexedDBStore)==null?void 0:o.delete(t)}))}install(){this.restoreState(),this.restoreBlobs(),this.uppy.on(\"file-added\",this.addBlobToStores),this.uppy.on(\"file-editor:complete\",this.replaceBlobInStores),this.uppy.on(\"file-removed\",this.removeBlobFromStores),this.uppy.on(\"state-update\",this.saveFilesStateToLocalStorage),this.uppy.on(\"restore-confirmed\",this.handleRestoreConfirmed),this.uppy.on(\"restore-canceled\",this.abortRestore),this.uppy.on(\"complete\",this.handleComplete)}uninstall(){this.uppy.off(\"file-added\",this.addBlobToStores),this.uppy.off(\"file-editor:complete\",this.replaceBlobInStores),this.uppy.off(\"file-removed\",this.removeBlobFromStores),this.uppy.off(\"state-update\",this.saveFilesStateToLocalStorage),this.uppy.off(\"restore-confirmed\",this.handleRestoreConfirmed),this.uppy.off(\"restore-canceled\",this.abortRestore),this.uppy.off(\"complete\",this.handleComplete)}};n(bo,\"GoldenRetriever\");bo.VERSION=Hx.version;var $x={version:\"3.0.3\"},wo=class extends Z{constructor(e,t){super(e,t),this.type=\"debugger\",this.id=this.opts.id||\"ReduxDevTools\",this.title=\"Redux DevTools\";let r={};this.opts={...r,...t},this.handleStateChange=this.handleStateChange.bind(this),this.initDevTools=this.initDevTools.bind(this)}handleStateChange(e,t){this.devTools.send(\"UPPY_STATE_UPDATE\",t)}initDevTools(){this.devTools=window.devToolsExtension.connect(),this.devToolsUnsubscribe=this.devTools.subscribe(e=>{if(e.type===\"DISPATCH\")switch(e.payload.type){case\"RESET\":this.uppy.cancelAll();return;case\"IMPORT_STATE\":{let{computedStates:t}=e.payload.nextLiftedState;this.uppy.store.state={...this.uppy.getState(),...t[t.length-1].state},this.uppy.updateAll(this.uppy.getState());return}case\"JUMP_TO_STATE\":case\"JUMP_TO_ACTION\":this.uppy.store.state={...this.uppy.getState(),...JSON.parse(e.state)},this.uppy.updateAll(this.uppy.getState());break;default:}})}install(){this.withDevTools=typeof window<\"u\"&&window.__REDUX_DEVTOOLS_EXTENSION__,this.withDevTools&&(this.initDevTools(),this.uppy.on(\"state-update\",this.handleStateChange))}uninstall(){this.withDevTools&&(this.devToolsUnsubscribe(),this.uppy.off(\"state-update\",this.handleStateUpdate))}};n(wo,\"ReduxDevTools\");wo.VERSION=$x.version;function qx(){throw new Error(\"Core has been renamed to Uppy\")}n(qx,\"Core\");var Vx={ProviderView:td};yi.COMPANION_URL=Ip;yi.COMPANION_ALLOWED_HOSTS=Np;var Wx={};globalThis.Uppy=qp;})();\n/**\n * Takes a string with placeholder variables like `%{smart_count} file selected`\n * and replaces it with values from options `{smart_count: 5}`\n *\n * @license https://github.com/airbnb/polyglot.js/blob/master/LICENSE\n * taken from https://github.com/airbnb/polyglot.js/blob/master/lib/polyglot.js#L299\n *\n * @param phrase that needs interpolation, with placeholders\n * @param options with values that will be used to replace placeholders\n */\n/*! Bundled license information:\n\nclassnames/index.js:\n  (*!\n    Copyright (c) 2018 Jed Watson.\n    Licensed under the MIT License (MIT), see\n    http://jedwatson.github.io/classnames\n  *)\n\ncropperjs/dist/cropper.js:\n  (*!\n   * Cropper.js v1.5.7\n   * https://fengyuanchen.github.io/cropperjs\n   *\n   * Copyright 2015-present Chen Fengyuan\n   * Released under the MIT license\n   *\n   * Date: 2020-05-23T05:23:00.081Z\n   *)\n\ncompressorjs/dist/compressor.js:\n  (*!\n   * Compressor.js v1.1.1\n   * https://fengyuanchen.github.io/compressorjs\n   *\n   * Copyright 2018-present Chen Fengyuan\n   * Released under the MIT license\n   *\n   * Date: 2021-10-05T02:32:40.212Z\n   *)\n*/\n//# sourceMappingURL=uppy.min.js.map\n","jquery/bootstrap/tab.js":"/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): tab.js and base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\ndefine([\n    \"./util/index\",\n    \"./dom/event-handler\",\n    \"./dom/selector-engine\"\n], function(Util, EventHandler, SelectorEngine) {\n    'use strict';\n\n    const defineJQueryPlugin = Util.defineJQueryPlugin;\n    const executeAfterTransition = Util.executeAfterTransition;\n    const getElement = Util.getElement;\n    const getElementFromSelector = Util.getElementFromSelector;\n    const isDisabled = Util.isDisabled;\n    const reflow = Util.reflow;\n\n    /**\n     * ------------------------------------------------------------------------\n     * Constants\n     * ------------------------------------------------------------------------\n     */\n\n    const VERSION = '5.1.3';\n    const NAME = 'tab';\n    const DATA_KEY = 'bs.tab';\n    const EVENT_KEY = `.${DATA_KEY}`;\n    const DATA_API_KEY = '.data-api';\n\n    const EVENT_HIDE = `hide${EVENT_KEY}`;\n    const EVENT_HIDDEN = `hidden${EVENT_KEY}`;\n    const EVENT_SHOW = `show${EVENT_KEY}`;\n    const EVENT_SHOWN = `shown${EVENT_KEY}`;\n    const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;\n\n    const CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu';\n    const CLASS_NAME_ACTIVE = 'active';\n    const CLASS_NAME_FADE = 'fade';\n    const CLASS_NAME_SHOW = 'show';\n\n    const SELECTOR_DROPDOWN = '.dropdown';\n    const SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';\n    const SELECTOR_ACTIVE = '.active';\n    const SELECTOR_ACTIVE_UL = ':scope > li > .active';\n    const SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]';\n    const SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';\n    const SELECTOR_DROPDOWN_ACTIVE_CHILD = ':scope > .dropdown-menu .active';\n\n    /**\n     * ------------------------------------------------------------------------\n     * Class Definition\n     * ------------------------------------------------------------------------\n     */\n\n    function Tab(element) {\n        element = getElement(element);\n\n        if (!element) {\n            return;\n        }\n\n        this._element = element;\n        Data.set(this._element, DATA_KEY, this);\n    }\n\n    // Getters\n\n    Tab.VERSION = VERSION;\n\n    Tab.NAME = NAME;\n\n    Tab.DATA_KEY = 'bs.' + Tab.NAME;\n\n    Tab.EVENT_KEY = '.' + Tab.DATA_KEY;\n\n    // Public\n\n    Tab.prototype.dispose = function() {\n        Data.remove(this._element, this.constructor.DATA_KEY);\n        EventHandler.off(this._element, this.constructor.EVENT_KEY);\n\n        Object.getOwnPropertyNames(this).forEach(propertyName => {\n            this[propertyName] = null;\n        })\n    }\n\n    Tab.prototype._queueCallback = function(callback, element, isAnimated = true) {\n        executeAfterTransition(callback, element, isAnimated);\n    }\n\n    Tab.prototype.show = function() {\n        if ((this._element.parentNode &&\n            this._element.parentNode.nodeType === Node.ELEMENT_NODE &&\n            this._element.classList.contains(CLASS_NAME_ACTIVE))) {\n            return;\n        }\n\n        let previous;\n        const target = getElementFromSelector(this._element);\n        const listElement = this._element.closest(SELECTOR_NAV_LIST_GROUP);\n\n        if (listElement) {\n            const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE;\n            previous = SelectorEngine.find(itemSelector, listElement);\n            previous = previous[previous.length - 1];\n        }\n\n        const hideEvent = previous ?\n            EventHandler.trigger(previous, EVENT_HIDE, {\n                relatedTarget: this._element\n            }) :\n            null;\n\n        const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n            relatedTarget: previous\n        });\n\n        if (showEvent.defaultPrevented || (hideEvent !== null && hideEvent.defaultPrevented)) {\n            return;\n        }\n\n        this._activate(this._element, listElement);\n\n        const complete = () => {\n            EventHandler.trigger(previous, EVENT_HIDDEN, {\n                relatedTarget: this._element\n            });\n            EventHandler.trigger(this._element, EVENT_SHOWN, {\n                relatedTarget: previous\n            });\n        };\n\n        if (target) {\n            this._activate(target, target.parentNode, complete);\n        } else {\n            complete();\n        }\n    }\n\n    // Private\n\n    Tab.prototype._activate = function(element, container, callback) {\n        const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ?\n            SelectorEngine.find(SELECTOR_ACTIVE_UL, container) :\n            SelectorEngine.children(container, SELECTOR_ACTIVE);\n\n        const active = activeElements[0];\n        const isTransitioning = callback && (active && active.classList.contains(CLASS_NAME_FADE));\n\n        const complete = () => this._transitionComplete(element, active, callback);\n\n        if (active && isTransitioning) {\n            active.classList.remove(CLASS_NAME_SHOW);\n            this._queueCallback(complete, element, true);\n        } else {\n            complete();\n        }\n    }\n\n    Tab.prototype._transitionComplete = function(element, active, callback) {\n        if (active) {\n            active.classList.remove(CLASS_NAME_ACTIVE);\n\n            const dropdownChild = SelectorEngine.findOne(SELECTOR_DROPDOWN_ACTIVE_CHILD, active.parentNode);\n\n            if (dropdownChild) {\n                dropdownChild.classList.remove(CLASS_NAME_ACTIVE);\n            }\n\n            if (active.getAttribute('role') === 'tab') {\n                active.setAttribute('aria-selected', false);\n            }\n        }\n\n        element.classList.add(CLASS_NAME_ACTIVE);\n        if (element.getAttribute('role') === 'tab') {\n            element.setAttribute('aria-selected', true);\n        }\n\n        reflow(element);\n\n        if (element.classList.contains(CLASS_NAME_FADE)) {\n            element.classList.add(CLASS_NAME_SHOW);\n        }\n\n        let parent = element.parentNode;\n        if (parent && parent.nodeName === 'LI') {\n            parent = parent.parentNode;\n        }\n\n        if (parent && parent.classList.contains(CLASS_NAME_DROPDOWN_MENU)) {\n            const dropdownElement = element.closest(SELECTOR_DROPDOWN);\n\n            if (dropdownElement) {\n                SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE, dropdownElement)\n                    .forEach(dropdown => dropdown.classList.add(CLASS_NAME_ACTIVE));\n            }\n\n            element.setAttribute('aria-expanded', true);\n        }\n\n        if (callback) {\n            callback();\n        }\n    }\n\n    // Static\n\n    Tab.getInstance = function(element) {\n        return Data.get(getElement(element), this.DATA_KEY);\n    }\n\n    Tab.getOrCreateInstance = function(element, config = {}) {\n        return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null);\n    }\n\n    Tab.jQueryInterface = function(config) {\n        return this.each(function () {\n            const data = Tab.getOrCreateInstance(this);\n\n            if (typeof config === 'string') {\n                if (typeof data[config] === 'undefined') {\n                    throw new TypeError(`No method named \"${config}\"`);\n                }\n\n                data[config]();\n            }\n        })\n    }\n\n    /**\n     * ------------------------------------------------------------------------\n     * Data Api implementation\n     * ------------------------------------------------------------------------\n     */\n\n    EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n        if (['A', 'AREA'].includes(this.tagName)) {\n            event.preventDefault();\n        }\n\n        if (isDisabled(this)) {\n            return;\n        }\n\n        const data = Tab.getOrCreateInstance(this);\n        data.show();\n    })\n\n    /**\n     * ------------------------------------------------------------------------\n     * jQuery\n     * ------------------------------------------------------------------------\n     * add .Tab to jQuery only if jQuery is present\n     */\n\n    defineJQueryPlugin(Tab);\n\n    return Tab;\n});\n","jquery/bootstrap/collapse.js":"/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): collapse.js and base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\ndefine([\n    \"jquery\",\n    \"./util/index\",\n    \"./dom/data\",\n    \"./dom/event-handler\",\n    \"./dom/manipulator\",\n    \"./dom/selector-engine\"\n], function($, Util, Data, EventHandler, Manipulator, SelectorEngine) {\n    'use strict';\n\n    const defineJQueryPlugin = Util.defineJQueryPlugin;\n    const executeAfterTransition = Util.executeAfterTransition;\n    const getElement = Util.getElement;\n    const getSelectorFromElement = Util.getSelectorFromElement;\n    const getElementFromSelector = Util.getElementFromSelector;\n    const reflow = Util.reflow;\n    const typeCheckConfig = Util.typeCheckConfig;\n\n    /**\n     * ------------------------------------------------------------------------\n     * Constants\n     * ------------------------------------------------------------------------\n     */\n\n    const VERSION = '5.1.3';\n    const NAME = 'collapse';\n    const DATA_KEY = 'bs.collapse';\n    const EVENT_KEY = `.${DATA_KEY}`;\n    const DATA_API_KEY = '.data-api';\n\n    const Default = {\n        toggle: true,\n        parent: null\n    };\n\n    const DefaultType = {\n        toggle: 'boolean',\n        parent: '(null|element)'\n    };\n\n    const EVENT_SHOW = `show${EVENT_KEY}`;\n    const EVENT_SHOWN = `shown${EVENT_KEY}`;\n    const EVENT_HIDE = `hide${EVENT_KEY}`;\n    const EVENT_HIDDEN = `hidden${EVENT_KEY}`;\n    const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;\n\n    const CLASS_NAME_SHOW = 'show';\n    const CLASS_NAME_COLLAPSE = 'collapse';\n    const CLASS_NAME_COLLAPSING = 'collapsing';\n    const CLASS_NAME_COLLAPSED = 'collapsed';\n    const CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;\n    const CLASS_NAME_HORIZONTAL = 'collapse-horizontal';\n\n    const WIDTH = 'width';\n    const HEIGHT = 'height';\n\n    const SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';\n    const SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]';\n\n    /**\n     * ------------------------------------------------------------------------\n     * Class Definition\n     * ------------------------------------------------------------------------\n     */\n\n    var Collapse = function(element, config) {\n        element = getElement(element);\n\n        if (!element) {\n            return;\n        }\n\n        this._element = element;\n        Data.set(this._element, DATA_KEY, this);\n\n        this._isTransitioning = false;\n        this._config = this._getConfig(config);\n        this._triggerArray = [];\n\n        const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE);\n\n        for (let i = 0, len = toggleList.length; i < len; i++) {\n            const elem = toggleList[i];\n            const selector = getSelectorFromElement(elem);\n            const filterElement = SelectorEngine.find(selector)\n                .filter(foundElem => foundElem === this._element);\n\n            if (selector !== null && filterElement.length) {\n                this._selector = selector;\n                this._triggerArray.push(elem);\n            }\n        }\n\n        this._initializeChildren();\n\n        if (!this._config.parent) {\n            this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());\n        }\n\n        if (this._config.toggle) {\n            this.toggle();\n        }\n    }\n\n    // Getters\n\n    Collapse.VERSION = VERSION;\n\n    Collapse.Default = Default;\n\n    Collapse.NAME = NAME;\n\n    Collapse.DATA_KEY = 'bs.' + Collapse.NAME;\n\n    Collapse.EVENT_KEY = '.' + Collapse.DATA_KEY;\n\n    // Public\n\n    Collapse.prototype.dispose = function() {\n        Data.remove(this._element, this.constructor.DATA_KEY);\n        EventHandler.off(this._element, this.constructor.EVENT_KEY);\n\n        Object.getOwnPropertyNames(this).forEach(propertyName => {\n            this[propertyName] = null;\n        })\n    }\n\n    Collapse.prototype._queueCallback = function(callback, element, isAnimated = true) {\n        executeAfterTransition(callback, element, isAnimated);\n    }\n\n    Collapse.prototype.toggle = function() {\n        if (this._isShown()) {\n            this.hide();\n        } else {\n            this.show();\n        }\n    }\n\n    Collapse.prototype.show = function() {\n        if (this._isTransitioning || this._isShown()) {\n            return;\n        }\n\n        let actives = [];\n        let activesData;\n\n        if (this._config.parent) {\n            const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent);\n            actives = SelectorEngine.find(SELECTOR_ACTIVES, this._config.parent).filter(elem => !children.includes(elem)); // remove children if greater depth\n        }\n\n        const container = SelectorEngine.findOne(this._selector);\n        if (actives.length) {\n            const tempActiveData = actives.find(elem => container !== elem);\n            activesData = tempActiveData ? Collapse.getInstance(tempActiveData) : null;\n\n            if (activesData && activesData._isTransitioning) {\n                return;\n            }\n        }\n\n        const startEvent = EventHandler.trigger(this._element, EVENT_SHOW);\n        if (startEvent.defaultPrevented) {\n            return;\n        }\n\n        actives.forEach(elemActive => {\n            if (container !== elemActive) {\n                Collapse.getOrCreateInstance(elemActive, {toggle: false}).hide();\n            }\n\n            if (!activesData) {\n                Data.set(elemActive, DATA_KEY, null);\n            }\n        })\n\n        const dimension = this._getDimension();\n\n        this._element.classList.remove(CLASS_NAME_COLLAPSE);\n        this._element.classList.add(CLASS_NAME_COLLAPSING);\n\n        this._element.style[dimension] = 0;\n\n        this._addAriaAndCollapsedClass(this._triggerArray, true);\n        this._isTransitioning = true;\n\n        const complete = () => {\n            this._isTransitioning = false;\n\n            this._element.classList.remove(CLASS_NAME_COLLAPSING);\n            this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);\n\n            this._element.style[dimension] = '';\n\n            EventHandler.trigger(this._element, EVENT_SHOWN);\n        };\n\n        const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n        const scrollSize = `scroll${capitalizedDimension}`;\n\n        this._queueCallback(complete, this._element, true);\n        this._element.style[dimension] = `${this._element[scrollSize]}px`;\n    }\n\n    Collapse.prototype.hide = function() {\n        if (this._isTransitioning || !this._isShown()) {\n            return;\n        }\n\n        const startEvent = EventHandler.trigger(this._element, EVENT_HIDE);\n        if (startEvent.defaultPrevented) {\n            return;\n        }\n\n        const dimension = this._getDimension();\n\n        this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;\n\n        reflow(this._element);\n\n        this._element.classList.add(CLASS_NAME_COLLAPSING);\n        this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);\n\n        const triggerArrayLength = this._triggerArray.length;\n        for (let i = 0; i < triggerArrayLength; i++) {\n            const trigger = this._triggerArray[i];\n            const elem = getElementFromSelector(trigger);\n\n            if (elem && !this._isShown(elem)) {\n                this._addAriaAndCollapsedClass([trigger], false);\n            }\n        }\n\n        this._isTransitioning = true;\n\n        const complete = () => {\n            this._isTransitioning = false;\n            this._element.classList.remove(CLASS_NAME_COLLAPSING);\n            this._element.classList.add(CLASS_NAME_COLLAPSE);\n            EventHandler.trigger(this._element, EVENT_HIDDEN);\n        };\n\n        this._element.style[dimension] = '';\n\n        this._queueCallback(complete, this._element, true);\n    }\n\n    Collapse.prototype._isShown = function(element = this._element) {\n        return element.classList.contains(CLASS_NAME_SHOW);\n    }\n\n    // Private\n\n    Collapse.prototype._getConfig = function(config) {\n        config = {\n            ...Default,\n            ...Manipulator.getDataAttributes(this._element),\n            ...config\n        };\n        config.toggle = Boolean(config.toggle); // Coerce string values\n        config.parent = getElement(config.parent);\n        typeCheckConfig(NAME, config, DefaultType);\n        return config;\n    }\n\n    Collapse.prototype._getDimension = function() {\n        return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;\n    }\n\n    Collapse.prototype._initializeChildren = function() {\n        if (!this._config.parent) {\n            return;\n        }\n\n        const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent);\n        SelectorEngine.find(SELECTOR_DATA_TOGGLE, this._config.parent).filter(elem => !children.includes(elem))\n            .forEach(element => {\n                const selected = getElementFromSelector(element);\n\n                if (selected) {\n                    this._addAriaAndCollapsedClass([element], this._isShown(selected));\n                }\n            })\n    }\n\n    Collapse.prototype._addAriaAndCollapsedClass = function(triggerArray, isOpen) {\n        if (!triggerArray.length) {\n            return;\n        }\n\n        triggerArray.forEach(elem => {\n            if (isOpen) {\n                elem.classList.remove(CLASS_NAME_COLLAPSED);\n            } else {\n                elem.classList.add(CLASS_NAME_COLLAPSED);\n            }\n\n            elem.setAttribute('aria-expanded', isOpen);\n        })\n    }\n\n    // Static\n\n    Collapse.getInstance = function(element) {\n        return Data.get(getElement(element), this.DATA_KEY);\n    }\n\n    Collapse.getOrCreateInstance = function(element, config = {}) {\n        return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null);\n    }\n\n    Collapse.jQueryInterface = function(config) {\n        return this.each(function () {\n            const _config = {};\n            if (typeof config === 'string' && /show|hide/.test(config)) {\n                _config.toggle = false;\n            }\n\n            const data = Collapse.getOrCreateInstance(this, _config);\n\n            if (typeof config === 'string') {\n                if (typeof data[config] === 'undefined') {\n                    throw new TypeError(`No method named \"${config}\"`);\n                }\n\n                data[config]();\n            }\n        })\n    }\n\n    /**\n     * ------------------------------------------------------------------------\n     * Data Api implementation\n     * ------------------------------------------------------------------------\n     */\n\n    EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n        // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n        if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n            event.preventDefault();\n        }\n\n        const selector = getSelectorFromElement(this);\n        const selectorElements = SelectorEngine.find(selector);\n\n        selectorElements.forEach(element => {\n            Collapse.getOrCreateInstance(element, {toggle: false}).toggle();\n        })\n    })\n\n    /**\n     * ------------------------------------------------------------------------\n     * jQuery\n     * ------------------------------------------------------------------------\n     * add .Collapse to jQuery only if jQuery is present\n     */\n\n    defineJQueryPlugin(Collapse);\n\n    return Collapse;\n});\n","jquery/bootstrap/util/index.js":"/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\ndefine([\n    \"jquery\",\n    'domReady!'\n], function() {\n    'use strict';\n\n    const MAX_UID = 1000000;\n    const MILLISECONDS_MULTIPLIER = 1000;\n    const TRANSITION_END = 'transitionend';\n\n    // Shoutout AngusCroll (https://goo.gl/pxwQGp)\n    const toType = obj => {\n        if (obj === null || obj === undefined) {\n            return `${obj}`\n        }\n\n        return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n    };\n\n    /**\n     * --------------------------------------------------------------------------\n     * Public Util Api\n     * --------------------------------------------------------------------------\n     */\n\n    const getUID = prefix => {\n        do {\n            prefix += Math.floor(Math.random() * MAX_UID)\n        } while (document.getElementById(prefix))\n\n        return prefix\n    };\n\n    const getSelector = element => {\n        let selector = element.getAttribute('data-bs-target');\n\n        if (!selector || selector === '#') {\n            let hrefAttr = element.getAttribute('href');\n\n            // The only valid content that could double as a selector are IDs or classes,\n            // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n            // `document.querySelector` will rightfully complain it is invalid.\n            // See https://github.com/twbs/bootstrap/issues/32273\n            if (!hrefAttr || (!hrefAttr.includes('#') && !hrefAttr.startsWith('.'))) {\n                return null\n            }\n\n            // Just in case some CMS puts out a full URL with the anchor appended\n            if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {\n                hrefAttr = `#${hrefAttr.split('#')[1]}`\n            }\n\n            selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null\n        }\n\n        return selector\n    };\n\n    const getSelectorFromElement = element => {\n        const selector = getSelector(element);\n\n        if (selector) {\n            return document.querySelector(selector) ? selector : null\n        }\n\n        return null\n    };\n\n    const getElementFromSelector = element => {\n        const selector = getSelector(element);\n\n        return selector ? document.querySelector(selector) : null\n    };\n\n    const getTransitionDurationFromElement = element => {\n        if (!element) {\n            return 0\n        }\n\n        // Get transition-duration of the element\n        let {transitionDuration, transitionDelay} = window.getComputedStyle(element);\n\n        const floatTransitionDuration = Number.parseFloat(transitionDuration);\n        const floatTransitionDelay = Number.parseFloat(transitionDelay);\n\n        // Return 0 if element or transition duration is not found\n        if (!floatTransitionDuration && !floatTransitionDelay) {\n            return 0\n        }\n\n        // If multiple durations are defined, take the first\n        transitionDuration = transitionDuration.split(',')[0]\n        transitionDelay = transitionDelay.split(',')[0]\n\n        return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n    };\n\n    const triggerTransitionEnd = element => {\n        element.dispatchEvent(new Event(TRANSITION_END))\n    };\n\n    const isElement = obj => {\n        if (!obj || typeof obj !== 'object') {\n            return false\n        }\n\n        if (typeof obj.jquery !== 'undefined') {\n            obj = obj[0]\n        }\n\n        return typeof obj.nodeType !== 'undefined'\n    };\n\n    const getElement = obj => {\n        if (isElement(obj)) { // it's a jQuery object or a node element\n            return obj.jquery ? obj[0] : obj\n        }\n\n        if (typeof obj === 'string' && obj.length > 0) {\n            return document.querySelector(obj)\n        }\n\n        return null\n    };\n\n    const typeCheckConfig = (componentName, config, configTypes) => {\n        Object.keys(configTypes).forEach(property => {\n            const expectedTypes = configTypes[property];\n            const value = config[property];\n            const valueType = value && isElement(value) ? 'element' : toType(value);\n\n            if (!new RegExp(expectedTypes).test(valueType)) {\n                throw new TypeError(\n                    `${componentName.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n                )\n            }\n        })\n    };\n\n    const isVisible = element => {\n        if (!isElement(element) || element.getClientRects().length === 0) {\n            return false\n        }\n\n        return getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n    };\n\n    const isDisabled = element => {\n        if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n            return true\n        }\n\n        if (element.classList.contains('disabled')) {\n            return true\n        }\n\n        if (typeof element.disabled !== 'undefined') {\n            return element.disabled\n        }\n\n        return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n    };\n\n    const findShadowRoot = element => {\n        if (!document.documentElement.attachShadow) {\n            return null\n        }\n\n        // Can find the shadow root otherwise it'll return the document\n        if (typeof element.getRootNode === 'function') {\n            const root = element.getRootNode();\n            return root instanceof ShadowRoot ? root : null\n        }\n\n        if (element instanceof ShadowRoot) {\n            return element\n        }\n\n        // when we don't find a shadow root\n        if (!element.parentNode) {\n            return null\n        }\n\n        return findShadowRoot(element.parentNode)\n    };\n\n    const noop = () => {};\n\n    /**\n     * Trick to restart an element's animation\n     *\n     * @param {HTMLElement} element\n     * @return void\n     *\n     * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n     */\n    const reflow = element => {\n        // eslint-disable-next-line no-unused-expressions\n        element.offsetHeight\n    };\n\n    const getjQuery = () => {\n        const {jQuery} = window;\n\n        if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n            return jQuery\n        }\n\n        return null\n    };\n\n    const DOMContentLoadedCallbacks = [];\n\n    const onDOMContentLoaded = callback => {\n        if (document.readyState === 'loading') {\n            // add listener on the first call when the document is in loading state\n            if (!DOMContentLoadedCallbacks.length) {\n                document.addEventListener('DOMContentLoaded', () => {\n                    DOMContentLoadedCallbacks.forEach(callback => callback())\n                })\n            }\n\n            DOMContentLoadedCallbacks.push(callback)\n        } else {\n            callback()\n        }\n    };\n\n    const isRTL = () => document.documentElement.dir === 'rtl';\n\n    const defineJQueryPlugin = plugin => {\n        onDOMContentLoaded(() => {\n            const $ = getjQuery();\n            /* istanbul ignore if */\n            if ($) {\n                const name = plugin.NAME;\n                const JQUERY_NO_CONFLICT = $.fn[name];\n                $.fn[name] = plugin.jQueryInterface\n                $.fn[name].Constructor = plugin\n                $.fn[name].noConflict = () => {\n                    $.fn[name] = JQUERY_NO_CONFLICT\n                    return plugin.jQueryInterface\n                }\n            }\n        })\n    };\n\n    const execute = callback => {\n        if (typeof callback === 'function') {\n            callback()\n        }\n    };\n\n    const executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n        if (!waitForTransition) {\n            execute(callback)\n            return\n        }\n\n        const durationPadding = 5;\n        const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;\n\n        let called = false;\n\n        const handler = ({ target }) => {\n            if (target !== transitionElement) {\n                return\n            }\n\n            called = true\n            transitionElement.removeEventListener(TRANSITION_END, handler)\n            execute(callback)\n        };\n\n        transitionElement.addEventListener(TRANSITION_END, handler)\n        setTimeout(() => {\n            if (!called) {\n                triggerTransitionEnd(transitionElement)\n            }\n        }, emulatedDuration)\n    };\n\n    /**\n     * Return the previous/next element of a list.\n     *\n     * @param {array} list    The list of elements\n     * @param activeElement   The active element\n     * @param shouldGetNext   Choose to get next or previous element\n     * @param isCycleAllowed\n     * @return {Element|elem} The proper element\n     */\n    const getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n        let index = list.indexOf(activeElement);\n\n        // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n        if (index === -1) {\n            return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]\n        }\n\n        const listLength = list.length;\n\n        index += shouldGetNext ? 1 : -1\n\n        if (isCycleAllowed) {\n            index = (index + listLength) % listLength\n        }\n\n        return list[Math.max(0, Math.min(index, listLength - 1))]\n    };\n\n    return {\n        getElement,\n        getUID,\n        getSelectorFromElement,\n        getElementFromSelector,\n        getTransitionDurationFromElement,\n        triggerTransitionEnd,\n        isElement,\n        typeCheckConfig,\n        isVisible,\n        isDisabled,\n        findShadowRoot,\n        noop,\n        getNextActiveElement,\n        reflow,\n        getjQuery,\n        onDOMContentLoaded,\n        isRTL,\n        defineJQueryPlugin,\n        execute,\n        executeAfterTransition\n    };\n});\n","jquery/bootstrap/dom/data.js":"/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\ndefine([], function() {\n    'use strict';\n\n    /**\n     * ------------------------------------------------------------------------\n     * Constants\n     * ------------------------------------------------------------------------\n     */\n\n    const elementMap = new Map();\n\n    return {\n        set: function (element, key, instance) {\n            if (!elementMap.has(element)) {\n                elementMap.set(element, new Map())\n            }\n\n            const instanceMap = elementMap.get(element);\n\n            // make it clear we only want one instance per element\n            // can be removed later when multiple key/instances are fine to be used\n            if (!instanceMap.has(key) && instanceMap.size !== 0) {\n                // eslint-disable-next-line no-console\n                console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)\n                return\n            }\n\n            instanceMap.set(key, instance)\n        },\n\n        get: function (element, key) {\n            if (elementMap.has(element)) {\n                return elementMap.get(element).get(key) || null\n            }\n\n            return null\n        },\n\n        remove: function (element, key) {\n            if (!elementMap.has(element)) {\n                return\n            }\n\n            const instanceMap = elementMap.get(element);\n\n            instanceMap.delete(key)\n\n            // free up element references if there are no instances left for an element\n            if (instanceMap.size === 0) {\n                elementMap.delete(element)\n            }\n        }\n    }\n});\n","jquery/bootstrap/dom/event-handler.js":"/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\ndefine([\n    \"../util/index\"\n], function(Util) {\n    'use strict';\n\n    const getjQuery = Util.getjQuery;\n\n    /**\n     * ------------------------------------------------------------------------\n     * Constants\n     * ------------------------------------------------------------------------\n     */\n\n    const namespaceRegex = /[^.]*(?=\\..*)\\.|.*/;\n    const stripNameRegex = /\\..*/;\n    const stripUidRegex = /::\\d+$/;\n    const eventRegistry = {}; // Events storage\n    let uidEvent = 1;\n    const customEvents = {\n        mouseenter: 'mouseover',\n        mouseleave: 'mouseout'\n    };\n    const customEventsRegex = /^(mouseenter|mouseleave)/i;\n    const nativeEvents = new Set([\n        'click',\n        'dblclick',\n        'mouseup',\n        'mousedown',\n        'contextmenu',\n        'mousewheel',\n        'DOMMouseScroll',\n        'mouseover',\n        'mouseout',\n        'mousemove',\n        'selectstart',\n        'selectend',\n        'keydown',\n        'keypress',\n        'keyup',\n        'orientationchange',\n        'touchstart',\n        'touchmove',\n        'touchend',\n        'touchcancel',\n        'pointerdown',\n        'pointermove',\n        'pointerup',\n        'pointerleave',\n        'pointercancel',\n        'gesturestart',\n        'gesturechange',\n        'gestureend',\n        'focus',\n        'blur',\n        'change',\n        'reset',\n        'select',\n        'submit',\n        'focusin',\n        'focusout',\n        'load',\n        'unload',\n        'beforeunload',\n        'resize',\n        'move',\n        'DOMContentLoaded',\n        'readystatechange',\n        'error',\n        'abort',\n        'scroll'\n    ]);\n\n    /**\n     * ------------------------------------------------------------------------\n     * Private methods\n     * ------------------------------------------------------------------------\n     */\n\n    function getUidEvent(element, uid) {\n        return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n    }\n\n    function getEvent(element) {\n        const uid = getUidEvent(element);\n\n        element.uidEvent = uid\n        eventRegistry[uid] = eventRegistry[uid] || {}\n\n        return eventRegistry[uid]\n    }\n\n    function bootstrapHandler(element, fn) {\n        return function handler(event) {\n            event.delegateTarget = element\n\n            if (handler.oneOff) {\n                EventHandler.off(element, event.type, fn)\n            }\n\n            return fn.apply(element, [event])\n        }\n    }\n\n    function bootstrapDelegationHandler(element, selector, fn) {\n        return function handler(event) {\n            const domElements = element.querySelectorAll(selector);\n\n            for (let {target} = event; target && target !== this; target = target.parentNode) {\n                for (let i = domElements.length; i--;) {\n                    if (domElements[i] === target) {\n                        event.delegateTarget = target\n\n                        if (handler.oneOff) {\n                            EventHandler.off(element, event.type, selector, fn)\n                        }\n\n                        return fn.apply(target, [event])\n                    }\n                }\n            }\n\n            // To please ESLint\n            return null\n        }\n    }\n\n    function findHandler(events, handler, delegationSelector = null) {\n        const uidEventList = Object.keys(events);\n\n        for (let i = 0, len = uidEventList.length; i < len; i++) {\n            const event = events[uidEventList[i]];\n\n            if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {\n                return event\n            }\n        }\n\n        return null\n    }\n\n    function normalizeParams(originalTypeEvent, handler, delegationFn) {\n        const delegation = typeof handler === 'string';\n        const originalHandler = delegation ? delegationFn : handler;\n\n        let typeEvent = getTypeEvent(originalTypeEvent);\n        const isNative = nativeEvents.has(typeEvent);\n\n        if (!isNative) {\n            typeEvent = originalTypeEvent\n        }\n\n        return [delegation, originalHandler, typeEvent]\n    }\n\n    function addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {\n        if (typeof originalTypeEvent !== 'string' || !element) {\n            return\n        }\n\n        if (!handler) {\n            handler = delegationFn\n            delegationFn = null\n        }\n\n        // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n        // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n        if (customEventsRegex.test(originalTypeEvent)) {\n            const wrapFn = fn => {\n                return function (event) {\n                    if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n                        return fn.call(this, event)\n                    }\n                }\n            };\n\n            if (delegationFn) {\n                delegationFn = wrapFn(delegationFn)\n            } else {\n                handler = wrapFn(handler)\n            }\n        }\n\n        const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn);\n        const events = getEvent(element);\n        const handlers = events[typeEvent] || (events[typeEvent] = {});\n        const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null);\n\n        if (previousFn) {\n            previousFn.oneOff = previousFn.oneOff && oneOff\n\n            return\n        }\n\n        const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''));\n        const fn = delegation ?\n            bootstrapDelegationHandler(element, handler, delegationFn) :\n            bootstrapHandler(element, handler);\n\n        fn.delegationSelector = delegation ? handler : null\n        fn.originalHandler = originalHandler\n        fn.oneOff = oneOff\n        fn.uidEvent = uid\n        handlers[uid] = fn\n\n        element.addEventListener(typeEvent, fn, delegation)\n    }\n\n    function removeHandler(element, events, typeEvent, handler, delegationSelector) {\n        const fn = findHandler(events[typeEvent], handler, delegationSelector);\n\n        if (!fn) {\n            return\n        }\n\n        element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n        delete events[typeEvent][fn.uidEvent]\n    }\n\n    function removeNamespacedHandlers(element, events, typeEvent, namespace) {\n        const storeElementEvent = events[typeEvent] || {};\n\n        Object.keys(storeElementEvent).forEach(handlerKey => {\n            if (handlerKey.includes(namespace)) {\n                const event = storeElementEvent[handlerKey];\n\n                removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n            }\n        })\n    }\n\n    function getTypeEvent(event) {\n        // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n        event = event.replace(stripNameRegex, '')\n        return customEvents[event] || event\n    }\n\n    return {\n        on: function(element, event, handler, delegationFn) {\n            addHandler(element, event, handler, delegationFn, false)\n        },\n\n        one: function(element, event, handler, delegationFn) {\n            addHandler(element, event, handler, delegationFn, true)\n        },\n\n        off: function(element, originalTypeEvent, handler, delegationFn) {\n            if (typeof originalTypeEvent !== 'string' || !element) {\n                return\n            }\n\n            const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn);\n            const inNamespace = typeEvent !== originalTypeEvent;\n            const events = getEvent(element);\n            const isNamespace = originalTypeEvent.startsWith('.');\n\n            if (typeof originalHandler !== 'undefined') {\n                // Simplest case: handler is passed, remove that listener ONLY.\n                if (!events || !events[typeEvent]) {\n                    return\n                }\n\n                removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null)\n                return\n            }\n\n            if (isNamespace) {\n                Object.keys(events).forEach(elementEvent => {\n                    removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n                })\n            }\n\n            const storeElementEvent = events[typeEvent] || {};\n            Object.keys(storeElementEvent).forEach(keyHandlers => {\n                const handlerKey = keyHandlers.replace(stripUidRegex, '');\n\n                if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n                    const event = storeElementEvent[keyHandlers];\n\n                    removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n                }\n            })\n        },\n\n        trigger: function(element, event, args) {\n            if (typeof event !== 'string' || !element) {\n                return null\n            }\n\n            const $ = getjQuery();\n            const typeEvent = getTypeEvent(event);\n            const inNamespace = event !== typeEvent;\n            const isNative = nativeEvents.has(typeEvent);\n\n            let jQueryEvent;\n            let bubbles = true;\n            let nativeDispatch = true;\n            let defaultPrevented = false;\n            let evt = null;\n\n            if (inNamespace && $) {\n                jQueryEvent = $.Event(event, args)\n\n                $(element).trigger(jQueryEvent)\n                bubbles = !jQueryEvent.isPropagationStopped()\n                nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n                defaultPrevented = jQueryEvent.isDefaultPrevented()\n            }\n\n            if (isNative) {\n                evt = document.createEvent('HTMLEvents')\n                evt.initEvent(typeEvent, bubbles, true)\n            } else {\n                evt = new CustomEvent(event, {\n                    bubbles,\n                    cancelable: true\n                })\n            }\n\n            // merge custom information in our event\n            if (typeof args !== 'undefined') {\n                Object.keys(args).forEach(key => {\n                    Object.defineProperty(evt, key, {\n                        get() {\n                            return args[key]\n                        }\n                    })\n                })\n            }\n\n            if (defaultPrevented) {\n                evt.preventDefault()\n            }\n\n            if (nativeDispatch) {\n                element.dispatchEvent(evt)\n            }\n\n            if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {\n                jQueryEvent.preventDefault()\n            }\n\n            return evt\n        }\n    }\n});\n","jquery/bootstrap/dom/selector-engine.js":"/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\ndefine([\n    \"../util/index\"\n], function(Util) {\n    'use strict';\n\n    const isDisabled = Util.isDisabled;\n    const isVisible = Util.isVisible;\n\n    /**\n     * ------------------------------------------------------------------------\n     * Constants\n     * ------------------------------------------------------------------------\n     */\n\n    const NODE_TEXT = 3;\n\n    return {\n        find: function(selector, element = document.documentElement) {\n            return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n        },\n\n        findOne: function(selector, element = document.documentElement) {\n            return Element.prototype.querySelector.call(element, selector)\n        },\n\n        children: function(element, selector) {\n            return [].concat(...element.children)\n                .filter(child => child.matches(selector))\n        },\n\n        parents: function(element, selector) {\n            const parents = [];\n\n            let ancestor = element.parentNode;\n\n            while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {\n                if (ancestor.matches(selector)) {\n                    parents.push(ancestor)\n                }\n\n                ancestor = ancestor.parentNode\n            }\n\n            return parents\n        },\n\n        prev: function(element, selector) {\n            let previous = element.previousElementSibling;\n\n            while (previous) {\n                if (previous.matches(selector)) {\n                    return [previous]\n                }\n\n                previous = previous.previousElementSibling\n            }\n\n            return []\n        },\n\n        next: function(element, selector) {\n            let next = element.nextElementSibling;\n\n            while (next) {\n                if (next.matches(selector)) {\n                    return [next]\n                }\n\n                next = next.nextElementSibling\n            }\n\n            return []\n        },\n\n        focusableChildren: function(element) {\n            const focusables = [\n                'a',\n                'button',\n                'input',\n                'textarea',\n                'select',\n                'details',\n                '[tabindex]',\n                '[contenteditable=\"true\"]'\n            ].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(', ');\n\n            return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el))\n        }\n    }\n});\n","jquery/bootstrap/dom/manipulator.js":"/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\ndefine([], function() {\n    'use strict';\n\n    function normalizeData(val) {\n        if (val === 'true') {\n            return true\n        }\n\n        if (val === 'false') {\n            return false\n        }\n\n        if (val === Number(val).toString()) {\n            return Number(val)\n        }\n\n        if (val === '' || val === 'null') {\n            return null\n        }\n\n        return val\n    }\n\n    function normalizeDataKey(key) {\n        return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n    }\n\n    return {\n        setDataAttribute: function(element, key, value) {\n            element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n        },\n\n        removeDataAttribute: function(element, key) {\n            element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n        },\n\n        getDataAttributes: function(element) {\n            if (!element) {\n                return {}\n            }\n\n            const attributes = {};\n\n            Object.keys(element.dataset)\n                .filter(key => key.startsWith('bs'))\n                .forEach(key => {\n                    let pureKey = key.replace(/^bs/, '');\n                    pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n                    attributes[pureKey] = normalizeData(element.dataset[key])\n                })\n\n            return attributes\n        },\n\n        getDataAttribute: function(element, key) {\n            return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n        },\n\n        offset: function(element) {\n            const rect = element.getBoundingClientRect();\n\n            return {\n                top: rect.top + window.pageYOffset,\n                left: rect.left + window.pageXOffset\n            }\n        },\n\n        position: function(element) {\n            return {\n                top: element.offsetTop,\n                left: element.offsetLeft\n            }\n        }\n    }\n});\n","Magento_AdobeStockImageAdminUi/js/path-utility.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine([], function () {\n    'use strict';\n\n    return {\n        /**\n         * Extracts image name from its path\n         *\n         * @param {String} path\n         * @returns {String}\n         */\n        getImageNameFromPath: function (path) {\n            var filePathArray = path.split('/'),\n                imageIndex = filePathArray.length - 1;\n\n            return filePathArray[imageIndex].substring(0, filePathArray[imageIndex].lastIndexOf('.'));\n        },\n\n        /**\n         * Generate meaningful name image file,\n         * allow only alphanumerics, dashes, and underscores\n         *\n         * @param {String} title\n         * @param {Number} id\n         * @return string\n         */\n        generateImageName: function (title, id) {\n            var fileName = title.substring(0, 32)\n                .replace(/[^a-zA-Z0-9_]/g, '-')\n                .replace(/-{2,}/g, '-')\n                .toLowerCase();\n\n            /* If the filename does not contain latin chars, use ID as a filename */\n            return fileName === '-' ? id : fileName;\n        },\n\n        /**\n         * Get image file extension\n         *\n         * @param {String} contentType\n         * @return string\n         */\n        getImageExtension: function (contentType) {\n            return contentType.match(/[^/]{1,4}$/);\n        },\n\n        /**\n         * Create path\n         *\n         * @param {String} directoryPath\n         * @param {String} fileName\n         * @param {String} contentType\n         * @returns {String}\n         */\n        buildPath: function (directoryPath, fileName, contentType) {\n            return directoryPath + '/' + fileName + '.' + this.getImageExtension(contentType);\n        }\n    };\n});\n","Magento_AdobeStockImageAdminUi/js/panel.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'uiElement',\n    'jquery',\n    'mage/translate'\n], function (Element, $, $t) {\n    'use strict';\n\n    return Element.extend({\n        defaults: {\n            containerId: '#adobe-stock-images-search-modal',\n            masonryComponentPath: 'adobe_stock_images_listing.adobe_stock_images_listing.adobe_stock_images_columns',\n            dataSourcePath: 'adobe_stock_images_listing.adobe_stock_images_listing_data_source',\n            modules: {\n                masonry: '${ $.masonryComponentPath }',\n                source: '${ $.dataSourcePath }'\n            }\n        },\n\n        /**\n         * Init component\n         *\n         * @return {exports}\n         */\n        initialize: function () {\n            this._super();\n\n            $(this.containerId).modal({\n                type: 'slide',\n                buttons: [],\n                modalClass: 'adobe-stock-modal',\n                title: $t('Adobe Stock')\n            }).on('openModal', function () {\n                this.masonry().setLayoutStylesWhenLoaded();\n            }.bind(this));\n\n            try {\n                $(this.containerId).applyBindings();\n            } catch (e) {\n                //already bounded\n            }\n\n            $(window).on('fileDeleted.mediabrowser', this.reloadGrid.bind(this));\n\n            return this;\n        },\n\n        /**\n         * Update listing data\n         */\n        reloadGrid: function () {\n            this.source().set('params.t', Date.now());\n        }\n    });\n});\n","Magento_AdobeStockImageAdminUi/js/media-gallery.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\n/* global Base64 */\ndefine([\n    'jquery',\n    'Magento_Ui/js/modal/confirm'\n], function ($, confirm) {\n    'use strict';\n\n    return {\n        jsTreeRootFolderId: 'root',\n        jsTreeFolderNameMaxLength: 20,\n\n        /**\n         * Locate downloaded image in media browser\n         *\n         * @param {String} path\n         */\n        locate: function (path) {\n            var imageFolder = this.selectFolder(path),\n                imageFilename = path.substring(path.lastIndexOf('/') + 1),\n                locatedImage;\n\n            if (imageFolder.length) {\n                locatedImage = $('div[data-row=\"file\"]:has(img[alt=\\\"' + imageFilename + '\\\"])');\n\n                return locatedImage.length ? locatedImage : false;\n            }\n\n            $.ajaxSetup({\n                async: true\n            });\n        },\n\n        /**\n         * Select folder\n         *\n         * @param {String} path\n         */\n        selectFolder: function (path) {\n            var imageFolder,\n                pathId,\n                imagePath = path.replace(/^\\/+/, ''),\n                folderPathParts = imagePath.split('/').slice(0, -1);\n\n            $.ajaxSetup({\n                async: false\n            });\n\n            if (folderPathParts.length > 1) {\n                this.openFolderTree(folderPathParts);\n            }\n\n            pathId = Base64.idEncode(folderPathParts.join('/'));\n            imageFolder = $('.jstree li[data-id=\"' + pathId + '\"]').children('a');\n\n            if (!imageFolder.length) {\n                imageFolder = $('.jstree li[data-id=\"' + this.jsTreeRootFolderId + '\"]')\n                    .children('a');\n            }\n\n            if (imageFolder.length) {\n                imageFolder[0].click();\n            }\n\n            return imageFolder;\n        },\n\n        /**\n         * Show popup that image cannot be located\n         */\n        notLocated: function () {\n            confirm({\n                title: $.mage.__('The image cannot be located'),\n                content: $.mage.__('We cannot find this image in the media gallery.'),\n                buttons: [{\n                    text: $.mage.__('Ok'),\n                    class: 'action-primary',\n                    attr: {},\n\n                    /**\n                     * Close modal on button click\n                     */\n                    click: function (event) {\n                        this.closeModal(event);\n                    }\n                }]\n            });\n        },\n\n        /**\n         * Open folder Tree\n         *\n         * @param {Array} folderPathParts\n         */\n        openFolderTree: function (folderPathParts) {\n            var i,\n                pathId,\n                openFolderButton,\n                folderPath = '';\n\n            for (i = 0; i < folderPathParts.length - 1; i++) {\n                if (folderPath === '') {\n                    folderPath = folderPathParts[i];\n                } else {\n                    folderPath = folderPath + '/' + folderPathParts[i];\n                }\n                pathId = Base64.idEncode(folderPath);\n                openFolderButton = $('.jstree li[data-id=\"' + pathId + '\"].jstree-closed').children('.jstree-icon');\n\n                if (openFolderButton.length) {\n                    openFolderButton.click();\n                }\n            }\n        }\n    };\n});\n","Magento_AdobeStockImageAdminUi/js/signIn.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine([\n    'jquery',\n    'Magento_AdobeIms/js/signIn',\n    'Magento_AdobeIms/js/action/authorization',\n    'Magento_Ui/js/modal/confirm'\n], function ($, signIn, auth, confirm) {\n    'use strict';\n\n    return signIn.extend({\n\n        defaults: {\n            userQuota: {},\n            // eslint-disable-next-line max-len\n            dataProvider: 'name = adobe_stock_images_listing.adobe_stock_images_listing_data_source, ns = adobe_stock_images_listing',\n            // eslint-disable-next-line max-len\n            previewProvider: 'name = adobe_stock_images_listing.adobe_stock_images_listing.adobe_stock_images_columns.preview, ns = adobe_stock_images_listing',\n            quotaUrl: 'adobe_stock/license/quota',\n            modules: {\n                source: '${ $.dataProvider }',\n                preview: '${ $.previewProvider }'\n            }\n        },\n\n        /**\n         * @inheritdoc\n         */\n        initObservable: function () {\n            this._super().observe(['userQuota']);\n\n            return this;\n        },\n\n        /**\n         * Login to Adobe\n         *\n         * @return {*}\n         */\n        login: function () {\n            var deferred = $.Deferred();\n\n            if (this.user().isAuthorized) {\n                return deferred.resolve();\n            }\n            auth(this.loginConfig)\n                .then(function (response) {\n                    this.loadUserProfile();\n                    deferred.resolve(response);\n                }.bind(this))\n                .fail(function (error) {\n                    deferred.reject(error);\n                });\n\n            return deferred.promise();\n        },\n\n        /**\n         * Login action with popup on error..\n         */\n        loginClick: function () {\n            this.login().fail(function (error) {\n                this.showLoginErrorPopup(error);\n            }.bind(this));\n        },\n\n        /**\n         * Show popup that user failed to login.\n         */\n        showLoginErrorPopup: function (error) {\n            confirm({\n                title: $.mage.__('Couldn\\'t log you in'),\n                content: error,\n                buttons: [{\n                    text: $.mage.__('Ok'),\n                    class: 'action-primary action-accept'\n                }],\n                actions: {\n\n                    /**\n                       * Close modal\n                       */\n                    confirm: function (event) {\n                        this.closeModal(event);\n                    }\n                }\n            });\n        },\n\n        /**\n         * Logout from adobe account\n         */\n        logout: function () {\n            $.ajax({\n                type: 'POST',\n                url: this.logoutUrl,\n                data: {\n                    'form_key': window.FORM_KEY\n                },\n                dataType: 'json',\n                context: this,\n                showLoader: true,\n                success: function () {\n                    this.user({\n                        isAuthorized: false,\n                        name: '',\n                        email: '',\n                        image: this.defaultProfileImage\n                    });\n                }.bind(this),\n\n                /**\n                 * @param {Object} response\n                 * @returns {String}\n                 */\n                error: function (response) {\n                    return response.message;\n                }\n            });\n        },\n\n        /**\n         * Retrieves full user quota.\n         */\n        getUserQuota: function () {\n            $.ajax({\n                type: 'GET',\n                url: this.quotaUrl,\n                dataType: 'json',\n                context: this,\n\n                /**\n                 * @param {Object} response\n                 * @returns void\n                 */\n                success: function (response) {\n                    this.userQuota(response.result);\n                },\n\n                /**\n                 * @param {Object} response\n                 * @returns {String}\n                 */\n                error: function (response) {\n                    return response.message;\n                }\n            });\n        },\n\n        /**\n         * @inheritdoc\n         */\n        loadUserProfile: function () {\n            $.ajax({\n                type: 'GET',\n                url: this.profileUrl,\n                dataType: 'json',\n                context: this,\n\n                /**\n                 * @param {Object} response\n                 * @returns void\n                 */\n                success: function (response) {\n                    this.user({\n                        isAuthorized: true,\n                        name: response.result.name,\n                        email: response.result.email,\n                        image: response.result.image\n                    });\n                    this.getUserQuota();\n                },\n\n                /**\n                 * @param {Object} response\n                 * @returns {String}\n                 */\n                error: function (response) {\n                    return response.message;\n                }\n            });\n        }\n    });\n});\n","Magento_AdobeStockImageAdminUi/js/action/getLicenseStatus.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine([\n    'jquery'\n], function ($) {\n    'use strict';\n\n    return function (requestUrl, ids) {\n        var deferred = $.Deferred();\n\n        $.ajax({\n            type: 'GET',\n            url: requestUrl + '?ids=' + ids.join(','),\n            data: {\n                'form_key': window.FORM_KEY\n            },\n            showLoader: true,\n            dataType: 'json',\n\n            /**\n             * Resolve with the response result\n             *\n             * @param {Object} response\n             */\n            success: function (response) {\n                deferred.resolve(response.result);\n            },\n\n            /**\n             * Reject with the message from response\n             *\n             * @param {Object} response\n             */\n            error: function (response) {\n                var message = response.message;\n\n                if (response.status === 403) {\n                    message = $.mage.__('Your admin role does not have permissions to license an image');\n                }\n\n                deferred.reject(message);\n            }\n        });\n\n        return deferred.promise();\n    };\n});\n","Magento_AdobeStockImageAdminUi/js/action/confirmQuota.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine([\n    'jquery'\n], function ($) {\n    'use strict';\n\n    return function (requestUrl, adobeAssetId) {\n        var deferred = $.Deferred();\n\n        $.ajax({\n            type: 'GET',\n            url: requestUrl,\n            dataType: 'json',\n            data: {\n                'media_id': adobeAssetId\n            },\n            showLoader: true,\n\n            /**\n             * Extract the data from the response and resolve\n             *\n             * @param {Object} response\n             */\n            success: function (response) {\n                deferred.resolve({\n                    canLicense: response.result.canLicense,\n                    message: response.result.message\n                });\n            },\n\n            /**\n             * Extract the error message and reject\n             *\n             * @param {Object} response\n             */\n            error: function (response) {\n                var message = response.JSON ? response.JSON.message\n                    : $.mage.__('Could not fetch licensing information.');\n\n                if (response.status === 403) {\n                    message = $.mage.__('Your admin role does not have permissions to license an image');\n                }\n\n                deferred.reject(message);\n            }\n        });\n\n        return deferred.promise();\n    };\n});\n","Magento_AdobeStockImageAdminUi/js/action/licenseAndSave.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine([\n    'jquery',\n    'Magento_AdobeStockImageAdminUi/js/action/save',\n    'Magento_AdobeStockImageAdminUi/js/confirmation/license',\n    'Magento_AdobeStockImageAdminUi/js/path-utility'\n], function ($, saveAction, licenseConfirmation, pathUtility) {\n    'use strict';\n\n    return function (\n        requestUrl,\n        id,\n        title,\n        path,\n        contentType,\n        isDownloaded,\n        quotaMessage,\n        directoryPath\n    ) {\n        var deferred = $.Deferred(),\n            destinationPath;\n\n        licenseConfirmation(\n                title,\n                quotaMessage,\n                isDownloaded,\n                pathUtility.generateImageName(title, id),\n                pathUtility.getImageExtension(contentType)\n            ).then(function (fileName) {\n\n                if (typeof fileName === 'undefined') {\n                    fileName = pathUtility.getImageNameFromPath(path);\n                }\n\n                destinationPath = pathUtility.buildPath(directoryPath, fileName, contentType);\n\n                saveAction(\n                    requestUrl,\n                    id,\n                    destinationPath\n                ).then(function () {\n                    deferred.resolve(destinationPath);\n                }).fail(function (message) {\n                    deferred.reject(message);\n                });\n            }).fail(function (error) {\n                deferred.reject(error);\n            });\n\n        return deferred.promise();\n    };\n});\n","Magento_AdobeStockImageAdminUi/js/action/savePreview.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine([\n    'jquery',\n    'Magento_AdobeStockImageAdminUi/js/action/save',\n    'Magento_AdobeStockImageAdminUi/js/confirmation/save',\n    'Magento_AdobeStockImageAdminUi/js/path-utility'\n], function ($, saveAction, saveConfirmation, pathUtility) {\n    'use strict';\n\n    return function (requestUrl, id, title, contentType, directoryPath) {\n        var deferred = $.Deferred(),\n            destinationPath;\n\n        saveConfirmation(\n            pathUtility.generateImageName(title, id),\n            pathUtility.getImageExtension(contentType)\n        ).then(function (fileName) {\n            destinationPath = pathUtility.buildPath(directoryPath, fileName, contentType);\n\n            saveAction(\n                requestUrl,\n                id,\n                destinationPath\n            ).then(function () {\n                deferred.resolve(destinationPath);\n            }).fail(function (error) {\n                deferred.reject(error);\n            });\n        }).fail(function (error) {\n            deferred.reject(error);\n        });\n\n        return deferred.promise();\n    };\n});\n","Magento_AdobeStockImageAdminUi/js/action/save.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine([\n    'jquery'\n], function ($) {\n    'use strict';\n\n    return function (requestUrl, adobeAssetId, destinationPath) {\n        var deferred = $.Deferred();\n\n        $.ajax({\n            type: 'POST',\n            url: requestUrl,\n            dataType: 'json',\n            showLoader: true,\n            data: {\n                'media_id': adobeAssetId,\n                'destination_path': destinationPath\n            },\n\n            /**\n             * Resolve on success\n             */\n            success: function () {\n                deferred.resolve();\n            },\n\n            /**\n             * Extract the error message and reject\n             *\n             * @param {Object} response\n             */\n            error: function (response) {\n                var message;\n\n                if (typeof response.responseJSON === 'undefined' ||\n                    typeof response.responseJSON.message === 'undefined'\n                ) {\n                    message = 'Could not save the asset!';\n                } else {\n                    message = response.responseJSON.message;\n                }\n                deferred.reject(message);\n            }\n        });\n\n        return deferred.promise();\n    };\n});\n","Magento_AdobeStockImageAdminUi/js/action/saveLicensed.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine([\n    'jquery',\n    'Magento_AdobeStockImageAdminUi/js/action/save',\n    'Magento_AdobeStockImageAdminUi/js/confirmation/saveLicensed',\n    'Magento_AdobeStockImageAdminUi/js/path-utility'\n], function ($, saveAction, saveLicensedConfirmation, pathUtility) {\n    'use strict';\n\n    return function (requestUrl, id, title, path, contentType, directoryPath) {\n        var imageName = '',\n            destinationPath,\n            deferred = $.Deferred();\n\n        if (path !== '') {\n            imageName = pathUtility.getImageNameFromPath(path);\n            destinationPath = pathUtility.buildPath(directoryPath, imageName, contentType);\n            saveAction(\n                requestUrl,\n                id,\n                destinationPath\n            ).then(function () {\n                deferred.resolve(destinationPath);\n            }).fail(function (message) {\n                deferred.reject(message);\n            });\n\n            return deferred.promise();\n        }\n\n        saveLicensedConfirmation(\n            pathUtility.generateImageName(title, id),\n            pathUtility.getImageExtension(contentType)\n        ).then(function (fileName) {\n            destinationPath = pathUtility.buildPath(directoryPath, fileName, contentType);\n            saveAction(\n                requestUrl,\n                id,\n                destinationPath\n            ).then(function () {\n                deferred.resolve(destinationPath);\n            }).fail(function (message) {\n                deferred.reject(message);\n            });\n        }).fail(function (error) {\n            deferred.reject(error);\n        });\n\n        return deferred.promise();\n    };\n});\n","Magento_AdobeStockImageAdminUi/js/mediaGallery/grid/columns/licenseImage.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine([\n    'Magento_MediaGalleryUi/js/grid/columns/image'\n], function (Image) {\n    'use strict';\n\n    return Image.extend({\n        defaults: {\n            viewConfig: [\n                {\n                    component: 'Magento_AdobeStockImageAdminUi/js/mediaGallery/grid/columns/image/licenseActions',\n                    name: '${ $.name }_actions',\n                    imageModelName: '${ $.name }',\n                    imageDetailsUrl: '${ $.imageDetailsurl }',\n                    imageComponent: '${ $.imageComponent }'\n                }\n            ]\n        }\n    });\n});\n","Magento_AdobeStockImageAdminUi/js/mediaGallery/grid/columns/image/licenseActions.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine([\n    'jquery',\n    'underscore',\n    'Magento_MediaGalleryUi/js/grid/columns/image/actions',\n    'Magento_MediaGalleryUi/js/action/getDetails',\n    'mage/translate'\n], function ($, _, Action, getDetails) {\n    'use strict';\n\n    return Action.extend({\n        defaults: {\n            template: 'Magento_AdobeStockImageAdminUi/mediaGallery/grid/columns/image/licenseActions',\n            licenseAction: {\n                name: 'license',\n                title: $.mage.__('License'),\n                handler: 'licenseImageAction'\n            },\n            modules: {\n                image: '${ $.imageComponent }'\n            }\n        },\n\n        /**\n         * Initialize the component\n         *\n         * @returns {Object}\n         */\n        initialize: function () {\n            this._super();\n            this.actionsList.push(this.licenseAction);\n\n            return this;\n        },\n\n        /**\n         * Init observable variables\n         *\n         * @return {Object}\n         */\n        initObservable: function () {\n            this._super()\n                .observe([\n                    'visible'\n                ]);\n\n            return this;\n        },\n\n        /**\n         * License image\n         *\n         * @param {Object} record\n         */\n        licenseImageAction: function (record) {\n            this.getImageRecord(record.id);\n        },\n\n        /**\n         * Check if image licensed\n         *\n         * @param {Object} record\n         * @param {Object} name\n         */\n        isVisible: function (record, name) {\n            if (name === this.licenseAction.name) {\n                if (_.isUndefined(record.overlay) || record.overlay === '') {\n                    return false;\n                }\n\n                return true;\n            }\n\n            return true;\n        },\n\n        /**\n         * Get image record and start license process\n         *\n         * @param {Number} imageId\n         */\n        getImageRecord: function (imageId) {\n            getDetails(this.imageDetailsUrl, [imageId]).then(function (imageDetails) {\n                var id = imageDetails[imageId]['adobe_stock'][0].value;\n\n                this.image().actions().licenseProcess(\n                    id,\n                    imageDetails[imageId].title,\n                    imageDetails[imageId].path,\n                    imageDetails[imageId]['content_type'],\n                    true\n                ).then(function () {\n                    this.image().actions().login().getUserQuota();\n                    this.imageModel().reloadGrid();\n                    this.imageModel().addMessage('success', $.mage.__('The image has been licensed.'));\n                }.bind(this)).fail(function (error) {\n                    if (error) {\n                        this.imageModel().addMessage('error', error);\n                    }\n                }.bind(this));\n            }.bind(this)).fail(function (message) {\n                this.imageModel().addMessage('error', message);\n            }.bind(this));\n        }\n    });\n});\n","Magento_AdobeStockImageAdminUi/js/components/images-grid-sizes.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine([\n    'Magento_Ui/js/grid/paging/sizes',\n    'underscore'\n], function (Sizes, _) {\n    'use strict';\n\n    return Sizes.extend({\n        defaults: {\n            value: 32,\n            minSize: 1,\n            maxSize: 64\n        },\n\n        exports: {\n            value: '${ $.provider }:params.paging.page',\n            options: '${ $.provider }:params.paging.options'\n        },\n\n        sizes: {\n            '32': {\n                value: 32,\n                label: 32\n            },\n            '48': {\n                value: 48,\n                label: 48\n            },\n            '64': {\n                value: 64,\n                label: 64\n            }\n        },\n\n        /**\n         * @inheritdoc\n         */\n        updateArray: function () {\n            if (_.isUndefined(this.options)) {\n                this.options = this.sizes;\n            }\n\n            return this._super();\n        }\n    });\n});\n","Magento_AdobeStockImageAdminUi/js/components/grid/column/overlay.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine([\n    'jquery',\n    'underscore',\n    'Magento_Ui/js/grid/columns/overlay',\n    'Magento_AdobeStockImageAdminUi/js/action/getLicenseStatus'\n], function ($, _, overlay, getLicenseStatus) {\n    'use strict';\n\n    return overlay.extend({\n        defaults: {\n            // eslint-disable-next-line max-len\n            provider: 'name = adobe_stock_images_listing.adobe_stock_images_listing_data_source, ns = adobe_stock_images_listing',\n            loginProvider: 'name = adobe-login, ns = adobe-login',\n            getImagesUrl: 'adobe_stock/license/getlist',\n            licensed: {},\n            modules: {\n                login: '${ $.loginProvider }'\n            },\n            listens: {\n                '${ $.provider }:data.items': 'handleItemsUpdate',\n                '${ $.loginProvider }:user': 'handleUserUpdate'\n            },\n            imports: {\n                rows: '${ $.provider }:data.items'\n            }\n        },\n\n        /**\n         * Init observable variables\n         * @return {Object}\n         */\n        initObservable: function () {\n            this._super()\n                .observe([\n                    'licensed'\n                ]);\n\n            return this;\n        },\n\n        /**\n         * Updates the licensed data when items data is updated.\n         *\n         * @param {Array} items\n         */\n        handleItemsUpdate: function (items) {\n            var ids = this.getIds(items);\n\n            this.updateLicensed(ids);\n        },\n\n        /**\n         * Updates the licensed data when user data is updated.\n         */\n        handleUserUpdate: function () {\n            var ids = this.getIds(this.rows);\n\n            this.updateLicensed(ids);\n        },\n\n        /**\n         * Set Licensed images data.\n         *\n         * @param {Array} ids\n         */\n        updateLicensed: function (ids) {\n            if (!this.isUserAuthorized() || ids.length === 0) {\n                this.licensed({});\n\n                return;\n            }\n\n            getLicenseStatus(this.getImagesUrl, ids).then(function (licensed) {\n                this.licensed(licensed);\n            }.bind(this));\n        },\n\n        /**\n         * Checks if user is logged in and authorized\n         *\n         * @returns {Boolean}\n         */\n        isUserAuthorized: function () {\n            return !_.isUndefined(this.login()) && this.login().user().isAuthorized;\n        },\n\n        /**\n         * Get all ids from items array\n         *\n         * @param {Array} items\n         * @returns {Number[]}\n         */\n        getIds: function (items) {\n            var ids = [];\n\n            items.forEach(function (record) {\n                ids.push(record.id);\n            });\n\n            return ids;\n        },\n\n        /**\n         * Returns top displacement of overlay according to image height\n         *\n         * @param {Object} record - Data to be preprocessed.\n         * @returns {Object}\n         */\n        getStyles: function (record) {\n            var height = record.styles().height.replace('px', '') - 40;\n\n            return {\n                top: height + 'px'\n            };\n        },\n\n        /**\n         * If overlay should be visible\n         *\n         * @param {Object} row\n         * @returns {Boolean}\n         */\n        isVisible: function (row) {\n            return this.licensed()[row.id];\n        },\n\n        /**\n         * Get overlay label\n         *\n         * @param {Object} row\n         * @returns {String}\n         */\n        getLabel: function (row) {\n            return this.licensed()[row.id] ? 'Licensed' : '';\n        }\n    });\n});\n","Magento_AdobeStockImageAdminUi/js/components/grid/column/image-preview.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine([\n    'jquery',\n    'uiLayout',\n    'Magento_Ui/js/grid/columns/image-preview'\n], function ($, layout, imagePreview) {\n    'use strict';\n\n    return imagePreview.extend({\n        defaults: {\n            downloadImagePreviewUrl: 'adobe_stock/preview/download',\n            licenseAndDownloadUrl: 'adobe_stock/license/license',\n            saveLicensedAndDownloadUrl: 'adobe_stock/license/saveLicensed',\n            confirmationUrl: 'adobe_stock/license/confirmation',\n            relatedImagesUrl: 'adobe_stock/preview/relatedimages',\n            buyCreditsUrl: 'https://stock.adobe.com/',\n            mediaGallerySelector: '.media-gallery-modal:has(#search_adobe_stock)',\n            adobeStockModalSelector: '.adobe-search-images-modal',\n            activeMediaGallerySelector: 'aside.modal-slide.adobe-stock-modal._show',\n            modules: {\n                keywords: '${ $.name }_keywords',\n                related: '${ $.name }_related',\n                actions: '${ $.name }_actions'\n            },\n            viewConfig: [\n                {\n                    component: 'Magento_AdobeStockImageAdminUi/js/components/grid/column/preview/keywords',\n                    name: '${ $.name }_keywords'\n                },\n                {\n                    component: 'Magento_AdobeStockImageAdminUi/js/components/grid/column/preview/related',\n                    name: '${ $.name }_related'\n                },\n                {\n                    component: 'Magento_AdobeStockImageAdminUi/js/components/grid/column/preview/actions',\n                    name: '${ $.name }_actions',\n                    provider: '${ $.provider }',\n                    mediaGallery: '${ $.mediaGalleryComponent }',\n                    mediaGalleryName: '${ $.mediaGalleryName }',\n                    mediaGalleryProvider: '${ $.mediaGalleryProvider }',\n                    mediaGallerySortBy: '${ $.mediaGallerySortBy }',\n                    mediaGallerySearchInput: '${ $.mediaGallerySearchInput }',\n                    mediaGalleryListingFilters: '${ $.mediaGalleryListingFilters }',\n                    getMediaGalleryAsset: '${ $.getMediaGalleryAsset }',\n                    imageEditDetailsUrl: '${ $.imageEditDetailsUrl }',\n                    listingPaging: '${ $.listingPaging }'\n                }\n            ],\n            listens: {\n                '${ $.sortByComponentName }:applied': 'hide'\n            }\n        },\n\n        /**\n         * Initialize the component\n         *\n         * @returns {Object}\n         */\n        initialize: function () {\n            this._super().initView();\n            $(window).on('fileDeleted.enhancedMediaGallery', this.reloadAdobeGrid.bind(this));\n            $(window).on('folderDeleted.enhancedMediaGallery', this.reloadAdobeGrid.bind(this));\n\n            return this;\n        },\n\n        /**\n         * Initialize child components\n         *\n         * @returns {Object}\n         */\n        initView: function () {\n            layout(this.viewConfig);\n\n            return this;\n        },\n\n        /**\n         * Get previous button disabled\n         *\n         * @param {Object} record\n         *\n         * @return {Boolean}\n         */\n        cannotViewPrevious: function (record) {\n            return this.related().cannotViewPrevious(record);\n        },\n\n        /**\n         * Get next button disabled\n         *\n         * @param {Object} record\n         *\n         * @return {Boolean}\n         */\n        cannotViewNext: function (record) {\n            return this.related().cannotViewNext(record);\n        },\n\n        /**\n         * Return active adobe gallery selector.\n         */\n        getAdobeModal: function () {\n            return $(this.activeMediaGallerySelector).find(this.adobeStockModalSelector);\n        },\n\n        /**\n         * @inheritdoc\n         */\n        next: function (record) {\n            if (this.related().selectedTab()) {\n                this.related().nextRelated(record);\n\n                return;\n            }\n            this.keywords().hideAllKeywords();\n            this._super(record);\n        },\n\n        /**\n         * @inheritdoc\n         */\n        prev: function (record) {\n            if (this.related().selectedTab()) {\n                this.related().prevRelated(record);\n\n                return;\n            }\n            this.keywords().hideAllKeywords();\n            this._super(record);\n        },\n\n        /**\n         * @inheritdoc\n         */\n        show: function (record) {\n            this.related().selectedTab(null);\n            this.keywords().hideAllKeywords();\n            this.displayedRecord(record);\n            this._super(record);\n            this.related().loadRelatedImages(record);\n        },\n\n        /**\n         * Show related image data in the preview section\n         *\n         * @param {Object} record\n         */\n        showRelated: function (record) {\n            this.keywords().hideAllKeywords();\n            this.displayedRecord(record);\n            this.updateHeight();\n        },\n\n        /**\n         * Returns attributes to display under the preview image\n         *\n         * @returns {*[]}\n         */\n        getDisplayAttributes: function () {\n            if (!this.displayedRecord()) {\n                return [];\n            }\n\n            return [\n                {\n                    name: 'Dimensions',\n                    value: this.displayedRecord().width + ' x ' + this.displayedRecord().height + ' px'\n                },\n                {\n                    name: 'File type',\n                    value: this.displayedRecord()['content_type'].toUpperCase()\n                },\n                {\n                    name: 'Category',\n                    value: this.displayedRecord().category.name || 'None'\n                },\n                {\n                    name: 'File #',\n                    value: this.displayedRecord().id\n                }\n            ];\n        },\n\n        /**\n         * Reload Adobe grid after deleting image\n         */\n        reloadAdobeGrid: function () {\n            this.actions().source().reload({\n                refresh: true\n            });\n        }\n    });\n});\n","Magento_AdobeStockImageAdminUi/js/components/grid/column/preview/keywords.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine([\n    'uiComponent',\n    'underscore'\n], function (Component, _) {\n    'use strict';\n\n    return Component.extend({\n        defaults: {\n            template: 'Magento_AdobeStockImageAdminUi/grid/column/preview/keywords',\n            chipsProvider: 'componentType = filtersChips, ns = ${ $.ns }',\n            defaultKeywordsLimit: 5,\n            keywordsLimit: 5,\n            canViewMoreKeywords: true,\n            modules: {\n                chips: '${ $.chipsProvider }',\n                preview: '${ $.parentName }.preview'\n            }\n        },\n\n        /**\n         * Init observable variables\n         * @return {Object}\n         */\n        initObservable: function () {\n            this._super()\n                .observe([\n                    'keywordsLimit',\n                    'canViewMoreKeywords'\n                ]);\n\n            return this;\n        },\n\n        /**\n         * Returns keywords to display under the attributes image\n         *\n         * @returns {*[]}\n         */\n        getKeywords: function (record) {\n            return record.keywords;\n        },\n\n        /**\n         * Returns keywords limit to show no of keywords\n         */\n        getKeywordsLimit: function () {\n            return this.keywordsLimit();\n        },\n\n        /**\n         * Show all the related keywords\n         */\n        viewAllKeywords: function (record) {\n            this.keywordsLimit(record.keywords.length);\n            this.canViewMoreKeywords(false);\n            this.preview().updateHeight();\n            this.preview().scrollToPreview();\n        },\n\n        /**\n         * Hide all the related keywords\n         */\n        hideAllKeywords: function () {\n            this.keywordsLimit(this.defaultKeywordsLimit);\n            this.canViewMoreKeywords(true);\n        },\n\n        /**\n         * Drop all filters and initiate search on keyword click event\n         */\n        searchByKeyWord: function (keyword) {\n            _.invoke(this.chips().elems(), 'clear');\n            _.invoke(this.chips().elems(), 'apply', keyword);\n        }\n    });\n});\n","Magento_AdobeStockImageAdminUi/js/components/grid/column/preview/related.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine([\n    'uiComponent',\n    'underscore',\n    'jquery'\n], function (Component, _, $) {\n    'use strict';\n\n    return Component.extend({\n        defaults: {\n            template: 'Magento_AdobeStockImageAdminUi/grid/column/preview/related',\n            filterChipsProvider: 'componentType = filters, ns = ${ $.ns }',\n            filterBookmarksSelector: '.admin__data-grid-action-bookmarks',\n            tabImagesLimit: 4,\n            tabsContainerId: '#adobe-stock-tabs',\n            serieFilterValue: '',\n            modelFilterValue: '',\n            selectedTab: null,\n            loader: false,\n            relatedImages: {\n                series: {},\n                model: {}\n            },\n            statefull: {\n                serieFilterValue: true,\n                modelFilterValue: true\n            },\n            modules: {\n                chips: '${ $.chipsProvider }',\n                filterChips: '${ $.filterChipsProvider }',\n                preview: '${ $.parentName }.preview'\n            },\n            exports: {\n                serieFilterValue: '${ $.provider }:params.filters.serie_id',\n                modelFilterValue: '${ $.provider }:params.filters.model_id'\n            }\n        },\n\n        /**\n         * Initializes related component.\n         */\n        initialize: function () {\n            this._super();\n\n            this.filterChips().updateActive();\n\n            return this;\n        },\n\n        /**\n         * Disable keydown event for related content tabs\n         */\n        disableTabsKeyDownEvent: function () {\n            if ($(this.tabsContainerId + ' li[role=tab]').length === 0) {\n                setTimeout(function () {\n                    this.disableTabsKeyDownEvent();\n                }.bind(this), 100);\n            } else {\n                $(this.tabsContainerId + ' li[role=tab]').off('keydown');\n            }\n        },\n\n        /**\n         * Init observable variables\n         * @return {Object}\n         */\n        initObservable: function () {\n            this._super()\n                .observe([\n                    'serieFilterValue',\n                    'modelFilterValue',\n                    'selectedTab',\n                    'relatedImages',\n                    'loader'\n                ]);\n\n            return this;\n        },\n\n        /**\n         * Check if visible container\n         *\n         * @param {Object} record\n         * @returns boolean\n         */\n        isVisible: function (record) {\n            return this.showSeriesTab(record) && this.showModelTab(record);\n        },\n\n        /**\n         * Get image related image series.s\n         *\n         * @param {Object} record\n         */\n        loadRelatedImages: function (record) {\n            var series = this.getSeries(record),\n                model = this.getModel(record);\n\n            if (series && series.length ||\n                model && model.length\n            ) {\n                return;\n            }\n            $.ajax({\n                type: 'GET',\n                url: this.preview().relatedImagesUrl,\n                dataType: 'json',\n                beforeSend: function () {\n                    this.loader(true);\n                }.bind(this),\n                data: {\n                    'image_id': record.id,\n                    'limit': this.tabImagesLimit\n                }\n            }).done(function (data) {\n                var relatedImages = this.relatedImages();\n\n                this.loader(false);\n                relatedImages.series[record.id] = data.result['same_series'];\n                relatedImages.model[record.id] = data.result['same_model'];\n\n                this.relatedImages(relatedImages);\n                this.preview().updateHeight();\n\n                /* Switch to the model tab if the series tab is hidden */\n                if (relatedImages.series[record.id].length === 0 && relatedImages.model[record.id].length > 0) {\n                    // eslint-disable-next-line jquery-no-input-event-shorthand\n                    $('#adobe-stock-tabs').data().mageTabs.select(1);\n                }\n            }.bind(this));\n        },\n\n        /**\n         * Returns true if the series tab should be show, false otherwise\n         *\n         * @param {Object} record\n         * @returns boolean\n         */\n        showSeriesTab: function (record) {\n            return typeof this.relatedImages().series[record.id] === 'undefined' ||\n                this.relatedImages().series[record.id].length !== 0;\n        },\n\n        /**\n         * Returns true if the model tab should be show, false otherwise\n         *\n         * @param {Object} record\n         * @returns boolean\n         */\n        showModelTab: function (record) {\n            return typeof this.relatedImages().model[record.id] === 'undefined' ||\n                this.relatedImages().model[record.id].length !== 0;\n        },\n\n        /**\n         * Returns series to display under the image\n         *\n         * @param {Object} record\n         * @returns {*[]}\n         */\n        getSeries: function (record) {\n            return this.relatedImages().series[record.id] || [];\n        },\n\n        /**\n         * Check if the number of related series image is greater than 4 or not\n         *\n         * @param {Object} record\n         * @returns boolean\n         */\n        canShowMoreSeriesImages: function (record) {\n            return this.getSeries(record).length >= this.tabImagesLimit;\n        },\n\n        /**\n         * Returns model to display under the image\n         *\n         * @param {Object} record\n         * @returns {*[]}\n         */\n        getModel: function (record) {\n            return this.relatedImages().model[record.id] || [];\n        },\n\n        /**\n         * Check if the number of related model image is greater than 4 or not\n         *\n         * @param {Object} record\n         * @returns boolean\n         */\n        canShowMoreModelImages: function (record) {\n            return this.getModel(record).length >= this.tabImagesLimit;\n        },\n\n        /**\n         * Filter images from serie_id\n         *\n         * @param {Object} record\n         */\n        seeMoreFromSeries: function (record) {\n            if (this.isSerieFilterApplied(record)) {\n                this.scrollToFilter();\n\n                return;\n            }\n            this.serieFilterValue(record.id);\n            this.applyFilter('serie_id', record.id.toString());\n        },\n\n        /**\n         * Filter images from serie_id\n         *\n         * @param {Object} record\n         */\n        seeMoreFromModel: function (record) {\n            if (this.isModelFilterApplied(record)) {\n                this.scrollToFilter();\n\n                return;\n            }\n            this.modelFilterValue(record.id);\n            this.applyFilter('model_id', record.id.toString());\n        },\n\n        /**\n         * Apply series or model id filter and scroll to top of the page\n         *\n         * @param {String} typeId\n         * @param {String} recordId\n         */\n        applyFilter: function (typeId, recordId) {\n            var data = {};\n\n            data[typeId] = recordId;\n\n            this.filterChips().clear();\n            this.filterChips().setData(data, true);\n            this.filterChips().apply();\n\n            this.scrollToFilter();\n        },\n\n        /**\n         * Checks if the filter is applied\n         *\n         * @param {Object} record\n         * @returns {Boolean}\n         */\n        isSerieFilterApplied: function (record) {\n            return this.filterChips().get('applied')['serie_id'] === record.id.toString();\n        },\n\n        /**\n         * Checks if the filter is applied\n         *\n         * @param {Object} record\n         * @returns {Boolean}\n         */\n        isModelFilterApplied: function (record) {\n            return this.filterChips().get('applied')['model_id'] === record.id.toString();\n        },\n\n        /**\n         * Scrolls user window to the filter bookmarks\n         */\n        scrollToFilter: function () {\n            $(this.preview().adobeStockModalSelector + ' ' + this.filterBookmarksSelector).get(0).scrollIntoView({\n                behavior: 'smooth',\n                block: 'center',\n                inline: 'nearest'\n            });\n        },\n\n        /**\n         * Next related image preview\n         *\n         * @param {Object} record\n         */\n        nextRelated: function (record) {\n            var relatedList = this.selectedTab() === 'series' ? this.getSeries(record) : this.getModel(record),\n                nextRelatedIndex = _.findLastIndex(\n                    relatedList,\n                    {\n                        id: this.preview().displayedRecord().id\n                    }\n                ) + 1,\n                nextRelated = relatedList[nextRelatedIndex];\n\n            if (typeof nextRelated === 'undefined') {\n                return;\n            }\n\n            this.switchImagePreviewToRelatedImage(nextRelated);\n        },\n\n        /**\n         * Previous related preview\n         *\n         * @param {Object} record\n         */\n        prevRelated: function (record) {\n            var relatedList = this.selectedTab() === 'series' ? this.getSeries(record) : this.getModel(record),\n                prevRelatedIndex = _.findLastIndex(\n                    relatedList,\n                    {\n                        id: this.preview().displayedRecord().id\n                    }\n                ) - 1,\n                prevRelated = relatedList[prevRelatedIndex];\n\n            if (typeof prevRelated === 'undefined') {\n                return;\n            }\n\n            this.switchImagePreviewToRelatedImage(prevRelated);\n        },\n\n        /**\n         * Get previous button disabled\n         *\n         * @param {Object} record\n         *\n         * @return {Boolean}\n         */\n        cannotViewPrevious: function (record) {\n            var relatedList, prevRelatedIndex, prevRelated;\n\n            if (!this.selectedTab()) {\n                return false;\n            }\n            relatedList = this.selectedTab() === 'series' ? this.getSeries(record) : this.getModel(record);\n            prevRelatedIndex = _.findLastIndex(\n                relatedList,\n                {\n                    id: this.preview().displayedRecord().id\n                }\n            ) - 1;\n            prevRelated = relatedList[prevRelatedIndex];\n\n            return typeof prevRelated === 'undefined';\n        },\n\n        /**\n         * Get next button disabled\n         *\n         * @param {Object} record\n         *\n         * @return {Boolean}\n         */\n        cannotViewNext: function (record) {\n            var relatedList, nextRelatedIndex, nextRelated;\n\n            if (!this.selectedTab()) {\n                return false;\n            }\n            relatedList = this.selectedTab() === 'series' ? this.getSeries(record) : this.getModel(record);\n            nextRelatedIndex = _.findLastIndex(\n                relatedList,\n                {\n                    id: this.preview().displayedRecord().id\n                }\n            ) + 1;\n            nextRelated = relatedList[nextRelatedIndex];\n\n            return typeof nextRelated === 'undefined';\n        },\n\n        /**\n         * Switch image preview to related image\n         *\n         * @param {Object|null} relatedImage\n         */\n        switchImagePreviewToRelatedImage: function (relatedImage) {\n            if (!relatedImage) {\n                this.selectedTab(null);\n\n                return;\n            }\n\n            if (this.preview().displayedRecord().id === relatedImage.id) {\n                return;\n            }\n\n            this.preview().showRelated(relatedImage);\n        },\n\n        /**\n         * Switch image preview to series image\n         *\n         * @param {Object} record\n         */\n        switchImagePreviewToSeriesImage: function (record) {\n            this.selectedTab('series');\n            this.switchImagePreviewToRelatedImage(record);\n        },\n\n        /**\n         * Switch image preview to model image\n         *\n         * @param {Object} record\n         */\n        switchImagePreviewToModelImage: function (record) {\n            this.selectedTab('model');\n            this.switchImagePreviewToRelatedImage(record);\n        }\n    });\n});\n","Magento_AdobeStockImageAdminUi/js/components/grid/column/preview/actions.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine([\n    'uiComponent',\n    'uiRegistry',\n    'jquery',\n    'underscore',\n    'Magento_AdobeStockImageAdminUi/js/action/save',\n    'Magento_AdobeStockImageAdminUi/js/action/savePreview',\n    'Magento_AdobeStockImageAdminUi/js/action/saveLicensed',\n    'Magento_AdobeStockImageAdminUi/js/action/licenseAndSave',\n    'Magento_AdobeStockImageAdminUi/js/action/confirmQuota',\n    'Magento_AdobeStockImageAdminUi/js/media-gallery',\n    'Magento_AdobeStockImageAdminUi/js/confirmation/buyCredits',\n    'Magento_AdobeStockImageAdminUi/js/action/getLicenseStatus',\n    'Magento_Ui/js/modal/alert'\n], function (\n    Component,\n    uiRegistry,\n    $,\n    _,\n    saveAction,\n    savePreviewAction,\n    saveLicensedAction,\n    licenseAndSaveAction,\n    confirmQuotaAction,\n    mediaGallery,\n    buyCreditsConfirmation,\n    getLicenseStatus,\n    uiAlert\n) {\n    'use strict';\n\n    return Component.extend({\n        defaults: {\n            template: 'Magento_AdobeStockImageAdminUi/grid/column/preview/actions',\n            loginProvider: 'name = adobe-login, ns = adobe-login',\n            mediaGallerySelector: '.media-gallery-modal:has(#search_adobe_stock)',\n            adobeStockModalSelector: '.adobe-search-images-modal',\n            downloadImagePreviewUrl: 'adobe_stock/preview/download',\n            licenseAndDownloadUrl: 'adobe_stock/license/license',\n            saveLicensedAndDownloadUrl: 'adobe_stock/license/saveLicensed',\n            buyCreditsUrl: 'https://stock.adobe.com/',\n            messageDelay: 5,\n            mediaGallery: '',\n            imageItems: [],\n            messages: [],\n            listens: {\n                '${ $.provider }:data.items': 'updateActions'\n            },\n            modules: {\n                login: '${ $.loginProvider }',\n                preview: '${ $.parentName }.preview',\n                overlay: '${ $.parentName }.overlay',\n                source: '${ $.provider }',\n                imageDirectory: '${ $.mediaGalleryName }',\n                mediaGallerySortBy: '${ $.mediaGallerySortBy }',\n                mediaGallerySearchInput: '${ $.mediaGallerySearchInput }',\n                mediaGalleryListingFilters: '${ $.mediaGalleryListingFilters }',\n                listingPaging: '${ $.listingPaging }'\n            },\n            imports: {\n                imageItems: '${ $.mediaGalleryProvider }:data.items'\n            }\n        },\n\n        /**\n         * Init observable variables\n         *\n         * @return {Object}\n         */\n        initObservable: function () {\n            this._super()\n                .observe([\n                    'imageItems',\n                    'messages'\n                ]);\n\n            return this;\n        },\n\n        /**\n         * Update displayed record data on data source update\n         */\n        updateActions: function () {\n            var displayedRecord = this.preview().displayedRecord(),\n                updatedDisplayedRecord = this.preview().displayedRecord(),\n                records = this.source().data.items,\n                index;\n\n            if (typeof displayedRecord.id === 'undefined') {\n                return;\n            }\n\n            for (index = 0; index < records.length; index++) {\n                if (records[index].id === displayedRecord.id) {\n                    updatedDisplayedRecord = records[index];\n                    break;\n                }\n            }\n\n            this.preview().displayedRecord(updatedDisplayedRecord);\n        },\n\n        /**\n         * Returns is_downloaded flag as observable for given record\n         *\n         * @returns {observable}\n         */\n        isDownloaded: function () {\n            return this.preview().displayedRecord()['is_downloaded'];\n        },\n\n        /**\n         * Is asset licensed in adobe stock in context of currently logged in account\n         *\n         * @returns {observable}\n         */\n        isLicensed: function () {\n            return this.overlay().licensed()[this.preview().displayedRecord().id] && !this.isLicensedLocally();\n        },\n\n        /**\n         * Is licensed version of asset saved locally\n         *\n         * @returns {observable}\n         */\n        isLicensedLocally: function () {\n            return this.preview().displayedRecord()['is_licensed_locally'];\n        },\n\n        /**\n         * Locate downloaded image in media browser\n         */\n        openInMediaGalleryClick: function () {\n            this.preview().getAdobeModal().trigger('closeModal');\n\n            if (!this.isMediaBrowser()) {\n                this.selectImageInNewMediaGalleryBySearch(this.preview().displayedRecord().id);\n            } else {\n                this.selectDisplayedImageForOldMediaGallery(this.preview().displayedRecord().path);\n            }\n        },\n\n        /**\n         * Return adobe stock asset by adobe id\n         *\n         * @param {String} adobeId\n         */\n        getAssetDetails: function (adobeId) {\n            return $.ajax({\n                url: this.getMediaGalleryAsset,\n                data: {\n                    'adobe_id': adobeId\n                },\n                context: this,\n                showLoader: true\n            });\n        },\n\n        /**\n         * Select image in new media gallery via search input\n         *\n         * @param {String} imageId\n         */\n        selectImageInNewMediaGalleryBySearch: function (imageId) {\n            var path;\n\n            this.mediaGalleryListingFilters().clear();\n            this.getAssetDetails(imageId).then(function (assetDetails) {\n                if (assetDetails.length === 0) {\n                    return;\n                }\n                this.mediaGallerySearchInput().apply(assetDetails.title);\n                path = assetDetails.path;\n                path = path.substring(0, path.lastIndexOf('/'));\n\n                if (path !== '') {\n                    this.imageDirectory().locateNode(path);\n                }\n                this.selectRecordFromMediaGalleryProvider(assetDetails.path);\n            }.bind(this));\n\n        },\n\n        /**\n         * Open recently saved image and go to first page\n         */\n        openNewestImage: function () {\n            this.listingPaging().goFirst();\n            this.mediaGallerySortBy().selectDefaultOption();\n        },\n\n        /**\n         * Selects displayed image in media gallery for old gallery\n         */\n        selectDisplayedImageForOldMediaGallery: function (path) {\n            var image = mediaGallery.locate(path);\n\n            image ? image.trigger('click') : mediaGallery.notLocated();\n        },\n\n        /**\n         * Select record by image file name\n         *\n         * @param {String} path\n         */\n        selectRecordFromMediaGalleryProvider: function (path) {\n            var subscription;\n\n            subscription = this.imageItems.subscribe(function (items) {\n                subscription.dispose();\n                items.each(function (item) {\n                    if (item.path === path) {\n                        this.selectRecord(item);\n\n                        return false;\n                    }\n                }.bind(this));\n            }.bind(this));\n\n            setTimeout(function () {\n                subscription.dispose();\n            }, 1500);\n        },\n\n        /**\n         * Set the record as selected\n         *\n         * @param {Object} record\n         */\n        selectRecord: function (record) {\n            uiRegistry.get('name =' + this.mediaGallery).select(record);\n        },\n\n        /**\n         * Save preview click handler\n         */\n        savePreviewClick: function () {\n            var record = this.preview().displayedRecord();\n\n            savePreviewAction(\n                this.preview().downloadImagePreviewUrl,\n                record.id,\n                record.title,\n                record['content_type'],\n                this.getDestinationDirectoryPath()\n            ).then(function (destinationPath) {\n                this.updateDownloadedDisplayedRecord(destinationPath);\n                this.reloadGrid().done(function () {\n                    this.openInMediaGalleryClick();\n                }.bind(this));\n            }.bind(this)).fail(function (error) {\n                if (error) {\n                    this.showErrorMessage(error);\n                }\n            }.bind(this));\n        },\n\n        /**\n         * Update displayed record after downloading\n         *\n         * @param {String} path\n         */\n        updateDownloadedDisplayedRecord: function (path) {\n            var record = this.preview().displayedRecord();\n\n            record['is_downloaded'] = 1;\n\n            if (record.path === '') {\n                record.path = path;\n            }\n\n            this.preview().displayedRecord(record);\n        },\n\n        /**\n         * Update displayed record after licensing\n         *\n         * @param {String} path\n         */\n        updateLicensedDisplayedRecord: function (path) {\n            var record = this.preview().displayedRecord();\n\n            record['is_downloaded'] = 1;\n\n            if (record.path === '') {\n                record.path = path;\n            }\n\n            record['is_licensed'] = 1;\n            record['is_licensed_locally'] = 1;\n\n            this.preview().displayedRecord(record);\n        },\n\n        /**\n         * Get image destination path\n         *\n         * @param {String} fileName\n         * @param {String} contentType\n         * @returns {String}\n         */\n        getDestinationPath: function (fileName, contentType) {\n            return this.getDestinationDirectoryPath() + '/' + fileName + '.' + this.getImageExtension(contentType);\n        },\n\n        /**\n         * Get destination directory path\n         *\n         * @returns {String}\n         */\n        getDestinationDirectoryPath: function () {\n            var activeNodePath,\n                activeNode;\n\n            if (this.isMediaBrowser()) {\n                activeNode = this.getMageMediaBrowserData().activeNode;\n\n                activeNodePath = _.isUndefined(activeNode.original.path) ? '' : activeNode.original.path;\n            } else {\n                activeNodePath = this.imageDirectory().activeNode() || '';\n            }\n\n            return activeNodePath;\n        },\n\n        /**\n         * Reload grid\n         *\n         * @returns {*}\n         */\n        reloadGrid: function () {\n            var provider,\n                dataStorage;\n\n            if (this.isMediaBrowser()) {\n                return this.getMageMediaBrowserData().reload();\n            }\n\n            provider = uiRegistry.get('index = media_gallery_listing_data_source'),\n                dataStorage = provider.storage();\n\n            dataStorage.clearRequests();\n\n            return provider.reload();\n        },\n\n        /**\n         * Get data for media browser\n         *\n         * @returns {Undefined|Object}\n         */\n        getMageMediaBrowserData: function () {\n            return $(this.preview().mediaGallerySelector).data('mageMediabrowser');\n        },\n\n        /**\n         * Is the media browser used in the content of the grid\n         *\n         * @returns {Boolean}\n         */\n        isMediaBrowser: function () {\n            return typeof this.getMageMediaBrowserData() !== 'undefined';\n        },\n\n        /**\n         * Generate meaningful name image file,\n         * allow only alphanumerics, dashes, and underscores\n         *\n         * @param {String} title\n         * @param {Number} id\n         * @return string\n         */\n        generateImageName: function (title, id) {\n            var fileName = title.substring(0, 32)\n                .replace(/[^a-zA-Z0-9_]/g, '-')\n                .replace(/-{2,}/g, '-')\n                .toLowerCase();\n\n            /* If the filename does not contain latin chars, use ID as a filename */\n            return fileName === '-' ? id : fileName;\n        },\n\n        /**\n         * Get image file extension\n         *\n         * @param {String} contentType\n         * @return string\n         */\n        getImageExtension: function (contentType) {\n            return contentType.match(/[^/]{1,4}$/);\n        },\n\n        /**\n         * Get messages\n         *\n         * @return {Array}\n         */\n        getMessages: function () {\n            return this.messages();\n        },\n\n        /**\n         * License click handler\n         */\n        licenseClick: function () {\n            var record = this.preview().displayedRecord();\n\n            this.licenseProcess(\n                record.id,\n                record.title,\n                record.path,\n                record['content_type'],\n                this.isDownloaded()\n            ).then(function (destinationPath) {\n                this.updateLicensedDisplayedRecord(destinationPath);\n                this.login().getUserQuota();\n                this.reloadGrid().done(function () {\n                    this.openInMediaGalleryClick();\n                }.bind(this));\n            }.bind(this)).fail(function (error) {\n                if (error) {\n                    uiAlert({\n                        content: error\n                    });\n                }\n            });\n        },\n\n        /**\n         * Process of license\n         *\n         * @param {Number} id\n         * @param {String} title\n         * @param {String} path\n         * @param {String} contentType\n         * @param {Boolean} isDownloaded\n         * @return {window.Promise}\n         */\n        licenseProcess: function (id, title, path, contentType, isDownloaded) {\n            var deferred = $.Deferred();\n\n            this.login().login()\n                .then(function () {\n                    getLicenseStatus(\n                        this.overlay().getImagesUrl,\n                        [id]\n                    ).then(function (licensedInfo) {\n                        var isLicensed = licensedInfo[id] || false;\n\n                        if (isLicensed) {\n                            saveLicensedAction(\n                                this.preview().saveLicensedAndDownloadUrl,\n                                id,\n                                title,\n                                path,\n                                contentType,\n                                this.getDestinationDirectoryPath()\n                            ).then(function (destinationPath) {\n                                deferred.resolve(destinationPath);\n                            }).fail(function (error) {\n                                deferred.reject(error);\n                            });\n                        } else {\n                            confirmQuotaAction(this.preview().confirmationUrl, id).then(function (data) {\n                                if (data.canLicense === false) {\n                                    buyCreditsConfirmation(\n                                        this.preview().buyCreditsUrl,\n                                        title,\n                                        data.message\n                                    );\n                                } else {\n                                    licenseAndSaveAction(\n                                        this.preview().licenseAndDownloadUrl,\n                                        id,\n                                        title,\n                                        path,\n                                        contentType,\n                                        isDownloaded,\n                                        data.message,\n                                        this.getDestinationDirectoryPath()\n                                    ).then(function (destinationPath) {\n                                        deferred.resolve(destinationPath);\n                                    }).fail(function (error) {\n                                        deferred.reject(error);\n                                    });\n                                }\n                            }.bind(this)).fail(function (error) {\n                                deferred.reject(error);\n                            });\n                        }\n                    }.bind(this)).fail(function (error) {\n                        deferred.reject(error);\n                    });\n                }.bind(this)).fail(function (error) {\n                deferred.reject(error);\n            });\n\n            return deferred.promise();\n        },\n\n        /**\n         * Save licensed click handler\n         */\n        saveLicensedClick: function () {\n            var record = this.preview().displayedRecord();\n\n            if (!this.login().user().isAuthorized) {\n                return;\n            }\n\n            if (!this.isLicensed()) {\n                return;\n            }\n\n            saveLicensedAction(\n                this.preview().saveLicensedAndDownloadUrl,\n                record.id,\n                record.title,\n                record.path,\n                record['content_type'],\n                this.getDestinationDirectoryPath()\n            ).then(function (destinationPath) {\n                this.updateLicensedDisplayedRecord(destinationPath);\n                this.login().getUserQuota();\n                this.reloadGrid().done(function () {\n                    this.openInMediaGalleryClick();\n                }.bind(this));\n            }.bind(this)).fail(function (error) {\n                if (error) {\n                    uiAlert({\n                        content: error\n                    });\n                }\n            });\n        },\n\n        /**\n         * Returns license button title depending on the existing saved preview\n         *\n         * @returns {String}\n         */\n        getLicenseButtonTitle: function () {\n            return this.isDownloaded() ? $.mage.__('License') : $.mage.__('License and Save');\n        },\n\n        /**\n         * Extracts image name from its path\n         *\n         * @param {String} path\n         * @returns {String}\n         */\n        getImageNameFromPath: function (path) {\n            var filePathArray = path.split('/'),\n                imageIndex = filePathArray.length - 1;\n\n            return filePathArray[imageIndex].substring(0, filePathArray[imageIndex].lastIndexOf('.'));\n        },\n\n        /**\n         * Show error message and schedule cleanup\n         *\n         * @param {String} message\n         */\n        showErrorMessage: function (message) {\n            this.messages.push({\n                code: 'error',\n                messageUnsanitizedHtml: message\n            });\n            this.messagesCleanup();\n        },\n\n        /**\n         * Messages cleanup\n         */\n        messagesCleanup: function () {\n            // eslint-disable-next-line no-unused-vars\n            var timerId;\n\n            // eslint-disable-next-line no-unused-vars\n            timerId = setTimeout(function () {\n                clearTimeout(timerId);\n                this.messages.removeAll();\n            }.bind(this), Number(this.messageDelay) * 1000);\n        }\n    });\n});\n","Magento_AdobeStockImageAdminUi/js/confirmation/license.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'jquery',\n    'Magento_Ui/js/modal/prompt',\n    'text!Magento_AdobeStockImageAdminUi/template/modal/adobe-modal-prompt-content.html'\n], function ($, prompt, adobePromptContentTmpl) {\n    'use strict';\n\n    return function (recordTitle, quotaMessage, isPreviewDownloaded, proposedfileName, fileExtension) {\n        var confirmationContent = $.mage.__('License \"' + recordTitle + '\"'),\n            deferred = $.Deferred(),\n            displayFieldName = !isPreviewDownloaded ? '<b>' + $.mage.__('File Name') + '</b>' : '',\n            content = '<p>' + confirmationContent + '</p><p><b>' + quotaMessage + '</b></p><br>' + displayFieldName,\n            data = {\n                'title': $.mage.__('License Adobe Stock Images?'),\n                'content': content,\n                'visible': !isPreviewDownloaded,\n                'actions': {\n                    /**\n                     * Confirm action\n                     *\n                     * @param {String} fileName\n                     */\n                    confirm: function (fileName) {\n                        deferred.resolve(fileName);\n                    }\n                },\n                'buttons': [{\n                    text: $.mage.__('Cancel'),\n                    class: 'action-secondary action-dismiss',\n\n                    /**\n                     * Close modal\n                     */\n                    click: function () {\n                        this.closeModal();\n                        deferred.reject();\n                    }\n                }, {\n                    text: $.mage.__('Confirm'),\n                    class: 'action-primary action-accept'\n                }]\n\n            };\n\n        prompt({\n            title: data.title,\n            content:  data.content,\n            value: proposedfileName,\n            imageExtension: fileExtension,\n            visible: data.visible,\n            promptContentTmpl: adobePromptContentTmpl,\n            modalClass: 'adobe-stock-save-preview-prompt',\n            validation: true,\n            promptField: '[data-role=\"adobe-stock-image-name-field\"]',\n            validationRules: ['required-entry', 'validate-image-name'],\n            attributesForm: {\n                novalidate: 'novalidate',\n                action: '',\n                onkeydown: 'return event.key != \\'Enter\\';'\n            },\n            attributesField: {\n                name: 'name',\n                'data-validate': '{required:true}',\n                maxlength: '128'\n            },\n            context: this,\n            actions: data.actions,\n            buttons: data.buttons\n        });\n\n        if (!data.visible) {\n            $('.adobe-stock-save-preview-prompt').trigger('focus');\n        }\n\n        return deferred.promise();\n    };\n});\n","Magento_AdobeStockImageAdminUi/js/confirmation/buyCredits.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'jquery',\n    'Magento_Ui/js/modal/confirm'\n], function ($, confirm) {\n    'use strict';\n\n    return function (buyCreditsUrl, recordTitle, quotaMessage) {\n        var confirmationContent = $.mage.__('License \"' + recordTitle + '\"'),\n            content = '<p>' + confirmationContent + '</p><p><b>' + quotaMessage + '</b></p><br>';\n\n        confirm({\n            title: $.mage.__('License Adobe Stock Images?'),\n            content: content,\n            buttons: [{\n                text: $.mage.__('Cancel'),\n                class: 'action-secondary action-dismiss',\n\n                /**\n                 * Close modal\n                 */\n                click: function () {\n                    this.closeModal();\n                }\n            },{\n                text: $.mage.__('Buy Credits'),\n                class: 'action-primary action-accept',\n\n                /**\n                 * Close modal\n                 */\n                click: function () {\n                    window.open(buyCreditsUrl);\n                    this.closeModal();\n                }\n            }]\n        });\n    };\n});\n","Magento_AdobeStockImageAdminUi/js/confirmation/save.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'jquery',\n    'Magento_Ui/js/modal/prompt',\n    'text!Magento_AdobeStockImageAdminUi/template/modal/adobe-modal-prompt-content.html'\n], function ($, prompt, adobePromptContentTmpl) {\n    'use strict';\n\n    return function (proposedfileName, fileExtension) {\n        var deferred = $.Deferred(),\n            data = {\n                'title': $.mage.__('Save Preview'),\n                'content': $.mage.__('File Name'),\n                'visible': true,\n                'actions': {\n                    /**\n                     * Resolve with the specified file name\n                     *\n                     * @param {String} specifiedFileName\n                     */\n                    confirm: function (specifiedFileName) {\n                        deferred.resolve(specifiedFileName);\n                    }\n                },\n                'buttons': [{\n                    text: $.mage.__('Cancel'),\n                    class: 'action-secondary action-dismiss',\n\n                    /**\n                     * Close modal on button click\n                     */\n                    click: function () {\n                        this.closeModal();\n                        deferred.reject();\n                    }\n                }, {\n                    text: $.mage.__('Confirm'),\n                    class: 'action-primary action-accept'\n                }]\n\n            };\n\n        prompt({\n            title: data.title,\n            content:  data.content,\n            value: proposedfileName,\n            imageExtension: fileExtension,\n            visible: data.visible,\n            promptContentTmpl: adobePromptContentTmpl,\n            modalClass: 'adobe-stock-save-preview-prompt',\n            validation: true,\n            promptField: '[data-role=\"adobe-stock-image-name-field\"]',\n            validationRules: ['required-entry', 'validate-image-name'],\n            attributesForm: {\n                novalidate: 'novalidate',\n                action: '',\n                onkeydown: 'return event.key != \\'Enter\\';'\n            },\n            attributesField: {\n                name: 'name',\n                'data-validate': '{required:true}',\n                maxlength: '128'\n            },\n            context: this,\n            actions: data.actions,\n            buttons: data.buttons\n        });\n\n        return deferred.promise();\n    };\n});\n","Magento_AdobeStockImageAdminUi/js/confirmation/saveLicensed.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'jquery',\n    'Magento_Ui/js/modal/prompt',\n    'text!Magento_AdobeStockImageAdminUi/template/modal/adobe-modal-prompt-content.html'\n], function ($, prompt, adobePromptContentTmpl) {\n    'use strict';\n\n    return function (proposedfileName, fileExtension) {\n        var deferred = $.Deferred(),\n            data = {\n                'title': $.mage.__('Save'),\n                'content': $.mage.__('File Name'),\n                'visible': true,\n                'actions': {\n                    /**\n                     * Resolve with the specified file name\n                     *\n                     * @param {String} fileName\n                     */\n                    confirm: function (fileName) {\n                        deferred.resolve(fileName);\n                    }\n                },\n                'buttons': [\n                    {\n                        text: $.mage.__('Cancel'),\n                        class: 'action-secondary action-dismiss',\n\n                        /**\n                         * Close modal on button click\n                         */\n                        click: function () {\n                            this.closeModal();\n                            deferred.reject();\n                        }\n                    },\n                    {\n                        text: $.mage.__('Confirm'),\n                        class: 'action-primary action-accept'\n                    }\n                ]\n            };\n\n        prompt({\n            title: data.title,\n            content:  data.content,\n            value: proposedfileName,\n            imageExtension: fileExtension,\n            visible: data.visible,\n            promptContentTmpl: adobePromptContentTmpl,\n            modalClass: 'adobe-stock-save-preview-prompt',\n            validation: true,\n            promptField: '[data-role=\"adobe-stock-image-name-field\"]',\n            validationRules: ['required-entry', 'validate-image-name'],\n            attributesForm: {\n                novalidate: 'novalidate',\n                action: '',\n                onkeydown: 'return event.key != \\'Enter\\';'\n            },\n            attributesField: {\n                name: 'name',\n                'data-validate': '{required:true}',\n                maxlength: '128'\n            },\n            context: this,\n            actions: data.actions,\n            buttons: data.buttons\n        });\n\n        return deferred.promise();\n    };\n});\n","Magento_AdobeStockImageAdminUi/js/validation/validate-image-name.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'jquery',\n    'mage/translate',\n    'jquery/validate'\n], function ($, $t) {\n    'use strict';\n\n    $.validator.addMethod(\n        'validate-image-name', function (value) {\n            return /^[a-zA-Z0-9\\-\\_]+$/i.test(value);\n\n        }, $t('Please name the file using only letters, numbers, underscores and dashes'));\n});\n","Magento_GroupedProduct/js/grouped-product.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\n/**\n * @api\n */\ndefine([\n    'jquery',\n    'mage/template',\n    'jquery/ui',\n    'Magento_Ui/js/modal/modal',\n    'mage/translate',\n    'mage/adminhtml/grid'\n], function ($, mageTemplate) {\n    'use strict';\n\n    $.widget('mage.groupedProduct', {\n        /**\n         * Create widget\n         * @private\n         */\n        _create: function () {\n            this.$grid = this.element.find('[data-role=grouped-product-grid]');\n            this.$grid.sortable({\n                distance: 8,\n                items: '[data-role=row]',\n                tolerance: 'pointer',\n                cancel: ':input',\n                update: $.proxy(function () {\n                    this.element.trigger('resort');\n                }, this)\n            });\n\n            this.productTmpl = mageTemplate('#group-product-template');\n\n            $.each(\n                this.$grid.data('products'),\n                $.proxy(function (index, product) {\n                    this._add(null, product);\n                }, this)\n            );\n\n            this._on({\n                'add': '_add',\n                'resort': '_resort',\n                'click [data-column=actions] [data-role=delete]': '_remove'\n            });\n\n            this._bindDialog();\n            this._updateGridVisibility();\n        },\n\n        /**\n         * Add product to grouped grid\n         * @param {EventObject} event\n         * @param {Object} product\n         * @private\n         */\n        _add: function (event, product) {\n            var tmpl,\n                productExists;\n\n            productExists = this.$grid.find('[data-role=id]')\n                .filter(function (index, element) {\n                    return $(element).val() == product.id; //eslint-disable-line eqeqeq\n                }).length;\n\n            if (!productExists) {\n                tmpl = this.productTmpl({\n                    data: product\n                });\n\n                $(tmpl).appendTo(this.$grid.find('tbody'));\n            }\n        },\n\n        /**\n         * Remove product\n         * @param {EventObject} event\n         * @private\n         */\n        _remove: function (event) {\n            $(event.target).closest('[data-role=row]').remove();\n            this.element.trigger('resort');\n            this._updateGridVisibility();\n        },\n\n        /**\n         * Resort products\n         * @private\n         */\n        _resort: function () {\n            this.element.find('[data-role=position]').each($.proxy(function (index, element) {\n                $(element).val(index + 1);\n            }, this));\n        },\n\n        /**\n         * Create modal for show product\n         *\n         * @private\n         */\n        _bindDialog: function () {\n            var widget = this,\n                selectedProductList = {},\n                popup = $('[data-role=add-product-dialog]'),\n                gridPopup;\n\n            popup.modal({\n                type: 'slide',\n                innerScroll: true,\n                title: $.mage.__('Add Products to Group'),\n                modalClass: 'grouped',\n\n                /** @inheritdoc */\n                open: function () {\n                    $(this).addClass('admin__scope-old'); // ToDo UI: remove with old styles removal\n                },\n                buttons: [{\n                    id: 'grouped-product-dialog-apply-button',\n                    text: $.mage.__('Add Selected Products'),\n                    'class': 'action-primary action-add',\n\n                    /** @inheritdoc */\n                    click: function () {\n                        $.each(selectedProductList, function (index, product) {\n                            widget._add(null, product);\n                        });\n                        widget._resort();\n                        widget._updateGridVisibility();\n                        popup.modal('closeModal');\n                    }\n                }]\n            });\n\n            popup.on('click', '[data-role=row]', function (event) {\n                var target = $(event.target);\n\n                if (!target.is('input')) {\n                    target.closest('[data-role=row]')\n                        .find('[data-column=entity_ids] input')\n                        .prop('checked', function (element, value) {\n                            return !value;\n                        })\n                        .trigger('change');\n                }\n            });\n\n            popup.on(\n                'change',\n                '[data-role=row] [data-column=entity_ids] input',\n                $.proxy(function (event) {\n                    var element = $(event.target),\n                        product = {};\n\n                    if (element.is(':checked')) {\n                        product.id = element.val();\n                        product.qty = 0;\n                        element.closest('[data-role=row]').find('[data-column]').each(function (index, el) {\n                            let text = $(el).text();\n\n                            product[$(el).data('column')] = text.trim();\n                        });\n                        selectedProductList[product.id] = product;\n                    } else {\n                        delete selectedProductList[element.val()];\n                    }\n                }, this)\n            );\n\n            gridPopup = $(this.options.gridPopup).data('gridObject');\n\n            $('[data-role=add-product]').on('click', function (event) {\n                event.preventDefault();\n                popup.modal('openModal');\n                gridPopup.reload();\n                selectedProductList = {};\n            });\n\n            $('#' + gridPopup.containerId).on('gridajaxsettings', function (event, ajaxSettings) {\n                var ids = widget.$grid.find('[data-role=id]').map(function (index, element) {\n                    return $(element).val();\n                }).toArray();\n\n                ajaxSettings.data.filter = $.extend(ajaxSettings.data.filter || {}, {\n                    'entity_ids': ids\n                });\n            }).on('gridajax', function (event, ajaxRequest) {\n                ajaxRequest.done(function () {\n                    popup.find('[data-role=row] [data-column=entity_ids] input').each(function (index, element) {\n                        var $element = $(element);\n\n                        $element.prop('checked', !!selectedProductList[$element.val()]);\n                    });\n                });\n            });\n        },\n\n        /**\n         * Show or hide message\n         * @private\n         */\n        _updateGridVisibility: function () {\n            var showGrid = this.element.find('[data-role=id]').length > 0;\n\n            this.element.find('.grid-container').toggle(showGrid);\n            this.element.find('.no-products-message').toggle(!showGrid);\n        }\n    });\n\n    return $.mage.groupedProduct;\n});\n","Magento_GroupedProduct/js/grouped-product-grid.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'underscore',\n    'uiRegistry',\n    'Magento_Ui/js/dynamic-rows/dynamic-rows-grid'\n], function (_, registry, dynamicRowsGrid) {\n    'use strict';\n\n    return dynamicRowsGrid.extend({\n\n        /**\n         * Set max element position\n         *\n         * @param {Number} position - element position\n         * @param {Object} elem - instance\n         */\n        setMaxPosition: function (position, elem) {\n\n            if (position || position === 0) {\n                this.checkMaxPosition(position);\n                this.sort(position, elem);\n\n                if (~~position === this.maxPosition && ~~position > this.getDefaultPageBoundary() + 1) {\n                    this.shiftNextPagesPositions(position);\n                }\n            } else {\n                this.maxPosition += 1;\n            }\n        },\n\n        /**\n         * Shift positions for next page elements\n         *\n         * @param {Number} position\n         */\n        shiftNextPagesPositions: function (position) {\n\n            var recordData = this.recordData(),\n                startIndex = ~~this.currentPage() * this.pageSize,\n                offset = position - startIndex + 1,\n                index = startIndex;\n\n            if (~~this.currentPage() === this.pages()) {\n                return false;\n            }\n\n            for (index; index < recordData.length; index++) {\n                recordData[index].position = index + offset;\n            }\n            this.recordData(recordData);\n        },\n\n        /**\n         * Update position for element after position from another page is entered\n         *\n         * @param {Object} data\n         * @param {Object} event\n         */\n        updateGridPosition: function (data, event) {\n            var inputValue = parseInt(event.target.value, 10),\n                recordData = this.recordData(),\n                record,\n                previousValue,\n                updatedRecord;\n\n            record = this.elems().find(function (obj) {\n                return obj.dataScope === data.parentScope;\n            });\n\n            previousValue = this.getCalculatedPosition(record);\n\n            if (isNaN(inputValue) || inputValue < 0 || inputValue === previousValue) {\n                return false;\n            }\n\n            this.elems([]);\n\n            updatedRecord = this.getUpdatedRecordIndex(recordData, record.data().id);\n\n            if (inputValue >= this.recordData().size() - 1) {\n                recordData[updatedRecord].position = this.getGlobalMaxPosition() + 1;\n            } else {\n                recordData.forEach(function (value, index) {\n                    if (~~value.id === ~~record.data().id) {\n                        recordData[index].position = inputValue;\n                    } else if (inputValue > previousValue && index <= inputValue) {\n                        recordData[index].position = index - 1;\n                    } else if (inputValue < previousValue && index >= inputValue) {\n                        recordData[index].position = index + 1;\n                    }\n                });\n            }\n\n            this.reloadGridData(recordData);\n\n        },\n\n        /**\n         * Get updated record index\n         *\n         * @param  {Array} recordData\n         * @param {Number} recordId\n         * @return {Number}\n         */\n        getUpdatedRecordIndex: function (recordData, recordId) {\n            return recordData.map(function (o) {\n                return ~~o.id;\n            }).indexOf(~~recordId);\n        },\n\n        /**\n         *\n         * @param {Array} recordData - to reprocess\n         */\n        reloadGridData: function (recordData) {\n            this.recordData(recordData.sort(function (a, b) {\n                return ~~a.position - ~~b.position;\n            }));\n            this._updateCollection();\n            this.reload();\n        },\n\n        /**\n         * Event handler for \"Send to bottom\" button\n         *\n         * @param {Object} positionObj\n         * @return {Boolean}\n         */\n        sendToBottom: function (positionObj) {\n\n            var objectToUpdate = this.getObjectToUpdate(positionObj),\n                recordData = this.recordData(),\n                updatedRecord;\n\n            if (~~this.currentPage() === this.pages) {\n                objectToUpdate.position = this.maxPosition;\n            } else {\n                this.elems([]);\n                updatedRecord = this.getUpdatedRecordIndex(recordData, objectToUpdate.data().id);\n                recordData[updatedRecord].position = this.getGlobalMaxPosition() + 1;\n                this.reloadGridData(recordData);\n            }\n\n            return false;\n        },\n\n        /**\n         * Event handler for \"Send to top\" button\n         *\n         * @param {Object} positionObj\n         * @return {Boolean}\n         */\n        sendToTop: function (positionObj) {\n            var objectToUpdate = this.getObjectToUpdate(positionObj),\n                recordData = this.recordData(),\n                updatedRecord;\n\n            //isFirst\n            if (~~this.currentPage() === 1) {\n                objectToUpdate.position = 0;\n            } else {\n                this.elems([]);\n                updatedRecord = this.getUpdatedRecordIndex(recordData, objectToUpdate.data().id);\n                recordData.forEach(function (value, index) {\n                    recordData[index].position = index === updatedRecord ? 0 : value.position + 1;\n                });\n                this.reloadGridData(recordData);\n            }\n\n            return false;\n        },\n\n        /**\n         * Get element from grid for update\n         *\n         * @param {Object} object\n         * @return {*}\n         */\n        getObjectToUpdate: function (object) {\n            return this.elems().filter(function (item) {\n                return item.name === object.parentName;\n            })[0];\n        },\n\n        /**\n         * Value function for position input\n         *\n         * @param {Object} data\n         * @return {Number}\n         */\n        getCalculatedPosition: function (data) {\n            return (~~this.currentPage() - 1) * this.pageSize + this.elems().pluck('name').indexOf(data.name);\n        },\n\n        /**\n         * Return Page Boundary\n         *\n         * @return {Number}\n         */\n        getDefaultPageBoundary: function () {\n            return ~~this.currentPage() * this.pageSize - 1;\n        },\n\n        /**\n         * Returns position for last element to be moved after\n         *\n         * @return {Number}\n         */\n        getGlobalMaxPosition: function () {\n            return _.max(this.recordData().map(function (r) {\n                return ~~r.position;\n            }));\n        }\n    });\n});\n","Magento_Integration/js/integration.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\n/**\n * jQuery plugin is added.\n *\n * @api\n */\ndefine([\n    'jquery',\n    'Magento_Ui/js/modal/alert',\n    'jquery/ui',\n    'mage/translate',\n    'Magento_Ui/js/modal/modal'\n], function ($, alert) {\n    'use strict';\n\n    $.widget('mage.integration', {\n        /**\n         * Options common to all instances of this widget.\n         * @type {Object}\n         */\n        options: {\n            /**\n             * URL of the integration grid.\n             * @type {String}\n             */\n            gridUrl: ''\n        },\n\n        /**\n         * Bind event handler for the action when admin clicks \"Save & Activate\" button.\n         * @private\n         */\n        _create: function () {\n            if ($('#save-split-button-activate').length) {\n                // We're on the \"New integration\" page - bind related handler\n                this._form = $('#edit_form');\n                this._form.on('saveAndActivate', $.proxy(this._saveAndActivate, this));\n            }\n        },\n\n        /**\n         * Save new integration, then kick off the activate dialog.\n         * @private\n         */\n        _saveAndActivate: function () {\n            if (this._form.validation && !this._form.validation('isValid')) {\n                return false;\n            }\n\n            $.ajax({\n                url: this._form.prop('action'),\n                type: 'post',\n                data: this._form.serialize(),\n                dataType: 'json',\n                context: this,\n\n                /** @inheritdoc */\n                beforeSend: function () {\n                    $('body').trigger('processStart');\n                },\n\n                /** @inheritdoc */\n                success: function (data) {\n                    var integrationName, that;\n\n                    if (data._redirect) {\n                        window.location.href = data._redirect;\n                    } else if (data.integrationId) {\n                        integrationName = $('#integration_properties_name').val();\n                        window.integration.popup.show($('<span>').attr({\n                            'data-row-dialog': 'permissions',\n                            'data-row-id': data.integrationId,\n                            // We do escaping here instead of the place of actual output because _showPopup()\n                            // actually receives dialog window title from couple of places: from here and from the grid.\n                            // The issue is we always should escape values in the grid, so that value is already\n                            // escaped. To avoid double escaping we do it here instead of the output.\n                            'data-row-name': $('<div>').text(integrationName).html(),\n                            'data-row-is-reauthorize': '0',\n                            'data-row-is-token-exchange': data.isTokenExchange\n                        }));\n                        that = this;\n                        $('#integration-popup-container').on('dialogclose', function () {\n                            $('body').trigger('processStart');\n                            window.location.href = that.options.gridUrl;\n\n                            return false;\n                        });\n                    }\n                },\n\n                /** @inheritdoc */\n                error: function (jqXHR, status, error) {\n                    alert({\n                        content: $.mage.__('Sorry, something went wrong. Please try again later.')\n                    });\n                    window.console && console.log(status + ': ' + error + '\\nResponse text:\\n' + jqXHR.responseText);\n                },\n\n                /** @inheritdoc */\n                complete: function () {\n                    $('body').trigger('processStop');\n                }\n            });\n\n            return true;\n        }\n    });\n\n    /**\n     * @param {*} permissionsDialogUrl\n     * @param {*} tokensDialogUrl\n     * @param {*} tokensExchangeUrl\n     * @param {*} gridUrl\n     * @param {*} successCallbackUrl\n     * @return {Object}\n     * @constructor\n     */\n    window.Integration = function (\n        permissionsDialogUrl,\n        tokensDialogUrl,\n        tokensExchangeUrl,\n        gridUrl,\n        successCallbackUrl\n    ) {\n        var url = {\n            permissions: permissionsDialogUrl,\n            tokens: tokensDialogUrl,\n            tokensExchange: tokensExchangeUrl,\n            grid: gridUrl\n        },\n        IdentityLogin = {\n            win: null,\n            strLocation: null,\n            checker: null,\n            isCalledBack: false,\n            //Info popup dialog. Should be hidden when login window is closed\n            jqInfoDialog: $('#integration-popup-container'),\n            successCallbackUrl: successCallbackUrl,\n            Constants: {\n                /*\n                 This interval is set such that it adjusts to the child window closing timeout of 1000 ms. This will\n                 give the checker function enough time to detect if the successCallback has been invoked\n                 */\n                CHECKER_INTERVAL: 500,\n                //Login screen size plus some buffer\n                WIDTH: 680,\n                HEIGHT: 510,\n                // subtract pixels(30) and width(680) from screen width to move popup from extreme left\n                LEFT: screen.width - 680 - 30,\n                // subtract pixels(300) and height(300) from screen height to move from top\n                TOP: screen.height - 510 - 300\n            },\n\n            /**\n             * @param {*} identityCallbackUrl\n             * @param {*} consumerKey\n             * @param {*} jqInfoDialog\n             */\n            invokePopup: function (identityCallbackUrl, consumerKey, jqInfoDialog) {\n                var param;\n\n                // Callback should be invoked only once. Reset callback flag on subsequent invocations.\n                IdentityLogin.isCalledBack = false;\n                IdentityLogin.jqInfoDialog = jqInfoDialog;\n                param = $.param({\n                    'oauth_consumer_key': consumerKey,\n                    'success_call_back': IdentityLogin.successCallbackUrl\n                });\n                IdentityLogin.win = window.open(identityCallbackUrl + '?' + param, '',\n                    'top=' + IdentityLogin.Constants.TOP +\n                        ', left=' + IdentityLogin.Constants.LEFT +\n                        ', width=' + IdentityLogin.Constants.WIDTH +\n                        ', height=' + IdentityLogin.Constants.HEIGHT + ',scrollbars=no');\n\n                if (IdentityLogin.checker != null) {\n                    //Clear any previous check\n                    clearInterval(IdentityLogin.checker);\n                }\n                //Polling to detect url of the child window.\n                IdentityLogin.checker = setInterval(\n                    IdentityLogin.fnCheckLocation, IdentityLogin.Constants.CHECKER_INTERVAL\n                );\n            },\n\n            /**\n             * Function to check the location of the child popup window.\n             * Once detected if the callback is successful, parent window will be reloaded\n             */\n            fnCheckLocation: function () {\n                if (IdentityLogin.win == null) {\n                    return;\n                }\n                // Check to see if the location has changed.\n                try {\n                    //Is the success callback invoked\n                    if (IdentityLogin.win.closed ||\n                        IdentityLogin.win.location.href == IdentityLogin.successCallbackUrl //eslint-disable-line eqeqeq\n                    ) {\n                        //Stop the polling\n                        clearInterval(IdentityLogin.checker);\n                        $('body').trigger('processStart');\n                        //Check for window closed\n                        window.location.href = url.grid;\n                        IdentityLogin.jqInfoDialog.modal('closeModal');\n                    }\n                } catch (e) {\n                    //squash. In case Window closed without success callback, clear polling\n                    if (IdentityLogin.win.closed) {\n                        IdentityLogin.jqInfoDialog.modal('closeModal');\n                        clearInterval(IdentityLogin.checker);\n                    }\n\n                    return;\n                }\n            }\n        },\n\n        /**\n         * @param {Object} popupWindow\n         * @return {Boolean}\n         */\n        isPopupBlocked = function (popupWindow) {\n            try {\n                popupWindow.focus();\n            } catch (e) {\n                alert({\n                    content: $.mage.__('Popup Blocker is enabled! Please add this site to your exception list.')\n                });\n\n                return true;\n            }\n\n            return false;\n        },\n\n        /**\n         * @param {*} dialog\n         * @param {*} title\n         * @param {*} okButton\n         * @param {*} ajaxUrl\n         * @private\n         */\n        _showPopup = function (dialog, title, okButton, ajaxUrl) {\n            $.ajax({\n                url: ajaxUrl,\n                cache: false,\n                data: {\n                    'form_key': window.FORM_KEY\n                },\n                method: 'GET',\n\n                /** @inheritdoc */\n                beforeSend: function () {\n                    // Show the spinner\n                    $('body').trigger('processStart');\n                },\n\n                /** @inheritdoc */\n                success: function (result) {\n                    var redirect = result._redirect,\n                        identityLinkUrl, consumerKey, popupHtml, popup, resultObj, buttons, dialogProperties;\n\n                    if (redirect) {\n                        window.location.href = redirect;\n\n                        return;\n                    }\n\n                    identityLinkUrl = null;\n                    consumerKey = null;\n                    popupHtml = null;\n                    popup = $('#integration-popup-container');\n\n                    try {\n                        resultObj = typeof result === 'string' ?\n                            JSON.parse(result) :\n                            result;\n\n                        identityLinkUrl = resultObj['identity_link_url'];\n                        consumerKey      = resultObj['oauth_consumer_key'];\n                        popupHtml       = resultObj['popup_content'];\n\n                    } catch (e) {\n                        //This is expected if result is not json. Do nothing.\n                    }\n\n                    if (identityLinkUrl && consumerKey && popupHtml) {\n                        IdentityLogin.invokePopup(identityLinkUrl, consumerKey, popup);\n\n                        if (isPopupBlocked(IdentityLogin.win)) {\n                            return;\n                        }\n                    } else {\n                        popupHtml = result;\n                    }\n\n                    if (popup.length === 0) {\n                        popup = $('<div></div>');\n                    }\n                    popup.html(popupHtml);\n\n                    buttons = [];\n                    dialogProperties = {\n                        title: title,\n                        type: 'slide',\n                        dialogClass: dialog == 'permissions' ? 'integration-dialog' : 'integration-dialog no-close' //eslint-disable-line\n                    };\n\n                    // Add confirmation button to the list of dialog buttons. okButton not set for tokenExchange dialog\n                    if (okButton) {\n                        buttons.push(okButton);\n                    }\n                    // Add button only if its not empty\n                    if (buttons.length > 0) {\n                        dialogProperties.buttons = buttons;\n                    }\n                    popup.modal(dialogProperties);\n                    popup.modal('openModal');\n                },\n\n                /** @inheritdoc */\n                error: function (jqXHR, status, error) {\n                    alert({\n                        content: $.mage.__('Sorry, something went wrong. Please try again later.')\n                    });\n                    window.console && console.log(status + ': ' + error + '\\nResponse text:\\n' + jqXHR.responseText);\n                },\n\n                /** @inheritdoc */\n                complete: function () {\n                    // Hide the spinner\n                    $('body').trigger('processStop');\n                }\n            });\n        };\n\n        return {\n            popup: {\n                /**\n                 * @param {*} ctx\n                 */\n                show: function (ctx) {\n                    var dialog = $(ctx).attr('data-row-dialog'),\n                        isReauthorize = $(ctx).attr('data-row-is-reauthorize'),\n                        isTokenExchange = $(ctx).attr('data-row-is-token-exchange'),\n                        integrationId, ajaxUrl, integrationName, okButton;\n\n                    if (!url.hasOwnProperty(dialog)) {\n                        throw 'Invalid dialog type';\n                    }\n\n                    integrationId = $(ctx).attr('data-row-id');\n\n                    if (!integrationId) {\n                        throw 'Unable to find integration ID';\n                    }\n\n                    // Replace placeholders in URL\n                    ajaxUrl = url[dialog].replace(':id', integrationId).replace(':isReauthorize', isReauthorize);\n\n                    try {\n                        // Get integration name either from current element or from neighbor column\n                        integrationName = $(ctx).attr('data-row-name') ||\n                            $(ctx).parents('tr').find('.col-name').html().trim(); // eslint-disable-line jquery-no-trim\n\n                        if (integrationName.indexOf('<span') > -1) {\n                            // Remove unsecure URL warning from popup window title if it is present\n                            integrationName = integrationName.substring(0, integrationName.indexOf('<span'));\n                        }\n                    } catch (e) {\n                        throw 'Unable to find integration name';\n                    }\n\n                    okButton = {\n                        permissions: {\n                            text: isReauthorize == '1' ? $.mage.__('Reauthorize') : $.mage.__('Allow'), //eslint-disable-line\n                            'class': 'action-primary',\n                            attr: {\n                                'data-row-id': integrationId,\n                                'data-row-name': integrationName,\n                                'data-row-dialog': isTokenExchange == '1' ? 'tokensExchange' : 'tokens', //eslint-disable-line\n                                'data-row-is-reauthorize': isReauthorize,\n                                'data-row-is-token-exchange': isTokenExchange\n                            },\n\n                            /**\n                             * Click.\n                             */\n                            click: function () {\n                                // Find the 'Allow' button and clone - it has all necessary data, but is going to be\n                                // destroyed along with the current dialog\n                                var context = this.modal.find('button.action-primary').clone(true);\n\n                                this.closeModal();\n                                this.modal.remove();\n                                // Make popup out of data we saved from 'Allow' button\n                                window.integration.popup.show(context);\n                            }\n                        },\n                        tokens: {\n                            text: $.mage.__('Done'),\n                            'class': 'action-primary',\n\n                            /**\n                             * Click.\n                             */\n                            click: function () {\n                                // Integration has been activated at the point of generating tokens\n                                window.location.href = url.grid;\n                            }\n                        }\n                    };\n\n                    _showPopup(dialog, integrationName, okButton[dialog], ajaxUrl);\n                }\n            }\n        };\n    };\n\n    return $.mage.integration;\n});\n","js/theme.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine('globalNavigationScroll', [\n    'jquery'\n], function ($) {\n    'use strict';\n\n    var win = $(window),\n        subMenuClass = '.submenu',\n        fixedClassName = '_fixed',\n        menu = $('.menu-wrapper'),\n        content = $('.page-wrapper'),\n        menuItems = $('#nav').children('li'),\n        winHeight,\n        menuHeight = menu.height(),\n        menuScrollMax = 0,\n        submenuHeight = 0,\n        contentHeight,\n        winTop = 0,\n        winTopLast = 0,\n        scrollStep = 0,\n        nextTop = 0;\n\n    /**\n     * Check if menu is fixed\n     * @returns {Boolean}\n     */\n    function isMenuFixed() {\n        return menuHeight < contentHeight && contentHeight > winHeight;\n    }\n\n    /**\n     * Check if class exist than add or do nothing\n     * @param {jQuery} el\n     * @param {String} $class\n     */\n    function checkAddClass(el, $class) {\n        if (!el.hasClass($class)) {\n            el.addClass($class);\n        }\n    }\n\n    /**\n     * Check if class exist than remove or do nothing\n     * @param {jQuery} el\n     * @param {String} $class\n     */\n    function checkRemoveClass(el, $class) {\n        if (el.hasClass($class)) {\n            el.removeClass($class);\n        }\n    }\n\n    /**\n     * Calculate and apply menu position\n     */\n    function positionMenu() {\n\n        //  Spotting positions and heights\n        winHeight = win.height();\n        contentHeight = content.height();\n        winTop = win.scrollTop();\n        scrollStep = winTop - winTopLast;\n\n        if (isMenuFixed()) { // fixed menu cases\n\n            checkAddClass(menu, fixedClassName);\n\n            if (menuHeight > winHeight) { // smart scroll cases\n\n                if (winTop > winTopLast) { //eslint-disable-line max-depth\n\n                    menuScrollMax = menuHeight - winHeight;\n\n                    nextTop < menuScrollMax - scrollStep ?\n                        nextTop += scrollStep : nextTop = menuScrollMax;\n\n                    menu.css('top', -nextTop);\n\n                } else if (winTop <= winTopLast) { // scroll up\n\n                    nextTop > -scrollStep ?\n                        nextTop += scrollStep : nextTop = 0;\n\n                    menu.css('top', -nextTop);\n\n                }\n\n            }\n\n        } else { // static menu cases\n            checkRemoveClass(menu, fixedClassName);\n            menu.css('top', 'auto');\n        }\n\n        //  Save previous window scrollTop\n        winTopLast = winTop;\n\n    }\n\n    positionMenu(); // page start calculation\n\n    //  Change position on scroll\n    win.on('scroll', function () {\n        positionMenu();\n    });\n\n    win.on('resize', function () {\n\n        winHeight = win.height();\n\n        //  Reset position if fixed and out of smart scroll\n        if (menuHeight < contentHeight && menuHeight <= winHeight) {\n            menu.removeAttr('style');\n            menuItems.off();\n        }\n\n    });\n\n    //  Add event to menuItems to check submenu overlap\n    menuItems.on('click', function () {\n\n        var submenu = $(this).children(subMenuClass),\n            delta,\n            logo = $('.logo')[0].offsetHeight;\n\n        submenuHeight = submenu.height();\n\n        if (submenuHeight > menuHeight && menuHeight + logo > winHeight) {\n            menu.height(submenuHeight - logo);\n            delta = -menu.position().top;\n            window.scrollTo(0, 0);\n            positionMenu();\n            window.scrollTo(0, delta);\n            positionMenu();\n            menuHeight = submenuHeight;\n        }\n    });\n\n});\n\ndefine('globalNavigation', [\n    'jquery',\n    'jquery/ui',\n    'globalNavigationScroll'\n], function ($) {\n    'use strict';\n\n    $.widget('mage.globalNavigation', {\n        options: {\n            selectors: {\n                menu: '#nav',\n                currentItem: '._current',\n                topLevelItem: '.level-0',\n                topLevelHref: '> a',\n                subMenu: '> .submenu',\n                closeSubmenuBtn: '[data-role=\"close-submenu\"]'\n            },\n            overlayTmpl: '<div class=\"admin__menu-overlay\"></div>'\n        },\n\n        /** @inheritdoc */\n        _create: function () {\n            var selectors = this.options.selectors;\n\n            this.menu = this.element;\n            this.menuLinks = $(selectors.topLevelHref, selectors.topLevelItem);\n            this.closeActions = $(selectors.closeSubmenuBtn);\n\n            this._initOverlay()\n                ._bind();\n        },\n\n        /**\n         * @return {Object}\n         * @private\n         */\n        _initOverlay: function () {\n            this.overlay = $(this.options.overlayTmpl).appendTo('body').hide(0);\n\n            return this;\n        },\n\n        /**\n         * @private\n         */\n        _bind: function () {\n            var focus = this._focus.bind(this),\n                open = this._open.bind(this),\n                blur = this._blur.bind(this),\n                keyboard = this._keyboard.bind(this);\n\n            this.menuLinks\n                .on('focus', focus)\n                .on('click', open);\n\n            this.menuLinks.last().on('blur', blur);\n\n            this.closeActions.on('keydown', keyboard);\n        },\n\n        /**\n         * Remove active class from current menu item\n         * Turn back active class to current page menu item\n         */\n        _blur: function (e) {\n            var selectors = this.options.selectors,\n                menuItem = $(e.target).closest(selectors.topLevelItem),\n                currentItem = $(selectors.menu).find(selectors.currentItem);\n\n            menuItem.removeClass('_active');\n            currentItem.addClass('_active');\n        },\n\n        /**\n         * Add focus to active menu item\n         */\n        _keyboard: function (e) {\n            var selectors = this.options.selectors,\n                menuItem = $(e.target).closest(selectors.topLevelItem);\n\n            if (e.which === 13) {\n                this._close(e);\n                $(selectors.topLevelHref, menuItem).trigger('focus');\n            }\n        },\n\n        /**\n         * Toggle active state on focus\n         */\n        _focus: function (e) {\n            var selectors = this.options.selectors,\n                menuItem = $(e.target).closest(selectors.topLevelItem);\n\n            menuItem.addClass('_active')\n                .siblings(selectors.topLevelItem)\n                .removeClass('_active');\n        },\n\n        /**\n         * @param {jQuery.Event} e\n         * @private\n         */\n        _closeSubmenu: function (e) {\n            var selectors = this.options.selectors,\n                currentItem = $(selectors.menu).find(selectors.currentItem);\n\n            this._close(e);\n\n            currentItem.addClass('_active');\n        },\n\n        /**\n         * @param {jQuery.Event} e\n         * @private\n         */\n        _open: function (e) {\n            var selectors = this.options.selectors,\n                menuItemSelector = selectors.topLevelItem,\n                menuItem = $(e.target).closest(menuItemSelector),\n                subMenu = $(selectors.subMenu, menuItem),\n                close = this._closeSubmenu.bind(this),\n                closeBtn = subMenu.find(selectors.closeSubmenuBtn);\n\n            if (subMenu.length) {\n                e.preventDefault();\n            }\n            closeBtn.on('click', close);\n\n            if ($(menuItem).hasClass('_show')) {\n                closeBtn.trigger('click');\n            } else {\n                menuItem.addClass('_show')\n                    .siblings(menuItemSelector)\n                    .removeClass('_show');\n                subMenu.attr('aria-expanded', 'true');\n                this.overlay.show(0).on('click', close);\n                this.menuLinks.last().off('blur');\n            }\n        },\n\n        /**\n         * @param {jQuery.Event} e\n         * @private\n         */\n        _close: function (e) {\n            var selectors = this.options.selectors,\n                menuItem = this.menu.find(selectors.topLevelItem + '._show'),\n                subMenu = $(selectors.subMenu, menuItem),\n                closeBtn = subMenu.find(selectors.closeSubmenuBtn),\n                blur = this._blur.bind(this);\n\n            e.preventDefault();\n\n            this.overlay.hide(0).off('click');\n\n            this.menuLinks.last().on('blur', blur);\n\n            closeBtn.off('click');\n\n            subMenu.attr('aria-expanded', 'false');\n\n            menuItem.removeClass('_show _active');\n        }\n    });\n\n    return $.mage.globalNavigation;\n});\n\ndefine('globalSearch', [\n    'jquery',\n    'Magento_Ui/js/lib/key-codes',\n    'jquery-ui-modules/widget'\n], function ($, keyCodes) {\n    'use strict';\n\n    $.widget('mage.globalSearch', {\n        options: {\n            field: '.search-global-field',\n            fieldActiveClass: '_active',\n            input: '#search-global'\n        },\n\n        /** @inheritdoc */\n        _create: function () {\n            this.field = $(this.options.field);\n            this.input = $(this.options.input);\n            this._events();\n        },\n\n        /**\n         * @private\n         */\n        _events: function () {\n            var self = this;\n\n            this.input.on('blur.resetGlobalSearchForm', function () {\n                if (!self.input.val()) {\n                    self.field.removeClass(self.options.fieldActiveClass);\n                }\n            });\n\n            this.input.on('focus.activateGlobalSearchForm', function () {\n                self.field.addClass(self.options.fieldActiveClass);\n            });\n\n            $(document).on('keydown.activateGlobalSearchForm', function (event) {\n                var inputs = [\n                    'input',\n                    'select',\n                    'textarea'\n                ];\n\n                if (keyCodes[event.which] !== 'forwardSlashKey' ||\n                    inputs.indexOf(event.target.tagName.toLowerCase()) !== -1 ||\n                    event.target.isContentEditable\n                ) {\n                    return;\n                }\n\n                event.preventDefault();\n\n                self.input.focus();\n            });\n        }\n    });\n\n    return $.mage.globalSearch;\n});\n\ndefine('modalPopup', [\n    'jquery',\n    'jquery/ui'\n], function ($) {\n    'use strict';\n\n    $.widget('mage.modalPopup', {\n        options: {\n            popup: '.popup',\n            btnDismiss: '[data-dismiss=\"popup\"]',\n            btnHide: '[data-hide=\"popup\"]'\n        },\n\n        /** @inheritdoc */\n        _create: function () {\n            this.fade = this.element;\n            this.popup = $(this.options.popup, this.fade);\n            this.btnDismiss = $(this.options.btnDismiss, this.popup);\n            this.btnHide = $(this.options.btnHide, this.popup);\n\n            this._events();\n        },\n\n        /**\n         * @private\n         */\n        _events: function () {\n            var self = this;\n\n            this.btnDismiss\n                .on('click.dismissModalPopup', function () {\n                    self.fade.remove();\n                });\n\n            this.btnHide\n                .on('click.hideModalPopup', function () {\n                    self.fade.hide();\n                });\n        }\n    });\n\n    return $.mage.modalPopup;\n});\n\ndefine('useDefault', [\n    'jquery',\n    'jquery/ui'\n], function ($) {\n    'use strict';\n\n    $.widget('mage.useDefault', {\n        options: {\n            field: '.field',\n            useDefault: '.use-default',\n            checkbox: '.use-default-control',\n            label: '.use-default-label'\n        },\n\n        /** @inheritdoc */\n        _create: function () {\n            this.el = this.element;\n            this.field = $(this.el).closest(this.options.field);\n            this.useDefault = $(this.options.useDefault, this.field);\n            this.checkbox = $(this.options.checkbox, this.useDefault);\n            this.label = $(this.options.label, this.useDefault);\n            this.origValue = this.el.attr('data-store-label');\n\n            this._events();\n        },\n\n        /**\n         * @private\n         */\n        _events: function () {\n            var self = this;\n\n            this.el.on(\n                    'change.toggleUseDefaultVisibility keyup.toggleUseDefaultVisibility',\n                    $.proxy(this._toggleUseDefaultVisibility, this)\n                ).trigger('change.toggleUseDefaultVisibility');\n\n            this.checkboxon('change.setOrigValue', function () {\n                if ($(this).prop('checked')) {\n                    self.el\n                        .val(self.origValue)\n                        .trigger('change.toggleUseDefaultVisibility');\n\n                    $(this).prop('checked', false);\n                }\n            });\n        },\n\n        /**\n         * @private\n         */\n        _toggleUseDefaultVisibility: function () {\n            var curValue = this.el.val(),\n                origValue = this.origValue;\n\n            this[curValue != origValue ? '_show' : '_hide'](); //eslint-disable-line eqeqeq\n        },\n\n        /**\n         * @private\n         */\n        _show: function () {\n            this.useDefault.show();\n        },\n\n        /**\n         * @private\n         */\n        _hide: function () {\n            this.useDefault.hide();\n        }\n    });\n\n    return $.mage.useDefault;\n});\n\ndefine('loadingPopup', [\n    'jquery',\n    'jquery/ui'\n], function ($) {\n    'use strict';\n\n    $.widget('mage.loadingPopup', {\n        options: {\n            message: 'Please wait...',\n            timeout: 5000,\n            timeoutId: null,\n            callback: null,\n            template: null\n        },\n\n        /** @inheritdoc */\n        _create: function () {\n            this.template =\n                '<div class=\"popup popup-loading\">' +\n                '<div class=\"popup-inner\">' + this.options.message + '</div>' +\n                '</div>';\n\n            this.popup = $(this.template);\n\n            this._show();\n            this._events();\n        },\n\n        /**\n         * @private\n         */\n        _events: function () {\n            var self = this;\n\n            this.element\n                .on('showLoadingPopup', function () {\n                    self._show();\n                })\n                .on('hideLoadingPopup', function () {\n                    self._hide();\n                });\n        },\n\n        /**\n         * @private\n         */\n        _show: function () {\n            var options = this.options,\n                timeout = options.timeout;\n\n            $('body').trigger('processStart');\n\n            if (timeout) {\n                options.timeoutId = setTimeout(this._delayedHide.bind(this), timeout);\n            }\n        },\n\n        /**\n         * @private\n         */\n        _hide: function () {\n            $('body').trigger('processStop');\n        },\n\n        /**\n         * @private\n         */\n        _delayedHide: function () {\n            this._hide();\n\n            this.options.callback && this.options.callback();\n\n            this.options.timeoutId && clearTimeout(this.options.timeoutId);\n        }\n    });\n\n    return $.mage.loadingPopup;\n});\n\ndefine('collapsable', [\n    'jquery',\n    'jquery/ui',\n    'jquery/jquery.tabs'\n], function ($) {\n    'use strict';\n\n    $.widget('mage.collapsable', {\n        options: {\n            parent: null,\n            openedClass: 'opened',\n            wrapper: '.fieldset-wrapper'\n        },\n\n        /** @inheritdoc */\n        _create: function () {\n            this._events();\n        },\n\n        /** @inheritdoc */\n        _events: function () {\n            var self = this;\n\n            this.element\n                .on('show.bs.collapse', function (e) {\n                    var fieldsetWrapper = $(this).closest(self.options.wrapper);\n\n                    fieldsetWrapper.addClass(self.options.openedClass);\n                    e.stopPropagation();\n                })\n                .on('hide.bs.collapse', function (e) {\n                    var fieldsetWrapper = $(this).closest(self.options.wrapper);\n\n                    fieldsetWrapper.removeClass(self.options.openedClass);\n                    e.stopPropagation();\n                });\n        }\n    });\n\n    return $.mage.collapsable;\n});\n\ndefine('js/theme', [\n    'jquery',\n    'mage/smart-keyboard-handler',\n    'collapsable',\n    'domReady!'\n], function ($, keyboardHandler) {\n    'use strict';\n\n    /* @TODO refactor collapsible as widget and avoid logic binding with such a general selectors */\n    $('.collapse').collapsable();\n\n    $.each($('.entry-edit'), function (i, entry) {\n        $('.collapse:first', entry).filter(function () {\n            return $(this).data('collapsed') !== true;\n        }).collapse('show');\n    });\n\n    keyboardHandler.apply();\n});\n","Magento_AdvancedSearch/js/testconnection.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\n/**\n * @api\n */\ndefine([\n    'jquery',\n    'Magento_Ui/js/modal/alert',\n    'jquery/ui'\n], function ($, alert) {\n    'use strict';\n\n    $.widget('mage.testConnection', {\n        options: {\n            url: '',\n            elementId: '',\n            successText: '',\n            failedText: '',\n            fieldMapping: ''\n        },\n\n        /**\n         * Bind handlers to events\n         */\n        _create: function () {\n            this._on({\n                'click': $.proxy(this._connect, this)\n            });\n        },\n\n        /**\n         * Method triggers an AJAX request to check search engine connection\n         * @private\n         */\n        _connect: function () {\n            var result = this.options.failedText,\n                element =  $('#' + this.options.elementId),\n                self = this,\n                params = {},\n                msg = '',\n                fieldToCheck = this.options.fieldToCheck || 'success';\n\n            element.removeClass('success').addClass('fail');\n            $.each(JSON.parse(this.options.fieldMapping), function (key, el) {\n                params[key] = $('#' + el).val();\n            });\n            $.ajax({\n                url: this.options.url,\n                showLoader: true,\n                data: params,\n                headers: this.options.headers || {}\n            }).done(function (response) {\n                if (response[fieldToCheck]) {\n                    element.removeClass('fail').addClass('success');\n                    result = self.options.successText;\n                } else {\n                    msg = response.errorMessage;\n\n                    if (msg) {\n                        alert({\n                            content: msg\n                        });\n                    }\n                }\n            }).always(function () {\n                $('#' + self.options.elementId + '_result').text(result);\n            });\n        }\n    });\n\n    return $.mage.testConnection;\n});\n","Magento_AdminNotification/toolbar_entry.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\n/**\n * @api\n */\ndefine([\n    'jquery',\n    'jquery/ui',\n    'domReady!'\n], function ($) {\n    'use strict';\n\n    /**\n     * Mark notification as read via AJAX call.\n     *\n     * @param {String} notificationId\n     */\n    var markNotificationAsRead = function (notificationId) {\n            var requestUrl = $('.notifications-wrapper .admin__action-dropdown-menu').attr('data-mark-as-read-url');\n\n            $.ajax({\n                url: requestUrl,\n                type: 'POST',\n                dataType: 'json',\n                data: {\n                    id: notificationId\n                },\n                showLoader: false\n            });\n        },\n        notificationCount = $('.notifications-wrapper').attr('data-notification-count'),\n\n        /**\n         * Remove notification from the list.\n         *\n         * @param {jQuery} notificationEntry\n         */\n        removeNotificationFromList = function (notificationEntry) {\n            var notificationIcon, actionElement;\n\n            notificationEntry.remove();\n            notificationCount--;\n            $('.notifications-wrapper').attr('data-notification-count', notificationCount);\n\n            if (notificationCount == 0) {// eslint-disable-line eqeqeq\n                // Change appearance of the bubble and its behavior when the last notification is removed\n                $('.notifications-wrapper .admin__action-dropdown-menu').remove();\n                notificationIcon = $('.notifications-wrapper .notifications-icon');\n                notificationIcon.removeAttr('data-toggle');\n                notificationIcon.off('click.dropdown');\n                $('.notifications-action .notifications-counter').text('').hide();\n            } else {\n                // Change top counter only for allowable range\n                if (notificationCount <= 99) {\n                    $('.notifications-action .notifications-counter').text(notificationCount);\n                }\n                $('.notifications-entry-last .notifications-counter').text(notificationCount);\n                // Modify caption of the 'See All' link\n                actionElement = $('.notifications-wrapper .admin__action-dropdown-menu .last .action-more');\n                actionElement.text(actionElement.text().replace(/\\d+/, notificationCount));\n            }\n        },\n\n        /**\n         * Show notification details.\n         *\n         * @param {jQuery} notificationEntry\n         */\n        showNotificationDetails = function (notificationEntry) {\n            var notificationDescription = notificationEntry.find('.notifications-entry-description'),\n                notificationDescriptionEnd = notificationEntry.find('.notifications-entry-description-end');\n\n            if (notificationDescriptionEnd.length > 0) {\n                notificationDescriptionEnd.addClass('_show');\n            }\n\n            if (notificationDescription.hasClass('_cutted')) {\n                notificationDescription.removeClass('_cutted');\n            }\n        };\n\n    // Show notification description when corresponding item is clicked\n    $('.notifications-wrapper .admin__action-dropdown-menu .notifications-entry').on(\n        'click.showNotification',\n        function (event) {\n            // hide notification dropdown\n            $('.notifications-wrapper .notifications-icon').trigger('click.dropdown');\n\n            showNotificationDetails($(this));\n            event.stopPropagation();\n        }\n    );\n\n    // Remove corresponding notification from the list and mark it as read\n    $('.notifications-close').on('click.removeNotification', function (event) {\n        var notificationEntry = $(this).closest('.notifications-entry'),\n            notificationId = notificationEntry.attr('data-notification-id');\n\n        markNotificationAsRead(notificationId);\n        removeNotificationFromList(notificationEntry);\n\n        // Checking for last unread notification to hide dropdown\n        if (notificationCount == 0) {// eslint-disable-line eqeqeq\n            $('.notifications-wrapper').removeClass('active')\n                .find('.notifications-action')\n                .removeAttr('data-toggle')\n                .off('click.dropdown');\n        }\n        event.stopPropagation();\n    });\n\n    // Hide notifications bubble\n    if (notificationCount == 0) {// eslint-disable-line eqeqeq\n        $('.notifications-action .notifications-counter').hide();\n    } else {\n        $('.notifications-action .notifications-counter').show();\n    }\n});\n","Magento_AdminNotification/js/grid/listing.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\n/**\n * @api\n */\ndefine([\n    'Magento_Ui/js/grid/listing',\n    'Magento_Ui/js/lib/spinner',\n    'jquery'\n], function (Listing, loader, $) {\n    'use strict';\n\n    return Listing.extend({\n        defaults: {\n            imports: {\n                totalRecords: '${ $.provider }:data.totalRecords'\n            },\n            selectors: {\n                collapsible: '.message-system-collapsible',\n                messages: '.message-system'\n            }\n        },\n\n        /** @inheritdoc */\n        initObservable: function () {\n            this._super()\n                .track({\n                    totalRecords: 0\n                });\n\n            return this;\n        },\n\n        /** @inheritdoc */\n        showLoader: function () {\n            if (!this.source.firstLoad) {\n                this.fixLoaderHeight();\n                this._super();\n            }\n        },\n\n        /**\n         * Calculates loader height\n         *\n         * @param {Boolean} [closed]\n         */\n        fixLoaderHeight: function (closed) {\n            var $messagesBlock = $(this.selectors.messages),\n                $collapsibleBlock = $(this.selectors.collapsible),\n                resultHeight = 0;\n\n            if ($messagesBlock.length) {\n                resultHeight += $messagesBlock.outerHeight();\n            }\n\n            if ($collapsibleBlock.length && $collapsibleBlock.is(':visible') && !closed) {\n                resultHeight += $collapsibleBlock.outerHeight();\n            }\n\n            loader.get(this.name).height(resultHeight);\n        }\n    });\n});\n","Magento_AdminNotification/js/grid/columns/message.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\n/**\n * @api\n */\ndefine([\n    'Magento_Ui/js/grid/columns/column',\n    'underscore'\n], function (Column, _) {\n    'use strict';\n\n    return Column.extend({\n        defaults: {\n            bodyTmpl: 'Magento_AdminNotification/grid/cells/message',\n            messageIndex: 'text',\n            fieldClass: {\n                message: true,\n                'message-warning': false,\n                'message-progress': false,\n                'message-success': false,\n                'message-error': false\n            },\n            statusMap: {\n                0: 'info',\n                1: 'progress',\n                2: 'success',\n                3: 'error'\n            }\n        },\n\n        /** @inheritdoc */\n        getLabel: function (record) {\n            return record[this.messageIndex];\n        },\n\n        /**\n         * Proxy to getLabel function with UnsanitizedHtml suffix\n         *\n         * @param {Object} record\n         * @returns {String}\n         */\n        getLabelUnsanitizedHtml: function (record) {\n            return this.getLabel(record);\n        },\n\n        /** @inheritdoc */\n        getFieldClass: function ($row) {\n            var status = this.statusMap[$row.status] || 'warning',\n                result = {};\n\n            result['message-' + status] = true;\n            result = _.extend({}, this.fieldClass, result);\n\n            return result;\n        }\n    });\n});\n","Magento_AdminNotification/js/system/messages/popup.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'jquery',\n    'Magento_Ui/js/modal/modal'\n], function ($, modal) {\n    'use strict';\n\n    return function (data, element) {\n\n        if (modal.modal) {\n            modal.modal.html($(element).html());\n        } else {\n            modal.modal = $(element).modal({\n                modalClass: data.class,\n                type: 'popup',\n                buttons: []\n            });\n        }\n\n        modal.modal.modal('openModal');\n    };\n});\n","Magento_AdminNotification/system/notification.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\n/**\n * @api\n */\ndefine([\n    'jquery',\n    'mage/template',\n    'jquery/ui',\n    'Magento_Ui/js/modal/modal'\n], function ($, mageTemplate) {\n    'use strict';\n\n    $.widget('mage.systemMessageDialog', $.mage.modal, {\n        options: {\n            modalClass: 'modal-system-messages',\n            systemMessageTemplate:\n                '<% _.each(data.items, function(item) { %>' +\n                    '<li class=\"message message-warning' +\n                        '<% if (item.severity == 1) { %>error<% } else { %>warning<% } %>\">' +\n                        '<%= item.text %>' +\n                    '</li>' +\n                '<% }); %>'\n        },\n\n        /** @inheritdoc */\n        _create: function () {\n            this.options.title = $('#message-system-all').attr('title');\n            this._super();\n        },\n\n        /** @inheritdoc */\n        openModal: function (severity) {\n            var superMethod = $.proxy(this._super, this);\n\n            $.ajax({\n                url: this.options.ajaxUrl,\n                type: 'GET',\n                data: {\n                    severity: severity\n                }\n            }).done($.proxy(function (data) {\n                var tmpl = mageTemplate(this.options.systemMessageTemplate, {\n                    data: {\n                        items: data\n                    }\n                });\n\n                tmpl = $(tmpl);\n\n                this.element.html(\n                    $('<ul></ul>', {\n                        'class': 'message-system-list'\n                    }).append(tmpl)\n                ).trigger('contentUpdated');\n\n                superMethod();\n            }, this));\n\n            return this;\n        },\n\n        /** @inheritdoc */\n        closeModal: function () {\n            this._super();\n        }\n    });\n\n    $(function () {\n        $('#system_messages .message-system-short .error').on('click', function () {\n            $('#message-system-all').systemMessageDialog('openModal', 1);\n        });\n\n        $('#system_messages .message-system-short .warning').on('click', function () {\n            $('#message-system-all').systemMessageDialog('openModal', 2);\n        });\n    });\n\n    return $.mage.systemMessageDialog;\n});\n","Magento_InventorySalesAdminUi/js/product/grid/cell/salable-quantity.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine([\n    'Magento_Ui/js/grid/columns/column'\n], function (Column) {\n    'use strict';\n\n    return Column.extend({\n        defaults: {\n            bodyTmpl: 'Magento_InventorySalesAdminUi/product/grid/cell/salable-quantity.html'\n        },\n\n        /**\n         * Get salable quantity data (stock name and salable qty)\n         *\n         * @param {Object} record - Record object\n         * @returns {Array} Result array\n         */\n        getSalableQuantityData: function (record) {\n            return record[this.index] ? record[this.index] : [];\n        }\n    });\n});\n","Magento_InventorySalesAdminUi/js/stock/grid/cell/sales-channels.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine([\n    'Magento_Ui/js/grid/columns/column',\n    'underscore'\n], function (Column, _) {\n    'use strict';\n\n    return Column.extend({\n        defaults: {\n            bodyTmpl: 'Magento_InventorySalesAdminUi/stock/grid/cell/sales-channel-cell.html'\n        },\n\n        /**\n         * Get sales channels grouped by type\n         *\n         * @param {Object} record - Record object\n         * @returns {Array} Result array\n         */\n        getSalesChannelsGroupedByType: function (record) {\n            var result = [];\n\n            _.each(record[this.index], function (channels, type) {\n                result.push({\n                    type: type,\n                    channels: channels\n                });\n            });\n\n            return result;\n        }\n    });\n});\n","Magento_UrlRewrite/js/url-rewrite-validation.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'jquery',\n    'mage/backend/form',\n    'mage/backend/validation'\n], function ($) {\n    'use strict';\n\n    return function (data, element) {\n\n        $(element).form().validation({\n            validationUrl: data.url\n        });\n    };\n});\n","Magento_Sales/order/giftoptions_tooltip.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'prototype'\n], function () {\n    'use strict';\n\n    var GiftOptionsTooltip = Class.create();\n\n    GiftOptionsTooltip.prototype = {\n        _tooltipLines: [],\n        _tooltipWindow: null,\n        _tooltipWindowContent: null,\n        _targetLinks: [],\n        _eventMouseOver: null,\n        _eventMouseOut: null,\n        _styleOptions: null,\n        _tooltipContentLoaderFunction: null,\n\n        /**\n         * Initialize tooltip object\n         */\n        initialize: function () {\n            var options = Object.extend({\n                'delta_x': 30,\n                'delta_y': 0,\n                zindex: 1000\n            });\n\n            this._styleOptions = options;\n            this._eventMouseOver = this.showTooltip.bindAsEventListener(this);\n            this._eventMouseOut = this.hideTooltip.bindAsEventListener(this);\n        },\n\n        /**\n         * Set gift options tooltip window\n         *\n         * @param {String} windowId\n         * @param {String} contentId\n         *\n         * @return boolean success\n         */\n        setTooltipWindow: function (windowId, contentId) {\n            if (!$(windowId) || !$(contentId)) {\n                return false;\n            }\n            this._tooltipWindow = $(windowId);\n            this._tooltipWindowContent = $(contentId);\n            $(document.body).insert({\n                bottom: this._tooltipWindow\n            });\n            this.hideTooltip();\n\n            return true;\n        },\n\n        /**\n         * Add tooltip to specified link\n         *\n         * @param {String} linkId\n         * @param {String} itemId - identifier of the item related to link\n         *\n         * @return boolean success\n         */\n        addTargetLink: function (linkId, itemId) {\n            if ($(linkId)) {\n                this._targetLinks[linkId] = [];\n                this._targetLinks[linkId].object = $(linkId);\n                this._targetLinks[linkId].itemId = itemId;\n                this._registerEvents(this._targetLinks[linkId].object);\n\n                return true;\n            }\n\n            return false;\n        },\n\n        /**\n         * Detach event listeners from target links when tooltip is destroyed\n         */\n        destroy: function () {\n            var linkId;\n\n            for (linkId in this._targetLinks) { //eslint-disable-line guard-for-in\n                Event.stopObserving(this._targetLinks[linkId].object, 'mouseover', this._eventMouseOver);\n                Event.stopObserving(this._targetLinks[linkId].object, 'mouseout', this._eventMouseOut);\n            }\n        },\n\n        /**\n         *  Register event listeners\n         *\n         *  @param {HTMLElement} element\n         */\n        _registerEvents: function (element) {\n            Event.observe(element, 'mouseover', this._eventMouseOver);\n            Event.observe(element, 'mouseout', this._eventMouseOut);\n        },\n\n        /**\n         * Move tooltip to mouse position\n         *\n         * @param {Prototype.Event} event\n         */\n        _moveTooltip: function (event) {\n            var mouseX, mouseY;\n\n            Event.stop(event);\n            mouseX = Event.pointerX(event);\n            mouseY = Event.pointerY(event);\n\n            this.setStyles(mouseX, mouseY);\n        },\n\n        /**\n         * Show tooltip\n         *\n         * @param {Object} event\n         *\n         * @return boolean success\n         */\n        showTooltip: function (event) {\n            var link, itemId, tooltipContent;\n\n            Event.stop(event);\n\n            if (this._tooltipWindow) {\n                link = Event.element(event);\n                itemId = this._targetLinks[link.id].itemId;\n                tooltipContent = '';\n\n                if (Object.isFunction(this._tooltipContentLoaderFunction)) {\n                    tooltipContent = this._tooltipContentLoaderFunction(itemId);\n                }\n\n                if (tooltipContent != '') { //eslint-disable-line eqeqeq\n                    this._updateTooltipWindowContent(tooltipContent);\n                    this._moveTooltip(event);\n                    new Element.show(this._tooltipWindow);\n\n                    return true;\n                }\n            }\n\n            return false;\n        },\n\n        /**\n         * Set tooltip window styles\n         *\n         * @param {Number} x\n         * @param {Number} y\n         */\n        setStyles: function (x, y) {\n            Element.setStyle(this._tooltipWindow, {\n                position: 'absolute',\n                top: y + this._styleOptions['delta_y'] + 'px',\n                left: x + this._styleOptions['delta_x'] + 'px',\n                zindex: this._styleOptions.zindex\n            });\n        },\n\n        /**\n         * Hide tooltip\n         */\n        hideTooltip: function () {\n            if (this._tooltipWindow) {\n                new Element.hide(this._tooltipWindow);\n            }\n        },\n\n        /**\n         * Set gift options tooltip content loader function\n         * This function should accept at least one parameter that will serve as an item ID\n         *\n         * @param {Function} loaderFunction - loader function\n         */\n        setTooltipContentLoaderFunction: function (loaderFunction) {\n            this._tooltipContentLoaderFunction = loaderFunction;\n        },\n\n        /**\n         * Update tooltip window content\n         *\n         * @param {String} content\n         */\n        _updateTooltipWindowContent: function (content) {\n            this._tooltipWindowContent.update(content);\n        }\n    };\n\n    window.giftOptionsTooltip = new GiftOptionsTooltip();\n});\n","Magento_Sales/order/create/form.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\n/* global AdminOrder */\ndefine([\n    'jquery',\n    'Magento_Sales/order/create/scripts'\n], function (jQuery) {\n    'use strict';\n\n    var $el = jQuery('#edit_form'),\n        config,\n        baseUrl,\n        order,\n        payment;\n\n    if (!$el.length || !$el.data('order-config')) {\n        return;\n    }\n\n    config = $el.data('order-config');\n    baseUrl = $el.data('load-base-url');\n\n    order = new AdminOrder(config);\n    order.setLoadBaseUrl(baseUrl);\n\n    payment = {\n        switchMethod: order.switchPaymentMethod.bind(order)\n    };\n\n    window.order = order;\n    window.payment = payment;\n});\n","Magento_Sales/order/create/scripts.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\n define([\n    'jquery',\n    'Magento_Ui/js/modal/confirm',\n    'Magento_Ui/js/modal/alert',\n    'mage/template',\n    'text!Magento_Sales/templates/order/create/shipping/reload.html',\n    'text!Magento_Sales/templates/order/create/payment/reload.html',\n    'mage/translate',\n    'prototype',\n    'Magento_Catalog/catalog/product/composite/configure',\n    'Magento_Ui/js/lib/view/utils/async'\n], function (jQuery, confirm, alert, template, shippingTemplate, paymentTemplate) {\n\n    window.AdminOrder = new Class.create();\n\n    AdminOrder.prototype = {\n        initialize: function (data) {\n            if (!data) data = {};\n            this.loadBaseUrl = false;\n            this.customerId = data.customer_id ? data.customer_id : false;\n            this.storeId = data.store_id ? data.store_id : false;\n            this.quoteId = data['quote_id'] ? data['quote_id'] : false;\n            this.currencyId = false;\n            this.currencySymbol = data.currency_symbol ? data.currency_symbol : '';\n            this.addresses = data.addresses ? data.addresses : $H({});\n            this.shippingAsBilling = data.shippingAsBilling ? data.shippingAsBilling : false;\n            this.gridProducts = $H({});\n            this.gridProductsGift = $H({});\n            this.billingAddressContainer = '';\n            this.shippingAddressContainer = '';\n            this.isShippingMethodReseted = data.shipping_method_reseted ? data.shipping_method_reseted : false;\n            this.overlayData = $H({});\n            this.giftMessageDataChanged = false;\n            this.productConfigureAddFields = {};\n            this.productPriceBase = {};\n            this.collectElementsValue = true;\n            this.isOnlyVirtualProduct = false;\n            this.excludedPaymentMethods = [];\n            this.summarizePrice = true;\n            this.selectAddressEvent = false;\n            this.shippingTemplate = template(shippingTemplate, {\n                data: {\n                    title: jQuery.mage.__('Shipping Method'),\n                    linkText: jQuery.mage.__('Get shipping methods and rates')\n                }\n            });\n            this.paymentTemplate = template(paymentTemplate, {\n                data: {\n                    title: jQuery.mage.__('Payment Method'),\n                    linkText: jQuery.mage.__('Get available payment methods')\n                }\n            });\n\n            jQuery.async('#order-items', (function () {\n                this.dataArea = new OrderFormArea('data', $(this.getAreaId('data')), this);\n                this.itemsArea = Object.extend(new OrderFormArea('items', $(this.getAreaId('items')), this), {\n                    addControlButton: function (button) {\n                        var controlButtonArea = $(this.node).select('.actions')[0];\n                        if (typeof controlButtonArea != 'undefined') {\n                            var buttons = controlButtonArea.childElements();\n                            for (var i = 0; i < buttons.length; i++) {\n                                if (buttons[i].innerHTML.include(button.getLabel())) {\n                                    return;\n                                }\n                            }\n                            button.insertIn(controlButtonArea, 'top');\n                        }\n                    }\n                });\n\n                var searchButtonId = 'add_products',\n                    searchButton = new ControlButton(jQuery.mage.__('Add Products'), searchButtonId),\n                    searchAreaId = this.getAreaId('search');\n                searchButton.onClick = function () {\n                    $(searchAreaId).show();\n                    var el = this;\n                    window.setTimeout(function () {\n                        el.remove();\n                    }, 10);\n                };\n\n                jQuery.async('#order-items .admin__page-section-title', (function () {\n                    this.dataArea.onLoad = this.dataArea.onLoad.wrap(function (proceed) {\n                        proceed();\n                        this._parent.itemsArea.setNode($(this._parent.getAreaId('items')));\n                        this._parent.itemsArea.onLoad();\n                    });\n\n                    this.itemsArea.onLoad = this.itemsArea.onLoad.wrap(function (proceed) {\n                        proceed();\n                        if ($(searchAreaId) && !jQuery('#' + searchAreaId).is(':visible') && !$(searchButtonId)) {\n                            this.addControlButton(searchButton);\n                        }\n                    });\n                    this.areasLoaded();\n                    this.itemsArea.onLoad();\n\n                }).bind(this));\n\n            }).bind(this));\n\n            jQuery('#edit_form')\n                .on('submitOrder', function () {\n                    jQuery(this).trigger('realOrder');\n                })\n                .on('realOrder', this._realSubmit.bind(this));\n        },\n\n        areasLoaded: function () {\n        },\n\n        itemsLoaded: function () {\n        },\n\n        dataLoaded: function () {\n            this.dataShow();\n        },\n\n        setLoadBaseUrl: function (url) {\n            this.loadBaseUrl = url;\n        },\n\n        setAddresses: function (addresses) {\n            this.addresses = addresses;\n        },\n\n        addExcludedPaymentMethod: function (method) {\n            this.excludedPaymentMethods.push(method);\n        },\n\n        setCustomerId: function (id) {\n            this.customerId = id;\n            this.loadArea('header', true);\n            $(this.getAreaId('header')).callback = 'setCustomerAfter';\n            $('back_order_top_button').hide();\n            $('reset_order_top_button').show();\n        },\n\n        setCustomerAfter: function () {\n            this.customerSelectorHide();\n            if (this.storeId) {\n                $(this.getAreaId('data')).callback = 'dataLoaded';\n                this.loadArea(['data'], true);\n            } else {\n                this.storeSelectorShow();\n            }\n        },\n\n        setStoreId: function (id) {\n            this.storeId = id;\n            this.storeSelectorHide();\n            this.sidebarShow();\n            //this.loadArea(['header', 'sidebar','data'], true);\n            this.dataShow();\n            this.loadArea(\n                ['header', 'data'],\n                true,\n                null,\n                function () {\n                    location.reload();\n                }\n            );\n        },\n\n        setCurrencyId: function (id) {\n            this.currencyId = id;\n            //this.loadArea(['sidebar', 'data'], true);\n            this.loadArea(['data'], true);\n        },\n\n        setCurrencySymbol: function (symbol) {\n            this.currencySymbol = symbol;\n        },\n\n        selectAddress: function (el, container) {\n            var id = el.value;\n            if (id.length == 0) {\n                id = '0';\n            }\n\n            this.selectAddressEvent = true;\n            if (this.addresses[id]) {\n                this.fillAddressFields(container, this.addresses[id]);\n            } else {\n                this.fillAddressFields(container, {});\n            }\n            this.selectAddressEvent = false;\n\n            let data = this.serializeData(container).toObject();\n            data[el.name] = id;\n\n            this.resetPaymentMethod();\n            if (this.isShippingField(container) && !this.isShippingMethodReseted) {\n                this.resetShippingMethod(data);\n            } else {\n                this.saveData(data);\n            }\n        },\n\n        /**\n         * Checks if the field belongs to the shipping address.\n         *\n         * @param {String} fieldId\n         * @return {Boolean}\n         */\n        isShippingField: function (fieldId) {\n            if (this.shippingAsBilling) {\n                return fieldId.include('billing');\n            }\n\n            return fieldId.include('shipping');\n        },\n\n        /**\n         * Checks if the field belongs to the billing address.\n         *\n         * @param {String} fieldId\n         * @return {Boolean}\n         */\n        isBillingField: function (fieldId) {\n            return fieldId.include('billing');\n        },\n\n        /**\n         * Binds events on container form fields.\n         *\n         * @param {String} container\n         */\n        bindAddressFields: function (container) {\n            var fields = $(container).select('input', 'select', 'textarea'),\n                i;\n\n            for (i = 0; i < fields.length; i++) {\n                jQuery(fields[i]).change(this.changeAddressField.bind(this));\n            }\n        },\n\n        /**\n         * Triggers on each form's element changes.\n         *\n         * @param {Event} event\n         */\n        changeAddressField: function (event) {\n            var field = Event.element(event),\n                re = /[^\\[]*\\[([^\\]]*)_address\\]\\[([^\\]]*)\\](\\[(\\d)\\])?/,\n                matchRes = field.name.match(re),\n                type,\n                name,\n                data,\n                resetShipping = false;\n\n            if (!matchRes) {\n                return;\n            }\n\n            type = matchRes[1];\n            name = matchRes[2];\n\n            if (this.isBillingField(field.id)) {\n                data = this.serializeData(this.billingAddressContainer);\n            } else {\n                data = this.serializeData(this.shippingAddressContainer);\n            }\n            data = data.toObject();\n\n            if (type === 'billing' && this.shippingAsBilling) {\n                this.syncAddressField(this.shippingAddressContainer, field.name, field);\n                resetShipping = true;\n            }\n\n            if (type === 'shipping' && !this.shippingAsBilling) {\n                resetShipping = true;\n            }\n\n            if (resetShipping) {\n                data['reset_shipping'] = true;\n            }\n\n            if (name !== 'customer_address_id' && this.selectAddressEvent === false) {\n                if (this.shippingAsBilling) {\n                    $('order-shipping_address_customer_address_id').value = '';\n                }\n\n                $('order-' + type + '_address_customer_address_id').value = '';\n            }\n\n            data['order[' + type + '_address][customer_address_id]'] = null;\n            data['shipping_as_billing'] = +this.shippingAsBilling;\n\n            if (name === 'customer_address_id') {\n                data['order[' + type + '_address][customer_address_id]'] =\n                    $('order-' + type + '_address_customer_address_id').value;\n            }\n\n            if (name === 'country_id' && this.selectAddressEvent === false) {\n                $('order-' + type + '_address_customer_address_id').value = '';\n            }\n\n            this.resetPaymentMethod();\n\n            if (data['reset_shipping']) {\n                this.resetShippingMethod();\n            } else {\n                this.saveData(data);\n\n                if (name === 'country_id' || name === 'customer_address_id') {\n                    this.loadArea(['shipping_method', 'billing_method', 'totals', 'items'], true, data);\n                }\n            }\n        },\n\n        /**\n         * Set address container form field value.\n         *\n         * @param {String} container - container ID\n         * @param {String} fieldName - form field name\n         * @param {*} fieldValue - form field value\n         */\n        syncAddressField: function (container, fieldName, fieldValue) {\n            var syncName;\n\n            if (this.isBillingField(fieldName)) {\n                syncName = fieldName.replace('billing', 'shipping');\n            }\n\n            $(container).select('[name=\"' + syncName + '\"]').each(function (element) {\n                if (~['input', 'textarea', 'select'].indexOf(element.tagName.toLowerCase())) {\n                    if (element.type === \"checkbox\") {\n                        element.checked = fieldValue.checked;\n                    } else {\n                        element.value = fieldValue.value;\n                    }\n                }\n            });\n        },\n\n        fillAddressFields: function (container, data) {\n            var regionIdElem = false;\n            var regionIdElemValue = false;\n\n            var fields = $(container).select('input', 'select', 'textarea');\n            var re = /[^\\[]*\\[[^\\]]*\\]\\[([^\\]]*)\\](\\[(\\d)\\])?/;\n            for (var i = 0; i < fields.length; i++) {\n                // skip input type file @Security error code: 1000\n                if (fields[i].tagName.toLowerCase() == 'input' && fields[i].type.toLowerCase() == 'file') {\n                    continue;\n                }\n                var matchRes = fields[i].name.match(re);\n                if (matchRes === null) {\n                    continue;\n                }\n                var name = matchRes[1];\n                var index = matchRes[3];\n\n                if (index) {\n                    // multiply line\n                    if (data[name]) {\n                        var values = data[name].split(\"\\n\");\n                        fields[i].value = values[index] ? values[index] : '';\n                    } else {\n                        fields[i].value = '';\n                    }\n                } else if (fields[i].tagName.toLowerCase() == 'select' && fields[i].multiple) {\n                    // multiselect\n                    if (data[name]) {\n                        values = [''];\n                        if (Object.isString(data[name])) {\n                            values = data[name].split(',');\n                        } else if (Object.isArray(data[name])) {\n                            values = data[name];\n                        }\n                        fields[i].setValue(values);\n                    }\n                } else {\n                    fields[i].setValue(data[name] ? data[name] : '');\n                }\n\n                if (fields[i].changeUpdater) {\n                    fields[i].changeUpdater();\n                }\n\n                if (name == 'region' && data['region_id'] && !data['region']) {\n                    fields[i].value = data['region_id'];\n                }\n\n                jQuery(fields[i]).trigger('change');\n            }\n        },\n\n        disableShippingAddress: function (flag) {\n            this.shippingAsBilling = flag;\n            if ($('order-shipping_address_customer_address_id')) {\n                $('order-shipping_address_customer_address_id').disabled = flag;\n            }\n            if ($(this.shippingAddressContainer)) {\n                var dataFields = $(this.shippingAddressContainer).select('input', 'select', 'textarea');\n                for (var i = 0; i < dataFields.length; i++) {\n                    dataFields[i].disabled = flag;\n\n                    if (this.isOnlyVirtualProduct) {\n                        dataFields[i].setValue('');\n                    }\n                }\n                var buttons = $(this.shippingAddressContainer).select('button');\n                // Add corresponding class to buttons while disabling them\n                for (i = 0; i < buttons.length; i++) {\n                    buttons[i].disabled = flag;\n                    if (flag) {\n                        buttons[i].addClassName('disabled');\n                    } else {\n                        buttons[i].removeClassName('disabled');\n                    }\n                }\n            }\n        },\n\n        /**\n         * Equals shipping and billing addresses.\n         *\n         * @param {Boolean} flag\n         */\n        setShippingAsBilling: function (flag) {\n            var data,\n                areasToLoad = ['billing_method', 'shipping_address', 'shipping_method', 'totals', 'giftmessage'];\n\n            this.disableShippingAddress(flag);\n            data = this.serializeData(flag ? this.billingAddressContainer : this.shippingAddressContainer);\n            data = data.toObject();\n            data['shipping_as_billing'] = flag ? 1 : 0;\n            data['reset_shipping'] = 1;\n            // set customer_address_id to null for shipping address in order to treat it as new from backend\n            // Checkbox(Same As Billing Address) uncheck event\n            data['order[shipping_address][customer_address_id]'] = null;\n            this.loadArea(areasToLoad, true, data);\n        },\n\n        /**\n         * Replace shipping method area.\n         */\n        resetShippingMethod: function () {\n            if (!this.isOnlyVirtualProduct) {\n                $(this.getAreaId('shipping_method')).update(this.shippingTemplate);\n            }\n        },\n\n        /**\n         * Replace payment method area.\n         */\n        resetPaymentMethod: function () {\n            $(this.getAreaId('billing_method')).update(this.paymentTemplate);\n        },\n\n        /**\n         * Loads shipping options according to address data.\n         *\n         * @return {Boolean}\n         */\n        loadShippingRates: function () {\n            var addressContainer = this.shippingAsBilling ?\n                'billingAddressContainer' :\n                'shippingAddressContainer',\n                data = this.serializeData(this[addressContainer]).toObject();\n\n            data['collect_shipping_rates'] = 1;\n            this.isShippingMethodReseted = false;\n            this.loadArea(['shipping_method', 'totals'], true, data);\n\n            return false;\n        },\n\n        setShippingMethod: function (method) {\n            var data = {};\n\n            data['order[shipping_method]'] = method;\n            this.loadArea([\n                'shipping_method',\n                'totals',\n                'billing_method'\n            ], true, data);\n        },\n\n        /**\n         * Updates available payment\n         * methods list according to order data.\n         *\n         * @return boolean\n         */\n        loadPaymentMethods: function () {\n            var data = this.serializeData(this.billingAddressContainer).toObject();\n\n            this.loadArea(['billing_method', 'totals'], true, data);\n\n            return false;\n        },\n\n        switchPaymentMethod: function(method){\n            if (this.paymentMethod !== method) {\n                jQuery('#edit_form')\n                    .off('submitOrder')\n                    .on('submitOrder', function(){\n                        jQuery(this).trigger('realOrder');\n                    });\n            }\n            jQuery('#edit_form').trigger('changePaymentMethod', [method]);\n            this.setPaymentMethod(method);\n            var data = {};\n            data['order[payment_method]'] = method;\n            this.loadArea(['card_validation'], true, data);\n        },\n\n        setPaymentMethod: function (method) {\n            if (this.paymentMethod && $('payment_form_' + this.paymentMethod)) {\n                var form = 'payment_form_' + this.paymentMethod;\n                [form + '_before', form, form + '_after'].each(function (el) {\n                    var block = $(el);\n                    if (block) {\n                        block.hide();\n                        block.select('input', 'select', 'textarea').each(function (field) {\n                            field.disabled = true;\n                        });\n                    }\n                });\n            }\n\n            if (!this.paymentMethod || method) {\n                $('order-billing_method_form').select('input', 'select', 'textarea').each(function (elem) {\n                    if (elem.type != 'radio') elem.disabled = true;\n                })\n            }\n\n            if ($('payment_form_' + method)) {\n                jQuery('#' + this.getAreaId('billing_method')).trigger('contentUpdated');\n                this.paymentMethod = method;\n                var form = 'payment_form_' + method;\n                [form + '_before', form, form + '_after'].each(function (el) {\n                    var block = $(el);\n                    if (block) {\n                        block.show();\n                        block.select('input', 'select', 'textarea').each(function (field) {\n                            field.disabled = false;\n                            if (!el.include('_before') && !el.include('_after') && !field.bindChange) {\n                                field.bindChange = true;\n                                field.paymentContainer = form;\n                                field.method = method;\n                                field.observe('change', this.changePaymentData.bind(this))\n                            }\n                        }, this);\n                    }\n                }, this);\n            }\n        },\n\n        changePaymentData: function (event) {\n            var elem = Event.element(event);\n            if (elem && elem.method) {\n                var data = this.getPaymentData(elem.method);\n                if (data) {\n                    this.loadArea(['card_validation'], true, data);\n                } else {\n                    return;\n                }\n            }\n        },\n\n        getPaymentData: function (currentMethod) {\n            if (typeof (currentMethod) == 'undefined') {\n                if (this.paymentMethod) {\n                    currentMethod = this.paymentMethod;\n                } else {\n                    return false;\n                }\n            }\n            if (this.isPaymentValidationAvailable() == false) {\n                return false;\n            }\n            var data = {};\n            var fields = $('payment_form_' + currentMethod).select('input', 'select');\n            for (var i = 0; i < fields.length; i++) {\n                data[fields[i].name] = fields[i].getValue();\n            }\n            if ((typeof data['payment[cc_type]']) != 'undefined' && (!data['payment[cc_type]'] || !data['payment[cc_number]'])) {\n                return false;\n            }\n            return data;\n        },\n\n        applyCoupon: function (code) {\n            this.loadArea(['items', 'shipping_method', 'totals', 'billing_method'], true, {\n                'order[coupon][code]': code,\n                'order[coupon][append]': code,\n                reset_shipping: true\n            });\n            this.orderItemChanged = false;\n            jQuery('html, body').animate({\n                scrollTop: 0\n            });\n        },\n\n        removeCoupon: function (code) {\n            this.loadArea(['items', 'shipping_method', 'totals', 'billing_method'], true, {\n                'order[coupon][code]': '',\n                'order[coupon][remove]': code,\n                reset_shipping: true\n            });\n            this.orderItemChanged = false;\n            jQuery('html, body').animate({\n                scrollTop: 0\n            });\n        },\n\n        addProduct: function (id) {\n            this.loadArea(['items', 'shipping_method', 'totals', 'billing_method'], true, {\n                add_product: id,\n                reset_shipping: true\n            });\n        },\n\n        removeQuoteItem: function (id) {\n            this.loadArea(['items', 'shipping_method', 'totals', 'billing_method'], true,\n                {remove_item: id, from: 'quote', reset_shipping: true});\n        },\n\n        moveQuoteItem: function (id, to) {\n            this.loadArea(['sidebar_' + to, 'items', 'shipping_method', 'totals', 'billing_method'], this.getAreaId('items'),\n                {move_item: id, to: to, reset_shipping: true});\n        },\n\n        productGridShow: function (buttonElement) {\n            this.productGridShowButton = buttonElement;\n            Element.hide(buttonElement);\n            this.showArea('search');\n        },\n\n        productGridRowInit: function (grid, row) {\n            var checkbox = $(row).select('.checkbox')[0];\n            var inputs = $(row).select('.input-text');\n            if (checkbox && inputs.length > 0) {\n                checkbox.inputElements = inputs;\n                for (var i = 0; i < inputs.length; i++) {\n                    var input = inputs[i];\n                    input.checkboxElement = checkbox;\n\n                    var product = this.gridProducts.get(checkbox.value);\n                    if (product) {\n                        var defaultValue = product[input.name];\n                        if (defaultValue) {\n                            if (input.name == 'giftmessage') {\n                                input.checked = true;\n                            } else {\n                                input.value = defaultValue;\n                            }\n                        }\n                    }\n\n                    input.disabled = !checkbox.checked || input.hasClassName('input-inactive');\n\n                    Event.observe(input, 'keyup', this.productGridRowInputChange.bind(this));\n                    Event.observe(input, 'change', this.productGridRowInputChange.bind(this));\n                }\n            }\n        },\n\n        productGridRowInputChange: function (event) {\n            var element = Event.element(event);\n            if (element && element.checkboxElement && element.checkboxElement.checked) {\n                if (element.name != 'giftmessage' || element.checked) {\n                    this.gridProducts.get(element.checkboxElement.value)[element.name] = element.value;\n                } else if (element.name == 'giftmessage' && this.gridProducts.get(element.checkboxElement.value)[element.name]) {\n                    delete (this.gridProducts.get(element.checkboxElement.value)[element.name]);\n                }\n            }\n        },\n\n        productGridRowClick: function (grid, event) {\n            var trElement = Event.findElement(event, 'tr');\n            var qtyElement = trElement.select('input[name=\"qty\"]')[0];\n            var eventElement = Event.element(event);\n\n            if (eventElement.tagName === 'LABEL'\n                && trElement.querySelector('#' + eventElement.htmlFor)\n                && trElement.querySelector('#' + eventElement.htmlFor).type === 'checkbox'\n            ) {\n                event.stopPropagation();\n                trElement.querySelector('#' + eventElement.htmlFor).trigger('click');\n                return;\n            }\n\n            var isInputCheckbox = (eventElement.tagName === 'INPUT' && eventElement.type === 'checkbox');\n            var isInputQty = grid.targetElement && grid.targetElement.tagName === 'INPUT' && grid.targetElement.name === 'qty';\n            if (trElement && !isInputQty) {\n                var checkbox = Element.select(trElement, 'input[type=\"checkbox\"]')[0];\n                var confLink = Element.select(trElement, 'a')[0];\n                var priceColl = Element.select(trElement, '.price')[0];\n                if (checkbox) {\n                    // processing non composite product\n                    if (confLink.readAttribute('disabled')) {\n                        var checked = isInputCheckbox ? checkbox.checked : !checkbox.checked;\n                        grid.setCheckboxChecked(checkbox, checked);\n                        // processing composite product\n                    } else if (isInputCheckbox && !checkbox.checked) {\n                        grid.setCheckboxChecked(checkbox, false);\n                        // processing composite product\n                    } else if (!isInputCheckbox || (isInputCheckbox && checkbox.checked)) {\n                        var listType = confLink.readAttribute('list_type');\n                        var productId = confLink.readAttribute('product_id');\n                        if (typeof this.productPriceBase[productId] == 'undefined') {\n                            var priceBase = priceColl.innerHTML.match(/.*?([\\d,]+\\.?\\d*)/);\n                            if (!priceBase) {\n                                this.productPriceBase[productId] = 0;\n                            } else {\n                                this.productPriceBase[productId] = parseFloat(priceBase[1].replace(/,/g, ''));\n                            }\n                        }\n                        productConfigure.setConfirmCallback(listType, function () {\n                            // sync qty of popup and qty of grid\n                            var confirmedCurrentQty = productConfigure.getCurrentConfirmedQtyElement();\n                            if (qtyElement && confirmedCurrentQty && !isNaN(confirmedCurrentQty.value)) {\n                                qtyElement.value = confirmedCurrentQty.value;\n                            }\n                            // calc and set product price\n                            var productPrice = this._calcProductPrice();\n                            if (this._isSummarizePrice()) {\n                                productPrice += this.productPriceBase[productId];\n                            }\n                            productPrice = parseFloat(Math.round(productPrice + \"e+2\") + \"e-2\");\n                            priceColl.innerHTML = this.currencySymbol + productPrice.toFixed(2);\n                            // and set checkbox checked\n                            grid.setCheckboxChecked(checkbox, true);\n                        }.bind(this));\n                        productConfigure.setCancelCallback(listType, function () {\n                            if (!$(productConfigure.confirmedCurrentId) || !$(productConfigure.confirmedCurrentId).innerHTML) {\n                                grid.setCheckboxChecked(checkbox, false);\n                            }\n                        });\n                        productConfigure.setShowWindowCallback(listType, function () {\n                            // sync qty of grid and qty of popup\n                            var formCurrentQty = productConfigure.getCurrentFormQtyElement();\n                            if (formCurrentQty && qtyElement && !isNaN(qtyElement.value)) {\n                                formCurrentQty.value = qtyElement.value;\n                            }\n                        }.bind(this));\n                        productConfigure.showItemConfiguration(listType, productId);\n                    }\n                }\n            }\n        },\n\n        /**\n         * Is need to summarize price\n         */\n        _isSummarizePrice: function (elm) {\n            if (elm && elm.hasAttribute('summarizePrice')) {\n                this.summarizePrice = parseInt(elm.readAttribute('summarizePrice'));\n            }\n            return this.summarizePrice;\n        },\n        /**\n         * Calc product price through its options\n         */\n        _calcProductPrice: function () {\n            var productPrice = 0;\n            var getPriceFields = function (elms) {\n                var productPrice = 0;\n                var getPrice = function (elm) {\n                    var optQty = 1;\n                    if (elm.hasAttribute('qtyId')) {\n                        if (!$(elm.getAttribute('qtyId')).value) {\n                            return 0;\n                        } else {\n                            optQty = parseFloat($(elm.getAttribute('qtyId')).value);\n                        }\n                    }\n                    if (elm.hasAttribute('price') && !elm.disabled) {\n                        return parseFloat(elm.readAttribute('price')) * optQty;\n                    }\n                    return 0;\n                };\n                for (var i = 0; i < elms.length; i++) {\n                    if (elms[i].type == 'select-one' || elms[i].type == 'select-multiple') {\n                        for (var ii = 0; ii < elms[i].options.length; ii++) {\n                            if (elms[i].options[ii].selected) {\n                                if (this._isSummarizePrice(elms[i].options[ii])) {\n                                    productPrice += getPrice(elms[i].options[ii]);\n                                } else {\n                                    productPrice = getPrice(elms[i].options[ii]);\n                                }\n                            }\n                        }\n                    } else if (((elms[i].type == 'checkbox' || elms[i].type == 'radio') && elms[i].checked)\n                        || ((elms[i].type == 'file' || elms[i].type == 'text' || elms[i].type == 'textarea' || elms[i].type == 'hidden')\n                            && Form.Element.getValue(elms[i]))\n                    ) {\n                        if (this._isSummarizePrice(elms[i])) {\n                            productPrice += getPrice(elms[i]);\n                        } else {\n                            productPrice = getPrice(elms[i]);\n                        }\n                    }\n                }\n                return productPrice;\n            }.bind(this);\n            productPrice += getPriceFields($(productConfigure.confirmedCurrentId).getElementsByTagName('input'));\n            productPrice += getPriceFields($(productConfigure.confirmedCurrentId).getElementsByTagName('select'));\n            productPrice += getPriceFields($(productConfigure.confirmedCurrentId).getElementsByTagName('textarea'));\n            return productPrice;\n        },\n\n        productGridCheckboxCheck: function (grid, element, checked) {\n            if (checked) {\n                if (element.inputElements) {\n                    this.gridProducts.set(element.value, {});\n                    var product = this.gridProducts.get(element.value);\n                    for (var i = 0; i < element.inputElements.length; i++) {\n                        var input = element.inputElements[i];\n                        if (!input.hasClassName('input-inactive')) {\n                            input.disabled = false;\n                            if (input.name == 'qty' && !input.value) {\n                                input.value = 1;\n                            }\n                        }\n\n                        if (input.checked || input.name != 'giftmessage') {\n                            product[input.name] = input.value;\n                        } else if (product[input.name]) {\n                            delete (product[input.name]);\n                        }\n                    }\n                }\n            } else {\n                if (element.inputElements) {\n                    for (var i = 0; i < element.inputElements.length; i++) {\n                        element.inputElements[i].disabled = true;\n                    }\n                }\n                this.gridProducts.unset(element.value);\n            }\n            grid.reloadParams = {'products[]': this.gridProducts.keys()};\n        },\n\n        productGridFilterKeyPress: function (grid, event) {\n            var returnKey = parseInt(Event.KEY_RETURN || 13, 10);\n\n            if (event.keyCode === returnKey) {\n                if (typeof event.stopPropagation === 'function') {\n                    event.stopPropagation();\n                }\n\n                if (typeof event.preventDefault === 'function') {\n                    event.preventDefault();\n                }\n            }\n        },\n\n        /**\n         * Submit configured products to quote\n         */\n        productGridAddSelected: function () {\n            if (this.productGridShowButton) Element.show(this.productGridShowButton);\n            var area = ['search', 'items', 'shipping_method', 'totals', 'giftmessage', 'billing_method'];\n            // prepare additional fields and filtered items of products\n            var fieldsPrepare = {};\n            var itemsFilter = [];\n            var products = this.gridProducts.toObject();\n            for (var productId in products) {\n                itemsFilter.push(productId);\n                var paramKey = 'item[' + productId + ']';\n                for (var productParamKey in products[productId]) {\n                    paramKey += '[' + productParamKey + ']';\n                    fieldsPrepare[paramKey] = products[productId][productParamKey];\n                }\n            }\n            this.productConfigureSubmit('product_to_add', area, fieldsPrepare, itemsFilter);\n            productConfigure.clean('quote_items');\n            this.hideArea('search');\n            this.gridProducts = $H({});\n        },\n\n        selectCustomer: function (grid, event) {\n            var element = Event.findElement(event, 'tr');\n            if (element.title) {\n                this.setCustomerId(element.title);\n            }\n        },\n\n        customerSelectorHide: function () {\n            this.hideArea('customer-selector');\n        },\n\n        customerSelectorShow: function () {\n            this.showArea('customer-selector');\n        },\n\n        storeSelectorHide: function () {\n            this.hideArea('store-selector');\n        },\n\n        storeSelectorShow: function () {\n            this.showArea('store-selector');\n        },\n\n        dataHide: function () {\n            this.hideArea('data');\n        },\n\n        dataShow: function () {\n            if ($('submit_order_top_button')) {\n                $('submit_order_top_button').show();\n            }\n            this.showArea('data');\n        },\n\n        clearShoppingCart: function (confirmMessage) {\n            var self = this;\n\n            confirm({\n                content: confirmMessage,\n                actions: {\n                    confirm: function () {\n                        self.collectElementsValue = false;\n                        order.sidebarApplyChanges({'sidebar[empty_customer_cart]': 1});\n                        self.collectElementsValue = true;\n                    }\n                }\n            });\n        },\n\n        sidebarApplyChanges: function (auxiliaryParams) {\n            if ($(this.getAreaId('sidebar'))) {\n                var data = {};\n                if (this.collectElementsValue) {\n                    var elems = $(this.getAreaId('sidebar')).select('input');\n                    for (var i = 0; i < elems.length; i++) {\n                        if (elems[i].getValue()) {\n                            data[elems[i].name] = elems[i].getValue();\n                        }\n                    }\n                }\n                if (auxiliaryParams instanceof Object) {\n                    for (var paramName in auxiliaryParams) {\n                        data[paramName] = String(auxiliaryParams[paramName]);\n                    }\n                }\n                data.reset_shipping = true;\n                this.loadArea(['sidebar', 'items', 'shipping_method', 'billing_method', 'totals', 'giftmessage'], true, data);\n            }\n        },\n\n        sidebarHide: function () {\n            if (this.storeId === false && $('page:left') && $('page:container')) {\n                $('page:left').hide();\n                $('page:container').removeClassName('container');\n                $('page:container').addClassName('container-collapsed');\n            }\n        },\n\n        sidebarShow: function () {\n            if ($('page:left') && $('page:container')) {\n                $('page:left').show();\n                $('page:container').removeClassName('container-collapsed');\n                $('page:container').addClassName('container');\n            }\n        },\n\n        /**\n         * Show configuration of product and add handlers on submit form\n         *\n         * @param productId\n         */\n        sidebarConfigureProduct: function (listType, productId, itemId) {\n            // create additional fields\n            var params = {},\n                isWishlist = !!itemId;\n            params.reset_shipping = true;\n            params.add_product = productId;\n            this.prepareParams(params);\n            for (var i in params) {\n                if (params[i] === null) {\n                    unset(params[i]);\n                } else if (typeof (params[i]) == 'boolean') {\n                    params[i] = params[i] ? 1 : 0;\n                }\n            }\n            var fields = [];\n            for (var name in params) {\n                fields.push(new Element('input', {type: 'hidden', name: name, value: params[name]}));\n            }\n            // add additional fields before triggered submit\n            productConfigure.setBeforeSubmitCallback(listType, function () {\n                productConfigure.addFields(fields);\n            }.bind(this));\n            // response handler\n            productConfigure.setOnLoadIFrameCallback(listType, function (response) {\n                var areas = ['items', 'shipping_method', 'billing_method', 'totals', 'giftmessage'];\n\n                if (!response.ok) {\n                    return;\n                }\n                if (isWishlist) {\n                    this.removeSidebarItem(itemId, 'wishlist').done(function () {\n                        this.loadArea(areas, true);\n                    }.bind(this));\n                } else {\n                    this.loadArea(areas, true);\n                }\n            }.bind(this));\n            // show item configuration\n            itemId = itemId ? itemId : productId;\n            productConfigure.showItemConfiguration(listType, itemId);\n            return false;\n        },\n\n        removeSidebarItem: function (id, from) {\n            return this.loadArea(['sidebar_' + from], 'sidebar_data_' + from, {\n                remove_item: id,\n                from: from\n            });\n        },\n\n        itemsUpdate: function () {\n            var area = ['sidebar', 'items', 'shipping_method', 'billing_method', 'totals', 'giftmessage'];\n            // prepare additional fields\n            var fieldsPrepare = {update_items: 1};\n            var info = $('order-items_grid').select('input', 'select', 'textarea');\n            for (var i = 0; i < info.length; i++) {\n                if (!info[i].disabled && (info[i].type != 'checkbox' || info[i].checked)) {\n                    fieldsPrepare[info[i].name] = info[i].getValue();\n                }\n            }\n            fieldsPrepare = Object.extend(fieldsPrepare, this.productConfigureAddFields);\n            this.productConfigureSubmit('quote_items', area, fieldsPrepare);\n            this.orderItemChanged = false;\n        },\n\n        itemsOnchangeBind: function () {\n            var elems = $('order-items_grid').select('input', 'select', 'textarea');\n            for (var i = 0; i < elems.length; i++) {\n                if (!elems[i].bindOnchange) {\n                    elems[i].bindOnchange = true;\n                    elems[i].observe('change', this.itemChange.bind(this))\n                }\n            }\n        },\n\n        itemChange: function (event) {\n            this.giftmessageOnItemChange(event);\n            this.orderItemChanged = true;\n        },\n\n        /**\n         * Submit batch of configured products\n         *\n         * @param listType\n         * @param area\n         * @param fieldsPrepare\n         * @param itemsFilter\n         */\n        productConfigureSubmit: function (listType, area, fieldsPrepare, itemsFilter) {\n            // prepare loading areas and build url\n            area = this.prepareArea(area);\n            this.loadingAreas = area;\n            var url = this.loadBaseUrl + 'block/' + area + '?isAjax=true';\n\n            // prepare additional fields\n            fieldsPrepare = this.prepareParams(fieldsPrepare);\n            fieldsPrepare.reset_shipping = 1;\n            fieldsPrepare.json = 1;\n\n            // create fields\n            var fields = [];\n            for (var name in fieldsPrepare) {\n                fields.push(new Element('input', {type: 'hidden', name: name, value: fieldsPrepare[name]}));\n            }\n            productConfigure.addFields(fields);\n\n            // filter items\n            if (itemsFilter) {\n                productConfigure.addItemsFilter(listType, itemsFilter);\n            }\n\n            // prepare and do submit\n            productConfigure.addListType(listType, {urlSubmit: url});\n            productConfigure.setOnLoadIFrameCallback(listType, function (response) {\n                this.loadAreaResponseHandler(response);\n            }.bind(this));\n            productConfigure.submit(listType);\n            // clean\n            this.productConfigureAddFields = {};\n        },\n\n        /**\n         * Show configuration of quote item\n         *\n         * @param itemId\n         */\n        showQuoteItemConfiguration: function (itemId) {\n            var listType = 'quote_items';\n            var qtyElement = $('order-items_grid').select('input[name=\"item\\[' + itemId + '\\]\\[qty\\]\"]')[0];\n            productConfigure.setConfirmCallback(listType, function () {\n                // sync qty of popup and qty of grid\n                var confirmedCurrentQty = productConfigure.getCurrentConfirmedQtyElement();\n                if (qtyElement && confirmedCurrentQty && !isNaN(confirmedCurrentQty.value)) {\n                    qtyElement.value = confirmedCurrentQty.value;\n                }\n                this.productConfigureAddFields['item[' + itemId + '][configured]'] = 1;\n                this.itemsUpdate();\n\n            }.bind(this));\n            productConfigure.setShowWindowCallback(listType, function () {\n                // sync qty of grid and qty of popup\n                var formCurrentQty = productConfigure.getCurrentFormQtyElement();\n                if (formCurrentQty && qtyElement && !isNaN(qtyElement.value)) {\n                    formCurrentQty.value = qtyElement.value;\n                }\n            }.bind(this));\n            productConfigure.showItemConfiguration(listType, itemId);\n        },\n\n        accountFieldsBind: function (container) {\n            if ($(container)) {\n                var fields = $(container).select('input', 'select', 'textarea');\n                for (var i = 0; i < fields.length; i++) {\n                    if (fields[i].id == 'group_id') {\n                        fields[i].observe('change', this.accountGroupChange.bind(this))\n                    } else {\n                        fields[i].observe('change', this.accountFieldChange.bind(this))\n                    }\n                }\n            }\n        },\n\n        accountGroupChange: function () {\n            this.loadArea(['data'], true, this.serializeData('order-form_account').toObject());\n        },\n\n        accountFieldChange: function () {\n            this.saveData(this.serializeData('order-form_account'));\n        },\n\n        commentFieldsBind: function (container) {\n            if ($(container)) {\n                var fields = $(container).select('input', 'textarea');\n                for (var i = 0; i < fields.length; i++)\n                    fields[i].observe('change', this.commentFieldChange.bind(this))\n            }\n        },\n\n        commentFieldChange: function () {\n            this.saveData(this.serializeData('order-comment'));\n        },\n\n        giftmessageFieldsBind: function (container) {\n            if ($(container)) {\n                var fields = $(container).select('input', 'textarea');\n                for (var i = 0; i < fields.length; i++)\n                    fields[i].observe('change', this.giftmessageFieldChange.bind(this))\n            }\n        },\n\n        giftmessageFieldChange: function () {\n            this.giftMessageDataChanged = true;\n        },\n\n        giftmessageOnItemChange: function (event) {\n            var element = Event.element(event);\n            if (element.name.indexOf(\"giftmessage\") != -1 && element.type == \"checkbox\" && !element.checked) {\n                var messages = $(\"order-giftmessage\").select('textarea');\n                var name;\n                for (var i = 0; i < messages.length; i++) {\n                    name = messages[i].id.split(\"_\");\n                    if (name.length < 2) continue;\n                    if (element.name.indexOf(\"[\" + name[1] + \"]\") != -1 && messages[i].value != \"\") {\n                        alert({\n                            content: \"First, clean the Message field in Gift Message form\"\n                        });\n                        element.checked = true;\n                    }\n                }\n            }\n        },\n\n        loadArea: function (area, indicator, params, callback) {\n            var deferred = new jQuery.Deferred();\n            var url = this.loadBaseUrl;\n            if (area) {\n                area = this.prepareArea(area);\n                url += 'block/' + area;\n            }\n            if (indicator === true) indicator = 'html-body';\n            params = this.prepareParams(params);\n            params.json = true;\n            if (!this.loadingAreas) this.loadingAreas = [];\n            if (indicator) {\n                this.loadingAreas = area;\n                new Ajax.Request(url, {\n                    parameters: params,\n                    loaderArea: indicator,\n                    onSuccess: function (transport) {\n                        var response = transport.responseText.evalJSON();\n                        this.loadAreaResponseHandler(response);\n                        if (callback instanceof Function) {\n                            callback();\n                        }\n                        deferred.resolve();\n                    }.bind(this)\n                });\n            } else {\n                new Ajax.Request(url, {\n                    parameters: params,\n                    loaderArea: indicator,\n                    onSuccess: function (transport) {\n                        deferred.resolve();\n                    }\n                });\n            }\n            if (typeof productConfigure != 'undefined' && area instanceof Array && area.indexOf('items') != -1) {\n                productConfigure.clean('quote_items');\n            }\n            return deferred.promise();\n        },\n\n        loadAreaResponseHandler: function (response) {\n            if (response.error) {\n                alert({\n                    content: response.message\n                });\n            }\n            if (response.ajaxExpired && response.ajaxRedirect) {\n                setLocation(response.ajaxRedirect);\n            }\n            if (!this.loadingAreas) {\n                this.loadingAreas = [];\n            }\n            if (typeof this.loadingAreas == 'string') {\n                this.loadingAreas = [this.loadingAreas];\n            }\n            if (this.loadingAreas.indexOf('message') == -1) {\n                this.loadingAreas.push('message');\n            }\n            if (response.header) {\n                jQuery('.page-actions-inner').attr('data-title', response.header);\n            }\n\n            for (var i = 0; i < this.loadingAreas.length; i++) {\n                var id = this.loadingAreas[i];\n                if ($(this.getAreaId(id))) {\n                    if ((id in response) && id !== 'message' || response[id]) {\n                        $(this.getAreaId(id)).update(response[id]);\n                    }\n                    if ($(this.getAreaId(id)).callback) {\n                        this[$(this.getAreaId(id)).callback]();\n                    }\n                }\n            }\n        },\n\n        prepareArea: function (area) {\n            if (this.giftMessageDataChanged) {\n                return area.without('giftmessage');\n            }\n            return area;\n        },\n\n        saveData: function (data) {\n            this.loadArea(false, false, data);\n        },\n\n        showArea: function (area) {\n            var id = this.getAreaId(area);\n            if ($(id)) {\n                $(id).show();\n                this.areaOverlay();\n            }\n        },\n\n        hideArea: function (area) {\n            var id = this.getAreaId(area);\n            if ($(id)) {\n                $(id).hide();\n                this.areaOverlay();\n            }\n        },\n\n        areaOverlay: function () {\n            $H(order.overlayData).each(function (e) {\n                e.value.fx();\n            });\n        },\n\n        getAreaId: function (area) {\n            return 'order-' + area;\n        },\n\n        prepareParams: function (params) {\n            if (!params) {\n                params = {};\n            }\n            if (!params.customer_id) {\n                params.customer_id = this.customerId;\n            }\n            if (!params.store_id) {\n                params.store_id = this.storeId;\n            }\n            if (!params.currency_id) {\n                params.currency_id = this.currencyId;\n            }\n            if (!params.form_key) {\n                params.form_key = FORM_KEY;\n            }\n\n            if (this.isPaymentValidationAvailable()) {\n                var data = this.serializeData('order-billing_method');\n                if (data) {\n                    data.each(function (value) {\n                        params[value[0]] = value[1];\n                    });\n                }\n            } else {\n                params['payment[method]'] = this.paymentMethod;\n            }\n            return params;\n        },\n\n        /**\n         * Prevent from sending credit card information to server for some payment methods\n         *\n         * @returns {boolean}\n         */\n        isPaymentValidationAvailable: function () {\n            return ((typeof this.paymentMethod) == 'undefined'\n                || this.excludedPaymentMethods.indexOf(this.paymentMethod) == -1);\n        },\n\n        /**\n         * Serializes container form elements data.\n         *\n         * @param {String} container\n         * @return {Object}\n         */\n        serializeData: function (container) {\n            var fields = $(container).select('input', 'select', 'textarea'),\n                data = Form.serializeElements(fields, true);\n\n            return $H(data);\n        },\n\n        toggleCustomPrice: function (checkbox, elemId, tierBlock) {\n            if (checkbox.checked) {\n                $(elemId).disabled = false;\n                $(elemId).show();\n                if ($(tierBlock)) $(tierBlock).hide();\n            } else {\n                $(elemId).disabled = true;\n                $(elemId).hide();\n                if ($(tierBlock)) $(tierBlock).show();\n            }\n        },\n\n        submit: function () {\n            var $editForm = jQuery('#edit_form'),\n                beforeSubmitOrderEvent;\n\n            if ($editForm.valid()) {\n                $editForm.trigger('processStart');\n                beforeSubmitOrderEvent = jQuery.Event('beforeSubmitOrder');\n                $editForm.trigger(beforeSubmitOrderEvent);\n                if (beforeSubmitOrderEvent.result !== false) {\n                    $editForm.trigger('submitOrder');\n                }\n            }\n        },\n\n        _realSubmit: function () {\n            var disableAndSave = function () {\n                disableElements('save');\n                jQuery('#edit_form').on('invalid-form.validate', function () {\n                    enableElements('save');\n                    jQuery('#edit_form').trigger('processStop');\n                    jQuery('#edit_form').off('invalid-form.validate');\n                });\n                jQuery('#edit_form').triggerHandler('save');\n            }\n            if (this.orderItemChanged) {\n                var self = this;\n\n                jQuery('#edit_form').trigger('processStop');\n\n                confirm({\n                    content: jQuery.mage.__('You have item changes'),\n                    actions: {\n                        confirm: function () {\n                            jQuery('#edit_form').trigger('processStart');\n                            disableAndSave();\n                        },\n                        cancel: function () {\n                            self.itemsUpdate();\n                        }\n                    }\n                });\n            } else {\n                disableAndSave();\n            }\n        },\n\n        overlay: function (elId, show, observe) {\n            if (typeof (show) == 'undefined') {\n                show = true;\n            }\n\n            var orderObj = this;\n            var obj = this.overlayData.get(elId);\n            if (!obj) {\n                obj = {\n                    show: show,\n                    el: elId,\n                    order: orderObj,\n                    fx: function (event) {\n                        this.order.processOverlay(this.el, this.show);\n                    }\n                };\n                obj.bfx = obj.fx.bindAsEventListener(obj);\n                this.overlayData.set(elId, obj);\n            } else {\n                obj.show = show;\n                Event.stopObserving(window, 'resize', obj.bfx);\n            }\n\n            Event.observe(window, 'resize', obj.bfx);\n\n            this.processOverlay(elId, show);\n        },\n\n        processOverlay: function (elId, show) {\n            var el = $(elId);\n\n            if (!el) {\n                return;\n            }\n\n            var parentEl = el.up(1);\n            if (show) {\n                parentEl.removeClassName('ignore-validate');\n            } else {\n                parentEl.addClassName('ignore-validate');\n            }\n\n            if (Prototype.Browser.IE) {\n                parentEl.select('select').each(function (elem) {\n                    if (show) {\n                        elem.needShowOnSuccess = false;\n                        elem.style.visibility = '';\n                    } else {\n                        elem.style.visibility = 'hidden';\n                        elem.needShowOnSuccess = true;\n                    }\n                });\n            }\n\n            parentEl.setStyle({position: 'relative'});\n            el.setStyle({\n                display: show ? 'none' : ''\n            });\n        },\n\n        validateVat: function (parameters) {\n            var params = {\n                country: $(parameters.countryElementId).value,\n                vat: $(parameters.vatElementId).value\n            };\n\n            if (this.storeId !== false) {\n                params.store_id = this.storeId;\n            }\n\n            var currentCustomerGroupId = $(parameters.groupIdHtmlId)\n                ? $(parameters.groupIdHtmlId).value : '';\n\n            new Ajax.Request(parameters.validateUrl, {\n                parameters: params,\n                onSuccess: function (response) {\n                    var message = '';\n                    var groupActionRequired = null;\n                    try {\n                        response = response.responseText.evalJSON();\n\n                        if (null === response.group) {\n                            if (true === response.valid) {\n                                message = parameters.vatValidMessage;\n                            } else if (true === response.success) {\n                                message = parameters.vatInvalidMessage.replace(/%s/, params.vat);\n                            } else {\n                                message = parameters.vatValidationFailedMessage;\n                            }\n                        } else {\n                            if (true === response.valid) {\n                                message = parameters.vatValidAndGroupValidMessage;\n                                if (0 === response.group) {\n                                    message = parameters.vatValidAndGroupInvalidMessage;\n                                    groupActionRequired = 'inform';\n                                } else if (currentCustomerGroupId != response.group) {\n                                    message = parameters.vatValidAndGroupChangeMessage;\n                                    groupActionRequired = 'change';\n                                }\n                            } else if (response.success) {\n                                message = parameters.vatInvalidMessage.replace(/%s/, params.vat);\n                                groupActionRequired = 'inform';\n                            } else {\n                                message = parameters.vatValidationFailedMessage;\n                                groupActionRequired = 'inform';\n                            }\n                        }\n                    } catch (e) {\n                        message = parameters.vatValidationFailedMessage;\n                    }\n                    if (null === groupActionRequired) {\n                        alert({\n                            content: message\n                        });\n                    } else {\n                        this.processCustomerGroupChange(\n                            parameters.groupIdHtmlId,\n                            message,\n                            parameters.vatCustomerGroupMessage,\n                            parameters.vatGroupErrorMessage,\n                            response.group,\n                            groupActionRequired\n                        );\n                    }\n                }.bind(this)\n            });\n        },\n\n        processCustomerGroupChange: function (groupIdHtmlId, message, customerGroupMessage, errorMessage, groupId, action) {\n            var groupMessage = '';\n            try {\n                var currentCustomerGroupId = $(groupIdHtmlId).value;\n                var currentCustomerGroupTitle =\n                    $$('#' + groupIdHtmlId + ' > option[value=' + currentCustomerGroupId + ']')[0].text;\n                var customerGroupOption = $$('#' + groupIdHtmlId + ' > option[value=' + groupId + ']')[0];\n                groupMessage = customerGroupMessage.replace(/%s/, customerGroupOption.text);\n            } catch (e) {\n                groupMessage = errorMessage;\n                if (action === 'change') {\n                    message = '';\n                    action = 'inform';\n                }\n            }\n\n            if (action === 'change') {\n                var confirmText = message.replace(/%s/, customerGroupOption.text);\n                confirmText = confirmText.replace(/%s/, currentCustomerGroupTitle);\n                confirm({\n                    content: confirmText,\n                    actions: {\n                        confirm: function() {\n                            $$('#' + groupIdHtmlId + ' option').each(function (o) {\n                                o.selected = o.readAttribute('value') == groupId;\n                            });\n                            this.accountGroupChange();\n                        }.bind(this)\n                    }\n                })\n            } else if (action === 'inform') {\n                alert({\n                    content: message + '\\n' + groupMessage\n                });\n            }\n        }\n    };\n\n    window.OrderFormArea = Class.create();\n    OrderFormArea.prototype = {\n        _name: null,\n        _node: null,\n        _parent: null,\n        _callbackName: null,\n\n        initialize: function (name, node, parent) {\n            if (!node)\n                return;\n            this._name = name;\n            this._parent = parent;\n            this._callbackName = node.callback;\n            if (typeof this._callbackName == 'undefined') {\n                this._callbackName = name + 'Loaded';\n                node.callback = this._callbackName;\n            }\n            parent[this._callbackName] = parent[this._callbackName].wrap((function (proceed) {\n                proceed();\n                this.onLoad();\n            }).bind(this));\n\n            this.setNode(node);\n        },\n\n        setNode: function (node) {\n            if (!node.callback) {\n                node.callback = this._callbackName;\n            }\n            this.node = node;\n        },\n\n        onLoad: function () {\n        }\n    };\n\n    window.ControlButton = Class.create();\n\n    ControlButton.prototype = {\n        _label: '',\n        _node: null,\n\n        initialize: function (label, id) {\n            this._label = label;\n            this._node = new Element('button', {\n                'class': 'action-secondary action-add',\n                'type': 'button'\n            });\n            if (typeof id !== 'undefined') {\n                this._node.setAttribute('id', id)\n            }\n        },\n\n        onClick: function () {\n        },\n\n        insertIn: function (element, position) {\n            var node = Object.extend(this._node),\n                content = {};\n            node.observe('click', this.onClick);\n            node.update('<span>' + this._label + '</span>');\n            content[position] = node;\n            Element.insert(element, content);\n        },\n\n        getLabel: function () {\n            return this._label;\n        }\n    };\n});\n","Magento_Sales/order/create/giftmessage.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n/********************* GIFT OPTIONS POPUP ***********************/\n/********************* GIFT OPTIONS SET ***********************/\n\ndefine([\n    'jquery',\n    'jquery/ui',\n    'mage/translate',\n    'mage/validation',\n    'prototype'\n], function (jQuery) {\n\n    window.giftMessagesController = {\n        toogleRequired: function (source, objects) {\n            if (!$(source).value.blank()) {\n                objects.each(function (item) {\n                    $(item).addClassName('required-entry');\n                    var label = findFieldLabel($(item));\n\n                    if (label) {\n                        var span = label.down('span');\n\n                        if (!span) {\n                            Element.insert(label, {\n                                bottom: '&nbsp;<span class=\"required\">*</span>'\n                            });\n                        }\n                    }\n                });\n            } else {\n                objects.each(function (item) {\n                    if ($(source).formObj && $(source).formObj.validator) {\n                        $(source).formObj.validator.reset(item);\n                    }\n                    $(item).removeClassName('required-entry');\n                    var label = findFieldLabel($(item));\n\n                    if (label) {\n                        var span = label.down('span');\n\n                        if (span) {\n                            Element.remove(span);\n                        }\n                    }\n                    // Hide validation advices if exist\n                    if ($(item) && $(item).advices) {\n                        $(item).advices.each(function (pair) {\n                            if (pair.value != null) pair.value.hide();\n                        });\n                    }\n                });\n            }\n        },\n        toogleGiftMessage: function (container) {\n            if (!$(container).toogleGiftMessage) {\n                $(container).toogleGiftMessage = true;\n                $(this.getFieldId(container, 'edit')).show();\n                $(container).down('.action-link').addClassName('open');\n                $(container).down('.default-text').hide();\n                $(container).down('.close-text').show();\n            } else {\n                $(container).toogleGiftMessage = false;\n                $(this.getFieldId(container, 'message')).formObj = $(this.getFieldId(container, 'form'));\n                var form = jQuery('#' + this.getFieldId(container, 'form'));\n\n                jQuery('#' + this.getFieldId(container, 'form')).validate({\n                    errorClass: 'mage-error'\n                });\n\n                if (!form.valid()) {\n                    return false;\n                }\n\n                new Ajax.Request($(this.getFieldId(container, 'form')).action, {\n                    parameters: Form.serialize($(this.getFieldId(container, 'form')), true),\n                    loaderArea: container,\n                    onComplete: function (transport) {\n\n                        $(container).down('.action-link').removeClassName('open');\n                        $(container).down('.default-text').show();\n                        $(container).down('.close-text').hide();\n                        $(this.getFieldId(container, 'edit')).hide();\n\n                        if (transport.responseText.match(/YES/g)) {\n                            $(container).down('.default-text').down('.edit').show();\n                            $(container).down('.default-text').down('.add').hide();\n                        } else {\n                            $(container).down('.default-text').down('.add').show();\n                            $(container).down('.default-text').down('.edit').hide();\n                        }\n\n                    }.bind(this)\n                });\n            }\n\n            return false;\n        },\n        saveGiftMessage: function (container) {\n            $(this.getFieldId(container, 'message')).formObj = $(this.getFieldId(container, 'form'));\n\n            var form = jQuery('#' + this.getFieldId(container, 'form'));\n\n            form.validate({\n                errorClass: 'mage-error'\n            });\n\n            if (!form.valid()) {\n                return;\n            }\n\n            new Ajax.Request($(this.getFieldId(container, 'form')).action, {\n                parameters: Form.serialize($(this.getFieldId(container, 'form')), true),\n                loaderArea: container,\n                onSuccess: function (response) {\n                    var message = '<div class=\"messages\"><div class=\"message message-success success\">' +\n                        response.responseText +\n                        '<div data-ui-id=\"messages-message-success\"></div></div></div>';\n\n                    jQuery('#messages').html(message);\n                    jQuery(document).scrollTop(0);\n                }\n            });\n        },\n        getFieldId: function (container, name) {\n            return container + '_' + name;\n        }\n    };\n\n    function findFieldLabel(field) {\n        var tdField = $(field).up('td');\n\n        if (tdField) {\n            var tdLabel = tdField.previous('td');\n\n            if (tdLabel) {\n                var label = tdLabel.down('label');\n\n                if (label) {\n                    return label;\n                }\n            }\n        }\n\n        return false;\n    }\n\n    window.findFieldLabel = findFieldLabel;\n\n    window.GiftOptionsPopup = Class.create();\n    GiftOptionsPopup.prototype = {\n        //giftOptionsWindowMask: null,\n        giftOptionsWindow: null,\n\n        initialize: function () {\n            $$('.action-link').each(function (el) {\n                Event.observe(el, 'click', this.showItemGiftOptions.bind(this));\n            }, this);\n\n            // Move gift options popup to start of body, because soon it will contain FORM tag that can break DOM layout if within other FORM\n            var oldPopupContainer = $('gift_options_configure');\n\n            if (oldPopupContainer) {\n                oldPopupContainer.remove();\n            }\n\n            var newPopupContainer = $('gift_options_configure_new');\n\n            $(document.body).insert({\n                top: newPopupContainer\n            });\n            newPopupContainer.id = 'gift_options_configure';\n\n            // Put controls container inside a FORM tag so we can use Validator\n            var form = new Element('form', {\n                action: '#', id: 'gift_options_configuration_form', method: 'post'\n            });\n            var formContents = $('gift_options_form_contents');\n\n            if (formContents) {\n                formContents.parentNode.appendChild(form);\n                form.appendChild(formContents);\n            }\n\n            this.giftOptionsWindow = $('gift_options_configure');\n\n            jQuery(this.giftOptionsWindow).dialog({\n                autoOpen:   false,\n                modal:      true,\n                resizable:  false,\n                dialogClass: 'gift-options-popup',\n                minWidth:   500,\n                width:      '75%',\n                position: {\n                    my: 'left+12.5% top',\n                    at: 'center top',\n                    of: 'body'\n                },\n                open: function () {\n                    jQuery(this).closest('.ui-dialog').addClass('ui-dialog-active');\n\n                    var topMargin = jQuery(this).closest('.ui-dialog').children('.ui-dialog-titlebar').outerHeight() + 30;\n\n                    jQuery(this).closest('.ui-dialog').css({\n                        'margin-top' : topMargin,\n                        'z-index': 1000\n                    });\n                    jQuery(this).closest('.ui-dialog').nextAll('.ui-widget-overlay').css('z-index', 999);\n                },\n                close: function () {\n                    jQuery(this).closest('.ui-dialog').removeClass('ui-dialog-active');\n                }\n            });\n        },\n\n        showItemGiftOptions: function (event) {\n            var element = Event.element(event).id;\n            var itemId = element.sub('gift_options_link_', '');\n\n            jQuery(this.giftOptionsWindow).dialog('open');\n\n            this.setTitle(itemId);\n\n            Event.observe($('gift_options_cancel_button'), 'click', this.onCloseButton.bind(this));\n            Event.observe($('gift_options_ok_button'), 'click', this.onOkButton.bind(this));\n            Event.stop(event);\n        },\n\n        setTitle: function (itemId) {\n            var productTitleElement = $('order_item_' + itemId + '_title');\n            var productTitle = '';\n\n            if (productTitleElement) {\n                productTitle = productTitleElement.innerHTML;\n            }\n            jQuery(this.giftOptionsWindow).dialog({\n                title: jQuery.mage.__('Gift Options for ') + productTitle\n            });\n        },\n\n        onOkButton: function () {\n            var giftOptionsForm = jQuery('#gift_options_configuration_form');\n\n            if (!giftOptionsForm.validate({\n                errorClass: 'mage-error'\n            }).valid()) {\n                return false;\n            }\n\n            if (typeof (giftOptionsForm[0].reset) === 'function') {\n                giftOptionsForm[0].reset();\n            }\n            this.closeWindow();\n\n            return true;\n        },\n\n        onCloseButton: function () {\n            this.closeWindow();\n        },\n\n        closeWindow: function () {\n            jQuery(this.giftOptionsWindow).dialog('close');\n        }\n    };\n\n    window.GiftMessageSet = Class.create();\n\n    GiftMessageSet.prototype = {\n        destPrefix: 'current_item_giftmessage_',\n        sourcePrefix: 'giftmessage_',\n        fields: ['sender', 'recipient', 'message'],\n        isObserved: false,\n        callback: null,\n\n        initialize: function () {\n            $$('.action-link').each(function (el) {\n                Event.observe(el, 'click', this.setData.bind(this));\n            }, this);\n        },\n\n        setData: function (event) {\n            var element = Event.element(event).id;\n\n            this.id = element.sub('gift_options_link_', '');\n\n            if ($('gift-message-form-data-' + this.id)) {\n                this.fields.each(function (el) {\n                    if ($(this.sourcePrefix + this.id + '_' + el) && $(this.destPrefix + el)) {\n                        $(this.destPrefix + el).value = $(this.sourcePrefix + this.id + '_' + el).value;\n                    }\n                }, this);\n                $('gift_options_giftmessage').show();\n            } else if ($('gift_options_giftmessage')) {\n                $('gift_options_giftmessage').hide();\n            }\n\n            if (!this.isObserved) {\n                Event.observe('gift_options_ok_button', 'click', this.saveData.bind(this));\n                this.isObserved = true;\n            }\n        },\n\n        prepareSaveData: function () {\n            var hash = $H();\n\n            $$('div[id^=gift_options_data_]').each(function (el) {\n                var fields = el.select('input', 'select', 'textarea');\n                var data = Form.serializeElements(fields, true);\n\n                hash.update(data);\n            });\n\n            return hash;\n        },\n\n        setSaveCallback: function (callback) {\n            if (typeof callback == 'function') {\n                this.callback = callback;\n            }\n        },\n\n        saveData: function (event) {\n            this.fields.each(function (el) {\n                if ($(this.sourcePrefix + this.id + '_' + el) && $(this.destPrefix + el)) {\n                    $(this.sourcePrefix + this.id + '_' + el).value = $(this.destPrefix + el).value;\n                }\n            }, this);\n\n            if ($(this.sourcePrefix + this.id + '_form')) {\n                $(this.sourcePrefix + this.id + '_form').request();\n            } else if (typeof order != 'undefined') {\n                var data = this.prepareSaveData();\n                var self = this;\n\n                jQuery.when(order.loadArea(['items'], true, data.toObject())).done(function () {\n                    if (self.callback !== null) {\n                        self.callback();\n                    }\n                });\n            }\n        }\n    };\n\n});\n","Magento_Sales/order/edit/message.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'jquery',\n    'jquery/ui',\n    'Magento_Ui/js/modal/modal',\n    'mage/translate'\n], function ($) {\n    'use strict';\n\n    $.widget('mage.orderEditDialog', {\n        options: {\n            url:     null,\n            message: null,\n            modal:  null\n        },\n\n        /**\n         * @protected\n         */\n        _create: function () {\n            this._prepareDialog();\n        },\n\n        /**\n         * Show modal\n         */\n        showDialog: function () {\n            this.options.dialog.html(this.options.message).modal('openModal');\n        },\n\n        /**\n         * Redirect to edit page\n         */\n        redirect: function () {\n            window.location = this.options.url;\n        },\n\n        /**\n         * Prepare modal\n         * @protected\n         */\n        _prepareDialog: function () {\n            var self = this;\n\n            this.options.dialog = $('<div class=\"ui-dialog-content ui-widget-content\"></div>').modal({\n                type: 'popup',\n                modalClass: 'edit-order-popup',\n                title: $.mage.__('Edit Order'),\n                buttons: [{\n                    text: $.mage.__('Ok'),\n                    'class': 'action-primary',\n\n                    /** @inheritdoc */\n                    click: function () {\n                        self.redirect();\n                    }\n                }]\n            });\n        }\n    });\n\n    return $.mage.orderEditDialog;\n});\n","Magento_Sales/order/edit/address/form.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine([\n    'jquery'\n], function ($) {\n    'use strict';\n\n    /**\n     * Currently Magento App stores both  region_id and region (as text) values.\n     * To prevent missing region (as text) we need to copy it in hidden field.\n     * @param {Array} config\n     * @param {String} element\n     */\n    return function (config, element) {\n        var form = $(element),\n            regionId = form.find('#region_id'),\n\n            /**\n             * Set region callback\n             */\n            setRegion = function () {\n                form.find('#region').val(regionId.filter(':visible').find(':selected').text());\n            };\n\n        if (regionId.is('visible')) {\n            setRegion();\n        }\n\n        regionId.on('change', setRegion);\n        form.find('#country_id').on('change', setRegion);\n    };\n});\n","Magento_Sales/order/view/post-wrapper.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'jquery',\n    'Magento_Ui/js/modal/confirm',\n    'mage/translate'\n], function ($, confirm) {\n    'use strict';\n\n    /**\n     * @param {String} url\n     * @returns {jQuery}\n     */\n    function getForm(url) {\n        return $('<form>', {\n            'action': url,\n            'method': 'POST'\n        }).append($('<input>', {\n            'name': 'form_key',\n            'value': window.FORM_KEY,\n            'type': 'hidden'\n        }));\n    }\n\n    $(document).on('click', '#order-view-cancel-button', function () {\n        var msg = $.mage.__('Are you sure you want to cancel this order?'),\n            url = $('#order-view-cancel-button').data('url');\n\n        confirm({\n            'content': msg,\n            'actions': {\n\n                /**\n                 * 'Confirm' action handler.\n                 */\n                confirm: function () {\n                    getForm(url).appendTo('body').trigger('submit');\n                }\n            }\n        });\n\n        return false;\n    });\n\n    $(document).on('click', '#order-view-hold-button', function () {\n        var url = $('#order-view-hold-button').data('url');\n\n        getForm(url).appendTo('body').trigger('submit');\n    });\n\n    $(document).on('click', '#order-view-unhold-button', function () {\n        var url = $('#order-view-unhold-button').data('url');\n\n        getForm(url).appendTo('body').trigger('submit');\n    });\n});\n","Magento_Sales/js/grid/columns/multiselect.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'Magento_Ui/js/grid/columns/multiselect'\n], function (Multiselect) {\n    'use strict';\n\n    return Multiselect.extend({\n        /**\n         * Prevent calling this.selectAll(); in parent\n         *\n         * @returns  {Object}\n         */\n        updateState: function () {\n            var selected = this.selected().length,\n                totalRecords = this.totalRecords();\n\n            if (totalRecords && selected === totalRecords && !this.preserveSelectionsOnFilter) {\n                return this;\n            }\n            return this._super();\n        }\n    });\n});\n","Magento_Sales/js/bootstrap/order-post-action.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\nrequire([\n    'Magento_Sales/order/view/post-wrapper'\n]);\n","Magento_Sales/js/bootstrap/order-create-index.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\nrequire([\n    'Magento_Sales/order/create/giftmessage'\n]);\n","Magento_Cms/js/folder-tree.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'jquery',\n    'jquery/ui',\n    'jquery/jstree/jquery.jstree'\n], function ($) {\n    'use strict';\n\n    $.widget('mage.folderTree', {\n        options: {\n            root: 'root',\n            rootName: 'Root',\n            url: '',\n            currentPath: ['root'],\n            tree: {\n                core: {\n                    themes: {\n                        dots: false\n                    },\n                    // jscs:disable requireCamelCaseOrUpperCaseIdentifiers\n                    check_callback: true\n                    // jscs:enable requireCamelCaseOrUpperCaseIdentifiers\n                }\n            }\n        },\n\n        /** @inheritdoc */\n        _create: function () {\n            var options = this.options,\n                treeOptions = $.extend(\n                    true,\n                    {},\n                    options.tree,\n                    {\n                        core: {\n                            data: {\n                                url: options.url,\n                                type: 'POST',\n                                dataType: 'text',\n                                dataFilter: $.proxy(function (data) {\n                                    return this._convertData(JSON.parse(data));\n                                }, this),\n\n                                /**\n                                 * @param {HTMLElement} node\n                                 * @return {Object}\n                                 */\n                                data: function (node) {\n                                    return {\n                                        node: node.id === 'root' ? null : node.id,\n                                        'form_key': window.FORM_KEY\n                                    };\n                                }\n                            }\n                        }\n                    }\n                );\n\n            this.element.jstree(treeOptions)\n                .on('ready.jstree', $.proxy(this.treeLoaded, this))\n                .on('load_node.jstree', $.proxy(this._createRootNode, this));\n        },\n\n        /**\n         * Tree loaded.\n         */\n        treeLoaded: function () {\n            var path = this.options.currentPath,\n                tree = this.element,\n                lastExistentFolderEl,\n\n                /**\n                 * Recursively open folders specified in path array.\n                 */\n                recursiveOpen = function () {\n                    var folderEl = $('[data-id=\"' + path.pop() + '\"]');\n\n                    // if folder doesn't exist, select the last opened folder\n                    if (!folderEl.length) {\n                        tree.jstree('select_node', lastExistentFolderEl);\n\n                        return;\n                    }\n\n                    lastExistentFolderEl = folderEl;\n\n                    if (path.length) {\n                        tree.jstree('open_node', folderEl, recursiveOpen);\n                    } else {\n                        tree.jstree('open_node', folderEl, function () {\n                            tree.jstree('select_node', folderEl);\n                        });\n                    }\n                };\n\n            recursiveOpen();\n        },\n\n        /**\n         * Create tree root node\n         *\n         * @param {jQuery.Event} event\n         * @param {Object} data\n         * @private\n         */\n        _createRootNode: function (event, data) {\n            var rootNode, children;\n\n            // jscs:disable requireCamelCaseOrUpperCaseIdentifiers\n            if (data.node.id === '#') {\n                rootNode = {\n                    id: this.options.root,\n                    text: this.options.rootName,\n                    li_attr: {\n                        'data-id': this.options.root\n                    }\n                };\n                children = data.node.children;\n\n                data.instance.element.jstree().create_node(null, rootNode, 'first', function () {\n                    data.instance.element.jstree().move_node(children, rootNode.id);\n                });\n            }\n            // jscs:enable requireCamelCaseOrUpperCaseIdentifiers\n        },\n\n        /**\n         * @param {*} data\n         * @return {*}\n         * @private\n         */\n        _convertData: function (data) {\n            return $.map(data, function (node) {\n\n                return {\n                    id: node.id,\n                    text: node.text,\n                    path: node.path,\n                    // jscs:disable requireCamelCaseOrUpperCaseIdentifiers\n                    li_attr: {\n                        'data-id': node.id\n                    },\n                    // jscs:enable requireCamelCaseOrUpperCaseIdentifiers\n                    children: node.children\n                };\n            });\n        }\n    });\n\n    return $.mage.folderTree;\n});\n","Magento_PageBuilder/ts/babel/plugin-resolve-magento-imports/index.js":"/* jscs:disable */\n/* eslint-disable */\n\n/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\nvar path = require('path');\n\n/**\n * Convert the relative path imports within TypeScript into absolute paths with pre-fixed module name\n *\n * @returns {{visitor: {ImportDeclaration: visitor.ImportDeclaration}}}\n */\nmodule.exports = function () {\n    'use strict';\n\n    return {\n        visitor: {\n            /**\n             * Convert ../../utils/util import into Magento_Module/js/utils/util\n             *\n             * @param {Object} importPath\n             * @param {Object} state\n             * @constructor\n             */\n            ImportDeclaration: function (importPath, state) {\n                var importExpression = importPath.node.source.value;\n\n                if (!state.opts.prefix) {\n                    throw Error('Prefix must be defined');\n                }\n\n                // Is the file being imported from another directory?\n                if (!path.isAbsolute(importExpression) && importExpression.includes('./')) {\n                    importPath.node.source.value = path.resolve(\n                        path.dirname(state.file.opts.filename.replace(\n                            state.opts.path,\n                            \"\"\n                        )),\n                        importExpression\n                    ).replace(\n                        process.cwd(),\n                        state.opts.prefix.replace(/\\/+$/, '')\n                    );\n                }\n            }\n        }\n    };\n};\n","Magento_PageBuilder/ts/babel/plugin-amd-to-magento-amd/ast-utils.js":"/* jscs:disable */\n/* eslint-disable */\n\n/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\n\"use strict\";\n\nexports.__esModule = true;\nexports.extractDependencyAndFactory = extractDependencyAndFactory;\nexports.findAmdModule = findAmdModule;\nexports.extractDependencyMap = extractDependencyMap;\nexports.removeExportsDependency = removeExportsDependency;\nexports.isEsModulePropertyDefinition = isEsModulePropertyDefinition;\nexports.isObjectAssignment = isObjectAssignment;\nexports.isVoidExpression = isVoidExpression;\nexports.isInteropRequireCall = isInteropRequireCall;\nexports.isInteropRequireDefinition = isInteropRequireDefinition;\n\nvar t = _interopRequireWildcard(require(\"@babel/types\"));\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nvar INTEROP_FUNCTION_NAME = '_interopRequire';\n\nvar findExpression = function findExpression(path) {\n    if (!t.isExpressionStatement(path.node)) {\n        return false;\n    }\n\n    return path.get('expression');\n};\n\nvar isObjectProperty = function isObjectProperty(path, objectName, propertyName) {\n    return t.isMemberExpression(path) && path.get('object').isIdentifier(t.identifier(objectName)) && path.get('property').isIdentifier(t.identifier(propertyName));\n};\n\nfunction extractDependencyAndFactory(path) {\n    var args = path.node.arguments;\n    var dependencies = path.get(\"arguments.\" + (args.length - 2));\n    var factory = path.get(\"arguments.\" + (args.length - 1));\n    return {\n        dependencies: dependencies,\n        factory: factory\n    };\n}\n\nfunction findAmdModule(path) {\n    if (!path.parentPath.isProgram()) {\n        return false;\n    }\n\n    var expression = findExpression(path);\n\n    if (!expression || !t.isCallExpression(expression) || !t.isIdentifier(expression.node.callee, {\n        name: 'define'\n    })) {\n        return false;\n    }\n\n    var _extractDependencyAnd = extractDependencyAndFactory(expression),\n        dependencies = _extractDependencyAnd.dependencies,\n        factory = _extractDependencyAnd.factory;\n\n    if (dependencies && factory) {\n        return expression;\n    }\n\n    return false;\n}\n\nfunction extractDependencyMap(path) {\n    var dependencyMap = {};\n\n    var _extractDependencyAnd2 = extractDependencyAndFactory(path),\n        dependencies = _extractDependencyAnd2.dependencies,\n        factory = _extractDependencyAnd2.factory;\n\n    var dependencyList = dependencies.node.elements;\n    var factoryParams = factory.node.params;\n    dependencyList.forEach(function (dependency, index) {\n        if (factoryParams[index]) {\n            dependencyMap[dependency.value] = factoryParams[index];\n        }\n    });\n    return dependencyMap;\n}\n\nfunction removeExportsDependency(path) {\n    var _extractDependencyAnd3 = extractDependencyAndFactory(path),\n        dependencies = _extractDependencyAnd3.dependencies,\n        factory = _extractDependencyAnd3.factory;\n\n    var dependencyMap = extractDependencyMap(path);\n\n    if (!dependencyMap.exports) {\n        return;\n    }\n\n    dependencies.node.elements = dependencies.node.elements.filter(function (item) {\n        return !t.isStringLiteral(item, {\n            value: 'exports'\n        });\n    });\n    factory.node.params = factory.node.params.filter(function (item) {\n        return !t.isIdentifier(item, dependencyMap.exports);\n    });\n}\n\nfunction isEsModulePropertyDefinition(path, scope) {\n    var callExpression = findExpression(path);\n    var callee = callExpression.get('callee');\n    var callArguments = callExpression.node.arguments;\n    var isObjectDefinePropertyCall = isObjectProperty(callee, 'Object', 'defineProperty');\n\n    if (isObjectDefinePropertyCall) {\n        var isEsModulePropertyInArguments = t.isStringLiteral(callArguments[1], {\n            value: '__esModule'\n        });\n        var isInScope = t.isIdentifier(callArguments[0], scope);\n        return isEsModulePropertyInArguments && isInScope;\n    }\n\n    return false;\n}\n\nfunction isObjectAssignment(path, objectId) {\n    var expression = t.isAssignmentExpression(path) ? path : findExpression(path);\n    var isMemberAssignment = t.isAssignmentExpression(expression) && t.isMemberExpression(expression.get('left'));\n\n    if (isMemberAssignment) {\n        return t.isNodesEquivalent(expression.get('left.object').node, objectId);\n    }\n\n    return false;\n}\n\nfunction isVoidExpression(path) {\n    return t.isUnaryExpression(path) && path.node.operator === 'void';\n}\n\nfunction isInteropRequireCall(path) {\n    var expression = findExpression(path);\n    var isAssignmentCall = t.isAssignmentExpression(expression) && t.isCallExpression(expression.get('right'));\n\n    if (isAssignmentCall) {\n        var callee = expression.get('right.callee');\n        return callee.isIdentifier() && callee.node.name.indexOf(INTEROP_FUNCTION_NAME) === 0;\n    }\n\n    return false;\n}\n\nfunction isInteropRequireDefinition(path) {\n    if (t.isFunction(path) && path.node.id) {\n        return path.node.id.name.indexOf(INTEROP_FUNCTION_NAME) === 0;\n    }\n\n    return false;\n}","Magento_PageBuilder/ts/babel/plugin-amd-to-magento-amd/index.js":"/* jscs:disable */\n/* eslint-disable */\n\n/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\n\"use strict\";\n\nexports.__esModule = true;\nexports.default = _default;\n\nvar _astUtils = require(\"./ast-utils\");\n\nvar t = _interopRequireWildcard(require(\"@babel/types\"));\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nvar replaceExportAssignment = function replaceExportAssignment(path, state) {\n    var property = path.get('left.property');\n    var expression = path.get('right');\n    path.remove();\n\n    if ((0, _astUtils.isVoidExpression)(expression)) {\n        return;\n    }\n\n    if (property.isIdentifier({\n        name: 'default'\n    })) {\n        state.defaultExport = expression.node;\n        return;\n    }\n\n    state.exports.push(t.objectProperty(property.node, expression.node));\n};\n\nvar memberExpressionVisitor = {\n    MemberExpression: function MemberExpression(path, state) {\n        var matchedDependencies = state.dependencies.filter(function (item) {\n            return path.get('object').isIdentifier({\n                name: item.name\n            });\n        });\n        var isDefaultDependency = matchedDependencies.length === 1 && path.get('property').isIdentifier({\n            name: 'default'\n        });\n\n        if (isDefaultDependency) {\n            path.replaceWith(matchedDependencies[0]);\n        }\n    }\n};\nvar functionBodyVisitor = {\n    ExpressionStatement: function ExpressionStatement(path, state) {\n        if ((0, _astUtils.isEsModulePropertyDefinition)(path, state.scope)) {\n            path.remove();\n        }\n\n        if ((0, _astUtils.isObjectAssignment)(path, state.scope)) {\n            replaceExportAssignment(path.get('expression'), state);\n        }\n\n        if ((0, _astUtils.isInteropRequireCall)(path)) {\n            path.remove();\n        }\n    },\n    Function: function Function(path, state) {\n        if ((0, _astUtils.isInteropRequireDefinition)(path)) {\n            path.remove();\n        }\n\n        path.traverse(memberExpressionVisitor, state);\n    },\n    ClassMethod: function ClassMethod(path, state) {\n        path.traverse(memberExpressionVisitor, state);\n    },\n    DirectiveLiteral: function DirectiveLiteral(path) {\n        if (path.node.value === 'use strict') {\n            path.parentPath.remove();\n        }\n    },\n    MemberExpression: memberExpressionVisitor.MemberExpression\n};\n\nvar processAmdDefinition = function processAmdDefinition(path) {\n    var _extractDependencyAnd = (0, _astUtils.extractDependencyAndFactory)(path),\n        factory = _extractDependencyAnd.factory;\n\n    var dependencyMap = (0, _astUtils.extractDependencyMap)(path);\n\n    if (dependencyMap.exports) {\n        (0, _astUtils.removeExportsDependency)(path);\n        var state = {\n            scope: dependencyMap.exports,\n            dependencies: Object.values(dependencyMap),\n            exports: []\n        };\n        factory.traverse(functionBodyVisitor, state);\n        var returnStatement = t.objectExpression(state.exports);\n\n        if (state.defaultExport) {\n            returnStatement = state.defaultExport;\n\n            if (state.exports.length > 0) {\n                returnStatement = t.callExpression(t.memberExpression(t.identifier('Object'), t.identifier('assign')), [state.defaultExport, t.objectExpression(state.exports)]);\n            }\n        }\n\n        factory.get('body').pushContainer('body', t.returnStatement(returnStatement));\n    }\n};\n\nvar programVisitor = {\n    ExpressionStatement: function ExpressionStatement(path) {\n        var amdModule = (0, _astUtils.findAmdModule)(path);\n\n        if (amdModule) {\n            processAmdDefinition(amdModule);\n        }\n    }\n};\n\nfunction _default() {\n    return {\n        visitor: {\n            Program: {\n                exit: function exit(path) {\n                    path.traverse(programVisitor);\n                }\n            }\n        }\n    };\n}","Magento_PageBuilder/js/template-manager.js":"/*eslint-disable */\n/* jscs:disable */\ndefine([\"html2canvas\", \"jquery\", \"mage/translate\", \"Magento_PageBuilder/js/modal/confirm-alert\", \"Magento_PageBuilder/js/modal/template-manager-save\", \"text!Magento_PageBuilder/template/modal/template-manager/save-content-modal.html\", \"uiRegistry\", \"underscore\", \"Magento_PageBuilder/js/acl\", \"Magento_PageBuilder/js/config\"], function (_html2canvas, _jquery, _translate, _confirmAlert, _templateManagerSave, _saveContentModal, _uiRegistry, _underscore, _acl, _config) {\n  /**\n   * Copyright \u00a9 Magento, Inc. All rights reserved.\n   * See COPYING.txt for license details.\n   */\n\n  /**\n   * Save the current stage contents as a template\n   *\n   * @param stage\n   */\n  function saveAsTemplate(stage) {\n    if (!(0, _acl.isAllowed)(_acl.resources.TEMPLATE_SAVE)) {\n      (0, _confirmAlert)({\n        content: (0, _translate)(\"You do not have permission to save new templates.\"),\n        title: (0, _translate)(\"Permission Error\")\n      });\n      return false;\n    }\n\n    var capture = createCapture(stage);\n    var prompt = (0, _templateManagerSave)({\n      title: (0, _translate)(\"Save Content as Template\"),\n      promptContentTmpl: _saveContentModal,\n      templateTypes: _config.getConfig(\"stage_config\").template_types,\n      createdForNote: (0, _translate)(\"Created For is to help with filtering templates. This does not restrict where this template can be used.\"),\n      typeLabel: (0, _translate)(\"Created For\"),\n      label: (0, _translate)(\"Template Name\"),\n      validation: true,\n      modalClass: \"template-manager-save\",\n      validationRules: [\"required-entry\"],\n      attributesForm: {\n        novalidate: \"novalidate\",\n        action: \"\"\n      },\n      attributesField: {\n        \"name\": \"name\",\n        \"data-validate\": \"{required:true}\",\n        \"maxlength\": \"255\"\n      },\n      actions: {\n        /**\n         * Handle confirmation of the prompt\n         *\n         * @param {String} name\n         * @param {String} createdFor\n         * @this {actions}\n         */\n        confirm: function confirm(name, createdFor) {\n          return new Promise(function (resolve, reject) {\n            // Wait for the screenshot and the rendering lock to complete before making the request\n            var renderingLock = stage.renderingLocks[stage.renderingLocks.length - 1];\n\n            _jquery.when(capture, renderingLock).then(function (imageSrc, content) {\n              _jquery.ajax({\n                url: _config.getConfig(\"template_save_url\"),\n                data: {\n                  name: name,\n                  template: content,\n                  previewImage: imageSrc,\n                  createdFor: createdFor\n                },\n                method: \"POST\",\n                dataType: \"json\"\n              }).done(function (data) {\n                if (data.status === \"ok\") {\n                  (0, _confirmAlert)({\n                    content: (0, _translate)(\"The current contents of Page Builder has been successfully saved as a template.\"),\n                    title: (0, _translate)(\"Template Saved\")\n                  });\n                  refreshGrid();\n                  resolve();\n                } else if (data.status === \"error\") {\n                  (0, _confirmAlert)({\n                    content: data.message || (0, _translate)(\"An issue occurred while attempting to save \" + \"the template, please try again.\"),\n                    title: (0, _translate)(\"An error occurred\")\n                  });\n                  reject();\n                }\n              }).fail(function () {\n                (0, _confirmAlert)({\n                  content: (0, _translate)(\"An issue occurred while attempting to save the template, \" + \"please try again.\"),\n                  title: (0, _translate)(\"Template Save Error\")\n                });\n                reject();\n              });\n            });\n          });\n        }\n      }\n    }); // Update the UI with the preview image once available\n\n    capture.then(function (imageSrc) {\n      // @ts-ignore\n      prompt.templateManagerSave(\"setPreviewImage\", imageSrc);\n    });\n  }\n  /**\n   * Refresh the grid if it exists\n   */\n\n\n  function refreshGrid() {\n    var templateStageGrid = _uiRegistry.get(\"pagebuilder_stage_template_grid.pagebuilder_stage_template_grid_data_source\");\n\n    if (templateStageGrid) {\n      templateStageGrid.storage().clearRequests();\n      templateStageGrid.reload();\n    }\n  }\n  /**\n   * Create a capture of the stage\n   *\n   * @param stage\n   */\n\n\n  function createCapture(stage) {\n    var scrollY = window.scrollY;\n    var stageElement = document.querySelector(\"#\" + stage.id);\n\n    var deferred = _jquery.Deferred(); // Wait for the stage to complete rendering before taking the capture\n\n\n    var renderingLock = stage.renderingLocks[stage.renderingLocks.length - 1];\n    renderingLock.then(function () {\n      // Resolve issues with Parallax\n      var parallaxRestore = disableParallax(stageElement);\n      stageElement.style.height = (0, _jquery)(stageElement).outerHeight(false) + \"px\";\n      stageElement.classList.add(\"capture\");\n      stageElement.classList.add(\"interacting\");\n\n      if (stage.pageBuilder.isFullScreen()) {\n        window.scrollTo({\n          top: 0\n        });\n      }\n\n      _underscore.defer(function () {\n        (0, _html2canvas)(document.querySelector(\"#\" + stage.id + \" .pagebuilder-canvas\"), {\n          scale: 1,\n          useCORS: true,\n          scrollY: window.pageYOffset * -1\n        }).then(function (canvas) {\n          var imageSrc = canvas.toDataURL(\"image/jpeg\", 0.85);\n          deferred.resolve(imageSrc);\n\n          if (stage.pageBuilder.isFullScreen()) {\n            window.scrollTo({\n              top: scrollY\n            });\n          }\n\n          stageElement.style.height = null;\n          stageElement.classList.remove(\"capture\");\n          stageElement.classList.remove(\"interacting\");\n          restoreParallax(parallaxRestore);\n        });\n      });\n    });\n    return deferred;\n  }\n  /**\n   * Disable the parallax elements in the stage\n   *\n   * @param {Element} stageElement\n   */\n\n\n  function disableParallax(stageElement) {\n    var rowsToReset = [];\n    var parallaxRows = stageElement.querySelectorAll(\"[data-jarallax-original-styles]\");\n\n    _underscore.each(parallaxRows, function (row) {\n      var originalStyles = row.getAttribute(\"data-jarallax-original-styles\");\n      var jarallaxStyle = row.style.cssText;\n      row.style.cssText = originalStyles;\n      var jarallaxContainer = row.querySelector('div[id*=\"jarallax-container\"]');\n      jarallaxContainer.style.display = \"none\";\n      rowsToReset.push({\n        element: row,\n        styles: jarallaxStyle,\n        container: jarallaxContainer\n      });\n    });\n\n    return rowsToReset;\n  }\n  /**\n   * Restore parallax on modified nodes\n   *\n   * @param rows\n   */\n\n\n  function restoreParallax(rows) {\n    _underscore.each(rows, function (_ref) {\n      var element = _ref.element,\n          styles = _ref.styles,\n          container = _ref.container;\n      element.style.cssText = styles;\n      container.style.display = \"\";\n    });\n  }\n\n  return {\n    saveAsTemplate: saveAsTemplate\n  };\n});\n//# sourceMappingURL=template-manager.js.map","Magento_PageBuilder/js/uploader.js":"/*eslint-disable */\n/* jscs:disable */\ndefine([\"Magento_PageBuilder/js/events\", \"uiLayout\", \"uiRegistry\"], function (_events, _uiLayout, _uiRegistry) {\n  /**\n   * Copyright \u00a9 Magento, Inc. All rights reserved.\n   * See COPYING.txt for license details.\n   */\n\n  /**\n   * @api\n   */\n  var Uploader = /*#__PURE__*/function () {\n    \"use strict\";\n\n    /**\n     * Config data of uploader instance\n     */\n\n    /**\n     * The supplied data store\n     */\n\n    /**\n     * @param {String} name Name to use for lookup reference in registry\n     * @param {Object} uploaderConfig The config used when initializing the Uploader UI component\n     * @param {String} contentTypeId The id of the content type this will be used in\n     * @param {DataStore} dataStore The datastore that the selected image should be stored in.\n     * @param {Object[]} initialValue The value that should be used for the initial state of the component.\n     * @param {Function} onChangeCallback Called when image is added or updated\n     * @param {Function} onDeleteCallback Called when currently set image is deleted from storage\n     */\n    function Uploader(name, uploaderConfig, contentTypeId, dataStore, initialValue, onChangeCallback, onDeleteCallback) {\n      if (onChangeCallback === void 0) {\n        onChangeCallback = null;\n      }\n\n      if (onDeleteCallback === void 0) {\n        onDeleteCallback = null;\n      }\n\n      var config = Object.assign({}, uploaderConfig, {\n        value: initialValue\n      });\n      config.id = contentTypeId;\n      config.name = name;\n      this.dataStore = dataStore;\n\n      _events.on(\"image:\" + contentTypeId + \":uploadAfter\", onChangeCallback ? onChangeCallback : this.onImageChanged.bind(this));\n\n      _events.on(\"image:\" + contentTypeId + \":deleteFileAfter\", onDeleteCallback ? onDeleteCallback : this.onImageDeleted.bind(this));\n\n      this.config = config; // Render uploader\n\n      this.render();\n    }\n    /**\n     * Default callback for upload event\n     * @param {object[]} data\n     */\n\n\n    var _proto = Uploader.prototype;\n\n    _proto.onImageChanged = function onImageChanged(data) {\n      this.dataStore.set(this.config.dataScope.toString(), data);\n    }\n    /**\n     * Default callback for image deleted event\n     */\n    ;\n\n    _proto.onImageDeleted = function onImageDeleted() {\n      this.dataStore.set(this.config.dataScope.toString(), \"\");\n    }\n    /**\n     * Get registry callback reference to uploader UI component\n     *\n     * @returns {Function}\n     */\n    ;\n\n    _proto.getUiComponent = function getUiComponent() {\n      return _uiRegistry.async(this.config.name);\n    }\n    /**\n     * Instantiate uploader through layout UI component renderer\n     */\n    ;\n\n    _proto.render = function render() {\n      (0, _uiLayout)([this.config]);\n    };\n\n    return Uploader;\n  }();\n\n  return Uploader;\n});\n//# sourceMappingURL=uploader.js.map","Magento_PageBuilder/js/content-type-toolbar.js":"/*eslint-disable */\n/* jscs:disable */\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\ndefine([\"jquery\", \"knockout\", \"Magento_PageBuilder/js/events\", \"Magento_PageBuilder/js/utils/check-stage-full-screen\", \"Magento_PageBuilder/js/utils/pagebuilder-header-height\", \"Magento_PageBuilder/js/utils/promise-deferred\"], function (_jquery, _knockout, _events, _checkStageFullScreen, _pagebuilderHeaderHeight, _promiseDeferred) {\n  /**\n   * Copyright \u00a9 Magento, Inc. All rights reserved.\n   * See COPYING.txt for license details.\n   */\n\n  /**\n   * @api\n   */\n  var Toolbar = /*#__PURE__*/function () {\n    \"use strict\";\n\n    /**\n     * Toolbar Options constructor\n     *\n     * @param preview\n     * @param options\n     */\n    function Toolbar(preview, options) {\n      this.options = _knockout.observableArray([]);\n      this.afterRenderDeferred = (0, _promiseDeferred)();\n      this.preview = preview;\n      this.options(options);\n    }\n    /**\n     * Toolbar template\n     *\n     * @returns {string}\n     */\n\n\n    var _proto = Toolbar.prototype;\n\n    /**\n     * On render init the toolbar\n     *\n     * @param {Element} element\n     */\n    _proto.afterRender = function afterRender(element) {\n      this.element = element;\n      this.afterRenderDeferred.resolve(element);\n    }\n    /**\n     * Upon clicking the option update the value as directed\n     * When user toggles the option off, set the value back to default\n     *\n     * @param {OptionInterface} option\n     * @param {ValueInterface} value\n     */\n    ;\n\n    _proto.onOptionClick = function onOptionClick(option, value) {\n      var appearance = this.preview.appearance() + \"-appearance\";\n      var fields = this.preview.config.fields[appearance] || this.preview.config.fields.default;\n      var defaultValue = fields[option.key].default;\n      var currentValue = this.preview.contentType.dataStore.get(option.key);\n      this.preview.updateData(option.key, currentValue === value.value ? defaultValue : value.value);\n    }\n    /**\n     * Set state based on toolbar focusin event for the preview\n     *\n     * @param {ContentTypeToolbarPreviewInterface} context\n     * @param {Event} event\n     */\n    ;\n\n    _proto.onFocusIn = function onFocusIn(context, event) {\n      var currentContentTypeTarget = context.toolbar.getCurrentContentTypeTarget();\n      var toolbarOptions = currentContentTypeTarget.find(\".pagebuilder-toolbar-options\");\n      var currentContentTypeTargetClientRectTop = currentContentTypeTarget[0].getBoundingClientRect().top - (0, _pagebuilderHeaderHeight)(context.contentType.stageId); // Change toolbar orientation if overflow on full screen mode\n\n      if ((0, _checkStageFullScreen)(context.contentType.stageId) && currentContentTypeTargetClientRectTop < toolbarOptions.outerHeight()) {\n        context.toolbar.observer = new MutationObserver(function () {\n          toolbarOptions.css(\"transform\", \"translateY(\" + currentContentTypeTarget.outerHeight() + \"px)\");\n        });\n        context.toolbar.observer.observe(currentContentTypeTarget[0], {\n          attributes: true,\n          childList: true,\n          subtree: true\n        });\n        toolbarOptions.css(\"transform\", \"translateY(\" + currentContentTypeTarget.outerHeight() + \"px)\");\n      } else {\n        toolbarOptions.css(\"transform\", \"translateY(-100%)\");\n      }\n\n      (0, _jquery)(currentContentTypeTarget).addClass(\"pagebuilder-toolbar-active\");\n\n      _events.trigger(\"stage:interactionStart\");\n    }\n    /**\n     * Set state based on toolbar focusout event for the preview\n     *\n     * @param {ContentTypeToolbarPreviewInterface} context\n     * @param {Event} event\n     */\n    ;\n\n    _proto.onFocusOut = function onFocusOut(context, event) {\n      var currentContentTypeTarget = context.toolbar.getCurrentContentTypeTarget();\n      currentContentTypeTarget.removeClass(\"pagebuilder-toolbar-active\");\n      currentContentTypeTarget.find(\".pagebuilder-toolbar-options\").css(\"transform\", \"\");\n\n      if (typeof context.toolbar.observer !== \"undefined\") {\n        context.toolbar.observer.disconnect();\n      }\n\n      _events.trigger(\"stage:interactionStop\");\n    }\n    /**\n     * Get fixed toolbar container element referenced as selector in wysiwyg adapter settings\n     *\n     * @returns {jQuery}\n     */\n    ;\n\n    _proto.getCurrentContentTypeTarget = function getCurrentContentTypeTarget() {\n      return (0, _jquery)(\"#\" + this.preview.contentType.id).find(\".pagebuilder-content-type\");\n    };\n\n    _createClass(Toolbar, [{\n      key: \"template\",\n      get: function get() {\n        return \"Magento_PageBuilder/content-type-toolbar\";\n      }\n    }]);\n\n    return Toolbar;\n  }();\n  /**\n   * Preview interface for preview instances implementation the toolbar functionality\n   */\n\n\n  return Toolbar;\n});\n//# sourceMappingURL=content-type-toolbar.js.map","Magento_PageBuilder/js/stage.js":"/*eslint-disable */\n/* jscs:disable */\ndefine([\"jquery\", \"knockout\", \"Magento_PageBuilder/js/events\", \"Magento_PageBuilder/js/resource/jquery/ui/jquery.ui.touch-punch\", \"mageUtils\", \"underscore\", \"Magento_PageBuilder/js/binding/sortable\", \"Magento_PageBuilder/js/collection\", \"Magento_PageBuilder/js/data-store\", \"Magento_PageBuilder/js/drag-drop/matrix\", \"Magento_PageBuilder/js/master-format/render\", \"Magento_PageBuilder/js/stage-builder\", \"Magento_PageBuilder/js/utils/editor\", \"Magento_PageBuilder/js/utils/promise-deferred\"], function (_jquery, _knockout, _events, _jqueryUi, _mageUtils, _underscore, _sortable, _collection, _dataStore, _matrix, _render, _stageBuilder, _editor, _promiseDeferred) {\n  /**\n   * Copyright \u00a9 Magento, Inc. All rights reserved.\n   * See COPYING.txt for license details.\n   */\n  var Stage = /*#__PURE__*/function () {\n    \"use strict\";\n\n    /**\n     * We always complete a single render when the stage is first loaded, so we can set the lock when the stage is\n     * created. The lock is used to halt the parent forms submission when Page Builder is rendering.\n     */\n\n    /**\n     * Debounce the applyBindings call by 500ms to stop duplicate calls\n     *\n     * @type {(() => void) & _.Cancelable}\n     */\n\n    /**\n     * @param {PageBuilderInterface} pageBuilder\n     * @param {ContentTypeCollectionInterface} rootContainer\n     */\n    function Stage(pageBuilder, rootContainer) {\n      var _this = this;\n\n      this.loading = _knockout.observable(true);\n      this.showBorders = _knockout.observable(false);\n      this.interacting = _knockout.observable(false);\n      this.userSelect = _knockout.observable(true);\n      this.focusChild = _knockout.observable(false);\n      this.dataStore = new _dataStore();\n      this.afterRenderDeferred = (0, _promiseDeferred)();\n      this.renderingLocks = [];\n      this.template = \"Magento_PageBuilder/content-type/preview\";\n      this.collection = new _collection();\n      this.applyBindingsDebounce = _underscore.debounce(function (renderId) {\n        _this.render.applyBindings(_this.rootContainer).then(function (renderedOutput) {\n          if (_this.lastRenderId === renderId) {\n            _events.trigger(\"stage:\" + _this.id + \":masterFormatRenderAfter\", {\n              value: (0, _editor.unescapeDoubleQuoteWithinWidgetDirective)(renderedOutput)\n            });\n\n            _this.renderingLocks.forEach(function (lock) {\n              lock.resolve(renderedOutput);\n            });\n          }\n        }).catch(function (error) {\n          if (error) {\n            console.error(error);\n          }\n        });\n      }, 500);\n      this.pageBuilder = pageBuilder;\n      this.id = pageBuilder.id;\n      this.render = new _render(pageBuilder.id);\n      this.rootContainer = rootContainer;\n      (0, _matrix.generateAllowedParents)(); // Fire an event after the DOM has rendered\n\n      this.afterRenderDeferred.promise.then(function () {\n        _this.render.setupChannel();\n\n        _events.trigger(\"stage:\" + _this.id + \":renderAfter\", {\n          stage: _this\n        });\n      }); // Wait for the stage to be built alongside the stage being rendered\n\n      Promise.all([(0, _stageBuilder)(this, (0, _editor.escapeDoubleQuoteWithinWidgetDirective)(this.pageBuilder.initialValue)), this.afterRenderDeferred.promise]).then(this.ready.bind(this)).catch(function (error) {\n        console.error(error);\n      });\n    }\n    /**\n     * Get template.\n     *\n     * @returns {string}\n     */\n\n\n    var _proto = Stage.prototype;\n\n    _proto.getTemplate = function getTemplate() {\n      return this.template;\n    }\n    /**\n     * The stage has been initiated fully and is ready\n     */\n    ;\n\n    _proto.ready = function ready() {\n      _events.trigger(\"stage:\" + this.id + \":readyAfter\", {\n        stage: this\n      });\n\n      this.loading(false);\n      this.initListeners(); // Ensure we complete an initial save of the data within the stage once we're ready\n\n      _events.trigger(\"stage:updateAfter\", {\n        stageId: this.id\n      });\n    }\n    /**\n     * Init listeners\n     */\n    ;\n\n    _proto.initListeners = function initListeners() {\n      var _this2 = this;\n\n      this.collection.getChildren().subscribe(function () {\n        return _events.trigger(\"stage:updateAfter\", {\n          stageId: _this2.id\n        });\n      }); // ContentType being removed from container\n\n      _events.on(\"contentType:removeAfter\", function (args) {\n        if (args.stageId === _this2.id) {\n          _this2.onContentTypeRemoved(args);\n        }\n      }); // Any store state changes trigger a stage update event\n\n\n      this.dataStore.subscribe(function () {\n        return _events.trigger(\"stage:updateAfter\", {\n          stageId: _this2.id\n        });\n      }); // Watch for stage update events & manipulations to the store, debounce for 50ms as multiple stage changes\n      // can occur concurrently.\n\n      _events.on(\"stage:updateAfter\", function (args) {\n        if (args.stageId === _this2.id) {\n          // Create the rendering lock straight away\n          _this2.createLock();\n\n          var renderId = _mageUtils.uniqueid();\n\n          _this2.lastRenderId = renderId;\n\n          _this2.applyBindingsDebounce(renderId);\n        }\n      });\n\n      var interactionLevel = 0;\n\n      _events.on(\"stage:interactionStart\", function () {\n        ++interactionLevel;\n\n        _this2.interacting(true);\n      });\n\n      _events.on(\"stage:interactionStop\", function (args) {\n        var forced = _underscore.isObject(args) && args.force === true;\n        interactionLevel = Math.max(interactionLevel - 1, 0);\n\n        if (interactionLevel === 0 || forced) {\n          _this2.interacting(false);\n\n          if (forced) {\n            interactionLevel = 0;\n          }\n        }\n      });\n\n      _events.on(\"stage:childFocusStart\", function () {\n        return _this2.focusChild(true);\n      });\n\n      _events.on(\"stage:childFocusStop\", function () {\n        return _this2.focusChild(false);\n      });\n    }\n    /**\n     * Create a new lock for rendering\n     */\n    ;\n\n    _proto.createLock = function createLock() {\n      this.renderingLocks.push(_jquery.Deferred());\n    }\n    /**\n     * On content type removed\n     *\n     * @param params\n     */\n    ;\n\n    _proto.onContentTypeRemoved = function onContentTypeRemoved(params) {\n      if (params.parentContentType) {\n        params.parentContentType.removeChild(params.contentType);\n      }\n    };\n\n    return Stage;\n  }();\n\n  Stage.rootContainerName = \"root-container\";\n  return Stage;\n});\n//# sourceMappingURL=stage.js.map","Magento_PageBuilder/js/panel.js":"/*eslint-disable */\n/* jscs:disable */\ndefine([\"consoleLogger\", \"jquery\", \"knockout\", \"mage/translate\", \"Magento_PageBuilder/js/events\", \"underscore\", \"Magento_PageBuilder/js/binding/draggable\", \"Magento_PageBuilder/js/config\", \"Magento_PageBuilder/js/drag-drop/drop-indicators\", \"Magento_PageBuilder/js/drag-drop/registry\", \"Magento_PageBuilder/js/panel/menu\", \"Magento_PageBuilder/js/panel/menu/content-type\", \"Magento_PageBuilder/js/utils/position-sticky\"], function (_consoleLogger, _jquery, _knockout, _translate, _events, _underscore, _draggable, _config, _dropIndicators, _registry, _menu, _contentType, _positionSticky) {\n  /**\n   * Copyright \u00a9 Magento, Inc. All rights reserved.\n   * See COPYING.txt for license details.\n   */\n\n  /**\n   * @api\n   */\n  var Panel = /*#__PURE__*/function () {\n    \"use strict\";\n\n    function Panel(pageBuilder) {\n      this.menuSections = _knockout.observableArray([]);\n      this.searchResults = _knockout.observableArray([]);\n      this.isVisible = _knockout.observable(false);\n      this.isStickyBottom = _knockout.observable(false);\n      this.isStickyTop = _knockout.observable(false);\n      this.searching = _knockout.observable(false);\n      this.searchValue = _knockout.observable(\"\");\n      this.searchPlaceholder = (0, _translate)(\"Find items\");\n      this.searchNoResult = (0, _translate)(\"Nothing found\");\n      this.searchTitle = (0, _translate)(\"Clear Search\");\n      this.template = \"Magento_PageBuilder/panel\";\n      this.pageBuilder = pageBuilder;\n      this.id = this.pageBuilder.id;\n      this.initListeners();\n    }\n    /**\n     * On render init the panel\n     *\n     * @param {Element} element\n     */\n\n\n    var _proto = Panel.prototype;\n\n    _proto.afterRender = function afterRender(element) {\n      this.element = element;\n    }\n    /**\n     * Init listeners\n     */\n    ;\n\n    _proto.initListeners = function initListeners() {\n      var _this = this;\n\n      _events.on(\"stage:\" + this.id + \":readyAfter\", function () {\n        _this.populateContentTypes();\n\n        if (!(0, _positionSticky.supportsPositionSticky)()) {\n          _this.onScroll();\n        }\n\n        _this.isVisible(true);\n      });\n    }\n    /**\n     * Return the template string\n     *\n     * @returns {string}\n     */\n    ;\n\n    _proto.getTemplate = function getTemplate() {\n      return this.template;\n    }\n    /**\n     * Conduct a search on the available content types,\n     * and find matches for beginning of words.\n     *\n     * @param self\n     * @param event\n     */\n    ;\n\n    _proto.search = function search(self, event) {\n      var _this2 = this;\n\n      this.searchValue(event.currentTarget.value.toLowerCase());\n\n      if (this.searchValue() === \"\") {\n        this.searching(false);\n      } else {\n        this.searching(true);\n        this.searchResults(_underscore.map(_underscore.filter(_config.getConfig(\"content_types\"), function (contentType) {\n          if (contentType.is_system !== true) {\n            return false;\n          }\n\n          var escapedSearchValue = self.searchValue().replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, \"\\\\$&\");\n          var regEx = new RegExp(\"\\\\b\" + escapedSearchValue, \"gi\");\n          return regEx.test(contentType.label.toLowerCase());\n        }), function (contentType, identifier) {\n          // Create a new instance of GroupContentType for each result\n          return new _contentType.ContentType(identifier, contentType, _this2.pageBuilder.stage.id);\n        }));\n      }\n    }\n    /**\n     * Clear Search Results\n     */\n    ;\n\n    _proto.clearSearch = function clearSearch() {\n      this.searchValue(\"\");\n      this.searching(false);\n    }\n    /**\n     * Toggle stickiness of panel based on browser scroll position and height of panel\n     * Enable panel stickiness if panel and stage are available\n     * Only stick when panel height is smaller than stage height\n     * Stick panel to top when scroll reaches top position of stage\n     * Stick panel to bottom when scroll reaches bottom position of stage\n     */\n    ;\n\n    _proto.onScroll = function onScroll() {\n      var self = this;\n      var pageActions = (0, _jquery)(\".page-actions\");\n      var panel = (0, _jquery)(this.element);\n      panel.addClass(\"no-position-sticky\");\n      var stage = panel.siblings(\".pagebuilder-stage\");\n      (0, _jquery)(window).scroll(function () {\n        if (panel && panel.offset()) {\n          var panelOffsetTop = panel.offset().top;\n          var stageOffsetTop = stage.offset().top;\n          var panelHeight = panel.outerHeight();\n          var stageHeight = stage.outerHeight();\n          var currentPanelBottom = Math.round(panelOffsetTop + panel.outerHeight(true) - (0, _jquery)(this).scrollTop());\n          var currentStageBottom = Math.round(stageOffsetTop + stage.outerHeight(true) - (0, _jquery)(this).scrollTop());\n          var currentPanelTop = Math.round(panelOffsetTop - (0, _jquery)(this).scrollTop());\n          var currentStageTop = Math.round(stageOffsetTop - (0, _jquery)(this).scrollTop()); // When panel height is less than stage, begin stickiness\n\n          if (panelHeight <= stageHeight && pageActions.hasClass(\"_fixed\")) {\n            var pageActionsHeight = pageActions.outerHeight() + 15; // When scroll reaches top of stage, stick panel to top\n\n            if (currentStageTop <= pageActionsHeight) {\n              // When panel reaches bottom of stage, stick panel to bottom of stage\n              if (currentPanelBottom >= currentStageBottom && currentPanelTop <= pageActionsHeight) {\n                self.isStickyBottom(true);\n                self.isStickyTop(false);\n              } else {\n                self.isStickyBottom(false);\n                self.isStickyTop(true);\n              }\n            } else {\n              self.isStickyBottom(false);\n              self.isStickyTop(false);\n            }\n          } else {\n            self.isStickyBottom(false);\n            self.isStickyTop(false);\n          }\n        }\n      });\n    }\n    /**\n     * Retrieve the draggable options for the panel items\n     *\n     * @returns {JQueryUI.DraggableOptions}\n     */\n    ;\n\n    _proto.getDraggableOptions = function getDraggableOptions(element) {\n      // If we're within a modal make the containment be the current modal\n      var containment;\n\n      if ((0, _jquery)(element).parents(\".modal-inner-wrap\").length > 0) {\n        containment = (0, _jquery)(element).parents(\".modal-inner-wrap\");\n      }\n\n      var self = this;\n      return {\n        appendTo: \"body\",\n        cursor: \"-webkit-grabbing\",\n        connectToSortable: \".content-type-drop\",\n        containment: containment || \"document\",\n        scroll: true,\n        helper: function helper() {\n          return (0, _jquery)(this).clone().css({\n            width: (0, _jquery)(this).width(),\n            height: (0, _jquery)(this).height(),\n            zIndex: 10001,\n            pointerEvents: \"none\"\n          });\n        },\n        start: function start() {\n          var block = _knockout.dataFor(this);\n\n          if (block && block.config) {\n            // Blur any focused element\n            if (document.querySelector(\":focus\")) {\n              document.querySelector(\":focus\").blur();\n            }\n            /**\n             * Swap all sortable instances to use intersect, as the item from the left panel is a predictable\n             * size this yields better results when dragging\n             */\n\n\n            (0, _jquery)(\".content-type-container.ui-sortable\").each(function () {\n              if ((0, _jquery)(this).data(\"ui-sortable\")) {\n                (0, _jquery)(this).sortable(\"option\", \"tolerance\", \"intersect\");\n              }\n            });\n            (0, _dropIndicators.showDropIndicators)(block.config.name, self.pageBuilder.stage.id);\n            (0, _registry.setDraggedContentTypeConfig)(block.config);\n\n            _events.trigger(\"stage:interactionStart\", {\n              stage: self.pageBuilder.stage\n            });\n          }\n        },\n        stop: function stop() {\n          (0, _jquery)(\".content-type-container.ui-sortable\").each(function () {\n            if ((0, _jquery)(this).data(\"ui-sortable\")) {\n              (0, _jquery)(this).sortable(\"option\", \"tolerance\", \"pointer\");\n            }\n          });\n          (0, _dropIndicators.hideDropIndicators)();\n          (0, _registry.setDraggedContentTypeConfig)(null);\n\n          _events.trigger(\"stage:interactionStop\", {\n            stage: self.pageBuilder.stage\n          });\n        }\n      };\n    }\n    /**\n     * Populate the panel with the content types\n     */\n    ;\n\n    _proto.populateContentTypes = function populateContentTypes() {\n      var _this3 = this;\n\n      var menuSections = _config.getConfig(\"menu_sections\");\n\n      var contentTypes = _config.getConfig(\"content_types\"); // Verify the configuration contains the required information\n\n\n      if (menuSections && contentTypes) {\n        // Iterate through the menu sections creating new instances with their associated content types\n        _underscore.each(menuSections, function (menuSection, id) {\n          // Push the menu section instance into the observable array to update the UI\n          _this3.menuSections.push(new _menu.Menu(id, menuSection, _underscore.map(_underscore.where(contentTypes, {\n            menu_section: id,\n            is_system: true\n          }),\n          /* Retrieve content types with menu section id */\n          function (contentType, identifier) {\n            return new _contentType.ContentType(identifier, contentType, _this3.pageBuilder.stage.id);\n          }), _this3.pageBuilder.stage.id));\n        }); // Display the panel\n\n\n        this.isVisible(true); // Open first menu section\n\n        var hasGroups = (0 in this.menuSections());\n\n        if (hasGroups) {\n          this.menuSections()[0].active(true);\n        }\n      } else {\n        _consoleLogger.error(\"Unable to retrieve content types from server, please inspect network requests \" + \"response.\");\n      }\n    };\n\n    return Panel;\n  }();\n\n  return Panel;\n});\n//# sourceMappingURL=panel.js.map","Magento_PageBuilder/js/data-store.js":"/*eslint-disable */\n/* jscs:disable */\ndefine([\"jquery\", \"Magento_PageBuilder/js/utils/object\"], function (_jquery, _object) {\n  /**\n   * Copyright \u00a9 Magento, Inc. All rights reserved.\n   * See COPYING.txt for license details.\n   */\n  var DataStore = /*#__PURE__*/function () {\n    \"use strict\";\n\n    function DataStore() {\n      this.state = {};\n      this.events = (0, _jquery)({});\n      this.previousState = {};\n    }\n\n    var _proto = DataStore.prototype;\n\n    /**\n     * Retrieve specific data from the data store\n     *\n     * @param {string} key\n     * @param defaultValue\n     * @returns {T}\n     */\n    _proto.get = function get(key, defaultValue) {\n      return (0, _object.get)(this.state, key, defaultValue);\n    }\n    /**\n     * Retrieve the entire state of the data object\n     *\n     * @returns {DataObject}\n     */\n    ;\n\n    _proto.getState = function getState() {\n      return this.state;\n    }\n    /**\n     * Retrieve the entire previous state of the data object\n     *\n     * @returns {DataObject}\n     */\n    ;\n\n    _proto.getPreviousState = function getPreviousState() {\n      return this.previousState;\n    }\n    /**\n     * Set a specific keys value in the data store\n     *\n     * @param {string} key\n     * @param value\n     */\n    ;\n\n    _proto.set = function set(key, value) {\n      this.previousState = Object.assign({}, this.state);\n      (0, _object.set)(this.state, key, value);\n      this.emitState();\n    }\n    /**\n     * Update the entire state for the content type\n     *\n     * @param {DataObject} state\n     */\n    ;\n\n    _proto.setState = function setState(state) {\n      this.previousState = Object.assign({}, this.state);\n      this.state = state;\n      this.emitState();\n    }\n    /**\n     * Remove item from DataStore\n     *\n     * @param {string | number} key\n     */\n    ;\n\n    _proto.unset = function unset(key) {\n      var storeState = this.state;\n      delete storeState[key];\n      this.setState(storeState);\n    }\n    /**\n     * Subscribe to data changes within the data store of a content type\n     *\n     * @param {(state: DataObject, event: Event) => void} handler\n     * @param {string | number} key\n     */\n    ;\n\n    _proto.subscribe = function subscribe(handler, key) {\n      var _this = this;\n\n      this.events.on(\"state\", function (event, data) {\n        if (key) {\n          if (_this.previousState[key] !== data.state[key]) {\n            handler(data.state, event);\n          }\n        } else {\n          if (_this.previousState !== data.state) {\n            handler(data.state, event);\n          }\n        }\n      });\n    }\n    /**\n     * Emit state updates through events\n     */\n    ;\n\n    _proto.emitState = function emitState() {\n      this.events.trigger(\"state\", {\n        state: this.state\n      });\n    };\n\n    return DataStore;\n  }();\n\n  return DataStore;\n});\n//# sourceMappingURL=data-store.js.map","Magento_PageBuilder/js/config.js":"/*eslint-disable */\n/* jscs:disable */\ndefine([\"underscore\"], function (_underscore) {\n  /**\n   * Copyright \u00a9 Magento, Inc. All rights reserved.\n   * See COPYING.txt for license details.\n   */\n  var Config = /*#__PURE__*/function () {\n    \"use strict\";\n\n    function Config() {}\n\n    /**\n     * Set the initial config\n     *\n     * @param config\n     */\n    Config.setConfig = function setConfig(config) {\n      Config.config = _underscore.extend(Config.config, config);\n    }\n    /**\n     * Set the current instances mode, this differs between preview or master depending on whether we're rendering the\n     * admins preview or rendering the master format.\n     *\n     * @param {\"Preview\" | \"Master\"} mode\n     */\n    ;\n\n    Config.setMode = function setMode(mode) {\n      Config.mode = mode;\n    }\n    /**\n     * Retrieve the current instances mode\n     */\n    ;\n\n    Config.getMode = function getMode() {\n      return Config.mode;\n    }\n    /**\n     * Retrieve the init config\n     *\n     * @param {string} key\n     * @returns {T}\n     */\n    ;\n\n    Config.getConfig = function getConfig(key) {\n      if (key) {\n        if (typeof Config.config[key] !== \"undefined\") {\n          return Config.config[key];\n        }\n\n        return null;\n      }\n\n      return Config.config;\n    }\n    /**\n     * Retrieve a content type from the configuration\n     *\n     * @param {string} contentType\n     * @returns {any}\n     */\n    ;\n\n    Config.getContentTypeConfig = function getContentTypeConfig(contentType) {\n      if (typeof Config.getConfig(\"content_types\")[contentType] !== \"undefined\") {\n        return Config.getConfig(\"content_types\")[contentType];\n      }\n\n      return null;\n    };\n\n    return Config;\n  }();\n\n  Config.config = {\n    dataContentTypeAttributeName: \"data-content-type\",\n    bodyId: \"html-body\"\n  };\n  return Config;\n});\n//# sourceMappingURL=config.js.map","Magento_PageBuilder/js/events.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine(['uiEvents'], function (uiEvents) {\n    'use strict';\n\n    return {\n\n        /**\n         * Calls callback when name event is triggered\n         *\n         * @param {String} events\n         * @param {Function} callback\n         * @param {Function} ns\n         * @return {Object}\n         */\n        on: function (events, callback, ns) {\n            uiEvents.on('pagebuilder:' + events, callback, 'pagebuilder:' + ns);\n\n            return this;\n        },\n\n        /**\n         * Removed callback from listening to target event\n         *\n         * @param {String} ns\n         * @return {Object}\n         */\n        off: function (ns) {\n            uiEvents.off('pagebuilder:' + ns);\n\n            return this;\n        },\n\n        /**\n         * Triggers event and executes all attached callbacks\n         *\n         * @param {String} name\n         * @param {any} args\n         * @returns {Boolean}\n         */\n        trigger: function (name, args) {\n            return uiEvents.trigger('pagebuilder:' + name, args);\n        }\n    };\n});\n","Magento_PageBuilder/js/collection.js":"/*eslint-disable */\n/* jscs:disable */\ndefine([\"knockout\", \"Magento_PageBuilder/js/utils/array\"], function (_knockout, _array) {\n  /**\n   * Copyright \u00a9 Magento, Inc. All rights reserved.\n   * See COPYING.txt for license details.\n   */\n\n  /**\n   * @api\n   */\n  var Collection = /*#__PURE__*/function () {\n    \"use strict\";\n\n    function Collection(children) {\n      this.children = children ? children : _knockout.observableArray([]);\n    }\n    /**\n     * Return the children of the current element\n     *\n     * @returns {KnockoutObservableArray<ContentTypeInterface | ContentTypeCollectionInterface>}\n     */\n\n\n    var _proto = Collection.prototype;\n\n    _proto.getChildren = function getChildren() {\n      return this.children;\n    }\n    /**\n     * Add a child into the observable array\n     *\n     * @param child\n     * @param index\n     */\n    ;\n\n    _proto.addChild = function addChild(child, index) {\n      if (typeof index === \"number\") {\n        // Use the arrayUtil function to add the item in the correct place within the array\n        (0, _array.moveArrayItemIntoArray)(child, this.children, index);\n      } else {\n        this.children.push(child);\n      }\n    }\n    /**\n     * Remove a child from the observable array\n     *\n     * @param child\n     */\n    ;\n\n    _proto.removeChild = function removeChild(child) {\n      (0, _array.removeArrayItem)(this.children, child);\n    }\n    /**\n     * Set the children observable array into the class\n     *\n     * @param children\n     */\n    ;\n\n    _proto.setChildren = function setChildren(children) {\n      this.children = children;\n    };\n\n    return Collection;\n  }();\n\n  return Collection;\n});\n//# sourceMappingURL=collection.js.map","Magento_PageBuilder/js/widget-initializer.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\n/**\n * @api\n */\ndefine([\n    'underscore',\n    'jquery',\n    'mage/apply/main',\n    'Magento_Ui/js/lib/view/utils/dom-observer'\n], function (_, $, mage, domObserver) {\n    'use strict';\n\n    /**\n     * Initializes components assigned to HTML elements.\n     *\n     *\n     * @param {HTMLElement} el\n     * @param {Array} data\n     * @param {Object} breakpoints\n     * @param {Object} currentViewport\n     */\n    function initializeWidget(el, data, breakpoints, currentViewport) {\n        _.each(data, function (config, component) {\n            config = config || {};\n            config.breakpoints = breakpoints;\n            config.currentViewport = currentViewport;\n            mage.applyFor(el, config, component);\n        });\n    }\n\n    return function (data, contextElement) {\n        _.each(data.config, function (componentConfiguration, elementPath) {\n            domObserver.get(\n                elementPath,\n                function (element) {\n                    var $element = $(element);\n\n                    if (contextElement) {\n                        $element = $(contextElement).find(element);\n                    }\n\n                    if ($element.length) {\n                        initializeWidget($element, componentConfiguration, data.breakpoints, data.currentViewport);\n                    }\n                }\n            );\n        });\n    };\n});\n","Magento_PageBuilder/js/page-builder.js":"/*eslint-disable */\n/* jscs:disable */\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\ndefine([\"jquery\", \"knockout\", \"mage/translate\", \"Magento_PageBuilder/js/events\", \"Magento_Ui/js/lib/knockout/template/loader\", \"Magento_Ui/js/modal/alert\", \"mageUtils\", \"underscore\", \"Magento_PageBuilder/js/acl\", \"Magento_PageBuilder/js/binding/style\", \"Magento_PageBuilder/js/config\", \"Magento_PageBuilder/js/content-type-factory\", \"Magento_PageBuilder/js/panel\", \"Magento_PageBuilder/js/stage\", \"Magento_PageBuilder/js/template-manager\"], function (_jquery, _knockout, _translate, _events, _loader, _alert, _mageUtils, _underscore, _acl, _style, _config, _contentTypeFactory, _panel, _stage, _templateManager) {\n  /**\n   * Copyright \u00a9 Magento, Inc. All rights reserved.\n   * See COPYING.txt for license details.\n   */\n  var PageBuilder = /*#__PURE__*/function () {\n    \"use strict\";\n\n    function PageBuilder(config, initialValue) {\n      var _this = this;\n\n      this.template = \"Magento_PageBuilder/page-builder\";\n      this.isStageReady = _knockout.observable(false);\n      this.id = _mageUtils.uniqueid();\n      this.originalScrollTop = 0;\n      this.isFullScreen = _knockout.observable(false);\n      this.isSnapshot = _knockout.observable(false);\n      this.isSnapshotTransition = _knockout.observable(false);\n      this.loading = _knockout.observable(true);\n      this.wrapperStyles = _knockout.observable({});\n      this.stageStyles = _knockout.observable({});\n      this.viewport = _knockout.observable(\"\");\n      this.viewports = {};\n      this.viewportClasses = {};\n      this.previousStyles = {};\n\n      _config.setConfig(config);\n\n      _config.setMode(\"Preview\");\n\n      this.preloadTemplates(config);\n      this.initialValue = initialValue;\n      this.initViewports(config);\n      this.isFullScreen(config.isFullScreen);\n      this.isSnapshot(!!config.pagebuilder_content_snapshot);\n      this.isSnapshotTransition(false);\n      this.snapshot = !!config.pagebuilder_content_snapshot;\n      this.config = config;\n      this.isAllowedTemplateApply = (0, _acl.isAllowed)(_acl.resources.TEMPLATE_APPLY);\n      this.isAllowedTemplateSave = (0, _acl.isAllowed)(_acl.resources.TEMPLATE_SAVE); // Create the required root container for the stage\n\n      (0, _contentTypeFactory)(_config.getContentTypeConfig(_stage.rootContainerName), null, this.id).then(function (rootContainer) {\n        _this.stage = new _stage(_this, rootContainer);\n\n        _this.isStageReady(true);\n      });\n      this.panel = new _panel(this);\n      this.initListeners();\n    }\n    /**\n     * Destroy rootContainer instance.\n     */\n\n\n    var _proto = PageBuilder.prototype;\n\n    _proto.destroy = function destroy() {\n      this.stage.rootContainer.destroy();\n    }\n    /**\n     * Init listeners.\n     */\n    ;\n\n    _proto.initListeners = function initListeners() {\n      var _this2 = this;\n\n      _events.on(\"stage:\" + this.id + \":toggleFullscreen\", this.toggleFullScreen.bind(this));\n\n      this.isFullScreen.subscribe(function () {\n        return _this2.onFullScreenChange();\n      });\n    }\n    /**\n     * Tells the stage wrapper to expand to fullScreen\n     *\n     * @param {StageToggleFullScreenParamsInterface} args\n     */\n    ;\n\n    _proto.toggleFullScreen = function toggleFullScreen(args) {\n      var _this3 = this;\n\n      if (args.animate === false) {\n        this.isFullScreen(!this.isFullScreen());\n        return;\n      }\n\n      var stageWrapper = (0, _jquery)(\"#\" + this.stage.id).parent();\n      var pageBuilderWrapper = stageWrapper.parents(\".pagebuilder-wysiwyg-wrapper\");\n      var panel = stageWrapper.find(\".pagebuilder-panel\");\n\n      if (this.snapshot) {\n        stageWrapper.scrollTop(0);\n      }\n\n      if (!this.isFullScreen()) {\n        pageBuilderWrapper.css(\"height\", pageBuilderWrapper.outerHeight());\n        /**\n         * Fix the stage in the exact place it is when it's part of the content and allow it to transition to full\n         * screen.\n         */\n\n        var xPosition = parseInt(stageWrapper.offset().top.toString(), 10) - parseInt((0, _jquery)(window).scrollTop().toString(), 10) - (this.snapshot ? 63 : 0);\n        var yPosition = stageWrapper.offset().left - (this.snapshot ? 150 : 0);\n        this.previousStyles = {\n          position: this.snapshot ? \"relative\" : \"fixed\",\n          top: xPosition + \"px\",\n          left: yPosition + \"px\",\n          zIndex: \"800\",\n          width: stageWrapper.outerWidth().toString() + \"px\"\n        };\n\n        if (this.snapshot) {\n          this.isSnapshot(false);\n          this.stageStyles(this.previousStyles);\n        } else {\n          this.previousPanelHeight = panel.outerHeight();\n          panel.css(\"height\", this.previousPanelHeight + \"px\");\n          this.wrapperStyles(this.previousStyles);\n        }\n\n        this.isFullScreen(true);\n\n        _underscore.defer(function () {\n          // Remove all styles we applied to fix the position once we're transitioning\n          panel.css(\"height\", \"\");\n\n          if (_this3.snapshot) {\n            _this3.stageStyles(Object.keys(_this3.previousStyles).reduce(function (object, styleName) {\n              var _Object$assign;\n\n              return Object.assign(object, (_Object$assign = {}, _Object$assign[styleName] = \"\", _Object$assign));\n            }, {}));\n          } else {\n            _this3.wrapperStyles(Object.keys(_this3.previousStyles).reduce(function (object, styleName) {\n              var _Object$assign2;\n\n              return Object.assign(object, (_Object$assign2 = {}, _Object$assign2[styleName] = \"\", _Object$assign2));\n            }, {}));\n          }\n        });\n      } else {\n        // When leaving full screen mode just transition back to the original state\n        if (this.snapshot) {\n          this.isSnapshotTransition(true);\n          this.stageStyles(this.previousStyles);\n        } else {\n          this.wrapperStyles(this.previousStyles);\n          this.isFullScreen(false);\n        }\n\n        panel.css(\"height\", this.previousPanelHeight + \"px\"); // Wait for the 350ms animation to complete before changing these properties back\n\n        _underscore.delay(function () {\n          if (_this3.snapshot) {\n            _this3.isSnapshot(true);\n\n            _this3.isSnapshotTransition(false);\n\n            _this3.stageStyles(Object.keys(_this3.previousStyles).reduce(function (object, styleName) {\n              var _Object$assign3;\n\n              return Object.assign(object, (_Object$assign3 = {}, _Object$assign3[styleName] = \"\", _Object$assign3));\n            }, {}));\n\n            _this3.isFullScreen(false);\n          } else {\n            _this3.wrapperStyles(Object.keys(_this3.previousStyles).reduce(function (object, styleName) {\n              var _Object$assign4;\n\n              return Object.assign(object, (_Object$assign4 = {}, _Object$assign4[styleName] = \"\", _Object$assign4));\n            }, {}));\n          }\n\n          panel.css(\"height\", \"\");\n          pageBuilderWrapper.css(\"height\", \"\");\n          _this3.previousStyles = {};\n          _this3.previousPanelHeight = null;\n        }, 350);\n      }\n\n      return true;\n    }\n    /**\n     * Change window scroll base on full screen mode.\n     */\n    ;\n\n    _proto.onFullScreenChange = function onFullScreenChange() {\n      if (this.isFullScreen()) {\n        (0, _jquery)(\"body\").css(\"overflow\", \"hidden\");\n      } else {\n        (0, _jquery)(\"body\").css(\"overflow\", \"\");\n      }\n\n      _events.trigger(\"stage:\" + this.id + \":fullScreenModeChangeAfter\", {\n        fullScreen: this.isFullScreen()\n      });\n\n      _events.trigger(\"stage:fullScreenModeChangeAfter\", {\n        pageBuilderId: this.id,\n        fullScreen: this.isFullScreen()\n      });\n    }\n    /**\n     * Get template.\n     *\n     * @returns {string}\n     */\n    ;\n\n    _proto.getTemplate = function getTemplate() {\n      return this.template;\n    };\n\n    /**\n     * Toggle template manager\n     */\n    _proto.toggleTemplateManger = function toggleTemplateManger() {\n      if (!(0, _acl.isAllowed)(_acl.resources.TEMPLATE_APPLY)) {\n        (0, _alert)({\n          content: (0, _translate)(\"You do not have permission to apply templates.\"),\n          title: (0, _translate)(\"Permission Error\")\n        });\n        return false;\n      }\n\n      _events.trigger(\"stage:templateManager:open\", {\n        stage: this.stage\n      });\n    }\n    /**\n     * Enable saving the current stage as a template\n     */\n    ;\n\n    _proto.saveAsTemplate = function saveAsTemplate() {\n      return (0, _templateManager.saveAsTemplate)(this.stage);\n    };\n\n    _proto.toggleViewport = function toggleViewport(viewport) {\n      var previousViewport = this.viewport();\n      this.viewport(viewport);\n\n      _underscore.each(this.viewportClasses, function (viewportClass) {\n        viewportClass(false);\n      });\n\n      this.viewportClasses[viewport + \"-viewport\"](true);\n\n      _config.setConfig({\n        viewport: viewport\n      });\n\n      _events.trigger(\"stage:\" + this.id + \":viewportChangeAfter\", {\n        viewport: viewport,\n        previousViewport: previousViewport\n      });\n\n      _events.trigger(\"stage:viewportChangeAfter\", {\n        viewport: viewport,\n        previousViewport: previousViewport\n      });\n    }\n    /**\n     * Preload all templates into the window to reduce calls later in the app\n     *\n     * @param config\n     */\n    ;\n\n    _proto.preloadTemplates = function preloadTemplates(config) {\n      var previewTemplates = _underscore.values(config.content_types).map(function (contentType) {\n        return _underscore.values(contentType.appearances).map(function (appearance) {\n          return appearance.preview_template;\n        });\n      }).reduce(function (array, value) {\n        return array.concat(value);\n      }, []).map(function (value) {\n        return (0, _loader.formatPath)(value);\n      });\n\n      _underscore.defer(function () {\n        require(previewTemplates);\n      });\n    };\n\n    _proto.initViewports = function initViewports(config) {\n      var _this4 = this;\n\n      this.viewports = config.viewports;\n      this.defaultViewport = config.defaultViewport;\n      this.viewport(this.defaultViewport);\n\n      _config.setConfig({\n        viewport: this.defaultViewport\n      });\n\n      _underscore.each(this.viewports, function (viewport, name) {\n        _this4.viewportClasses[name + \"-viewport\"] = _knockout.observable(name === _this4.defaultViewport);\n      });\n    };\n\n    _createClass(PageBuilder, [{\n      key: \"viewportTemplate\",\n      get: function get() {\n        return \"Magento_PageBuilder/viewport/switcher\";\n      }\n    }]);\n\n    return PageBuilder;\n  }();\n\n  return PageBuilder;\n});\n//# sourceMappingURL=page-builder.js.map","Magento_PageBuilder/js/content-type-collection.js":"/*eslint-disable */\n/* jscs:disable */\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\ndefine([\"Magento_PageBuilder/js/events\", \"underscore\", \"Magento_PageBuilder/js/collection\", \"Magento_PageBuilder/js/content-type\"], function (_events, _underscore, _collection, _contentType) {\n  /**\n   * Copyright \u00a9 Magento, Inc. All rights reserved.\n   * See COPYING.txt for license details.\n   */\n  var ContentTypeCollection = /*#__PURE__*/function (_contentType2) {\n    \"use strict\";\n\n    _inheritsLoose(ContentTypeCollection, _contentType2);\n\n    /**\n     * @param {ContentTypeInterface} parentContentType\n     * @param {ContentTypeConfigInterface} config\n     * @param {string} stageId\n     */\n    function ContentTypeCollection(parentContentType, config, stageId) {\n      var _this;\n\n      _this = _contentType2.call(this, parentContentType, config, stageId) || this;\n      _this.collection = new _collection();\n\n      _this.collection.getChildren().subscribe(function () {\n        return _events.trigger(\"stage:updateAfter\", {\n          stageId: _this.stageId\n        });\n      });\n\n      return _this;\n    }\n    /**\n     * Return the children of the current element\n     *\n     * @returns {KnockoutObservableArray<ContentTypeInterface | ContentTypeCollectionInterface>}\n     */\n\n\n    var _proto = ContentTypeCollection.prototype;\n\n    _proto.getChildren = function getChildren() {\n      return this.collection.getChildren();\n    }\n    /**\n     * Add a child into the observable array\n     *\n     * @param {ContentTypeInterface | ContentTypeCollectionInterface} child\n     * @param {number} index\n     */\n    ;\n\n    _proto.addChild = function addChild(child, index) {\n      child.parentContentType = this;\n      this.collection.addChild(child, index); // Trigger a mount event when a child is added into a container content type, meaning it'll be re-rendered\n\n      _underscore.defer(function () {\n        _events.trigger(\"contentType:mountAfter\", {\n          id: child.id,\n          contentType: child\n        });\n\n        _events.trigger(child.config.name + \":mountAfter\", {\n          id: child.id,\n          contentType: child\n        });\n      });\n    }\n    /**\n     * Remove a child from the observable array\n     *\n     * @param {ContentTypeInterface} child\n     */\n    ;\n\n    _proto.removeChild = function removeChild(child) {\n      this.collection.removeChild(child);\n    }\n    /**\n     * Destroys current instance and all children\n     */\n    ;\n\n    _proto.destroy = function destroy() {\n      [].concat(this.getChildren()()).forEach(function (contentType) {\n        contentType.destroy();\n      });\n\n      _contentType2.prototype.destroy.call(this);\n    }\n    /**\n     * Set the children observable array into the class\n     *\n     * @param {KnockoutObservableArray<ContentTypeInterface>} children\n     */\n    ;\n\n    _proto.setChildren = function setChildren(children) {\n      this.collection.setChildren(children);\n    };\n\n    _createClass(ContentTypeCollection, [{\n      key: \"children\",\n      get: function get() {\n        return this.collection.getChildren();\n      }\n    }]);\n\n    return ContentTypeCollection;\n  }(_contentType);\n\n  return ContentTypeCollection;\n});\n//# sourceMappingURL=content-type-collection.js.map","Magento_PageBuilder/js/acl.js":"/*eslint-disable */\n/* jscs:disable */\ndefine([\"Magento_PageBuilder/js/config\"], function (_config) {\n  var resources = {\n    TEMPLATE_SAVE: \"template_save\",\n    TEMPLATE_APPLY: \"template_apply\"\n  };\n  /**\n   * Determine if the current user is allowed to access this resource\n   *\n   * Usage: isAllowed(resources.TEMPLATE_SAVE)\n   *\n   * @param resource\n   */\n\n  function isAllowed(resource) {\n    return _config.getConfig(\"acl\")[resource] === true;\n  }\n\n  return {\n    isAllowed: isAllowed,\n    resources: resources\n  };\n});\n//# sourceMappingURL=acl.js.map","Magento_PageBuilder/js/stage-builder.js":"/*eslint-disable */\n/* jscs:disable */\ndefine([\"mage/translate\", \"Magento_PageBuilder/js/events\", \"Magento_Ui/js/modal/alert\", \"underscore\", \"Magento_PageBuilder/js/config\", \"Magento_PageBuilder/js/content-type-collection\", \"Magento_PageBuilder/js/content-type-factory\", \"Magento_PageBuilder/js/content-type/appearance-config\", \"Magento_PageBuilder/js/content-type/style-registry\", \"Magento_PageBuilder/js/master-format/validator\", \"Magento_PageBuilder/js/utils/directives\", \"Magento_PageBuilder/js/utils/loader\", \"Magento_PageBuilder/js/utils/object\"], function (_translate, _events, _alert, _, _config, _contentTypeCollection, _contentTypeFactory, _appearanceConfig, _styleRegistry, _validator, _directives, _loader, _object) {\n  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\n  /**\n   * Copyright \u00a9 Magento, Inc. All rights reserved.\n   * See COPYING.txt for license details.\n   */\n\n  /**\n   * Build the stage with the provided value\n   *\n   * @param {stage} stage\n   * @param {string} value\n   * @returns {Promise<void>}\n   */\n  function buildFromContent(stage, value) {\n    var stageDocument = new DOMParser().parseFromString(value, \"text/html\");\n    stageDocument.body.setAttribute(_config.getConfig(\"dataContentTypeAttributeName\"), \"stage\");\n    stageDocument.body.id = _config.getConfig(\"bodyId\");\n    convertToInlineStyles(stageDocument);\n    return buildElementIntoStage(stageDocument.body, stage.rootContainer, stage);\n  }\n  /**\n   * Convert styles to block to inline styles.\n   *\n   * @param document\n   */\n\n\n  function convertToInlineStyles(document) {\n    var styleBlocks = document.getElementsByTagName(\"style\");\n    var viewportStyles = {};\n\n    _.each(_config.getConfig(\"viewports\"), function (viewport, name) {\n      return viewportStyles[name] = {};\n    });\n\n    if (styleBlocks.length > 0) {\n      Array.from(styleBlocks).forEach(function (styleBlock) {\n        var cssRules = styleBlock.sheet.cssRules;\n        processCssRules(cssRules, viewportStyles, _config.getConfig(\"defaultViewport\"));\n        styleBlock.remove();\n      });\n    }\n\n    _.each(viewportStyles, function (styles, name) {\n      _.each(styles, function (stylesArray, selector) {\n        var element = document.querySelector(selector);\n\n        _.each(stylesArray, function (style) {\n          element.setAttribute(\"data-\" + name + \"-style\", element.getAttribute(\"data-\" + name + \"-style\") ? element.getAttribute(\"data-\" + name + \"-style\") + style.cssText : style.cssText);\n        });\n      });\n    });\n\n    document.querySelectorAll(\"[\" + _styleRegistry.pbStyleAttribute + \"]\").forEach(function (element) {\n      element.removeAttribute(_styleRegistry.pbStyleAttribute);\n    });\n  }\n  /**\n   * Process styles and assign them to corespondent style object.\n   *\n   * @param cssRules\n   * @param styles\n   * @param scope\n   */\n\n\n  function processCssRules(cssRules, styles, scope) {\n    Array.from(cssRules).forEach(function (rule) {\n      if (rule instanceof CSSStyleRule) {\n        var selectors = rule.selectorText.split(\",\").map(function (selector) {\n          return selector.trim();\n        });\n        selectors.forEach(function (selector) {\n          if (!styles[scope][selector]) {\n            styles[scope][selector] = [];\n          }\n\n          styles[scope][selector].push(rule.style);\n        });\n      } else if (rule instanceof CSSMediaRule) {\n        var mediaCssRules = rule.cssRules;\n\n        var mediaScope = _.findKey(_config.getConfig(\"viewports\"), function (viewport) {\n          return rule.conditionText === viewport.media;\n        });\n\n        if (mediaScope) {\n          processCssRules(mediaCssRules, styles, mediaScope);\n        }\n      }\n    });\n  }\n  /**\n   * Build an element and it's children into the stage\n   *\n   * @param {Element} element\n   * @param {ContentTypeCollectionInterface} contentType\n   * @param {stage} stage\n   * @returns {Promise<void>}\n   */\n\n\n  function buildElementIntoStage(element, contentType, stage) {\n    if (element instanceof HTMLElement && element.getAttribute(_config.getConfig(\"dataContentTypeAttributeName\"))) {\n      var childPromises = [];\n      var childElements = [];\n      var children = getElementChildren(element);\n\n      if (children.length > 0) {\n        _.forEach(children, function (childElement) {\n          childPromises.push(createElementContentType(childElement, stage, contentType));\n          childElements.push(childElement);\n        });\n      } // Wait for all the promises to finish and add the instances to the stage\n\n\n      return Promise.all(childPromises).then(function (childrenPromises) {\n        return Promise.all(childrenPromises.map(function (child, index) {\n          contentType.addChild(child); // Only render children if the content type implements the collection\n\n          if (child instanceof _contentTypeCollection) {\n            return buildElementIntoStage(childElements[index], child, stage);\n          }\n        }));\n      });\n    }\n  }\n  /**\n   * Parse an element in the structure and build the required element\n   *\n   * @param {Element} element\n   * @param {ContentTypeCollectionInterface} contentType\n   * @param {stage} stage\n   * @returns {Promise<ContentTypeInterface>}\n   */\n\n\n  function createElementContentType(element, stage, contentType) {\n    contentType = contentType || stage.rootContainer;\n    var role = element.getAttribute(_config.getConfig(\"dataContentTypeAttributeName\"));\n\n    if (!role) {\n      return Promise.reject(\"Invalid master format: Content type element does not contain\\n            \" + _config.getConfig(\"dataContentTypeAttributeName\") + \" attribute.\");\n    }\n\n    var config = _config.getContentTypeConfig(role);\n\n    if (!config) {\n      return Promise.reject(\"Unable to load Page Builder configuration for content type \\\"\" + role + \"\\\".\");\n    }\n\n    return getElementData(element, config).then( // @ts-ignore\n    function (data) {\n      return (0, _contentTypeFactory)(config, contentType, stage.id, data[_config.getConfig(\"defaultViewport\")], getElementChildren(element).length, data);\n    });\n  }\n  /**\n   * Retrieve the elements data\n   *\n   * @param {HTMLElement} element\n   * @param {ContentTypeConfigInterface} config\n   * @returns {Promise<{[p: string]: any}>}\n   */\n\n\n  function getElementData(element, config) {\n    // Create an object with all fields for the content type with an empty value\n    var appearance = element.dataset.appearance + \"-appearance\";\n    var fields = config.fields[appearance] || config.fields.default;\n    var result = createInitialElementData(fields);\n    return new Promise(function (resolve) {\n      var role = element.getAttribute(_config.getConfig(\"dataContentTypeAttributeName\"));\n\n      if (!_config.getConfig(\"content_types\").hasOwnProperty(role)) {\n        resolve(result);\n      } else {\n        var readerComponents = (0, _appearanceConfig)(role, element.dataset.appearance).reader;\n        (0, _loader)([readerComponents], function () {\n          for (var _len = arguments.length, readers = new Array(_len), _key = 0; _key < _len; _key++) {\n            readers[_key] = arguments[_key];\n          }\n\n          var ReaderComponent = readers.pop();\n          var reader = new ReaderComponent();\n          reader.read(element).then(function (readerData) {\n            /**\n             * Iterate through the reader data and set the values onto the result array to ensure dot notation\n             * keys are properly handled.\n             */\n            _.each(readerData[_config.getConfig(\"defaultViewport\")], function (value, key) {\n              (0, _object.set)(result, key, value);\n            });\n\n            readerData[_config.getConfig(\"defaultViewport\")] = result;\n            resolve(readerData);\n          });\n        });\n      }\n    });\n  }\n  /**\n   * Create the initial object for storing the elements data\n   *\n   * @param {ConfigFieldInterface} fields\n   * @returns {FieldDefaultsInterface}\n   */\n\n\n  function createInitialElementData(fields) {\n    return _.mapObject(fields, function (field) {\n      if (!_.isUndefined(field.default)) {\n        return \"\";\n      } else if (_.isObject(field)) {\n        return createInitialElementData(field);\n      }\n    });\n  }\n  /**\n   * Return elements children, search for direct descendants, or traverse through to find deeper children\n   *\n   * @param {HTMLElement} element\n   * @returns {Array<HTMLElement>}\n   */\n\n\n  function getElementChildren(element) {\n    if (element.hasChildNodes()) {\n      var children = []; // Find direct children of the element\n\n      _.forEach(element.childNodes, function (child) {\n        if (child.nodeType === Node.ELEMENT_NODE) {\n          if (child.hasAttribute(_config.getConfig(\"dataContentTypeAttributeName\"))) {\n            children.push(child);\n          } else {\n            children = getElementChildren(child);\n          }\n        }\n      });\n\n      return children;\n    }\n\n    return [];\n  }\n  /**\n   * Build a new instance of stage, add row & text content types if needed\n   *\n   * @param {Stage} stage\n   * @param {string} initialValue\n   * @returns {Promise<any>}\n   */\n\n\n  function buildEmpty(stage, initialValue) {\n    var stageConfig = _config.getConfig(\"stage_config\");\n\n    var rootContainer = stage.rootContainer;\n\n    var rootContentTypeConfig = _config.getContentTypeConfig(stageConfig.root_content_type);\n\n    var htmlDisplayContentTypeConfig = _config.getContentTypeConfig(stageConfig.html_display_content_type); // @ts-ignore\n\n\n    var promise = Promise.resolve();\n\n    if (stageConfig.root_content_type && stageConfig.root_content_type !== \"none\") {\n      promise = (0, _contentTypeFactory)(rootContentTypeConfig, rootContainer, stage.id);\n      promise.then(function (rootContentType) {\n        if (!rootContentType) {\n          return Promise.reject(\"Unable to create initial \" + stageConfig.root_content_type + \" content type \" + \" within stage.\");\n        }\n\n        rootContainer.addChild(rootContentType);\n      });\n    }\n\n    promise.then(function (rootContentType) {\n      if (htmlDisplayContentTypeConfig && initialValue) {\n        return (0, _contentTypeFactory)(htmlDisplayContentTypeConfig, rootContainer, stage.id, {\n          html: initialValue\n        }).then(function (html) {\n          if (rootContentType) {\n            rootContentType.addChild(html);\n          } else {\n            rootContainer.addChild(html);\n          }\n        });\n      }\n    });\n    return promise;\n  }\n  /**\n   * Build a stage with the provided content type, content observable and initial value\n   *\n   * @param {Stage} stage\n   * @param {string} content\n   * @returns {Promise}\n   */\n\n\n  function build(stage, content) {\n    var currentBuild;\n    content = (0, _directives.removeQuotesInMediaDirectives)(content); // Determine if we're building from existing page builder content\n\n    if ((0, _validator)(content)) {\n      currentBuild = buildFromContent(stage, content).catch(function (error) {\n        console.error(error);\n        stage.rootContainer.children([]);\n        currentBuild = buildEmpty(stage, content);\n      });\n    } else {\n      currentBuild = buildEmpty(stage, content);\n    } // Once the build process is finished the stage is ready\n\n\n    return currentBuild.catch(function (error) {\n      (0, _alert)({\n        content: (0, _translate)(\"An error has occurred while initiating Page Builder. Please consult with your technical \" + \"support contact.\"),\n        title: (0, _translate)(\"Page Builder Error\")\n      });\n\n      _events.trigger(\"stage:error\", error);\n\n      console.error(error);\n    });\n  }\n\n  return build;\n});\n//# sourceMappingURL=stage-builder.js.map","Magento_PageBuilder/js/content-type-menu.js":"/*eslint-disable */\n/* jscs:disable */\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\ndefine([\"knockout\", \"underscore\"], function (_knockout, _underscore) {\n  /**\n   * Copyright \u00a9 Magento, Inc. All rights reserved.\n   * See COPYING.txt for license details.\n   */\n\n  /**\n   * @api\n   */\n  var ContentTypeMenu = /*#__PURE__*/function () {\n    \"use strict\";\n\n    /**\n     * Options constructor\n     *\n     * @param preview\n     * @param options\n     */\n    function ContentTypeMenu(preview, options) {\n      var _this = this;\n\n      this.options = _knockout.observableArray([]);\n      this.preview = preview;\n\n      var codes = _underscore.keys(options);\n\n      _underscore.values(options).forEach(function (option, index) {\n        option.code = codes[index];\n\n        _this.options.push(option);\n      });\n\n      this.sort();\n    }\n\n    var _proto = ContentTypeMenu.prototype;\n\n    /**\n     * Get an option from the options array\n     *\n     * @param {string} code\n     * @returns {OptionInterface}\n     */\n    _proto.getOption = function getOption(code) {\n      return this.options().find(function (option) {\n        return option.code === code;\n      });\n    }\n    /**\n     * Sort the options\n     */\n    ;\n\n    _proto.sort = function sort() {\n      this.options.sort(function (a, b) {\n        return a.sort === b.sort ? 0 : a.sort < b.sort ? -1 : 1;\n      });\n    };\n\n    _createClass(ContentTypeMenu, [{\n      key: \"template\",\n      get: function get() {\n        return \"Magento_PageBuilder/content-type/menu\";\n      }\n    }]);\n\n    return ContentTypeMenu;\n  }();\n\n  return ContentTypeMenu;\n});\n//# sourceMappingURL=content-type-menu.js.map","Magento_PageBuilder/js/content-type.js":"/*eslint-disable */\n/* jscs:disable */\ndefine([\"Magento_PageBuilder/js/events\", \"mageUtils\", \"underscore\", \"Magento_PageBuilder/js/config\", \"Magento_PageBuilder/js/data-store\"], function (_events, _mageUtils, _underscore, _config, _dataStore) {\n  /**\n   * Copyright \u00a9 Magento, Inc. All rights reserved.\n   * See COPYING.txt for license details.\n   */\n  var ContentType = /*#__PURE__*/function () {\n    \"use strict\";\n\n    /**\n     * @param {ContentTypeInterface} parentContentType\n     * @param {ContentTypeConfigInterface} config\n     * @param {string} stageId\n     */\n    function ContentType(parentContentType, config, stageId) {\n      this.id = _mageUtils.uniqueid();\n      this.dataStore = new _dataStore();\n      this.dataStores = {};\n      this.dropped = false;\n      this.parentContentType = parentContentType;\n      this.config = config;\n      this.stageId = stageId;\n      this.initDataStores();\n      this.bindEvents();\n    }\n    /**\n     * Destroys current instance\n     */\n\n\n    var _proto = ContentType.prototype;\n\n    _proto.destroy = function destroy() {\n      var params = {\n        contentType: this,\n        index: this.parentContentType ? this.parentContentType.getChildren().indexOf(this) : null,\n        parentContentType: this.parentContentType,\n        stageId: this.stageId\n      };\n      this.preview ? this.preview.destroy() : this.content.destroy();\n\n      _events.trigger(\"contentType:removeAfter\", params);\n\n      _events.trigger(this.config.name + \":removeAfter\", params);\n    }\n    /**\n     * Get viewport fields.\n     *\n     * @param {string} viewport\n     * @param {DataObject} data\n     */\n    ;\n\n    _proto.getViewportFields = function getViewportFields(viewport, data) {\n      var viewportConfig = this.config.breakpoints[viewport];\n\n      if (!viewportConfig) {\n        return {};\n      }\n\n      return viewportConfig.fields[data.appearance + \"-appearance\"] || viewportConfig.fields.default;\n    }\n    /**\n     * Get data stores states only for viewport fields\n     */\n    ;\n\n    _proto.getDataStoresStates = function getDataStoresStates() {\n      var _this = this;\n\n      var result = {};\n\n      _underscore.each(this.dataStores, function (dataStore, name) {\n        if (_config.getConfig(\"defaultViewport\") !== name) {\n          var dataStoreFields = _underscore.keys(_this.getDiffViewportFields(name, dataStore.getState()));\n\n          result[name] = _underscore.pick(dataStore.getState(), dataStoreFields);\n        } else {\n          result[name] = dataStore.getState();\n        }\n      });\n\n      return result;\n    }\n    /**\n     * Set data to dataStore from dataStores base on current viewport.\n     *\n     * @param {String} viewport\n     */\n    ;\n\n    _proto.setViewportDataToDataStore = function setViewportDataToDataStore(viewport) {\n      var defaultViewport = _config.getConfig(\"defaultViewport\");\n\n      var currentViewportState = this.dataStores[viewport].getState();\n      var defaultViewportState = this.dataStores[defaultViewport].getState();\n\n      var viewportFields = _underscore.keys(this.getDiffViewportFields(viewport, currentViewportState)); // Filter viewport specific data for states\n\n\n      this.dataStore.setState(_underscore.extend({}, defaultViewportState, _underscore.pick(currentViewportState, viewportFields)));\n    };\n\n    _proto.bindEvents = function bindEvents() {\n      var _this2 = this;\n\n      var eventName = this.config.name + \":\" + this.id + \":updateAfter\";\n      var paramObj = {};\n      paramObj[this.id] = this;\n      this.dataStore.subscribe(function (state) {\n        var defaultViewport = _config.getConfig(\"defaultViewport\");\n\n        var viewport = _config.getConfig(\"viewport\") || defaultViewport;\n\n        if (viewport !== defaultViewport) {\n          var viewportFields = _underscore.keys(_this2.getViewportFields(viewport, state));\n\n          var diffViewportFields = _underscore.keys(_this2.getDiffViewportFields(viewport, state));\n\n          _this2.dataStores[defaultViewport].setState(_underscore.extend(_this2.dataStores[defaultViewport].getState(), _underscore.omit(state, viewportFields)));\n\n          _this2.dataStores[viewport].setState(_underscore.extend(_this2.dataStores[viewport].getState(), _underscore.pick(state, diffViewportFields)));\n        } else {\n          _this2.dataStores[viewport].setState(state);\n        }\n\n        return _events.trigger(eventName, paramObj);\n      });\n      this.dataStore.subscribe(function () {\n        return _events.trigger(\"stage:updateAfter\", {\n          stageId: _this2.stageId\n        });\n      });\n\n      _events.on(\"stage:\" + this.stageId + \":viewportChangeAfter\", this.onViewportSwitch.bind(this));\n    }\n    /**\n     * Change data stores on viewport change.\n     * @param {Object} args\n     */\n    ;\n\n    _proto.onViewportSwitch = function onViewportSwitch(args) {\n      this.setViewportDataToDataStore(args.viewport);\n    }\n    /**\n     * Init data store for each viewport.\n     */\n    ;\n\n    _proto.initDataStores = function initDataStores() {\n      var _this3 = this;\n\n      _underscore.each(_config.getConfig(\"viewports\"), function (value, name) {\n        _this3.dataStores[name] = new _dataStore();\n      });\n    }\n    /**\n     * Get viewport fields that is different from default.\n     *\n     * @param {string} viewport\n     * @param {DataObject} data\n     */\n    ;\n\n    _proto.getDiffViewportFields = function getDiffViewportFields(viewport, data) {\n      var fields = this.getViewportFields(viewport, data);\n\n      var defaultData = this.dataStores[_config.getConfig(\"defaultViewport\")].getState();\n\n      var excludedFields = [];\n\n      _underscore.each(fields, function (field, key) {\n        var comparison = _mageUtils.compare(data[key], defaultData[key]);\n\n        var isEmpty = !_underscore.find(comparison.changes, function (change) {\n          return !_underscore.isEmpty(change.oldValue);\n        });\n\n        if (comparison.equal || isEmpty) {\n          excludedFields.push(key);\n        }\n      });\n\n      return _underscore.omit(fields, excludedFields);\n    };\n\n    return ContentType;\n  }();\n\n  return ContentType;\n});\n//# sourceMappingURL=content-type.js.map","Magento_PageBuilder/js/content-type-factory.js":"/*eslint-disable */\n/* jscs:disable */\ndefine([\"Magento_PageBuilder/js/events\", \"underscore\", \"Magento_PageBuilder/js/config\", \"Magento_PageBuilder/js/content-type/master-factory\", \"Magento_PageBuilder/js/content-type/preview-factory\", \"Magento_PageBuilder/js/utils/loader\"], function (_events, _underscore, _config, _masterFactory, _previewFactory, _loader) {\n  /**\n   * Copyright \u00a9 Magento, Inc. All rights reserved.\n   * See COPYING.txt for license details.\n   */\n\n  /**\n   * Create new content type\n   *\n   * @param {ContentTypeConfigInterface} config\n   * @param {ContentTypeInterface} parentContentType\n   * @param {string} stageId\n   * @param {object} data\n   * @param {number} childrenLength\n   * * @param {object} viewportsData\n   * @returns {Promise<ContentTypeInterface>}\n   * @api\n   */\n  function createContentType(config, parentContentType, stageId, data, childrenLength, viewportsData) {\n    if (data === void 0) {\n      data = {};\n    }\n\n    if (childrenLength === void 0) {\n      childrenLength = 0;\n    }\n\n    if (viewportsData === void 0) {\n      viewportsData = {};\n    }\n\n    return new Promise(function (resolve, reject) {\n      (0, _loader)([config.component], function (contentTypeComponent) {\n        try {\n          var _contentType = new contentTypeComponent(parentContentType, config, stageId);\n\n          var viewFactory = _config.getMode() === \"Preview\" ? _previewFactory : _masterFactory;\n          viewFactory(_contentType, config).then(function (viewComponent) {\n            var viewName = _config.getMode() === \"Preview\" ? \"preview\" : \"content\"; // @ts-ignore\n\n            _contentType[viewName] = viewComponent;\n            assignDataToDataStores(_contentType, config, data, viewportsData);\n            resolve(_contentType);\n          }).catch(function (error) {\n            reject(error);\n          });\n        } catch (error) {\n          reject(\"Error within component (\" + config.component + \") for \" + config.name + \".\");\n          console.error(error);\n        }\n      }, function (error) {\n        reject(\"Unable to load component (\" + config.component + \") for \" + config.name + \". Please check component exists\" + \" and content type configuration is correct.\");\n        console.error(error);\n      });\n    }).then(function (contentType) {\n      _events.trigger(\"contentType:createAfter\", {\n        id: contentType.id,\n        contentType: contentType\n      });\n\n      _events.trigger(config.name + \":createAfter\", {\n        id: contentType.id,\n        contentType: contentType\n      });\n\n      fireContentTypeReadyEvent(contentType, childrenLength);\n      return contentType;\n    }).catch(function (error) {\n      console.error(error);\n      return null;\n    });\n  }\n\n  function assignDataToDataStores(contentType, config, data, viewportsData) {\n    var defaultData = prepareData(config, data);\n\n    var currentViewport = _config.getConfig(\"viewport\") || _config.getConfig(\"defaultViewport\");\n\n    _underscore.each(_config.getConfig(\"viewports\"), function (viewport, name) {\n      var viewportData = {};\n      var breakpoint = config.breakpoints[name];\n      var viewportConfig = breakpoint && breakpoint.fields ? _underscore.extend({}, breakpoint, {\n        name: config.name\n      }) : {};\n\n      if (!_underscore.isEmpty(viewportConfig)) {\n        viewportsData[name] = viewportsData[name] || {};\n        viewportData = prepareData(viewportConfig, viewportsData[name]);\n      }\n\n      contentType.dataStores[name].setState(_underscore.extend({}, defaultData, viewportData));\n    });\n\n    contentType.setViewportDataToDataStore(currentViewport);\n  }\n  /**\n   * Merge defaults and content type data\n   *\n   * @param {ContentTypeConfigInterface} config\n   * @param {object} data\n   * @returns {any}\n   */\n\n\n  function prepareData(config, data) {\n    var appearance = data.appearance + \"-appearance\";\n    var fields = config.fields[appearance] || config.fields.default;\n    var defaults = prepareDefaults(fields || {}); // Set all content types to be displayed by default\n\n    defaults.display = true;\n    return _underscore.extend(defaults, data, {\n      name: config.name\n    });\n  }\n  /**\n   * Prepare the default values for fields within the form\n   *\n   * @param {ConfigFieldInterface} fields\n   * @returns {FieldDefaultsInterface}\n   */\n\n\n  function prepareDefaults(fields) {\n    if (_underscore.isEmpty(fields)) {\n      return {};\n    }\n\n    return _underscore.mapObject(fields, function (field) {\n      if (!_underscore.isUndefined(field.default)) {\n        return field.default;\n      } else if (_underscore.isObject(field)) {\n        return prepareDefaults(field);\n      }\n    });\n  }\n  /**\n   * A content type is ready once all of its children have mounted\n   *\n   * @param {ContentTypeInterface | ContentTypeCollectionInterface} contentType\n   * @param {number} childrenLength\n   */\n\n\n  function fireContentTypeReadyEvent(contentType, childrenLength) {\n    if (childrenLength === void 0) {\n      childrenLength = 0;\n    }\n\n    var fire = function fire() {\n      var params = {\n        id: contentType.id,\n        contentType: contentType,\n        expectChildren: childrenLength\n      };\n\n      _events.trigger(\"contentType:mountAfter\", params);\n\n      _events.trigger(contentType.config.name + \":mountAfter\", params);\n    };\n\n    if (childrenLength === 0) {\n      fire();\n    } else {\n      var mountCounter = 0;\n\n      _events.on(\"contentType:mountAfter\", function (args) {\n        if (args.contentType.parentContentType.id === contentType.id) {\n          mountCounter++;\n\n          if (mountCounter === childrenLength) {\n            mountCounter = 0;\n            fire();\n\n            _events.off(\"contentType:\" + contentType.id + \":mountAfter\");\n          }\n        }\n      }, \"contentType:\" + contentType.id + \":mountAfter\");\n    }\n  }\n  /**\n   * @api\n   */\n\n\n  return createContentType;\n});\n//# sourceMappingURL=content-type-factory.js.map","Magento_PageBuilder/js/types/text.js":"/*eslint-disable */\n/* jscs:disable */\ndefine([], function () {\n  \"use strict\";\n});\n//# sourceMappingURL=text.js.map","Magento_PageBuilder/js/form/form-mixin.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'underscore',\n    'jquery',\n    'Magento_PageBuilder/js/events',\n    'consoleLogger'\n], function (_, $, events, consoleLogger) {\n    'use strict';\n\n    var mixin = {\n        /**\n         * Record instances of Page Builder initialized in the forms namespace\n         */\n        initialize: function () {\n            var self = this;\n\n            this._super();\n\n            if (!this.source.get('pageBuilderInstances')) {\n                this.source.set('pageBuilderInstances', []);\n            }\n\n            events.on('pagebuilder:register', function (data) {\n                var instance;\n\n                if (data.ns === self.ns) {\n                    instance = _.findWhere(self.source.get('pageBuilderInstances'), {id: data.instance.id});\n                    if (!instance) {\n                        self.source.get('pageBuilderInstances').push(data.instance);\n                    }\n                }\n            });\n\n            return this;\n        },\n\n        /**\n         * Intercept save call to ensure any Page Builder rendering is completed before submitting form\n         *\n         * @param {String} redirect\n         * @param {Object} data\n         */\n        save: function (redirect, data) {\n            var submit = this._super.bind(this, redirect, data),\n                timeout,\n                locks;\n\n            if (_.isEmpty(this.source.get('pageBuilderInstances'))) {\n                submit();\n            } else {\n                timeout = setTimeout(function () {\n                    consoleLogger.error('Page Builder was rendering for 5 seconds without releasing locks.');\n                }, 5000);\n\n                $('body').trigger('processStart');\n\n                // Wait for all rendering locks within Page Builder stages to resolve\n                $.when.apply(\n                    null,\n                    this.source.get('pageBuilderInstances').map(function (instance) {\n                        locks = instance.stage.renderingLocks;\n\n                        return locks[locks.length - 1];\n                    })\n                ).then(function () {\n                    $('body').trigger('processStop');\n                    clearTimeout(timeout);\n                    submit();\n                });\n            }\n        }\n    };\n\n    return function (target) {\n        return target.extend(mixin);\n    };\n});\n","Magento_PageBuilder/js/form/map-location-provider.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'Magento_Ui/js/form/provider',\n    'Magento_PageBuilder/js/events'\n], function (Provider, events) {\n    'use strict';\n\n    return Provider.extend({\n        /** @inheritdoc **/\n        initClient: function () {\n            return this;\n        },\n\n        /** @inheritdoc **/\n        save: function () {\n            events.trigger('mapLocation:saveAfter', this.get('data'));\n\n            return this;\n        }\n    });\n});\n","Magento_PageBuilder/js/form/provider.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'Magento_Ui/js/form/provider',\n    'Magento_PageBuilder/js/events'\n], function (Provider, events) {\n    'use strict';\n\n    return Provider.extend({\n        /** @inheritdoc **/\n        initClient: function () {\n            return this;\n        },\n\n        /** @inheritdoc **/\n        save: function () {\n            events.trigger('form:' + this.id + ':saveAfter', this.get('data'));\n\n            return this;\n        }\n    });\n});\n","Magento_PageBuilder/js/form/provider/conditions-data-processor.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'underscore',\n    'mage/utils/objects',\n    'Magento_Rule/conditions-data-normalizer'\n], function (_, objectUtils, ConditionsDataNormalizer) {\n    'use strict';\n\n    var serializer = new ConditionsDataNormalizer();\n\n    return function (data, attribute) {\n        var pairs = {},\n            conditions = '';\n\n        /*\n         * The Condition Rule Tree is not a UI component and doesn't provide good data.\n         * The best solution is to implement the tree as a UI component that can provide good data but\n         * that is outside of the scope of the feature for now.\n         */\n        _.each(data, function (element, key) {\n            // parameters is hardcoded in the Magento\\Rule model that creates the HTML forms.\n            if (key.indexOf('parameters[' + attribute + ']') === 0) {\n                // Remove the bad, un-normalized data.\n                delete data[key];\n                pairs[key] = element;\n            }\n        });\n\n        /*\n         * The Combine Condition rule needs to have children,\n         * if does not have, we cannot parse the rule in the backend.\n         */\n        _.each(pairs, function (element, key) {\n            var keyIds = key.match(/[\\d?-]+/g),\n              combineElement = 'Magento\\\\CatalogWidget\\\\Model\\\\Rule\\\\Condition\\\\Combine',\n              nextPairsFirstKey = 'parameters[condition_source][NEXT_ITEM--1][type]',\n              nextPairsSecondKey = 'parameters[condition_source][NEXT_ITEM--2][type]';\n\n            if (keyIds !== null && element === combineElement) {\n                if (pairs[nextPairsFirstKey.replace('NEXT_ITEM', keyIds[0])] === undefined ||\n                    pairs[nextPairsFirstKey.replace('NEXT_ITEM', keyIds[0])] === combineElement &&\n                    pairs[nextPairsSecondKey.replace('NEXT_ITEM', keyIds[0])] === undefined) {\n                    pairs[key] = '';\n                }\n            }\n        });\n\n        /*\n         * Add pairs in case conditions source is not rules configurator\n         */\n        if (data['condition_option'] !== 'condition') {\n            pairs['parameters[' + attribute + '][1--1][operator]'] =\n                data[data['condition_option'] + '-condition_operator'] ?\n                data[data['condition_option'] + '-condition_operator'] :\n                '==';\n            pairs['parameters[' + attribute + '][1--1][type]'] =\n                'Magento\\\\CatalogWidget\\\\Model\\\\Rule\\\\Condition\\\\Product';\n            pairs['parameters[' + attribute + '][1][aggregator]'] = 'all';\n            pairs['parameters[' + attribute + '][1][new_child]'] = '';\n            pairs['parameters[' + attribute + '][1][type]'] = 'Magento\\\\CatalogWidget\\\\Model\\\\Rule\\\\Condition\\\\Combine';\n            pairs['parameters[' + attribute + '][1][value]'] = '1';\n            pairs['parameters[' + attribute + '][1--1][attribute]'] = data['condition_option'];\n            pairs['parameters[' + attribute + '][1--1][value]'] = _.isString(data[data['condition_option']]) ?\n                data[data['condition_option']].trim() :\n                '';\n        }\n\n        if (!_.isEmpty(pairs)) {\n            conditions = JSON.stringify(serializer.normalize(pairs).parameters[attribute]);\n            data['conditions_encoded'] = conditions;\n            objectUtils.nested(data, attribute, conditions);\n        }\n    };\n});\n","Magento_PageBuilder/js/form/components/map-location-dynamic-rows.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'Magento_Ui/js/dynamic-rows/dynamic-rows',\n    'Magento_PageBuilder/js/events',\n    'underscore',\n    'jquery'\n], function (dynamicRows, Events, _, $) {\n    'use strict';\n\n    /**\n     * Returns sortable values\n     *\n     * @param {String | Number | Object | Array} value\n     * @return {String | Number}\n     */\n    var sortValueValidator = function (value) {\n        if (typeof value === 'string') {\n            return value.toLowerCase();\n        }\n\n        if (typeof value === 'number') {\n            return value;\n        }\n\n        return '';\n    };\n\n    return dynamicRows.extend({\n        defaults: {\n            modules: {\n                insertForm: '${ $.insertFormProvider }',\n                modal: '${$.modalProvider}'\n            }\n        },\n\n        /** @inheritdoc */\n        initLinks: function () {\n            this._super();\n            Events.on('mapLocation:saveAfter', function (data) {\n                this.modal().closeModal();\n                this.reInitData(data);\n            }.bind(this), this.name);\n\n            return this;\n        },\n\n        /**\n         * Open the location modal and insert form with the data from selected record\n         *\n         * @param {Object} record\n         */\n        edit: function (record) {\n            this.modal().openModal();\n            this.insertForm().edit(record.data());\n        },\n\n        /**\n         * Reinitializing of dynamic row records.\n         *\n         * @param {Object} data\n         */\n        reInitData: function (data) {\n            var recordData = this.recordData().slice(),\n                prop = this.identificationProperty,\n                isExists = false;\n\n            _.each(recordData, function (elem, index) {\n                if (elem[prop] === data[prop]) {\n                    recordData[index] = data;\n                    isExists = true;\n                }\n            }, this);\n\n            if (!isExists) {\n                recordData.push(data);\n            }\n\n            this.recordData(recordData);\n\n            _.each(this.labels(), function (label) {\n                if (label.columnsHeaderClasses) {\n                    this.sortRecord(label.name, label.columnsHeaderClasses === '_ascend');\n                }\n            }.bind(this));\n\n            this.reload();\n        },\n\n        /**\n         * Logic to toggle ascend and descend sorting for headers\n         *\n         * @param {KnockoutObservableArray} property\n         */\n        sortByHeader: function (property) {\n            var ascend,\n                activeLabel,\n                allLabels,\n                placeholder;\n\n            if (property().name === 'actions') {\n                return;\n            }\n\n            if (property().columnsHeaderClasses) {\n                activeLabel = $.extend({}, property());\n                activeLabel.columnsHeaderClasses =\n                    property().columnsHeaderClasses === '_ascend' ? '_descend' : '_ascend';\n                ascend = activeLabel.columnsHeaderClasses === '_ascend';\n                property(activeLabel);\n            } else {\n                allLabels = this.labels().slice();\n                allLabels.forEach(function (label) {\n\n                    if (label.name === property().name) {\n                        label.columnsHeaderClasses = '_ascend';\n                    } else {\n                        label.columnsHeaderClasses = '';\n                    }\n                });\n                ascend = true;\n                this.labels(allLabels);\n            }\n\n            if (this.recordData().length) {\n                placeholder = this.emptyContentPlaceholder;\n\n                this.emptyContentPlaceholder = false;\n                this.sortRecord(property().name, ascend);\n                this.reload();\n                this.emptyContentPlaceholder = placeholder;\n            }\n        },\n\n        /**\n         * Sorting of dynamic row records.\n         *\n         * @param {String} sortBy\n         * @param {Boolean} ascend\n         */\n        sortRecord: function (sortBy, ascend) {\n            this.recordData.sort(function (left, right) {\n                var record1 = ascend ? left : right,\n                    record2 = ascend ? right : left;\n\n                record1 = sortValueValidator(record1[sortBy]);\n                record2 = sortValueValidator(record2[sortBy]);\n\n                return record1 === record2 ? 0 : record1 < record2 ? -1 : 1;\n            });\n        },\n\n        /** @inheritdoc */\n        destroy: function () {\n            this._super();\n            Events.off(this.name);\n        }\n    });\n});\n","Magento_PageBuilder/js/form/components/action-button.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'Magento_Ui/js/form/components/button'\n], function (Button) {\n    'use strict';\n\n    return Button.extend({\n        defaults: {\n            modules: {\n                parent: '${ $.parentName }',\n                insertForm: '${ $.insertFormProvider }',\n                modal: '${ $.modalProvider }'\n            }\n        },\n\n        /**\n         * Edit form with data assigning.\n         */\n        edit: function () {\n            this.modal().openModal();\n            this.insertForm().edit(this.parent().data());\n        },\n\n        /**\n         * Delete record from dynamic row.\n         */\n        deleteRecord: function () {\n            var record = this.parent(),\n                dynamicRow = record.parentComponent(),\n                prop = dynamicRow.identificationProperty,\n                id = record.data()[prop];\n\n            dynamicRow.deleteRecord(record.index, id);\n        }\n    });\n});\n","Magento_PageBuilder/js/form/components/map-location-insert-form.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'Magento_Ui/js/form/components/insert-form'\n], function (Insert) {\n    'use strict';\n\n    return Insert.extend({\n        /**\n         * Clear form content and reinsert data in argument\n         * @param {Object} data\n         */\n        edit: function (data) {\n            this.destroyInserted();\n            this.render();\n            this.setData(data);\n        },\n\n        /**\n         * Set data for new form\n         *\n         * @param {Object} data\n         */\n        setData: function (data) {\n            var formQuery = 'index=' + this.ns,\n                dataProviderQuery = 'index=' + this.ns + '_data_source';\n\n            this.providerData = data;\n            this.externalForm = this.requestModule(formQuery);\n            this.externalSource = this.requestModule(dataProviderQuery);\n            this.setLinks({\n                providerData: dataProviderQuery + ':data'\n            }, 'exports');\n        }\n    });\n});\n","Magento_PageBuilder/js/form/components/insert-form.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'Magento_Ui/js/form/components/insert-form',\n    'Magento_PageBuilder/js/events',\n    'jquery'\n], function (Insert, events, $) {\n    'use strict';\n\n    return Insert.extend({\n        defaults: {\n            appearanceIndex: '',\n            configs: {},\n            tracks: {\n                id: true\n            },\n            listens: {\n                appearance: 'onAppearanceChange'\n            }\n        },\n\n        /** @inheritdoc */\n        initialize: function () {\n            this._super();\n\n            events.on('form:renderAfter', function (params) {\n                this.render(params);\n            }.bind(this));\n\n            return this;\n        },\n\n        /** @inheritdoc */\n        render: function (params) {\n            this.availableAppearances = params.appearances;\n            this.title = params.title;\n            this.defaultNamespace = params.defaultNamespace;\n            this.destroyInserted();\n            this.setData(params);\n\n            return this._super({\n                namespace: params.namespace,\n                handle: params.namespace\n            });\n        },\n\n        /**\n         * Set data for new form.\n         *\n         * @param {Object} params\n         */\n        setData: function (params) {\n            var formQuery = 'index=' + params.namespace,\n                dataProviderQuery = 'index=' + params.namespace + '_data_source';\n\n            this.providerData = params.data;\n            this.id = params.id;\n            this.externalForm = this.requestModule(formQuery);\n            this.externalSource = this.requestModule(dataProviderQuery);\n            this.setLinks({\n                appearance: 'ns = ' + params.namespace + ', index = ' + this.appearanceIndex + ':value'\n            }, 'imports');\n            this.setLinks({\n                providerData: dataProviderQuery + ':data',\n                prefix: formQuery + ':selectorPrefix',\n                id: dataProviderQuery + ':id'\n            }, 'exports');\n        },\n\n        /** @inheritdoc **/\n        requestData: function (params) {\n            var deffer = $.Deferred(),\n                formConfig = this.configs[params.namespace];\n\n            if (formConfig) {\n                return deffer.resolve(formConfig);\n            }\n\n            return this._super().done(function (data) {\n                this.configs[params.namespace] = data;\n            }.bind(this));\n        },\n\n        /**\n         * Re-render after appearance change\n         *\n         * @param {String} value\n         */\n        onAppearanceChange: function (value) {\n            var namespace = this.availableAppearances[value] && this.availableAppearances[value].form ||\n                this.defaultNamespace;\n\n            if (namespace !== this.previousParams.namespace) {\n                this.render({\n                    namespace: namespace,\n                    id: this.id,\n                    data: this.externalSource().get('data'),\n                    appearances: this.availableAppearances,\n                    title: this.title,\n                    defaultNamespace: this.defaultNamespace\n                });\n            }\n        }\n    });\n});\n","Magento_PageBuilder/js/form/element/product-totals.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'underscore',\n    'jquery',\n    'mage/translate',\n    'Magento_PageBuilder/js/form/provider/conditions-data-processor',\n    'Magento_Ui/js/form/element/abstract'\n], function (_, $, $t, conditionsDataProcessor, Abstract) {\n    'use strict';\n\n    return Abstract.extend({\n        defaults: {\n            conditionOption: '',\n            conditionValue: '',\n            formData: {},\n            totalProductCount: 0,\n            totalDisabledProducts: 0,\n            totalNotVisibleProducts: 0,\n            previousConditions: false,\n            listens: {\n                conditionOption: 'updateProductTotals',\n                conditionValue: 'updateProductTotals',\n                '${ $.provider }:data.modalClosed': 'abortRunningRequest'\n            },\n            imports: {\n                formData: '${ $.provider }:data'\n            },\n            links: {\n                value: false\n            },\n            url: null,\n            valuePlaceholder: $t('of %1 total'),\n            disabledPlaceholder: $t('%1 disabled'),\n            notVisiblePlaceholder: $t('%1 not visible'),\n            showSpinner: true,\n            loading: false,\n            jqXHR: null\n        },\n\n        /**\n         * Abort running Ajax request\n         */\n        abortRunningRequest: function () {\n            if (this.jqXHR && this.jqXHR.readyState !== 4) {\n                this.jqXHR.abort();\n            }\n        },\n\n        /** @inheritdoc */\n        initObservable: function () {\n            return this._super()\n                .observe('value totalProductCount totalDisabledProducts totalNotVisibleProducts loading');\n        },\n\n        /**\n         * If we haven't aborted the request, continue and display the error\n         *\n         * @param {Object} jqXHR\n         */\n        callSuperError: function (jqXHR) {\n            // eslint-disable-next-line jquery-no-bind-unbind\n            var superError = $.ajaxSettings.error.bind(window, jqXHR);\n\n            superError();\n        },\n\n        /**\n         * Update product count.\n         */\n        updateProductTotals: _.debounce(function () {\n            var totalText,\n                negativeTotals = [];\n\n            if (!this.conditionOption || _.isEmpty(this.formData)) {\n                return;\n            }\n\n            if (this.conditionOption === 'category_ids' && typeof this.formData['category_ids'] !== 'string') {\n                this.formData['category_ids'] = '';\n            }\n\n            _.extend(this.formData, this.conditionValue);\n            conditionsDataProcessor(this.formData, this.conditionOption + '_source');\n\n            // Store the previous conditions so we don't update the totals when nothing has changed\n            if (this.previousConditions === this.formData['conditions_encoded']) {\n                return;\n            }\n            this.previousConditions = this.formData['conditions_encoded'];\n\n            this.loading(true);\n            this.abortRunningRequest();\n            this.jqXHR = $.ajax({\n                url: this.url,\n                method: 'POST',\n                data: {\n                    conditionValue: this.formData['conditions_encoded']\n                },\n                error: function (jqXHR) {\n                    if (jqXHR.statusText !== 'abort') {\n                        this.callSuperError(jqXHR);\n                    }\n                }.bind(this)\n            }).done(function (response) {\n                this.totalProductCount(parseInt(response.total, 10));\n                this.totalDisabledProducts(parseInt(response.disabled, 10));\n                this.totalNotVisibleProducts(parseInt(response.notVisible, 10));\n                totalText = this.valuePlaceholder\n                    .replace('%1', parseInt(response.total, 10));\n\n                if (parseInt(response.disabled, 10) > 0) {\n                    negativeTotals.push(this.disabledPlaceholder.replace('%1', parseInt(response.disabled, 10)));\n                }\n\n                if (parseInt(response.notVisible, 10) > 0) {\n                    negativeTotals.push(this.notVisiblePlaceholder.replace('%1', parseInt(response.notVisible, 10)));\n                }\n\n                if (negativeTotals.length > 0) {\n                    totalText += ' (' + negativeTotals.join(', ') + ')';\n                }\n\n                this.value(totalText);\n                this.loading(false);\n            }.bind(this)).fail(function () {\n                if (this.jqXHR.statusText !== 'abort') {\n                    this.value($t('An unknown error occurred. Please try again.'));\n                }\n                this.loading(false);\n            }.bind(this));\n        }, 10)\n    });\n});\n","Magento_PageBuilder/js/form/element/dependent-visual-select.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'underscore',\n    'Magento_PageBuilder/js/form/element/visual-select'\n], function (_, Select) {\n    'use strict';\n\n    return Select.extend({\n        defaults: {\n            visible: false\n        },\n\n        /**\n         * Dependently display dropdown component if it contains more than one option\n         *\n         * @returns {Object} Chainable\n         */\n        setOptions: function () {\n            this._super();\n\n            if (this.options().length > 1) {\n                this.setVisible(true);\n            }\n\n            return this;\n        }\n    });\n});\n","Magento_PageBuilder/js/form/element/map.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\n/*eslint-disable vars-on-top, strict */\n\ndefine([\n    'Magento_Ui/js/form/element/abstract',\n    'Magento_PageBuilder/js/utils/map',\n    'module',\n    'Magento_PageBuilder/js/events'\n], function (AbstractField, GoogleMap, module, events) {\n    'use strict';\n\n    var google = window.google || {};\n\n    return AbstractField.extend({\n        defaults: {\n            elementTmpl: 'Magento_PageBuilder/form/element/map',\n            map: false,\n            marker: false,\n            apiKeyValid: !!module.config().apiKey,\n            apiKeyErrorMessage: module.config().apiKeyErrorMessage\n        },\n\n        /**\n         * Initializes observable properties of instance\n         *\n         * @returns {Abstract} Chainable.\n         */\n        initObservable: function () {\n            this._super();\n\n            this.observe('apiKeyValid');\n\n            return this;\n        },\n\n        /**\n         * Render the map into the field\n         *\n         * @param {HTMLElement} element\n         */\n        renderMap: function (element) {\n            // Get the start value and convert the value into an array\n            var startValue = this.value(),\n                mapOptions,\n                latitudeLongitude;\n\n            if (!this.apiKeyValid()) {\n                return;\n            }\n\n            if (typeof startValue === 'string' && startValue !== '') {\n                startValue = JSON.parse(startValue);\n            }\n\n            mapOptions = {\n                navigationControl: true,\n                navigationControlOptions: {\n                    style: google.maps.NavigationControlStyle.DEFAULT\n                }\n            };\n\n            events.on('googleMaps:authFailure', function () {\n                this.apiKeyValid(false);\n            }.bind(this));\n\n            // Create the map\n            this.mapElement = new GoogleMap(element, [], mapOptions);\n\n            if (!this.mapElement || !this.mapElement.map) {\n                return;\n            }\n\n            // Add marker if there is a start value\n            if (startValue.latitude !== '' && startValue.longitude !== '') {\n                latitudeLongitude = new google.maps.LatLng(\n                    parseFloat(startValue.latitude),\n                    parseFloat(startValue.longitude)\n                );\n\n                this.mapElement.map.setCenter(latitudeLongitude);\n                this.addMarker(startValue.latitude, startValue.longitude);\n            }\n\n            // After click, add and update both Latitude and Longitude.\n            google.maps.event.addListener(this.mapElement.map, 'click', this.onClick.bind(this));\n            google.maps.event.addListener(this.mapElement.map, 'dblclick', this.onDblClick.bind(this));\n            google.maps.event.trigger(this.marker, 'click');\n        },\n\n        /**\n         * Adds a map marker\n         *\n         * @param {String} latitude\n         * @param {String} longitude\n         */\n        addMarker: function (latitude, longitude) {\n            this.marker = new google.maps.Marker({\n                draggable: true,\n                map: this.mapElement.map,\n                position: new google.maps.LatLng(latitude, longitude)\n            });\n            google.maps.event.addListener(this.marker, 'dragend', this.onDragEnd.bind(this));\n        },\n\n        /**\n         * Event for drag end to update value\n         */\n        onDragEnd: function () {\n            this.value(this.exportValue());\n        },\n\n        /**\n         * Event for click to update marker, delayed by 300ms in case of double click\n         *\n         * @param {Event} event\n         */\n        onClick: function (event) {\n            this.clickTimer = setTimeout(function () {\n                if (!this.marker) {\n                    this.addMarker(event.latLng.lat(), event.latLng.lng());\n                }\n                this.value(this.exportValue(event.latLng));\n            }.bind(this), 300);\n        },\n\n        /**\n         * Event for double click to prevent call from single click\n         */\n        onDblClick: function () {\n            clearTimeout(this.clickTimer);\n        },\n\n        /**\n         * Callback after an update to map\n         */\n        onUpdate: function () {\n            if (!this.mapElement) {\n                return;\n            }\n\n            this._super();\n            var content = this.value(),\n                latitudeLongitude;\n\n            if (this.marker && content.latitude === '' && content.longitude === '') {\n                this.marker.setMap(null);\n                delete this.marker;\n\n                return;\n            }\n\n            if (!this.validateCoordinate(content) ||\n                this.mapElement &&\n                !this.mapElement.map ||\n                this.value() === '' ||\n                this.value() === this.exportValue()) {\n                return;\n            }\n\n            if (typeof this.value() === 'string' && this.value() !== '') {\n                content = JSON.parse(this.value());\n            }\n            latitudeLongitude = new google.maps.LatLng(parseFloat(content.latitude), parseFloat(content.longitude));\n\n            if (!this.marker) {\n                this.addMarker(latitudeLongitude.lat(), latitudeLongitude.lng());\n            }\n\n            this.marker.setPosition(latitudeLongitude);\n            this.mapElement.map.setCenter(latitudeLongitude);\n        },\n\n        /**\n         * Coordinate validation\n         *\n         * @param {Object} coordinates\n         * @return {Boolean}\n         */\n        validateCoordinate: function (coordinates) {\n            var valid = true;\n\n            if (coordinates.longitude === '' ||\n                coordinates.latitude === '' ||\n                isNaN(coordinates.longitude) ||\n                isNaN(coordinates.latitude) ||\n                parseFloat(coordinates.longitude) < -180 ||\n                parseFloat(coordinates.longitude) > 180 ||\n                parseFloat(coordinates.latitude) < -90 ||\n                parseFloat(coordinates.latitude) > 90\n            ) {\n                valid = false;\n            }\n\n            return valid;\n        },\n\n        /**\n         * Returns current latitude and longitude as an object\n         *\n         * @param {Object} coordinate\n         * @return {Object}\n         */\n        exportValue: function (coordinate) {\n            var position = this.marker ?\n                this.marker.getPosition() :\n                new google.maps.LatLng(this.mapElement.map.center.lat(), this.mapElement.map.center.lng()),\n                currentCoordinate = coordinate ? coordinate : position;\n\n            return {\n                latitude: currentCoordinate.lat(),\n                longitude: currentCoordinate.lng()\n            };\n        }\n    });\n});\n","Magento_PageBuilder/js/form/element/dependent-value-mixin.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([], function () {\n    'use strict';\n\n    var setDependentValuesSetting = {\n        defaults: {\n            dependentValues: {}\n        },\n\n        /**\n         * Change value of component if it present in dependentValues\n         */\n        setDependentValues: function (value) {\n            if (this.dependentValues.hasOwnProperty(value)) {\n                this.previousValue = this.value();\n                this.value(this.dependentValues[value]);\n            } else if (this.hasOwnProperty('previousValue')) {\n                this.value(this.previousValue);\n            }\n        }\n    };\n\n    return function (target) {\n        return target.extend(setDependentValuesSetting);\n    };\n});\n","Magento_PageBuilder/js/form/element/html.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'Magento_Ui/js/form/components/html',\n    'jquery',\n    'underscore'\n], function (Html, $, _) {\n    'use strict';\n\n    return Html.extend({\n        defaults: {\n            inputSelector: '[data-form-part=${ $.ns }]',\n            elements: [],\n            value: {}\n        },\n\n        /** @inheritdoc */\n        initialize: function () {\n            this._super();\n            this.initInputListener();\n\n            return this;\n        },\n\n        /** @inheritdoc */\n        initObservable: function () {\n            return this._super()\n                .observe('value');\n        },\n\n        /**\n         * Listen for value change on each field that has been added.\n         */\n        initInputListener: function () {\n            $.async({\n                component: this,\n                selector: this.inputSelector\n            }, function (el) {\n                this.elements.push(el);\n                $(el).on('change', this.updateValue.bind(this));\n                $(el).nextAll('.rule-param-apply').on('click', function () {\n                    $(el).trigger('change');\n                });\n                $(el).closest('li').find('.rule-param-remove').on('click', function () {\n                    $(el).val('').trigger('change');\n                });\n                this.updateValue(this);\n            }.bind(this));\n        },\n\n        /**\n         * Collect data and update value.\n         */\n        updateValue: function () {\n            var result = {},\n                name;\n\n            this.elements.forEach(function (item) {\n                switch (item.type) {\n                    case 'checkbox':\n                        result[item.name] = +!!item.checked;\n                        break;\n\n                    case 'radio':\n                        if (item.checked) {\n                            result[item.name] = item.value;\n                        }\n                        break;\n\n                    case 'select-multiple':\n                        name = item.name.substring(0, item.name.length - 2); //remove [] from the name ending\n                        result[name] = _.pluck(item.selectedOptions, 'value');\n                        break;\n\n                    default:\n                        result[item.name] = item.value;\n                }\n            });\n\n            this.value(result);\n        }\n    });\n});\n","Magento_PageBuilder/js/form/element/wysiwyg.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'jquery',\n    'underscore',\n    'Magento_Ui/js/form/element/wysiwyg',\n    'mage/translate',\n    'Magento_PageBuilder/js/events',\n    'Magento_Ui/js/lib/view/utils/dom-observer',\n    'Magento_PageBuilder/js/page-builder',\n    'Magento_Ui/js/lib/view/utils/async'\n], function ($, _, Wysiwyg, $t, events, domObserver, PageBuilder) {\n    'use strict';\n\n    /**\n     * Extend the original WYSIWYG with added PageBuilder functionality\n     */\n    return Wysiwyg.extend({\n        defaults: {\n            transition: false,\n            transitionOut: false,\n            elementSelector: '> textarea',\n            stageSelector: '.pagebuilder-stage-wrapper',\n            fieldsetSelector: 'fieldset.admin__fieldset',\n            overlaySelector: '.pagebuilder-wysiwyg-overlay',\n            overlayMouseover: false,\n            pageBuilder: false,\n            visiblePageBuilder: false,\n            isComponentInitialized: false,\n            wysiwygConfigData: {\n                isFullScreen: false\n            },\n            pageBuilderEditButtonText: $t('Edit with Page Builder'),\n            isWithinModal: false,\n            modal: false\n        },\n\n        /**\n         * @inheritdoc\n         */\n        initialize: function () {\n            this._super();\n\n            if (!this.wysiwygConfigData()['pagebuilder_button'] ||\n                this.wysiwygConfigData()['pagebuilder_content_snapshot']) {\n                this.initPageBuilder();\n            }\n\n            return this;\n        },\n\n        /**\n         * @inheritdoc\n         */\n        initObservable: function () {\n            this._super()\n                .observe('isComponentInitialized visiblePageBuilder wysiwygConfigData loading transition ' +\n                    'transitionOut overlayMouseover');\n\n            return this;\n        },\n\n        /**\n         * Handle button click, init the Page Builder application\n         */\n        pageBuilderEditButtonClick: function (context, event) {\n            this.determineIfWithinModal(event.currentTarget);\n            this.transition(false);\n\n            if (!this.isComponentInitialized()) {\n                this.disableDomObserver($(event.currentTarget).parent()[0]);\n            }\n\n            this.initPageBuilder();\n            this.toggleFullScreen();\n        },\n\n        /**\n         * Init Page Builder\n         */\n        initPageBuilder: function () {\n            if (!this.isComponentInitialized()) {\n                this.loading(true);\n                this.pageBuilder = new PageBuilder(\n                  this.wysiwygConfigData(),\n                  this.initialValue\n                );\n                if (!this.source.get('pageBuilderInstances')) {\n                    this.source.set('pageBuilderInstances', []);\n                }\n                // Register PageBuilder instance in the data provider in case the event \"pagebuilder:register\"\n                // is triggered before the subscribers are registered\n                this.source.get('pageBuilderInstances').push(this.pageBuilder);\n                events.trigger('pagebuilder:register', {\n                    ns: this.ns,\n                    instance: this.pageBuilder\n                });\n                this.initPageBuilderListeners();\n                this.isComponentInitialized(true);\n\n                // Disable the domObserver for the entire stage\n                $.async({\n                    component: this,\n                    selector: this.stageSelector\n                }, this.disableDomObserver.bind(this));\n\n                if (!this.wysiwygConfigData()['pagebuilder_button'] ||\n                    this.wysiwygConfigData()['pagebuilder_content_snapshot']) {\n                    this.visiblePageBuilder(true);\n                }\n            }\n        },\n\n        /**\n         * Disable the domObserver on the PageBuilder stage to improve performance\n         *\n         * @param {HTMLElement} node\n         */\n        disableDomObserver: function (node) {\n            this.determineIfWithinModal(node);\n            domObserver.disableNode(node);\n            domObserver.disableNode($(node).parents(this.fieldsetSelector)[0]);\n        },\n\n        /**\n         * Changes tabindex and content editable on stage elements\n         */\n        toggleFocusableElements: function () {\n            var pageBuilderSelector = '#' + this.pageBuilder.id,\n                editable = $(pageBuilderSelector).find('[contenteditable]:not(.mceNonEditable)'),\n                focusableSelector = ' :focusable:not(' + this.overlaySelector + ')',\n                mediaSelector = pageBuilderSelector + ' iframe,' + pageBuilderSelector + ' video',\n                tabIndexValue = this.pageBuilder.isFullScreen() ? '0' : '-1',\n                editableValue = this.pageBuilder.isFullScreen();\n\n            editable.attr('contenteditable', editableValue);\n            if (this.pageBuilder.isFullScreen()) {\n                $(pageBuilderSelector + focusableSelector)\n                    .each(function () {\n                        if ($(this).data('original-tabindex')) {\n                            $(this).attr('tabindex', $(this).data('original-tabindex'));\n                        } else if ($(this).data('original-tabindex') === '') {\n                            $(this).removeAttr('tabindex');\n                        }\n                        $(this).removeData('original-tabindex');\n                    });\n            } else {\n                $(pageBuilderSelector + focusableSelector).each(function () {\n                    if ($(this).attr('tabindex')) {\n                        $(this).data('original-tabindex', $(this).attr('tabindex'));\n                    } else {\n                        $(this).data('original-tabindex', '');\n                    }\n                    $(this).attr('tabindex', '-1');\n                });\n            }\n            $(mediaSelector).attr('tabindex', tabIndexValue);\n        },\n\n        /**\n         * Determine if the current instance is within a modal\n         *\n         * @param {HTMLElement} element\n         */\n        determineIfWithinModal: function (element) {\n            var modalInnerWrap = $(element).parents('.modal-inner-wrap');\n\n            // Determine if the Page Builder instance is within a modal\n            this.isWithinModal = modalInnerWrap.length === 1;\n\n            if (this.isWithinModal) {\n                this.modal = modalInnerWrap;\n            }\n        },\n\n        /**\n         * Press Enter key on Overlay\n         */\n        onOverlayKeyDown: function (context, event) {\n            if (event.which === 13 || event.keyCode === 13) {\n                this.pageBuilderEditButtonClick(context, event);\n            }\n\n            return true;\n        },\n\n        /**\n         * Toggle Page Builder full screen mode\n         */\n        toggleFullScreen: function () {\n            events.trigger('stage:' + this.pageBuilder.id + ':toggleFullscreen', {\n                animate: !!this.wysiwygConfigData()['pagebuilder_content_snapshot']\n            });\n        },\n\n        /**\n         * Init various listeners on the stage\n         */\n        initPageBuilderListeners: function () {\n            var id = this.pageBuilder.id,\n                renderDeferred = $.Deferred(),\n                fullScreenDeferred = $.Deferred(),\n                rendered = false;\n\n            events.on('stage:' + id + ':readyAfter', function () {\n                this.loading(false);\n            }.bind(this));\n\n            events.on('stage:' + id + ':renderAfter', function () {\n                renderDeferred.resolve();\n                rendered = true;\n            });\n\n            events.on('stage:' + id + ':masterFormatRenderAfter', function (args) {\n                this.value(args.value);\n\n                if (this.wysiwygConfigData()['pagebuilder_content_snapshot']) {\n                    this.toggleFocusableElements();\n                }\n            }.bind(this));\n\n            events.on('stage:' + id + ':fullScreenModeChangeAfter', function (args) {\n                if (!args.fullScreen) {\n                    if (this.isWithinModal && this.modal) {\n                        _.delay(function () {\n                            this.modal.css({\n                                transform: '',\n                                transition: ''\n                            });\n                        }.bind(this), 350);\n                    }\n\n                    if (this.wysiwygConfigData()['pagebuilder_button'] &&\n                        !this.wysiwygConfigData()['pagebuilder_content_snapshot']) {\n                        // Force full screen mode whilst the animation occurs\n                        this.transitionOut(true);\n                        // Trigger animation out\n                        this.transition(false);\n\n                        // Reset the transition out class and hide the stage\n                        _.delay(function () {\n                            this.transitionOut(false);\n                            this.visiblePageBuilder(false);\n                        }.bind(this), 185);\n                    }\n                } else if (args.fullScreen) {\n                    if (this.isWithinModal && this.modal) {\n                        this.modal.css({\n                            transform: 'none',\n                            transition: 'none'\n                        });\n                    }\n\n                    if (this.wysiwygConfigData()['pagebuilder_button'] &&\n                        !this.wysiwygConfigData()['pagebuilder_content_snapshot']) {\n                        this.visiblePageBuilder(true);\n\n                        fullScreenDeferred.resolve();\n\n                        /* eslint-disable max-depth */\n                        // If the stage has already rendered once we don't need to wait until animating the stage in\n                        if (rendered) {\n                            _.defer(function () {\n                                this.transition(true);\n                            }.bind(this));\n                        }\n                        /* eslint-enable max-depth */\n                    }\n                }\n\n                if (this.wysiwygConfigData()['pagebuilder_content_snapshot']) {\n                    this.toggleFocusableElements();\n                }\n            }.bind(this));\n\n            // Wait until the stage is rendered and full screen mode is activated\n            $.when(renderDeferred, fullScreenDeferred).done(function () {\n                _.defer(function () {\n                    this.transition(true);\n                }.bind(this));\n            }.bind(this));\n        },\n\n        /** @inheritdoc */\n        destroy: function () {\n            this.pageBuilder && this.pageBuilder.destroy();\n            this._super();\n        }\n    });\n});\n","Magento_PageBuilder/js/form/element/select-filtered-options.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'underscore',\n    'Magento_Ui/js/form/element/select'\n], function (_, Select) {\n    'use strict';\n\n    return Select.extend({\n\n        defaults: {\n            excludeOptions: []\n        },\n\n        /** @inheritdoc */\n        onUpdate: function () {\n            if (!this.updatedByFilter) {\n                this.transferredValue = null;\n            } else {\n                this.updatedByFilter = false;\n            }\n\n            return this._super();\n        },\n\n        /**\n         * Excluding options according excludeOptions configuration based on the passed value\n         *\n         * @param {String} value\n         */\n        filter: function (value) {\n            var source = this.initialOptions,\n                initialValue = this.value(),\n                result,\n                excludeOptions =  this.excludeOptions[value],\n                excludedOptionsArray = excludeOptions ? excludeOptions.split(',') : [];\n\n            result = _.filter(source, function (item) {\n                return !excludeOptions || excludedOptionsArray.indexOf(item.value) === -1;\n            });\n\n            this.updatedByFilter = true;\n            this.setOptions(result);\n\n            this.value(this.transferredValue ? this.transferredValue : initialValue);\n\n            if (excludedOptionsArray.indexOf(initialValue) !== -1) {\n                this.transferredValue = initialValue;\n            } else {\n                this.transferredValue = null;\n            }\n        }\n    });\n});\n","Magento_PageBuilder/js/form/element/page-ui-select.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'Magento_Ui/js/form/element/ui-select'\n], function (Select) {\n    'use strict';\n\n    return Select.extend({\n\n        /**\n         * Get path to current option\n         *\n         * @param {Object} data - option data\n         * @returns {String} path\n         */\n        getPath: function (data) {\n            var path = '';\n\n            if (this.renderPath) {\n                path = data.identifier || path;\n            }\n\n            return path;\n        }\n    });\n});\n","Magento_PageBuilder/js/form/element/margins-and-padding.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\n/*eslint-disable vars-on-top, strict */\n\ndefine([\n    'underscore',\n    'ko',\n    'Magento_Ui/js/form/element/abstract'\n], function (_, ko, Abstract) {\n    'use strict';\n\n    var defaultValue = '';\n\n    return Abstract.extend({\n        defaults: {\n            elementTmpl: 'Magento_PageBuilder/form/element/margins-and-padding',\n            marginTop: defaultValue,\n            marginRight: defaultValue,\n            marginBottom: defaultValue,\n            marginLeft: defaultValue,\n            paddingTop: defaultValue,\n            paddingRight: defaultValue,\n            paddingBottom: defaultValue,\n            paddingLeft: defaultValue,\n            listens: {\n                marginTop: 'updateValue',\n                marginRight: 'updateValue',\n                marginBottom: 'updateValue',\n                marginLeft: 'updateValue',\n                paddingTop: 'updateValue',\n                paddingRight: 'updateValue',\n                paddingBottom: 'updateValue',\n                paddingLeft: 'updateValue'\n            }\n        },\n\n        /**\n         * Init observable on our margin & padding properties\n         *\n         * @returns {exports}\n         */\n        initObservable: function () {\n            this._super();\n            this.observe('marginTop marginRight marginBottom marginLeft ' +\n                'paddingTop paddingRight paddingBottom paddingLeft');\n\n            return this;\n        },\n\n        /**\n         * Update the value on individual property changes\n         */\n        updateValue: function () {\n            this.value({\n                margin: {\n                    top: this.marginTop(),\n                    right: this.marginRight(),\n                    bottom: this.marginBottom(),\n                    left: this.marginLeft()\n                },\n                padding: {\n                    top: this.paddingTop(),\n                    right: this.paddingRight(),\n                    bottom: this.paddingBottom(),\n                    left: this.paddingLeft()\n                }\n            });\n        },\n\n        /**\n         * On set of the initial value update our individual observables\n         *\n         * @returns {exports}\n         */\n        setInitialValue: function () {\n            this._super();\n            this._updateObservables(this.initialValue);\n\n            return this;\n        },\n\n        /**\n         * On update of the value property update our individual observables, the data provider can have data\n         * set on it after the initial construction, this ensures we translate our values\n         *\n         * @returns {exports}\n         */\n        onUpdate: function () {\n            this._super();\n            this._updateObservables(this.value());\n\n            return this;\n        },\n\n        /**\n         * Update the observable properties\n         *\n         * @param {Number} value\n         * @private\n         */\n        _updateObservables: function (value) {\n            if (value && _.isString(value)) {\n                value = JSON.parse(value);\n            }\n\n            if (value && _.isObject(value)) {\n                _.each(value, function (attributeData, attributeType) {\n                    _.each(attributeData, function (attributeValue, attributeDirection) {\n                        if (attributeValue !== defaultValue) {\n                            this[attributeType + attributeDirection.capitalize()](attributeValue);\n                        }\n                    }, this);\n                }, this);\n            }\n        }\n    });\n});\n","Magento_PageBuilder/js/form/element/condition-options.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'Magento_PageBuilder/js/form/element/visual-select'\n], function (Select) {\n    'use strict';\n\n    return Select.extend({\n\n        /** @inheritdoc */\n        initialize: function () {\n            this._super();\n\n            this.showRelatedElement(this.value());\n\n            return this;\n        },\n\n        /** @inheritdoc */\n        initObservable: function () {\n            this._super();\n\n            this.options().forEach(function (option) {\n                this.observe(option.value + 'Visible');\n            }.bind(this));\n\n            return this;\n        },\n\n        /** @inheritdoc */\n        onUpdate: function (value) {\n            this.showRelatedElement(value);\n\n            return this._super();\n        },\n\n        /**\n         * Sets exported property, linked with visibility of the element, defined as option\n         *\n         * @param {String} value\n         * @returns {Object} Chainable\n         */\n        showRelatedElement: function (value) {\n            this[value + 'Visible'](true);\n            this.options().forEach(function (option) {\n                if (value !== option.value) {\n                    this[option.value + 'Visible'](false);\n                }\n            }.bind(this));\n\n            return this;\n        }\n    });\n});\n","Magento_PageBuilder/js/form/element/conditional-disable-mixin.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'underscore'\n], function (_) {\n    'use strict';\n\n    var setDisabledSetting = {\n        defaults: {\n            disabledValues: []\n        },\n\n        /**\n         * Set the field as disabled when it's empty or is equal to a value within disabledValues\n         *\n         * @param {Array} value\n         */\n        setDisabled: function (value) {\n            if (_.indexOf(_.values(this.disabledValues), value) !== -1) {\n                this.disable();\n            } else {\n                this.enable();\n            }\n        }\n    };\n\n    return function (target) {\n        return target.extend(setDisabledSetting);\n    };\n});\n","Magento_PageBuilder/js/form/element/image-uploader.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'jquery',\n    'underscore',\n    'uiRegistry',\n    'Magento_Ui/js/form/element/image-uploader',\n    'Magento_PageBuilder/js/resource/resize-observer/ResizeObserver',\n    'Magento_PageBuilder/js/events',\n    'mage/translate'\n], function ($, _, uiRegistry, Uploader, ResizeObserver, events, $t) {\n    'use strict';\n\n    var initializedOnce = false;\n\n    return Uploader.extend({\n        defaults: {\n            $uploadArea: null,\n            isShowImageUploadInstructions: true,\n            isShowImageUploadOptions: false,\n            visibleControls: true,\n            classes: {\n                dragging: 'dragging',\n                draggingInside: 'dragging-inside',\n                draggingOutside: 'dragging-outside'\n            },\n            // listed in ascending order\n            elementWidthModifierClasses: {\n                '_micro-ui': {\n                    maxWidth: 130\n                },\n                '_compact-ui': {\n                    minWidth: 131,\n                    maxWidth: 440\n                }\n            },\n            translations: {\n                allowedFileTypes: $t('Allowed file types'),\n                dragImageHere: $t('Drag image here'),\n                dropHere: $t('Drop here'),\n                maximumFileSize: $t('Maximum file size'),\n                selectFromGallery: $t('Select from Gallery'),\n                or: $t('or'),\n                uploadImage: $t('Upload Image'),\n                uploadNewImage: $t('Upload New Image')\n            },\n            tracks: {\n                visibleControls: true\n            }\n        },\n\n        /**\n         * Bind drag events to highlight/unhighlight dropzones\n         * {@inheritDoc}\n         */\n        initialize: function () {\n            var $document = $(document);\n\n            this._super();\n\n            events.on('image:' + this.id + ':assignAfter', this.onAssignedFile.bind(this));\n\n            // bind dropzone highlighting using event delegation only once\n            if (!initializedOnce) {\n                // dropzone highlighting\n                $document.on('dragover', this.highlightDropzone.bind(this));\n\n                // dropzone unhighlighting\n                $document.on('dragend dragleave mouseup', this.unhighlightDropzone.bind(this));\n\n                initializedOnce = true;\n            }\n        },\n\n        /**\n         * {@inheritDoc}\n         */\n        initUploader: function (fileInput) {\n            this._super(fileInput);\n            this.$uploadArea = $('#' + $(fileInput).attr('id')).closest('.pagebuilder-image-empty-preview');\n            if (this.$uploadArea.get(0) !== undefined) {\n                new ResizeObserver(this.updateResponsiveClasses.bind(this)).observe(this.$uploadArea.get(0));\n            }\n        },\n\n        /**\n         * Checks if provided file is allowed to be uploaded.\n         * {@inheritDoc}\n         */\n        isFileAllowed: function () {\n            var result = this._super(),\n                allowedExtensions = this.getAllowedFileExtensionsInCommaDelimitedFormat();\n\n            if (!result.passed && result.rule === 'validate-file-type') {\n                result.message += ' ' + this.translations.allowedFileTypes + ': ' + allowedExtensions + '.';\n            }\n\n            return result;\n        },\n\n        /**\n         * Remove draggable classes from dropzones\n         * {@inheritDoc}\n         */\n        onBeforeFileUpload: function () {\n            this.removeDraggableClassesFromDropzones();\n            this._super();\n        },\n\n        /**\n         * Add/remove CSS classes to $dropzone element to provide UI feedback\n         *\n         * @param {jQuery.event} e\n         */\n        highlightDropzone: function (e) {\n            var $dropzone = $(e.target).closest(this.dropZone),\n                $otherDropzones = $(this.dropZone).not($dropzone),\n                isInsideDropzone = !!$dropzone.length;\n\n            if (isInsideDropzone) {\n                $dropzone\n                    .removeClass(this.classes.draggingOutside)\n                    .addClass([this.classes.dragging, this.classes.draggingInside].join(' '));\n            }\n\n            $otherDropzones\n                .removeClass(this.classes.draggingInside)\n                .addClass([this.classes.dragging, this.classes.draggingOutside].join(' '));\n        },\n\n        /**\n         * Remove all UI styling from dropzone\n         *\n         * @param {jQuery.event} e\n         */\n        unhighlightDropzone: function (e) {\n            var isMouseReleased = e.type === 'mouseup' || e.type === 'dragend',\n                isActuallyLeavingThePage = e.type === 'dragleave' && (e.clientX === 0 || e.clientY === 0);\n\n            if (!isMouseReleased && !isActuallyLeavingThePage) {\n                return;\n            }\n\n            this.removeDraggableClassesFromDropzones();\n        },\n\n        /**\n         * Remove draggable CSS classes from dropzone elements\n         */\n        removeDraggableClassesFromDropzones: function () {\n            var $dropzones = $(this.dropZone);\n\n            $dropzones\n                .removeClass([\n                    this.classes.dragging,\n                    this.classes.draggingInside,\n                    this.classes.draggingOutside\n                ].join(' '));\n        },\n\n        /**\n         * Trigger image:uploadAfter event to be handled by PageBuilder image component\n         * {@inheritDoc}\n         */\n        addFile: function (file) {\n            this._super();\n\n            events.trigger('image:' + this.id + ':uploadAfter', [file]);\n\n            return this;\n        },\n\n        /**\n         * Trigger image:deleteFileAfter event to be handled by PageBuilder image component\n         * {inheritDoc}\n         */\n        clear: function () {\n            this._super();\n\n            events.trigger('image:' + this.id + ':deleteFileAfter');\n\n            return this;\n        },\n\n        /**\n         * Propagate file changes through all image uploaders sharing the same id\n         *\n         * @param {Object} file\n         */\n        onAssignedFile: function (file) {\n            this.value([file]);\n        },\n\n        /**\n         * Adds the appropriate ui state class to the upload control area based on the current rendered size\n         */\n        updateResponsiveClasses: function () {\n            var classesToAdd = [],\n                classConfig,\n                elementWidth = this.$uploadArea.width(),\n                modifierClass;\n\n            if (!this.$uploadArea.is(':visible')) {\n                return;\n            }\n\n            this.$uploadArea.removeClass(Object.keys(this.elementWidthModifierClasses).join(' '));\n\n            for (modifierClass in this.elementWidthModifierClasses) {\n                if (!this.elementWidthModifierClasses.hasOwnProperty(modifierClass)) {\n                    // jscs:disable disallowKeywords\n                    continue;\n                    // jscs:enable disallowKeywords\n                }\n\n                classConfig = this.elementWidthModifierClasses[modifierClass];\n\n                if (classConfig.minWidth && classConfig.maxWidth &&\n                    (classConfig.minWidth <= elementWidth && elementWidth <= classConfig.maxWidth) ||\n                    classConfig.minWidth && !classConfig.maxWidth && classConfig.minWidth <= elementWidth ||\n                    classConfig.maxWidth && !classConfig.minWidth && elementWidth <= classConfig.maxWidth\n                ) {\n                    classesToAdd.push(modifierClass);\n                }\n            }\n\n            if (classesToAdd.length) {\n                this.$uploadArea.addClass(classesToAdd.join(' '));\n            }\n        },\n\n        /**\n         * {@inheritDoc}\n         */\n        hasData: function () {\n            // Some of the components automatically add an empty object if the value is unset.\n            return this._super() && !$.isEmptyObject(this.value()[0]);\n        },\n\n        /**\n         * Stop event to prevent it from reaching any objects other than the current object.\n         *\n         * @param {Object} uploader\n         * @param {Event} event\n         * @returns {Boolean}\n         */\n        stopEvent: function (uploader, event) {\n            event.stopPropagation();\n\n            return true;\n        }\n    });\n});\n","Magento_PageBuilder/js/form/element/html-code.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\n/* global MediabrowserUtility, widgetTools, MagentovariablePlugin */\ndefine([\n    'Magento_Ui/js/form/element/textarea',\n    'mage/adminhtml/wysiwyg/widget'\n], function (Textarea) {\n    'use strict';\n\n    var HTML_ID_PLACEHOLDER = 'HTML_ID_PLACEHOLDER';\n\n    return Textarea.extend({\n        defaults: {\n            elementTmpl: 'Magento_PageBuilder/form/element/html-code'\n        },\n\n        /**\n         * Click event for Insert Widget Button\n         */\n        clickInsertWidget: function () {\n            return widgetTools.openDialog(\n                this.widgetUrl.replace(HTML_ID_PLACEHOLDER, this.uid)\n            );\n        },\n\n        /**\n         * Click event for Insert Image Button\n         */\n        clickInsertImage: function () {\n            return MediabrowserUtility.openDialog(\n                this.imageUrl.replace(HTML_ID_PLACEHOLDER, this.uid)\n            );\n        },\n\n        /**\n         * Click event for Insert Variable Button\n         */\n        clickInsertVariable: function () {\n            return MagentovariablePlugin.loadChooser(\n                this.variableUrl,\n                this.uid\n            );\n        }\n    });\n});\n","Magento_PageBuilder/js/form/element/conditions-loader.js":"define([\n    'jquery',\n    'Magento_Rule/rules',\n    'uiRegistry',\n    'mage/utils/objects'\n], function ($, RulesForm, uiRegistry, objectUtils) {\n    'use strict';\n\n    return function (config, conditionsFormPlaceholder) {\n        var $conditionsFormPlaceholder = $(conditionsFormPlaceholder),\n            attributeData = uiRegistry.get(config.formNamespace + '.' + config.formNamespace).source.data,\n            conditions = objectUtils.nested(attributeData, config.attribute) || '[]';\n\n        $('body').trigger('processStart');\n\n        $.ajax(config.componentUrl, {\n            method: 'POST',\n            data: {\n                conditions: conditions\n            }\n        })\n        .done(function (response) {\n            $conditionsFormPlaceholder.html(response);\n            window[config.jsObjectName] = new RulesForm(config.jsObjectName, config.childComponentUrl);\n            $('body').trigger('processStop');\n        });\n    };\n});\n","Magento_PageBuilder/js/form/element/visual-select.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'underscore',\n    'Magento_Ui/js/form/element/select'\n], function (_, Select) {\n    'use strict';\n\n    return Select.extend({\n        defaults: {\n            noticeMessage: '',\n            listens: {\n                value: 'setNoticeMessage'\n            }\n        },\n\n        /**\n         * Initializes observable properties of instance\n         *\n         * @returns {Abstract} Chainable.\n         */\n        initObservable: function () {\n            this._super();\n            this.observe('noticeMessage');\n\n            return this;\n        },\n\n        /**\n         * Parses incoming options, considers options with undefined value property\n         *     as caption\n         *\n         * @param  {Array} nodes\n         * @param {Object} captionValue\n         * @return {Object} captionValue\n         */\n        parseOptions: function (nodes, captionValue) {\n            var caption,\n                value;\n\n            nodes = _.map(nodes, function (node) {\n                value = node.value;\n\n                if ((value === null || value === captionValue) && _.isUndefined(caption)) {\n                    caption = node.label;\n                }\n\n                return node;\n            });\n\n            return {\n                options: _.compact(nodes),\n                caption: _.isString(caption) ? caption : false\n            };\n        },\n\n        /**\n         * Recursively set to object item like value and item.value like key.\n         *\n         * @param {Array} data\n         * @param {Object} result\n         * @returns {Object}\n         */\n        indexOptions: function (data, result) {\n            var value;\n\n            result = result || {};\n\n            data.forEach(function (item) {\n                value = item.value;\n\n                if (Array.isArray(value)) {\n                    this.indexOptions(value, result);\n                } else {\n                    result[value] = item;\n                }\n            });\n\n            return result;\n        },\n\n        /**\n         * Sets 'data' to 'options' observable array, if instance has\n         * 'customEntry' property set to true, calls 'setHidden' method\n         *  passing !options.length as a parameter\n         *\n         * @param {Array} data\n         * @returns {Object} Chainable\n         */\n        setOptions: function (data) {\n            var captionValue = this.captionValue || '',\n                result = this.parseOptions(data, captionValue),\n                isVisible;\n\n            this.indexedOptions = this.indexOptions(result.options);\n\n            this.options(result.options);\n\n            if (!this.caption()) {\n                this.caption(result.caption);\n            }\n\n            if (this.customEntry) {\n                isVisible = !!result.options.length;\n\n                this.setVisible(isVisible);\n                this.toggleInput(!isVisible);\n            }\n\n            return this;\n        },\n\n        /**\n         * Set the notice message on value change\n         *\n         * @param {any} value\n         * @returns {exports}\n         */\n        setNoticeMessage: function (value) {\n            var noticeMessage = '',\n                selectedOption = _.find(this.options(), function (option) {\n                    return option.value === value;\n                });\n\n            if (selectedOption && typeof selectedOption.noticeMessage !== 'undefined') {\n                noticeMessage = selectedOption.noticeMessage;\n            }\n\n            this.noticeMessage(noticeMessage);\n\n            return this;\n        }\n    });\n});\n","Magento_PageBuilder/js/form/element/dependent-select.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'Magento_Ui/js/form/element/select'\n], function (Select) {\n    'use strict';\n\n    return Select.extend({\n        defaults: {\n            visible: false\n        },\n\n        /**\n         * Dependently display dropdown component if it contains more than one option\n         *\n         * @returns {Object} Chainable\n         */\n        setOptions: function () {\n            this._super();\n\n            if (this.options().length > 1) {\n                this.setVisible(true);\n            }\n\n            return this;\n        }\n    });\n});\n","Magento_PageBuilder/js/form/element/dependent-fieldset.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'Magento_Ui/js/form/components/fieldset'\n], function (Fieldset) {\n    'use strict';\n\n    return Fieldset.extend({\n        defaults: {\n            originalLabelValue: ''\n        },\n\n        /**\n         * Observe label\n         * {@inheritDoc}\n         */\n        initObservable: function () {\n            this._super().observe('label');\n\n            return this;\n        },\n\n        /**\n         * Store original label value\n         * {@inheritDoc}\n         */\n        initConfig: function () {\n            this._super();\n            this.originalLabelValue = this.label;\n        },\n\n        /**\n         * Hide fieldset if number of field options is <= 1 and it is the only element in the group\n         *\n         * @param {Array} options\n         */\n        hideFieldset: function (options) {\n            this.visible(options.length > 1 || this.elems().length > 1);\n        },\n\n        /**\n         * Hide label if number of field options is <= 1\n         *\n         * @param {Array} options\n         */\n        hideLabel: function (options) {\n            this.label(options.length > 1 ? this.originalLabelValue : '');\n        }\n    });\n});\n","Magento_PageBuilder/js/form/element/grid-size.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\n/**\n * @api\n */\ndefine([\n    'Magento_Ui/js/form/element/abstract'\n], function (Abstract) {\n    'use strict';\n\n    return Abstract.extend({\n        validate: function () {\n            var externalFormSourceData = this.requestModule('index=' + this.ns)().source.data;\n\n            this.validationParams = {\n                'non_empty_column_count': externalFormSourceData.non_empty_column_count,\n                'max_grid_size': externalFormSourceData.max_grid_size\n            };\n\n            return this._super();\n        }\n    });\n});\n","Magento_PageBuilder/js/form/element/validator-rules-mixin.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'jquery',\n    'underscore',\n    'Magento_Ui/js/lib/validation/utils'\n], function ($, _, utils) {\n    'use strict';\n\n    /**\n     * Validate the number is between the min and max provided\n     *\n     * @param {Number} value\n     * @param {Number} min\n     * @param {Number} max\n     * @return {Boolean}\n     */\n    function validateNumberBetween(value, min, max) {\n        var numValue;\n\n        if ($.mage.isEmptyNoTrim(value)) {\n            return true;\n        }\n\n        numValue = $.mage.parseNumber(value);\n\n        if (isNaN(numValue)) {\n            return false;\n        }\n\n        return $.mage.isBetween(numValue, min, max);\n    }\n\n    /**\n     * Validate that string is url\n     * @param {String} href\n     * @return {Boolean}\n     */\n    function validateIsUrl(href) {\n        return (/^(http|https|ftp):\\/\\/(([A-Z0-9]([A-Z0-9_-]*[A-Z0-9]|))(\\.[A-Z0-9]([A-Z0-9_-]*[A-Z0-9]|))*)(:(\\d+))?(\\/[A-Z0-9~](([A-Z0-9_~-]|\\.)*[A-Z0-9~]|))*\\/?(.*)?$/i).test(href);//eslint-disable-line max-len\n    }\n\n    /**\n     * Validate that string has an anchor tag\n     * @param {String} str\n     * @return {Boolean}\n     */\n    function validateWysiwygHasAnchorTags(str) {\n        return (/<a[\\s]+([^>]+)>|<a>|<\\/a>/igm).test(str);\n    }\n\n    /**\n     * Validate that string has a widget\n     * @param {String} str\n     * @return {Boolean}\n     */\n    function validateWysiwygHasWidget(str) {\n        return (/\\{\\{widget(.*?)\\}\\}/ig).test(str);\n    }\n\n    /**\n     * Validate that string is a proper css-class\n     * @param {String} str\n     * @return {Boolean}\n     */\n    function validateCssClass(str) {\n        return (/^[a-zA-Z _\\-\\d]+$/i).test(str);\n    }\n\n    /**\n     * Validate message field and url field anchor tag is used exclusively by one field\n     * @param {String} message\n     * @param {Object} url\n     * @return {Boolean}\n     */\n    function validateOneAnchorTagField(message, url) {\n        return !(validateWysiwygHasAnchorTags(message) &&\n            ['page', 'product', 'category', 'default'].indexOf(url.type) !== -1 &&\n            url[url.type] &&\n            url[url.type].length > 0);\n    }\n\n    /**\n     * Validate message field and url field html standards, nested widget\n     * @param {String} message\n     * @param {Object} url\n     * @return {Boolean}\n     */\n    function validateNestedWidgetElement(message, url) {\n        return !(validateWysiwygHasWidget(message) &&\n            ['page', 'product', 'category', 'default'].indexOf(url.type) !== -1 &&\n            url[url.type] &&\n            url[url.type].length > 0);\n    }\n\n    /**\n     * Validate a field with an expected data value of type object, like margins_and_padding field\n     * @param {Function} validator\n     * @param {String} ruleName\n     */\n    function validateObjectField(validator, ruleName) {\n        var rule = validator.getRule(ruleName);\n\n        validator.addRule(\n            ruleName,\n            function (value, params) {\n                var allNumbers = true,\n                    handler = rule.handler.bind(this);\n\n                if (typeof value !== 'object') {\n                    return handler(value, params);\n                }\n\n                _.flatten(_.map(value, _.values)).forEach(function (val) {\n                    if (!handler(val, params)) {\n                        allNumbers = false;\n\n                        return allNumbers;\n                    }\n                });\n\n                return allNumbers;\n            },\n            $.mage.__(rule.message)\n        );\n    }\n\n    /**\n     * Validate calc value.\n     *\n     * @param {String} value\n     * @returns {Boolean}\n     */\n    function validateCalc(value) {\n        var el = document.createElement('div'),\n            style = el.style;\n\n        if (!value.trim().length) {\n            return true;\n        }\n\n        style.width = 'calc(' + value + ')';\n\n        return !!style.width.length;\n    }\n\n    return function (validator) {\n        var requiredInputRule = validator.getRule('required-entry');\n\n        validator.addRule(\n            'required-entry-location-name',\n            requiredInputRule.handler,\n            $.mage.__('Please enter the location name.')\n        );\n\n        validator.addRule(\n            'required-entry-latitude',\n            requiredInputRule.handler,\n            $.mage.__('Enter latitude')\n        );\n\n        validator.addRule(\n            'required-entry-longitude',\n            requiredInputRule.handler,\n            $.mage.__('Enter longitude')\n        );\n\n        validator.addRule(\n            'validate-latitude',\n            function (value) {\n                return validateNumberBetween(value, -85, 85);\n            },\n            $.mage.__('Please enter a number between -85 and 85')\n        );\n\n        validator.addRule(\n            'validate-longitude',\n            function (value) {\n                return validateNumberBetween(value, -180, 180);\n            },\n            $.mage.__('Please enter a number between -180 and 180')\n        );\n\n        validator.addRule(\n            'validate-video-url',\n            function (href) {\n                if (utils.isEmptyNoTrim(href)) {\n                    return true;\n                }\n\n                href = (href || '').replace(/^\\s+/, '').replace(/\\s+$/, '');\n\n                return validateIsUrl(href) && (href.match(/youtube\\.com|youtu\\.be/) || href.match(/vimeo\\.com/));\n            },\n            $.mage.__('Please enter a valid video URL.')\n        );\n\n        validator.addRule(\n            'validate-video-source',\n            function (href) {\n                if (utils.isEmptyNoTrim(href)) {\n                    return true;\n                }\n\n                href = (href || '').replace(/^\\s+/, '').replace(/\\s+$/, '');\n\n                return validateIsUrl(href) && (\n                    href.match(/youtube\\.com|youtu\\.be/) ||\n                    href.match(/vimeo\\.com/) ||\n                    href.match(/\\.(mp4|ogv|webm)(?!\\w)/)\n                );\n            },\n            $.mage.__('Please enter a valid video URL. Valid URLs have a video file extension (.mp4, .webm, .ogv) or links to videos on YouTube or Vimeo.')//eslint-disable-line max-len\n        );\n\n        validator.addRule(\n            'validate-css-class',\n            function (value) {\n                if (utils.isEmptyNoTrim(value)) {\n                    return true;\n                }\n\n                return validateCssClass(value);\n            },\n            $.mage.__('Please enter a valid CSS class.')\n        );\n\n        validator.addRule(\n            'required-entry',\n            function (value) {\n                var allFilled;\n\n                // Validation only for margins and paddings\n                if (value !== null && typeof value === 'object' && !!(value.padding || value.margin)) {\n                    allFilled = true;\n\n                    _.flatten(_.map(value, _.values)).forEach(function (val) {\n                        if (utils.isEmpty(val)) {\n                            allFilled = false;\n\n                            return allFilled;\n                        }\n                    });\n\n                    return allFilled;\n                }\n\n                return requiredInputRule.handler(value);\n            },\n            $.mage.__(requiredInputRule.message)\n        );\n\n        validator.addRule(\n            'validate-message-no-link',\n            function (url, message) {\n                return validateOneAnchorTagField(message, url);\n            },\n            $.mage.__('Adding link in both content and outer element is not allowed.')\n        );\n\n        validator.addRule(\n            'validate-no-url',\n            function (message, url) {\n                return validateOneAnchorTagField(message, url);\n            },\n            $.mage.__('Adding link in both content and outer element is not allowed.')\n        );\n\n        validator.addRule(\n            'validate-message-no-widget',\n            function (url, message) {\n                return validateNestedWidgetElement(message, url);\n            },\n            $.mage.__('Adding link in outer element and widget in content is not allowed.')\n        );\n\n        validator.addRule(\n            'validate-no-widget',\n            function (message, url) {\n                return validateNestedWidgetElement(message, url);\n            },\n            $.mage.__('Adding widget in content and link in outer element is not allowed.')\n        );\n\n        validator.addRule(\n            'validate-calc',\n            function (value) {\n                return validateCalc(value);\n            },\n            $.mage.__('Please enter a valid number or calculation: Valid numbers must have an extension (px, %, pt, vh). Calculations must have white space around the + and - operators and cannot divide by zero.')//eslint-disable-line max-len\n        );\n\n        validator.addRule(\n            'validate-grid-size',\n            function (value, params, additionalParams) {\n                if (value < additionalParams.non_empty_column_count) {\n                    return false;\n                }\n\n                return true;\n            },\n            $.mage.__('Grid size cannot be smaller than the current total amount of columns, minus any empty columns.')\n        );\n\n        validator.addRule(\n            'validate-max-grid-size',\n            function (value, params, additionalParams) {\n                if (value > additionalParams.max_grid_size) {\n                    return false;\n                }\n\n                return true;\n            },\n            $.mage.__('Please enter a value less than or equal to the Maximum Column Grid Size configuration.')\n        );\n\n        validateObjectField(validator, 'validate-number');\n        validateObjectField(validator, 'less-than-equals-to');\n        validateObjectField(validator, 'greater-than-equals-to');\n\n        return validator;\n    };\n});\n","Magento_PageBuilder/js/form/element/block-chooser.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n    'jquery',\n    'uiLayout',\n    'uiElement',\n    'Magento_PageBuilder/js/config',\n    'mage/translate',\n    'mage/utils/objects'\n], function ($, layout, Element, Config, $t, objectUtils) {\n    'use strict';\n\n    return Element.extend({\n        id: null,\n        meta: {},\n        errorMessage: null,\n        displayMetadata: true,\n        messages: {\n            UNKOWN_ERROR: $t('Sorry, there was an error getting requested content. ' +\n                'Please contact the store owner.'),\n            UNKNOWN_SELECTION: $t('The currently selected block does not exist.')\n        },\n        defaults: {\n            template: 'Magento_PageBuilder/form/element/block-chooser',\n            requestParameter: null,\n            dataUrlConfigPath: null,\n            modalName: null,\n            buttonComponentConfig: {\n                title: '${ $.buttonTitle }',\n                component: 'Magento_Ui/js/form/components/button',\n                actions: [{\n                    targetName: '${ $.modalName }',\n                    actionName: 'openModal'\n                }]\n            },\n            requestData: {\n                method: 'POST',\n                data: {\n                    'form_key': window.FORM_KEY\n                }\n            },\n            listens: {\n                id: 'updateFromServer'\n            }\n        },\n\n        /**\n         * @inheritdoc\n         */\n        initObservable: function () {\n            return this._super()\n                .observe('id meta errorMessage displayMetadata');\n        },\n\n        /**\n         * Updates the block data from the server\n         *\n         * @returns void\n         */\n        updateFromServer: function () {\n            var requestData = $.extend(true, {}, this.requestData);\n\n            // The component hasn't be configured yet. Nothing to do.\n            if (!this.id().length || !this.requestParameter || !this.dataUrlConfigPath) {\n                this.meta({});\n\n                return;\n            }\n\n            requestData.data[this.requestParameter] = this.id();\n            $('body').trigger('processStart');\n\n            $.ajax(objectUtils.nested(Config.getConfig(), this.dataUrlConfigPath), requestData)\n                .always(function () {\n                    $('body').trigger('processStop');\n                    this.errorMessage(null);\n                }.bind(this))\n                .done(function (response) {\n                    if (typeof response !== 'object' || response.error) {\n                        this.meta({});\n                        this.errorMessage(this.messages.UNKOWN_ERROR);\n\n                        return;\n                    } else if (Array.isArray(response)) {\n                        this.meta({});\n                        this.errorMessage(this.messages.UNKNOWN_SELECTION);\n\n                        return;\n                    }\n\n                    this.meta(response);\n                }.bind(this))\n                .fail(function () {\n                    this.meta({});\n                    this.errorMessage(this.messages.UNKOWN_ERROR);\n                }.bind(this));\n        },\n\n        /**\n         * Creates the button component for rendering\n         *\n         * @returns {Object} The button component\n         */\n        getButton: function () {\n            var elementConfig = this.buttonComponentConfig;\n\n            elementConfig.name = this.name + '_button';\n            layout([elementConfig]);\n\n            return this.requestModule(elementConfig.name);\n        },\n\n        /**\n         * Determines the status label for the currently loaded block\n         *\n         * @returns {String}\n         */\n        getStatusLabel: function () {\n            return this.meta()['is_active'] === '1' ? $t('Active') : $t('Inactive');\n        }\n    });\n});\n","Magento_PageBuilder/js/resource/object-path.js":"(function (root, factory){\n    'use strict';\n\n    /*istanbul ignore next:cant test*/\n    if (typeof module === 'object' && typeof module.exports === 'object') {\n        module.exports = factory();\n    } else if (typeof define === 'function' && define.amd) {\n        // AMD. Register as an anonymous module.\n        define([], factory);\n    } else {\n        // Browser globals\n        root.objectPath = factory();\n    }\n})(this, function(){\n    'use strict';\n\n    var toStr = Object.prototype.toString;\n    function hasOwnProperty(obj, prop) {\n        if(obj == null) {\n            return false\n        }\n        //to handle objects with null prototypes (too edge case?)\n        return Object.prototype.hasOwnProperty.call(obj, prop)\n    }\n\n    function isEmpty(value){\n        if (!value) {\n            return true;\n        }\n        if (isArray(value) && value.length === 0) {\n            return true;\n        } else if (typeof value !== 'string') {\n            for (var i in value) {\n                if (hasOwnProperty(value, i)) {\n                    return false;\n                }\n            }\n            return true;\n        }\n        return false;\n    }\n\n    function toString(type){\n        return toStr.call(type);\n    }\n\n    function isObject(obj){\n        return typeof obj === 'object' && toString(obj) === \"[object Object]\";\n    }\n\n    var isArray = Array.isArray || function(obj){\n        /*istanbul ignore next:cant test*/\n        return toStr.call(obj) === '[object Array]';\n    }\n\n    function isBoolean(obj){\n        return typeof obj === 'boolean' || toString(obj) === '[object Boolean]';\n    }\n\n    function getKey(key){\n        var intKey = parseInt(key);\n        if (intKey.toString() === key) {\n            return intKey;\n        }\n        return key;\n    }\n\n    function factory(options) {\n        options = options || {}\n\n        var objectPath = function(obj) {\n            return Object.keys(objectPath).reduce(function(proxy, prop) {\n                if(prop === 'create') {\n                    return proxy;\n                }\n\n                /*istanbul ignore else*/\n                if (typeof objectPath[prop] === 'function') {\n                    proxy[prop] = objectPath[prop].bind(objectPath, obj);\n                }\n\n                return proxy;\n            }, {});\n        };\n\n        var hasShallowProperty\n        if (options.includeInheritedProps) {\n            hasShallowProperty = function () {\n                return true\n            }\n        } else {\n            hasShallowProperty = function (obj, prop) {\n                return (typeof prop === 'number' && Array.isArray(obj)) || hasOwnProperty(obj, prop)\n            }\n        }\n\n        function getShallowProperty(obj, prop) {\n            if (hasShallowProperty(obj, prop)) {\n                return obj[prop];\n            }\n        }\n\n        function set(obj, path, value, doNotReplace){\n            if (typeof path === 'number') {\n                path = [path];\n            }\n            if (!path || path.length === 0) {\n                return obj;\n            }\n            if (typeof path === 'string') {\n                return set(obj, path.split('.').map(getKey), value, doNotReplace);\n            }\n            var currentPath = path[0];\n            var currentValue = getShallowProperty(obj, currentPath);\n            if (options.includeInheritedProps && (currentPath === '__proto__' ||\n                (currentPath === 'constructor' && typeof currentValue === 'function'))) {\n                throw new Error('For security reasons, object\\'s magic properties cannot be set')\n            }\n            if (path.length === 1) {\n                if (currentValue === void 0 || !doNotReplace) {\n                    obj[currentPath] = value;\n                }\n                return currentValue;\n            }\n\n            if (currentValue === void 0) {\n                //check if we assume an array\n                if(typeof path[1] === 'number') {\n                    obj[currentPath] = [];\n                } else {\n                    obj[currentPath] = {};\n                }\n            }\n\n            return set(obj[currentPath], path.slice(1), value, doNotReplace);\n        }\n\n        objectPath.has = function (obj, path) {\n            if (typeof path === 'number') {\n                path = [path];\n            } else if (typeof path === 'string') {\n                path = path.split('.');\n            }\n\n            if (!path || path.length === 0) {\n                return !!obj;\n            }\n\n            for (var i = 0; i < path.length; i++) {\n                var j = getKey(path[i]);\n\n                if((typeof j === 'number' && isArray(obj) && j < obj.length) ||\n                    (options.includeInheritedProps ? (j in Object(obj)) : hasOwnProperty(obj, j))) {\n                    obj = obj[j];\n                } else {\n                    return false;\n                }\n            }\n\n            return true;\n        };\n\n        objectPath.ensureExists = function (obj, path, value){\n            return set(obj, path, value, true);\n        };\n\n        objectPath.set = function (obj, path, value, doNotReplace){\n            return set(obj, path, value, doNotReplace);\n        };\n\n        objectPath.insert = function (obj, path, value, at){\n            var arr = objectPath.get(obj, path);\n            at = ~~at;\n            if (!isArray(arr)) {\n                arr = [];\n                objectPath.set(obj, path, arr);\n            }\n            arr.splice(at, 0, value);\n        };\n\n        objectPath.empty = function(obj, path) {\n            if (isEmpty(path)) {\n                return void 0;\n            }\n            if (obj == null) {\n                return void 0;\n            }\n\n            var value, i;\n            if (!(value = objectPath.get(obj, path))) {\n                return void 0;\n            }\n\n            if (typeof value === 'string') {\n                return objectPath.set(obj, path, '');\n            } else if (isBoolean(value)) {\n                return objectPath.set(obj, path, false);\n            } else if (typeof value === 'number') {\n                return objectPath.set(obj, path, 0);\n            } else if (isArray(value)) {\n                value.length = 0;\n            } else if (isObject(value)) {\n                for (i in value) {\n                    if (hasShallowProperty(value, i)) {\n                        delete value[i];\n                    }\n                }\n            } else {\n                return objectPath.set(obj, path, null);\n            }\n        };\n\n        objectPath.push = function (obj, path /*, values */){\n            var arr = objectPath.get(obj, path);\n            if (!isArray(arr)) {\n                arr = [];\n                objectPath.set(obj, path, arr);\n            }\n\n            arr.push.apply(arr, Array.prototype.slice.call(arguments, 2));\n        };\n\n        objectPath.coalesce = function (obj, paths, defaultValue) {\n            var value;\n\n            for (var i = 0, len = paths.length; i < len; i++) {\n                if ((value = objectPath.get(obj, paths[i])) !== void 0) {\n                    return value;\n                }\n            }\n\n            return defaultValue;\n        };\n\n        objectPath.get = function (obj, path, defaultValue){\n            if (typeof path === 'number') {\n                path = [path];\n            }\n            if (!path || path.length === 0) {\n                return obj;\n            }\n            if (obj == null) {\n                return defaultValue;\n            }\n            if (typeof path === 'string') {\n                return objectPath.get(obj, path.split('.'), defaultValue);\n            }\n\n            var currentPath = getKey(path[0]);\n            var nextObj = getShallowProperty(obj, currentPath)\n            if (nextObj === void 0) {\n                return defaultValue;\n            }\n\n            if (path.length === 1) {\n                return nextObj;\n            }\n\n            return objectPath.get(obj[currentPath], path.slice(1), defaultValue);\n        };\n\n        objectPath.del = function del(obj, path) {\n            if (typeof path === 'number') {\n                path = [path];\n            }\n\n            if (obj == null) {\n                return obj;\n            }\n\n            if (isEmpty(path)) {\n                return obj;\n            }\n            if(typeof path === 'string') {\n                return objectPath.del(obj, path.split('.'));\n            }\n\n            var currentPath = getKey(path[0]);\n            if (!hasShallowProperty(obj, currentPath)) {\n                return obj;\n            }\n\n            if(path.length === 1) {\n                if (isArray(obj)) {\n                    obj.splice(currentPath, 1);\n                } else {\n                    delete obj[currentPath];\n                }\n            } else {\n                return objectPath.del(obj[currentPath], path.slice(1));\n            }\n\n            return obj;\n        }\n\n        return objectPath;\n    }\n\n    var mod = factory();\n    mod.create = factory;\n    mod.withInheritedProps = factory({includeInheritedProps: true})\n    return mod;\n});"}
}});