Image optimization & Lazy Load by Optimole - Version 2.2.9

Version Description

Download this release

Release Info

Developer optimole
Plugin Icon 128x128 Image optimization & Lazy Load by Optimole
Version 2.2.9
Comparing to
See all releases

Code changes from version 2.2.8 to 2.2.9

CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
 
 
 
 
 
 
1
  #### [Version 2.2.8](https://github.com/Codeinwp/optimole-wp/compare/v2.2.7...v2.2.8) (2020-01-14)
2
 
3
  * **Bug Fixes**
1
+ #### [Version 2.2.9](https://github.com/Codeinwp/optimole-wp/compare/v2.2.8...v2.2.9) (2020-02-25)
2
+
3
+ * **Bug Fixes**
4
+ * compatibility with Fusion builder, remove replacement when in edit mode ([b16683b](https://github.com/Codeinwp/optimole-wp/commit/b16683b))
5
+ * improve compatibility with Divi builder ([efdabfe](https://github.com/Codeinwp/optimole-wp/commit/efdabfe))
6
+
7
  #### [Version 2.2.8](https://github.com/Codeinwp/optimole-wp/compare/v2.2.7...v2.2.8) (2020-01-14)
8
 
9
  * **Bug Fixes**
README.md CHANGED
@@ -38,7 +38,7 @@ Optimole's format based optimization is handled in the cloud on a case-by-case b
38
  When the image is requested, Optimole will apply the specific transformations required by the device and deliver it to your visitors. This means every image is perfectly sized for every device. The final result will be cached for a month to ensure ongoing fast delivery and more site speed.
39
 
40
  **How many images can be optimized?**
41
- With the basic plan, you will be able to optimize unmetered number of images for up to 5k monthly [visits](https://docs.optimole.com/article/1134-how-optimole-counts-the-number-of-visitors). All delivered from more than 100+ locations in Europe and North America.
42
  Better yet. The free version is fully functional and includes all of the following great features:
43
 
44
  **Format Based Optimization**
@@ -69,7 +69,7 @@ Optimole provides an option to downgrade the image quality when it detects a slo
69
  Optimole loves page builders and has unique tweaks to solve image replacements. It also has full compatibility with the new block editor in WordPress 5.0
70
 
71
  **CDN**
72
- Optimole provides free access to a AWS CloudFront CDN with edge locations in Europe and North America. Even more with the Pro version.
73
 
74
  **What About Security?**
75
  The stripped EXGIF data is not stored on our service. Optimole likes to work behind the scenes, and won't interact with your site's visitors. No data is collected but you can check the [Terms of Service](https://optimole.com/terms/)
@@ -78,7 +78,7 @@ The stripped EXGIF data is not stored on our service. Optimole likes to work beh
78
  Optimole can be installed in a few clicks and then left in the back-end to do its job. Not happy with it? Optimole has a clean uninstall and your site will be just as before Optimole was installed.
79
 
80
  **Go Pro**
81
- Premium users will be able to optimize images for more than 25k monthly active users. Images in the Premium plan are served from AWS Cloudfront with over 180 locations all over the world.
82
 
83
  ## Screenshots ##
84
 
@@ -89,6 +89,14 @@ Premium users will be able to optimize images for more than 25k monthly active u
89
 
90
  ## Changelog ##
91
 
 
 
 
 
 
 
 
 
92
  #### [Version 2.2.8](https://github.com/Codeinwp/optimole-wp/compare/v2.2.7...v2.2.8) (2020-01-14)
93
 
94
  * **Bug Fixes**
@@ -522,7 +530,7 @@ Once you exceed these, we will contact you and kindly ask to upgrade to the plan
522
 
523
  ### What Content Delivery Network (CDN) do you use? ###
524
 
525
- Our FREE plan uses our AWS CloudFront CDN with locations only in Europe and North America. For the paid plans, we have a global full coverage, with more than 180 locations around the globe.
526
 
527
  ### I'm already using a CDN, can I use that instead of yours ? ###
528
 
38
  When the image is requested, Optimole will apply the specific transformations required by the device and deliver it to your visitors. This means every image is perfectly sized for every device. The final result will be cached for a month to ensure ongoing fast delivery and more site speed.
39
 
40
  **How many images can be optimized?**
41
+ With the basic plan, you will be able to optimize unmetered number of images for up to 5k monthly [visits](https://docs.optimole.com/article/1134-how-optimole-counts-the-number-of-visitors). All delivered from more than 200+ locations around the globe.
42
  Better yet. The free version is fully functional and includes all of the following great features:
43
 
44
  **Format Based Optimization**
69
  Optimole loves page builders and has unique tweaks to solve image replacements. It also has full compatibility with the new block editor in WordPress 5.0
70
 
71
  **CDN**
72
+ Optimole provides free access to a AWS CloudFront CDN with edge locations in more than 200 cities around the globe.
73
 
74
  **What About Security?**
75
  The stripped EXGIF data is not stored on our service. Optimole likes to work behind the scenes, and won't interact with your site's visitors. No data is collected but you can check the [Terms of Service](https://optimole.com/terms/)
78
  Optimole can be installed in a few clicks and then left in the back-end to do its job. Not happy with it? Optimole has a clean uninstall and your site will be just as before Optimole was installed.
79
 
80
  **Go Pro**
81
+ Premium users will be able to optimize images for more than 25k monthly active users. Images in the Premium plan are served from AWS Cloudfront with over 200 locations all over the world.
82
 
83
  ## Screenshots ##
84
 
89
 
90
  ## Changelog ##
91
 
92
+ #### [Version 2.2.9](https://github.com/Codeinwp/optimole-wp/compare/v2.2.8...v2.2.9) (2020-02-25)
93
+
94
+ * **Bug Fixes**
95
+ * compatibility with Fusion builder, remove replacement when in edit mode ([b16683b](https://github.com/Codeinwp/optimole-wp/commit/b16683b))
96
+ * improve compatibility with Divi builder ([efdabfe](https://github.com/Codeinwp/optimole-wp/commit/efdabfe))
97
+
98
+
99
+
100
  #### [Version 2.2.8](https://github.com/Codeinwp/optimole-wp/compare/v2.2.7...v2.2.8) (2020-01-14)
101
 
102
  * **Bug Fixes**
530
 
531
  ### What Content Delivery Network (CDN) do you use? ###
532
 
533
+ For both FREE and Paid plans we use AWS CloudFront CDN with more than 200 locations around the globe.
534
 
535
  ### I'm already using a CDN, can I use that instead of yours ? ###
536
 
assets/js/bundle.min.js CHANGED
@@ -18,7 +18,7 @@ function(t){return t&&"object"==typeof t&&"default"in t?t.default:t}(n("8bbf")),
18
  * Version: 2.8.19
19
  * Author: LianYue
20
  */
21
- !function(e,n){t.exports=n()}(0,function(){"use strict";function t(t){var e=a(t);return r(e,t.body)}function e(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function n(){var t=document.head||document.getElementsByTagName("head")[0],e=n.styles||(n.styles={}),o="undefined"!=typeof navigator&&/msie [6-9]\\b/.test(navigator.userAgent.toLowerCase());return function(n,i){if(!document.querySelector('style[data-vue-ssr-id~="'+n+'"]')){var a=o?i.media||"default":n,r=e[a]||(e[a]={ids:[],parts:[],element:void 0});if(!r.ids.includes(n)){var s=i.source,l=r.ids.length;if(r.ids.push(n),i.map&&(s+="\n/*# sourceURL="+i.map.sources[0]+" */",s+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(i.map))))+" */"),o&&(r.element=r.element||document.querySelector("style[data-group="+a+"]")),!r.element){var p=r.element=document.createElement("style");p.type="text/css",i.media&&p.setAttribute("media",i.media),o&&(p.setAttribute("data-group",a),p.setAttribute("data-next-index","0")),t.appendChild(p)}if(o&&(l=parseInt(r.element.getAttribute("data-next-index")),r.element.setAttribute("data-next-index",l+1)),r.element.styleSheet)r.parts.push(s),r.element.styleSheet.cssText=r.parts.filter(Boolean).join("\n");else{var c=document.createTextNode(s),d=r.element.childNodes;d[l]&&r.element.removeChild(d[l]),d.length?r.element.insertBefore(c,d[l]):r.element.appendChild(c)}}}}}function o(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e<t.length;e++)n[e]=t[e];return n}return Array.from(t)}function i(){var t=document.head||document.getElementsByTagName("head")[0],e=i.styles||(i.styles={}),n="undefined"!=typeof navigator&&/msie [6-9]\\b/.test(navigator.userAgent.toLowerCase());return function(o,i){if(!document.querySelector('style[data-vue-ssr-id~="'+o+'"]')){var a=n?i.media||"default":o,r=e[a]||(e[a]={ids:[],parts:[],element:void 0});if(!r.ids.includes(o)){var s=i.source,l=r.ids.length;if(r.ids.push(o),i.map&&(s+="\n/*# sourceURL="+i.map.sources[0]+" */",s+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(i.map))))+" */"),n&&(r.element=r.element||document.querySelector("style[data-group="+a+"]")),!r.element){var p=r.element=document.createElement("style");p.type="text/css",i.media&&p.setAttribute("media",i.media),n&&(p.setAttribute("data-group",a),p.setAttribute("data-next-index","0")),t.appendChild(p)}if(n&&(l=parseInt(r.element.getAttribute("data-next-index")),r.element.setAttribute("data-next-index",l+1)),r.element.styleSheet)r.parts.push(s),r.element.styleSheet.cssText=r.parts.filter(Boolean).join("\n");else{var c=document.createTextNode(s),d=r.element.childNodes;d[l]&&r.element.removeChild(d[l]),d.length?r.element.insertBefore(c,d[l]):r.element.appendChild(c)}}}}}var a=function(t){var e=new XMLHttpRequest;return e.open(t.method||"GET",t.url),e.responseType="json",t.headers&&Object.keys(t.headers).forEach(function(n){e.setRequestHeader(n,t.headers[n])}),e},r=function(t,e){return new Promise(function(n,o){t.onload=function(){if(t.status>=200&&t.status<300){var e;try{e=JSON.parse(t.response)}catch(n){e=t.response}n(e)}else o(t.response)},t.onerror=function(){return o(t.response)},t.send(JSON.stringify(e))})},s=function(t,e){var n=new FormData;for(var o in e)n.append(o,e[o]);return new Promise(function(e,o){t.onload=function(){if(t.status>=200&&t.status<300){var n;try{n=JSON.parse(t.response)}catch(e){n=t.response}e(n)}else o(t.response)},t.onerror=function(){return o(t.response)},t.send(n)})},l=function(){function t(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,n,o){return n&&t(e.prototype,n),o&&t(e,o),e}}(),p=function(){function n(t,o){e(this,n),this.file=t,this.options=o}return l(n,[{key:"createChunks",value:function(){this.chunks=[];for(var t=0,e=this.chunkSize;t<this.fileSize;)this.chunks.push({blob:this.file.file.slice(t,e),startOffset:t,active:!1,retries:this.maxRetries}),t=e,e=t+this.chunkSize}},{key:"updateFileProgress",value:function(){this.file.progress=this.progress}},{key:"pause",value:function(){this.file.active=!1,this.stopChunks()}},{key:"stopChunks",value:function(){this.chunksUploading.forEach(function(t){t.xhr.abort(),t.active=!1})}},{key:"resume",value:function(){this.file.active=!0,this.startChunking()}},{key:"upload",value:function(){var t=this;return this.promise=new Promise(function(e,n){t.resolve=e,t.reject=n}),this.start(),this.promise}},{key:"start",value:function(){var e=this;t({method:"POST",headers:Object.assign({},this.headers,{"Content-Type":"application/json"}),url:this.action,body:Object.assign(this.startBody,{phase:"start",mime_type:this.fileType,size:this.fileSize,name:this.fileName})}).then(function(t){if("success"!==t.status)return e.file.response=t,e.reject("server");e.sessionId=t.data.session_id,e.chunkSize=t.data.end_offset,e.createChunks(),e.startChunking()}).catch(function(t){e.file.response=t,e.reject("server")})}},{key:"startChunking",value:function(){for(var t=0;t<this.maxActiveChunks;t++)this.uploadNextChunk()}},{key:"uploadNextChunk",value:function(){if(this.file.active){if(this.hasChunksToUpload)return this.uploadChunk(this.chunksToUpload[0]);if(0===this.chunksUploading.length)return this.finish()}}},{key:"uploadChunk",value:function(t){var e=this;t.progress=0,t.active=!0,this.updateFileProgress(),t.xhr=a({method:"POST",headers:this.headers,url:this.action}),t.xhr.upload.addEventListener("progress",function(e){e.lengthComputable&&(t.progress=Math.round(e.loaded/e.total*100))},!1),s(t.xhr,Object.assign(this.uploadBody,{phase:"upload",session_id:this.sessionId,start_offset:t.startOffset,chunk:t.blob})).then(function(n){if(t.active=!1,"success"===n.status)t.uploaded=!0;else if(t.retries--<=0)return e.stopChunks(),e.reject("upload");e.uploadNextChunk()}).catch(function(){if(t.active=!1,t.retries--<=0)return e.stopChunks(),e.reject("upload");e.uploadNextChunk()})}},{key:"finish",value:function(){var e=this;this.updateFileProgress(),t({method:"POST",headers:Object.assign({},this.headers,{"Content-Type":"application/json"}),url:this.action,body:Object.assign(this.finishBody,{phase:"finish",session_id:this.sessionId})}).then(function(t){if(e.file.response=t,"success"!==t.status)return e.reject("server");e.resolve(t)}).catch(function(t){e.file.response=t,e.reject("server")})}},{key:"maxRetries",get:function(){return parseInt(this.options.maxRetries)}},{key:"maxActiveChunks",get:function(){return parseInt(this.options.maxActive)}},{key:"fileType",get:function(){return this.file.type}},{key:"fileSize",get:function(){return this.file.size}},{key:"fileName",get:function(){return this.file.name}},{key:"action",get:function(){return this.options.action||null}},{key:"startBody",get:function(){return this.options.startBody||{}}},{key:"uploadBody",get:function(){return this.options.uploadBody||{}}},{key:"finishBody",get:function(){return this.options.finishBody||{}}},{key:"headers",get:function(){return this.options.headers||{}}},{key:"readyToUpload",get:function(){return!!this.chunks}},{key:"progress",get:function(){var t=this,e=this.chunksUploaded.length/this.chunks.length*100,n=this.chunksUploading.reduce(function(e,n){return e+(0|n.progress)/t.chunks.length},0);return Math.min(e+n,100)}},{key:"chunksToUpload",get:function(){return this.chunks.filter(function(t){return!t.active&&!t.uploaded})}},{key:"hasChunksToUpload",get:function(){return this.chunksToUpload.length>0}},{key:"chunksUploading",get:function(){return this.chunks.filter(function(t){return!!t.xhr&&!!t.active})}},{key:"chunksUploaded",get:function(){return this.chunks.filter(function(t){return!!t.uploaded})}}]),n}(),c={methods:{change:function(t){this.$parent.addInputFile(t.target),t.target.files?(t.target.value="",/safari/i.test(navigator.userAgent)||(t.target.type="",t.target.type="file")):(this.$destroy(),new this.constructor({parent:this.$parent,el:this.$el}))}}},d=c,m=function(){var t=this,e=t.$createElement;return(t._self._c||e)("input",{attrs:{type:"file",name:t.$parent.name,id:t.$parent.inputId||t.$parent.name,accept:t.$parent.accept,capture:t.$parent.capture,disabled:t.$parent.disabled,webkitdirectory:t.$parent.directory&&t.$parent.features.directory,directory:t.$parent.directory&&t.$parent.features.directory,multiple:t.$parent.multiple&&t.$parent.features.html5},on:{change:t.change}})},u=[],f=function(t,e,n,o,i,a,r,s){var l=("function"==typeof n?n.options:n)||{};return l.render||(l.render=t.render,l.staticRenderFns=t.staticRenderFns,l._compiled=!0,i&&(l.functional=!0)),l._scopeId=o,l}({render:m,staticRenderFns:u},void 0,d,void 0,!1,void 0,n,void 0),h=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(t[o]=n[o])}return t},b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},v={headers:{},action:"",minSize:1048576,maxActive:3,maxRetries:5,handler:p},g={components:{InputFile:f},props:{inputId:{type:String},name:{type:String,default:"file"},accept:{type:String},capture:{},disabled:{},multiple:{type:Boolean},maximum:{type:Number,default:function(){return this.multiple?0:1}},addIndex:{type:[Boolean,Number]},directory:{type:Boolean},postAction:{type:String},putAction:{type:String},customAction:{type:Function},headers:{type:Object,default:Object},data:{type:Object,default:Object},timeout:{type:Number,default:0},drop:{default:!1},dropDirectory:{type:Boolean,default:!0},size:{type:Number,default:0},extensions:{default:Array},value:{type:Array,default:Array},thread:{type:Number,default:1},chunkEnabled:{type:Boolean,default:!1},chunk:{type:Object,default:function(){return v}}},data:function(){return{files:this.value,features:{html5:!0,directory:!1,drag:!1},active:!1,dropActive:!1,uploading:0,destroy:!1}},mounted:function(){var t=document.createElement("input");if(t.type="file",t.multiple=!0,window.FormData&&t.files?("boolean"!=typeof t.webkitdirectory&&"boolean"!=typeof t.directory||(this.features.directory=!0),this.features.html5&&void 0!==t.ondrop&&(this.features.drop=!0)):this.features.html5=!1,this.maps={},this.files)for(var e=0;e<this.files.length;e++){var n=this.files[e];this.maps[n.id]=n}this.$nextTick(function(){this.$parent&&this.$parent.$forceUpdate(),this.watchDrop(this.drop)})},beforeDestroy:function(){this.destroy=!0,this.active=!1},computed:{uploaded:function(){for(var t=void 0,e=0;e<this.files.length;e++)if(t=this.files[e],t.fileObject&&!t.error&&!t.success)return!1;return!0},chunkOptions:function(){return Object.assign(v,this.chunk)},className:function(){return["file-uploads",this.features.html5?"file-uploads-html5":"file-uploads-html4",this.features.directory&&this.directory?"file-uploads-directory":void 0,this.features.drop&&this.drop?"file-uploads-drop":void 0,this.disabled?"file-uploads-disabled":void 0]}},watch:{active:function(t){this.watchActive(t)},dropActive:function(){this.$parent&&this.$parent.$forceUpdate()},drop:function(t){this.watchDrop(t)},value:function(t){if(this.files!==t){this.files=t;var e=this.maps;this.maps={};for(var n=0;n<this.files.length;n++){var o=this.files[n];this.maps[o.id]=o}for(var i in this.maps){var a=this.maps[i],r=e[i];a!==r&&this.emitFile(a,r)}for(var s in e)this.maps[s]||this.emitFile(void 0,e[s])}}},methods:{clear:function(){if(this.files.length){var t=this.files;this.files=[],this.maps={},this.emitInput();for(var e=0;e<t.length;e++)this.emitFile(void 0,t[e])}return!0},get:function(t){return!!t&&("object"===(void 0===t?"undefined":b(t))?this.maps[t.id]||!1:this.maps[t]||!1)},add:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.addIndex,n=t,o=n instanceof Array;o||(n=[n]);for(var i=[],a=0;a<n.length;a++){var r=n[a];this.features.html5&&r instanceof Blob&&(r={file:r,size:r.size,name:r.webkitRelativePath||r.relativePath||r.name||"unknown",type:r.type});var s=!1;if(!1===r.fileObject||(r.fileObject?s=!0:"undefined"!=typeof Element&&r.el instanceof Element?s=!0:"undefined"!=typeof Blob&&r.file instanceof Blob&&(s=!0)),s&&(r=h({fileObject:!0,size:-1,name:"Filename",type:"",active:!1,error:"",success:!1,putAction:this.putAction,postAction:this.postAction,timeout:this.timeout},r,{response:{},progress:"0.00",speed:0}),r.data=h({},this.data,r.data?r.data:{}),r.headers=h({},this.headers,r.headers?r.headers:{})),r.id||(r.id=Math.random().toString(36).substr(2)),!this.emitFilter(r,void 0)){if(this.maximum>1&&i.length+this.files.length>=this.maximum)break;if(i.push(r),1===this.maximum)break}}if(!i.length)return!1;1===this.maximum&&this.clear();var l=void 0;if(!0===e||0===e)l=i.concat(this.files);else if(e){var p;l=this.files.concat([]),(p=l).splice.apply(p,[e,0].concat(i))}else l=this.files.concat(i);this.files=l;for(var c=0;c<i.length;c++){var d=i[c];this.maps[d.id]=d}this.emitInput();for(var m=0;m<i.length;m++)this.emitFile(i[m],void 0);return o?i:i[0]},addInputFile:function(t){var e=[];if(t.files)for(var n=0;n<t.files.length;n++){var o=t.files[n];e.push({size:o.size,name:o.webkitRelativePath||o.relativePath||o.name,type:o.type,file:o})}else{var i=t.value.replace(/\\/g,"/").split("/");delete t.__vuex__,e.push({name:i[i.length-1],el:t})}return this.add(e)},addDataTransfer:function(t){var e=this,n=[];if(t.items&&t.items.length){for(var i=[],a=0;a<t.items.length;a++){var r=t.items[a];r=r.getAsEntry?r.getAsEntry()||r.getAsFile():r.webkitGetAsEntry?r.webkitGetAsEntry()||r.getAsFile():r.getAsFile(),r&&i.push(r)}return new Promise(function(t,a){!function a(r){var s=i[r];if(!s||e.maximum>0&&n.length>=e.maximum)return t(e.add(n));e.getEntry(s).then(function(t){n.push.apply(n,o(t)),a(r+1)})}(0)})}if(t.files.length){for(var s=0;s<t.files.length&&(n.push(t.files[s]),!(this.maximum>0&&n.length>=this.maximum));s++);return Promise.resolve(this.add(n))}return Promise.resolve([])},getEntry:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return new Promise(function(i,a){if(t.isFile)t.file(function(t){i([{size:t.size,name:n+t.name,type:t.type,file:t}])});else if(t.isDirectory&&e.dropDirectory){var r=[],s=t.createReader();!function a(){s.readEntries(function(s){!function l(p){return!s[p]&&0===p||e.maximum>0&&r.length>=e.maximum?i(r):s[p]?void e.getEntry(s[p],n+t.name+"/").then(function(t){r.push.apply(r,o(t)),l(p+1)}):a()}(0)})}()}else i([])})},replace:function(t,e){var n=this.get(t),o=this.get(e);if(!n||!o||n===o)return!1;var i=this.files.concat([]),a=i.indexOf(n),r=i.indexOf(o);return-1!==a&&-1!==r&&(i[a]=o,i[r]=n,this.files=i,this.emitInput(),!0)},remove:function(t){var e=this.get(t);if(e){if(this.emitFilter(void 0,e))return!1;var n=this.files.concat([]),o=n.indexOf(e);if(-1===o)return console.error("remove",e),!1;n.splice(o,1),this.files=n,delete this.maps[e.id],this.emitInput(),this.emitFile(void 0,e)}return e},update:function(t,e){var n=this.get(t);if(n){var o=h({},n,e);if(!n.fileObject||!n.active||o.active||o.error||o.success||(o.error="abort"),this.emitFilter(o,n))return!1;var i=this.files.concat([]),a=i.indexOf(n);return-1===a?(console.error("update",n),!1):(i.splice(a,1,o),this.files=i,delete this.maps[n.id],this.maps[o.id]=o,this.emitInput(),this.emitFile(o,n),o)}return!1},emitFilter:function(t,e){var n=!1;return this.$emit("input-filter",t,e,function(){return n=!0}),n},emitFile:function(t,e){this.$emit("input-file",t,e),!(t&&t.fileObject&&t.active)||e&&e.active?t&&t.fileObject&&t.active||!e||!e.fileObject||!e.active||this.uploading--:(this.uploading++,this.$nextTick(function(){var e=this;setTimeout(function(){e.upload(t).then(function(){(t=e.get(t))&&t.fileObject&&e.update(t,{active:!1,success:!t.error})}).catch(function(n){e.update(t,{active:!1,success:!1,error:n.code||n.error||n.message||n})})},parseInt(50*Math.random()+50,10))})),!this.active||Boolean(t)===Boolean(e)&&t.active===e.active||this.watchActive(!0)},emitInput:function(){this.$emit("input",this.files)},upload:function(t){var e=this.get(t);if(!e)return Promise.reject("not_exists");if(!e.fileObject)return Promise.reject("file_object");if(e.error)return Promise.reject(e.error);if(e.success)return Promise.resolve(e);var n=this.extensions;if(n&&(n.length||void 0===n.length)&&("object"===(void 0===n?"undefined":b(n))&&n instanceof RegExp||("string"==typeof n&&(n=n.split(",").map(function(t){return t.trim()}).filter(function(t){return t})),n=new RegExp("\\.("+n.join("|").replace(/\./g,"\\.")+")$","i")),-1===e.name.search(n)))return Promise.reject("extension");if(this.size>0&&e.size>=0&&e.size>this.size)return Promise.reject("size");if(this.customAction)return this.customAction(e,this);if(this.features.html5){if(this.shouldUseChunkUpload(e))return this.uploadChunk(e);if(e.putAction)return this.uploadPut(e);if(e.postAction)return this.uploadHtml5(e)}return e.postAction?this.uploadHtml4(e):Promise.reject("No action configured")},shouldUseChunkUpload:function(t){return this.chunkEnabled&&!!this.chunkOptions.handler&&t.size>this.chunkOptions.minSize},uploadChunk:function(t){var e=this.chunkOptions.handler;return t.chunk=new e(t,this.chunkOptions),t.chunk.upload()},uploadPut:function(t){var e=[],n=void 0;for(var o in t.data)null!==(n=t.data[o])&&void 0!==n&&e.push(encodeURIComponent(o)+"="+encodeURIComponent(n));var i=e.length?(-1===t.putAction.indexOf("?")?"?":"&")+e.join("&"):"",a=new XMLHttpRequest;return a.open("PUT",t.putAction+i),this.uploadXhr(a,t,t.file)},uploadHtml5:function(t){var e=new window.FormData,n=void 0;for(var o in t.data)n=t.data[o],n&&"object"===(void 0===n?"undefined":b(n))&&"function"!=typeof n.toString?n instanceof File?e.append(o,n,n.name):e.append(o,JSON.stringify(n)):null!==n&&void 0!==n&&e.append(o,n);e.append(this.name,t.file,t.file.filename||t.name);var i=new XMLHttpRequest;return i.open("POST",t.postAction),this.uploadXhr(i,t,e)},uploadXhr:function(t,e,n){var o=this,i=e,a=0,r=0;t.upload.onprogress=function(t){if(i=o.get(i),t.lengthComputable&&i&&i.fileObject&&i.active){var e=Math.round(Date.now()/1e3);e!==a&&(a=e,i=o.update(i,{progress:(t.loaded/t.total*100).toFixed(2),speed:t.loaded-r}),r=t.loaded)}};var s=setInterval(function(){if(!(i=o.get(i))||!i.fileObject||i.success||i.error||!i.active){s&&(clearInterval(s),s=!1);try{t.abort(),t.timeout=1}catch(t){}}},100);return new Promise(function(e,a){var r=void 0,l=function(n){if(!r){if(r=!0,s&&(clearInterval(s),s=!1),!(i=o.get(i)))return a("not_exists");if(!i.fileObject)return a("file_object");if(i.error)return a(i.error);if(!i.active)return a("abort");if(i.success)return e(i);var l={};switch(n.type){case"timeout":case"abort":l.error=n.type;break;case"error":t.status?t.status>=500?l.error="server":t.status>=400&&(l.error="denied"):l.error="network";break;default:t.status>=500?l.error="server":t.status>=400?l.error="denied":l.progress="100.00"}if(t.responseText){var p=t.getResponseHeader("Content-Type");p&&-1!==p.indexOf("/json")?l.response=JSON.parse(t.responseText):l.response=t.responseText}return i=o.update(i,l),i.error?a(i.error):e(i)}};t.onload=l,t.onerror=l,t.onabort=l,t.ontimeout=l,i.timeout&&(t.timeout=i.timeout);for(var p in i.headers)t.setRequestHeader(p,i.headers[p]);i=o.update(i,{xhr:t}),t.send(n)})},uploadHtml4:function(t){var e=this,n=t,o=function(t){27===t.keyCode&&t.preventDefault()},i=document.createElement("iframe");i.id="upload-iframe-"+n.id,i.name="upload-iframe-"+n.id,i.src="about:blank",i.setAttribute("style","width:1px;height:1px;top:-999em;position:absolute; margin-top:-999em;");var a=document.createElement("form");a.action=n.postAction,a.name="upload-form-"+n.id,a.setAttribute("method","POST"),a.setAttribute("target","upload-iframe-"+n.id),a.setAttribute("enctype","multipart/form-data");var r=void 0,s=void 0;for(var l in n.data)r=n.data[l],r&&"object"===(void 0===r?"undefined":b(r))&&"function"!=typeof r.toString&&(r=JSON.stringify(r)),null!==r&&void 0!==r&&(s=document.createElement("input"),s.type="hidden",s.name=l,s.value=r,a.appendChild(s));a.appendChild(n.el),document.body.appendChild(i).appendChild(a);var p=function(){var t=void 0;try{i.contentWindow&&(t=i.contentWindow.document)}catch(t){}if(!t)try{t=i.contentDocument?i.contentDocument:i.document}catch(e){t=i.document}return t&&t.body?t.body.innerHTML:null};return new Promise(function(t,r){setTimeout(function(){if(!(n=e.update(n,{iframe:i})))return r("not_exists");var s=setInterval(function(){(n=e.get(n))&&n.fileObject&&!n.success&&!n.error&&n.active||(s&&(clearInterval(s),s=!1),i.onabort({type:n?"abort":"not_exists"}))},100),l=void 0,c=function(i){if(!l){if(l=!0,s&&(clearInterval(s),s=!1),document.body.removeEventListener("keydown",o),!(n=e.get(n)))return r("not_exists");if(!n.fileObject)return r("file_object");if(n.error)return r(n.error);if(!n.active)return r("abort");if(n.success)return t(n);var a=p(),c={};switch(i.type){case"abort":c.error="abort";break;case"error":n.error?c.error=n.error:c.error=null===a?"network":"denied";break;default:n.error?c.error=n.error:null===c?c.error="network":c.progress="100.00"}if(null!==a){if(a&&"{"===a.substr(0,1)&&"}"===a.substr(a.length-1,1))try{a=JSON.parse(a)}catch(t){}c.response=a}return n=e.update(n,c),n.error?r(n.error):t(n)}};i.onload=c,i.onerror=c,i.onabort=c,document.body.addEventListener("keydown",o),a.submit()},50)}).then(function(t){return i.parentNode&&i.parentNode.removeChild(i),t}).catch(function(t){return i.parentNode&&i.parentNode.removeChild(i),t})},watchActive:function(t){for(var e=void 0,n=0;e=this.files[n];)if(n++,e.fileObject)if(t&&!this.destroy){if(this.uploading>=this.thread||this.uploading&&!this.features.html5)break;e.active||e.error||e.success||this.update(e,{active:!0})}else e.active&&this.update(e,{active:!1});else;0===this.uploading&&(this.active=!1)},watchDrop:function(t){var e=t;if(this.features.drop){if(this.dropElement)try{document.removeEventListener("dragenter",this.onDragenter,!1),document.removeEventListener("dragleave",this.onDragleave,!1),document.removeEventListener("drop",this.onDocumentDrop,!1),this.dropElement.removeEventListener("dragover",this.onDragover,!1),this.dropElement.removeEventListener("drop",this.onDrop,!1)}catch(t){}e?"string"==typeof e?e=document.querySelector(e)||this.$root.$el.querySelector(e):!0===e&&(e=this.$parent.$el):e=!1,this.dropElement=e,this.dropElement&&(document.addEventListener("dragenter",this.onDragenter,!1),document.addEventListener("dragleave",this.onDragleave,!1),document.addEventListener("drop",this.onDocumentDrop,!1),this.dropElement.addEventListener("dragover",this.onDragover,!1),this.dropElement.addEventListener("drop",this.onDrop,!1))}},onDragenter:function(t){if(t.preventDefault(),!this.dropActive&&t.dataTransfer){var e=t.dataTransfer;e.files&&e.files.length?this.dropActive=!0:e.types?e.types.indexOf&&-1!==e.types.indexOf("Files")?this.dropActive=!0:e.types.contains&&e.types.contains("Files")&&(this.dropActive=!0):this.dropActive=!0}},onDragleave:function(t){t.preventDefault(),this.dropActive&&("HTML"===t.target.nodeName||t.target===t.explicitOriginalTarget||!t.fromElement&&(t.clientX<=0||t.clientY<=0||t.clientX>=window.innerWidth||t.clientY>=window.innerHeight))&&(this.dropActive=!1)},onDragover:function(t){t.preventDefault()},onDocumentDrop:function(){this.dropActive=!1},onDrop:function(t){t.preventDefault(),this.addDataTransfer(t.dataTransfer)}}},x=g,y=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("span",{class:t.className},[t._t("default"),t._v(" "),n("label",{attrs:{for:t.inputId||t.name}}),t._v(" "),n("input-file")],2)},w=[],k=function(t){t&&t("data-v-595958af_0",{source:"\n.file-uploads{overflow:hidden;position:relative;text-align:center;display:inline-block\n}\n.file-uploads.file-uploads-html4 input,.file-uploads.file-uploads-html5 label{background:#fff;opacity:0;font-size:20em;z-index:1;top:0;left:0;right:0;bottom:0;position:absolute;width:100%;height:100%\n}\n.file-uploads.file-uploads-html4 label,.file-uploads.file-uploads-html5 input{background:rgba(255,255,255,0);overflow:hidden;position:fixed;width:1px;height:1px;z-index:-1;opacity:0\n}",map:void 0,media:void 0})},_=function(t,e,n,o,i,a,r,s){var l=("function"==typeof n?n.options:n)||{};l.render||(l.render=t.render,l.staticRenderFns=t.staticRenderFns,l._compiled=!0,i&&(l.functional=!0)),l._scopeId=o;var p=void 0;if(e&&(p=function(t){e.call(this,r(t))}),void 0!==p)if(l.functional){var c=l.render;l.render=function(t,e){return p.call(e),c(t,e)}}else{var d=l.beforeCreate;l.beforeCreate=d?[].concat(d,p):[p]}return l}({render:y,staticRenderFns:w},k,x,void 0,!1,void 0,i,void 0),z=Object.freeze({default:_});return z&&_||z})},function(t,e){t.exports='\n\t<div _v-6d81614d="">\n\t\t<h4 _v-6d81614d="">{{strings.add_desc}}</h4>\n\t\t<div class="field columns" _v-6d81614d="">\n\t\t\t<div class="column" v-for="file in files" _v-6d81614d="">\n <span class="tag" _v-6d81614d="">\n <i _v-6d81614d="">{{file.name}}</i>\n <i v-if="!file.active &amp;&amp; !file.success &amp;&amp; file.error === \'\'" class="dashicons dashicons-yes icon has-text-grey-light" _v-6d81614d=""></i>\n <i v-else-if="file.active" class="dashicons dashicons-marker icon spin has-text-warning" _v-6d81614d=""></i>\n <i v-else-if="!file.active &amp;&amp; file.success" class="dashicons dashicons-yes icon has-text-success" _v-6d81614d=""></i>\n <i v-else="" class="dashicons dashicons-no-alt icon has-text-danger" _v-6d81614d=""></i>\n </span>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class="column " _v-6d81614d="">\n\t\t\t<file-upload class="button is-secondary is-rounded" :post-action=" global.root + \'/add_watermark\'" :headers="{\'X-WP-Nonce\': global.nonce}" extensions="gif,jpg,jpeg,png,webp" accept="image/png,image/gif,image/jpeg,image/webp" :size="1024 * 1024 * 10" v-model="files" @input-filter="inputFilter" @input-file="inputFile" :disabled="loading" ref="upload" _v-6d81614d="">\n\t\t\t\t<i class="dashicons dashicons-plus icon" _v-6d81614d=""></i>\n\t\t\t\t{{strings.upload}}\n\t\t\t</file-upload>\n\t\t\t<br _v-6d81614d=""><br _v-6d81614d=""><span class="tag is-danger" v-if="is_error" _v-6d81614d="">{{error_message}}</span>\n\t\t</div>\n\t\t<hr _v-6d81614d="">\n\t\t<div class="box" _v-6d81614d="">\n\t\t\t<h3 _v-6d81614d=""><span class="dashicons dashicons-menu" _v-6d81614d=""></span> {{strings.list_header}} </h3>\n\t\t\t<small _v-6d81614d=""><i _v-6d81614d="">{{strings.max_allowed}}</i></small>\n\t\t\t\n\t\t\t<div class="optimized-images" _v-6d81614d="">\n\t\t\t\t<div v-if="!noImages" _v-6d81614d="">\n\t\t\t\t\t<h3 class="has-text-centered" _v-6d81614d="">{{strings.last}} {{strings.optimized_images}}</h3>\n\t\t\t\t\t<table class="table is-striped is-hoverable is-fullwidth" _v-6d81614d="">\n\t\t\t\t\t\t<thead _v-6d81614d="">\n\t\t\t\t\t\t<tr _v-6d81614d="">\n\t\t\t\t\t\t\t<th class="optml-image-heading" _v-6d81614d="">{{strings.id}}</th>\n\t\t\t\t\t\t\t<th class="optml-image-heading" _v-6d81614d="">{{strings.image}}</th>\n\t\t\t\t\t\t\t<th class="optml-image-heading" _v-6d81614d="">{{strings.action}}</th>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</thead>\n\t\t\t\t\t\t<tbody _v-6d81614d="">\n\t\t\t\t\t\t<tr v-for="(item, index) in watermarkData" _v-6d81614d="">\n\t\t\t\t\t\t\t<td _v-6d81614d=""><code _v-6d81614d="">#{{item.ID}}</code></td>\n\t\t\t\t\t\t\t<td _v-6d81614d=""><img :src="item.guid" class="optml-image-watermark" width="50" _v-6d81614d=""></td>\n\t\t\t\t\t\t\t<td width="50" _v-6d81614d="">\n\t\t\t\t\t\t\t\t<a @click="removeWatermark(item.ID)" class="button is-small is-danger is-rounded" :class="{\'is-loading\':loading}" _v-6d81614d="">\n\t\t\t\t\t\t\t\t\t<span class="dashicons dashicons-no-alt icon" _v-6d81614d=""></span>\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</tbody>\n\t\t\t\t\t</table>\n\t\t\t\t\t\n\t\t\t\t\t<span class="tag is-success" v-if="loading" _v-6d81614d="">\n\t\t\t\t\t{{strings.loading_remove_watermark}}\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<table class="table is-striped is-hoverable is-fullwidth" v-if="noImages" _v-6d81614d="">\n\t\t\t\t<thead _v-6d81614d="">\n\t\t\t\t<tr _v-6d81614d="">\n\t\t\t\t\t<th class="optml-image-heading has-text-centered" v-html="strings.no_images_found" _v-6d81614d=""></th>\n\t\t\t\t</tr>\n\t\t\t\t</thead>\n\t\t\t</table>\n\t\t\t<hr _v-6d81614d="">\n\t\t\t<h3 _v-6d81614d=""><span class="dashicons dashicons-grid-view" _v-6d81614d=""></span> {{strings.settings_header}} </h3>\n\t\t\t<br _v-6d81614d="">\n\t\t\t<div class="field is-fullwidth columns" _v-6d81614d="">\n\t\t\t\t<label class="label is-half column has-text-grey-dark no-padding-right " _v-6d81614d="">\n\t\t\t\t\t{{strings.wm_title}}\n\t\t\t\t\t<p class="is-italic has-text-weight-normal" _v-6d81614d="">\n\t\t\t\t\t\t{{strings.wm_desc}}\n\t\t\t\t\t</p>\n\t\t\t\t</label>\n\t\t\t\t\n\t\t\t\t<div class="column is-paddingless" _v-6d81614d="">\n\t\t\t\t\t<div class="columns" _v-6d81614d="">\n\t\t\t\t\t\t<div class="field column is-narrow" _v-6d81614d="">\n\t\t\t\t\t\t\t<div class="select" _v-6d81614d="">\n\t\t\t\t\t\t\t\t<select title="Watermark Selection" v-model="selectedWatermark" _v-6d81614d="">\n\t\t\t\t\t\t\t\t\t<option value="-1" _v-6d81614d="">No watermark</option>\n\t\t\t\t\t\t\t\t\t<option v-for="(item, index) in watermarkData" :value="item.ID" _v-6d81614d="">#({{item.ID}})\n\t\t\t\t\t\t\t\t\t</option>\n\t\t\t\t\t\t\t\t</select>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t\n\t\t\t<div class="field is-fullwidth columns" _v-6d81614d="">\n\t\t\t\t<label class="label is-half column has-text-grey-dark no-padding-right " _v-6d81614d="">\n\t\t\t\t\t{{strings.opacity_title}}\n\t\t\t\t\t<p class="is-italic has-text-weight-normal" _v-6d81614d="">\n\t\t\t\t\t\t{{strings.opacity_desc}}\n\t\t\t\t\t</p>\n\t\t\t\t</label>\n\t\t\t\t\n\t\t\t\t<div class="column is-paddingless" _v-6d81614d="">\n\t\t\t\t\t<div class="columns" _v-6d81614d="">\n\t\t\t\t\t\t<div class="field column is-narrow has-addons" _v-6d81614d="">\n\t\t\t\t\t\t\t<p class="control" _v-6d81614d="">\n\t\t\t\t\t\t\t\t<a class="button is-small is-static" _v-6d81614d="">\n\t\t\t\t\t\t\t\t\t{{strings.opacity_field}}\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t<p class="control " _v-6d81614d="">\n\t\t\t\t\t\t\t\t<input v-model="watermarkOpacity" class="input is-small" type="number" min="0" max="100" _v-6d81614d="">\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t\n\t\t\t<div class="field columns" _v-6d81614d="">\n\t\t\t\t<label class="label column has-text-grey-dark" _v-6d81614d="">\n\t\t\t\t\t{{strings.position_title}}\n\t\t\t\t\t<p class="is-italic has-text-weight-normal" _v-6d81614d="">\n\t\t\t\t\t\t{{strings.position_desc}}\n\t\t\t\t\t</p>\n\t\t\t\t</label>\n\t\t\t\t<div class="column buttons " _v-6d81614d="">\n\t\t\t\t\t<div class="field columns is-gapless is-marginless " _v-6d81614d="">\n\t\t\t\t\t\t<div class="is-fullwidth optml-layout-grid" _v-6d81614d="">\n\t\t\t\t\t\t\t<a @click="changePosition(\'nowe\')" :class="{ \'is-info\':isActivePosition (\'nowe\'), \' is-selected\':watermarkSettings.position === \'nowe\' }" class="grid-button " :title="strings.pos_nowe_title" _v-6d81614d="">\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t<a @click="changePosition(\'no\')" :class="{ \'is-info\':isActivePosition (\'no\'), \' is-selected\':watermarkSettings.position === \'no\' }" class="grid-button " :title="strings.pos_no_title" _v-6d81614d="">\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t<a @click="changePosition(\'noea\')" :class="{ \'is-info\':isActivePosition (\'noea\'), \' is-selected\':watermarkSettings.position === \'noea\' }" class="grid-button" :title="strings.pos_noea_title" _v-6d81614d="">\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t<a @click="changePosition(\'we\')" :class="{ \'is-info\':isActivePosition (\'we\'), \' is-selected\':watermarkSettings.position === \'we\' }" class="grid-button" :title="strings.pos_we_title" _v-6d81614d="">\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t<a @click="changePosition(\'ce\')" :class="{ \'is-info\':isActivePosition (\'ce\'), \' is-selected\':watermarkSettings.position === \'ce\' }" class="grid-button" :title="strings.pos_ce_title" _v-6d81614d="">\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t<a @click="changePosition(\'ea\')" :class="{ \'is-info\':isActivePosition (\'ea\'), \' is-selected\':watermarkSettings.position === \'ea\' }" class="grid-button" :title="strings.pos_ea_title" _v-6d81614d="">\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t<a @click="changePosition(\'sowe\')" :class="{ \'is-info\':isActivePosition (\'sowe\'), \' is-selected\':watermarkSettings.position === \'sowe\' }" class="grid-button" :title="strings.pos_sowe_title" _v-6d81614d="">\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t<a @click="changePosition(\'so\')" :class="{ \'is-info\':isActivePosition (\'so\'), \' is-selected\':watermarkSettings.position === \'so\' }" class="grid-button" :title="strings.pos_so_title" _v-6d81614d="">\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t<a @click="changePosition(\'soea\')" :class="{ \'is-info\':isActivePosition (\'soea\'), \' is-selected\':watermarkSettings.position === \'soea\' }" class="grid-button" :title="strings.pos_soea_title" _v-6d81614d="">\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<br _v-6d81614d="">\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t\n\t\t\t<div class="field is-fullwidth columns " _v-6d81614d="">\n\t\t\t\t<label class="label is-half column has-text-grey-dark no-padding-right " _v-6d81614d="">\n\t\t\t\t\t{{strings.offset_title}}\n\t\t\t\t\t<p class="is-italic has-text-weight-normal" _v-6d81614d="">\n\t\t\t\t\t\t{{strings.offset_desc}}\n\t\t\t\t\t</p>\n\t\t\t\t</label>\n\t\t\t\t\n\t\t\t\t<div class="column is-paddingless" _v-6d81614d="">\n\t\t\t\t\t<div class="columns" _v-6d81614d="">\n\t\t\t\t\t\t<div class="field column is-narrow has-addons" _v-6d81614d="">\n\t\t\t\t\t\t\t<p class="control" _v-6d81614d="">\n\t\t\t\t\t\t\t\t<a class="button is-small is-static" _v-6d81614d="">\n\t\t\t\t\t\t\t\t\t{{strings.offset_x_field}}\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t<p class="control " _v-6d81614d="">\n\t\t\t\t\t\t\t\t<input v-model="watermarkX" class="input is-tiny is-small" type="number" _v-6d81614d="">\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="field column is-narrow has-addons" _v-6d81614d="">\n\t\t\t\t\t\t\t<p class="control" _v-6d81614d="">\n\t\t\t\t\t\t\t\t<a class="button is-small is-static" _v-6d81614d="">\n\t\t\t\t\t\t\t\t\t{{strings.offset_y_field}}\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t<p class="control " _v-6d81614d="">\n\t\t\t\t\t\t\t\t<input v-model="watermarkY" class="input is-small is-tiny" type="number" _v-6d81614d="">\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t\n\t\t\t<div class="field is-fullwidth columns" _v-6d81614d="">\n\t\t\t\t<label class="label is-half column has-text-grey-dark no-padding-right " _v-6d81614d="">\n\t\t\t\t\t{{strings.scale_title}}\n\t\t\t\t\t<p class="is-italic has-text-weight-normal" _v-6d81614d="">\n\t\t\t\t\t\t{{strings.scale_desc}}\n\t\t\t\t\t</p>\n\t\t\t\t</label>\n\t\t\t\t\n\t\t\t\t<div class="column is-paddingless" _v-6d81614d="">\n\t\t\t\t\t<div class="columns" _v-6d81614d="">\n\t\t\t\t\t\t<div class="field column is-narrow has-addons" _v-6d81614d="">\n\t\t\t\t\t\t\t<p class="control" _v-6d81614d="">\n\t\t\t\t\t\t\t\t<a class="button is-small is-static" _v-6d81614d="">\n\t\t\t\t\t\t\t\t\t{{strings.scale_field}}\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t<p class="control " _v-6d81614d="">\n\t\t\t\t\t\t\t\t<input v-model="watermarkScale" class="input is-small" type="number" min="0" max="100" _v-6d81614d="">\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t\n\t\t\t<p class="control column has-text-centered-desktop has-text-left-touch " _v-6d81614d="">\n\t\t\t\t<a @click="saveChanges()" class="button is-small is-success " :class="{\'is-loading\':loading}" _v-6d81614d="">\n\t\t\t\t\t<span class="dashicons dashicons-yes icon" _v-6d81614d=""></span>\n\t\t\t\t\t<span _v-6d81614d="">\t{{strings.save_changes}}</span>\n\t\t\t\t</a>\n\t\t\t</p>\n\t\t</div>\n\t</div>\n'},function(t,e,n){var o,i;n(75),o=n(77),i=n(78),t.exports=o||{},t.exports.__esModule&&(t.exports=t.exports.default),i&&(("function"==typeof t.exports?t.exports.options:t.exports).template=i)},function(t,e,n){var o=n(76);"string"==typeof o&&(o=[[t.i,o,""]]);n(1)(o,{});o.locals&&(t.exports=o.locals)},function(t,e,n){e=t.exports=n(0)(),e.push([t.i,"\n\n",""])},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={name:"resize",data:function(){return{strings:optimoleDashboardApp.strings.options_strings,all_strings:optimoleDashboardApp.strings,showSave:!1,new_data:{}}},mounted:function(){},methods:{saveChanges:function(){this.$store.dispatch("saveSettings",{settings:this.new_data})}},computed:{site_settings:function(){return this.$store.state.site_settings},widthStatus:{set:function(t){this.showSave=!0,this.new_data.max_width=t},get:function(){return this.site_settings.max_width}},heightStatus:{set:function(t){this.showSave=!0,this.new_data.max_height=t},get:function(){return this.site_settings.max_height}},resizeSmart:{set:function(t){this.showSave=!0,this.new_data.resize_smart=t?"enabled":"disabled"},get:function(){return!("disabled"===this.site_settings.resize_smart)}},retinaReady:{set:function(t){this.showSave=!0,this.new_data.retina_images=t?"enabled":"disabled"},get:function(){return!("disabled"===this.site_settings.retina_images)}}}}},function(t,e){t.exports='\n <div :class="{ \'saving--option\' : this.$store.state.loading }" _v-018981f2="">\n <div class="field columns" _v-018981f2="">\n <label class="label column has-text-grey-dark" _v-018981f2="">\n {{strings.enable_resize_smart_title}}\n <p class="is-italic has-text-weight-normal" _v-018981f2="">\n {{strings.enable_resize_smart_desc}}\n </p>\n </label>\n <div class="column is-3" _v-018981f2="">\n <toggle-button :class="\'has-text-dark\'" v-model="resizeSmart" :disabled="this.$store.state.loading" :labels="{checked: strings.enabled, unchecked: strings.disabled}" :width="80" :height="25" color="#008ec2" _v-018981f2=""></toggle-button>\n </div>\n\n </div>\n <div class="field columns" _v-018981f2="">\n <label class="label column has-text-grey-dark" _v-018981f2="">\n {{strings.enable_retina_title}}\n <p class="is-italic has-text-weight-normal" _v-018981f2="">\n {{strings.enable_retina_desc}}\n </p>\n </label>\n <div class="column is-3" _v-018981f2="">\n <toggle-button :class="\'has-text-dark\'" v-model="retinaReady" :disabled="this.$store.state.loading" :labels="{checked: strings.enabled, unchecked: strings.disabled}" :width="80" :height="25" color="#008ec2" _v-018981f2=""></toggle-button>\n </div>\n\n </div>\n <div class="field columns " _v-018981f2="">\n <label class="label column has-text-grey-dark no-padding-right " _v-018981f2="">\n {{strings.size_title}}\n <p class="is-italic has-text-weight-normal" _v-018981f2="">\n {{strings.size_desc}}\n </p>\n </label>\n\n <div class="column is-6 " _v-018981f2="">\n <div class="columns" _v-018981f2="">\n <div class="field column is-narrow has-addons" _v-018981f2="">\n <p class="control" _v-018981f2="">\n <a class="button is-small is-static" _v-018981f2="">\n {{strings.width_field}}\n </a>\n </p>\n <p class="control " _v-018981f2="">\n <input v-model="widthStatus" class="input is-small" type="number" min="100" max="10000" _v-018981f2="">\n </p>\n </div>\n <div class="field column is-small has-addons" _v-018981f2="">\n <p class="control" _v-018981f2="">\n <a class="button is-small is-static" _v-018981f2="">\n {{strings.height_field}}\n </a>\n </p>\n <p class="control " _v-018981f2="">\n <input v-model="heightStatus" class="input is-small" type="number" min="100" max="10000" _v-018981f2="">\n </p>\n </div>\n </div>\n </div>\n </div>\n <div class="field is-fullwidth columns " _v-018981f2="">\n <div class="column is-left" _v-018981f2="">\n <button @click="saveChanges()" class="button is-success is-small " :class="this.$store.state.loading ? \'is-loading\' : \'\' " :disabled="!showSave" _v-018981f2="">\n {{strings.save_changes}}\n </button>\n </div>\n </div>\n\n </div>\n'},function(t,e,n){var o,i;n(80),o=n(82),i=n(88),t.exports=o||{},t.exports.__esModule&&(t.exports=t.exports.default),i&&(("function"==typeof t.exports?t.exports.options:t.exports).template=i)},function(t,e,n){var o=n(81);"string"==typeof o&&(o=[[t.i,o,""]]);n(1)(o,{});o.locals&&(t.exports=o.locals)},function(t,e,n){e=t.exports=n(0)(),e.push([t.i,"\n\n",""])},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(83),i=function(t){return t&&t.__esModule?t:{default:t}}(o);e.default={name:"exclusions",components:{FilterControl:i.default},data:function(){return{strings:optimoleDashboardApp.strings.options_strings,all_strings:optimoleDashboardApp.strings,new_data:{}}},mounted:function(){},methods:{},computed:{site_settings:function(){return this.$store.state.site_settings}}}},function(t,e,n){var o,i;n(84),o=n(86),i=n(87),t.exports=o||{},t.exports.__esModule&&(t.exports=t.exports.default),i&&(("function"==typeof t.exports?t.exports.options:t.exports).template=i)},function(t,e,n){var o=n(85);"string"==typeof o&&(o=[[t.i,o,""]]);n(1)(o,{});o.locals&&(t.exports=o.locals)},function(t,e,n){e=t.exports=n(0)(),e.push([t.i,"\n\n",""])},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(2);!function(t){t&&t.__esModule}(o);e.default={name:"filter-control",props:["type"],data:function(){return{strings:optimoleDashboardApp.strings.options_strings,all_strings:optimoleDashboardApp.strings,showSave:!1,selected_filter:"filename",selected_value:"",filter_operator:optimoleDashboardApp.strings.options_strings.filter_operator_contains,FILTER_TYPES:{EXT:"extension",URL:"page_url",FILENAME:"filename",CLASS:"class"}}},mounted:function(){},methods:{saveRule:function(){var t={};t[this.type]={},t[this.type][this.selected_filter]={},t[this.type][this.selected_filter][this.selected_value]=!0,this.selected_value.length<3||this.$store.dispatch("saveSettings",{settings:{filters:t}})},removeRule:function(t,e){var n={};n[this.type]={},n[this.type][t]={},n[this.type][t][e]="false",this.$store.dispatch("saveSettings",{settings:{filters:n}})},changeFilterType:function(t){this.selected_value="",t.target.value===this.FILTER_TYPES.EXT&&(this.selected_value="svg",this.filter_operator=this.strings.filter_operator_is),t.target.value===this.FILTER_TYPES.URL&&(this.filter_operator=this.strings.filter_operator_contains),t.target.value===this.FILTER_TYPES.FILENAME&&(this.filter_operator=this.strings.filter_operator_contains),t.target.value===this.FILTER_TYPES.CLASS&&(this.filter_operator=this.strings.filter_operator_contains),this.selected_filter=t.target.value},getFilterOperator:function(){return this.filter_operator}},computed:{filters:function(){return this.$store.state.site_settings.filters[this.type]}}}},function(t,e){t.exports='\n <div :id="\'filter-type-\'+type" _v-2be63146="">\n <div class="field " _v-2be63146="">\n <label class="label column has-text-grey-dark" _v-2be63146="">\n <span v-if="type===\'lazyload\'" _v-2be63146="">{{strings.exclude_title_lazyload}}</span>\n <span v-if="type===\'optimize\'" _v-2be63146="">{{strings.exclude_title_optimize}}</span>\n </label>\n </div>\n <div class="field columns" _v-2be63146="">\n <div class="column is-paddingless is-full " _v-2be63146="">\n <div class="list" _v-2be63146="">\n <div class="list-item exclusion-filter" v-for="(item, index) in filters[this.FILTER_TYPES.EXT]" _v-2be63146="">\n <div class="control" _v-2be63146="">\n <div class="tags is-centered has-addons" _v-2be63146="">\n <a class="tag is-marginless is-link has-text-left" _v-2be63146=""><i _v-2be63146="">{{strings.exclude_ext_desc}}</i>\n <strong _v-2be63146="">{{index}}</strong></a>\n <a class="tag is-marginless is-delete" @click="removeRule(FILTER_TYPES.EXT,index)" _v-2be63146=""></a>\n </div>\n </div>\n </div>\n <div class="list-item exclusion-filter" v-for="(item, index) in filters[this.FILTER_TYPES.URL]" _v-2be63146="">\n <div class="control" _v-2be63146="">\n <div class="tags is-centered has-addons" _v-2be63146="">\n <a class="tag is-marginless is-link has-text-left" _v-2be63146=""><i _v-2be63146="">{{strings.exclude_url_desc}}</i>\n <strong _v-2be63146="">{{index}}</strong></a>\n <a class="tag is-marginless is-delete" @click="removeRule(FILTER_TYPES.URL,index)" _v-2be63146=""></a>\n </div>\n </div>\n </div>\n <div class="list-item exclusion-filter" v-for="(item, index) in filters[this.FILTER_TYPES.FILENAME]" _v-2be63146="">\n <div class="control" _v-2be63146="">\n <div class="tags is-centered has-addons" _v-2be63146="">\n <a class="tag is-marginless is-link has-text-left" _v-2be63146=""><i _v-2be63146="">{{strings.exclude_filename_desc}}</i>\n <strong _v-2be63146="">{{index}}</strong></a>\n <a class="tag is-marginless is-delete" @click="removeRule(FILTER_TYPES.FILENAME,index)" _v-2be63146=""></a>\n </div>\n </div>\n </div>\n <div class="list-item exclusion-filter" v-for="(item, index) in filters[this.FILTER_TYPES.CLASS]" _v-2be63146="">\n <div class="control" _v-2be63146="">\n <div class="tags is-centered has-addons" _v-2be63146="">\n <a class="tag is-marginless is-link has-text-left" _v-2be63146=""><i _v-2be63146="">{{strings.exclude_class_desc}}</i>\n <strong _v-2be63146="">{{index}}</strong></a>\n <a class="tag is-marginless is-delete" @click="removeRule(FILTER_TYPES.CLASS,index)" _v-2be63146=""></a>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n <div class="field columns" _v-2be63146="">\n <div class="field has-addons column has-addons-centered" _v-2be63146="">\n <p class="control " _v-2be63146="">\n <span class="select is-small" _v-2be63146="">\n <select @change="changeFilterType($event)" _v-2be63146="">\n <option :value="FILTER_TYPES.FILENAME" _v-2be63146="">{{strings.filter_filename}}</option>\n <option :value="FILTER_TYPES.EXT" _v-2be63146="">{{strings.filter_ext}}</option>\n <option :value="FILTER_TYPES.URL" _v-2be63146="">{{strings.filter_url}}</option>\n <option v-if="type === \'lazyload\'" :value="FILTER_TYPES.CLASS" _v-2be63146="">{{strings.filter_class}}</option>\n </select>\n </span>\n </p>\n <p class="control" _v-2be63146="">\n <a class="button is-small is-static" _v-2be63146="">\n {{getFilterOperator()}}\n </a>\n </p>\n <p class="control" _v-2be63146="">\n <span v-if="this.selected_filter===this.FILTER_TYPES.EXT" class="select is-small" _v-2be63146="">\n <select v-model="selected_value" _v-2be63146="">\n <option value="svg" _v-2be63146="">.SVG</option>\n <option value="jpg" _v-2be63146="">.JPG</option>\n <option value="png" _v-2be63146="">.PNG</option>\n <option value="gif" _v-2be63146="">.GIF</option>\n </select>\n </span>\n <input v-else="" v-model="selected_value" class="input is-small" type="text" placeholder="word" _v-2be63146="">\n </p>\n <p class="control" _v-2be63146="">\n <a class="button is-primary is-small" :class="this.$store.state.loading ? \'is-loading\' : \'\' " @click="saveRule()" _v-2be63146="">\n {{strings.add_filter}}\n </a>\n </p>\n </div>\n </div>\n <p class="has-text-centered " v-if="this.selected_filter === FILTER_TYPES.URL" _v-2be63146="">\n <i _v-2be63146="">For homepage use <strong _v-2be63146="">home</strong> keyword.</i>\n </p>\n </div>\n'},function(t,e){t.exports='\n <div :class="{ \'saving--option\' : this.$store.state.loading }" _v-f5e043ba="">\n <div id="filters-list" _v-f5e043ba="">\n <div class="columns " _v-f5e043ba="">\n <filter-control :type="\'optimize\'" _v-f5e043ba=""></filter-control>\n </div>\n\t <hr _v-f5e043ba="">\n <div class="columns " v-if="this.$store.state.site_settings.lazyload === \'enabled\'" _v-f5e043ba="">\n <filter-control :type="\'lazyload\'" _v-f5e043ba=""></filter-control>\n </div>\n </div>\n\n </div>\n'},function(t,e,n){var o,i;n(90),o=n(92),i=n(93),t.exports=o||{},t.exports.__esModule&&(t.exports=t.exports.default),i&&(("function"==typeof t.exports?t.exports.options:t.exports).template=i)},function(t,e,n){var o=n(91);"string"==typeof o&&(o=[[t.i,o,""]]);n(1)(o,{});o.locals&&(t.exports=o.locals)},function(t,e,n){e=t.exports=n(0)(),e.push([t.i,"\n\n",""])},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={name:"lazyload",data:function(){return{strings:optimoleDashboardApp.strings.options_strings,all_strings:optimoleDashboardApp.strings,showSave:!1,showBgSelectors:"enabled"===this.$store.state.site_settings.bg_replacer,new_data:{}}},mounted:function(){},methods:{saveChanges:function(){this.$store.dispatch("saveSettings",{settings:this.new_data})}},computed:{site_settings:function(){return this.$store.state.site_settings},lazyloadPlaceholder:{set:function(t){this.showSave=!0,this.new_data.lazyload_placeholder=t?"enabled":"disabled"},get:function(){return!("disabled"===this.site_settings.lazyload_placeholder)}},lazyloadBgImages:{set:function(t){this.showSave=!0,this.new_data.bg_replacer=t?"enabled":"disabled",this.showBgSelectors=t},get:function(){return!("disabled"===this.site_settings.bg_replacer)}},lazyloadSelectors:{set:function(t){this.showSave=!0,this.new_data.watchers=t},get:function(){return this.site_settings.watchers}}}}},function(t,e){t.exports='\n <div :class="{ \'saving--option\' : this.$store.state.loading }" _v-2356e1d0="">\n <div class="field columns" _v-2356e1d0="">\n <label class="label column has-text-grey-dark" _v-2356e1d0="">\n {{strings.enable_lazyload_placeholder_title}}\n <p class="is-italic has-text-weight-normal" _v-2356e1d0="">\n {{strings.enable_lazyload_placeholder_desc}}\n </p>\n </label>\n <div class="column is-3" _v-2356e1d0="">\n <toggle-button :class="\'has-text-dark\'" v-model="lazyloadPlaceholder" :disabled="this.$store.state.loading" :labels="{checked: strings.enabled, unchecked: strings.disabled}" :width="80" :height="25" color="#008ec2" _v-2356e1d0=""></toggle-button>\n </div>\n </div>\n <div class="field columns" _v-2356e1d0="">\n <label class="label column has-text-grey-dark" _v-2356e1d0="">\n {{strings.enable_bg_lazyload_title}}\n <p class="is-italic has-text-weight-normal" _v-2356e1d0="">\n {{strings.enable_bg_lazyload_desc}}\n </p>\n </label>\n <div class="column is-3" _v-2356e1d0="">\n <toggle-button :class="\'has-text-dark\'" v-model="lazyloadBgImages" :disabled="this.$store.state.loading" :labels="{checked: strings.enabled, unchecked: strings.disabled}" :width="80" :height="25" color="#008ec2" _v-2356e1d0=""></toggle-button>\n </div>\n </div>\n <div class="field columns" v-if="showBgSelectors" _v-2356e1d0="">\n <div class="column" _v-2356e1d0="">\n <label class="label has-text-grey-dark" _v-2356e1d0="">\n <span _v-2356e1d0="">{{strings.watch_title_lazyload}}</span>\n <p class="is-italic has-text-weight-normal" _v-2356e1d0="">\n {{strings.watch_desc_lazyload}}\n </p>\n </label>\n <div _v-2356e1d0="">\n <textarea-autosize class="textarea is-secondary is-small" placeholder="e.g: .image, #item-id, div.with-background-image" v-model="lazyloadSelectors" :min-height="3" :max-height="350" _v-2356e1d0=""></textarea-autosize>\n </div>\n </div>\n </div>\n <div class="field is-fullwidth columns " _v-2356e1d0="">\n <div class="column is-left" _v-2356e1d0="">\n <button @click="saveChanges()" class="button is-success is-small " :class="this.$store.state.loading ? \'is-loading\' : \'\' " :disabled="!showSave" _v-2356e1d0="">\n {{strings.save_changes}}\n </button>\n </div>\n </div>\n\n </div>\n'},function(t,e){t.exports='\n <div class="columns" _v-5187a250="">\n <aside id="optml-settings-menu" class="menu column is-2-fullhd is-3-desktop is-3-tablet is-hidden-mobile" _v-5187a250="">\n <ul class="menu-list optml-settings-submenu is-marginless" _v-5187a250="">\n <li _v-5187a250=""><a @click="changeTab(\'general\')" href="#" :class="tab === \'general\' ? \'is-active\' : \'\'" :title="all_strings.general_settings_menu_item+\' \'+all_strings.settings_menu_item" _v-5187a250="">{{all_strings.general_settings_menu_item}}</a>\n </li>\n <li :class="isDisabled ? \'is-menu-disabled\' : \'\' " _v-5187a250=""><a @click="ToggleAdvanced()" href="#" title="General settings" _v-5187a250=""><span _v-5187a250="">{{all_strings.advanced_settings_menu_item}}</span>\n <span class=" dashicons advanced-link " :class="advancedOpen ? \'dashicons-arrow-down-alt2\' : \'dashicons-arrow-right-alt2\'" _v-5187a250=""></span>\n </a>\n <ul class="menu-list optml-settings-submenu is-marginless " :class=" ! advancedOpen ? \'is-hidden\' : \'\' " _v-5187a250="">\n <li _v-5187a250=""><a @click="changeTab(\'compression\')" href="#" :class="tab === \'compression\' ? \'is-active\' : \'\'" :title="all_strings.settings_compression_menu_item+\' \'+all_strings.settings_menu_item" _v-5187a250="">{{all_strings.settings_compression_menu_item}}</a>\n </li>\n <li _v-5187a250=""><a @click="changeTab(\'resize\')" href="#" :class="tab === \'resize\' ? \'is-active\' : \'\'" :title="all_strings.settings_resize_menu_item+\' \'+all_strings.settings_menu_item" _v-5187a250="">{{all_strings.settings_resize_menu_item}}</a>\n </li>\n <li v-if="this.$store.state.site_settings.lazyload===\'enabled\'" _v-5187a250=""><a @click="changeTab(\'lazyload\')" href="#" :class="tab === \'lazyload\' ? \'is-active\' : \'\'" :title="all_strings.lazyload_settings_menu_item+\' \'+all_strings.lazyload_settings_menu_item" _v-5187a250="">{{all_strings.lazyload_settings_menu_item}}</a>\n </li>\n <li _v-5187a250=""><a href="#" @click="changeTab(\'exclusions\')" :class="tab === \'exclusions\' ? \'is-active\' : \'\'" :title="all_strings.settings_exclusions_menu_item+\' \'+all_strings.settings_menu_item" _v-5187a250="">{{all_strings.settings_exclusions_menu_item}}</a>\n </li>\n <li _v-5187a250=""><a @click="changeTab(\'watermark\')" href="#" :class="tab === \'watermark\' ? \'is-active\' : \'\'" :title="all_strings.watermarks_menu_item+\' \'+all_strings.settings_menu_item" _v-5187a250="">{{all_strings.watermarks_menu_item}}\n <span class=" optml-beta is-normal tag is-warning" _v-5187a250="">Beta</span></a></li>\n </ul>\n </li>\n </ul>\n </aside>\n <div :class="[{ \'saving--option\' : this.$store.state.loading, \'is-tab-disabled\':isDisabled},\'is-tab-\'+tab] " class=" column" _v-5187a250="">\n <div class="subtab-content" _v-5187a250="">\n <general v-if="tab === \'general\' " @update-status="updateGlobalState" _v-5187a250=""></general>\n <compression v-if="tab === \'compression\' " _v-5187a250=""></compression>\n <watermarks v-if="tab ===\'watermark\'" _v-5187a250=""></watermarks>\n <resize v-if="tab ===\'resize\'" _v-5187a250=""></resize>\n <lazyload v-if="tab ===\'lazyload\'" _v-5187a250=""></lazyload>\n <exclusions v-if="tab ===\'exclusions\'" _v-5187a250=""></exclusions>\n </div>\n </div>\n </div>\n'},function(t,e){t.exports='\n <div class="columns is-desktop">\n\n <div class="column ">\n <div class="card">\n <app-header></app-header>\n <div class="card-content">\n <div class="content">\n <connect-layout v-if="!this.$store.state.connected"></connect-layout>\n\n <transition name="slide-fade">\n <div v-if="this.$store.state.connected && ! this.$store.state.is_loaded" id="optml-loader">\n <div class="columns">\n <div class="column">\n\n <transition name="slide-fade">\n <h4 class="has-text-centered">{{this.getProgressMessage()}}</h4>\n </transition>\n </div>\n </div>\n <div class="columns">\n <div class=" column is-vertical-center ">\n <progress id="optml-progress-bar" class="progress is-medium is-info"\n :class="\'optml-progres-\'+(Math.floor(this.loading_percent/10))"\n max="100"></progress>\n </div>\n </div>\n <iframe :src="home" style="opacity:0;" ></iframe>\n </div>\n </transition>\n <transition name="fade" mode="out-in">\n <div v-if="this.$store.state.connected && this.$store.state.is_loaded">\n <div class="tabs is-left is-boxed is-medium">\n <ul class="is-marginless optml-tabs">\n <li :class="tab === \'dashboard\' ? \'is-active\' : \'\'">\n <a @click="changeTab(\'dashboard\')" class="is-size-6-mobile">\n <span class="icon is-size-6-mobile is-size-6-tablet dashicons dashicons-admin-home"></span>\n <span class="is-size-6-mobile is-size-6-touch ">{{strings.dashboard_menu_item}}</span>\n </a>\n </li>\n <li :class="tab === \'conflicts\' ? \'is-active\' : \'\'" v-if="conflictCount > 0">\n <a @click="changeTab(\'conflicts\')" class="is-size-6-mobile">\n <span class="icon is-size-6-mobile is-size-6-tablet dashicons dashicons-warning"></span>\n <span class="is-size-6-mobile is-size-6-touch">{{strings.conflicts_menu_item}}</span>&nbsp;\n <span class="tag is-rounded is-danger">{{conflictCount}}</span>\n </a>\n </li>\n <li :class="tab === \'settings\' ? \'is-active\' : \'\'">\n <a @click="changeTab(\'settings\')" class="is-size-6-mobile ">\n <span class="icon is-size-6-mobile is-size-6-tablet dashicons dashicons-admin-settings"></span>\n <span class="is-size-6-mobile is-size-6-touch">{{strings.settings_menu_item}}</span>\n </a>\n </li>\n\n </ul>\n </div>\n\n <div class="is-tab" v-if="tab === \'dashboard\' "\n :class="remove_images ? \'no-images\' : \'\' ">\n <div class="notification is-success" v-if="strings.notice_just_activated.length > 0"\n v-html="strings.notice_just_activated"></div>\n <api-key-form></api-key-form>\n <cdn-details v-if="this.$store.state.userData"></cdn-details>\n <hr/>\n <last-images :status="fetchStatus" v-if="! remove_images"></last-images>\n </div>\n <div class="is-tab" v-if=" tab === \'settings\'">\n <options></options>\n </div>\n <div class="is-tab" v-if=" tab === \'conflicts\'">\n <conflicts></conflicts>\n </div>\n </div>\n </transition>\n\n </div>\n </div>\n\n <div class="level-right">\n <p class="level-item"><a href="https://optimole.com" target="_blank">Optimole\n v{{strings.version}}</a></p>\n <p class="level-item"><a href="https://optimole.com/terms/"\n target="_blank">{{strings.terms_menu}}</a></p>\n <p class="level-item"><a href="https://optimole.com/privacy-policy/" target="_blank">{{strings.privacy_menu}}</a>\n </p>\n <p class="level-item"><a :href="\'https://speedtest.optimole.com/?url=\' + home " target="_blank">{{strings.testdrive_menu}}</a>\n </p>\n </div>\n </div>\n </div>\n <div v-if="this.$store.state.connected && this.$store.state.userData.plan === \'free\' "\n class="column is-narrow is-hidden-desktop-only is-hidden-tablet-only is-hidden-mobile">\n <div class="card optml-upgrade">\n <div class="card-header">\n <h3 class="is-size-5 card-header-title"><span class="dashicons dashicons-chart-line"></span>\n {{strings.upgrade.title}}</h3>\n </div>\n <div class="card-content">\n <ul>\n <li><span class="dashicons dashicons-yes"></span>{{strings.upgrade.reason_1}}</li>\n <li><span class="dashicons dashicons-yes"></span>{{strings.upgrade.reason_2}}</li>\n <li><span class="dashicons dashicons-yes"></span>{{strings.upgrade.reason_3}}</li>\n <li><span class="dashicons dashicons-yes"></span>{{strings.upgrade.reason_4}}</li>\n </ul>\n </div>\n <div class="card-footer ">\n <div class="card-footer-item">\n <a href="https://optimole.com/pricing" target="_blank"\n class="button is-centered is-small is-success"><span\n class="dashicons dashicons-external"></span>{{strings.upgrade.cta}}</a>\n </div>\n </div>\n </div>\n </div>\n </div>\n'},function(t,e,n){"use strict";function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),a=o(i),r=n(97),s=o(r),l=n(6),p=o(l),c=n(99),d=o(c),m=n(100),u=o(m);a.default.use(s.default),a.default.use(p.default);var f=new s.default.Store({strict:!0,state:{isConnecting:!1,loading:!1,site_settings:optimoleDashboardApp.site_settings,connected:"yes"===optimoleDashboardApp.connection_status,is_loaded:"yes"===optimoleDashboardApp.connection_status,apiKey:optimoleDashboardApp.api_key?optimoleDashboardApp.api_key:"",apiKeyValidity:!0,connectError:"",sample_rate:{},apiError:!1,userData:optimoleDashboardApp.user_data?optimoleDashboardApp.user_data:null,optimizedImages:[],watermarks:[],conflicts:[]},mutations:d.default,actions:u.default});e.default=f},function(t,e,n){"use strict";function o(t){S&&(t._devtoolHook=S,S.emit("vuex:init",t),S.on("vuex:travel-to-state",function(e){t.replaceState(e)}),t.subscribe(function(t,e){S.emit("vuex:mutation",t,e)}))}function i(t,e){Object.keys(t).forEach(function(n){return e(t[n],n)})}function a(t){return null!==t&&"object"==typeof t}function r(t){return t&&"function"==typeof t.then}function s(t,e,n){if(e.update(n),n.modules)for(var o in n.modules){if(!e.getChild(o))return;s(t.concat(o),e.getChild(o),n.modules[o])}}function l(t,e){return e.indexOf(t)<0&&e.push(t),function(){var n=e.indexOf(t);n>-1&&e.splice(n,1)}}function p(t,e){t._actions=Object.create(null),t._mutations=Object.create(null),t._wrappedGetters=Object.create(null),t._modulesNamespaceMap=Object.create(null);var n=t.state;d(t,n,[],t._modules.root,!0),c(t,n,e)}function c(t,e,n){var o=t._vm;t.getters={};var a=t._wrappedGetters,r={};i(a,function(e,n){r[n]=function(){return e(t)},Object.defineProperty(t.getters,n,{get:function(){return t._vm[n]},enumerable:!0})});var s=$.config.silent;$.config.silent=!0,t._vm=new $({data:{$$state:e},computed:r}),$.config.silent=s,t.strict&&v(t),o&&(n&&t._withCommit(function(){o._data.$$state=null}),$.nextTick(function(){return o.$destroy()}))}function d(t,e,n,o,i){var a=!n.length,r=t._modules.getNamespace(n);if(o.namespaced&&(t._modulesNamespaceMap[r]=o),!a&&!i){var s=g(e,n.slice(0,-1)),l=n[n.length-1];t._withCommit(function(){$.set(s,l,o.state)})}var p=o.context=m(t,r,n);o.forEachMutation(function(e,n){f(t,r+n,e,p)}),o.forEachAction(function(e,n){var o=e.root?n:r+n,i=e.handler||e;h(t,o,i,p)}),o.forEachGetter(function(e,n){b(t,r+n,e,p)}),o.forEachChild(function(o,a){d(t,e,n.concat(a),o,i)})}function m(t,e,n){var o=""===e,i={dispatch:o?t.dispatch:function(n,o,i){var a=x(n,o,i),r=a.payload,s=a.options,l=a.type;return s&&s.root||(l=e+l),t.dispatch(l,r)},commit:o?t.commit:function(n,o,i){var a=x(n,o,i),r=a.payload,s=a.options,l=a.type;s&&s.root||(l=e+l),t.commit(l,r,s)}};return Object.defineProperties(i,{getters:{get:o?function(){return t.getters}:function(){return u(t,e)}},state:{get:function(){return g(t.state,n)}}}),i}function u(t,e){var n={},o=e.length;return Object.keys(t.getters).forEach(function(i){if(i.slice(0,o)===e){var a=i.slice(o);Object.defineProperty(n,a,{get:function(){return t.getters[i]},enumerable:!0})}}),n}function f(t,e,n,o){(t._mutations[e]||(t._mutations[e]=[])).push(function(e){n.call(t,o.state,e)})}function h(t,e,n,o){(t._actions[e]||(t._actions[e]=[])).push(function(e,i){var a=n.call(t,{dispatch:o.dispatch,commit:o.commit,getters:o.getters,state:o.state,rootGetters:t.getters,rootState:t.state},e,i);return r(a)||(a=Promise.resolve(a)),t._devtoolHook?a.catch(function(e){throw t._devtoolHook.emit("vuex:error",e),e}):a})}function b(t,e,n,o){t._wrappedGetters[e]||(t._wrappedGetters[e]=function(t){return n(o.state,o.getters,t.state,t.getters)})}function v(t){t._vm.$watch(function(){return this._data.$$state},function(){},{deep:!0,sync:!0})}function g(t,e){return e.length?e.reduce(function(t,e){return t[e]},t):t}function x(t,e,n){return a(t)&&t.type&&(n=e,e=t,t=t.type),{type:t,payload:e,options:n}}function y(t){$&&t===$||($=t,z($))}function w(t){return Array.isArray(t)?t.map(function(t){return{key:t,val:t}}):Object.keys(t).map(function(e){return{key:e,val:t[e]}})}function k(t){return function(e,n){return"string"!=typeof e?(n=e,e=""):"/"!==e.charAt(e.length-1)&&(e+="/"),t(e,n)}}function _(t,e,n){return t._modulesNamespaceMap[n]}Object.defineProperty(e,"__esModule",{value:!0}),n.d(e,"Store",function(){return j}),n.d(e,"install",function(){return y}),n.d(e,"mapState",function(){return T}),n.d(e,"mapMutations",function(){return D}),n.d(e,"mapGetters",function(){return P}),n.d(e,"mapActions",function(){return R}),n.d(e,"createNamespacedHelpers",function(){return I});/**
22
  * vuex v2.5.0
23
  * (c) 2017 Evan You
24
  * @license MIT
18
  * Version: 2.8.19
19
  * Author: LianYue
20
  */
21
+ !function(e,n){t.exports=n()}(0,function(){"use strict";function t(t){var e=a(t);return r(e,t.body)}function e(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function n(){var t=document.head||document.getElementsByTagName("head")[0],e=n.styles||(n.styles={}),o="undefined"!=typeof navigator&&/msie [6-9]\\b/.test(navigator.userAgent.toLowerCase());return function(n,i){if(!document.querySelector('style[data-vue-ssr-id~="'+n+'"]')){var a=o?i.media||"default":n,r=e[a]||(e[a]={ids:[],parts:[],element:void 0});if(!r.ids.includes(n)){var s=i.source,l=r.ids.length;if(r.ids.push(n),i.map&&(s+="\n/*# sourceURL="+i.map.sources[0]+" */",s+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(i.map))))+" */"),o&&(r.element=r.element||document.querySelector("style[data-group="+a+"]")),!r.element){var p=r.element=document.createElement("style");p.type="text/css",i.media&&p.setAttribute("media",i.media),o&&(p.setAttribute("data-group",a),p.setAttribute("data-next-index","0")),t.appendChild(p)}if(o&&(l=parseInt(r.element.getAttribute("data-next-index")),r.element.setAttribute("data-next-index",l+1)),r.element.styleSheet)r.parts.push(s),r.element.styleSheet.cssText=r.parts.filter(Boolean).join("\n");else{var c=document.createTextNode(s),d=r.element.childNodes;d[l]&&r.element.removeChild(d[l]),d.length?r.element.insertBefore(c,d[l]):r.element.appendChild(c)}}}}}function o(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e<t.length;e++)n[e]=t[e];return n}return Array.from(t)}function i(){var t=document.head||document.getElementsByTagName("head")[0],e=i.styles||(i.styles={}),n="undefined"!=typeof navigator&&/msie [6-9]\\b/.test(navigator.userAgent.toLowerCase());return function(o,i){if(!document.querySelector('style[data-vue-ssr-id~="'+o+'"]')){var a=n?i.media||"default":o,r=e[a]||(e[a]={ids:[],parts:[],element:void 0});if(!r.ids.includes(o)){var s=i.source,l=r.ids.length;if(r.ids.push(o),i.map&&(s+="\n/*# sourceURL="+i.map.sources[0]+" */",s+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(i.map))))+" */"),n&&(r.element=r.element||document.querySelector("style[data-group="+a+"]")),!r.element){var p=r.element=document.createElement("style");p.type="text/css",i.media&&p.setAttribute("media",i.media),n&&(p.setAttribute("data-group",a),p.setAttribute("data-next-index","0")),t.appendChild(p)}if(n&&(l=parseInt(r.element.getAttribute("data-next-index")),r.element.setAttribute("data-next-index",l+1)),r.element.styleSheet)r.parts.push(s),r.element.styleSheet.cssText=r.parts.filter(Boolean).join("\n");else{var c=document.createTextNode(s),d=r.element.childNodes;d[l]&&r.element.removeChild(d[l]),d.length?r.element.insertBefore(c,d[l]):r.element.appendChild(c)}}}}}var a=function(t){var e=new XMLHttpRequest;return e.open(t.method||"GET",t.url),e.responseType="json",t.headers&&Object.keys(t.headers).forEach(function(n){e.setRequestHeader(n,t.headers[n])}),e},r=function(t,e){return new Promise(function(n,o){t.onload=function(){if(t.status>=200&&t.status<300){var e;try{e=JSON.parse(t.response)}catch(n){e=t.response}n(e)}else o(t.response)},t.onerror=function(){return o(t.response)},t.send(JSON.stringify(e))})},s=function(t,e){var n=new FormData;for(var o in e)n.append(o,e[o]);return new Promise(function(e,o){t.onload=function(){if(t.status>=200&&t.status<300){var n;try{n=JSON.parse(t.response)}catch(e){n=t.response}e(n)}else o(t.response)},t.onerror=function(){return o(t.response)},t.send(n)})},l=function(){function t(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,n,o){return n&&t(e.prototype,n),o&&t(e,o),e}}(),p=function(){function n(t,o){e(this,n),this.file=t,this.options=o}return l(n,[{key:"createChunks",value:function(){this.chunks=[];for(var t=0,e=this.chunkSize;t<this.fileSize;)this.chunks.push({blob:this.file.file.slice(t,e),startOffset:t,active:!1,retries:this.maxRetries}),t=e,e=t+this.chunkSize}},{key:"updateFileProgress",value:function(){this.file.progress=this.progress}},{key:"pause",value:function(){this.file.active=!1,this.stopChunks()}},{key:"stopChunks",value:function(){this.chunksUploading.forEach(function(t){t.xhr.abort(),t.active=!1})}},{key:"resume",value:function(){this.file.active=!0,this.startChunking()}},{key:"upload",value:function(){var t=this;return this.promise=new Promise(function(e,n){t.resolve=e,t.reject=n}),this.start(),this.promise}},{key:"start",value:function(){var e=this;t({method:"POST",headers:Object.assign({},this.headers,{"Content-Type":"application/json"}),url:this.action,body:Object.assign(this.startBody,{phase:"start",mime_type:this.fileType,size:this.fileSize,name:this.fileName})}).then(function(t){if("success"!==t.status)return e.file.response=t,e.reject("server");e.sessionId=t.data.session_id,e.chunkSize=t.data.end_offset,e.createChunks(),e.startChunking()}).catch(function(t){e.file.response=t,e.reject("server")})}},{key:"startChunking",value:function(){for(var t=0;t<this.maxActiveChunks;t++)this.uploadNextChunk()}},{key:"uploadNextChunk",value:function(){if(this.file.active){if(this.hasChunksToUpload)return this.uploadChunk(this.chunksToUpload[0]);if(0===this.chunksUploading.length)return this.finish()}}},{key:"uploadChunk",value:function(t){var e=this;t.progress=0,t.active=!0,this.updateFileProgress(),t.xhr=a({method:"POST",headers:this.headers,url:this.action}),t.xhr.upload.addEventListener("progress",function(e){e.lengthComputable&&(t.progress=Math.round(e.loaded/e.total*100))},!1),s(t.xhr,Object.assign(this.uploadBody,{phase:"upload",session_id:this.sessionId,start_offset:t.startOffset,chunk:t.blob})).then(function(n){if(t.active=!1,"success"===n.status)t.uploaded=!0;else if(t.retries--<=0)return e.stopChunks(),e.reject("upload");e.uploadNextChunk()}).catch(function(){if(t.active=!1,t.retries--<=0)return e.stopChunks(),e.reject("upload");e.uploadNextChunk()})}},{key:"finish",value:function(){var e=this;this.updateFileProgress(),t({method:"POST",headers:Object.assign({},this.headers,{"Content-Type":"application/json"}),url:this.action,body:Object.assign(this.finishBody,{phase:"finish",session_id:this.sessionId})}).then(function(t){if(e.file.response=t,"success"!==t.status)return e.reject("server");e.resolve(t)}).catch(function(t){e.file.response=t,e.reject("server")})}},{key:"maxRetries",get:function(){return parseInt(this.options.maxRetries)}},{key:"maxActiveChunks",get:function(){return parseInt(this.options.maxActive)}},{key:"fileType",get:function(){return this.file.type}},{key:"fileSize",get:function(){return this.file.size}},{key:"fileName",get:function(){return this.file.name}},{key:"action",get:function(){return this.options.action||null}},{key:"startBody",get:function(){return this.options.startBody||{}}},{key:"uploadBody",get:function(){return this.options.uploadBody||{}}},{key:"finishBody",get:function(){return this.options.finishBody||{}}},{key:"headers",get:function(){return this.options.headers||{}}},{key:"readyToUpload",get:function(){return!!this.chunks}},{key:"progress",get:function(){var t=this,e=this.chunksUploaded.length/this.chunks.length*100,n=this.chunksUploading.reduce(function(e,n){return e+(0|n.progress)/t.chunks.length},0);return Math.min(e+n,100)}},{key:"chunksToUpload",get:function(){return this.chunks.filter(function(t){return!t.active&&!t.uploaded})}},{key:"hasChunksToUpload",get:function(){return this.chunksToUpload.length>0}},{key:"chunksUploading",get:function(){return this.chunks.filter(function(t){return!!t.xhr&&!!t.active})}},{key:"chunksUploaded",get:function(){return this.chunks.filter(function(t){return!!t.uploaded})}}]),n}(),c={methods:{change:function(t){this.$parent.addInputFile(t.target),t.target.files?(t.target.value="",/safari/i.test(navigator.userAgent)||(t.target.type="",t.target.type="file")):(this.$destroy(),new this.constructor({parent:this.$parent,el:this.$el}))}}},d=c,m=function(){var t=this,e=t.$createElement;return(t._self._c||e)("input",{attrs:{type:"file",name:t.$parent.name,id:t.$parent.inputId||t.$parent.name,accept:t.$parent.accept,capture:t.$parent.capture,disabled:t.$parent.disabled,webkitdirectory:t.$parent.directory&&t.$parent.features.directory,directory:t.$parent.directory&&t.$parent.features.directory,multiple:t.$parent.multiple&&t.$parent.features.html5},on:{change:t.change}})},u=[],f=function(t,e,n,o,i,a,r,s){var l=("function"==typeof n?n.options:n)||{};return l.render||(l.render=t.render,l.staticRenderFns=t.staticRenderFns,l._compiled=!0,i&&(l.functional=!0)),l._scopeId=o,l}({render:m,staticRenderFns:u},void 0,d,void 0,!1,void 0,n,void 0),h=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(t[o]=n[o])}return t},b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},v={headers:{},action:"",minSize:1048576,maxActive:3,maxRetries:5,handler:p},g={components:{InputFile:f},props:{inputId:{type:String},name:{type:String,default:"file"},accept:{type:String},capture:{},disabled:{},multiple:{type:Boolean},maximum:{type:Number,default:function(){return this.multiple?0:1}},addIndex:{type:[Boolean,Number]},directory:{type:Boolean},postAction:{type:String},putAction:{type:String},customAction:{type:Function},headers:{type:Object,default:Object},data:{type:Object,default:Object},timeout:{type:Number,default:0},drop:{default:!1},dropDirectory:{type:Boolean,default:!0},size:{type:Number,default:0},extensions:{default:Array},value:{type:Array,default:Array},thread:{type:Number,default:1},chunkEnabled:{type:Boolean,default:!1},chunk:{type:Object,default:function(){return v}}},data:function(){return{files:this.value,features:{html5:!0,directory:!1,drag:!1},active:!1,dropActive:!1,uploading:0,destroy:!1}},mounted:function(){var t=document.createElement("input");if(t.type="file",t.multiple=!0,window.FormData&&t.files?("boolean"!=typeof t.webkitdirectory&&"boolean"!=typeof t.directory||(this.features.directory=!0),this.features.html5&&void 0!==t.ondrop&&(this.features.drop=!0)):this.features.html5=!1,this.maps={},this.files)for(var e=0;e<this.files.length;e++){var n=this.files[e];this.maps[n.id]=n}this.$nextTick(function(){this.$parent&&this.$parent.$forceUpdate(),this.watchDrop(this.drop)})},beforeDestroy:function(){this.destroy=!0,this.active=!1},computed:{uploaded:function(){for(var t=void 0,e=0;e<this.files.length;e++)if(t=this.files[e],t.fileObject&&!t.error&&!t.success)return!1;return!0},chunkOptions:function(){return Object.assign(v,this.chunk)},className:function(){return["file-uploads",this.features.html5?"file-uploads-html5":"file-uploads-html4",this.features.directory&&this.directory?"file-uploads-directory":void 0,this.features.drop&&this.drop?"file-uploads-drop":void 0,this.disabled?"file-uploads-disabled":void 0]}},watch:{active:function(t){this.watchActive(t)},dropActive:function(){this.$parent&&this.$parent.$forceUpdate()},drop:function(t){this.watchDrop(t)},value:function(t){if(this.files!==t){this.files=t;var e=this.maps;this.maps={};for(var n=0;n<this.files.length;n++){var o=this.files[n];this.maps[o.id]=o}for(var i in this.maps){var a=this.maps[i],r=e[i];a!==r&&this.emitFile(a,r)}for(var s in e)this.maps[s]||this.emitFile(void 0,e[s])}}},methods:{clear:function(){if(this.files.length){var t=this.files;this.files=[],this.maps={},this.emitInput();for(var e=0;e<t.length;e++)this.emitFile(void 0,t[e])}return!0},get:function(t){return!!t&&("object"===(void 0===t?"undefined":b(t))?this.maps[t.id]||!1:this.maps[t]||!1)},add:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.addIndex,n=t,o=n instanceof Array;o||(n=[n]);for(var i=[],a=0;a<n.length;a++){var r=n[a];this.features.html5&&r instanceof Blob&&(r={file:r,size:r.size,name:r.webkitRelativePath||r.relativePath||r.name||"unknown",type:r.type});var s=!1;if(!1===r.fileObject||(r.fileObject?s=!0:"undefined"!=typeof Element&&r.el instanceof Element?s=!0:"undefined"!=typeof Blob&&r.file instanceof Blob&&(s=!0)),s&&(r=h({fileObject:!0,size:-1,name:"Filename",type:"",active:!1,error:"",success:!1,putAction:this.putAction,postAction:this.postAction,timeout:this.timeout},r,{response:{},progress:"0.00",speed:0}),r.data=h({},this.data,r.data?r.data:{}),r.headers=h({},this.headers,r.headers?r.headers:{})),r.id||(r.id=Math.random().toString(36).substr(2)),!this.emitFilter(r,void 0)){if(this.maximum>1&&i.length+this.files.length>=this.maximum)break;if(i.push(r),1===this.maximum)break}}if(!i.length)return!1;1===this.maximum&&this.clear();var l=void 0;if(!0===e||0===e)l=i.concat(this.files);else if(e){var p;l=this.files.concat([]),(p=l).splice.apply(p,[e,0].concat(i))}else l=this.files.concat(i);this.files=l;for(var c=0;c<i.length;c++){var d=i[c];this.maps[d.id]=d}this.emitInput();for(var m=0;m<i.length;m++)this.emitFile(i[m],void 0);return o?i:i[0]},addInputFile:function(t){var e=[];if(t.files)for(var n=0;n<t.files.length;n++){var o=t.files[n];e.push({size:o.size,name:o.webkitRelativePath||o.relativePath||o.name,type:o.type,file:o})}else{var i=t.value.replace(/\\/g,"/").split("/");delete t.__vuex__,e.push({name:i[i.length-1],el:t})}return this.add(e)},addDataTransfer:function(t){var e=this,n=[];if(t.items&&t.items.length){for(var i=[],a=0;a<t.items.length;a++){var r=t.items[a];r=r.getAsEntry?r.getAsEntry()||r.getAsFile():r.webkitGetAsEntry?r.webkitGetAsEntry()||r.getAsFile():r.getAsFile(),r&&i.push(r)}return new Promise(function(t,a){!function a(r){var s=i[r];if(!s||e.maximum>0&&n.length>=e.maximum)return t(e.add(n));e.getEntry(s).then(function(t){n.push.apply(n,o(t)),a(r+1)})}(0)})}if(t.files.length){for(var s=0;s<t.files.length&&(n.push(t.files[s]),!(this.maximum>0&&n.length>=this.maximum));s++);return Promise.resolve(this.add(n))}return Promise.resolve([])},getEntry:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return new Promise(function(i,a){if(t.isFile)t.file(function(t){i([{size:t.size,name:n+t.name,type:t.type,file:t}])});else if(t.isDirectory&&e.dropDirectory){var r=[],s=t.createReader();!function a(){s.readEntries(function(s){!function l(p){return!s[p]&&0===p||e.maximum>0&&r.length>=e.maximum?i(r):s[p]?void e.getEntry(s[p],n+t.name+"/").then(function(t){r.push.apply(r,o(t)),l(p+1)}):a()}(0)})}()}else i([])})},replace:function(t,e){var n=this.get(t),o=this.get(e);if(!n||!o||n===o)return!1;var i=this.files.concat([]),a=i.indexOf(n),r=i.indexOf(o);return-1!==a&&-1!==r&&(i[a]=o,i[r]=n,this.files=i,this.emitInput(),!0)},remove:function(t){var e=this.get(t);if(e){if(this.emitFilter(void 0,e))return!1;var n=this.files.concat([]),o=n.indexOf(e);if(-1===o)return console.error("remove",e),!1;n.splice(o,1),this.files=n,delete this.maps[e.id],this.emitInput(),this.emitFile(void 0,e)}return e},update:function(t,e){var n=this.get(t);if(n){var o=h({},n,e);if(!n.fileObject||!n.active||o.active||o.error||o.success||(o.error="abort"),this.emitFilter(o,n))return!1;var i=this.files.concat([]),a=i.indexOf(n);return-1===a?(console.error("update",n),!1):(i.splice(a,1,o),this.files=i,delete this.maps[n.id],this.maps[o.id]=o,this.emitInput(),this.emitFile(o,n),o)}return!1},emitFilter:function(t,e){var n=!1;return this.$emit("input-filter",t,e,function(){return n=!0}),n},emitFile:function(t,e){this.$emit("input-file",t,e),!(t&&t.fileObject&&t.active)||e&&e.active?t&&t.fileObject&&t.active||!e||!e.fileObject||!e.active||this.uploading--:(this.uploading++,this.$nextTick(function(){var e=this;setTimeout(function(){e.upload(t).then(function(){(t=e.get(t))&&t.fileObject&&e.update(t,{active:!1,success:!t.error})}).catch(function(n){e.update(t,{active:!1,success:!1,error:n.code||n.error||n.message||n})})},parseInt(50*Math.random()+50,10))})),!this.active||Boolean(t)===Boolean(e)&&t.active===e.active||this.watchActive(!0)},emitInput:function(){this.$emit("input",this.files)},upload:function(t){var e=this.get(t);if(!e)return Promise.reject("not_exists");if(!e.fileObject)return Promise.reject("file_object");if(e.error)return Promise.reject(e.error);if(e.success)return Promise.resolve(e);var n=this.extensions;if(n&&(n.length||void 0===n.length)&&("object"===(void 0===n?"undefined":b(n))&&n instanceof RegExp||("string"==typeof n&&(n=n.split(",").map(function(t){return t.trim()}).filter(function(t){return t})),n=new RegExp("\\.("+n.join("|").replace(/\./g,"\\.")+")$","i")),-1===e.name.search(n)))return Promise.reject("extension");if(this.size>0&&e.size>=0&&e.size>this.size)return Promise.reject("size");if(this.customAction)return this.customAction(e,this);if(this.features.html5){if(this.shouldUseChunkUpload(e))return this.uploadChunk(e);if(e.putAction)return this.uploadPut(e);if(e.postAction)return this.uploadHtml5(e)}return e.postAction?this.uploadHtml4(e):Promise.reject("No action configured")},shouldUseChunkUpload:function(t){return this.chunkEnabled&&!!this.chunkOptions.handler&&t.size>this.chunkOptions.minSize},uploadChunk:function(t){var e=this.chunkOptions.handler;return t.chunk=new e(t,this.chunkOptions),t.chunk.upload()},uploadPut:function(t){var e=[],n=void 0;for(var o in t.data)null!==(n=t.data[o])&&void 0!==n&&e.push(encodeURIComponent(o)+"="+encodeURIComponent(n));var i=e.length?(-1===t.putAction.indexOf("?")?"?":"&")+e.join("&"):"",a=new XMLHttpRequest;return a.open("PUT",t.putAction+i),this.uploadXhr(a,t,t.file)},uploadHtml5:function(t){var e=new window.FormData,n=void 0;for(var o in t.data)n=t.data[o],n&&"object"===(void 0===n?"undefined":b(n))&&"function"!=typeof n.toString?n instanceof File?e.append(o,n,n.name):e.append(o,JSON.stringify(n)):null!==n&&void 0!==n&&e.append(o,n);e.append(this.name,t.file,t.file.filename||t.name);var i=new XMLHttpRequest;return i.open("POST",t.postAction),this.uploadXhr(i,t,e)},uploadXhr:function(t,e,n){var o=this,i=e,a=0,r=0;t.upload.onprogress=function(t){if(i=o.get(i),t.lengthComputable&&i&&i.fileObject&&i.active){var e=Math.round(Date.now()/1e3);e!==a&&(a=e,i=o.update(i,{progress:(t.loaded/t.total*100).toFixed(2),speed:t.loaded-r}),r=t.loaded)}};var s=setInterval(function(){if(!(i=o.get(i))||!i.fileObject||i.success||i.error||!i.active){s&&(clearInterval(s),s=!1);try{t.abort(),t.timeout=1}catch(t){}}},100);return new Promise(function(e,a){var r=void 0,l=function(n){if(!r){if(r=!0,s&&(clearInterval(s),s=!1),!(i=o.get(i)))return a("not_exists");if(!i.fileObject)return a("file_object");if(i.error)return a(i.error);if(!i.active)return a("abort");if(i.success)return e(i);var l={};switch(n.type){case"timeout":case"abort":l.error=n.type;break;case"error":t.status?t.status>=500?l.error="server":t.status>=400&&(l.error="denied"):l.error="network";break;default:t.status>=500?l.error="server":t.status>=400?l.error="denied":l.progress="100.00"}if(t.responseText){var p=t.getResponseHeader("Content-Type");p&&-1!==p.indexOf("/json")?l.response=JSON.parse(t.responseText):l.response=t.responseText}return i=o.update(i,l),i.error?a(i.error):e(i)}};t.onload=l,t.onerror=l,t.onabort=l,t.ontimeout=l,i.timeout&&(t.timeout=i.timeout);for(var p in i.headers)t.setRequestHeader(p,i.headers[p]);i=o.update(i,{xhr:t}),t.send(n)})},uploadHtml4:function(t){var e=this,n=t,o=function(t){27===t.keyCode&&t.preventDefault()},i=document.createElement("iframe");i.id="upload-iframe-"+n.id,i.name="upload-iframe-"+n.id,i.src="about:blank",i.setAttribute("style","width:1px;height:1px;top:-999em;position:absolute; margin-top:-999em;");var a=document.createElement("form");a.action=n.postAction,a.name="upload-form-"+n.id,a.setAttribute("method","POST"),a.setAttribute("target","upload-iframe-"+n.id),a.setAttribute("enctype","multipart/form-data");var r=void 0,s=void 0;for(var l in n.data)r=n.data[l],r&&"object"===(void 0===r?"undefined":b(r))&&"function"!=typeof r.toString&&(r=JSON.stringify(r)),null!==r&&void 0!==r&&(s=document.createElement("input"),s.type="hidden",s.name=l,s.value=r,a.appendChild(s));a.appendChild(n.el),document.body.appendChild(i).appendChild(a);var p=function(){var t=void 0;try{i.contentWindow&&(t=i.contentWindow.document)}catch(t){}if(!t)try{t=i.contentDocument?i.contentDocument:i.document}catch(e){t=i.document}return t&&t.body?t.body.innerHTML:null};return new Promise(function(t,r){setTimeout(function(){if(!(n=e.update(n,{iframe:i})))return r("not_exists");var s=setInterval(function(){(n=e.get(n))&&n.fileObject&&!n.success&&!n.error&&n.active||(s&&(clearInterval(s),s=!1),i.onabort({type:n?"abort":"not_exists"}))},100),l=void 0,c=function(i){if(!l){if(l=!0,s&&(clearInterval(s),s=!1),document.body.removeEventListener("keydown",o),!(n=e.get(n)))return r("not_exists");if(!n.fileObject)return r("file_object");if(n.error)return r(n.error);if(!n.active)return r("abort");if(n.success)return t(n);var a=p(),c={};switch(i.type){case"abort":c.error="abort";break;case"error":n.error?c.error=n.error:c.error=null===a?"network":"denied";break;default:n.error?c.error=n.error:null===c?c.error="network":c.progress="100.00"}if(null!==a){if(a&&"{"===a.substr(0,1)&&"}"===a.substr(a.length-1,1))try{a=JSON.parse(a)}catch(t){}c.response=a}return n=e.update(n,c),n.error?r(n.error):t(n)}};i.onload=c,i.onerror=c,i.onabort=c,document.body.addEventListener("keydown",o),a.submit()},50)}).then(function(t){return i.parentNode&&i.parentNode.removeChild(i),t}).catch(function(t){return i.parentNode&&i.parentNode.removeChild(i),t})},watchActive:function(t){for(var e=void 0,n=0;e=this.files[n];)if(n++,e.fileObject)if(t&&!this.destroy){if(this.uploading>=this.thread||this.uploading&&!this.features.html5)break;e.active||e.error||e.success||this.update(e,{active:!0})}else e.active&&this.update(e,{active:!1});else;0===this.uploading&&(this.active=!1)},watchDrop:function(t){var e=t;if(this.features.drop){if(this.dropElement)try{document.removeEventListener("dragenter",this.onDragenter,!1),document.removeEventListener("dragleave",this.onDragleave,!1),document.removeEventListener("drop",this.onDocumentDrop,!1),this.dropElement.removeEventListener("dragover",this.onDragover,!1),this.dropElement.removeEventListener("drop",this.onDrop,!1)}catch(t){}e?"string"==typeof e?e=document.querySelector(e)||this.$root.$el.querySelector(e):!0===e&&(e=this.$parent.$el):e=!1,this.dropElement=e,this.dropElement&&(document.addEventListener("dragenter",this.onDragenter,!1),document.addEventListener("dragleave",this.onDragleave,!1),document.addEventListener("drop",this.onDocumentDrop,!1),this.dropElement.addEventListener("dragover",this.onDragover,!1),this.dropElement.addEventListener("drop",this.onDrop,!1))}},onDragenter:function(t){if(t.preventDefault(),!this.dropActive&&t.dataTransfer){var e=t.dataTransfer;e.files&&e.files.length?this.dropActive=!0:e.types?e.types.indexOf&&-1!==e.types.indexOf("Files")?this.dropActive=!0:e.types.contains&&e.types.contains("Files")&&(this.dropActive=!0):this.dropActive=!0}},onDragleave:function(t){t.preventDefault(),this.dropActive&&("HTML"===t.target.nodeName||t.target===t.explicitOriginalTarget||!t.fromElement&&(t.clientX<=0||t.clientY<=0||t.clientX>=window.innerWidth||t.clientY>=window.innerHeight))&&(this.dropActive=!1)},onDragover:function(t){t.preventDefault()},onDocumentDrop:function(){this.dropActive=!1},onDrop:function(t){t.preventDefault(),this.addDataTransfer(t.dataTransfer)}}},x=g,y=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("span",{class:t.className},[t._t("default"),t._v(" "),n("label",{attrs:{for:t.inputId||t.name}}),t._v(" "),n("input-file")],2)},w=[],k=function(t){t&&t("data-v-595958af_0",{source:"\n.file-uploads{overflow:hidden;position:relative;text-align:center;display:inline-block\n}\n.file-uploads.file-uploads-html4 input,.file-uploads.file-uploads-html5 label{background:#fff;opacity:0;font-size:20em;z-index:1;top:0;left:0;right:0;bottom:0;position:absolute;width:100%;height:100%\n}\n.file-uploads.file-uploads-html4 label,.file-uploads.file-uploads-html5 input{background:rgba(255,255,255,0);overflow:hidden;position:fixed;width:1px;height:1px;z-index:-1;opacity:0\n}",map:void 0,media:void 0})},_=function(t,e,n,o,i,a,r,s){var l=("function"==typeof n?n.options:n)||{};l.render||(l.render=t.render,l.staticRenderFns=t.staticRenderFns,l._compiled=!0,i&&(l.functional=!0)),l._scopeId=o;var p=void 0;if(e&&(p=function(t){e.call(this,r(t))}),void 0!==p)if(l.functional){var c=l.render;l.render=function(t,e){return p.call(e),c(t,e)}}else{var d=l.beforeCreate;l.beforeCreate=d?[].concat(d,p):[p]}return l}({render:y,staticRenderFns:w},k,x,void 0,!1,void 0,i,void 0),z=Object.freeze({default:_});return z&&_||z})},function(t,e){t.exports='\n\t<div _v-6d81614d="">\n\t\t<h4 _v-6d81614d="">{{strings.add_desc}}</h4>\n\t\t<div class="field columns" _v-6d81614d="">\n\t\t\t<div class="column" v-for="file in files" _v-6d81614d="">\n <span class="tag" _v-6d81614d="">\n <i _v-6d81614d="">{{file.name}}</i>\n <i v-if="!file.active &amp;&amp; !file.success &amp;&amp; file.error === \'\'" class="dashicons dashicons-yes icon has-text-grey-light" _v-6d81614d=""></i>\n <i v-else-if="file.active" class="dashicons dashicons-marker icon spin has-text-warning" _v-6d81614d=""></i>\n <i v-else-if="!file.active &amp;&amp; file.success" class="dashicons dashicons-yes icon has-text-success" _v-6d81614d=""></i>\n <i v-else="" class="dashicons dashicons-no-alt icon has-text-danger" _v-6d81614d=""></i>\n </span>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class="column " _v-6d81614d="">\n\t\t\t<file-upload class="button is-secondary is-rounded" :post-action=" global.root + \'/add_watermark\'" :headers="{\'X-WP-Nonce\': global.nonce}" extensions="gif,jpg,jpeg,png,webp" accept="image/png,image/gif,image/jpeg,image/webp" :size="1024 * 1024 * 10" v-model="files" @input-filter="inputFilter" @input-file="inputFile" :disabled="loading" ref="upload" _v-6d81614d="">\n\t\t\t\t<i class="dashicons dashicons-plus icon" _v-6d81614d=""></i>\n\t\t\t\t{{strings.upload}}\n\t\t\t</file-upload>\n\t\t\t<br _v-6d81614d=""><br _v-6d81614d=""><span class="tag is-danger" v-if="is_error" _v-6d81614d="">{{error_message}}</span>\n\t\t</div>\n\t\t<hr _v-6d81614d="">\n\t\t<div class="box" _v-6d81614d="">\n\t\t\t<h3 _v-6d81614d=""><span class="dashicons dashicons-menu" _v-6d81614d=""></span> {{strings.list_header}} </h3>\n\t\t\t<small _v-6d81614d=""><i _v-6d81614d="">{{strings.max_allowed}}</i></small>\n\t\t\t\n\t\t\t<div class="optimized-images" _v-6d81614d="">\n\t\t\t\t<div v-if="!noImages" _v-6d81614d="">\n\t\t\t\t\t<h3 class="has-text-centered" _v-6d81614d="">{{strings.last}} {{strings.optimized_images}}</h3>\n\t\t\t\t\t<table class="table is-striped is-hoverable is-fullwidth" _v-6d81614d="">\n\t\t\t\t\t\t<thead _v-6d81614d="">\n\t\t\t\t\t\t<tr _v-6d81614d="">\n\t\t\t\t\t\t\t<th class="optml-image-heading" _v-6d81614d="">{{strings.id}}</th>\n\t\t\t\t\t\t\t<th class="optml-image-heading" _v-6d81614d="">{{strings.image}}</th>\n\t\t\t\t\t\t\t<th class="optml-image-heading" _v-6d81614d="">{{strings.action}}</th>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</thead>\n\t\t\t\t\t\t<tbody _v-6d81614d="">\n\t\t\t\t\t\t<tr v-for="(item, index) in watermarkData" _v-6d81614d="">\n\t\t\t\t\t\t\t<td _v-6d81614d=""><code _v-6d81614d="">#{{item.ID}}</code></td>\n\t\t\t\t\t\t\t<td _v-6d81614d=""><img :src="item.guid" class="optml-image-watermark" width="50" _v-6d81614d=""></td>\n\t\t\t\t\t\t\t<td width="50" _v-6d81614d="">\n\t\t\t\t\t\t\t\t<a @click="removeWatermark(item.ID)" class="button is-small is-danger is-rounded" :class="{\'is-loading\':loading}" _v-6d81614d="">\n\t\t\t\t\t\t\t\t\t<span class="dashicons dashicons-no-alt icon" _v-6d81614d=""></span>\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</tbody>\n\t\t\t\t\t</table>\n\t\t\t\t\t\n\t\t\t\t\t<span class="tag is-success" v-if="loading" _v-6d81614d="">\n\t\t\t\t\t{{strings.loading_remove_watermark}}\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<table class="table is-striped is-hoverable is-fullwidth" v-if="noImages" _v-6d81614d="">\n\t\t\t\t<thead _v-6d81614d="">\n\t\t\t\t<tr _v-6d81614d="">\n\t\t\t\t\t<th class="optml-image-heading has-text-centered" v-html="strings.no_images_found" _v-6d81614d=""></th>\n\t\t\t\t</tr>\n\t\t\t\t</thead>\n\t\t\t</table>\n\t\t\t<hr _v-6d81614d="">\n\t\t\t<h3 _v-6d81614d=""><span class="dashicons dashicons-grid-view" _v-6d81614d=""></span> {{strings.settings_header}} </h3>\n\t\t\t<br _v-6d81614d="">\n\t\t\t<div class="field is-fullwidth columns" _v-6d81614d="">\n\t\t\t\t<label class="label is-half column has-text-grey-dark no-padding-right " _v-6d81614d="">\n\t\t\t\t\t{{strings.wm_title}}\n\t\t\t\t\t<p class="is-italic has-text-weight-normal" _v-6d81614d="">\n\t\t\t\t\t\t{{strings.wm_desc}}\n\t\t\t\t\t</p>\n\t\t\t\t</label>\n\t\t\t\t\n\t\t\t\t<div class="column is-paddingless" _v-6d81614d="">\n\t\t\t\t\t<div class="columns" _v-6d81614d="">\n\t\t\t\t\t\t<div class="field column is-narrow" _v-6d81614d="">\n\t\t\t\t\t\t\t<div class="select" _v-6d81614d="">\n\t\t\t\t\t\t\t\t<select title="Watermark Selection" v-model="selectedWatermark" _v-6d81614d="">\n\t\t\t\t\t\t\t\t\t<option value="-1" _v-6d81614d="">No watermark</option>\n\t\t\t\t\t\t\t\t\t<option v-for="(item, index) in watermarkData" :value="item.ID" _v-6d81614d="">#({{item.ID}})\n\t\t\t\t\t\t\t\t\t</option>\n\t\t\t\t\t\t\t\t</select>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t\n\t\t\t<div class="field is-fullwidth columns" _v-6d81614d="">\n\t\t\t\t<label class="label is-half column has-text-grey-dark no-padding-right " _v-6d81614d="">\n\t\t\t\t\t{{strings.opacity_title}}\n\t\t\t\t\t<p class="is-italic has-text-weight-normal" _v-6d81614d="">\n\t\t\t\t\t\t{{strings.opacity_desc}}\n\t\t\t\t\t</p>\n\t\t\t\t</label>\n\t\t\t\t\n\t\t\t\t<div class="column is-paddingless" _v-6d81614d="">\n\t\t\t\t\t<div class="columns" _v-6d81614d="">\n\t\t\t\t\t\t<div class="field column is-narrow has-addons" _v-6d81614d="">\n\t\t\t\t\t\t\t<p class="control" _v-6d81614d="">\n\t\t\t\t\t\t\t\t<a class="button is-small is-static" _v-6d81614d="">\n\t\t\t\t\t\t\t\t\t{{strings.opacity_field}}\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t<p class="control " _v-6d81614d="">\n\t\t\t\t\t\t\t\t<input v-model="watermarkOpacity" class="input is-small" type="number" min="0" max="100" _v-6d81614d="">\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t\n\t\t\t<div class="field columns" _v-6d81614d="">\n\t\t\t\t<label class="label column has-text-grey-dark" _v-6d81614d="">\n\t\t\t\t\t{{strings.position_title}}\n\t\t\t\t\t<p class="is-italic has-text-weight-normal" _v-6d81614d="">\n\t\t\t\t\t\t{{strings.position_desc}}\n\t\t\t\t\t</p>\n\t\t\t\t</label>\n\t\t\t\t<div class="column buttons " _v-6d81614d="">\n\t\t\t\t\t<div class="field columns is-gapless is-marginless " _v-6d81614d="">\n\t\t\t\t\t\t<div class="is-fullwidth optml-layout-grid" _v-6d81614d="">\n\t\t\t\t\t\t\t<a @click="changePosition(\'nowe\')" :class="{ \'is-info\':isActivePosition (\'nowe\'), \' is-selected\':watermarkSettings.position === \'nowe\' }" class="grid-button " :title="strings.pos_nowe_title" _v-6d81614d="">\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t<a @click="changePosition(\'no\')" :class="{ \'is-info\':isActivePosition (\'no\'), \' is-selected\':watermarkSettings.position === \'no\' }" class="grid-button " :title="strings.pos_no_title" _v-6d81614d="">\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t<a @click="changePosition(\'noea\')" :class="{ \'is-info\':isActivePosition (\'noea\'), \' is-selected\':watermarkSettings.position === \'noea\' }" class="grid-button" :title="strings.pos_noea_title" _v-6d81614d="">\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t<a @click="changePosition(\'we\')" :class="{ \'is-info\':isActivePosition (\'we\'), \' is-selected\':watermarkSettings.position === \'we\' }" class="grid-button" :title="strings.pos_we_title" _v-6d81614d="">\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t<a @click="changePosition(\'ce\')" :class="{ \'is-info\':isActivePosition (\'ce\'), \' is-selected\':watermarkSettings.position === \'ce\' }" class="grid-button" :title="strings.pos_ce_title" _v-6d81614d="">\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t<a @click="changePosition(\'ea\')" :class="{ \'is-info\':isActivePosition (\'ea\'), \' is-selected\':watermarkSettings.position === \'ea\' }" class="grid-button" :title="strings.pos_ea_title" _v-6d81614d="">\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t<a @click="changePosition(\'sowe\')" :class="{ \'is-info\':isActivePosition (\'sowe\'), \' is-selected\':watermarkSettings.position === \'sowe\' }" class="grid-button" :title="strings.pos_sowe_title" _v-6d81614d="">\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t<a @click="changePosition(\'so\')" :class="{ \'is-info\':isActivePosition (\'so\'), \' is-selected\':watermarkSettings.position === \'so\' }" class="grid-button" :title="strings.pos_so_title" _v-6d81614d="">\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t<a @click="changePosition(\'soea\')" :class="{ \'is-info\':isActivePosition (\'soea\'), \' is-selected\':watermarkSettings.position === \'soea\' }" class="grid-button" :title="strings.pos_soea_title" _v-6d81614d="">\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<br _v-6d81614d="">\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t\n\t\t\t<div class="field is-fullwidth columns " _v-6d81614d="">\n\t\t\t\t<label class="label is-half column has-text-grey-dark no-padding-right " _v-6d81614d="">\n\t\t\t\t\t{{strings.offset_title}}\n\t\t\t\t\t<p class="is-italic has-text-weight-normal" _v-6d81614d="">\n\t\t\t\t\t\t{{strings.offset_desc}}\n\t\t\t\t\t</p>\n\t\t\t\t</label>\n\t\t\t\t\n\t\t\t\t<div class="column is-paddingless" _v-6d81614d="">\n\t\t\t\t\t<div class="columns" _v-6d81614d="">\n\t\t\t\t\t\t<div class="field column is-narrow has-addons" _v-6d81614d="">\n\t\t\t\t\t\t\t<p class="control" _v-6d81614d="">\n\t\t\t\t\t\t\t\t<a class="button is-small is-static" _v-6d81614d="">\n\t\t\t\t\t\t\t\t\t{{strings.offset_x_field}}\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t<p class="control " _v-6d81614d="">\n\t\t\t\t\t\t\t\t<input v-model="watermarkX" class="input is-tiny is-small" type="number" _v-6d81614d="">\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="field column is-narrow has-addons" _v-6d81614d="">\n\t\t\t\t\t\t\t<p class="control" _v-6d81614d="">\n\t\t\t\t\t\t\t\t<a class="button is-small is-static" _v-6d81614d="">\n\t\t\t\t\t\t\t\t\t{{strings.offset_y_field}}\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t<p class="control " _v-6d81614d="">\n\t\t\t\t\t\t\t\t<input v-model="watermarkY" class="input is-small is-tiny" type="number" _v-6d81614d="">\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t\n\t\t\t<div class="field is-fullwidth columns" _v-6d81614d="">\n\t\t\t\t<label class="label is-half column has-text-grey-dark no-padding-right " _v-6d81614d="">\n\t\t\t\t\t{{strings.scale_title}}\n\t\t\t\t\t<p class="is-italic has-text-weight-normal" _v-6d81614d="">\n\t\t\t\t\t\t{{strings.scale_desc}}\n\t\t\t\t\t</p>\n\t\t\t\t</label>\n\t\t\t\t\n\t\t\t\t<div class="column is-paddingless" _v-6d81614d="">\n\t\t\t\t\t<div class="columns" _v-6d81614d="">\n\t\t\t\t\t\t<div class="field column is-narrow has-addons" _v-6d81614d="">\n\t\t\t\t\t\t\t<p class="control" _v-6d81614d="">\n\t\t\t\t\t\t\t\t<a class="button is-small is-static" _v-6d81614d="">\n\t\t\t\t\t\t\t\t\t{{strings.scale_field}}\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t<p class="control " _v-6d81614d="">\n\t\t\t\t\t\t\t\t<input v-model="watermarkScale" class="input is-small" type="number" min="0" max="100" _v-6d81614d="">\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t\n\t\t\t<p class="control column has-text-centered-desktop has-text-left-touch " _v-6d81614d="">\n\t\t\t\t<a @click="saveChanges()" class="button is-small is-success " :class="{\'is-loading\':loading}" _v-6d81614d="">\n\t\t\t\t\t<span class="dashicons dashicons-yes icon" _v-6d81614d=""></span>\n\t\t\t\t\t<span _v-6d81614d="">\t{{strings.save_changes}}</span>\n\t\t\t\t</a>\n\t\t\t</p>\n\t\t</div>\n\t</div>\n'},function(t,e,n){var o,i;n(75),o=n(77),i=n(78),t.exports=o||{},t.exports.__esModule&&(t.exports=t.exports.default),i&&(("function"==typeof t.exports?t.exports.options:t.exports).template=i)},function(t,e,n){var o=n(76);"string"==typeof o&&(o=[[t.i,o,""]]);n(1)(o,{});o.locals&&(t.exports=o.locals)},function(t,e,n){e=t.exports=n(0)(),e.push([t.i,"\n\n",""])},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={name:"resize",data:function(){return{strings:optimoleDashboardApp.strings.options_strings,all_strings:optimoleDashboardApp.strings,showSave:!1,new_data:{}}},mounted:function(){},methods:{saveChanges:function(){this.$store.dispatch("saveSettings",{settings:this.new_data})}},computed:{site_settings:function(){return this.$store.state.site_settings},widthStatus:{set:function(t){this.showSave=!0,this.new_data.max_width=t},get:function(){return this.site_settings.max_width}},heightStatus:{set:function(t){this.showSave=!0,this.new_data.max_height=t},get:function(){return this.site_settings.max_height}},resizeSmart:{set:function(t){this.showSave=!0,this.new_data.resize_smart=t?"enabled":"disabled"},get:function(){return!("disabled"===this.site_settings.resize_smart)}},retinaReady:{set:function(t){this.showSave=!0,this.new_data.retina_images=t?"enabled":"disabled"},get:function(){return!("disabled"===this.site_settings.retina_images)}}}}},function(t,e){t.exports='\n <div :class="{ \'saving--option\' : this.$store.state.loading }" _v-018981f2="">\n <div class="field columns" _v-018981f2="">\n <label class="label column has-text-grey-dark" _v-018981f2="">\n {{strings.enable_resize_smart_title}}\n <p class="is-italic has-text-weight-normal" _v-018981f2="">\n {{strings.enable_resize_smart_desc}}\n </p>\n </label>\n <div class="column is-3" _v-018981f2="">\n <toggle-button :class="\'has-text-dark\'" v-model="resizeSmart" :disabled="this.$store.state.loading" :labels="{checked: strings.enabled, unchecked: strings.disabled}" :width="80" :height="25" color="#008ec2" _v-018981f2=""></toggle-button>\n </div>\n\n </div>\n <div class="field columns" _v-018981f2="">\n <label class="label column has-text-grey-dark" _v-018981f2="">\n {{strings.enable_retina_title}}\n <p class="is-italic has-text-weight-normal" _v-018981f2="">\n {{strings.enable_retina_desc}}\n </p>\n </label>\n <div class="column is-3" _v-018981f2="">\n <toggle-button :class="\'has-text-dark\'" v-model="retinaReady" :disabled="this.$store.state.loading" :labels="{checked: strings.enabled, unchecked: strings.disabled}" :width="80" :height="25" color="#008ec2" _v-018981f2=""></toggle-button>\n </div>\n\n </div>\n <div class="field columns " _v-018981f2="">\n <label class="label column has-text-grey-dark no-padding-right " _v-018981f2="">\n {{strings.size_title}}\n <p class="is-italic has-text-weight-normal" _v-018981f2="">\n {{strings.size_desc}}\n </p>\n </label>\n\n <div class="column is-6 " _v-018981f2="">\n <div class="columns" _v-018981f2="">\n <div class="field column is-narrow has-addons" _v-018981f2="">\n <p class="control" _v-018981f2="">\n <a class="button is-small is-static" _v-018981f2="">\n {{strings.width_field}}\n </a>\n </p>\n <p class="control " _v-018981f2="">\n <input v-model="widthStatus" class="input is-small" type="number" min="100" max="10000" _v-018981f2="">\n </p>\n </div>\n <div class="field column is-small has-addons" _v-018981f2="">\n <p class="control" _v-018981f2="">\n <a class="button is-small is-static" _v-018981f2="">\n {{strings.height_field}}\n </a>\n </p>\n <p class="control " _v-018981f2="">\n <input v-model="heightStatus" class="input is-small" type="number" min="100" max="10000" _v-018981f2="">\n </p>\n </div>\n </div>\n </div>\n </div>\n <div class="field is-fullwidth columns " _v-018981f2="">\n <div class="column is-left" _v-018981f2="">\n <button @click="saveChanges()" class="button is-success is-small " :class="this.$store.state.loading ? \'is-loading\' : \'\' " :disabled="!showSave" _v-018981f2="">\n {{strings.save_changes}}\n </button>\n </div>\n </div>\n\n </div>\n'},function(t,e,n){var o,i;n(80),o=n(82),i=n(88),t.exports=o||{},t.exports.__esModule&&(t.exports=t.exports.default),i&&(("function"==typeof t.exports?t.exports.options:t.exports).template=i)},function(t,e,n){var o=n(81);"string"==typeof o&&(o=[[t.i,o,""]]);n(1)(o,{});o.locals&&(t.exports=o.locals)},function(t,e,n){e=t.exports=n(0)(),e.push([t.i,"\n\n",""])},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(83),i=function(t){return t&&t.__esModule?t:{default:t}}(o);e.default={name:"exclusions",components:{FilterControl:i.default},data:function(){return{strings:optimoleDashboardApp.strings.options_strings,all_strings:optimoleDashboardApp.strings,new_data:{}}},mounted:function(){},methods:{},computed:{site_settings:function(){return this.$store.state.site_settings}}}},function(t,e,n){var o,i;n(84),o=n(86),i=n(87),t.exports=o||{},t.exports.__esModule&&(t.exports=t.exports.default),i&&(("function"==typeof t.exports?t.exports.options:t.exports).template=i)},function(t,e,n){var o=n(85);"string"==typeof o&&(o=[[t.i,o,""]]);n(1)(o,{});o.locals&&(t.exports=o.locals)},function(t,e,n){e=t.exports=n(0)(),e.push([t.i,"\n\n",""])},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(2);!function(t){t&&t.__esModule}(o);e.default={name:"filter-control",props:["type"],data:function(){return{strings:optimoleDashboardApp.strings.options_strings,all_strings:optimoleDashboardApp.strings,showSave:!1,selected_filter:"filename",selected_value:"",filter_operator:optimoleDashboardApp.strings.options_strings.filter_operator_contains,FILTER_TYPES:{EXT:"extension",URL:"page_url",FILENAME:"filename",CLASS:"class"}}},mounted:function(){},methods:{saveRule:function(){var t={};t[this.type]={},t[this.type][this.selected_filter]={},t[this.type][this.selected_filter][this.selected_value]=!0,this.selected_value.length<3||this.$store.dispatch("saveSettings",{settings:{filters:t}})},removeRule:function(t,e){var n={};n[this.type]={},n[this.type][t]={},n[this.type][t][e]="false",this.$store.dispatch("saveSettings",{settings:{filters:n}})},changeFilterType:function(t){this.selected_value="",t.target.value===this.FILTER_TYPES.EXT&&(this.selected_value="svg",this.filter_operator=this.strings.filter_operator_is),t.target.value===this.FILTER_TYPES.URL&&(this.filter_operator=this.strings.filter_operator_contains),t.target.value===this.FILTER_TYPES.FILENAME&&(this.filter_operator=this.strings.filter_operator_contains),t.target.value===this.FILTER_TYPES.CLASS&&(this.filter_operator=this.strings.filter_operator_contains),this.selected_filter=t.target.value},getFilterOperator:function(){return this.filter_operator}},computed:{filters:function(){return this.$store.state.site_settings.filters[this.type]}}}},function(t,e){t.exports='\n <div :id="\'filter-type-\'+type" _v-2be63146="">\n <div class="field " _v-2be63146="">\n <label class="label column has-text-grey-dark" _v-2be63146="">\n <span v-if="type===\'lazyload\'" _v-2be63146="">{{strings.exclude_title_lazyload}}</span>\n <span v-if="type===\'optimize\'" _v-2be63146="">{{strings.exclude_title_optimize}}</span>\n </label>\n </div>\n <div class="field columns" _v-2be63146="">\n <div class="column is-paddingless is-full " _v-2be63146="">\n <div class="list" _v-2be63146="">\n <div class="list-item exclusion-filter" v-for="(item, index) in filters[this.FILTER_TYPES.EXT]" _v-2be63146="">\n <div class="control" _v-2be63146="">\n <div class="tags is-centered has-addons" _v-2be63146="">\n <a class="tag is-marginless is-link has-text-left" _v-2be63146=""><i _v-2be63146="">{{strings.exclude_ext_desc}}</i>\n <strong _v-2be63146="">{{index}}</strong></a>\n <a class="tag is-marginless is-delete" @click="removeRule(FILTER_TYPES.EXT,index)" _v-2be63146=""></a>\n </div>\n </div>\n </div>\n <div class="list-item exclusion-filter" v-for="(item, index) in filters[this.FILTER_TYPES.URL]" _v-2be63146="">\n <div class="control" _v-2be63146="">\n <div class="tags is-centered has-addons" _v-2be63146="">\n <a class="tag is-marginless is-link has-text-left" _v-2be63146=""><i _v-2be63146="">{{strings.exclude_url_desc}}</i>\n <strong _v-2be63146="">{{index}}</strong></a>\n <a class="tag is-marginless is-delete" @click="removeRule(FILTER_TYPES.URL,index)" _v-2be63146=""></a>\n </div>\n </div>\n </div>\n <div class="list-item exclusion-filter" v-for="(item, index) in filters[this.FILTER_TYPES.FILENAME]" _v-2be63146="">\n <div class="control" _v-2be63146="">\n <div class="tags is-centered has-addons" _v-2be63146="">\n <a class="tag is-marginless is-link has-text-left" _v-2be63146=""><i _v-2be63146="">{{strings.exclude_filename_desc}}</i>\n <strong _v-2be63146="">{{index}}</strong></a>\n <a class="tag is-marginless is-delete" @click="removeRule(FILTER_TYPES.FILENAME,index)" _v-2be63146=""></a>\n </div>\n </div>\n </div>\n <div class="list-item exclusion-filter" v-for="(item, index) in filters[this.FILTER_TYPES.CLASS]" _v-2be63146="">\n <div class="control" _v-2be63146="">\n <div class="tags is-centered has-addons" _v-2be63146="">\n <a class="tag is-marginless is-link has-text-left" _v-2be63146=""><i _v-2be63146="">{{strings.exclude_class_desc}}</i>\n <strong _v-2be63146="">{{index}}</strong></a>\n <a class="tag is-marginless is-delete" @click="removeRule(FILTER_TYPES.CLASS,index)" _v-2be63146=""></a>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n <div class="field columns" _v-2be63146="">\n <div class="field has-addons column has-addons-centered" _v-2be63146="">\n <p class="control " _v-2be63146="">\n <span class="select is-small" _v-2be63146="">\n <select @change="changeFilterType($event)" _v-2be63146="">\n <option :value="FILTER_TYPES.FILENAME" _v-2be63146="">{{strings.filter_filename}}</option>\n <option :value="FILTER_TYPES.EXT" _v-2be63146="">{{strings.filter_ext}}</option>\n <option :value="FILTER_TYPES.URL" _v-2be63146="">{{strings.filter_url}}</option>\n <option v-if="type === \'lazyload\'" :value="FILTER_TYPES.CLASS" _v-2be63146="">{{strings.filter_class}}</option>\n </select>\n </span>\n </p>\n <p class="control" _v-2be63146="">\n <a class="button is-small is-static" _v-2be63146="">\n {{getFilterOperator()}}\n </a>\n </p>\n <p class="control" _v-2be63146="">\n <span v-if="this.selected_filter===this.FILTER_TYPES.EXT" class="select is-small" _v-2be63146="">\n <select v-model="selected_value" _v-2be63146="">\n <option value="svg" _v-2be63146="">.SVG</option>\n <option value="jpg" _v-2be63146="">.JPG</option>\n <option value="png" _v-2be63146="">.PNG</option>\n <option value="gif" _v-2be63146="">.GIF</option>\n </select>\n </span>\n <input v-else="" v-model="selected_value" class="input is-small" type="text" placeholder="word" _v-2be63146="">\n </p>\n <p class="control" _v-2be63146="">\n <a class="button is-primary is-small" :class="this.$store.state.loading ? \'is-loading\' : \'\' " @click="saveRule()" _v-2be63146="">\n {{strings.add_filter}}\n </a>\n </p>\n </div>\n </div>\n <p class="has-text-centered " v-if="this.selected_filter === FILTER_TYPES.URL" _v-2be63146="">\n <i _v-2be63146="">For homepage use <strong _v-2be63146="">home</strong> keyword.</i>\n </p>\n </div>\n'},function(t,e){t.exports='\n <div :class="{ \'saving--option\' : this.$store.state.loading }" _v-f5e043ba="">\n <div id="filters-list" _v-f5e043ba="">\n <div class="columns " _v-f5e043ba="">\n <filter-control :type="\'optimize\'" _v-f5e043ba=""></filter-control>\n </div>\n\t <hr _v-f5e043ba="">\n <div class="columns " v-if="this.$store.state.site_settings.lazyload === \'enabled\'" _v-f5e043ba="">\n <filter-control :type="\'lazyload\'" _v-f5e043ba=""></filter-control>\n </div>\n </div>\n\n </div>\n'},function(t,e,n){var o,i;n(90),o=n(92),i=n(93),t.exports=o||{},t.exports.__esModule&&(t.exports=t.exports.default),i&&(("function"==typeof t.exports?t.exports.options:t.exports).template=i)},function(t,e,n){var o=n(91);"string"==typeof o&&(o=[[t.i,o,""]]);n(1)(o,{});o.locals&&(t.exports=o.locals)},function(t,e,n){e=t.exports=n(0)(),e.push([t.i,"\n\n",""])},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={name:"lazyload",data:function(){return{strings:optimoleDashboardApp.strings.options_strings,all_strings:optimoleDashboardApp.strings,showSave:!1,showBgSelectors:"enabled"===this.$store.state.site_settings.bg_replacer,new_data:{}}},mounted:function(){},methods:{saveChanges:function(){this.$store.dispatch("saveSettings",{settings:this.new_data})}},computed:{site_settings:function(){return this.$store.state.site_settings},lazyloadPlaceholder:{set:function(t){this.showSave=!0,this.new_data.lazyload_placeholder=t?"enabled":"disabled"},get:function(){return!("disabled"===this.site_settings.lazyload_placeholder)}},lazyloadBgImages:{set:function(t){this.showSave=!0,this.new_data.bg_replacer=t?"enabled":"disabled",this.showBgSelectors=t},get:function(){return!("disabled"===this.site_settings.bg_replacer)}},lazyloadSelectors:{set:function(t){this.showSave=!0,this.new_data.watchers=t},get:function(){return this.site_settings.watchers}}}}},function(t,e){t.exports='\n <div :class="{ \'saving--option\' : this.$store.state.loading }" _v-2356e1d0="">\n <div class="field columns" _v-2356e1d0="">\n <label class="label column has-text-grey-dark" _v-2356e1d0="">\n {{strings.enable_lazyload_placeholder_title}}\n <p class="is-italic has-text-weight-normal" _v-2356e1d0="">\n {{strings.enable_lazyload_placeholder_desc}}\n </p>\n </label>\n <div class="column is-3" _v-2356e1d0="">\n <toggle-button :class="\'has-text-dark\'" v-model="lazyloadPlaceholder" :disabled="this.$store.state.loading" :labels="{checked: strings.enabled, unchecked: strings.disabled}" :width="80" :height="25" color="#008ec2" _v-2356e1d0=""></toggle-button>\n </div>\n </div>\n <div class="field columns" _v-2356e1d0="">\n <label class="label column has-text-grey-dark" _v-2356e1d0="">\n {{strings.enable_bg_lazyload_title}}\n <p class="is-italic has-text-weight-normal" _v-2356e1d0="">\n {{strings.enable_bg_lazyload_desc}}\n </p>\n </label>\n <div class="column is-3" _v-2356e1d0="">\n <toggle-button :class="\'has-text-dark\'" v-model="lazyloadBgImages" :disabled="this.$store.state.loading" :labels="{checked: strings.enabled, unchecked: strings.disabled}" :width="80" :height="25" color="#008ec2" _v-2356e1d0=""></toggle-button>\n </div>\n </div>\n <div class="field columns" v-if="showBgSelectors" _v-2356e1d0="">\n <div class="column" _v-2356e1d0="">\n <label class="label has-text-grey-dark" _v-2356e1d0="">\n <span _v-2356e1d0="">{{strings.watch_title_lazyload}}</span>\n <p class="is-italic has-text-weight-normal" _v-2356e1d0="">\n {{strings.watch_desc_lazyload}}\n </p>\n </label>\n <div _v-2356e1d0="">\n <textarea-autosize class="textarea is-secondary is-small" placeholder="e.g: .image, #item-id, div.with-background-image" v-model="lazyloadSelectors" :min-height="3" :max-height="350" _v-2356e1d0=""></textarea-autosize>\n </div>\n </div>\n </div>\n <div class="field is-fullwidth columns " _v-2356e1d0="">\n <div class="column is-left" _v-2356e1d0="">\n <button @click="saveChanges()" class="button is-success is-small " :class="this.$store.state.loading ? \'is-loading\' : \'\' " :disabled="!showSave" _v-2356e1d0="">\n {{strings.save_changes}}\n </button>\n </div>\n </div>\n\n </div>\n'},function(t,e){t.exports='\n <div class="columns" _v-5187a250="">\n <aside id="optml-settings-menu" class="menu column is-2-fullhd is-3-desktop is-3-tablet is-hidden-mobile" _v-5187a250="">\n <ul class="menu-list optml-settings-submenu is-marginless" _v-5187a250="">\n <li _v-5187a250=""><a @click="changeTab(\'general\')" href="#" :class="tab === \'general\' ? \'is-active\' : \'\'" :title="all_strings.general_settings_menu_item+\' \'+all_strings.settings_menu_item" _v-5187a250="">{{all_strings.general_settings_menu_item}}</a>\n </li>\n <li :class="isDisabled ? \'is-menu-disabled\' : \'\' " _v-5187a250=""><a @click="ToggleAdvanced()" href="#" title="General settings" _v-5187a250=""><span _v-5187a250="">{{all_strings.advanced_settings_menu_item}}</span>\n <span class=" dashicons advanced-link " :class="advancedOpen ? \'dashicons-arrow-down-alt2\' : \'dashicons-arrow-right-alt2\'" _v-5187a250=""></span>\n </a>\n <ul class="menu-list optml-settings-submenu is-marginless " :class=" ! advancedOpen ? \'is-hidden\' : \'\' " _v-5187a250="">\n <li _v-5187a250=""><a @click="changeTab(\'compression\')" href="#" :class="tab === \'compression\' ? \'is-active\' : \'\'" :title="all_strings.settings_compression_menu_item+\' \'+all_strings.settings_menu_item" _v-5187a250="">{{all_strings.settings_compression_menu_item}}</a>\n </li>\n <li _v-5187a250=""><a @click="changeTab(\'resize\')" href="#" :class="tab === \'resize\' ? \'is-active\' : \'\'" :title="all_strings.settings_resize_menu_item+\' \'+all_strings.settings_menu_item" _v-5187a250="">{{all_strings.settings_resize_menu_item}}</a>\n </li>\n <li v-if="this.$store.state.site_settings.lazyload===\'enabled\'" _v-5187a250=""><a @click="changeTab(\'lazyload\')" href="#" :class="tab === \'lazyload\' ? \'is-active\' : \'\'" :title="all_strings.lazyload_settings_menu_item+\' \'+all_strings.lazyload_settings_menu_item" _v-5187a250="">{{all_strings.lazyload_settings_menu_item}}</a>\n </li>\n <li _v-5187a250=""><a href="#" @click="changeTab(\'exclusions\')" :class="tab === \'exclusions\' ? \'is-active\' : \'\'" :title="all_strings.settings_exclusions_menu_item+\' \'+all_strings.settings_menu_item" _v-5187a250="">{{all_strings.settings_exclusions_menu_item}}</a>\n </li>\n\x3c!-- <li><a--\x3e\n\x3c!-- @click="changeTab(\'watermark\')" href="#"--\x3e\n\x3c!-- :class="tab === \'watermark\' ? \'is-active\' : \'\'"--\x3e\n\x3c!-- :title="all_strings.watermarks_menu_item+\' \'+all_strings.settings_menu_item">{{all_strings.watermarks_menu_item}}--\x3e\n\x3c!-- <span--\x3e\n\x3c!-- class=" optml-beta is-normal tag is-warning">Beta</span></a></li>--\x3e\n </ul>\n </li>\n </ul>\n </aside>\n <div :class="[{ \'saving--option\' : this.$store.state.loading, \'is-tab-disabled\':isDisabled},\'is-tab-\'+tab] " class=" column" _v-5187a250="">\n <div class="subtab-content" _v-5187a250="">\n <general v-if="tab === \'general\' " @update-status="updateGlobalState" _v-5187a250=""></general>\n <compression v-if="tab === \'compression\' " _v-5187a250=""></compression>\n <watermarks v-if="tab ===\'watermark\'" _v-5187a250=""></watermarks>\n <resize v-if="tab ===\'resize\'" _v-5187a250=""></resize>\n <lazyload v-if="tab ===\'lazyload\'" _v-5187a250=""></lazyload>\n <exclusions v-if="tab ===\'exclusions\'" _v-5187a250=""></exclusions>\n </div>\n </div>\n </div>\n'},function(t,e){t.exports='\n <div class="columns is-desktop">\n\n <div class="column ">\n <div class="card">\n <app-header></app-header>\n <div class="card-content">\n <div class="content">\n <connect-layout v-if="!this.$store.state.connected"></connect-layout>\n\n <transition name="slide-fade">\n <div v-if="this.$store.state.connected && ! this.$store.state.is_loaded" id="optml-loader">\n <div class="columns">\n <div class="column">\n\n <transition name="slide-fade">\n <h4 class="has-text-centered">{{this.getProgressMessage()}}</h4>\n </transition>\n </div>\n </div>\n <div class="columns">\n <div class=" column is-vertical-center ">\n <progress id="optml-progress-bar" class="progress is-medium is-info"\n :class="\'optml-progres-\'+(Math.floor(this.loading_percent/10))"\n max="100"></progress>\n </div>\n </div>\n <iframe :src="home" style="opacity:0;" ></iframe>\n </div>\n </transition>\n <transition name="fade" mode="out-in">\n <div v-if="this.$store.state.connected && this.$store.state.is_loaded">\n <div class="tabs is-left is-boxed is-medium">\n <ul class="is-marginless optml-tabs">\n <li :class="tab === \'dashboard\' ? \'is-active\' : \'\'">\n <a @click="changeTab(\'dashboard\')" class="is-size-6-mobile">\n <span class="icon is-size-6-mobile is-size-6-tablet dashicons dashicons-admin-home"></span>\n <span class="is-size-6-mobile is-size-6-touch ">{{strings.dashboard_menu_item}}</span>\n </a>\n </li>\n <li :class="tab === \'conflicts\' ? \'is-active\' : \'\'" v-if="conflictCount > 0">\n <a @click="changeTab(\'conflicts\')" class="is-size-6-mobile">\n <span class="icon is-size-6-mobile is-size-6-tablet dashicons dashicons-warning"></span>\n <span class="is-size-6-mobile is-size-6-touch">{{strings.conflicts_menu_item}}</span>&nbsp;\n <span class="tag is-rounded is-danger">{{conflictCount}}</span>\n </a>\n </li>\n <li :class="tab === \'settings\' ? \'is-active\' : \'\'">\n <a @click="changeTab(\'settings\')" class="is-size-6-mobile ">\n <span class="icon is-size-6-mobile is-size-6-tablet dashicons dashicons-admin-settings"></span>\n <span class="is-size-6-mobile is-size-6-touch">{{strings.settings_menu_item}}</span>\n </a>\n </li>\n\n </ul>\n </div>\n\n <div class="is-tab" v-if="tab === \'dashboard\' "\n :class="remove_images ? \'no-images\' : \'\' ">\n <div class="notification is-success" v-if="strings.notice_just_activated.length > 0"\n v-html="strings.notice_just_activated"></div>\n <api-key-form></api-key-form>\n <cdn-details v-if="this.$store.state.userData"></cdn-details>\n <hr/>\n <last-images :status="fetchStatus" v-if="! remove_images"></last-images>\n </div>\n <div class="is-tab" v-if=" tab === \'settings\'">\n <options></options>\n </div>\n <div class="is-tab" v-if=" tab === \'conflicts\'">\n <conflicts></conflicts>\n </div>\n </div>\n </transition>\n\n </div>\n </div>\n\n <div class="level-right">\n <p class="level-item"><a href="https://optimole.com" target="_blank">Optimole\n v{{strings.version}}</a></p>\n <p class="level-item"><a href="https://optimole.com/terms/"\n target="_blank">{{strings.terms_menu}}</a></p>\n <p class="level-item"><a href="https://optimole.com/privacy-policy/" target="_blank">{{strings.privacy_menu}}</a>\n </p>\n <p class="level-item"><a :href="\'https://speedtest.optimole.com/?url=\' + home " target="_blank">{{strings.testdrive_menu}}</a>\n </p>\n </div>\n </div>\n </div>\n <div v-if="this.$store.state.connected && this.$store.state.userData.plan === \'free\' "\n class="column is-narrow is-hidden-desktop-only is-hidden-tablet-only is-hidden-mobile">\n <div class="card optml-upgrade">\n <div class="card-header">\n <h3 class="is-size-5 card-header-title"><span class="dashicons dashicons-chart-line"></span>\n {{strings.upgrade.title}}</h3>\n </div>\n <div class="card-content">\n <ul>\n <li><span class="dashicons dashicons-yes"></span>{{strings.upgrade.reason_1}}</li>\n <li><span class="dashicons dashicons-yes"></span>{{strings.upgrade.reason_2}}</li>\n <li><span class="dashicons dashicons-yes"></span>{{strings.upgrade.reason_3}}</li>\n <li><span class="dashicons dashicons-yes"></span>{{strings.upgrade.reason_4}}</li>\n </ul>\n </div>\n <div class="card-footer ">\n <div class="card-footer-item">\n <a href="https://optimole.com/pricing" target="_blank"\n class="button is-centered is-small is-success"><span\n class="dashicons dashicons-external"></span>{{strings.upgrade.cta}}</a>\n </div>\n </div>\n </div>\n </div>\n </div>\n'},function(t,e,n){"use strict";function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),a=o(i),r=n(97),s=o(r),l=n(6),p=o(l),c=n(99),d=o(c),m=n(100),u=o(m);a.default.use(s.default),a.default.use(p.default);var f=new s.default.Store({strict:!0,state:{isConnecting:!1,loading:!1,site_settings:optimoleDashboardApp.site_settings,connected:"yes"===optimoleDashboardApp.connection_status,is_loaded:"yes"===optimoleDashboardApp.connection_status,apiKey:optimoleDashboardApp.api_key?optimoleDashboardApp.api_key:"",apiKeyValidity:!0,connectError:"",sample_rate:{},apiError:!1,userData:optimoleDashboardApp.user_data?optimoleDashboardApp.user_data:null,optimizedImages:[],watermarks:[],conflicts:[]},mutations:d.default,actions:u.default});e.default=f},function(t,e,n){"use strict";function o(t){S&&(t._devtoolHook=S,S.emit("vuex:init",t),S.on("vuex:travel-to-state",function(e){t.replaceState(e)}),t.subscribe(function(t,e){S.emit("vuex:mutation",t,e)}))}function i(t,e){Object.keys(t).forEach(function(n){return e(t[n],n)})}function a(t){return null!==t&&"object"==typeof t}function r(t){return t&&"function"==typeof t.then}function s(t,e,n){if(e.update(n),n.modules)for(var o in n.modules){if(!e.getChild(o))return;s(t.concat(o),e.getChild(o),n.modules[o])}}function l(t,e){return e.indexOf(t)<0&&e.push(t),function(){var n=e.indexOf(t);n>-1&&e.splice(n,1)}}function p(t,e){t._actions=Object.create(null),t._mutations=Object.create(null),t._wrappedGetters=Object.create(null),t._modulesNamespaceMap=Object.create(null);var n=t.state;d(t,n,[],t._modules.root,!0),c(t,n,e)}function c(t,e,n){var o=t._vm;t.getters={};var a=t._wrappedGetters,r={};i(a,function(e,n){r[n]=function(){return e(t)},Object.defineProperty(t.getters,n,{get:function(){return t._vm[n]},enumerable:!0})});var s=$.config.silent;$.config.silent=!0,t._vm=new $({data:{$$state:e},computed:r}),$.config.silent=s,t.strict&&v(t),o&&(n&&t._withCommit(function(){o._data.$$state=null}),$.nextTick(function(){return o.$destroy()}))}function d(t,e,n,o,i){var a=!n.length,r=t._modules.getNamespace(n);if(o.namespaced&&(t._modulesNamespaceMap[r]=o),!a&&!i){var s=g(e,n.slice(0,-1)),l=n[n.length-1];t._withCommit(function(){$.set(s,l,o.state)})}var p=o.context=m(t,r,n);o.forEachMutation(function(e,n){f(t,r+n,e,p)}),o.forEachAction(function(e,n){var o=e.root?n:r+n,i=e.handler||e;h(t,o,i,p)}),o.forEachGetter(function(e,n){b(t,r+n,e,p)}),o.forEachChild(function(o,a){d(t,e,n.concat(a),o,i)})}function m(t,e,n){var o=""===e,i={dispatch:o?t.dispatch:function(n,o,i){var a=x(n,o,i),r=a.payload,s=a.options,l=a.type;return s&&s.root||(l=e+l),t.dispatch(l,r)},commit:o?t.commit:function(n,o,i){var a=x(n,o,i),r=a.payload,s=a.options,l=a.type;s&&s.root||(l=e+l),t.commit(l,r,s)}};return Object.defineProperties(i,{getters:{get:o?function(){return t.getters}:function(){return u(t,e)}},state:{get:function(){return g(t.state,n)}}}),i}function u(t,e){var n={},o=e.length;return Object.keys(t.getters).forEach(function(i){if(i.slice(0,o)===e){var a=i.slice(o);Object.defineProperty(n,a,{get:function(){return t.getters[i]},enumerable:!0})}}),n}function f(t,e,n,o){(t._mutations[e]||(t._mutations[e]=[])).push(function(e){n.call(t,o.state,e)})}function h(t,e,n,o){(t._actions[e]||(t._actions[e]=[])).push(function(e,i){var a=n.call(t,{dispatch:o.dispatch,commit:o.commit,getters:o.getters,state:o.state,rootGetters:t.getters,rootState:t.state},e,i);return r(a)||(a=Promise.resolve(a)),t._devtoolHook?a.catch(function(e){throw t._devtoolHook.emit("vuex:error",e),e}):a})}function b(t,e,n,o){t._wrappedGetters[e]||(t._wrappedGetters[e]=function(t){return n(o.state,o.getters,t.state,t.getters)})}function v(t){t._vm.$watch(function(){return this._data.$$state},function(){},{deep:!0,sync:!0})}function g(t,e){return e.length?e.reduce(function(t,e){return t[e]},t):t}function x(t,e,n){return a(t)&&t.type&&(n=e,e=t,t=t.type),{type:t,payload:e,options:n}}function y(t){$&&t===$||($=t,z($))}function w(t){return Array.isArray(t)?t.map(function(t){return{key:t,val:t}}):Object.keys(t).map(function(e){return{key:e,val:t[e]}})}function k(t){return function(e,n){return"string"!=typeof e?(n=e,e=""):"/"!==e.charAt(e.length-1)&&(e+="/"),t(e,n)}}function _(t,e,n){return t._modulesNamespaceMap[n]}Object.defineProperty(e,"__esModule",{value:!0}),n.d(e,"Store",function(){return j}),n.d(e,"install",function(){return y}),n.d(e,"mapState",function(){return T}),n.d(e,"mapMutations",function(){return D}),n.d(e,"mapGetters",function(){return P}),n.d(e,"mapActions",function(){return R}),n.d(e,"createNamespacedHelpers",function(){return I});/**
22
  * vuex v2.5.0
23
  * (c) 2017 Evan You
24
  * @license MIT
inc/admin.php CHANGED
@@ -564,7 +564,7 @@ class Optml_Admin {
564
  '</a>'
565
  ),
566
  'account_needed_subtitle_2' => sprintf(
567
- __( 'Bonus, if you dont use a CDN, we got you covered, we will serve the images using CloudFront CDN.', 'optimole-wp' )
568
  ),
569
  'notice_just_activated' => ! $this->settings->is_connected() ?
570
  sprintf( __( '%1$sImage optimisation is currently running.%2$s <br/> Your visitors will now view the best image for their device automatically, all served from the Optimole Cloud Service on the fly. You might see for the very first image request being redirected to the original URL while we do the optimization in the background.<br/> You can relax, we\'ll take it from here.', 'optimole-wp' ), '<strong>', '</strong>' )
@@ -592,10 +592,10 @@ The root cause might be either a security plugin which blocks this feature or so
592
  ),
593
  'upgrade' => array(
594
  'title' => __( 'Upgrade to Pro', 'optimole-wp' ),
595
- 'reason_1' => __( 'More CDN locations( 200+ locations )', 'optimole-wp' ),
596
- 'reason_4' => __( 'Starting at $4.99 per month.', 'optimole-wp' ),
597
- 'reason_2' => __( 'Optimize more images', 'optimole-wp' ),
598
  'reason_3' => __( 'Custom domain', 'optimole-wp' ),
 
599
  'cta' => __( 'View plans', 'optimole-wp' ),
600
  ),
601
  'options_strings' => array(
564
  '</a>'
565
  ),
566
  'account_needed_subtitle_2' => sprintf(
567
+ __( 'Bonus, if you dont use a CDN, we got you covered, we will serve the images using CloudFront CD from 200 locations.', 'optimole-wp' )
568
  ),
569
  'notice_just_activated' => ! $this->settings->is_connected() ?
570
  sprintf( __( '%1$sImage optimisation is currently running.%2$s <br/> Your visitors will now view the best image for their device automatically, all served from the Optimole Cloud Service on the fly. You might see for the very first image request being redirected to the original URL while we do the optimization in the background.<br/> You can relax, we\'ll take it from here.', 'optimole-wp' ), '<strong>', '</strong>' )
592
  ),
593
  'upgrade' => array(
594
  'title' => __( 'Upgrade to Pro', 'optimole-wp' ),
595
+ 'reason_1' => __( 'Priority & Live Chat support', 'optimole-wp' ),
596
+ 'reason_2' => __( 'Extend visits limit', 'optimole-wp' ),
 
597
  'reason_3' => __( 'Custom domain', 'optimole-wp' ),
598
+ 'reason_4' => __( 'Site audit', 'optimole-wp' ),
599
  'cta' => __( 'View plans', 'optimole-wp' ),
600
  ),
601
  'options_strings' => array(
inc/config.php CHANGED
@@ -27,8 +27,7 @@ class Optml_Config {
27
  * @var string
28
  */
29
 
30
- public static $chars = '\/:,~\\\\.\-\–\d_@%A-Za-z-ÁÀȦÂÄǞǍĂĀÃÅǺǼǢĆĊĈČĎḌḐḒÉÈĖÊËĚĔĒẼE̊ẸǴĠĜǦĞG̃ĢĤḤáàȧâäǟǎăāãåǻǽǣćċĉčďḍḑḓéèėêëěĕēẽe̊ẹǵġĝǧğg̃ģĥḥÍÌİÎÏǏĬĪĨỊĴĶǨĹĻĽĿḼM̂M̄ʼNŃN̂ṄN̈ŇN̄ÑŅṊÓÒȮȰÔÖȪǑŎŌÕȬŐỌǾƠíìiîïǐĭīĩịĵķǩĺļľŀḽm̂m̄ʼnńn̂ṅn̈ňn̄ñņṋóòôȯȱöȫǒŏōõȭőọǿơP̄ŔŘŖŚŜṠŠȘṢŤȚṬṰÚÙÛÜǓŬŪŨŰŮỤẂẀŴẄÝỲŶŸȲỸŹŻŽẒǮp̄ŕřŗśŝṡšşṣťțṭṱúùûüǔŭūũűůụẃẁŵẅýỳŷÿȳỹźżžẓǯßœŒçÇ®';
31
-
32
  /**
33
  * Service api key.
34
  *
27
  * @var string
28
  */
29
 
30
+ public static $chars = '\/:,~\\\\.\-\–\d_@%A-Za-z-ÁÀȦÂÄǞǍĂĀÃÅǺǼǢĆĊĈČĎḌḐḒÉÈĖÊËĚĔĒẼE̊ẸǴĠĜǦĞG̃ĢĤḤáàȧâäǟǎăāãåǻǽǣćċĉčďḍḑḓéèėêëěĕēẽe̊ẹǵġĝǧğg̃ģĥḥÍÌİÎÏǏĬĪĨỊĴĶǨĹĻĽĿḼM̂M̄ʼNŃN̂ṄN̈ŇN̄ÑŅṊÓÒȮȰÔÖȪǑŎŌÕȬŐỌǾƠíìiîïǐĭīĩịĵķǩĺļľŀḽm̂m̄ʼnńn̂ṅn̈ňn̄ñņṋóòôȯȱöȫǒŏōõȭőọǿơP̄ŔŘŖŚŜṠŠȘṢŤȚṬṰÚÙÛÜǓŬŪŨŰŮỤẂẀŴẄÝỲŶŸȲỸŹŻŽẒǮp̄ŕřŗśŝṡšşṣťțṭṱúùûüǔŭūũűůụẃẁŵẅýỳŷÿȳỹźżžẓǯßœŒçÇ®אבגדהוזחטיךכלםמןנסעףפץצקרשת';
 
31
  /**
32
  * Service api key.
33
  *
inc/conflicts/divi.php CHANGED
@@ -52,7 +52,7 @@ class Optml_Divi extends Optml_abstract_conflict {
52
  if ( ! function_exists( 'et_get_option' ) ) {
53
  return false;
54
  }
55
- if ( 'off' === et_get_option( 'et_pb_static_css_file', 'on' ) ) {
56
  return false;
57
  }
58
 
52
  if ( ! function_exists( 'et_get_option' ) ) {
53
  return false;
54
  }
55
+ if ( 'off' === et_get_option( 'et_pb_static_css_file', 'off' ) ) {
56
  return false;
57
  }
58
 
inc/manager.php CHANGED
@@ -156,6 +156,9 @@ final class Optml_Manager {
156
  if ( array_key_exists( 'context', $_GET ) && $_GET['context'] == 'edit' ) {
157
  return false; // @codeCoverageIgnore
158
  }
 
 
 
159
  /**
160
  * Disable replacement on POST request and when user is logged in, but allows for sample image call widget in dashboard
161
  */
156
  if ( array_key_exists( 'context', $_GET ) && $_GET['context'] == 'edit' ) {
157
  return false; // @codeCoverageIgnore
158
  }
159
+ if ( array_key_exists( 'fb-edit', $_GET ) && ! empty( $_GET['fb-edit'] ) ) {
160
+ return false; // @codeCoverageIgnore
161
+ }
162
  /**
163
  * Disable replacement on POST request and when user is logged in, but allows for sample image call widget in dashboard
164
  */
inc/tag_replacer.php CHANGED
@@ -87,15 +87,6 @@ final class Optml_Tag_Replacer extends Optml_App_Replacer {
87
  )
88
  );
