{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/Frontend.js","webpack:///./src/helpers/ImageWithWatermark.js","webpack:///./src/helpers/Utils.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","1","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","wp","element","render","Component","Main","images","list","jQuery","assign","watermarkImage","keys","first_item","ImageWithWatermark","WooWatermark","settings","then","imageCanvas","url","imgId","mediaData","callback","newImageDataUrl","toDataURL","mediaId","axios","method","ajax_url","params","response","console","log","plugin_wrapper","document","getElementById","domReady","JSON","parse","image_url","multiple","Promise","resolve","reject","cfg","grid_size","logo","isset","logo_img","body","getElementsByTagName","exists","watermarkCanvas","querySelector","alias","createElement","classList","add","appendChild","imageContext","getContext","img","watermarkContext","measureText","textContent","style","cssText","textSize","width","offsetWidth","height","offsetHeight","removeChild","theImage","drawImage","logoImg","Image","onload","this","src","preloadLogoImage","theLogoImage","shadowBlur","shadowColor","globalAlpha","font","textAlign","fillStyle","fillText","goBackSize","line_width","setLineDash","beginPath","strokeStyle","moveTo","lineTo","stroke","drawLines","Math","ceil","cc","xPos","yPos","align","WooWatermark_isset","arr","var_args","k","arguments"],"mappings":"aACE,SAASA,EAAqBC,GAQ7B,IAPA,IAMIC,EAAUC,EANVC,EAAWH,EAAK,GAChBI,EAAcJ,EAAK,GACnBK,EAAiBL,EAAK,GAIHM,EAAI,EAAGC,EAAW,GACpCD,EAAIH,EAASK,OAAQF,IACzBJ,EAAUC,EAASG,GAChBG,OAAOC,UAAUC,eAAeC,KAAKC,EAAiBX,IAAYW,EAAgBX,IACpFK,EAASO,KAAKD,EAAgBX,GAAS,IAExCW,EAAgBX,GAAW,EAE5B,IAAID,KAAYG,EACZK,OAAOC,UAAUC,eAAeC,KAAKR,EAAaH,KACpDc,EAAQd,GAAYG,EAAYH,IAKlC,IAFGe,GAAqBA,EAAoBhB,GAEtCO,EAASC,QACdD,EAASU,OAATV,GAOD,OAHAW,EAAgBJ,KAAKK,MAAMD,EAAiBb,GAAkB,IAGvDe,IAER,SAASA,IAER,IADA,IAAIC,EACIf,EAAI,EAAGA,EAAIY,EAAgBV,OAAQF,IAAK,CAG/C,IAFA,IAAIgB,EAAiBJ,EAAgBZ,GACjCiB,GAAY,EACRC,EAAI,EAAGA,EAAIF,EAAed,OAAQgB,IAAK,CAC9C,IAAIC,EAAQH,EAAeE,GACG,IAA3BX,EAAgBY,KAAcF,GAAY,GAE3CA,IACFL,EAAgBQ,OAAOpB,IAAK,GAC5Be,EAASM,EAAoBA,EAAoBC,EAAIN,EAAe,KAItE,OAAOD,EAIR,IAAIQ,EAAmB,GAKnBhB,EAAkB,CACrBiB,EAAG,GAGAZ,EAAkB,GAGtB,SAASS,EAAoB1B,GAG5B,GAAG4B,EAAiB5B,GACnB,OAAO4B,EAAiB5B,GAAU8B,QAGnC,IAAIC,EAASH,EAAiB5B,GAAY,CACzCK,EAAGL,EACHgC,GAAG,EACHF,QAAS,IAUV,OANAhB,EAAQd,GAAUW,KAAKoB,EAAOD,QAASC,EAAQA,EAAOD,QAASJ,GAG/DK,EAAOC,GAAI,EAGJD,EAAOD,QAKfJ,EAAoBO,EAAInB,EAGxBY,EAAoBQ,EAAIN,EAGxBF,EAAoBS,EAAI,SAASL,EAASM,EAAMC,GAC3CX,EAAoBY,EAAER,EAASM,IAClC5B,OAAO+B,eAAeT,EAASM,EAAM,CAAEI,YAAY,EAAMC,IAAKJ,KAKhEX,EAAoBgB,EAAI,SAASZ,GACX,oBAAXa,QAA0BA,OAAOC,aAC1CpC,OAAO+B,eAAeT,EAASa,OAAOC,YAAa,CAAEC,MAAO,WAE7DrC,OAAO+B,eAAeT,EAAS,aAAc,CAAEe,OAAO,KAQvDnB,EAAoBoB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQnB,EAAoBmB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKzC,OAAO0C,OAAO,MAGvB,GAFAxB,EAAoBgB,EAAEO,GACtBzC,OAAO+B,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOnB,EAAoBS,EAAEc,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRvB,EAAoB2B,EAAI,SAAStB,GAChC,IAAIM,EAASN,GAAUA,EAAOiB,WAC7B,WAAwB,OAAOjB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAL,EAAoBS,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRX,EAAoBY,EAAI,SAASgB,EAAQC,GAAY,OAAO/C,OAAOC,UAAUC,eAAeC,KAAK2C,EAAQC,IAGzG7B,EAAoB8B,EAAI,GAExB,IAAIC,EAAaC,OAAqB,aAAIA,OAAqB,cAAK,GAChEC,EAAmBF,EAAW5C,KAAKuC,KAAKK,GAC5CA,EAAW5C,KAAOf,EAClB2D,EAAaA,EAAWG,QACxB,IAAI,IAAIvD,EAAI,EAAGA,EAAIoD,EAAWlD,OAAQF,IAAKP,EAAqB2D,EAAWpD,IAC3E,IAAIU,EAAsB4C,EAI1B1C,EAAgBJ,KAAK,CAAC,IAAI,IAEnBM,I,iHCvJqB0C,GAAGC,QAAdC,G,EAAXC,U,EAAWD,QAKJ,SAASE,EAAT,GAA0B,IAAVC,EAAU,EAAVA,OAIvBC,GAFIC,OAEG5D,OAAO6D,OAAO,GAAIH,IA0C/B,OArBuB,SAAjBI,IACJ,GAAI9D,OAAO+D,KAAKJ,GAAM5D,OAAQ,CAC5B,IAAMiE,EAAahE,OAAO+D,KAAKJ,GAAM,GAEZM,YAAoBD,EAAYE,aAAaC,UAAU,GAC/DC,MAAK,SAAUC,GAC5B,IAzBYC,EAAKC,EAAOC,EAAWC,EAyB7BC,EAAkBL,EAAYM,UAAU,cAExCC,EAAUjB,EAAKK,GA3BTM,EA4BDN,EA5BMO,EA4BMK,EA5BCJ,EA4BQE,EA5BGD,EA4Bc,kBACxCd,EAAKK,GACZF,KA7BRe,IAAM,CACJC,OAAQ,OACRR,IAAKJ,aAAaa,SAClBC,OAAQ,CACN,QAAc,MACd,IAAc,aACd,IAAcV,EACd,MAAcC,GAEhBhF,KAAMiF,IAEPJ,MAAK,SAACa,GACmB,mBAAbR,GACTA,EAAUQ,cAoBZC,QAAQC,IAAK,8BAIjBrB,GAGE,gCAIJ,IAAMsB,EAAiBC,SAASC,eAAT,wBACvBjC,GAAGkC,UAAU,WACXL,QAAQC,IAAKC,EAAe/C,OACxB+C,GAAiB7B,EAAQ,oBAACE,EAAD,CAAMC,OAAS8B,KAAKC,MAAOL,EAAe/C,SAAc+C,O,gCC3DvF,6CAEe,SAASnB,IACxB,IAD4CyB,EAC5C,uDADsD,GAAIvB,EAC1D,uDADmE,GAAIwB,IACvE,yDACE,OAAO,IAAIC,SAAQ,SAACC,EAASC,GAC3B,IAAMC,EAAM,GACZA,EAAIC,UAAY7B,EAAS,aACzB,IAAI8B,EAAOC,YAAM/B,EAAU,OAAQ,OAASA,EAAQ,KAASG,IAAMJ,aAAaiC,SAE1EC,EAAOf,SAASgB,qBAAqB,QAAQ,GAC/CC,GAAS,EACTjC,GAAc,EACdkC,GAAkB,EAEN,GAAZZ,GACEN,SAASmB,cAAT,WAA4BtC,aAAauC,MAAzC,kBACFH,GAAS,GAKTA,EACFjC,EAAcgB,SAASmB,cAAT,WAA4BtC,aAAauC,MAAzC,kBAEdpC,EAAcgB,SAASqB,cAAc,WACzBC,UAAUC,IAAtB,UAA8B1C,aAAauC,MAA3C,gBACAL,EAAKS,YAAaxC,IAGpB,IAAMyC,EAAezC,EAAY0C,WAAW,MAGxCT,EACFC,EAAkBlB,SAASmB,cAAT,WAA4BtC,aAAauC,MAAzC,sBAElBF,EAAkBlB,SAASqB,cAAc,WACzBC,UAAUC,IAA1B,UAAkC1C,aAAauC,MAA/C,oBACAL,EAAKS,YAAaN,IAGpB,IAEmB9B,EACbuC,EAHAC,EAAmBV,EAAgBQ,WAAW,MAqG9CG,EAAc,WAClB,IAAIvF,EAAI0D,SAASqB,cAAc,QAC/B/E,EAAEwF,YAAchD,EAAS,eACzBxC,EAAEyF,MAAMC,QAAR,2EAAsFlD,EAAS,aAA/F,kBACAkB,SAASe,KAAKS,YAAYlF,GAE1BoE,EAAIuB,SAAW,CACbC,MAAO5F,EAAE6F,YACTC,OAAQ9F,EAAE+F,cAGZrC,SAASe,KAAKuB,YAAYhG,IA9GT8C,EAiHV,SAAEmD,GAGTvD,EAAYkD,MAAQK,EAASL,MAC7BlD,EAAYoD,OAASG,EAASH,OAC9BX,EAAae,UAAWD,EAAU,EAAG,GAGrCrB,EAAgBgB,MAAQpD,EAAS,aACjCoC,EAAgBkB,OAAStD,EAAS,aA1GX,SAAEM,GACzB,IAAIqD,EAAU,IAAIC,MAClBD,EAAQE,OAAS,WACfjC,EAAI+B,QAAU,CACZ,IAAO7B,EACP,MAASgC,KAAKV,MACd,OAAUU,KAAKR,QAGO,mBAAbhD,GACTA,EAAUwD,OAGdH,EAAQI,IAAMjC,EAgGdkC,EAAkB,SAAEL,GApDL,IAAEM,EA+Ef,GAzBwB,QAApBjE,EAAQ,OAEV4B,EAAIC,UAAY8B,EAAQP,MAAQO,EAAQL,OAASK,EAAQP,MAAQO,EAAQL,OAEzElB,EAAgBgB,MAAQxB,EAAIC,UAC5BO,EAAgBkB,OAAS1B,EAAIC,WAGP,QAApB7B,EAAQ,OACV+C,IAEAnB,EAAIC,UAAYD,EAAIuB,SAASG,OAAS1B,EAAIuB,SAASC,MAAQxB,EAAIuB,SAASG,OAAS1B,EAAIuB,SAASC,MAE9FhB,EAAgBgB,MAAQxB,EAAIC,UAC5BO,EAAgBkB,OAAS1B,EAAIC,WAGP,uBAApB7B,EAAQ,MAAyD,QAApBA,EAAQ,OAvE1CiE,EAwEHN,EAvEdb,EAAiBoB,WAAalE,EAAS,aACvC8C,EAAiBqB,YAAcnE,EAAS,mBAExC8C,EAAiBsB,YAAcpE,EAAS,gBAGxC8C,EAAiBY,UACfO,GACErC,EAAIC,UAAYoC,EAAab,OAAU,GACvCxB,EAAIC,UAAYoC,EAAaX,QAAW,GAG5CR,EAAiBoB,WAAalE,EAAS,aACvC8C,EAAiBqB,YAAcnE,EAAS,oBA6Dd,QAApBA,EAAQ,MAA0C,uBAApBA,EAAQ,OAzDvC+B,YAAMH,EAAK,WAAY,WAAYmB,IAExCD,EAAiBuB,KAAjB,UAA2BrE,EAAS,aAApC,YACA8C,EAAiBwB,UAAY,SAC7BxB,EAAiByB,UAAYvE,EAAS,cACtC8C,EAAiB0B,SAAUxE,EAAS,eAAgB4B,EAAIC,UAAY,EAAGD,EAAIC,UAAY,EAAID,EAAIuB,SAASG,OAAS,EAAI,IAwD3F,uBAApBtD,EAAQ,MAAyD,uBAApBA,EAAQ,KAAmC,EAjH9E,SAAE2D,GAElBb,EAAiBoB,WAAalE,EAAS,aACvC8C,EAAiBqB,YAAcnE,EAAS,mBAGxC,IAAMyE,EAAad,EAAQL,OAAS,EAAI,GAElCoB,EAAa1E,EAAS,cAE5B8C,EAAiBsB,YAAcpE,EAAS,gBACxC8C,EAAiB6B,YAAY,CAACD,EAAYA,EAAa,IACvD5B,EAAiB8B,YACjB9B,EAAiB+B,YAAc7E,EAAS,cAGxC8C,EAAiBgC,OAAQJ,EAAYA,GACrC5B,EAAiBiC,OAAQnD,EAAIC,UAAY,EAAI4C,EAAY7C,EAAIC,UAAY,EAAI4C,GAG7E3B,EAAiBgC,OAAQlD,EAAIC,UAAY6C,EAAYA,GACrD5B,EAAiBiC,OAAQnD,EAAIC,UAAY,EAAI4C,EAAY7C,EAAIC,UAAY,EAAI4C,GAG7E3B,EAAiBgC,OAAQJ,EAAY9C,EAAIC,UAAY6C,GACrD5B,EAAiBiC,OAAQnD,EAAIC,UAAY,EAAI4C,EAAY7C,EAAIC,UAAY,EAAI4C,GAG7E3B,EAAiBgC,OAAQlD,EAAIC,UAAY6C,EAAY9C,EAAIC,UAAY6C,GACrE5B,EAAiBiC,OAAQnD,EAAIC,UAAY,EAAI4C,EAAY7C,EAAIC,UAAY,EAAI4C,GAE7E3B,EAAiBkC,SAmFbC,CAAWtB,GAGX,IAAK,IAAIjI,EAAIwJ,KAAKC,KAAKvD,EAAIiB,IAAIS,OAAS1B,EAAIC,WAAa,EAAGnG,GAAK,EAAGA,IAClE,IAAK,IAAI0J,EAAKF,KAAKC,KAAKvD,EAAIiB,IAAIO,MAAQxB,EAAIC,WAAa,EAAGuD,GAAM,EAAGA,IACnEzC,EAAae,UAAUtB,EAAiBgD,EAAKxD,EAAIC,UAAWnG,EAAIkG,EAAIC,WAK1E,GAAwB,QAApB7B,EAAQ,MAA0C,QAApBA,EAAQ,KAAoB,CAE5D,IAAIqF,EAAO,EACPC,EAAO,EACLC,EAAQvF,EAAQ,MAET,YAATuF,GACFF,EAAOrF,EAAS,eAChBsF,EAAOtF,EAAS,eAEA,aAATuF,GACPF,EAAOzD,EAAIiB,IAAIO,MAAQxB,EAAIC,UAAY7B,EAAS,gBAChDsF,EAAOtF,EAAS,eAEA,UAATuF,GACPF,EAAOzD,EAAIiB,IAAIO,MAAQ,EAAIxB,EAAIC,UAAY,EAC3CyD,EAAO1D,EAAIiB,IAAIS,OAAS,EAAI1B,EAAIC,UAAY,GAE5B,eAAT0D,GACPF,EAAOrF,EAAS,eAChBsF,EAAO1D,EAAIiB,IAAIS,OAAS1B,EAAIC,UAAY7B,EAAS,kBAEjC,gBAATuF,IACPF,EAAOzD,EAAIiB,IAAIO,MAAQxB,EAAIC,UAAY7B,EAAS,gBAChDsF,EAAO1D,EAAIiB,IAAIS,OAAS1B,EAAIC,UAAY7B,EAAS,kBAGnD2C,EAAae,UAAWtB,EAAiBiD,EAAMC,GAIjD5D,EAASxB,QAjMP2C,EAAM,IAAIe,OACVC,OAAS,WACXjC,EAAIiB,IAAM,CACR,IAAOtB,EACP,MAASuC,KAAKV,MACd,OAAUU,KAAKR,QAGO,mBAAbhD,GACTA,EAAUwD,OAGdjB,EAAIkB,IAAMxC,O,+BCvDT,SAASiE,EAAoBC,EAAKC,GACvC,IAAK,IAAIhK,EAAE,EAAGiK,EAAEC,UAAUhK,OAAQF,EAAEiK,IAAKjK,EAAG,CAC1C,IAAK+J,IAAQA,EAAI1J,eAAe6J,UAAUlK,IACxC,OAAO,EACT+J,EAAMA,EAAIG,UAAUlK,IAEtB,OAAO,EANT","file":"frontend/woo-watermark-frontend.build.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t1: 0\n \t};\n\n \tvar deferredModules = [];\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 \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\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.l = 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// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([380,0]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","const { Component, render } = wp.element;\nimport ImageWithWatermark from './helpers/ImageWithWatermark'\nimport axios from \"axios\";\n\n\nexport default function Main({ images }) {\n\n const $ = jQuery;\n\n const list = Object.assign({}, images);\n\n const saveImage = ( url, imgId, mediaData, callback ) => {\n axios({\n method: 'post',\n url: WooWatermark.ajax_url,\n params: {\n 'section' : 'App',\n 'act' : 'save_image',\n 'url' : url,\n 'imgId' : imgId\n },\n data: mediaData\n })\n .then((response) => {\n if( typeof(callback) == 'function' ){\n callback( response )\n }\n })\n }\n\n const watermarkImage = () => {\n if( Object.keys(list).length ){\n const first_item = Object.keys(list)[0];\n\n const imageWatermarked = ImageWithWatermark( first_item, WooWatermark.settings, false );\n imageWatermarked.then(function( imageCanvas ){\n const newImageDataUrl = imageCanvas.toDataURL(\"image/jpeg\");\n\n const mediaId = list[first_item];\n saveImage( first_item, mediaId, newImageDataUrl, () => {\n delete list[first_item];\n watermarkImage();\n } )\n })\n }else{\n console.log( 'WooWatermarkFrontend done!' );\n }\n }\n\n watermarkImage();\n\n return (\n <div></div>\n );\n}\n\nconst plugin_wrapper = document.getElementById( `WooWatermarkFrontend` );\nwp.domReady( function() {\n console.log( plugin_wrapper.value );\n if( plugin_wrapper ) render( <Main images={ JSON.parse( plugin_wrapper.value ) } />, plugin_wrapper );\n} );","import { WooWatermark_isset as isset } from \"./Utils\";\n\nexport default function ImageWithWatermark( image_url='', settings={}, multiple=true ) \n{ \n return new Promise((resolve, reject) => {\n const cfg = {};\n cfg.grid_size = settings['grid-size'];\n let logo = isset(settings, 'logo', 'url') ? settings['logo'].url : WooWatermark.logo_img;\n\n const body = document.getElementsByTagName(\"body\")[0];\n let exists = false;\n let imageCanvas = false;\n let watermarkCanvas = false;\n\n if( multiple == false ){\n if( document.querySelector( `.${WooWatermark.alias}imageCanvas` ) ){\n exists = true;\n }\n }\n \n // build canvas for the main image and append to the body\n if( exists ) { \n imageCanvas = document.querySelector( `.${WooWatermark.alias}imageCanvas` );\n }else{\n imageCanvas = document.createElement('canvas');\n imageCanvas.classList.add( `${WooWatermark.alias}imageCanvas` );\n body.appendChild( imageCanvas );\n }\n\n const imageContext = imageCanvas.getContext(\"2d\");\n\n // build canvas for the watermark and append to the body\n if( exists ) { \n watermarkCanvas = document.querySelector( `.${WooWatermark.alias}watermarkCanvas` );\n }else{\n watermarkCanvas = document.createElement('canvas');\n watermarkCanvas.classList.add( `${WooWatermark.alias}watermarkCanvas` );\n body.appendChild( watermarkCanvas );\n }\n\n const watermarkContext = watermarkCanvas.getContext(\"2d\"); \n\n const setImage = ( callback ) => {\n var img = new Image();\n img.onload = function() {\n cfg.img = {\n 'src': image_url,\n 'width': this.width,\n 'height': this.height,\n };\n\n if( typeof(callback) == 'function' ){\n callback( this );\n }\n }\n img.src = image_url;\n }\n\n const preloadLogoImage = ( callback ) => {\n var logoImg = new Image();\n logoImg.onload = function() {\n cfg.logoImg = {\n 'src': logo,\n 'width': this.width,\n 'height': this.height,\n };\n\n if( typeof(callback) == 'function' ){\n callback( this );\n }\n }\n logoImg.src = logo;\n }\n\n const debugWatermark = () => {\n watermarkContext.strokeStyle = \"#000\";\n watermarkContext.beginPath();\n watermarkContext.rect( 0, 0, cfg.grid_size, cfg.grid_size );\n watermarkContext.stroke();\n }\n\n const drawLines = ( logoImg ) => {\n\n watermarkContext.shadowBlur = settings['line-blur'];\n watermarkContext.shadowColor = settings['line-blur-color'];\n\n // lines \n const goBackSize = logoImg.height / 2 + 10 /* extra padding */;\n\n const line_width = settings['line-width'];\n\n watermarkContext.globalAlpha = settings['line-opacity'];\n watermarkContext.setLineDash([line_width, line_width + 4]);\n watermarkContext.beginPath();\n watermarkContext.strokeStyle = settings['line-color'];\n\n // line top left\n watermarkContext.moveTo( line_width, line_width );\n watermarkContext.lineTo( cfg.grid_size / 2 - goBackSize, cfg.grid_size / 2 - goBackSize );\n\n // line top right\n watermarkContext.moveTo( cfg.grid_size - line_width, line_width );\n watermarkContext.lineTo( cfg.grid_size / 2 + goBackSize, cfg.grid_size / 2 - goBackSize );\n\n // line bottom left\n watermarkContext.moveTo( line_width, cfg.grid_size - line_width );\n watermarkContext.lineTo( cfg.grid_size / 2 - goBackSize, cfg.grid_size / 2 + goBackSize );\n\n // line bottom right\n watermarkContext.moveTo( cfg.grid_size + line_width, cfg.grid_size + line_width );\n watermarkContext.lineTo( cfg.grid_size / 2 + goBackSize, cfg.grid_size / 2 + goBackSize );\n\n watermarkContext.stroke(); \n }\n\n const drawLogo = ( theLogoImage ) => {\n watermarkContext.shadowBlur = settings['logo-blur'];\n watermarkContext.shadowColor = settings['logo-blur-color'];\n\n watermarkContext.globalAlpha = settings['logo-opacity'];\n\n // draw the logo\n watermarkContext.drawImage( \n theLogoImage, \n ( cfg.grid_size - theLogoImage.width ) / 2, \n ( cfg.grid_size - theLogoImage.height ) / 2 \n );\n\n watermarkContext.shadowBlur = settings['line-blur'];\n watermarkContext.shadowColor = settings['line-blur-color'];\n }\n\n const drawText = () => {\n if( !isset(cfg, 'textSize', 'height') ) measureText();\n\n watermarkContext.font = `${settings['text-size']}px Arial`;\n watermarkContext.textAlign = \"center\";\n watermarkContext.fillStyle = settings['text-color'];\n watermarkContext.fillText( settings['custom-text'], cfg.grid_size / 2, cfg.grid_size / 2 + cfg.textSize.height / 2 - 3 /* extra adjust !!! */ );\n }\n\n const measureText = () => {\n var d = document.createElement(\"span\");\n d.textContent = settings['custom-text'];\n d.style.cssText = `font-family: Arial !important; color: red !important; font-size: ${settings['text-size']}px !important;`\n document.body.appendChild(d);\n \n cfg.textSize = {\n width: d.offsetWidth,\n height: d.offsetHeight,\n };\n\n document.body.removeChild(d);\n }\n\n setImage(( theImage ) => {\n\n // draw main image\n imageCanvas.width = theImage.width;\n imageCanvas.height = theImage.height;\n imageContext.drawImage( theImage, 0, 0 );\n\n // draw watermark context\n watermarkCanvas.width = settings['grid-size'];\n watermarkCanvas.height = settings['grid-size'];\n\n \n preloadLogoImage( ( logoImg ) => {\n\n if( settings['type'] == 'logo' ){\n \n cfg.grid_size = logoImg.width > logoImg.height ? logoImg.width : logoImg.height;\n\n watermarkCanvas.width = cfg.grid_size;\n watermarkCanvas.height = cfg.grid_size;\n }\n\n if( settings['type'] == 'text' ){\n measureText();\n\n cfg.grid_size = cfg.textSize.height > cfg.textSize.width ? cfg.textSize.height : cfg.textSize.width;\n \n watermarkCanvas.width = cfg.grid_size;\n watermarkCanvas.height = cfg.grid_size;\n }\n\n if( settings['type'] == 'logo-stripped-lines' || settings['type'] == 'logo' ){\n drawLogo( logoImg );\n }\n\n if( settings['type'] == 'text' || settings['type'] == 'text-stripped-lines' ){\n drawText();\n }\n\n if( settings['type'] == 'text-stripped-lines' || settings['type'] == 'logo-stripped-lines' ){\n drawLines( logoImg );\n\n // draw logo canvas multiple times\n for (var i = Math.ceil(cfg.img.height / cfg.grid_size) - 1; i >= 0; i--) {\n for (var cc = Math.ceil(cfg.img.width / cfg.grid_size) - 1; cc >= 0; cc--) {\n imageContext.drawImage(watermarkCanvas, cc * cfg.grid_size, i * cfg.grid_size);\n }\n }\n }\n\n if( settings['type'] == 'text' || settings['type'] == 'logo' ){\n\n let xPos = 0;\n let yPos = 0;\n const align = settings['align'];\n\n if( align == 'top-left' ){\n xPos = settings['margin-left'];\n yPos = settings['margin-top'];\n }\n else if( align == 'top-right' ){\n xPos = cfg.img.width - cfg.grid_size - settings['margin-right'];\n yPos = settings['margin-top'];\n }\n else if( align == 'center' ){\n xPos = cfg.img.width / 2 - cfg.grid_size / 2;\n yPos = cfg.img.height / 2 - cfg.grid_size / 2;\n }\n else if( align == 'bottom-left' ){\n xPos = settings['margin-left'];\n yPos = cfg.img.height - cfg.grid_size - settings['margin-bottom'];\n }\n else if( align == 'bottom-right' ){\n xPos = cfg.img.width - cfg.grid_size - settings['margin-right'];\n yPos = cfg.img.height - cfg.grid_size - settings['margin-bottom'];\n }\n\n imageContext.drawImage( watermarkCanvas, xPos, yPos );\n }\n \n\n resolve( imageCanvas );\n })\n })\n })\n}","export function WooWatermark_isset( arr, var_args ) {\n for (var i=1, k=arguments.length; i<k; ++i) {\n if (!arr || !arr.hasOwnProperty(arguments[i]) )\n return false\n arr = arr[arguments[i]];\n }\n return true\n}\n\nexport function WooWatermark_uniqid()\n{\n let array = new Uint32Array(8)\n window.crypto.getRandomValues(array)\n let str = ''\n for (let i = 0; i < array.length; i++) {\n str += (i < 2 || i > 5 ? '' : '-') + array[i].toString(16).slice(-4)\n }\n return str\n}"],"sourceRoot":""}