{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///index.js","webpack:///webpack/bootstrap 5c04cbde4fb824613eb6","webpack:///./src/Compress.js","webpack:///./src/core/base64.js","webpack:///./src/core/converter.js","webpack:///./src/core/file.js","webpack:///./src/core/image.js","webpack:///./src/core/photo.js","webpack:///./src/core/rotate.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","global","apply","undefined","_base","_converter","_file","_image","_photo","_rotate","_interopRequireDefault","obj","__esModule","default","_toConsumableArray","arr","Array","isArray","i","arr2","length","from","_classCallCheck","instance","Constructor","TypeError","_base2","_converter2","_file2","_image2","_photo2","_rotate2","_createClass","defineProperties","target","props","descriptor","enumerable","configurable","writable","Object","defineProperty","key","protoProps","staticProps","prototype","Compress","value","el","options","_this","Promise","resolve","reject","input","document","querySelector","setAttribute","addEventListener","evt","output","compress","concat","files","compressFile","file","photo","start","window","performance","now","alt","name","ext","type","startSize","size","orientation","then","load","compressImage","src","img","startWidth","naturalWidth","startHeight","naturalHeight","resize","_Image$resize","maxWidth","maxHeight","width","height","endWidth","endHeight","imageToCanvas","canvas","iterations","base64prefix","prefix","loopCompression","quality","minQuality","base64","finalSize","data","end","difference","elapsedTimeInSeconds","initialSizeInMb","MB","endSizeInMb","endWidthInPx","endHeightInPx","initialWidthInPx","initialHeightInPx","sizeReducedInPercent","arguments","targetSize","targetQuality","base64str","canvasToBase64","newSize","all","map","mime","base64ToFile","len","replace","split","match","byteString","atob","content","charCodeAt","Blob","Uint8Array","createElement","context","getContext","image","drawImage","translate","scale","rotate","Math","PI","toDataURL","KB","fileReader","FileReader","result","err","readAsDataURL","Image","targetWidth","targetHeight","originalAspectRatio","targetAspectRatio","outputWidth","outputHeight","min","Photo","_ref","_ref$quality","_ref$size","_ref$maxWidth","_ref$maxHeight","_ref$resize","endSize","reader","onload","event","view","DataView","getUint16","byteLength","offset","marker","getUint32","little","tags","readAsArrayBuffer","slice"],"mappings":"CAAA,SAAAA,EAAAC,GACA,gBAAAC,UAAA,gBAAAC,QACAA,OAAAD,QAAAD,IACA,kBAAAG,gBAAAC,IACAD,UAAAH,GACA,gBAAAC,SACAA,QAAA,SAAAD,IAEAD,EAAA,SAAAC,KACCK,KAAA,WACD,MCAgB,UAAUC,GCN1B,QAAAC,GAAAC,GAGA,GAAAC,EAAAD,GACA,MAAAC,GAAAD,GAAAP,OAGA,IAAAC,GAAAO,EAAAD,IACAP,WACAS,GAAAF,EACAG,QAAA,EAUA,OANAL,GAAAE,GAAAI,KAAAV,EAAAD,QAAAC,IAAAD,QAAAM,GAGAL,EAAAS,QAAA,EAGAT,EAAAD,QAvBA,GAAAQ,KAqCA,OATAF,GAAAM,EAAAP,EAGAC,EAAAO,EAAAL,EAGAF,EAAAQ,EAAA,GAGAR,EAAA,KDgBM,SAAUL,EAAQD,EAASM,GAEhC,GAAIS,GAAgCC,EAA8BC,GAA8B,SAAWC,EAAQnB,GAE7GiB,GAAgCf,EAAQK,EAAoB,GAAIA,EAAoB,GAAIA,EAAoB,GAAIA,EAAoB,GAAIA,EAAoB,GAAIA,EAAoB,IAAKS,EAAiC,EAAWE,EAA2E,kBAAnCF,GAAiDA,EAA+BI,MAAMnB,EAASgB,GAAiCD,IAAmEK,SAAlCH,IAAgDhB,EAAOD,QAAUiB,KAUlfb,KAAM,SAAUH,EAAQoB,EAAOC,EAAYC,EAAOC,EAAQC,EAAQC,GACnE,YAcA,SAASC,GAAuBC,GAC9B,MAAOA,IAAOA,EAAIC,WAAaD,GAC7BE,QAASF,GAIb,QAASG,GAAmBC,GAC1B,GAAIC,MAAMC,QAAQF,GAAM,CACtB,IAAK,GAAIG,GAAI,EAAGC,EAAOH,MAAMD,EAAIK,QAASF,EAAIH,EAAIK,OAAQF,IACxDC,EAAKD,GAAKH,EAAIG,EAGhB,OAAOC,GAEP,MAAOH,OAAMK,KAAKN,GAItB,QAASO,GAAgBC,EAAUC,GACjC,KAAMD,YAAoBC,IACxB,KAAM,IAAIC,WAAU,qCAhCxB,GAAIC,GAAShB,EAAuBN,GAEhCuB,EAAcjB,EAAuBL,GAErCuB,EAASlB,EAAuBJ,GAEhCuB,EAAUnB,EAAuBH,GAEjCuB,EAAUpB,EAAuBF,GAEjCuB,EAAWrB,EAAuBD,GA0BlCuB,EAAe,WACjB,QAASC,GAAiBC,EAAQC,GAChC,IAAK,GAAIjB,GAAI,EAAGA,EAAIiB,EAAMf,OAAQF,IAAK,CACrC,GAAIkB,GAAaD,EAAMjB,EACvBkB,GAAWC,WAAaD,EAAWC,aAAc,EACjDD,EAAWE,cAAe,EACtB,SAAWF,KAAYA,EAAWG,UAAW,GACjDC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAIlD,MAAO,UAAUZ,EAAamB,EAAYC,GAGxC,MAFID,IAAYV,EAAiBT,EAAYqB,UAAWF,GACpDC,GAAaX,EAAiBT,EAAaoB,GACxCpB,MElHRsB,EFsHY,WACb,QAASA,KACPxB,EAAgBnC,KAAM2D,GAoHxB,MAjHAd,GAAac,IACXJ,IAAK,SACLK,MAAO,SE5HJC,EAAIC,GAAS,GAAAC,GAAA/D,IACnB,OAAO,IAAIgE,SAAQ,SAACC,EAASC,GAC3B,GAAMC,GAAQC,SAASC,cAAcR,EACrCM,GAAMG,aAAa,SAAU,WAC7BH,EAAMI,iBAAiB,SAAU,SAACC,GAChC,GAAMC,GAASV,EAAKW,YAALC,OAAAhD,EAAkB6C,EAAIzB,OAAO6B,QAAQd,EACpDG,GAAQQ,KACP,QFkIFlB,IAAK,WACLK,MAAO,SE/HFgB,EAAOd,GACf,QAASe,GAAcC,EAAMhB,GAE3B,GAAMiB,GAAQ,GAAApC,GAAAjB,QAAUoC,EAMxB,OALAiB,GAAMC,MAAQC,OAAOC,YAAYC,MACjCJ,EAAMK,IAAMN,EAAKO,KACjBN,EAAMO,IAAMR,EAAKS,KACjBR,EAAMS,UAAYV,EAAKW,KAEhB7C,EAAAlB,QAAOgE,YAAYZ,GACzBa,KAAK,SAACD,GAEL,MADAX,GAAMW,YAAcA,EACbjD,EAAAf,QAAKkE,KAAKd,KAElBa,KAAKE,EAAcd,IAEtB,QAASc,GAAed,GACtB,MAAO,UAACe,GACN,MAAOpD,GAAAhB,QAAMkE,KAAKE,GAAKH,KAAK,SAACI,GAK3B,GAHAhB,EAAMiB,WAAaD,EAAIE,aACvBlB,EAAMmB,YAAcH,EAAII,cAEpBpB,EAAMqB,OAAQ,IAAAC,GACU3D,EAAAhB,QAAM0E,OAAOrB,EAAMuB,SAAUvB,EAAMwB,WAAWR,EAAIE,aAAcF,EAAII,eAAtFK,EADQH,EACRG,MAAOC,EADCJ,EACDI,MACf1B,GAAM2B,SAAWF,EACjBzB,EAAM4B,UAAYF,MAElB1B,GAAM2B,SAAWX,EAAIE,aACrBlB,EAAM4B,UAAYZ,EAAII,aAExB,OAAO3D,GAAAd,QAAUkF,cAAc7B,EAAM2B,SAAU3B,EAAM4B,UAAW5B,EAAMW,aAAaK,KAEpFJ,KAAK,SAACkB,GAIL,MAHA9B,GAAM+B,WAAa,EAEnB/B,EAAMgC,aAAexE,EAAAb,QAAOsF,OAAOjC,EAAMO,KAClC2B,EAAgBJ,EAAQ9B,EAAMS,UAAWT,EAAMmC,QAASnC,EAAMU,KAAMV,EAAMoC,WAAYpC,EAAM+B,cAEpGnB,KAAK,SAACyB,GAEL,MADArC,GAAMsC,UAAY9E,EAAAb,QAAO+D,KAAK2B,GACvB7E,EAAAb,QAAO4F,KAAKF,KAEpBzB,KAAK,SAAC2B,GACLvC,EAAMwC,IAAMtC,OAAOC,YAAYC,KAC/B,IAAMqC,GAAazC,EAAMwC,IAAMxC,EAAMC,KAErC,QACEsC,KAAMA,EACNN,OAAQjC,EAAMgC,aACdU,qBAAsBD,EAAa,IACnCpC,IAAKL,EAAMK,IACXsC,gBAAiBlF,EAAAd,QAAU+D,KAAKV,EAAMS,WAAWmC,GACjDC,YAAapF,EAAAd,QAAU+D,KAAKV,EAAMsC,WAAWM,GAC7CrC,IAAKP,EAAMO,IACX4B,QAASnC,EAAMmC,QACfW,aAAc9C,EAAM2B,SACpBoB,cAAe/C,EAAM4B,UACrBoB,iBAAkBhD,EAAMiB,WACxBgC,kBAAmBjD,EAAMmB,YACzB+B,sBAAuBlD,EAAMS,UAAYT,EAAMsC,WAAatC,EAAMS,UAAY,IAC9EsB,WAAY/B,EAAM+B,eAK1B,QAASG,GAAiBJ,EAAQpB,GAA8D,GAAxDyB,GAAwDgB,UAAAjG,OAAA,GAAAjB,SAAAkH,UAAA,GAAAA,UAAA,GAA9C,EAAGC,EAA2CD,UAAA,GAA/BE,EAA+BF,UAAAjG,OAAA,GAAAjB,SAAAkH,UAAA,GAAAA,UAAA,GAAf,EAAGpB,EAAYoB,UAAA,GACxFG,EAAY7F,EAAAd,QAAU4G,eAAezB,EAAQK,GAC7CqB,EAAUhG,EAAAb,QAAO+D,KAAK4C,EAK5B,OAFAvB,IAAc,EAEVyB,EAAUJ,EACLlB,EAAgBJ,EAAQ0B,EAASrB,EAAU,GAAKiB,EAAYC,EAAetB,GAGhFI,EAAUkB,EACLnB,EAAgBJ,EAAQ0B,EAASrB,EAAU,GAAKiB,EAAYC,EAAetB,GAGhFI,EAAU,GACLmB,EAEFA,EAET,MAAOrE,SAAQwE,IAAI5D,EAAM6D,IAAI,SAAC3D,GAC5B,MAAOD,GAAaC,EAAMhB,WFmIzBP,IAAK,sBACLK,MAAO,SEjIgBwD,EAAQsB,GAClC,MAAOlG,GAAAd,QAAUiH,aAAavB,EAAQsB,OFqI9B/E,IE9HZ9D,GAAOD,QAAU+D,KFsIX,SAAU9D,EAAQD,EAASM,GAEhC,GAAIS,GAAgCC,EAA8BC,GAA8B,SAAWC,EAAQnB,GAE7GiB,GAAgChB,GAAUe,EAAiC,EAAWE,EAA2E,kBAAnCF,GAAiDA,EAA+BI,MAAMnB,EAASgB,GAAiCD,IAAmEK,SAAlCH,IAAgDhB,EAAOD,QAAUiB,KAUnWb,KAAM,SAAUJ,GACjB,YAEAyD,QAAOC,eAAe1D,EAAS,cAC7BgE,OAAO,GG7QZ,IAAM6B,GAAO,SAAC2B,GACZ,GAAMwB,GAAMxB,EAAOyB,QAAQ,2BAA4B,IAAI5G,MAC3D,QAAQ2G,EAAM,KAAO,MAMjBF,EAAO,SAACtB,GACZ,MAAOA,GAAO0B,MAAM,KAAK,GAAGC,MAAM,gBAAgB,IAG9CzB,EAAO,SAACF,GACZ,MAAOA,GAAOyB,QAAQ,2BAA4B,KAG9C7B,EAAS,SAAC1B,GACd,cAAeA,EAAf,WH+QC1F,GAAQ8B,SG5QM+D,OAAMiD,OAAMpB,OAAMN,aHiR7B,SAAUnH,EAAQD,EAASM,GAEhC,GAAIS,GAAgCC,EAA8BC,GAA8B,SAAWC,EAAQnB,GAE7GiB,GAAgChB,GAAUe,EAAiC,EAAWE,EAA2E,kBAAnCF,GAAiDA,EAA+BI,MAAMnB,EAASgB,GAAiCD,IAAmEK,SAAlCH,IAAgDhB,EAAOD,QAAUiB,KAUnWb,KAAM,SAAUJ,GACjB,YAEAyD,QAAOC,eAAe1D,EAAS,cAC7BgE,OAAO,GItTZ,IAAM+E,GAAe,SAACvB,GAGpB,IAAK,GAHuBsB,GAAwBR,UAAAjG,OAAA,GAAAjB,SAAAkH,UAAA,GAAAA,UAAA,GAAjB,aAC7Bc,EAAa/D,OAAOgE,KAAK7B,GACzB8B,KACGnH,EAAI,EAAGA,EAAIiH,EAAW/G,OAAQF,IACrCmH,EAAQnH,GAAKiH,EAAWG,WAAWpH,EAErC,OAAO,IAAIkD,QAAOmE,MAAM,GAAIC,YAAWH,KAAY3D,KAAMmD,KAGrD9B,EAAgB,SAACJ,EAAOC,EAAQf,GACpC,GAAMmB,GAASzC,SAASkF,cAAc,UAChCC,EAAU1C,EAAO2C,WAAW,KAOlC,OALA3C,GAAOL,MAAQA,EACfK,EAAOJ,OAASA,EAIT,SAACgD,GACN,IAAK/D,GAAeA,EAAc,EAEhC,MADA6D,GAAQG,UAAUD,EAAO,EAAG,EAAG5C,EAAOL,MAAOK,EAAOJ,QAC7CI,CAQT,QANInB,EAAc,IAChBmB,EAAOL,MAAQC,EACfI,EAAOJ,OAASD,GAIVd,GACN,IAAK,GAEH6D,EAAQI,UAAUnD,EAAO,GACzB+C,EAAQK,OAAM,EAAI,EAClB,MACF,KAAK,GAEHL,EAAQI,UAAUnD,EAAOC,GACzB8C,EAAQM,OAAOC,KAAKC,GACpB,MACF,KAAK,GAEHR,EAAQI,UAAU,EAAGlD,GACrB8C,EAAQK,MAAM,GAAG,EACjB,MACF,KAAK,GAEHL,EAAQM,OAAO,GAAMC,KAAKC,IAC1BR,EAAQK,MAAM,GAAG,EACjB,MACF,KAAK,GAEHL,EAAQM,OAAO,GAAMC,KAAKC,IAC1BR,EAAQI,UAAU,GAAIlD,EACtB,MACF,KAAK,GAEH8C,EAAQM,OAAO,GAAMC,KAAKC,IAC1BR,EAAQI,UAAUnD,GAAQC,GAC1B8C,EAAQK,OAAM,EAAI,EAClB,MACF,KAAK,GAEHL,EAAQM,QAAO,GAAOC,KAAKC,IAC3BR,EAAQI,WAAWnD,EAAO,GAQ9B,MALId,GAAc,EAChB6D,EAAQG,UAAUD,EAAO,EAAG,EAAG5C,EAAOJ,OAAQI,EAAOL,OAErD+C,EAAQG,UAAUD,EAAO,EAAG,EAAG5C,EAAOL,MAAOK,EAAOJ,QAE/CI,IAILyB,EAAiB,SAACzB,GAA2B,GAAnBK,GAAmBgB,UAAAjG,OAAA,GAAAjB,SAAAkH,UAAA,GAAAA,UAAA,GAAT,IAElCd,EAASP,EAAOmD,UAAU,aAAc9C,EAC9C,OAAOE,IAUH3B,EAAO,SAACA,GACZ,OACEwE,GAAIxE,EAAO,IACXkC,GAAIlC,OJ+SL7F,GAAQ8B,SI3SMiH,eAAc/B,gBAAe0B,iBAAgB7C,WJgTxD,SAAU5F,EAAQD,EAASM,GAEhC,GAAIS,GAAgCC,EAA8BC,GAA8B,SAAWC,EAAQnB,GAE7GiB,GAAgChB,GAAUe,EAAiC,EAAWE,EAA2E,kBAAnCF,GAAiDA,EAA+BI,MAAMnB,EAASgB,GAAiCD,IAAmEK,SAAlCH,IAAgDhB,EAAOD,QAAUiB,KAUnWb,KAAM,SAAUJ,GACjB,YAEAyD,QAAOC,eAAe1D,EAAS,cAC7BgE,OAAO,GKlaZ,IAAMgC,GAAO,SAACd,GACZ,MAAO,IAAId,SAAQ,SAACC,EAASC,GAC3B,GAAMgG,GAAa,GAAIjF,QAAOkF,UAC9BD,GAAW3F,iBAAiB,OAAQ,SAACC,GACnCP,EAAQO,EAAIzB,OAAOqH,UAClB,GAEHF,EAAW3F,iBAAiB,QAAS,SAAC8F,GACpCnG,EAAOmG,KACN,GAEHH,EAAWI,cAAcxF,KLya1BlF,GAAQ8B,SKraMkE,WL0aX,SAAU/F,EAAQD,EAASM,GAEhC,GAAIS,GAAgCC,EAA8BC,GAA8B,SAAWC,EAAQnB,GAE7GiB,GAAgChB,GAAUe,EAAiC,EAAWE,EAA2E,kBAAnCF,GAAiDA,EAA+BI,MAAMnB,EAASgB,GAAiCD,IAAmEK,SAAlCH,IAAgDhB,EAAOD,QAAUiB,KAUnWb,KAAM,SAAUJ,GACjB,YAEAyD,QAAOC,eAAe1D,EAAS,cAC7BgE,OAAO,GM3cZ,IAAMgC,GAAO,SAACE,GACZ,MAAO,IAAI9B,SAAQ,SAACC,EAASC,GAC3B,GAAM6B,GAAM,GAAId,QAAOsF,KACvBxE,GAAIxB,iBAAiB,OAAQ,WAC3BN,EAAQ8B,KACP,GAEHA,EAAIxB,iBAAiB,QAAS,SAAC8F,GAC7BnG,EAAOmG,KACN,GAEHtE,EAAID,IAAMA,KAORM,EAAS,SAACoE,EAAaC,GAC3B,MAAO,UAACjE,EAAOC,GACb,IAAK+D,IAAgBC,EAAc,OAASjE,QAAOC,SAEnD,IAAMiE,GAAsBlE,EAAQC,EAC9BkE,EAAoBH,EAAcC,EAEpCG,SAAaC,QAUjB,OARIH,GAAsBC,GACxBC,EAAcd,KAAKgB,IAAItE,EAAOgE,GAC9BK,EAAeD,EAAcF,IAE7BG,EAAef,KAAKgB,IAAIrE,EAAQgE,GAChCG,EAAcC,EAAeH,IAGtBlE,MAAOoE,EAAanE,OAAQoE,INgdtCjL,GAAQ8B,SM5cMkE,OAAMQ,aNidjB,SAAUvG,EAAQD,EAASM,GAEhC,GAAIS,GAAgCC,EAA8BC,GAA8B,SAAWC,EAAQnB,GAE7GiB,GAAgChB,GAAUe,EAAiC,EAAWE,EAA2E,kBAAnCF,GAAiDA,EAA+BI,MAAMnB,EAASgB,GAAiCD,IAAmEK,SAAlCH,IAAgDhB,EAAOD,QAAUiB,KAUnWb,KAAM,SAAUJ,GACjB,YAMA,SAASuC,GAAgBC,EAAUC,GACjC,KAAMD,YAAoBC,IACxB,KAAM,IAAIC,WAAU,qCANxBe,OAAOC,eAAe1D,EAAS,cAC7BgE,OAAO,GAST,IOnhBGmH,GACJ,QAAAA,GAAAC,GAA6F,GAAAC,GAAAD,EAA9E9D,UAA8ElG,SAAAiK,EAApE,IAAoEA,EAAAC,EAAAF,EAA9DvF,OAA8DzE,SAAAkK,EAAvD,EAAuDA,EAAAC,EAAAH,EAApD1E,WAAoDtF,SAAAmK,EAAzC,KAAyCA,EAAAC,EAAAJ,EAAnCzE,YAAmCvF,SAAAoK,EAAvB,KAAuBA,EAAAC,EAAAL,EAAjB5E,SAAiBpF,SAAAqK,IAAAlJ,GAAAnC,KAAA+K,GAC3F/K,KAAKgF,MAAQC,OAAOC,YAAYC,MAChCnF,KAAKuH,IAAM,KAEXvH,KAAKoF,IAAM,KACXpF,KAAKsF,IAAM,KACXtF,KAAKwF,UAAY,KACjBxF,KAAKgG,WAAa,KAClBhG,KAAKkG,YAAc,KAKnBlG,KAAKyF,KAAc,IAAPA,EAAc,IAC1BzF,KAAKsL,QAAU,KACftL,KAAK0G,SAAW,KAChB1G,KAAK2G,UAAY,KACjB3G,KAAK8G,WAAa,EAClB9G,KAAK+G,aAAe,KAEpB/G,KAAKkH,QAAUA,EACflH,KAAKoG,OAASA,EACdpG,KAAKsG,SAAWA,EAChBtG,KAAKuG,UAAYA,EACjBvG,KAAK0F,YAAc,EP+hBpB9F,GAAQ8B,QO5hBIqJ,KPiiBT,SAAUlL,EAAQD,EAASM,GAEhC,GAAIS,GAAgCC,EAA8BC,GAA8B,SAAWC,EAAQnB,GAE7GiB,GAAgChB,GAAUe,EAAiC,EAAWE,EAA2E,kBAAnCF,GAAiDA,EAA+BI,MAAMnB,EAASgB,GAAiCD,IAAmEK,SAAlCH,IAAgDhB,EAAOD,QAAUiB,KAUnWb,KAAM,SAAUJ,GACjB,YAEAyD,QAAOC,eAAe1D,EAAS,cAC7BgE,OAAO,GQ9kBZ,IAAM8B,GAAc,SAACZ,GACnB,MAAO,IAAId,SAAQ,SAACC,EAASC,GAC3B,GAAMqH,GAAS,GAAItG,QAAOkF,UAE1BoB,GAAOC,OAAS,SAAUC,GACxB,GAAIC,GAAO,GAAIC,UAASF,EAAM1I,OAAOqH,OAEJ,SAA7BsB,EAAKE,UAAU,GAAG,IACpB3H,GAAQ,EAKV,KAHA,GAAMhC,GAASyJ,EAAKG,WAChBC,EAAS,EAENA,EAAS7J,GAAQ,CACtB,GAAM8J,GAASL,EAAKE,UAAUE,GAAQ,EAGtC,IAFAA,GAAU,EAEK,QAAXC,EAAmB,CACsB,aAAvCL,EAAKM,UAAUF,GAAU,GAAG,IAC9B7H,GAAQ,EAEV,IAAMgI,GAAgD,QAAvCP,EAAKE,UAAUE,GAAU,GAAG,EAC3CA,IAAUJ,EAAKM,UAAUF,EAAS,EAAGG,EACrC,IAAMC,GAAOR,EAAKE,UAAUE,EAAQG,EACpCH,IAAU,CAEV,KAAK,GAAI/J,GAAI,EAAGA,EAAImK,EAAMnK,IAC0B,MAA9C2J,EAAKE,UAAUE,EAAc,GAAJ/J,EAASkK,IACpChI,EAAQyH,EAAKE,UAAUE,EAAc,GAAJ/J,EAAU,EAAGkK,QAG7C,IAA0B,SAAZ,MAATF,GAA6B,KACpCD,IAAUJ,EAAKE,UAAUE,GAAQ,IAExC7H,GAAQ,IAEVsH,EAAOY,kBAAkBrH,EAAKsH,MAAM,EAAG,URqlBxCxM,GAAQ8B,SQjlBMgE","file":"index.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Compress\"] = factory();\n\telse\n\t\troot[\"Compress\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Compress\"] = factory();\n\telse\n\t\troot[\"Compress\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n\t if (true) {\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [module, __webpack_require__(1), __webpack_require__(2), __webpack_require__(3), __webpack_require__(4), __webpack_require__(5), __webpack_require__(6)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t } else if (typeof exports !== \"undefined\") {\n\t factory(module, require('./core/base64.js'), require('./core/converter.js'), require('./core/file.js'), require('./core/image.js'), require('./core/photo.js'), require('./core/rotate.js'));\n\t } else {\n\t var mod = {\n\t exports: {}\n\t };\n\t factory(mod, global.base64, global.converter, global.file, global.image, global.photo, global.rotate);\n\t global.Compress = mod.exports;\n\t }\n\t})(this, function (module, _base, _converter, _file, _image, _photo, _rotate) {\n\t 'use strict';\n\t\n\t var _base2 = _interopRequireDefault(_base);\n\t\n\t var _converter2 = _interopRequireDefault(_converter);\n\t\n\t var _file2 = _interopRequireDefault(_file);\n\t\n\t var _image2 = _interopRequireDefault(_image);\n\t\n\t var _photo2 = _interopRequireDefault(_photo);\n\t\n\t var _rotate2 = _interopRequireDefault(_rotate);\n\t\n\t function _interopRequireDefault(obj) {\n\t return obj && obj.__esModule ? obj : {\n\t default: obj\n\t };\n\t }\n\t\n\t function _toConsumableArray(arr) {\n\t if (Array.isArray(arr)) {\n\t for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n\t arr2[i] = arr[i];\n\t }\n\t\n\t return arr2;\n\t } else {\n\t return Array.from(arr);\n\t }\n\t }\n\t\n\t function _classCallCheck(instance, Constructor) {\n\t if (!(instance instanceof Constructor)) {\n\t throw new TypeError(\"Cannot call a class as a function\");\n\t }\n\t }\n\t\n\t var _createClass = function () {\n\t function defineProperties(target, props) {\n\t for (var i = 0; i < props.length; i++) {\n\t var descriptor = props[i];\n\t descriptor.enumerable = descriptor.enumerable || false;\n\t descriptor.configurable = true;\n\t if (\"value\" in descriptor) descriptor.writable = true;\n\t Object.defineProperty(target, descriptor.key, descriptor);\n\t }\n\t }\n\t\n\t return function (Constructor, protoProps, staticProps) {\n\t if (protoProps) defineProperties(Constructor.prototype, protoProps);\n\t if (staticProps) defineProperties(Constructor, staticProps);\n\t return Constructor;\n\t };\n\t }();\n\t\n\t var Compress = function () {\n\t function Compress() {\n\t _classCallCheck(this, Compress);\n\t }\n\t\n\t _createClass(Compress, [{\n\t key: 'attach',\n\t value: function attach(el, options) {\n\t var _this = this;\n\t\n\t return new Promise(function (resolve, reject) {\n\t var input = document.querySelector(el);\n\t input.setAttribute('accept', 'image/*');\n\t input.addEventListener('change', function (evt) {\n\t var output = _this.compress([].concat(_toConsumableArray(evt.target.files)), options);\n\t resolve(output);\n\t }, false);\n\t });\n\t }\n\t }, {\n\t key: 'compress',\n\t value: function compress(files, options) {\n\t function compressFile(file, options) {\n\t var photo = new _photo2.default(options);\n\t photo.start = window.performance.now();\n\t photo.alt = file.name;\n\t photo.ext = file.type;\n\t photo.startSize = file.size;\n\t\n\t return _rotate2.default.orientation(file).then(function (orientation) {\n\t photo.orientation = orientation;\n\t return _file2.default.load(file);\n\t }).then(compressImage(photo));\n\t }\n\t function compressImage(photo) {\n\t return function (src) {\n\t return _image2.default.load(src).then(function (img) {\n\t photo.startWidth = img.naturalWidth;\n\t photo.startHeight = img.naturalHeight;\n\t\n\t if (photo.resize) {\n\t var _Image$resize = _image2.default.resize(photo.maxWidth, photo.maxHeight)(img.naturalWidth, img.naturalHeight),\n\t width = _Image$resize.width,\n\t height = _Image$resize.height;\n\t\n\t photo.endWidth = width;\n\t photo.endHeight = height;\n\t } else {\n\t photo.endWidth = img.naturalWidth;\n\t photo.endHeight = img.naturalHeight;\n\t }\n\t return _converter2.default.imageToCanvas(photo.endWidth, photo.endHeight, photo.orientation)(img);\n\t }).then(function (canvas) {\n\t photo.iterations = 1;\n\t\n\t photo.base64prefix = _base2.default.prefix(photo.ext);\n\t return loopCompression(canvas, photo.startSize, photo.quality, photo.size, photo.minQuality, photo.iterations);\n\t }).then(function (base64) {\n\t photo.finalSize = _base2.default.size(base64);\n\t return _base2.default.data(base64);\n\t }).then(function (data) {\n\t photo.end = window.performance.now();\n\t var difference = photo.end - photo.start;\n\t\n\t return {\n\t data: data,\n\t prefix: photo.base64prefix,\n\t elapsedTimeInSeconds: difference / 1000,\n\t alt: photo.alt,\n\t initialSizeInMb: _converter2.default.size(photo.startSize).MB,\n\t endSizeInMb: _converter2.default.size(photo.finalSize).MB,\n\t ext: photo.ext,\n\t quality: photo.quality,\n\t endWidthInPx: photo.endWidth,\n\t endHeightInPx: photo.endHeight,\n\t initialWidthInPx: photo.startWidth,\n\t initialHeightInPx: photo.startHeight,\n\t sizeReducedInPercent: (photo.startSize - photo.finalSize) / photo.startSize * 100,\n\t iterations: photo.iterations\n\t };\n\t });\n\t };\n\t }\n\t function loopCompression(canvas, size) {\n\t var quality = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n\t var targetSize = arguments[3];\n\t var targetQuality = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n\t var iterations = arguments[5];\n\t\n\t var base64str = _converter2.default.canvasToBase64(canvas, quality);\n\t var newSize = _base2.default.size(base64str);\n\t\n\t iterations += 1;\n\t\n\t if (newSize > targetSize) {\n\t return loopCompression(canvas, newSize, quality - 0.1, targetSize, targetQuality, iterations);\n\t }\n\t\n\t if (quality > targetQuality) {\n\t return loopCompression(canvas, newSize, quality - 0.1, targetSize, targetQuality, iterations);\n\t }\n\t\n\t if (quality < 0.5) {\n\t return base64str;\n\t }\n\t return base64str;\n\t }\n\t return Promise.all(files.map(function (file) {\n\t return compressFile(file, options);\n\t }));\n\t }\n\t }], [{\n\t key: 'convertBase64ToFile',\n\t value: function convertBase64ToFile(base64, mime) {\n\t return _converter2.default.base64ToFile(base64, mime);\n\t }\n\t }]);\n\t\n\t return Compress;\n\t }();\n\t\n\t module.exports = Compress;\n\t});\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n\t if (true) {\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t } else if (typeof exports !== \"undefined\") {\n\t factory(exports);\n\t } else {\n\t var mod = {\n\t exports: {}\n\t };\n\t factory(mod.exports);\n\t global.base64 = mod.exports;\n\t }\n\t})(this, function (exports) {\n\t 'use strict';\n\t\n\t Object.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t });\n\t var size = function size(base64) {\n\t var len = base64.replace(/^data:image\\/\\w+;base64,/, '').length;\n\t return (len - 814) / 1.37;\n\t };\n\t\n\t var mime = function mime(base64) {\n\t return base64.split(';')[0].match(/jpeg|png|gif/)[0];\n\t };\n\t\n\t var data = function data(base64) {\n\t return base64.replace(/^data:image\\/\\w+;base64,/, '');\n\t };\n\t\n\t var prefix = function prefix(ext) {\n\t return 'data:' + ext + ';base64,';\n\t };\n\t\n\t exports.default = { size: size, mime: mime, data: data, prefix: prefix };\n\t});\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n\t if (true) {\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t } else if (typeof exports !== \"undefined\") {\n\t factory(exports);\n\t } else {\n\t var mod = {\n\t exports: {}\n\t };\n\t factory(mod.exports);\n\t global.converter = mod.exports;\n\t }\n\t})(this, function (exports) {\n\t 'use strict';\n\t\n\t Object.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t });\n\t\n\t var base64ToFile = function base64ToFile(base64) {\n\t var mime = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'image/jpeg';\n\t\n\t var byteString = window.atob(base64);\n\t var content = [];\n\t for (var i = 0; i < byteString.length; i++) {\n\t content[i] = byteString.charCodeAt(i);\n\t }\n\t return new window.Blob([new Uint8Array(content)], { type: mime });\n\t };\n\t\n\t var imageToCanvas = function imageToCanvas(width, height, orientation) {\n\t var canvas = document.createElement('canvas');\n\t var context = canvas.getContext('2d');\n\t\n\t canvas.width = width;\n\t canvas.height = height;\n\t\n\t\n\t return function (image) {\n\t if (!orientation || orientation > 8) {\n\t context.drawImage(image, 0, 0, canvas.width, canvas.height);\n\t return canvas;\n\t }\n\t if (orientation > 4) {\n\t canvas.width = height;\n\t canvas.height = width;\n\t }\n\t switch (orientation) {\n\t case 2:\n\t context.translate(width, 0);\n\t context.scale(-1, 1);\n\t break;\n\t case 3:\n\t context.translate(width, height);\n\t context.rotate(Math.PI);\n\t break;\n\t case 4:\n\t context.translate(0, height);\n\t context.scale(1, -1);\n\t break;\n\t case 5:\n\t context.rotate(0.5 * Math.PI);\n\t context.scale(1, -1);\n\t break;\n\t case 6:\n\t context.rotate(0.5 * Math.PI);\n\t context.translate(0, -height);\n\t break;\n\t case 7:\n\t context.rotate(0.5 * Math.PI);\n\t context.translate(width, -height);\n\t context.scale(-1, 1);\n\t break;\n\t case 8:\n\t context.rotate(-0.5 * Math.PI);\n\t context.translate(-width, 0);\n\t break;\n\t }\n\t if (orientation > 4) {\n\t context.drawImage(image, 0, 0, canvas.height, canvas.width);\n\t } else {\n\t context.drawImage(image, 0, 0, canvas.width, canvas.height);\n\t }\n\t return canvas;\n\t };\n\t };\n\t\n\t var canvasToBase64 = function canvasToBase64(canvas) {\n\t var quality = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0.75;\n\t\n\t var base64 = canvas.toDataURL('image/jpeg', quality);\n\t return base64;\n\t };\n\t\n\t var size = function size(_size) {\n\t return {\n\t KB: _size / 1000,\n\t MB: _size / (1000 * 1000)\n\t };\n\t };\n\t\n\t exports.default = { base64ToFile: base64ToFile, imageToCanvas: imageToCanvas, canvasToBase64: canvasToBase64, size: size };\n\t});\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n\t if (true) {\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t } else if (typeof exports !== \"undefined\") {\n\t factory(exports);\n\t } else {\n\t var mod = {\n\t exports: {}\n\t };\n\t factory(mod.exports);\n\t global.file = mod.exports;\n\t }\n\t})(this, function (exports) {\n\t 'use strict';\n\t\n\t Object.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t });\n\t\n\t var load = function load(file) {\n\t return new Promise(function (resolve, reject) {\n\t var fileReader = new window.FileReader();\n\t fileReader.addEventListener('load', function (evt) {\n\t resolve(evt.target.result);\n\t }, false);\n\t\n\t fileReader.addEventListener('error', function (err) {\n\t reject(err);\n\t }, false);\n\t\n\t fileReader.readAsDataURL(file);\n\t });\n\t };\n\t\n\t exports.default = { load: load };\n\t});\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n\t if (true) {\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t } else if (typeof exports !== \"undefined\") {\n\t factory(exports);\n\t } else {\n\t var mod = {\n\t exports: {}\n\t };\n\t factory(mod.exports);\n\t global.image = mod.exports;\n\t }\n\t})(this, function (exports) {\n\t 'use strict';\n\t\n\t Object.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t });\n\t\n\t var load = function load(src) {\n\t return new Promise(function (resolve, reject) {\n\t var img = new window.Image();\n\t img.addEventListener('load', function () {\n\t resolve(img);\n\t }, false);\n\t\n\t img.addEventListener('error', function (err) {\n\t reject(err);\n\t }, false);\n\t\n\t img.src = src;\n\t });\n\t };\n\t\n\t var resize = function resize(targetWidth, targetHeight) {\n\t return function (width, height) {\n\t if (!targetWidth && !targetHeight) return { width: width, height: height };\n\t\n\t var originalAspectRatio = width / height;\n\t var targetAspectRatio = targetWidth / targetHeight;\n\t\n\t var outputWidth = void 0,\n\t outputHeight = void 0;\n\t\n\t if (originalAspectRatio > targetAspectRatio) {\n\t outputWidth = Math.min(width, targetWidth);\n\t outputHeight = outputWidth / originalAspectRatio;\n\t } else {\n\t outputHeight = Math.min(height, targetHeight);\n\t outputWidth = outputHeight * originalAspectRatio;\n\t }\n\t\n\t return { width: outputWidth, height: outputHeight };\n\t };\n\t };\n\t\n\t exports.default = { load: load, resize: resize };\n\t});\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n\t if (true) {\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t } else if (typeof exports !== \"undefined\") {\n\t factory(exports);\n\t } else {\n\t var mod = {\n\t exports: {}\n\t };\n\t factory(mod.exports);\n\t global.photo = mod.exports;\n\t }\n\t})(this, function (exports) {\n\t \"use strict\";\n\t\n\t Object.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t });\n\t\n\t function _classCallCheck(instance, Constructor) {\n\t if (!(instance instanceof Constructor)) {\n\t throw new TypeError(\"Cannot call a class as a function\");\n\t }\n\t }\n\t\n\t var Photo = function Photo(_ref) {\n\t var _ref$quality = _ref.quality,\n\t quality = _ref$quality === undefined ? 0.75 : _ref$quality,\n\t _ref$size = _ref.size,\n\t size = _ref$size === undefined ? 2 : _ref$size,\n\t _ref$maxWidth = _ref.maxWidth,\n\t maxWidth = _ref$maxWidth === undefined ? 1920 : _ref$maxWidth,\n\t _ref$maxHeight = _ref.maxHeight,\n\t maxHeight = _ref$maxHeight === undefined ? 1920 : _ref$maxHeight,\n\t _ref$resize = _ref.resize,\n\t resize = _ref$resize === undefined ? true : _ref$resize;\n\t\n\t _classCallCheck(this, Photo);\n\t\n\t this.start = window.performance.now();\n\t this.end = null;\n\t\n\t this.alt = null;\n\t this.ext = null;\n\t this.startSize = null;\n\t this.startWidth = null;\n\t this.startHeight = null;\n\t\n\t this.size = size * 1000 * 1000;\n\t this.endSize = null;\n\t this.endWidth = null;\n\t this.endHeight = null;\n\t this.iterations = 0;\n\t this.base64prefix = null;\n\t\n\t this.quality = quality;\n\t this.resize = resize;\n\t this.maxWidth = maxWidth;\n\t this.maxHeight = maxHeight;\n\t this.orientation = 1;\n\t };\n\t\n\t exports.default = Photo;\n\t});\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {\n\t if (true) {\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t } else if (typeof exports !== \"undefined\") {\n\t factory(exports);\n\t } else {\n\t var mod = {\n\t exports: {}\n\t };\n\t factory(mod.exports);\n\t global.rotate = mod.exports;\n\t }\n\t})(this, function (exports) {\n\t \"use strict\";\n\t\n\t Object.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t });\n\t\n\t\n\t var orientation = function orientation(file) {\n\t return new Promise(function (resolve, reject) {\n\t var reader = new window.FileReader();\n\t\n\t reader.onload = function (event) {\n\t var view = new DataView(event.target.result);\n\t\n\t if (view.getUint16(0, false) !== 0xFFD8) {\n\t resolve(-2);\n\t }\n\t var length = view.byteLength;\n\t var offset = 2;\n\t\n\t while (offset < length) {\n\t var marker = view.getUint16(offset, false);\n\t offset += 2;\n\t\n\t if (marker === 0xFFE1) {\n\t if (view.getUint32(offset += 2, false) !== 0x45786966) {\n\t resolve(-1);\n\t }\n\t var little = view.getUint16(offset += 6, false) === 0x4949;\n\t offset += view.getUint32(offset + 4, little);\n\t var tags = view.getUint16(offset, little);\n\t offset += 2;\n\t\n\t for (var i = 0; i < tags; i++) {\n\t if (view.getUint16(offset + i * 12, little) === 0x0112) {\n\t resolve(view.getUint16(offset + i * 12 + 8, little));\n\t }\n\t }\n\t } else if ((marker & 0xFF00) !== 0xFF00) break;else offset += view.getUint16(offset, false);\n\t }\n\t resolve(-1);\n\t };\n\t reader.readAsArrayBuffer(file.slice(0, 64 * 1024));\n\t });\n\t };\n\t\n\t exports.default = { orientation: orientation };\n\t});\n\n/***/ })\n/******/ ])\n});\n;\n\n\n// WEBPACK FOOTER //\n// index.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 5c04cbde4fb824613eb6","import Base64 from './core/base64.js'\nimport Converter from './core/converter.js'\nimport File from './core/file.js'\nimport Image from './core/image.js'\nimport Photo from './core/photo.js'\nimport Rotate from './core/rotate.js'\n\nclass Compress {\n attach (el, options) {\n return new Promise((resolve, reject) => {\n const input = document.querySelector(el)\n input.setAttribute('accept', 'image/*')\n input.addEventListener('change', (evt) => {\n const output = this.compress([...evt.target.files], options)\n resolve(output)\n }, false)\n })\n }\n\n compress (files, options) {\n function compressFile (file, options) {\n // Create a new photo object\n const photo = new Photo(options)\n photo.start = window.performance.now()\n photo.alt = file.name\n photo.ext = file.type\n photo.startSize = file.size\n\n return Rotate.orientation(file)\n .then((orientation) => {\n photo.orientation = orientation\n return File.load(file)\n })\n .then(compressImage(photo))\n }\n function compressImage (photo) {\n return (src) => {\n return Image.load(src).then((img) => {\n // Store the initial dimensions\n photo.startWidth = img.naturalWidth\n photo.startHeight = img.naturalHeight\n // Resize the image\n if (photo.resize) {\n const { width, height } = Image.resize(photo.maxWidth, photo.maxHeight)(img.naturalWidth, img.naturalHeight)\n photo.endWidth = width\n photo.endHeight = height\n } else {\n photo.endWidth = img.naturalWidth\n photo.endHeight = img.naturalHeight\n }\n return Converter.imageToCanvas(photo.endWidth, photo.endHeight, photo.orientation)(img)\n })\n .then((canvas) => {\n photo.iterations = 1\n // Base64.mime(Converter.canvasToBase64(canvas))\n photo.base64prefix = Base64.prefix(photo.ext)\n return loopCompression(canvas, photo.startSize, photo.quality, photo.size, photo.minQuality, photo.iterations)\n })\n .then((base64) => {\n photo.finalSize = Base64.size(base64)\n return Base64.data(base64)\n })\n .then((data) => {\n photo.end = window.performance.now()\n const difference = photo.end - photo.start // in ms\n\n return {\n data: data,\n prefix: photo.base64prefix,\n elapsedTimeInSeconds: difference / 1000, // in seconds\n alt: photo.alt,\n initialSizeInMb: Converter.size(photo.startSize).MB,\n endSizeInMb: Converter.size(photo.finalSize).MB,\n ext: photo.ext,\n quality: photo.quality,\n endWidthInPx: photo.endWidth,\n endHeightInPx: photo.endHeight,\n initialWidthInPx: photo.startWidth,\n initialHeightInPx: photo.startHeight,\n sizeReducedInPercent: (photo.startSize - photo.finalSize) / photo.startSize * 100,\n iterations: photo.iterations\n }\n })\n }\n }\n function loopCompression (canvas, size, quality = 1, targetSize, targetQuality = 1, iterations) {\n const base64str = Converter.canvasToBase64(canvas, quality)\n const newSize = Base64.size(base64str)\n // const base64str = convertCanvasToBase64(src)\n // const size = getFileSize(base64str);\n iterations += 1\n // add in iteration count\n if (newSize > targetSize) {\n return loopCompression(canvas, newSize, quality - 0.1, targetSize, targetQuality, iterations)\n }\n\n if (quality > targetQuality) {\n return loopCompression(canvas, newSize, quality - 0.1, targetSize, targetQuality, iterations)\n }\n\n if (quality < 0.5) {\n return base64str\n }\n return base64str\n }\n return Promise.all(files.map((file) => {\n return compressFile(file, options)\n }))\n }\n static convertBase64ToFile (base64, mime) {\n return Converter.base64ToFile(base64, mime)\n }\n}\n\n// Supported input formats\n// image/png, image/jpeg, image/jpg, image/gif, image/bmp, image/tiff, image/x-icon, image/svg+xml, image/webp, image/xxx\n// image/png, image/jpeg, image/webp\nmodule.exports = Compress\n\n\n\n// WEBPACK FOOTER //\n// ./src/Compress.js","const size = (base64) => {\n const len = base64.replace(/^data:image\\/\\w+;base64,/, '').length\n return (len - 814) / 1.37\n // return len * 3 / 4\n}\n\n// strip off the data: url prefix to get just the base64-encoded bytes\n// var data = img.replace(/^data:image\\/\\w+;base64,/, \"\");\nconst mime = (base64) => {\n return base64.split(';')[0].match(/jpeg|png|gif/)[0]\n}\n\nconst data = (base64) => {\n return base64.replace(/^data:image\\/\\w+;base64,/, '')\n}\n\nconst prefix = (ext) => {\n return `data:${ext};base64,`\n}\n\nexport default { size, mime, data, prefix }\n\n\n\n// WEBPACK FOOTER //\n// ./src/core/base64.js","\nconst base64ToFile = (base64, mime = 'image/jpeg') => {\n const byteString = window.atob(base64)\n const content = []\n for (let i = 0; i < byteString.length; i++) {\n content[i] = byteString.charCodeAt(i)\n }\n return new window.Blob([new Uint8Array(content)], {type: mime})\n}\n\nconst imageToCanvas = (width, height, orientation) => {\n const canvas = document.createElement('canvas')\n const context = canvas.getContext('2d')\n\n canvas.width = width\n canvas.height = height\n // canvas.style.width = width\n // canvas.style.height = height\n\n return (image) => {\n if (!orientation || orientation > 8) {\n context.drawImage(image, 0, 0, canvas.width, canvas.height)\n return canvas\n }\n if (orientation > 4) {\n canvas.width = height\n canvas.height = width\n // canvas.style.width = height\n // canvas.style.height = width\n }\n switch (orientation) {\n case 2:\n // horizontal flip\n context.translate(width, 0)\n context.scale(-1, 1)\n break\n case 3:\n // 180° rotate left\n context.translate(width, height)\n context.rotate(Math.PI)\n break\n case 4:\n // vertical flip\n context.translate(0, height)\n context.scale(1, -1)\n break\n case 5:\n // vertical flip + 90 rotate right\n context.rotate(0.5 * Math.PI)\n context.scale(1, -1)\n break\n case 6:\n // 90° rotate right\n context.rotate(0.5 * Math.PI)\n context.translate(0, -height)\n break\n case 7:\n // horizontal flip + 90 rotate right\n context.rotate(0.5 * Math.PI)\n context.translate(width, -height)\n context.scale(-1, 1)\n break\n case 8:\n // 90° rotate left\n context.rotate(-0.5 * Math.PI)\n context.translate(-width, 0)\n break\n }\n if (orientation > 4) {\n context.drawImage(image, 0, 0, canvas.height, canvas.width)\n } else {\n context.drawImage(image, 0, 0, canvas.width, canvas.height)\n }\n return canvas\n }\n}\n\nconst canvasToBase64 = (canvas, quality = 0.75) => {\n // in order to compress the final image format has to be jpeg\n const base64 = canvas.toDataURL('image/jpeg', quality)\n return base64\n}\n\n// const canvasToImage = (canvas, quality=.75, mimeType='image/jpeg') => {\n// const image = new Image()\n// const base64str = canvas.toDataURL(mimeType, quality)\n// image.src = base64str\n// return image\n// }\n\nconst size = (size) => {\n return {\n KB: size / 1000,\n MB: size / (1000 * 1000)\n }\n}\n\nexport default { base64ToFile, imageToCanvas, canvasToBase64, size }\n\n\n\n// WEBPACK FOOTER //\n// ./src/core/converter.js","\nconst load = (file) => {\n return new Promise((resolve, reject) => {\n const fileReader = new window.FileReader()\n fileReader.addEventListener('load', (evt) => {\n resolve(evt.target.result)\n }, false)\n\n fileReader.addEventListener('error', (err) => {\n reject(err)\n }, false)\n\n fileReader.readAsDataURL(file)\n })\n}\n\nexport default { load }\n\n\n\n// WEBPACK FOOTER //\n// ./src/core/file.js","\nconst load = (src) => {\n return new Promise((resolve, reject) => {\n const img = new window.Image()\n img.addEventListener('load', () => {\n resolve(img)\n }, false)\n\n img.addEventListener('error', (err) => {\n reject(err)\n }, false)\n\n img.src = src\n })\n}\n /*\n * Resize the image based on the given height or width boundary.\n * Auto resize based on aspect ratio.\n **/\nconst resize = (targetWidth, targetHeight) => {\n return (width, height) => {\n if (!targetWidth && !targetHeight) return { width, height }\n\n const originalAspectRatio = width / height\n const targetAspectRatio = targetWidth / targetHeight\n\n let outputWidth, outputHeight\n\n if (originalAspectRatio > targetAspectRatio) {\n outputWidth = Math.min(width, targetWidth)\n outputHeight = outputWidth / originalAspectRatio\n } else {\n outputHeight = Math.min(height, targetHeight)\n outputWidth = outputHeight * originalAspectRatio\n }\n\n return { width: outputWidth, height: outputHeight }\n }\n}\n\nexport default { load, resize }\n\n\n\n// WEBPACK FOOTER //\n// ./src/core/image.js","// The photo model\nclass Photo {\n constructor ({ quality = 0.75, size = 2, maxWidth = 1920, maxHeight = 1920, resize = true }) {\n this.start = window.performance.now()\n this.end = null\n\n this.alt = null\n this.ext = null\n this.startSize = null\n this.startWidth = null\n this.startHeight = null\n // How much will the quality decrease by each compression\n // this.stepQuality = stepQuality\n\n // size in MB\n this.size = size * 1000 * 1000\n this.endSize = null\n this.endWidth = null\n this.endHeight = null\n this.iterations = 0\n this.base64prefix = null\n // Carry out image resizing\n this.quality = quality\n this.resize = resize\n this.maxWidth = maxWidth\n this.maxHeight = maxHeight\n this.orientation = 1\n }\n}\nexport default Photo\n\n\n\n// WEBPACK FOOTER //\n// ./src/core/photo.js","// https://stackoverflow.com/questions/20600800/js-client-side-exif-orientation-rotate-and-mirror-jpeg-images/31273162#31273162\n\nconst orientation = (file) => {\n return new Promise((resolve, reject) => {\n const reader = new window.FileReader()\n\n reader.onload = function (event) {\n var view = new DataView(event.target.result)\n\n if (view.getUint16(0, false) !== 0xFFD8) {\n resolve(-2)\n }\n const length = view.byteLength\n let offset = 2\n\n while (offset < length) {\n const marker = view.getUint16(offset, false)\n offset += 2\n\n if (marker === 0xFFE1) {\n if (view.getUint32(offset += 2, false) !== 0x45786966) {\n resolve(-1)\n }\n const little = view.getUint16(offset += 6, false) === 0x4949\n offset += view.getUint32(offset + 4, little)\n const tags = view.getUint16(offset, little)\n offset += 2\n\n for (let i = 0; i < tags; i++) {\n if (view.getUint16(offset + (i * 12), little) === 0x0112) {\n resolve(view.getUint16(offset + (i * 12) + 8, little))\n }\n }\n } else if ((marker & 0xFF00) !== 0xFF00) break\n else offset += view.getUint16(offset, false)\n }\n resolve(-1)\n }\n reader.readAsArrayBuffer(file.slice(0, 64 * 1024))\n })\n}\n\nexport default { orientation }\n\n\n\n// WEBPACK FOOTER //\n// ./src/core/rotate.js"],"sourceRoot":""}