89
 
90
- $link_webm = apply_filters(
91
- 'optml_content_url',
92
- $image_url,
93
- array('width' => 'auto',
94
- 'height' => 'auto',
95
- 'format' => 'webm',
96
- )
97
- );
98
-
99
  $link_png = apply_filters(
100
  'optml_content_url',
101
  $image_url,
@@ -116,7 +107,7 @@ final class Optml_Tag_Replacer extends Optml_App_Replacer {
116
  [
117
  'original-src=',
118
  '<video autoplay muted loop playsinline poster="' . $link_png . '"',
119
- '><source src="' . $link_webm . '" type="video/webm"><source src="' . $link_mp4 . '" type="video/mp4"></video>',
120
  ],
121
  $video_tag
122
  );
87
  )
88
  );
89
 
 
 
 
 
 
 
 
 
 
90
  $link_png = apply_filters(
91
  'optml_content_url',
92
  $image_url,
107
  [
108
  'original-src=',
109
  '<video autoplay muted loop playsinline poster="' . $link_png . '"',
110
+ '><source src="' . $link_mp4 . '" type="video/mp4"></video>',
111
  ],
112
  $video_tag
113
  );
optimole-wp.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Plugin Name: Image optimization service by Optimole
4
  * Description: Complete handling of your website images.
