Version Description
Download this release
Release Info
Developer | optimole |
Plugin | 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 +6 -0
- README.md +12 -4
- assets/js/bundle.min.js +1 -1
- inc/admin.php +4 -4
- inc/config.php +1 -2
- inc/conflicts/divi.php +1 -1
- inc/manager.php +3 -0
- inc/tag_replacer.php +1 -10
- optimole-wp.php +2 -2
- readme.txt +12 -4
- themeisle-hash.json +1 -1
- vendor/autoload.php +1 -1
- vendor/composer/autoload_real.php +7 -7
- vendor/composer/autoload_static.php +1 -1
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
|
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
|
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
|
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 |
-
|
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 && !file.success && 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 && 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> \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 && !file.success && 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 && 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> \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
|
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' => __( '
|
596 |
-
'
|
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', '
|
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="' . $
|
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.
|
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.
|
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
|
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
|
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
|
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 |
-
|
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":"
|
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
|
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
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
@@ -19,15 +19,15 @@ class ComposerAutoloaderInit576da09afe7714f986eb7561c6aa158d
|
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
-
spl_autoload_register(array('
|
23 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
24 |
-
spl_autoload_unregister(array('
|
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\
|
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\
|
52 |
} else {
|
53 |
$includeFiles = require __DIR__ . '/autoload_files.php';
|
54 |
}
|
55 |
foreach ($includeFiles as $fileIdentifier => $file) {
|
56 |
-
|
57 |
}
|
58 |
|
59 |
return $loader;
|
60 |
}
|
61 |
}
|
62 |
|
63 |
-
function
|
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
|
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',
|