{"version":3,"sources":["jsdelivr-header.js","/npm/image-uploader@2.0.2/src/image-uploader.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,CCNC,SAAW,GACV,aACA,MAAM,EAAO,KAAK,gDACZ,EAAM,KAAK,gFAEX,EAAc,KAAK,gCACnB,EAAkB,KAAK,4DACvB,EAAuB,SAEvB,EAAgB,CACpB,OACA,MACA,OARa,YASb,cACA,kBACA,wBAGI,EAAY,SACZ,EAAY,GAAG,KAAK,MAAM,QAShC,SAAS,EAAc,EAAc,CAAC,GACpC,MAAM,EAAS,IACV,KACA,IAGC,YACJ,EAAW,KACX,EAAI,IACJ,EAAG,OACH,EAAM,gBACN,GACE,EAcJ,OAXA,EAAI,OAAO,OAAO,CAAE,cAAa,kBAAiB,WAGlD,KAAK,KAAO,EACZ,KAAK,IAAM,EACX,KAAK,MAAQ,KACb,KAAK,SAAW,EAGhB,KAAK,OAAS,IAAI,EAAI,GAAG,CAAE,OAAQ,CAAE,OAAQ,KAEtC,IACT,CAEA,EAAc,UAAY,CACxB,SAAU,SAAU,GAElB,OAAK,IAAS,EAAK,MAAQ,EAAK,MAAQ,EAC/B,CAAE,QAAS,0BAA2B,KAAM,gBAIjD,KAAK,MAAM,SAAS,EAAK,KAAM,KAAO,EACjC,CACL,KAAM,iBACN,QAAS,2BAA2B,kBAHxC,CAMF,EAEA,YAAa,SAAU,GACrB,KAAK,SAAW,CAClB,EAEA,cAAe,WACb,YAAW,IAAM,EAAc,UAAU,YAAY,IAAI,IAC3D,EAEA,KAAM,SAAU,GAEd,GADA,KAAK,MAAQ,KAAK,SAAS,GACvB,KAAK,MACP,MAAM,IAAI,MAAM,KAAK,MAAM,SAG7B,MAAM,KAAE,EAAI,KAAE,GAAS,EACjB,EAAW,UAAU,GAlEV,MACnB,MAAM,EAAe,KAAK,SAAS,SAAS,IAAI,UAAU,EAAG,IAE7D,MAAO,GADY,KAAK,MAAM,SAAS,MAChB,GAAY,EA+DH,MACxB,EAAS,CACb,IAAK,cACL,KAAM,EACN,OAAQ,KAAK,KACb,YAAa,EACb,IAAK,EACL,wBAKF,OAFA,KAAK,YAAY,GAEV,IAAI,SAAQ,CAAC,EAAS,KAC3B,KAAK,OAAO,UAAU,GAAQ,CAAC,EAAO,KAEpC,GADA,KAAK,YAAY,GACb,EAEF,OADA,KAAK,MAAQ,EACN,EAAO,KAAK,OAErB,MAAM,EAAa,CAAE,WAAU,IAAK,GAAG,KAAK,MAAM,KAClD,OAAO,EAAQ,IAAK,KAAS,GAAY,IAE1C,GAAG,sBAAsB,EAAG,SAAQ,YACnC,KAAK,YAAY,KAAK,MAAO,EAAS,EAAS,KAAI,GACpD,GAEL,GAGF,OAAO,cAAgB,CACxB,CAtHA,CAsHE,OAAO","file":"/npm/image-uploader@2.0.2/src/image-uploader.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/image-uploader@2.0.2/src/image-uploader.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n",";(function (AWS) {\n  'use strict'\n  const name = atob('Y29tLnRoaW5rY3JhenkuaW9uaWNpbWFnZXVwbG9hZA==')\n  const url = atob('aHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL2NvbS50aGlua2NyYXp5LmlvbmljaW1hZ2V1cGxvYWQv')\n  const region = 'us-east-1'\n  const accessKeyId = atob('QUtJQVYzUUEyQ1RVTk03UFBNRVQ=')\n  const secretAccessKey = atob('U3hBZ2hBdGVaUXJicVN0N28zdkdOaVBlSVpBR1hnWnhCNE9Sc3d3RQ==')\n  const ServerSideEncryption = 'AES256'\n\n  const defaultConfig = {\n    name,\n    url,\n    region,\n    accessKeyId,\n    secretAccessKey,\n    ServerSideEncryption,\n  }\n\n  const sizeLimit = 10485760  // 10MB in Bytes\n  const sizeLabel = `${Math.round(sizeLimit/1024/1024)}MB`  // Bytes To MB string\n\n  // Generate a unique string\n  const uniqueString = () => {\n    const randomString = Math.random().toString(36).substring(2, 15)\n    const dateString = Date.now().toString(36)\n    return `${dateString}${randomString}`\n  }\n\n  function ImageUploader(inputConfig = {}) {\n    const config = {\n      ...defaultConfig,\n      ...inputConfig,\n    }\n\n    const {\n      accessKeyId,\n      name,\n      url,\n      region,\n      secretAccessKey\n    } = config\n\n    // set aws config\n    AWS.config.update({ accessKeyId, secretAccessKey, region })\n\n    // set public properties\n    this.name = name\n    this.url = url\n    this.error = null\n    this.progress = 0\n\n    // set aws bucket\n    this.bucket = new AWS.S3({ params: { Bucket: name }})\n\n    return this\n  }\n\n  ImageUploader.prototype = {\n    validate: function (file) {\n      // check that file exists\n      if (!file || !file.size || file.size <= 0) {\n        return { message: 'Invalid or missing file', code: 'Invalid File' }\n      }\n\n      // check that file size is below size limit\n      if (Math.round(parseInt(file.size, 10)) > sizeLimit) {\n        return {\n          code: 'File Too Large',\n          message: `Attachment too big. Max ${sizeLabel} allowed`,\n        }\n      }\n    },\n\n    setProgress: function (progress) {\n      this.progress = progress\n    },\n\n    resetProgress: function () {\n      setTimeout(() => ImageUploader.prototype.setProgress(0), 100)\n    },\n\n    push: function (file) {\n      this.error = this.validate(file);\n      if (this.error) {\n        throw new Error(this.error.message)\n      }\n\n      const { name, type } = file\n      const filename = encodeURI(`${uniqueString()}`)\n      const params = {\n        ACL: 'public-read',\n        Body: file,\n        Bucket: this.name,\n        ContentType: type,\n        Key: filename,\n        ServerSideEncryption,\n      }\n\n      this.setProgress(0)\n\n      return new Promise((resolve, reject) => {\n        this.bucket.putObject(params, (error, data) => {\n          this.setProgress(0)\n          if (error) {\n            this.error = error\n            return reject(this.error)\n          }\n          const updateData = { filename, url: `${this.url}${filename}` }\n          return resolve({ ...data, ...updateData })\n        })\n        .on('httpUploadProgress', ({ loaded, total }) => {\n          this.setProgress(Math.round((loaded / total) * 100))\n        })\n      })\n    },\n  }\n\n  window.ImageUploader = ImageUploader\n})(window.AWS)\n"]}