5
- * Version: 2.2.8
6
  * Author: Optimole
7
  * Author URI: https://optimole.com
8
  * License: GPL-2.0+
@@ -75,7 +75,7 @@ function optml() {
75
  define( 'OPTML_URL', plugin_dir_url( __FILE__ ) );
76
  define( 'OPTML_JS_CDN', 'd5jmkjjpb7yfg.cloudfront.net' );
77
  define( 'OPTML_PATH', plugin_dir_path( __FILE__ ) );
78
- define( 'OPTML_VERSION', '2.2.8' );
79
  define( 'OPTML_NAMESPACE', 'optml' );
80
  define( 'OPTML_BASEFILE', __FILE__ );
81
  // Fallback for old PHP versions when this constant is not defined.
2
  /**
3
  * Plugin Name: Image optimization service by Optimole
4
  * Description: Complete handling of your website images.
5
+ * Version: 2.2.9
6
  * Author: Optimole
7
  * Author URI: https://optimole.com
8
  * License: GPL-2.0+
75
  define( 'OPTML_URL', plugin_dir_url( __FILE__ ) );
76
  define( 'OPTML_JS_CDN', 'd5jmkjjpb7yfg.cloudfront.net' );
77
  define( 'OPTML_PATH', plugin_dir_path( __FILE__ ) );
78
+ define( 'OPTML_VERSION', '2.2.9' );
79
  define( 'OPTML_NAMESPACE', 'optml' );
80
  define( 'OPTML_BASEFILE', __FILE__ );
81
  // Fallback for old PHP versions when this constant is not defined.
readme.txt CHANGED
@@ -38,7 +38,7 @@ Optimole's format based optimization is handled in the cloud on a case-by-case b
38
  When the image is requested, Optimole will apply the specific transformations required by the device and deliver it to your visitors. This means every image is perfectly sized for every device. The final result will be cached for a month to ensure ongoing fast delivery and more site speed.
39
 
40
  **How many images can be optimized?**
41
- With the basic plan, you will be able to optimize unmetered number of images for up to 5k monthly [visits](https://docs.optimole.com/article/1134-how-optimole-counts-the-number-of-visitors). All delivered from more than 100+ locations in Europe and North America.
42
  Better yet. The free version is fully functional and includes all of the following great features:
43
 
44
  **Format Based Optimization**
@@ -69,7 +69,7 @@ Optimole provides an option to downgrade the image quality when it detects a slo
69
  Optimole loves page builders and has unique tweaks to solve image replacements. It also has full compatibility with the new block editor in WordPress 5.0
70
 
71
  **CDN**
72
- Optimole provides free access to a AWS CloudFront CDN with edge locations in Europe and North America. Even more with the Pro version.
73
 
74
  **What About Security?**
75
  The stripped EXGIF data is not stored on our service. Optimole likes to work behind the scenes, and won't interact with your site's visitors. No data is collected but you can check the [Terms of Service](https://optimole.com/terms/)
@@ -78,7 +78,7 @@ The stripped EXGIF data is not stored on our service. Optimole likes to work beh
78
  Optimole can be installed in a few clicks and then left in the back-end to do its job. Not happy with it? Optimole has a clean uninstall and your site will be just as before Optimole was installed.
79
 
80
  **Go Pro**
81
- Premium users will be able to optimize images for more than 25k monthly active users. Images in the Premium plan are served from AWS Cloudfront with over 180 locations all over the world.
82
 
83
  == Screenshots ==
84
 
@@ -89,6 +89,14 @@ Premium users will be able to optimize images for more than 25k monthly active u
89
 
90
  == Changelog ==
91
 
 
 
 
 
 
 
 
 
92
  #### [Version 2.2.8](https://github.com/Codeinwp/optimole-wp/compare/v2.2.7...v2.2.8) (2020-01-14)
93
 
94
  * **Bug Fixes**
@@ -522,7 +530,7 @@ Once you exceed these, we will contact you and kindly ask to upgrade to the plan
522
 
523
  = What Content Delivery Network (CDN) do you use? =
524
 
525
- Our FREE plan uses our AWS CloudFront CDN with locations only in Europe and North America. For the paid plans, we have a global full coverage, with more than 180 locations around the globe.
526
 
527
  = I'm already using a CDN, can I use that instead of yours ? =
528
 
38
  When the image is requested, Optimole will apply the specific transformations required by the device and deliver it to your visitors. This means every image is perfectly sized for every device. The final result will be cached for a month to ensure ongoing fast delivery and more site speed.
39
 
40
  **How many images can be optimized?**
41
+ With the basic plan, you will be able to optimize unmetered number of images for up to 5k monthly [visits](https://docs.optimole.com/article/1134-how-optimole-counts-the-number-of-visitors). All delivered from more than 200+ locations around the globe.
42
  Better yet. The free version is fully functional and includes all of the following great features:
43
 
44
  **Format Based Optimization**
69
  Optimole loves page builders and has unique tweaks to solve image replacements. It also has full compatibility with the new block editor in WordPress 5.0
70
 
71
  **CDN**
72
+ Optimole provides free access to a AWS CloudFront CDN with edge locations in more than 200 cities around the globe.
73
 
74
  **What About Security?**
75
  The stripped EXGIF data is not stored on our service. Optimole likes to work behind the scenes, and won't interact with your site's visitors. No data is collected but you can check the [Terms of Service](https://optimole.com/terms/)
78
  Optimole can be installed in a few clicks and then left in the back-end to do its job. Not happy with it? Optimole has a clean uninstall and your site will be just as before Optimole was installed.
79
 
80
  **Go Pro**
81
+ Premium users will be able to optimize images for more than 25k monthly active users. Images in the Premium plan are served from AWS Cloudfront with over 200 locations all over the world.
82
 
83
  == Screenshots ==
84
 
89
 
90
  == Changelog ==
91
 
92
+ #### [Version 2.2.9](https://github.com/Codeinwp/optimole-wp/compare/v2.2.8...v2.2.9) (2020-02-25)
93
+
94
+ * **Bug Fixes**
95
+ * compatibility with Fusion builder, remove replacement when in edit mode ([b16683b](https://github.com/Codeinwp/optimole-wp/commit/b16683b))
96
+ * improve compatibility with Divi builder ([efdabfe](https://github.com/Codeinwp/optimole-wp/commit/efdabfe))
97
+
98
+
99
+
100
  #### [Version 2.2.8](https://github.com/Codeinwp/optimole-wp/compare/v2.2.7...v2.2.8) (2020-01-14)
101
 
102
  * **Bug Fixes**
530
 
531
  = What Content Delivery Network (CDN) do you use? =
532
 
533
+ For both FREE and Paid plans we use AWS CloudFront CDN with more than 200 locations around the globe.
534
 
535
  = I'm already using a CDN, can I use that instead of yours ? =
536
 
themeisle-hash.json CHANGED
@@ -1 +1 @@
1
- {"optimole-wp.php":"6637da5190b2dfe9dab2bbda1409d8ab"}
1
+ {"optimole-wp.php":"f3c13ae9899aa7ef65acd3a5c07720bb"}
vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
- return ComposerAutoloaderInit576da09afe7714f986eb7561c6aa158d::getLoader();
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInit5a7da438deb6e01e7ccb81ae2e142d58::getLoader();
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInit576da09afe7714f986eb7561c6aa158d
6
  {
7
  private static $loader;
8
 
@@ -19,15 +19,15 @@ class ComposerAutoloaderInit576da09afe7714f986eb7561c6aa158d
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInit576da09afe7714f986eb7561c6aa158d', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInit576da09afe7714f986eb7561c6aa158d', 'loadClassLoader'));
25
 
26
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
27
  if ($useStaticLoader) {
28
  require_once __DIR__ . '/autoload_static.php';
29
 
30
- call_user_func(\Composer\Autoload\ComposerStaticInit576da09afe7714f986eb7561c6aa158d::getInitializer($loader));
31
  } else {
32
  $map = require __DIR__ . '/autoload_namespaces.php';
33
  foreach ($map as $namespace => $path) {
@@ -48,19 +48,19 @@ class ComposerAutoloaderInit576da09afe7714f986eb7561c6aa158d
48
  $loader->register(true);
49
 
50
  if ($useStaticLoader) {
51
- $includeFiles = Composer\Autoload\ComposerStaticInit576da09afe7714f986eb7561c6aa158d::$files;
52
  } else {
53
  $includeFiles = require __DIR__ . '/autoload_files.php';
54
  }
55
  foreach ($includeFiles as $fileIdentifier => $file) {
56
- composerRequire576da09afe7714f986eb7561c6aa158d($fileIdentifier, $file);
57
  }
58
 
59
  return $loader;
60
  }
61
  }
62
 
63
- function composerRequire576da09afe7714f986eb7561c6aa158d($fileIdentifier, $file)
64
  {
65
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
66
  require $file;
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInit5a7da438deb6e01e7ccb81ae2e142d58
6
  {
7
  private static $loader;
8
 
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInit5a7da438deb6e01e7ccb81ae2e142d58', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInit5a7da438deb6e01e7ccb81ae2e142d58', 'loadClassLoader'));
25
 
26
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
27
  if ($useStaticLoader) {
28
  require_once __DIR__ . '/autoload_static.php';
29
 
30
+ call_user_func(\Composer\Autoload\ComposerStaticInit5a7da438deb6e01e7ccb81ae2e142d58::getInitializer($loader));
31
  } else {
32
  $map = require __DIR__ . '/autoload_namespaces.php';
33
  foreach ($map as $namespace => $path) {
48
  $loader->register(true);
49
 
50
  if ($useStaticLoader) {
51
+ $includeFiles = Composer\Autoload\ComposerStaticInit5a7da438deb6e01e7ccb81ae2e142d58::$files;
52
  } else {
53
  $includeFiles = require __DIR__ . '/autoload_files.php';
54
  }
55
  foreach ($includeFiles as $fileIdentifier => $file) {
56
+ composerRequire5a7da438deb6e01e7ccb81ae2e142d58($fileIdentifier, $file);
57
  }
58
 
59
  return $loader;
60
  }
61
  }
62
 
63
+ function composerRequire5a7da438deb6e01e7ccb81ae2e142d58($fileIdentifier, $file)
64
  {
65
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
66
  require $file;
vendor/composer/autoload_static.php CHANGED
@@ -4,7 +4,7 @@
4
 
5
  namespace Composer\Autoload;
6
 
7
- class ComposerStaticInit576da09afe7714f986eb7561c6aa158d
8
  {
9
  public static $files = array (
10
  '9fef4034ed73e26a337d9856ea126f7f' => __DIR__ . '/..' . '/codeinwp/themeisle-sdk/load.php',
4
 
5
  namespace Composer\Autoload;
6
 
7
+ class ComposerStaticInit5a7da438deb6e01e7ccb81ae2e142d58
8
  {
9
  public static $files = array (
10
  '9fef4034ed73e26a337d9856ea126f7f' => __DIR__ . '/..' . '/codeinwp/themeisle-sdk/load.php',